:root {
  font-family: Inter, Pretendard, "Noto Sans KR", system-ui, sans-serif;
  color: #17213b;
  background: #f3f6fb;
  --blue: #1D4166;   /* 브랜드 네이비 (2026-08-23) */
  --line: #dce3ee;
  --muted: #667085;
  --danger: #b42318;
  --text: #17213b;

  /* ── 유종 색 (2026-08-23 확정) ─────────────────────────────
     현장에서 쓰는 색 그대로다. 경유가 초록인 이유가 그것이다.
     색만으로 구분시키지 않는다 — 어디서 쓰든 이름을 같이 적는다.
     ───────────────────────────────────────────────────────── */
  /* 무연(노랑)과 고급(주황)은 서로 멀리 떼어 놓는다.
     v1.3.64 의 #E0A020(색상각 40°)/#E8792B(25°)는 15° 밖에 안 떨어져 있었고
     밝기도 거의 같아서(50/54) 달력 뱃지처럼 작은 자리에서는 구분이 안 됐다.
     사장님: "달력에 무연하고 고급 색감이 거의 비슷하네".
     v1.3.67 — 노랑은 더 노랗게(45°), 주황은 더 진하게(22°, 어둡게) 벌렸다. */
  --fuel-hi:   #C8500C;   /* 고급휘발유 — 진한 주황 (2026-09-13 사장님 지시로 빨강 #C0392B 에서 바꿈.
                             빨강은 '문제·위험' 색과 겹쳐서 고급유 탱크가 늘 위험해 보였다.
                             --state-bad(#B3402F)보다 채도가 훨씬 높아 주황으로 읽힌다.) */
  --fuel-reg:  #E5B21A;   /* 무연(휘발유) — 노랑 */
  --fuel-die:  #2F9E6B;   /* 경유 — 초록 */
  --fuel-ker:  #6B7280;   /* 등유 — 회색 */
  --fuel-urea: #6E4FC7;   /* 요소수 — 보라 (2026-08-24 채도 보정)
                             기존 #7A6FB0 은 채도가 낮아(0.099) 회색으로 읽혔다.
                             색 검증 도구로 확인해 같은 보라 계열에서 채도만 올렸다. */
  --fuel-etc:  #5B6672;   /* 그 밖 */

  /* 연한 바탕용 — 달력 뱃지·표 줄처럼 '칠하는' 자리에서 쓴다.
     2026-09-13(v1.3.64): 화면마다 제 색을 만들어 쓰다 보니 같은 경유가 어디선
     초록이고 어디선 파랑이었다. 칠하는 색은 전부 여기서만 가져간다. */
  --fuel-hi-wash:   rgba(200,80,12,.14);
  --fuel-reg-wash:  rgba(229,178,26,.18);
  --fuel-die-wash:  rgba(47,158,107,.14);
  --fuel-ker-wash:  rgba(107,114,128,.12);
  --fuel-urea-wash: rgba(110,79,199,.12);
  --fuel-etc-wash:  rgba(91,102,114,.09);

  /* 상태색은 유종색보다 어둡게 잡아 초록끼리 겹치지 않게 한다 */
  --state-ok:   #1B7A50;
  --state-warn: #B8791A;
  --state-bad:  #B3402F;
}
* {
  box-sizing: border-box;
}
/* 어떤 요소가 넘쳐도 화면 전체가 옆으로 밀리지 않게 한다.
   가로로 밀리면 왼쪽 메뉴 글자가 잘려 "깨진 화면"이 된다(2026-08-23). */
html, body { max-width: 100%; overflow-x: hidden; }
/* 격자·플렉스 칸이 안쪽 내용 때문에 늘어나는 것을 막는다 */
.card-list > *, .form-grid > *, .station-grid > *, .report-grid > *, .tank-grid > * { min-width: 0; }
[hidden] {
  display: none !important;
}
body {
  margin: 0;
  min-height: 100vh;
}
button,
input,
select,
textarea {
  font: inherit;
}
button {
  cursor: pointer;
}
.login-shell {
  min-height: 100vh;
  display: grid;
  place-items: center;
  padding: 24px;
  background: linear-gradient(150deg, #e9f1ff, #f9fbff 55%, #eef8f5);
}
.login-card,
.form-card {
  width: min(100%, 460px);
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 22px;
  padding: 24px;
  box-shadow: 0 16px 45px #183b6b16;
}
.brand-mark {
  width: 52px;
  height: 52px;
  display: grid;
  place-items: center;
  border-radius: 16px;
  background: var(--blue);
  color: #fff;
  font-weight: 900;
  font-size: 1.75rem;
}
.login-card h1 {
  margin: 18px 0 5px;
}
.login-card p,
.page-title p {
  color: var(--muted);
  margin: 0 0 20px;
}
.login-card label,
.form-card label {
  display: grid;
  gap: 7px;
  font-weight: 750;
  margin: 15px 0;
}
input,
select,
textarea {
  width: 100%;
  min-height: 48px;
  border: 1px solid #c8d1df;
  border-radius: 12px;
  padding: 10px 12px;
  background: #fff;
  color: #17213b;
}
textarea {
  resize: vertical;
}
.primary,
.quiet {
  border: 0;
  border-radius: 12px;
  padding: 12px 16px;
  font-weight: 850;
}
.primary {
  background: var(--blue);
  color: #fff;
}
.quiet {
  background: #edf2f8;
  color: #344054;
}
.large {
  width: 100%;
  min-height: 52px;
}
.error {
  color: var(--danger);
  min-height: 22px;
  margin-top: 10px;
}
.topbar {
  position: sticky;
  top: 0;
  z-index: 30;
  height: 67px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 10px max(16px, env(safe-area-inset-left));
  background: #fff;
  border-bottom: 1px solid var(--line);
}
/* 첫 칸(제목·위치표시)만 세로로 쌓는다.
   예전에는 .topbar div 전체에 걸려 있어서, 나중에 넣은 버튼 묶음까지
   세로로 쌓이며 상단이 깨졌다(2026-08-23). */
.topbar > div:first-child {
  display: grid;
}
.topbar .top-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: nowrap;
  min-width: 0;
}
.topbar .top-actions .zoom-switch {
  display: none;   /* 폰에서는 자리가 없다. PC 에서만 보인다. */
  flex: 0 0 auto;
}
@media (min-width: 1024px) {
  .topbar .top-actions .zoom-switch { display: inline-flex; }
}
/* 첫 칸 안쪽은 예전처럼 세로로 쌓는다 */
.topbar-title { display: grid; }
.topbar-left { min-width: 0; overflow: hidden; }
.topbar .top-actions button { flex: 0 0 auto; white-space: nowrap; }
.topbar small {
  color: var(--muted);
  margin-top: 3px;
}
main {
  max-width: none;
  margin: 0;
  padding: 20px 16px 172px;   /* 아래 올리기 줄 + 메뉴 자리 */
}
.page-title {
  display: flex;
  justify-content: space-between;
  align-items: start;
  gap: 12px;
}
.page-title h1 {
  font-size: 1.5625rem;
  margin: 0 0 5px;
}
.metric-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
  margin: 10px 0 18px;
}
.metric {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 16px;
  padding: 16px;
}
.metric span {
  display: block;
  color: var(--muted);
  font-size: 0.8125rem;
}
.metric strong {
  display: block;
  margin-top: 6px;
  font-size: 1.5625rem;
}
.card-list {
  display: grid;
  gap: 12px;
}
.station-card {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 17px;
  padding: 17px;
  display: grid;
  gap: 10px;
}
.search-result { width: 100%; text-align: left; color: inherit; cursor: pointer; }
.search-result p { margin: 6px 0 0; }
.station-card.muted { opacity: .68; }
.search-dialog { max-width: 760px; }
.notification-count { display: inline-grid; place-items: center; min-width: 20px; height: 20px; padding: 0 5px; border-radius: 999px; background: #d92d20; color: white; font-size: 0.6875rem; }
.upload-primary-actions { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 10px; margin: 14px 0; }
.upload-primary-actions button { min-height: 76px; display: flex; flex-direction: column; justify-content: center; align-items: flex-start; gap: 4px; }
.upload-primary-actions button span { font-size: 0.75rem; opacity: .78; }
.visually-hidden-file { position: absolute !important; width: 1px !important; height: 1px !important; overflow: hidden !important; opacity: 0 !important; pointer-events: none !important; }
@media (pointer: fine) { .camera-only { display: none !important; } .upload-primary-actions { grid-template-columns: 1fr; } }
.station-card.problem {
  border-left: 5px solid #f04438;
}
.station-head {
  display: flex;
  justify-content: space-between;
}
.badge {
  font-size: 0.75rem;
  font-weight: 850;
  border-radius: 999px;
  padding: 5px 9px;
  background: #eef4ff;
  color: #3538cd;
}
.badge.problem {
  background: #fef3f2;
  color: #b42318;
}
.badge.ok {
  background: #ecfdf3;
  color: #067647;
}
.amount-row,
.button-row {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  color: #475467;
}
.button-row button {
  flex: 1;
  min-width: 120px;
}
.form-card {
  width: 100%;
  max-width: none;
  margin-bottom: 16px;
}
.form-card.compact {
  padding: 18px;
}
.form-card h2 {
  font-size: 1.1875rem;
  margin: 0 0 8px;
}
.password-dialog {
  width: min(92vw, 460px);
  border: 0;
  border-radius: 22px;
  padding: 24px;
  box-shadow: 0 24px 80px #10182855;
}
.password-dialog::backdrop {
  background: #10182899;
}
.password-dialog label {
  display: grid;
  gap: 7px;
  margin: 15px 0;
  font-weight: 750;
}
.install-dialog { width: min(92vw, 520px); }
.install-dialog-head { display: flex; align-items: center; justify-content: space-between; }
.install-dialog h2 { margin: 20px 0 8px; }
.install-guide { margin: 14px 0 20px; }
.install-steps { list-style: none; padding: 0; margin: 0; display: grid; gap: 12px; counter-reset: install-step; }
.install-steps li { counter-increment: install-step; position: relative; min-height: 70px; padding: 14px 14px 14px 58px; border-radius: 15px; background: #f5f8ff; }
.install-steps li::before { content: counter(install-step); position: absolute; left: 14px; top: 14px; width: 30px; height: 30px; display: grid; place-items: center; border-radius: 50%; background: var(--blue); color: #fff; font-weight: 900; }
.install-steps strong,
.install-steps span,
.install-success strong,
.install-success span,
.install-warning strong,
.install-warning span { display: block; }
.install-steps span,
.install-success span,
.install-warning span { margin-top: 5px; color: var(--muted); line-height: 1.5; }
.install-success,
.install-warning { padding: 17px; border-radius: 15px; background: #ecfdf3; color: #067647; }
.install-warning { background: #fff7ed; color: #9a3412; }
.login-card .app-install-button { margin-top: 10px; }
.form-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0 14px;
}
.difference-box {
  display: flex;
  justify-content: space-between;
  align-items: center;
  background: #eff4ff;
  border-radius: 14px;
  padding: 16px;
  margin: 16px 0;
}
.difference-box strong {
  font-size: 1.375rem;
}
.message {
  min-height: 24px;
  margin-top: 10px;
}
.toolbar {
  display: grid;
  grid-template-columns: 180px 1fr;
  gap: 10px;
  margin-bottom: 12px;
}
.calendar-grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 6px;
}
.calendar-grid > div,
.calendar-day {
  min-height: 100px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 9px;
}
.calendar-day { display: flex; flex-direction: column; align-items: flex-start; gap: 6px; text-align: left; color: var(--text); }
.calendar-day.has-events { border-color: #84adff; background: #f5f8ff; }
.day-sales { font-size: 0.6875rem; font-weight: 700; color: #1a7f37; background: #eafbf0; padding: 1px 6px; border-radius: 999px; }

/* ===== 달력 개선 (2026-08-22): 상태 깃발 · 요일머리글 · 오늘강조 · 뱃지 접기 ===== */
.calendar-weekdays { display: grid; grid-template-columns: repeat(7, 1fr); gap: 6px; margin-bottom: 6px; }
.calendar-weekday { text-align: center; font-size: 0.75rem; font-weight: 900; color: var(--muted); padding: 6px 0; }
.calendar-weekday.sun { color: #d92d20; }
.calendar-weekday.sat { color: #175cd3; }
.calendar-day { position: relative; overflow: hidden; padding-top: 12px; }
.day-flag { position: absolute; top: 0; left: 0; right: 0; height: 5px; border-radius: 12px 12px 0 0; }
.day-flag.bad { background: #f04438; }
.day-flag.warn { background: #f79009; }
.day-flag.ok { background: #12b76a; }
.day-head { display: flex; align-items: center; justify-content: space-between; gap: 6px; width: 100%; }
.calendar-day.sun > .day-head > strong { color: #d92d20; }
.calendar-day.sat > .day-head > strong { color: #175cd3; }
.calendar-day.today { border-color: var(--blue); box-shadow: 0 0 0 2px #155eef33; }
.calendar-day.today > .day-head > strong { background: var(--blue); color: #fff; border-radius: 50%; width: 24px; height: 24px; display: inline-grid; place-items: center; font-size: 0.8125rem; }
.calendar-day .badge { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.badge.warn { background: #fff7e6; color: #b45309; }
.badge.more { background: #eef1f6; color: #475467; font-weight: 800; }
.calendar-day:hover { border-color: var(--blue); }
.wide-field { grid-column: 1 / -1; }
.calendar-event-actions { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 8px; }
.calendar-filters { grid-template-columns: 150px minmax(220px, 1fr) 150px 130px 130px; align-items: end; }
.calendar-filters label { margin: 0; font-size: 0.75rem; }
.badge.delivery { background: #ecfdf3; color: #067647; }
.badge.document { background: #fff6ed; color: #b54708; }
.badge.calendar-event { background: #eef4ff; color: #3538cd; }
.badge.calendar-event.done { background: #ecfdf3; color: #067647; text-decoration: line-through; }
.station-card.muted { opacity: .65; }
.permission-choice-grid label,
.station-choice-grid label { display: flex; align-items: flex-start; gap: 9px; padding: 10px; border: 1px solid var(--line); border-radius: 12px; background: #fff; }
.permission-choice-grid input,
.station-choice-grid input { width: 20px; height: 20px; margin-top: 1px; flex: 0 0 auto; }
.permission-choice-grid span,
.station-choice-grid span { display: grid; gap: 2px; }
.permission-choice-grid small,
.station-choice-grid small { color: var(--muted); font-size: 0.6875rem; }
.user-access-card details { margin-top: 12px; border-top: 1px solid var(--line); padding-top: 12px; }
.user-access-card summary { cursor: pointer; color: var(--blue); font-weight: 800; padding: 6px 0; }
.user-access-card h4 { margin: 14px 0 8px; }
.problem-chips { display: flex; flex-wrap: wrap; gap: 6px; margin: 10px 0 4px; }
.problem-chips span { padding: 5px 8px; border-radius: 999px; background: #fff1f0; color: #b42318; font-size: 0.75rem; font-weight: 800; }
.station-card.warning { border-color: #fdb022; background: #fffaeb; }
.forecast-note { margin: 10px 0; padding: 9px 11px; border-radius: 10px; background: #f2f4f7; color: var(--muted); font-size: 0.8125rem; line-height: 1.45; }
.recognition-dialog { width: min(920px, calc(100% - 24px)); max-height: calc(100vh - 24px); border: 0; border-radius: 22px; padding: 0; box-shadow: 0 22px 70px #10182840; }
.recognition-dialog::backdrop { background: #10182899; }
.recognition-dialog form { padding: 22px; overflow: auto; }
.recognition-detail-list { display: grid; gap: 10px; margin: 10px 0 18px; }
.recognition-detail-row { display: grid; grid-template-columns: minmax(150px, 1fr) repeat(2, minmax(110px, 160px)); gap: 9px; align-items: end; padding: 12px; border: 1px solid var(--line); border-radius: 14px; }
.recognition-detail-row label { margin: 0; }
.form-help { color: var(--muted); line-height: 1.5; }
.overview-panel { margin-top: 18px; padding: 20px; border: 1px solid var(--line); border-radius: 22px; background: #fff; box-shadow: 0 14px 38px #183b6b12; }
.overview-panel h2 { margin: 0 0 5px; }
.overview-panel p { margin: 0; color: var(--muted); }
.overview-tabs { display: flex; gap: 7px; overflow-x: auto; padding: 14px 0 10px; }
.overview-tabs button { flex: 0 0 auto; min-height: 44px; border: 0; border-radius: 999px; padding: 9px 16px; background: #edf2f8; color: #344054; font-weight: 850; }
.overview-tabs button.active { background: var(--blue); color: #fff; }
.bar-chart { min-height: 230px; display: flex; align-items: stretch; gap: 7px; overflow-x: auto; padding: 30px 4px 8px; border-bottom: 1px solid var(--line); margin-bottom: 14px; }
.bar-item { flex: 1 0 38px; min-width: 38px; max-width: 78px; display: grid; grid-template-rows: 22px 150px auto; gap: 5px; text-align: center; }
.bar-value { font-size: 0.6875rem; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.bar-track { display: flex; align-items: end; justify-content: center; background: #eef4ff; border-radius: 9px 9px 3px 3px; overflow: hidden; }
.bar-track span { width: 100%; display: block; background: linear-gradient(180deg,#528bff,var(--blue)); border-radius: 9px 9px 3px 3px; }
.bar-item small { font-weight: 800; color: #475467; }
.overview-note { padding: 14px; border-radius: 14px; background: #f5f8ff; color: #475467; margin-bottom: 12px; }
.segmented {
  display: flex;
  background: #e9eef6;
  padding: 4px;
  border-radius: 13px;
  margin-bottom: 14px;
}
.segmented button {
  flex: 1;
  border: 0;
  background: transparent;
  padding: 11px;
  border-radius: 10px;
  font-weight: 800;
}
.segmented .active {
  background: #fff;
  box-shadow: 0 1px 5px #10182820;
}
.check-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 4px 12px;
  margin: 10px 0 16px;
}
.check-grid label {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0;
  font-size: 0.8125rem;
}
.check-grid input {
  width: 18px;
  min-height: 18px;
}
.empty-card {
  background: #fff;
  border: 1px dashed #bac5d4;
  border-radius: 17px;
  padding: 30px;
  text-align: center;
  color: var(--muted);
}
.bottom-nav {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 35;
  /* 메뉴가 10개라 억지로 나누면 글씨가 안 읽힌다. 옆으로 밀어 보게 한다. */
  display: flex;
  gap: 2px;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
  padding: 6px max(8px, env(safe-area-inset-right))
    calc(6px + env(safe-area-inset-bottom));
  background: #fff;
  border-top: 1px solid var(--line);
  box-shadow: 0 -8px 30px #1d293912;
}
.bottom-nav::-webkit-scrollbar { display: none; }
.bottom-nav button {
  border: 0;
  background: transparent;
  border-radius: 12px;
  min-height: 46px;
  flex: 0 0 auto;
  min-width: 58px;
  padding: 0 8px;
  color: #667085;
  font-weight: 800;
}
.bottom-nav button.active {
  background: #eef4ff;
  color: var(--blue);
}
.document-viewer {
  position: fixed;
  inset: 67px 0 0;
  z-index: 50;
  background: #182230;
  display: grid;
  grid-template-rows: auto 1fr;
}
.document-viewer-head {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px;
  background: #fff;
}
.document-viewer-back {
  min-height: 52px;
  padding: 10px 20px;
  border: 0;
  border-radius: 13px;
  background: var(--blue);
  color: #fff;
  font-weight: 900;
  font-size: 1rem;
}
.document-viewer-body {
  overflow: auto;
  display: grid;
  place-items: center;
  padding: 14px;
}
.document-viewer-body img {
  max-width: 100%;
  height: auto;
}
.document-viewer-body iframe {
  width: 100%;
  height: 100%;
  border: 0;
  background: #fff;
}
.station-open {
  width: 100%;
  text-align: left;
  color: inherit;
  font: inherit;
  cursor: pointer;
}
.station-open:hover,
.station-open:focus-visible {
  border-color: var(--blue);
  box-shadow: 0 8px 24px #155eef1f;
  outline: none;
}
.station-open small {
  display: block;
  margin-top: 10px;
  color: var(--blue);
  font-weight: 800;
}
.closing-station {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}
.closing-actions {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: 12px;
  align-items: start;
}
.closing-action {
  grid-column: span 4;
  min-height: 112px;
  border: 1px solid var(--line);
  border-radius: 20px;
  padding: 18px;
  background: #fff;
  color: var(--text);
  text-align: left;
  box-shadow: 0 4px 15px #1018280d;
}
.closing-action:nth-child(1),
.closing-action:nth-child(2),
.closing-action:nth-child(3) {
  grid-column: span 6;
}
.closing-action strong,
.closing-action span {
  display: block;
}
.closing-action strong {
  font-size: 1.1875rem;
  margin-bottom: 7px;
}
.closing-action span {
  color: var(--muted);
  line-height: 1.45;
}
.closing-action.primary span {
  color: #ffffffd9;
}
.inline-settings {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr)) auto;
  gap: 8px;
  align-items: end;
  margin-top: 12px;
}
.inline-settings label {
  margin: 0;
}
.closing-editor { margin-top: 16px; }
.closing-editor .station-head { align-items: flex-start; margin-bottom: 14px; }
.closing-editor h2 { margin: 0 0 5px; }
.closing-detail-head,
.closing-detail-row {
  display: grid;
  grid-template-columns: 150px minmax(180px, 1fr) 120px 150px 48px;
  gap: 8px;
  align-items: end;
}
.closing-detail-head { padding: 8px 6px; color: var(--muted); font-size: 0.75rem; font-weight: 800; }
.closing-detail-row { padding: 10px 6px; border-top: 1px solid var(--line); }
.closing-detail-row label { margin: 0; }
.closing-detail-remove { min-height: 46px; border: 0; border-radius: 12px; background: #fff1f0; color: #b42318; font-weight: 900; }
@media (max-width: 680px) {
  .topbar { height: 64px; padding: 8px; gap: 6px; }
  .topbar > div:first-child { min-width: 76px; max-width: 92px; font-size: 0.8125rem; line-height: 1.25; }
  .topbar small { display: none; }
  .topbar .top-actions { gap: 4px; }
  .topbar .top-actions button { min-height: 44px; padding: 8px 7px; font-size: 0.6875rem; white-space: nowrap; }
  .metric-grid {
    grid-template-columns: 1fr;
  }
  .form-grid,
  .check-grid {
    grid-template-columns: 1fr;
  }
  .closing-totals {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0 8px;
  }
  .toolbar {
    grid-template-columns: 1fr;
  }
  .calendar-filters { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .calendar-filters > :nth-child(2) { grid-column: 1 / -1; }
  .bottom-nav {
    overflow-x: hidden;
    grid-template-columns: repeat(8, minmax(42px, 1fr));
    padding-left: 4px;
    padding-right: 4px;
  }
  .bottom-nav button {
    min-height: 46px;
    padding: 4px 2px;
    font-size: 0.6875rem;
  }
  .calendar-grid > div,
  .calendar-day {
    min-height: 76px;
    padding: 6px;
  }
  .overview-panel { padding: 14px; margin-left: -4px; margin-right: -4px; }
  .bar-chart { min-height: 205px; }
  .bar-item { grid-template-rows: 20px 125px auto; min-width: 34px; }
  .page-title h1 {
    font-size: 1.375rem;
  }
  .closing-station,
  .inline-settings {
    grid-template-columns: 1fr;
  }
  .closing-actions {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .closing-action,
  .closing-action:nth-child(1),
  .closing-action:nth-child(2),
  .closing-action:nth-child(3),
  .closing-action:last-child {
    grid-column: auto;
    min-height: 126px;
  }
  .closing-action:first-child {
    grid-column: 1 / -1;
    min-height: 108px;
  }
  .closing-detail-head { display: none; }
  .closing-detail-row { grid-template-columns: repeat(2, minmax(0, 1fr)); padding: 14px 0; }
  .recognition-dialog { width: calc(100% - 12px); max-height: calc(100vh - 12px); }
  .recognition-dialog form { padding: 16px; }
  .recognition-detail-row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .recognition-detail-row > strong { grid-column: 1 / -1; }
  .closing-detail-row label:nth-child(2) { grid-column: 1 / -1; }
  .closing-detail-remove { align-self: end; }
}

.password-field {
  position: relative;
  width: 100%;
}
.password-field input {
  padding-right: 52px;
}
.password-toggle {
  position: absolute;
  top: 50%;
  right: 7px;
  transform: translateY(-50%);
  width: 40px;
  height: 38px;
  border: 0;
  border-radius: 10px;
  background: transparent;
  display: grid;
  place-items: center;
  font-size: 1.1875rem;
  line-height: 1;
  padding: 0;
}
.password-toggle:hover,
.password-toggle:focus-visible {
  background: #eef4ff;
  outline: none;
}

/* ============================================================
   디자인 개편 (2026-08-22)
   — 카카오(노란 강조 버튼) · ChatGPT(미니멀 PC 사이드바) ·
     오빠두 엑셀 대시보드(상태색 KPI 카드) 참고
   기존 CSS는 그대로 두고, 이 블록에서 팔레트/레이아웃만 덧씌운다.
   PC(960px 이상)에서만 사이드바가 보이고 하단탭은 숨는다.
   모바일은 기존 하단탭 그대로 사용한다.
   ============================================================ */
/* ── 네이비 톤으로 전환 (2026-08-23) ──────────────────────────
   8/17 구현본(gas-ui.css)이 채택한 색이다. 시안 HTML 은 오렌지였지만
   시트 남색 체계와 안 맞아서 구현할 때 네이비로 바꿨고, 그쪽이 맞다.
   시트 순서 램프 s1~s7 은 진한색 → 연한색. 색이 순서를 말해 준다.
   ──────────────────────────────────────────────────────────── */
:root {
  --s1: #0F2942; --s2: #1D4166; --s3: #2C5A8A; --s4: #3F76AC;
  --s5: #5E92C4; --s6: #8AB0D6; --s7: #B4CDE5;

  --accent: #EDA100;       /* 강조 — 주의를 끌 곳에만 */
  --accent-ink: #3A2800;
  --sidebar-bg: #12283F;   /* 네이비 사이드바 */
  --sidebar-ink: #E8EEF5;
  --sidebar-muted: #93A9BF;
  --ok: #1B7A50;
  --warn: #B8791A;

  /* 글자 크기 배율 — 구서버에 있던 기능. 한 번에 키우고 줄인다. */
  --z: 1;
}

/* 주요 버튼은 네이비 그라데이션 + 흰 글씨 */
.primary {
  background: linear-gradient(180deg, var(--s3) 0%, var(--s2) 100%);
  color: #fff;
  font-weight: 900;
  border: 1px solid var(--s2);
  box-shadow: 0 1px 2px #0F294218;
}
.primary:hover,
.primary:focus-visible {
  box-shadow: 0 2px 8px #0F294226;
  outline: none;
}
.primary:active { transform: translateY(1px); }
.primary:disabled { box-shadow: none; opacity: .55; }

/* 표 머리는 네이비, 합계줄은 크림 + 이중선 — 엑셀에서 보던 그대로 */
table thead th {
  background: linear-gradient(180deg, var(--s3), var(--s2));
  color: #fff;
  font-weight: 800;
}
table tbody tr:nth-child(even) > td { background: #F7FAFD; }
table tfoot td, table tr.total td {
  background: #FFF6E8; font-weight: 800;
  border-top: 2px double var(--s2);
}

/* 상단바에도 네이비 한 줄 */
.topbar { border-bottom: 2px solid var(--s2); }

/* 오빠두 스타일 — KPI 카드: 큰 숫자 + 상태색 왼쪽 바 */
.metric {
  position: relative;
  border-left: 4px solid var(--blue);
  padding-left: 14px;
}
.metric strong { font-size: 1.75rem; font-weight: 900; letter-spacing: -0.02em; }
.metric span { text-transform: uppercase; font-size: 0.6875rem; letter-spacing: 0.04em; }
.station-card.problem { border-left-width: 5px; border-left-color: var(--danger); }
.badge { font-weight: 900; }

/* PC 사이드바 (ChatGPT류 미니멀 다크 사이드바) — 기본은 숨김 */
.sidebar-nav {
  display: none;
}

@media (min-width: 960px) {
  .sidebar-nav {
    display: flex;
    flex-direction: column;
    gap: 2px;
    position: fixed;
    top: 0;
    left: 0;
    bottom: 0;
    width: 240px;
    padding: 16px 12px;
    background: var(--sidebar-bg);
    color: var(--sidebar-ink);
    z-index: 40;
    overflow-y: auto;
  }
  .sidebar-brand {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 10px 18px;
    color: #fff;
  }
  .sidebar-brand-mark {
    width: 30px;
    height: 30px;
    display: grid;
    place-items: center;
    border-radius: 9px;
    background: var(--accent);
    color: var(--accent-ink);
    font-weight: 900;
  }
  .sidebar-brand-text { font-weight: 800; font-size: 0.875rem; }
  .sidebar-nav button[data-nav] {
    all: unset;
    box-sizing: border-box;
    display: flex;
    align-items: center;
    padding: 11px 12px;
    border-radius: 10px;
    color: var(--sidebar-muted);
    font-weight: 700;
    font-size: 0.875rem;
    cursor: pointer;
    border-left: 3px solid transparent;
  }
  .sidebar-nav button[data-nav]:hover {
    background: #ffffff12;
    color: var(--sidebar-ink);
  }
  .sidebar-nav button[data-nav].active {
    background: #ffffff1a;
    color: #fff;
    border-left-color: var(--accent);
  }

  /* 사이드바 폭만큼 본문을 밀어낸다 */
  .topbar { margin-left: 240px; }
  /* 사이트는 화면을 꽉 채운다. 오른쪽에 빈 공간을 남기지 않는다(2026-08-23). */
  #mainContent { margin-left: 240px; max-width: none; width: auto; padding: 24px 28px 60px; }
  .bottom-nav { display: none; }

  /* PC에서는 대시보드 카드도 폭을 살려 3열까지 */
  .metric-grid { grid-template-columns: repeat(4, 1fr); }
  .card-list { grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); }
  .closing-actions { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .closing-action,
  .closing-action:nth-child(1),
  .closing-action:nth-child(2),
  .closing-action:nth-child(3) { grid-column: span 2; }
}

/* ============================================================
   대시보드·매입/실마진 화면 (2026-08-22 추가)
   대표=전체 / 소장=담당 주유소, PC는 정보 밀도 높게·모바일은 핵심만
   ============================================================ */
.dash-scope { margin: 8px 0 2px; }
.kpi-row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin: 12px 0 18px; }
.kpi { background: #fff; border: 1px solid var(--line); border-radius: 16px; padding: 14px 15px 13px; display: flex; flex-direction: column; gap: 6px; box-shadow: 0 3px 12px #1018280a; }
.kpi-top { display: flex; align-items: center; justify-content: space-between; gap: 6px; }
.kpi-icon { width: 32px; height: 32px; border-radius: 10px; display: grid; place-items: center; font-size: 1rem; background: #eef4ff; }
.kpi-icon.ok { background: #e7f7ef; }
.kpi-icon.danger { background: #fef3f2; }
.kpi-icon.warn { background: #fff7e6; }
.kpi-icon.info { background: #eef4ff; }
.kpi-note { font-size: 0.6875rem; font-weight: 800; color: var(--muted); }
.kpi-note.danger { color: var(--danger); }
.kpi-note.warn { color: var(--warn); }
.kpi-note.ok { color: var(--ok); }
.kpi strong { font-size: 1.375rem; font-weight: 900; letter-spacing: -0.02em; }
.kpi-label { color: var(--muted); font-size: 0.75rem; font-weight: 700; }
.section-label { font-size: 0.75rem; font-weight: 900; color: var(--muted); letter-spacing: .03em; margin: 18px 0 10px; }
.panel { background: #fff; border: 1px solid var(--line); border-radius: 18px; padding: 16px; box-shadow: 0 3px 12px #1018280a; }
.panel-label { font-size: 0.75rem; font-weight: 900; color: var(--muted); margin: 0 0 10px; }
.dash-panels { display: grid; gap: 12px; margin-bottom: 6px; }
.donut-wrap { display: flex; align-items: center; gap: 14px; }
.donut { position: relative; width: 88px; height: 88px; border-radius: 50%; flex: 0 0 auto; display: grid; place-items: center; }
.donut::after { content: ''; position: absolute; width: 60px; height: 60px; border-radius: 50%; background: #fff; }
.donut-num { position: relative; z-index: 1; font-weight: 900; font-size: 1rem; }
.donut-label { font-size: 0.75rem; color: var(--muted); font-weight: 700; line-height: 1.5; }
.donut-label strong { display: block; font-size: 0.9375rem; color: var(--text); margin: 2px 0; }
.mix-bar { height: 12px; border-radius: 999px; overflow: hidden; display: flex; background: #eef1f6; margin: 4px 0 6px; }
.mix-bar span { display: block; height: 100%; }
.mix-legend { display: flex; justify-content: space-between; gap: 8px; font-size: 0.6875rem; color: var(--muted); font-weight: 700; flex-wrap: wrap; }
.mini-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; text-align: center; }
.mini-stats strong { display: block; font-size: 1.375rem; font-weight: 900; }
.mini-stats span { font-size: 0.6875rem; color: var(--muted); font-weight: 700; }
.mini-ratio { display: flex; align-items: center; gap: 8px; margin-top: 4px; }
.mini-ratio .mix-bar { flex: 1; margin: 0; height: 8px; }
.mini-ratio small { color: var(--muted); font-size: 0.6875rem; font-weight: 700; white-space: nowrap; }
.pc-only { display: none; }

/* 매입·실마진 화면 */
.purchase-toolbar { grid-template-columns: 200px auto; align-items: end; }
.purchase-toolbar label { margin: 0; font-size: 0.75rem; }
.table-scroll { overflow-x: auto; background: #fff; border: 1px solid var(--line); border-radius: 16px; }
.data-table { width: 100%; border-collapse: collapse; font-size: 0.8125rem; min-width: 720px; }
.data-table th, .data-table td { padding: 11px 12px; text-align: right; white-space: nowrap; border-bottom: 1px solid var(--line); }
.data-table th:first-child, .data-table td:first-child,
.data-table th:nth-child(2), .data-table td:nth-child(2) { text-align: left; }
.data-table thead th { background: #f7f9fc; color: var(--muted); font-size: 0.75rem; font-weight: 900; position: sticky; top: 0; }
.data-table tbody tr:hover { background: #f9fbff; }
.data-table tfoot td { font-weight: 900; background: #f7f9fc; border-bottom: 0; }
.data-table .num-good { color: var(--ok); font-weight: 800; }
.data-table .num-bad { color: var(--danger); font-weight: 800; }
.cost-pending-row { display: grid; grid-template-columns: minmax(0,1fr) 130px 130px auto; gap: 8px; align-items: end; }
.cost-pending-row label { margin: 0; font-size: 0.75rem; }

@media (min-width: 960px) {
  .kpi-row { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; }
  .kpi strong { font-size: 1.5625rem; }
  .dash-panels { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
  .pc-only { display: block; }
  .cash-layout { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 24px; align-items: start; }
  .cash-summary { position: sticky; top: 16px; display: flex; flex-direction: column; }
  .form-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 4px 18px; }
}
@media (max-width: 680px) {
  /* 모바일은 핵심 숫자만 — 표는 가로 스크롤, 부가정보는 감춘다 */
  .kpi strong { font-size: 1.375rem; }
  .mini-stats strong { font-size: 1.1875rem; }
  .purchase-toolbar { grid-template-columns: 1fr; }
  .cost-pending-row { grid-template-columns: repeat(2, minmax(0,1fr)); }
}

/* 달력 — 폰에서는 칸이 좁으므로 뱃지를 2개까지만 노출하고 매출액을 우선 보여준다 */
@media (max-width: 680px) {
  .calendar-day { min-height: 82px; padding: 6px; padding-top: 11px; gap: 3px; }
  .calendar-day .badge { font-size: 0.6875rem; padding: 3px 6px; }
  .calendar-day .badge:nth-of-type(n + 3):not(.more) { display: none; }
  .day-sales { font-size: 0.6875rem; padding: 1px 5px; }
  .calendar-weekday { font-size: 0.6875rem; padding: 4px 0; }
}

/* ============================================================
   화면 강화 (2026-08-23) — 주유소별 미니 대시보드 · 거래처 색상 · 정보 밀도
   ============================================================ */

/* 대시보드 요약 컨테이너는 내부에서 자체 레이아웃(KPI행·패널행)을 한다.
   격자로 두면 KPI행·패널행이 각각 한 칸씩 차지해 세로로 찌그러진다. */
.dash-summary { display: block; }

/* 오늘 보고 현황 막대 */
.report-bars { display: grid; gap: 8px; }
.report-bar { display: grid; grid-template-columns: 34px 1fr auto; align-items: center; gap: 8px; }
.report-bar-label { font-size: 0.6875rem; font-weight: 800; color: var(--muted); }
.report-track { height: 9px; border-radius: 999px; background: #eef1f6; overflow: hidden; }
.report-track span { display: block; height: 100%; border-radius: 999px; }
.report-bar small { font-size: 0.6875rem; font-weight: 800; color: var(--muted); }

/* 주유소별 미니 대시보드 타일 — PC 한 줄 최대 6개, 넘치면 아래로 */
.station-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.station-tile {
  display: flex; flex-direction: column; gap: 7px;
  background: #fff; border: 1px solid var(--line); border-left: 4px solid #12b76a;
  border-radius: 14px; padding: 12px 12px 11px; text-align: left; color: var(--text);
  cursor: pointer; box-shadow: 0 2px 8px #1018280a; transition: box-shadow .15s, transform .15s;
}
.station-tile.problem { border-left-color: #f04438; }
.station-tile:hover, .station-tile:focus-visible { box-shadow: 0 6px 18px #155eef26; transform: translateY(-1px); outline: none; }
.tile-head { display: flex; align-items: center; justify-content: space-between; gap: 6px; }
.tile-head strong { font-size: 0.8125rem; font-weight: 800; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tile-flag { width: 8px; height: 8px; border-radius: 50%; flex: 0 0 auto; }
.tile-flag.ok { background: #12b76a; }
.tile-flag.bad { background: #f04438; }
.tile-sales { display: flex; align-items: baseline; justify-content: space-between; gap: 6px; }
.tile-amount { font-size: 1rem; font-weight: 900; letter-spacing: -0.02em; }
.tile-sub { font-size: 0.6875rem; font-weight: 800; color: var(--muted); white-space: nowrap; }
.tile-chart { height: 34px; display: flex; align-items: flex-end; background: #f5f8ff; border-radius: 7px; padding: 3px; }
.tile-bar { width: 100%; border-radius: 5px 5px 3px 3px; background: linear-gradient(180deg, #528bff, var(--blue)); min-height: 4px; }
.tile-mix { height: 7px; margin: 0; }
.tile-mix-legend { display: flex; justify-content: space-between; font-size: 0.6875rem; font-weight: 700; color: var(--muted); }
.status-dots { display: flex; flex-wrap: wrap; gap: 4px 7px; margin-top: 2px; }
.status-dot { display: inline-flex; align-items: center; gap: 3px; font-size: 0.6875rem; font-weight: 800; color: var(--muted); }
.status-dot i { width: 7px; height: 7px; border-radius: 50%; display: inline-block; }
.status-dot.ok i { background: #12b76a; }
.status-dot.bad i { background: #f04438; }
.status-dot.bad { color: var(--danger); }

/* 거래처(매입처)별 색상 입고 뱃지 */
.supplier-badge {
  background: color-mix(in srgb, var(--supplier-color) 12%, #fff);
  color: var(--supplier-color);
  border: 1px solid color-mix(in srgb, var(--supplier-color) 32%, #fff);
  display: inline-flex; align-items: center; gap: 4px;
}
.supplier-badge.expected { border-style: dashed; }
.supplier-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--supplier-color); flex: 0 0 auto; }
@supports not (background: color-mix(in srgb, red 10%, white)) {
  .supplier-badge { background: #f2f6ff; border-color: #d7e3ff; }
}
.supplier-list { display: grid; gap: 7px; margin-top: 10px; }
.supplier-row { display: grid; grid-template-columns: minmax(0,1fr) 46px minmax(0,1.2fr); gap: 8px; align-items: center; }
.supplier-row small { color: var(--muted); font-size: 0.6875rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.supplier-row input[type="color"] { min-height: 34px; padding: 2px; border-radius: 8px; }
.supplier-chip { display: inline-flex; align-items: center; gap: 5px; font-size: 0.75rem; font-weight: 800; color: var(--supplier-color); }

/* 인식 결과에서 "사람이 꼭 봐야 할 항목" 강조 */
.review-field { border-color: #fdb022 !important; background: #fffaeb; }
.review-hint { font-size: 0.6875rem; font-weight: 800; color: #b45309; }

@media (min-width: 700px)  { .station-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 1200px) { .station-grid { grid-template-columns: repeat(5, minmax(0, 1fr)); } }
@media (min-width: 1360px) { .station-grid { grid-template-columns: repeat(6, minmax(0, 1fr)); } }

@media (min-width: 960px) {
  /* 현장에서 "글씨만 크고 빈 공간이 많다"는 지적 반영.
     읽기용 텍스트·여백만 촘촘하게. 버튼·입력칸은 손가락 크기를 유지한다. */
  :root { font-size: 0.9375rem; }
  #mainContent { padding: 20px 26px 48px; }
  .page-title h1 { font-size: 1.375rem; }
  .page-title p { margin-bottom: 12px; font-size: 0.8125rem; }
  .station-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .kpi-row { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin: 10px 0 14px; }
  .kpi { padding: 12px 13px 11px; border-radius: 14px; }
  .kpi strong { font-size: 1.375rem; }
  .kpi-label { font-size: 0.6875rem; }
  .kpi-icon { width: 28px; height: 28px; font-size: 0.875rem; }
  .dash-panels { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
  .panel { padding: 13px 14px; border-radius: 15px; }
  .panel-label { font-size: 0.6875rem; margin-bottom: 8px; }
  .donut { width: 74px; height: 74px; }
  .donut::after { width: 50px; height: 50px; }
  .donut-num { font-size: 0.9375rem; }
  .donut-label { font-size: 0.6875rem; }
  .donut-label strong { font-size: 0.8125rem; }
  .section-label { margin: 14px 0 8px; font-size: 0.6875rem; }
  input, select, textarea { min-height: 42px; font-size: 0.875rem; }
  .form-card label { margin: 10px 0; font-size: 0.8125rem; }
  .form-card { padding: 18px; border-radius: 18px; }
  .station-card { padding: 14px; border-radius: 14px; }
  .badge { font-size: 0.6875rem; padding: 4px 8px; }
}

@media (max-width: 680px) {
  /* 폰은 핵심만 — 달력 칸이 좁으므로 뱃지 2개까지, 매출액 우선 */
  .kpi strong { font-size: 1.375rem; }
  .calendar-day .badge:nth-of-type(n + 3):not(.more) { display: none; }
  .supplier-row { grid-template-columns: minmax(0,1fr) 46px; }
  .supplier-row small { grid-column: 1 / -1; }
}

/* ============================================================
   화면 안 탭 (2026-08-23)
   항목이 많은 화면을 큰 갈래로 나눠, 고른 것만 보이게 한다.
   ============================================================ */
.tab-bar {
  display: flex;
  gap: 4px;
  overflow-x: auto;
  padding: 4px;
  margin: 0 0 16px;
  background: #e9eef6;
  border-radius: 13px;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
}
.tab-bar::-webkit-scrollbar { display: none; }
.tab-button {
  flex: 1 0 auto;
  min-height: 44px;
  padding: 10px 16px;
  border: 0;
  border-radius: 10px;
  background: transparent;
  color: #475467;
  font-weight: 800;
  font-size: 0.8125rem;
  white-space: nowrap;
  cursor: pointer;
  transition: background .15s, color .15s;
}
.tab-button:hover { color: var(--text); }
.tab-button.active {
  background: #fff;
  color: var(--text);
  box-shadow: 0 1px 5px #10182820;
}
.tab-button:focus-visible { outline: 2px solid var(--blue); outline-offset: -2px; }

/* 시스템 안의 하위 탭은 한 단계 아래라는 게 보이도록 조금 작고 옅게 */
.tab-bar-sub {
  background: #f2f5fa;
  margin: 14px 0 14px;
  padding: 3px;
}
.tab-bar-sub .tab-button {
  min-height: 40px;
  font-size: 0.75rem;
  padding: 8px 14px;
}

@media (min-width: 960px) {
  .tab-bar { margin-bottom: 14px; }
  .tab-button { flex: 0 0 auto; font-size: 0.8125rem; min-height: 40px; padding: 9px 18px; }
  .tab-bar-sub .tab-button { min-height: 36px; }
}

/* ============================================================
   좌측 메뉴(LNB) 아코디언 (2026-08-23)
   이카운트·스마트스토어 방식 — 대분류를 펼쳐 하위 업무를 고르면
   오른쪽 작업영역이 그 업무 하나로 통째로 바뀐다.
   ============================================================ */
@media (min-width: 960px) {
  .nav-group { margin-top: 2px; }
  .nav-group-head {
    all: unset; box-sizing: border-box;
    display: flex; align-items: center; justify-content: space-between;
    width: 100%; padding: 11px 12px; border-radius: 10px;
    color: var(--sidebar-muted); font-weight: 700; font-size: 0.875rem;
    cursor: pointer; border-left: 3px solid transparent;
  }
  .nav-group-head:hover { background: #ffffff12; color: var(--sidebar-ink); }
  .nav-group.open > .nav-group-head { color: #fff; }
  .nav-caret { font-size: 0.6875rem; opacity: .7; transition: transform .18s; }
  .nav-group.open .nav-caret { transform: rotate(90deg); }
  .nav-children {
    display: none; margin: 2px 0 6px 14px; padding-left: 8px;
    border-left: 1px solid #ffffff1f;
  }
  .nav-group.open .nav-children { display: block; }
  .nav-child {
    all: unset; box-sizing: border-box; display: block;
    padding: 9px 12px; border-radius: 8px;
    color: var(--sidebar-muted); font-weight: 600; font-size: 0.8125rem; cursor: pointer;
  }
  .nav-child:hover { background: #ffffff12; color: var(--sidebar-ink); }
  .nav-child.active { background: var(--accent); color: var(--accent-ink); font-weight: 800; }

  /* 상단에 지금 보고 있는 위치 표시 */
  .topbar-left { display: flex; flex-direction: column; gap: 2px; }
  .crumb { display: flex; align-items: center; gap: 7px; font-size: 0.75rem; color: var(--muted); font-weight: 700; }
  .crumb strong { color: var(--text); font-size: 0.9375rem; font-weight: 800; }
  .crumb-sep { opacity: .45; }
  .crumb:not([hidden]) + .topbar-title { display: none; }

  /* 왼쪽 메뉴로 고르므로 화면 안 탭 바는 감춘다 (모바일에서는 계속 사용) */
  .tab-bar { display: none; }
}

/* ============================================================
   달력 집중 개선 (2026-08-23)
   달력이 첫 화면이다. 위에 이 달 숫자, 아래 큰 달력,
   검색·일정입력은 접어서 맨 아래로 내렸다.
   ============================================================ */
.calendar-topbar {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between;
  gap: 10px; margin-bottom: 10px;
}
.calendar-move { display: flex; align-items: center; gap: 6px; }
.calendar-move input[type="month"] { min-height: 40px; width: 168px; font-weight: 800; }
.calendar-move .quiet { min-width: 44px; min-height: 40px; padding: 8px 12px; font-weight: 900; }

/* 이 달 요약 — 매출부터 보이게 */
.calendar-summary { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; flex: 1 1 380px; }
.cal-kpi {
  display: flex; flex-direction: column; gap: 2px;
  background: #fff; border: 1px solid var(--line); border-left: 4px solid var(--blue);
  border-radius: 12px; padding: 8px 11px;
}
.cal-kpi span { font-size: 0.6875rem; font-weight: 700; color: var(--muted); }
.cal-kpi strong { font-size: 1rem; font-weight: 900; letter-spacing: -.02em; }
.cal-kpi.ok { border-left-color: #12b76a; }
.cal-kpi.bad { border-left-color: #f04438; }
.cal-kpi.bad strong { color: #b42318; }

/* 하루 칸 — 날짜와 매출은 항상 보이고, 뱃지는 남는 자리에만 */
.calendar-day .day-badges { display: flex; flex-direction: column; gap: 3px; width: 100%; overflow: hidden; }
.calendar-day.alert { border-color: #fda29b; background: #fffbfa; }
.calendar-day .day-head > strong { font-size: 0.9375rem; font-weight: 900; }
.day-sales { font-variant-numeric: tabular-nums; }

.calendar-legend {
  display: flex; flex-wrap: wrap; align-items: center; gap: 14px;
  margin: 8px 2px 0; font-size: 0.6875rem; color: var(--muted); font-weight: 700;
}
.calendar-legend span { display: inline-flex; align-items: center; gap: 5px; }
.calendar-legend .day-flag { position: static; width: 14px; height: 6px; border-radius: 3px; }
.calendar-legend .legend-sales { margin-left: auto; font-weight: 600; }

/* 검색·일정등록은 접어둔다 */
.calendar-tools { margin-top: 12px; border: 1px solid var(--line); border-radius: 12px; background: #fff; }
.calendar-tools > summary {
  cursor: pointer; list-style: none; padding: 11px 14px;
  font-size: 0.8125rem; font-weight: 800; color: var(--muted);
}
.calendar-tools > summary::-webkit-details-marker { display: none; }
.calendar-tools > summary::before { content: "▸ "; }
.calendar-tools[open] > summary::before { content: "▾ "; }
.calendar-tools[open] > summary { border-bottom: 1px solid var(--line); color: var(--text); }
.calendar-tools > *:not(summary) { padding: 12px 14px; margin: 0; }
.calendar-tools .form-card { border: 0; box-shadow: none; margin: 0; }

@media (min-width: 960px) {
  /* PC 는 화면이 넓다 — 칸을 키워 하루에 무슨 일이 있었는지 다 보이게 */
  .calendar-day { min-height: 124px; }
  .calendar-summary { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .calendar-grid { gap: 7px; }
}
@media (max-width: 680px) {
  .calendar-topbar { flex-direction: column; align-items: stretch; }
  .calendar-move input[type="month"] { flex: 1; width: auto; }
  .calendar-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .cal-kpi strong { font-size: 0.9375rem; }
  .calendar-legend .legend-sales { display: none; }
}

/* ============================================================
   정보 밀도 (2026-08-23) — 읽는 글씨와 여백만 줄인다.
   누르는 것(버튼·입력칸)은 손가락 크기 그대로 둔다.
   ============================================================ */
@media (min-width: 960px) {
  :root { font-size: 0.875rem; }
  .page-title h1 { font-size: 1.1875rem; }
  .page-title p { font-size: 0.75rem; }
  .form-card, .overview-panel { padding: 14px 16px; margin-bottom: 10px; }
  .form-card h2, .overview-panel h2 { font-size: 0.875rem; margin-bottom: 10px; }
  .station-card { padding: 11px 13px; }
  .station-card strong { font-size: 0.8125rem; }
  .amount-row { font-size: 0.75rem; }
  .form-help { font-size: 0.75rem; }
  .card-list { gap: 8px; }
  /* 누르는 것은 줄이지 않는다 */
  button, input, select, textarea { min-height: 42px; }
  .badge { min-height: 0; }
}
.station-card.compact-row { padding: 8px 11px; }
.station-card.compact-row strong { font-size: 0.75rem; font-weight: 700; }
.station-card.compact-row .amount-row { font-size: 0.6875rem; }

/* ============================================================
   소통 — 메시지 · 알림 (2026-08-23)
   ============================================================ */
.message-card { border-left: 4px solid var(--line); }
.message-card.unread { border-left-color: var(--blue); background: #f5f8ff; }
.message-card.urgent { border-left-color: #f04438; }
.message-card.urgent .station-head strong { color: #b42318; }
.message-card p { margin: 6px 0 8px; white-space: pre-wrap; font-size: 0.8125rem; line-height: 1.55; }
.checkbox-line { display: flex; align-items: center; gap: 8px; grid-column: 1 / -1; font-weight: 700; font-size: 0.8125rem; }
.checkbox-line input { width: 20px; height: 20px; min-height: 0; flex: 0 0 auto; }
#messageBody { min-height: 76px; resize: vertical; line-height: 1.5; }

/* 왼쪽 메뉴 안읽음 표시 */
.nav-badge {
  margin-left: auto; background: #d92d20; color: #fff;
  font-size: 0.6875rem; font-weight: 900; padding: 1px 6px; border-radius: 999px; min-height: 0;
}
.sidebar-nav [data-nav="messages"] { display: flex; align-items: center; gap: 8px; }

/* ============================================================
   현황 맨 위 — 이 달 매출·마진 (2026-08-23)
   ============================================================ */
.trend-panel {
  background: #fff; border: 1px solid var(--line); border-radius: 14px;
  padding: 14px 16px; margin-bottom: 12px; box-shadow: 0 2px 8px #1018280a;
}
.trend-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 10px; }
.trend-head h2 { margin: 0; font-size: 0.9375rem; }

.trend-kpis { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin-bottom: 12px; }
.trend-kpi {
  display: flex; flex-direction: column; gap: 1px;
  border: 1px solid var(--line); border-left: 4px solid var(--blue);
  border-radius: 12px; padding: 8px 11px; background: #fbfcfe;
}
.trend-kpi span { font-size: 0.6875rem; font-weight: 700; color: var(--muted); }
.trend-kpi strong { font-size: 1rem; font-weight: 900; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.trend-kpi small { font-size: 0.6875rem; color: var(--muted); }
.trend-kpi.warn { border-left-color: #f79009; }

.trend-body { display: grid; gap: 14px; }
.panel-label { margin: 0 0 6px; font-size: 0.6875rem; font-weight: 800; color: var(--muted); }

/* 일별 매출 막대 */
.trend-chart { display: flex; align-items: flex-end; gap: 3px; height: 110px; padding-bottom: 16px; position: relative; }
.trend-bar {
  flex: 1 1 0; min-width: 4px; background: linear-gradient(180deg, #84adff, #155eef);
  border-radius: 3px 3px 0 0; position: relative; cursor: default;
}
.trend-bar i { position: absolute; bottom: -15px; left: 0; right: 0; text-align: center; font-size: 0.6875rem; font-style: normal; color: var(--muted); }
.trend-bar:nth-child(even) i { visibility: hidden; }
.trend-bar:hover { background: #155eef; }

/* 주유소 순위 */
.trend-rank { display: grid; gap: 4px; }
.trend-rank-row {
  all: unset; box-sizing: border-box; cursor: pointer;
  display: grid; grid-template-columns: 20px minmax(56px, 1fr) 2fr auto;
  align-items: center; gap: 8px; padding: 6px 8px; border-radius: 9px;
}
.trend-rank-row:hover { background: #f4f7fc; }
.rank-no { font-size: 0.6875rem; font-weight: 900; color: var(--muted); text-align: center; }
.rank-name { font-size: 0.75rem; font-weight: 800; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rank-track { height: 8px; border-radius: 999px; background: #eef1f6; overflow: hidden; }
.rank-track i { display: block; height: 100%; border-radius: 999px; background: var(--blue); }
.rank-value { font-size: 0.75rem; font-weight: 900; font-variant-numeric: tabular-nums; white-space: nowrap; }
.rank-value em { font-style: normal; margin-left: 6px; color: #0a8f5b; font-size: 0.6875rem; }
.trend-note { margin-top: 10px; }

@media (min-width: 960px) {
  .trend-kpis { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .trend-body { grid-template-columns: minmax(0, 3fr) minmax(0, 2fr); }
  .trend-chart { height: 130px; }
}

/* 준비 상태 패널 (2026-08-23) */
.ready-panel { border: 1px solid var(--line); border-radius: 12px; padding: 12px 14px; margin-bottom: 12px; background: #fbfcfe; }
.ready-panel h3 { margin: 0; font-size: 0.875rem; }
.ready-panel .card-list { gap: 6px; margin-top: 8px; }

/* 앱 설치 버튼 — 이미 설치된 기기에서는 문구만 바꿔 계속 보여준다 */
.app-install-button.installed { opacity: .75; }


/* ============================================================
   유종 표시 — 색 동그라미 + 이름 (2026-08-23)
   색맹이신 분도 이름으로 알 수 있어야 하므로 이름을 반드시 같이 쓴다.
   ============================================================ */
.fuel-dot {
  display: inline-block; width: 10px; height: 10px; border-radius: 50%;
  background: var(--fuel-etc); flex: 0 0 auto;
  box-shadow: 0 0 0 1px #00000018;
}
.fuel-dot.hi   { background: var(--fuel-hi); }
.fuel-dot.reg  { background: var(--fuel-reg); }
.fuel-dot.die  { background: var(--fuel-die); }
.fuel-dot.urea { background: var(--fuel-urea); }

.fuel-name { display: inline-flex; align-items: center; gap: 6px; }

/* 유종 범례 — 달력·재고 화면 위에 한 줄 */
.fuel-legend {
  display: flex; flex-wrap: wrap; align-items: center; gap: 12px;
  font-size: 0.6875rem; font-weight: 700; color: var(--muted);
}
.fuel-legend span { display: inline-flex; align-items: center; gap: 5px; }

/* ============================================================
   달력 보강 (2026-08-23) — 구서버 실무 기능 복원
   ============================================================ */
.calendar-legendbar {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between;
  gap: 10px; margin: 0 2px 8px;
}

/* 환산수량 ↔ 부피량 전환 */
.qty-switch {
  display: inline-flex; background: #eef1f6; border-radius: 999px; padding: 3px; gap: 2px;
}
.qty-option {
  all: unset; box-sizing: border-box; cursor: pointer;
  padding: 7px 14px; border-radius: 999px; min-height: 34px;
  display: inline-flex; align-items: center;
  font-size: 0.75rem; font-weight: 800; color: var(--muted);
}
.qty-option.active { background: #fff; color: var(--text); box-shadow: 0 1px 3px #10182814; }

/* 일정 단계 3색 */
.ev-dot {
  display: inline-block; width: 7px; height: 7px; border-radius: 50%;
  background: #2A4F78; flex: 0 0 auto;
}
.ev-dot.plan { background: #2A4F78; }
.ev-dot.doing { background: #B8791A; }
.ev-dot.done { background: #8A939C; }
.ev-dot.cancelled { background: #C4C8CE; }

.badge.calendar-event { display: inline-flex; align-items: center; gap: 5px; }
.badge.calendar-event.plan { background: #EEF3F9; color: #25476E; }
.badge.calendar-event.doing { background: #FBF3E4; color: #8A5B12; }
.badge.calendar-event.done { background: #F2F4F6; color: #5B6672; text-decoration: line-through; }
.badge.calendar-event.cancelled { background: #F2F4F6; color: #98A2AC; text-decoration: line-through; opacity: .7; }

/* 입고 뱃지에 유종 점 하나 더 */
.supplier-badge .fuel-dot { width: 7px; height: 7px; }

/* 눌러서 고정되는 툴팁 — 폰에는 마우스가 없다 */
.cal-tip {
  position: fixed; z-index: 200; max-width: 260px;
  background: #17212B; color: #fff; border-radius: 9px;
  padding: 9px 11px; font-size: 0.75rem; line-height: 1.5; font-weight: 600;
  white-space: pre-line; box-shadow: 0 10px 30px #10182833;
  pointer-events: none;
}

@media (max-width: 680px) {
  .calendar-legendbar { flex-direction: column; align-items: stretch; }
  .qty-switch { align-self: flex-start; }
}

/* 현황 안의 주유소별 — 메뉴가 한 단계 더 들어간다 */
@media (min-width: 960px) {
  .nav-group-sub { margin-left: 0; }
  .nav-group-sub > .nav-group-head { font-size: 0.8125rem; font-weight: 600; padding: 9px 12px; }
  .nav-group-sub .nav-children { margin-left: 10px; }
  .nav-group-sub .nav-child { font-size: 0.75rem; padding: 8px 12px; }
}

/* ============================================================
   보고 현황 신호등 (2026-08-23) — 8/16 시안 대표화면
   ============================================================ */
.report-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 12px; margin-bottom: 12px; flex-wrap: wrap; }
.report-head h2 { margin: 0; font-size: 1rem; }
.report-head-right { display: flex; align-items: center; gap: 8px; }
.report-head-right input[type="date"] { min-height: 38px; width: 158px; }

.report-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 10px; }
.report-card {
  background: #fff; border: 1px solid var(--line); border-radius: 14px;
  padding: 13px 14px; box-shadow: 0 2px 8px #1018280a;
}
.report-card-head { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; margin-bottom: 10px; }
.report-card-head strong { font-size: 0.875rem; }
.report-sales { font-size: 1rem; font-weight: 900; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }

.report-line {
  all: unset; box-sizing: border-box; width: 100%;
  display: flex; align-items: center; gap: 8px;
  padding: 9px 11px; border-radius: 10px; margin-bottom: 6px;
  font-size: 0.8125rem; font-weight: 700; min-height: 42px; cursor: pointer;
}
.report-line:last-child { margin-bottom: 0; }
.report-line.done { background: #E7F3ED; color: #1B7A50; border: 1px solid #C4E4D4; }
.report-line.done:hover { background: #DCEDE4; }
.report-line.missing { background: #FBEDEB; color: #B3402F; border: 1px solid #F0CFC9; cursor: default; }
.report-label { flex: 1; }
.report-state { font-weight: 800; font-size: 0.75rem; }
.report-go { opacity: .6; font-weight: 900; }

/* ============================================================
   탱크 액량계 (2026-08-23) — 8/16 시안 · gas-ui.css 이식
   ============================================================ */
.tank-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(168px, 1fr)); gap: 10px; margin: 10px 0 12px; }
.tank-card {
  background: #fff; border: 1px solid var(--line); border-radius: 14px;
  padding: 12px 13px; box-shadow: 0 2px 8px #1018280a;
  display: flex; flex-direction: column; gap: 9px;
}
.tank-card.bad { border-color: #F0CFC9; background: #FFFBFA; }
.tank-top { display: flex; flex-direction: column; gap: 3px; }
.tank-top strong { font-size: 0.8125rem; }
.tank-top .fuel-name { font-size: 0.75rem; color: var(--muted); font-weight: 700; }

.tank-body { display: flex; align-items: flex-end; gap: 11px; }
.tank-vessel {
  position: relative; width: 46px; height: 74px; flex: 0 0 auto;
  border-radius: 9px 9px 14px 14px; background: #EEF1F5;
  box-shadow: inset 0 2px 6px #00000024, inset 0 -2px 0 #ffffff18;
  overflow: hidden;
}
.tank-fill {
  position: absolute; left: 0; right: 0; bottom: 0;
  transition: height .5s cubic-bezier(.2,.8,.2,1);
}
.tank-safety-line { position: absolute; left: 0; right: 0; height: 2px; background: #B3402F; opacity: .8; }

.tank-figures { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.tank-figures strong { font-size: 1rem; font-weight: 900; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.tank-figures strong em { font-style: normal; font-size: 0.6875rem; font-weight: 700; color: var(--muted); margin-left: 1px; }
.tank-figures span { font-size: 0.6875rem; color: var(--muted); }
.tank-figures b { font-size: 0.8125rem; font-weight: 900; }
.tank-figures .badge { align-self: flex-start; margin-top: 3px; }

.tank-foot { display: flex; flex-wrap: wrap; gap: 8px; font-size: 0.6875rem; color: var(--muted); border-top: 1px solid var(--line); padding-top: 7px; }

.tank-totals { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 8px; }
.tank-total { background: #fff; border: 1px solid var(--line); border-radius: 12px; padding: 10px 12px; }
.tank-total .fuel-name { font-size: 0.6875rem; font-weight: 700; color: var(--muted); }
.tank-total strong { display: block; font-size: 1rem; font-weight: 900; margin-top: 2px; font-variant-numeric: tabular-nums; }
.tank-total small { font-size: 0.6875rem; color: var(--muted); }

.badge.warn { background: #FBF3E4; color: #B8791A; }


/* ============================================================
   글자 크기 배율 (2026-08-23 도입 → 2026-08-24 실제로 작동하게 고침)
   ------------------------------------------------------------
   [고친 내용] 예전에는 body 에만 배율을 걸어놨는데, 화면 안의 글씨는
   전부 px 로 크기가 못박혀 있어서 가+ / 가− 를 눌러도 아무것도 안 커졌다.
   이제 모든 글씨 크기를 rem(뿌리 글자크기의 배수)으로 바꿔서,
   여기 :root 한 줄만 바꾸면 화면 전체 글씨가 같이 커지고 작아진다.

   뿌리를 16px 로 고정하는 이유: rem 계산의 기준점이라 PC/폰이 달라지면
   같은 카드가 화면마다 다른 크기로 보인다. 밀도 조절은 글자가 아니라
   여백(padding·gap)으로 잡는다 — 아래 '화면 밀도' 블록 참고.
   ============================================================ */
:root { font-size: calc(16px * var(--z)); }

.zoom-switch { display: inline-flex; background: #edf2f8; border-radius: 999px; padding: 3px; gap: 2px; }
.zoom-option {
  all: unset; box-sizing: border-box; cursor: pointer;
  min-width: 34px; min-height: 34px; padding: 0 10px; border-radius: 999px;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 0.75rem; font-weight: 800; color: var(--muted);
}
.zoom-option.active { background: #fff; color: var(--text); box-shadow: 0 1px 3px #10182814; }

/* ============================================================
   마감일지 = 엑셀 그대로 (2026-08-23)
   8/17 구현본(gas-ui.css)의 색 규칙을 그대로 옮겼다.
   크림색 = 채우는 곳 · 회색 = 자동계산 · 크림+이중선 = 합계
   ============================================================ */
.sheet-toolbar {
  display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-bottom: 10px;
}
.sheet-toolbar select { width: auto; min-width: 150px; }
.sheet-daynav { display: flex; align-items: center; gap: 6px; }
.sheet-daynav input[type="date"] { width: 158px; }
.sheet-actions { margin-left: auto; display: flex; gap: 8px; }

.sheet-flags { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 10px; }
.sheet-flag {
  font-size: 0.6875rem; font-weight: 800; padding: 5px 11px; border-radius: 999px;
  background: #EEF3F9; color: #25476E; border: 1px solid #D6E2EF;
}
.sheet-flag.cream { background: #FFFDF3; color: #8A6212; border-color: #E3C77A; }
.sheet-flag.gray { background: #F2F4F6; color: #5B6672; border-color: #E0E4E9; }
.sheet-flag.ok { background: #E7F3ED; color: #1B7A50; border-color: #C4E4D4; }
.sheet-flag.bad { background: #FBEDEB; color: #B3402F; border-color: #F0CFC9; }

.sheet-wrap {
  border: 1px solid var(--s6); border-radius: 10px; overflow: auto;
  background: #fff; -webkit-overflow-scrolling: touch;
}
.sheet-table { width: 100%; border-collapse: collapse; font-size: 0.75rem; }
.sheet-table th, .sheet-table td {
  border-right: 1px solid #E4EBF1; border-bottom: 1px solid #E4EBF1;
  padding: 6px 9px; text-align: right; white-space: nowrap;
}
.sheet-table thead th {
  background: linear-gradient(180deg, var(--s2), var(--s1));
  color: #fff; font-weight: 800; text-align: center;
  position: sticky; top: 0; z-index: 3;
}
.sheet-rowno {
  background: #F1F5F9 !important; color: var(--muted); font-weight: 800;
  text-align: center !important; width: 42px; min-width: 42px;
  position: sticky; left: 0; z-index: 2;
}
.sheet-table thead .sheet-rowno { z-index: 4; }

.sheet-band td {
  background: var(--s2); color: #fff; font-weight: 800;
  text-align: left; letter-spacing: -.01em;
}
.sheet-head { background: #F5F9FD; font-weight: 800; color: var(--s1); text-align: center; }
.sheet-name { text-align: left; font-weight: 800; color: var(--s1); background: #F9FBFD; }
.sheet-input { background: #FFFDF3; box-shadow: inset 0 0 0 1px #E3C77A; font-weight: 700; }
.sheet-empty { color: #98A2AC; text-align: left; font-weight: 600; }
.sheet-total td { background: #FFF6E8; font-weight: 800; border-top: 2px double var(--s2); }
.sheet-ok { color: #1B7A50; font-weight: 800; }
.sheet-bad { color: #B3402F; font-weight: 800; }
.sheet-table .num { font-variant-numeric: tabular-nums; }

/* 아래쪽 엑셀 시트 탭 */
.sheet-tabbar {
  display: flex; gap: 3px; margin-top: 12px; padding: 0 4px;
  border-top: 2px solid var(--s2); overflow-x: auto; -webkit-overflow-scrolling: touch;
}
.sheet-tab {
  all: unset; box-sizing: border-box; cursor: pointer; flex: 0 0 auto;
  padding: 9px 16px; min-height: 40px; display: inline-flex; align-items: center;
  border-radius: 0 0 9px 9px;
  background: #E8EEF5; color: var(--s2); font-size: 0.75rem; font-weight: 800;
  border: 1px solid var(--s6); border-top: 0;
}
.sheet-tab.active { background: var(--s2); color: #fff; border-color: var(--s2); }
.sheet-tab:hover:not(.active) { background: #DCE6F0; }

@media (max-width: 680px) {
  .sheet-toolbar { flex-direction: column; align-items: stretch; }
  .sheet-actions { margin-left: 0; }
  .sheet-table { font-size: 0.6875rem; }
  .sheet-table th, .sheet-table td { padding: 5px 7px; }
}

/* ============================================================
   백업·복구 화면 정리 (2026-08-23)
   순서대로 1 → 2, 마지막 버튼만 강조. 모양은 전부 같게.
   ============================================================ */
.step-block {
  background: #fff; border: 1px solid var(--line); border-radius: 14px;
  padding: 15px 17px; margin-bottom: 12px; box-shadow: 0 2px 8px #1018280a;
}
.step-head { display: flex; align-items: flex-start; gap: 11px; margin-bottom: 12px; }
.step-head h3 { margin: 0 0 2px; font-size: 0.9375rem; }
.step-head .form-help { margin: 0; }
.step-no {
  flex: 0 0 auto; width: 26px; height: 26px; border-radius: 50%;
  background: var(--s2); color: #fff; font-weight: 900; font-size: 0.8125rem;
  display: grid; place-items: center;
}

/* 백업 두 갈래 */
.backup-choice { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 10px; }
.backup-kind {
  border: 1px solid var(--line); border-left: 4px solid var(--s4);
  border-radius: 12px; padding: 13px 14px; background: #FBFCFE;
  display: flex; flex-direction: column; gap: 7px;
}
.backup-kind.full { border-left-color: var(--s1); background: #F6F9FC; }
.backup-kind h4 { margin: 0; font-size: 0.875rem; color: var(--s1); }
.backup-kind p { margin: 0; font-size: 0.75rem; line-height: 1.6; color: var(--muted); }
.backup-kind-note { color: var(--s3) !important; font-weight: 700; }
.backup-kind .quiet, .backup-kind .primary { align-self: flex-start; margin-top: 2px; }

/* 경고 박스 */
.warn-box {
  display: flex; flex-direction: column; gap: 5px;
  border: 1px solid #F0CFC9; border-left: 4px solid #B3402F;
  background: #FDF6F4; border-radius: 12px; padding: 12px 14px; margin-bottom: 13px;
}
.warn-box strong { font-size: 0.8125rem; color: #B3402F; }
.warn-box span { font-size: 0.75rem; line-height: 1.65; color: #6C4A44; }
.warn-box b { color: #8A2E22; }
.restore-warn { border-left-color: #B8791A; border-color: #EFDCC0; background: #FDFAF3; margin: 12px 0; }
.restore-warn strong { color: #8A5B12; }
.restore-warn span { color: #6B5836; }
.restore-warn b { color: #6B4A08; }

/* 입력칸 번호 */
.field-no {
  display: inline-grid; place-items: center; width: 17px; height: 17px;
  border-radius: 50%; background: #E4EDF6; color: var(--s2);
  font-size: 0.6875rem; font-weight: 900; margin-right: 5px; vertical-align: -2px;
}

/* 마지막 단계 안내 + 버튼 줄 */
.install-final {
  border-top: 1px solid var(--line); margin-top: 13px; padding-top: 13px;
}
.install-final-text {
  font-size: 0.75rem; line-height: 1.7; color: var(--muted); margin-bottom: 11px;
}
.install-final-text strong { color: var(--text); }
.install-final-text code {
  background: #F1F5F9; border-radius: 5px; padding: 1px 6px;
  font-size: 0.75rem; font-family: ui-monospace, Menlo, Consolas, monospace;
}

/* 버튼 모양을 같게 — 마지막 것만 색으로 강조 */
.install-final .button-row .quiet,
.install-final .button-row .primary,
.step-block .button-row .quiet,
.step-block .button-row .primary {
  min-height: 42px; padding: 10px 18px; border-radius: 11px;
  font-size: 0.8125rem; font-weight: 800;
}

/* 복구 — 자동 인식 결과 */
.restore-kind {
  border: 1px solid var(--line); border-left: 4px solid var(--s4);
  background: #F7FAFD; border-radius: 12px; padding: 12px 14px; margin: 11px 0;
}
.restore-kind.full { border-left-color: var(--s1); }
.restore-kind.data { border-left-color: var(--s4); }
.restore-kind.server { border-left-color: #B8791A; background: #FDFAF3; }
.restore-kind.bad { border-left-color: #B3402F; background: #FDF6F4; }
.restore-kind-tag {
  display: inline-block; font-size: 0.6875rem; font-weight: 800; color: #fff;
  background: var(--s3); border-radius: 999px; padding: 2px 9px; margin-bottom: 6px;
}
.restore-kind.server .restore-kind-tag { background: #B8791A; }
.restore-kind.bad .restore-kind-tag { background: #B3402F; }
.restore-kind strong { display: block; font-size: 0.9375rem; color: var(--s1); }
.restore-kind p { margin: 4px 0 0; font-size: 0.75rem; line-height: 1.6; color: var(--muted); }
.restore-kind small { display: block; margin-top: 6px; font-size: 0.6875rem; color: var(--muted); }

@media (max-width: 680px) {
  .backup-choice { grid-template-columns: 1fr; }
  .install-final .button-row { flex-direction: column; }
  .install-final .button-row button { width: 100%; }
}

/* ============================================================
   어디서든 바로 올리기 (2026-08-24 위치 정리)

   · PC  — 왼쪽 메뉴 "맨 아래"에 붙인다. 손이 제일 자주 가는 자리.
   · 폰  — 화면 맨 바닥에 붙인다. 그 아래에는 아무것도 두지 않는다.
           대신 메뉴를 위로 올려서, 자주 쓰는 올리기가 엄지 자리를 차지한다.
   ============================================================ */
.quick-upload { display: none; }

@media (min-width: 960px) {
  .quick-upload {
    display: flex; flex-direction: column; gap: 6px;
    margin-top: auto;                 /* 메뉴가 짧아도 항상 맨 아래 */
    padding: 12px 2px 2px;
    border-top: 1px solid #ffffff1f;
  }
  .quick-btn {
    all: unset; box-sizing: border-box; cursor: pointer;
    display: flex; align-items: center; gap: 10px;
    padding: 10px 11px; border-radius: 11px; min-height: 48px;
    background: #ffffff12; border: 1px solid #ffffff1f; color: var(--sidebar-ink);
  }
  .quick-btn:hover { background: #ffffff1f; border-color: #ffffff33; }
  .quick-btn.camera { background: var(--accent); border-color: var(--accent); color: var(--accent-ink); }
  .quick-btn.camera:hover { filter: brightness(1.05); }
  .quick-btn .quick-icon { font-size: 1rem; line-height: 1; flex: 0 0 auto; }
  .quick-btn span > strong { display: block; font-size: 0.8125rem; font-weight: 800; }
  .quick-btn span > small { display: block; font-size: 0.6875rem; opacity: .8; margin-top: 1px; }
  .quick-btn.camera span > small { opacity: .7; }
}

/* 폰 — 화면 맨 바닥. 아래에 아무것도 없다. */
.quick-upload-bar {
  position: fixed; left: 0; right: 0; bottom: 0;
  z-index: 40; display: flex; gap: 7px;
  padding: 8px 10px calc(8px + env(safe-area-inset-bottom));
  background: #fff; border-top: 1px solid var(--line);
  box-shadow: 0 -8px 26px #1d293914;
}
.quick-bar-btn {
  all: unset; box-sizing: border-box; cursor: pointer;
  flex: 1; min-height: 48px; border-radius: 12px;
  display: flex; align-items: center; justify-content: center; gap: 5px;
  font-size: 0.8125rem; font-weight: 800;
  background: #EEF3F9; color: var(--s2); border: 1px solid #D6E2EF;
}
.quick-bar-btn.camera { background: var(--accent); color: var(--accent-ink); border-color: var(--accent); }
/* PC 에서는 이 줄을 쓰지 않는다 (왼쪽 메뉴 아래에 있으므로) */
@media (min-width: 960px) { .quick-upload-bar { display: none; } }

/* ============================================================
   폰 메뉴 — 2단 가로 (2026-08-24)

   원래 화면 아래에 있던 메뉴를 위로 올린 것이다.
   1단을 누르면 하위가 바로 밑 2단 칸에 "옆으로" 늘어선다.
   아래로 펼쳐지는 판이 아니다 — 화면을 가리지 않는다.

   화면 아래는 사진·파일 올리기가 통째로 쓴다.
   엄지가 닿는 자리는 제일 자주 하는 일이 가져가는 것이 맞다.
   ============================================================ */
.phone-nav { display: none; }

@media (max-width: 959px) {
  .bottom-nav { display: none !important; }
  .sidebar-nav { display: none !important; }

  .phone-nav {
    display: block;
    position: sticky; top: 67px; z-index: 28;
    background: var(--sidebar-bg);
    box-shadow: 0 4px 14px #0f294226;
  }
  .phone-nav-row {
    display: flex; gap: 2px;
    overflow-x: auto; -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    padding: 5px 8px;
  }
  .phone-nav-row::-webkit-scrollbar { display: none; }
  .phone-nav-row.sub {
    background: #ffffff14;
    border-top: 1px solid #ffffff1f;
    padding: 4px 8px;
  }
  .phone-nav-item {
    all: unset; box-sizing: border-box; cursor: pointer;
    flex: 0 0 auto; white-space: nowrap;
    min-height: 40px; padding: 0 14px; border-radius: 10px;
    display: inline-flex; align-items: center;
    color: var(--sidebar-muted); font-size: 0.8125rem; font-weight: 700;
  }
  .phone-nav-row.sub .phone-nav-item { min-height: 36px; font-size: 0.75rem; padding: 0 12px; }
  .phone-nav-item.active {
    background: var(--accent); color: var(--accent-ink); font-weight: 800;
  }
  .phone-nav-row.sub .phone-nav-item.active { background: #fff; color: var(--s1); }

  /* 본문 아래 여백 — 맨 밑 올리기 줄 자리만큼만 */
  main { padding-bottom: 84px; }
}

/* ============================================================
   폰 올리기 — 화면 맨 바닥에 딱 붙는 직사각형 두 칸
   틈 없이 반반. 그 아래에는 아무것도 없다.
   ============================================================ */
.quick-upload-bar {
  position: fixed; left: 0; right: 0; bottom: 0;
  z-index: 40; display: flex; gap: 0;
  padding: 0 0 env(safe-area-inset-bottom);
  background: #fff; border-top: 1px solid var(--line);
  box-shadow: 0 -6px 20px #1d293914;
}
.quick-bar-btn {
  all: unset; box-sizing: border-box; cursor: pointer;
  flex: 1 1 50%; min-height: 58px; border-radius: 0;
  display: flex; align-items: center; justify-content: center; gap: 6px;
  font-size: 0.875rem; font-weight: 800;
}
.quick-bar-btn.camera { background: var(--accent); color: var(--accent-ink); }
.quick-bar-btn.file { background: var(--s2); color: #fff; }
@media (min-width: 960px) { .quick-upload-bar { display: none; } }


/* ════════════════════════════════════════════════════════════
   화면 밀도 최적화 (2026-08-24)
   ------------------------------------------------------------
   [왜] 한 화면에 들어가는 정보가 너무 적었다. 원인은 글자가 아니라
   여백이었다 — 카드마다 17px 안쪽 여백 + 12px 사이 간격 + 28px 화면
   가장자리 여백이 겹쳐서, 실제 내용이 쓰는 자리가 절반도 안 됐다.

   [방식] 글자 크기는 거의 그대로 두고(읽기 힘들어지면 안 되니까)
   여백·모서리·간격만 한 단계씩 줄였다. 대신 줄인 만큼 열을 늘려서
   같은 화면에 카드가 더 들어가게 했다.

   [지킨 것] 폰에서 손가락으로 누르는 것(버튼·입력칸)은 44px 아래로
   절대 안 내려가게 막아뒀다. 빽빽하게 만든다고 못 누르면 소용없다.

   [순서] 이 블록은 파일 맨 끝이라 앞의 규칙을 덮어쓴다. 밀도를 다시
   조절할 일이 생기면 앞을 뒤지지 말고 여기만 고치면 된다.
   ════════════════════════════════════════════════════════════ */

/* ── 모서리 둥글기: 22·17·16·15·13·9 로 제각각이던 것을 4단계로 통일 ── */
.form-card            { border-radius: 14px; }
.form-card.compact    { border-radius: 12px; padding: 13px 14px; }
.station-card,
.metric,
.kpi                  { border-radius: 12px; }

/* ── 화면 가장자리 여백 ── */
#mainContent { padding: 14px 14px 84px; }

/* ── 제목 줄: 25px + 아래여백이 화면 위쪽을 너무 많이 먹고 있었다 ── */
.page-title            { gap: 10px; align-items: center; }
.page-title h1         { font-size: 1.25rem; margin: 0 0 2px; }
.page-title p          { font-size: 0.8125rem; margin: 0; }

/* ── 요약 숫자 카드(KPI) ── */
.metric-grid  { gap: 8px; margin: 8px 0 12px; }
.metric       { padding: 11px 12px; }
.metric span  { font-size: 0.75rem; }
.metric strong{ font-size: 1.375rem; margin-top: 3px; }
.kpi-row      { gap: 8px; margin: 8px 0 12px; }
.kpi          { padding: 10px 11px; gap: 4px; }
.kpi-icon     { width: 26px; height: 26px; border-radius: 8px; font-size: 0.875rem; }

/* ── 주유소·목록 카드 ── */
.card-list    { gap: 8px; }
.station-card { padding: 12px 13px; gap: 7px; }
.station-card.compact-row { padding: 7px 10px; }

/* ── 입력 폼: 2열 사이 간격만 있고 위아래가 붕 떠 있었다 ── */
.form-grid    { gap: 0 12px; }
.toolbar      { gap: 8px; margin-bottom: 9px; }

/* ── 폰: 손가락 크기 확보 (밀도보다 우선) ── */
@media (max-width: 959px) {
  button,
  .btn,
  select,
  input:not([type="checkbox"]):not([type="radio"]) { min-height: 44px; }
  /* 카드 안에 촘촘히 들어가는 작은 버튼까지 44px 로 키우면 카드가 터진다 */
  .station-card button.quiet,
  .badge,
  .chip,
  .zoom-option { min-height: 0; }
}

/* ── PC: 남는 가로폭을 열 수로 바꾼다 (여기가 정보량이 가장 많이 는다) ── */
@media (min-width: 960px) {
  #mainContent  { margin-left: 240px; padding: 18px 22px 48px; max-width: none; }
  .metric-grid  { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .card-list    { grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); }
  .kpi-row      { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .page-title h1{ font-size: 1.375rem; }
}
@media (min-width: 1440px) {
  #mainContent  { padding: 20px 28px 48px; }
  .metric-grid  { grid-template-columns: repeat(6, minmax(0, 1fr)); }
  .card-list    { grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
  .kpi-row      { grid-template-columns: repeat(6, minmax(0, 1fr)); }
}

/* ════════════════════════════════════════════════════════════
   달력·상단바 밀도 수정 (2026-08-24) — 실제로 띄워서 재보고 고친 것
   ------------------------------------------------------------
   [폰에서 발견한 진짜 버그]
   .calendar-summary 에 flex:1 1 380px 이 걸려 있었다. PC 에서는 가로로
   놓이니 "가로 380px" 이라 문제가 없었는데, 폰에서는 .calendar-topbar 가
   flex-direction:column 으로 바뀐다. 그러면 380px 이 '세로'가 되면서
   숫자 4개짜리 요약칸이 380px 짜리 빈 상자로 부풀었다.
   달력을 보려면 그 빈 상자를 지나 한참 내려야 했다.
   → 폰에서는 내용만큼만 차지하게 flex:0 0 auto 로 바꾼다. (약 270px 절약)

   [PC 달력 칸]
   빈 칸 하나가 124px 였다. 6줄이면 779px — 900px 짜리 화면에서 한 달이
   한눈에 안 들어오고 스크롤을 해야 했다. 84px 로 줄이면 그대로 다 들어온다.
   (날짜 + 뱃지 2~3개는 84px 안에서 충분히 보인다)
   ════════════════════════════════════════════════════════════ */

/* 폰: 요약칸이 세로로 부풀지 않게 (가장 큰 낭비였다) */
@media (max-width: 680px) {
  .calendar-summary { flex: 0 0 auto; }
  .cal-kpi { padding: 7px 10px; }
  /* '오늘' 이 세로로 쪼개져 보이던 것 — 글자를 안 자르게 한다 */
  .calendar-move .quiet { white-space: nowrap; min-width: 52px; }
}

/* 폰 상단바: 제목이 두 줄로 깨지고 버튼이 너무 컸다 */
@media (max-width: 680px) {
  .topbar { padding: 7px 10px; }
  .topbar-title strong { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .top-actions button { padding: 0 8px; min-height: 32px; font-size: 0.75rem; }
  .zoom-switch { display: none; } /* 폰은 브라우저 자체 확대를 쓰는 게 편하다 */
}

/* 달력 칸 높이 — 한 달이 한 화면에 들어오도록 */
@media (min-width: 960px) {
  .calendar-grid > div,
  .calendar-day { min-height: 84px; padding: 10px 8px 7px; }
  .calendar-grid { gap: 6px; }
}
@media (max-width: 680px) {
  .calendar-grid > div,
  .calendar-day { min-height: 62px; padding: 9px 4px 4px; gap: 2px; }
  .calendar-grid { gap: 4px; }
}

/* 폰: flex:0 0 auto 로 바꾸면 너비를 '내용만큼'으로 잡아서 화면 밖으로
   삐져나간다(오른쪽 카드가 잘려 보였다). 세로만 줄이고 가로는 꽉 채운다. */
@media (max-width: 680px) {
  .calendar-summary,
  .calendar-move { width: 100%; box-sizing: border-box; }
  .calendar-move input[type="month"] { min-width: 0; }
}

/* 아주 좁은 폰(360px)에서 달 이동줄이 20px 정도 삐져나갔다.
   화살표 버튼만 좁히면 들어온다 — 손가락 높이(44px)는 그대로 지킨다. */
@media (max-width: 400px) {
  .calendar-move { gap: 4px; }
  .calendar-move .quiet { min-width: 40px; padding: 8px 6px; }
  .calendar-move #calendarToday { min-width: 46px; }
}

/* 360px 폰에서 상단 버튼 5개가 한 줄에 안 들어가 '로그아웃'이 잘렸다.
   줄바꿈을 허용해 잘리지 않게 한다 — 잘려서 못 누르는 것보다 낫다. */
@media (max-width: 400px) {
  .top-actions { flex-wrap: wrap; justify-content: flex-end; gap: 4px; }
  .top-actions button { padding: 0 7px; }
}

/* ════════════════════════════════════════════════════════════
   엑셀식 각진 모양 (2026-08-24)
   ------------------------------------------------------------
   [요청] 메뉴판은 그대로 두고, 달력·카드 같은 것들이 둥글어 보이니
   엑셀처럼 평평한 네모로 만들어 달라.

   [방식] 모서리 둥글기만 없앤다. 색·여백·글자는 그대로다.
   표(엑셀)는 칸이 각져야 줄이 맞아 보이고, 칸 경계도 또렷해진다.

   [남겨둔 것]
     · 메뉴판(사이드바) — 지금 모양이 괜찮다고 하셔서 그대로 둔다
     · 동그란 뱃지·알림 숫자·글자크기 스위치 — 원래 동그란 것이
       정보(개수·상태)를 나타내는 표시라 네모로 만들면 뜻이 흐려진다
   ════════════════════════════════════════════════════════════ */
.calendar-grid > div,
.calendar-day,
.station-card,
.metric,
.kpi,
.cal-kpi,
.form-card,
.form-card.compact,
.card-list > article,
.empty-card,
.trend-panel,
.overview-panel,
.step-block,
.document-viewer,
.recognition-dialog,
.password-dialog,
.search-dialog,
table, thead, tbody, tr, th, td,
input:not([type="checkbox"]):not([type="radio"]),
select,
textarea,
.toolbar > *,
.tab-button,
.btn,
button.primary,
button.quiet,
.station-card-bar,
.station-card-bar i,
.day-flag {
  border-radius: 0 !important;
}

/* 표처럼 보이도록 칸 경계를 또렷하게 (엑셀 느낌의 핵심) */
.calendar-grid { gap: 0; border: 1px solid var(--line); background: var(--line); }
.calendar-grid > div,
.calendar-day { border: none; outline: 1px solid var(--line); outline-offset: 0; }
.calendar-weekdays { gap: 0; }
.calendar-weekday {
  border: 1px solid var(--line); border-bottom: none;
  background: var(--sunken, #eef2f7);
}

/* 카드가 붙어 보이지 않게 최소한의 간격은 남긴다 */
.card-list { gap: 6px; }
.metric-grid, .kpi-row { gap: 6px; }

/* 달력·카드 안의 이름표(뱃지)도 각지게 — 칸은 네모인데 안이 둥글면 따로 논다.
   단, '개수·상태를 나타내는 동그라미' 는 그대로 둔다:
   알림 숫자, 유종 범례 점, 오늘 날짜 표시, 비율 게이지 */
.badge,
.chip,
.qty-switch,
.qty-switch button,
.problem-chips span,
.zoom-switch,
.zoom-option,
.day-sales {
  border-radius: 0 !important;
}
/* revert 는 '브라우저 기본값(0)' 으로 되돌리는 것이라 오히려 각져버린다.
   동그래야 하는 것은 값을 직접 적어 준다. */
.notification-count,
.nav-badge,
.day-head strong { border-radius: 999px !important; }

.legend-dot,
.sw,
.metric-gauge,
.metric-gauge span { border-radius: 50% !important; }

/* 메뉴판은 지금 모양이 좋다고 하셔서 손대지 않는다 */
.sidebar-nav button[data-nav],
.sidebar-nav .nav-child,
.sidebar-nav .nav-group-head { border-radius: 8px !important; }
.sidebar-brand-mark { border-radius: 9px !important; }
.quick-btn { border-radius: 10px !important; }

/* 마감일지 기준 분석 — 매입처·유종을 나란히 (2026-08-24) */
.analysis-columns { display: grid; gap: 10px; margin-bottom: 10px; }
/* 두 표를 나란히 놓으려면 한 칸이 충분히 넓어야 한다.
   1100px 에서 나눴더니 한 칸이 450px 밖에 안 돼 표가 가로로 잘렸다.
   1400px 부터 나눈다 — 그 아래에서는 위아래로 쌓는 게 읽기 낫다. */
@media (min-width: 1400px) { .analysis-columns { grid-template-columns: 1fr 1fr; } }

/* 분석 표는 칸 수가 적다. 공용 표의 min-width:720px 를 그대로 쓰면
   좁은 칸에서 가로 스크롤이 생겨 숫자를 못 본다. 폭에 맞춰 넣는다. */
.analysis-columns .data-table { min-width: 0; }
.analysis-columns .data-table th,
.analysis-columns .data-table td { padding: 9px 8px; }
/* 유종 상세(맨 뒷칸)만 줄바꿈을 허용해 표가 넘치지 않게 한다 */
.analysis-columns .data-table td:last-child { white-space: normal; line-height: 1.35; }
.total-row td { border-top: 2px solid var(--line); background: var(--sunken, #eef2f7); }
.analysis-columns .panel { min-width: 0; }
.bar-cell { display: flex; align-items: center; gap: 7px; }
.bar-track { flex: 1 1 auto; height: 7px; background: var(--line); min-width: 40px; }
.bar-fill { display: block; height: 100%; background: var(--blue); }
.bar-fill.g1 { background: var(--fuel-hi); }
.bar-fill.g2 { background: var(--fuel-reg); }
.bar-fill.g3 { background: var(--fuel-die); }
.bar-fill.g4 { background: var(--fuel-urea); }

/* 표·패널도 각지게 (2026-08-24) — 엑셀식 통일에서 빠져 있었다 */
.panel, .table-scroll, .data-table,
.data-table th, .data-table td,
.bar-track, .bar-fill { border-radius: 0 !important; }

/* ════════════════════════════════════════════════════════════
   일자별 판매 추이 (2026-08-24)
   하루를 막대 하나로, 유종을 위아래로 쌓는다. 총량과 유종 비중을
   한 번에 본다. 색만으로 구분시키지 않는다 — 범례에 이름을 같이 적고
   막대에 올리면 이름·수량이 뜬다(이 프로젝트의 기존 원칙 그대로).
   모서리는 각지게 둔다 — 엑셀식 화면에 맞춘다.
   ════════════════════════════════════════════════════════════ */
.daily-chart-box { padding: 12px 13px 10px; }
.daily-chart {
  display: flex; align-items: flex-end; gap: 2px;
  height: 132px; margin: 10px 0 0;
  border-bottom: 1px solid var(--line);
}
.daily-col {
  flex: 1 1 0; min-width: 0; height: 100%;
  display: flex; flex-direction: column; justify-content: flex-end;
  gap: 2px;                       /* 쌓인 칸 사이 2px 틈 — 경계가 또렷해진다 */
  cursor: default; position: relative;
}
.daily-col:hover { background: #1d41660d; }
.daily-seg { display: block; width: 100%; min-height: 2px; }
.daily-seg.f1 { background: var(--fuel-hi); }
.daily-seg.f2 { background: var(--fuel-reg); }
.daily-seg.f3 { background: var(--fuel-die); }
.daily-seg.f4 { background: var(--fuel-urea); }
.daily-col.empty::after {
  content: ""; display: block; height: 2px; background: var(--line);
}
.daily-axis {
  display: flex; gap: 2px; margin-top: 5px;
  font-size: 0.6875rem; color: var(--muted); font-variant-numeric: tabular-nums;
}
.daily-axis span { flex: 1 1 0; min-width: 0; text-align: center; }
.daily-axis span.hide { visibility: hidden; }
.daily-legend { display: flex; flex-wrap: wrap; gap: 4px 14px; margin-top: 9px; font-size: 0.75rem; }
.daily-legend b { display: inline-flex; align-items: center; gap: 5px; font-weight: 700; color: var(--text); }
.daily-legend i { width: 10px; height: 10px; display: inline-block; }
.daily-legend i.f1 { background: var(--fuel-hi); }
.daily-legend i.f2 { background: var(--fuel-reg); }
.daily-legend i.f3 { background: var(--fuel-die); }
.daily-legend i.f4 { background: var(--fuel-urea); }
.daily-tip {
  position: absolute; bottom: 100%; left: 50%; transform: translateX(-50%);
  background: var(--navy, #12283F); color: #fff; padding: 7px 10px;
  font-size: 0.75rem; line-height: 1.5; white-space: nowrap; z-index: 5;
  display: none; pointer-events: none; box-shadow: 0 4px 14px #0b1c2e33;
}
.daily-col:hover .daily-tip, .daily-col:focus-within .daily-tip { display: block; }
.daily-tip em { font-style: normal; color: #cfe0f0; }

/* 늘고 줆 — 색만으로 알리지 않고 ▲▼ 기호를 같이 쓴다 (2026-08-24) */
.data-table .up   { color: var(--state-ok,  #1B7A50); font-weight: 700; }
.data-table .down { color: var(--state-bad, #B3402F); font-weight: 700; }
.muted-text { color: var(--muted); }

/* 주유소별 매입자료 · 최종마진 (2026-08-24 개편) */
.cost-calc { padding: 12px 13px 10px; }
.cost-inputs { display: grid; grid-template-columns: 1fr; gap: 12px; margin: 10px 0 0; }
.margin-card { padding: 10px 11px 8px; }
.margin-card h3 { margin: 0; font-size: 0.95rem; }
.margin-card .data-table { min-width: 0; }
.margin-card .price-cell { padding: 3px 6px; }
/* 유종 색 표시는 작은 네모 하나다 — 폭을 안 주면 칸 전체로 늘어난다 */
.margin-card .daily-seg { width: 9px; height: 9px; display: inline-block; vertical-align: middle; margin-right: 4px; }
.price-input {
  width: 100%; max-width: 110px; min-height: 34px; text-align: right;
  font-variant-numeric: tabular-nums; border: 1px solid var(--line);
  background: var(--input-bg, #fff); color: var(--text); padding: 4px 7px;
}
.price-input:focus { outline: 2px solid var(--accent); outline-offset: 1px; }
.save-state { margin: 5px 0 0; font-size: 0.72rem; color: var(--muted); min-height: 1em; }
.save-state.bad { color: var(--state-bad, #B3402F); font-weight: 700; }

.scroll-hint { display: none; margin: 4px 0 0; font-size: 0.72rem; color: var(--muted); }

/* 폰에서는 표가 옆으로 밀린다. 유종 칸을 붙여 두어야
   밀면서도 지금 어느 유종을 보고 있는지 안 놓친다. */
@media (max-width: 760px) {
  .margin-card .data-table th:first-child,
  .margin-card .data-table td:first-child {
    position: sticky; left: 0; z-index: 1;
    background: var(--panel, #fff); box-shadow: 1px 0 0 var(--line);
  }
  .margin-card .data-table tbody tr:nth-child(even) td:first-child { background: var(--row-alt, #F7F8FA); }
  .margin-card .data-table .total-row td:first-child { background: #EEF0F4; }
  .scroll-hint { display: block; }
}
.badge.warn { background: #FBF3E4; color: #B8791A; }

/* 제목줄 오른쪽 배지가 좁아져 글자가 세로로 쪼개지던 것 (2026-08-24) */
.station-head > .badge { white-space: nowrap; flex: 0 0 auto; align-self: flex-start; }


/* ROLE_ALERT_UI_V1 — 역할별 메뉴 · 실제 업무센터 · 필수알림/업무지시 */
.role-menu-root { display: grid; gap: 10px; margin: 8px 0 14px; }
.role-nav-group { display: grid; gap: 3px; }
.role-nav-label { padding: 5px 11px 2px; color: #91a9c0; font-size: .6875rem; font-weight: 800; letter-spacing: .04em; }
.role-nav-item { width: 100%; min-height: 39px; display: flex; align-items: center; gap: 8px; border: 0; border-left: 3px solid transparent; border-radius: 3px; background: transparent; color: #dce8f4; padding: 8px 11px; text-align: left; font-weight: 700; }
.role-nav-item:hover { background: rgba(255,255,255,.07); }
.role-nav-item.active { background: rgba(255,255,255,.13); border-left-color: #eda100; color: #fff; }
.role-nav-item .nav-badge { margin-left: auto; }
.work-center-stats { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 10px; margin-bottom: 12px; }
.work-stat { border: 1px solid var(--line); background: var(--panel); border-radius: 0; padding: 13px; }
.work-stat span,.work-stat small { display: block; color: var(--muted); font-size: .75rem; }
.work-stat strong { display: block; font-size: 1.65rem; margin: 4px 0; }
.work-center-layout { display: grid; grid-template-columns: minmax(0,2fr) minmax(260px,1fr); gap: 12px; align-items: start; }
.work-center-layout h2 { font-size: .95rem; margin: 0 0 8px; }
.work-shortcuts { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 7px; margin-bottom: 16px; }
.work-shortcut { min-height: 48px; border: 1px solid var(--line); background: var(--panel); border-radius: 0; font-weight: 800; }
.work-comms { border: 1px solid var(--line); background: var(--panel); }
.work-comms > div { display: flex; justify-content: space-between; gap: 10px; padding: 10px; border-bottom: 1px solid var(--line); font-size: .8rem; }
.work-comms > div:last-child { border-bottom: 0; }
.work-alert { width: 100%; text-align: left; }
/* 알림 우선순위 색: 중요=빨강, 일반=파랑 (2026-08-30 · 사장님 요청으로 확실히 구분) */
.priority-high,.priority-urgent { border-left: 4px solid #d92d20 !important; }
.priority-normal { border-left: 4px solid #1570ef !important; }
.priority-low { border-left: 4px solid #98a2b3 !important; }
.prio-chip{display:inline-block;font-size:.62rem;font-weight:900;padding:1px 7px;border-radius:999px;white-space:nowrap}
.prio-chip.imp{background:#fdecea;color:#b42318}
.prio-chip.gen{background:#e8f0fe;color:#1355c4}
.notification-filter-row { display: flex; gap: 6px; flex-wrap: wrap; margin: 8px 0 12px; }
.notification-filter { min-height: 34px; border: 1px solid var(--line); background: var(--panel); border-radius: 5px; padding: 6px 10px; font-weight: 700; }
.notification-filter.active { background: #155eef; color: #fff; border-color: #155eef; }
.notification-meta,.message-meta-line { display: flex; gap: 10px; flex-wrap: wrap; justify-content: space-between; color: var(--muted); font-size: .72rem; }
.message-type.task { background: #fff1d6; color: #935f00; }
.message-type.report { background: #e8f3ff; color: #155eef; }
.message-type.notice { background: #ecfdf3; color: #067647; }
.message-due { color: #b42318; font-weight: 800; }
.message-ack { margin-top: 8px; }
.ack-done { display: inline-block; margin-top: 8px; color: #067647; font-size: .75rem; font-weight: 800; }
.ok-card { border-left: 4px solid #12b76a; }
@media (max-width: 900px) {
  .work-center-stats { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .work-center-layout { grid-template-columns: 1fr; }
  .work-shortcuts { grid-template-columns: repeat(2,minmax(0,1fr)); }
}

/* 역할별 실제 업무센터 · 필수알림 */
.work-push-required{margin:0 0 12px;border:1px solid #9ec1f4;border-left:4px solid #1768e8;background:#eef5ff;padding:11px 12px;display:flex;align-items:center;gap:12px;justify-content:space-between}
.work-push-required strong{display:block;color:#123d68;margin-bottom:2px}.work-push-required span{display:block;font-size:.86rem;color:#52677d}.work-push-required.problem{border-color:#e7adad;border-left-color:#b42318;background:#fff2f1}.work-push-required.problem strong{color:#9b1c16}
@media(max-width:720px){.work-push-required{align-items:stretch;flex-direction:column}.work-push-required button{width:100%}}


/* ROLE_DASHBOARD_V2 — 대표·소장 중심 한눈 대시보드 (실제 API 자료만 사용) */
.role-dashboard{max-width:1500px;margin:0 auto}
.role-dashboard-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:12px}
.role-dashboard-head h1{margin:2px 0 3px;font-size:1.65rem;letter-spacing:-.035em}
.role-dashboard-head p{margin:0;color:var(--muted);font-size:.84rem}
.role-dashboard-eyebrow,.role-panel-kicker{display:block;color:#1768e8;font-size:.7rem;font-weight:900;letter-spacing:.04em}
.role-dashboard-actions{display:flex;align-items:center;gap:8px}.role-dashboard-asof{color:var(--muted);font-size:.72rem;white-space:nowrap}
.role-dashboard-kpis{gap:8px;margin-bottom:9px}.role-dashboard-kpis .work-stat{padding:10px 12px;min-height:83px;background:#fff}.role-dashboard-kpis .work-stat strong{font-size:1.48rem;line-height:1.15}.role-dashboard-kpis .work-stat.has-value{border-top:3px solid #eda100}
.role-business-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;border:1px solid var(--line);background:var(--line);margin-bottom:9px}
.role-business-strip article{min-width:0;background:#fff;padding:10px 12px}.role-business-strip span,.role-business-strip small{display:block;color:var(--muted);font-size:.7rem}.role-business-strip strong{display:block;margin:3px 0;font-size:1.05rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.role-dashboard-grid{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(310px,.75fr);gap:9px;align-items:start}
.role-dashboard-panel{background:#fff;border:1px solid var(--line);border-radius:0;padding:11px}.role-dashboard-primary{min-height:320px}.role-dashboard-side{display:grid;gap:9px}
.role-panel-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}.role-panel-head h2{margin:1px 0 0;font-size:.96rem}.text-link{border:0;background:transparent;color:#1768e8;font-size:.72rem;font-weight:850;padding:4px;white-space:nowrap}
.role-station-board{display:grid;gap:5px}.role-station-row{width:100%;display:grid;grid-template-columns:minmax(150px,1.05fr) minmax(130px,.85fr) minmax(280px,1.5fr) 18px;align-items:center;gap:8px;border:1px solid #e0e6ee;border-left:4px solid #1a7f50;background:#fff;padding:8px 9px;text-align:left}.role-station-row.needs{border-left-color:#d92d20}.role-station-row:hover{background:#f8fbff}.role-station-name{display:grid;grid-template-columns:8px 1fr;gap:1px 7px;align-items:center;min-width:0}.role-station-name i{width:7px;height:7px;border-radius:50%;background:#1a7f50;grid-row:1/3}.role-station-row.needs .role-station-name i{background:#d92d20}.role-station-name strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.84rem}.role-station-name small{color:var(--muted);font-size:.68rem}.role-station-sales small{display:block;color:var(--muted);font-size:.62rem}.role-station-sales strong{font-size:.82rem}.role-station-statuses{display:flex;gap:4px;flex-wrap:wrap}.role-status{padding:3px 6px;border-radius:999px;font-size:.62rem;font-weight:850;white-space:nowrap}.role-status.ok{background:#ecfdf3;color:#067647}.role-status.bad{background:#fff1f0;color:#b42318}.role-station-go{color:#98a2b3;font-size:1.2rem}
.role-alert-list{display:grid;gap:4px}.role-alert-row{display:grid;grid-template-columns:8px minmax(0,1fr) auto;gap:7px;align-items:start;border:0;border-bottom:1px solid #edf0f4;background:transparent;text-align:left;padding:7px 2px}.role-alert-dot{width:7px;height:7px;border-radius:50%;background:#f0a000;margin-top:4px}.role-alert-row.priority-high .role-alert-dot,.role-alert-row.priority-urgent .role-alert-dot{background:#d92d20}.role-alert-copy{min-width:0}.role-alert-copy strong,.role-alert-copy small{display:block}.role-alert-copy strong{font-size:.76rem}.role-alert-copy small{margin-top:2px;color:var(--muted);font-size:.66rem;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.role-alert-time{font-size:.61rem;color:#98a2b3;white-space:nowrap}.role-more-alerts{width:100%;border:0;background:#f7f9fc;color:#1768e8;font-size:.68rem;font-weight:850;padding:7px}
.role-comms{border:0}.role-comms button{width:100%;display:flex;justify-content:space-between;gap:9px;border:0;border-bottom:1px solid #edf0f4;background:#fff;padding:8px 2px;text-align:left;font-size:.74rem}.role-comms button:last-child{border-bottom:0}.role-comms button span{font-weight:900;color:#1768e8}.role-quick-panel{margin-top:9px}.role-shortcuts{grid-template-columns:repeat(4,minmax(0,1fr));margin:0}.role-shortcuts .work-shortcut{min-height:52px;padding:8px 10px;display:flex;align-items:center;justify-content:space-between;text-align:left}.role-shortcuts .work-shortcut strong{font-size:.76rem}.role-shortcuts .work-shortcut span{font-size:.65rem;color:#1768e8}
@media(max-width:1100px){.role-dashboard-grid{grid-template-columns:1fr}.role-dashboard-side{grid-template-columns:1fr 1fr}.role-station-row{grid-template-columns:minmax(140px,1fr) minmax(120px,.8fr) minmax(240px,1.4fr) 18px}.role-shortcuts{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:720px){.role-dashboard-head{align-items:flex-start;flex-direction:column}.role-dashboard-actions{width:100%;justify-content:space-between}.role-dashboard-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.role-business-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.role-dashboard-side{grid-template-columns:1fr}.role-station-row{grid-template-columns:minmax(0,1fr) 18px;padding:9px}.role-station-sales,.role-station-statuses{grid-column:1/-1}.role-station-statuses{padding-left:15px}.role-station-go{grid-column:2;grid-row:1}.role-shortcuts{grid-template-columns:repeat(2,minmax(0,1fr))}.role-dashboard-panel{padding:9px}}

/* 실제 운영 보고센터 + 홈 미니달력 (v1.0.5) */
.work-calendar-panel{margin-top:12px}.work-mini-calendar{padding:12px}.mini-calendar-head{display:flex;align-items:end;gap:12px;margin-bottom:8px}.mini-calendar-head strong{font-size:16px}.mini-calendar-head span{font-size:11px;color:var(--muted,#667085)}.mini-calendar-week,.mini-calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px}.mini-calendar-week span{text-align:center;font-size:10px;color:#718096;padding:3px}.mini-calendar-day{position:relative;min-height:42px;border:1px solid #e1e7ef;background:#fff;border-radius:4px;padding:5px;text-align:left;color:#27364a}.mini-calendar-day:hover{background:#f5f8fc}.mini-calendar-day.today{box-shadow:inset 0 0 0 2px #1768e8}.mini-calendar-day.has-work{background:#f7faff}.mini-calendar-day i{position:absolute;right:4px;bottom:4px;min-width:16px;height:16px;display:grid;place-items:center;border-radius:50%;background:#1768e8;color:#fff;font-size:9px;font-style:normal}.mini-calendar-day.pad{visibility:hidden}
.calendar-badge.business-task{background:#eef0ff;color:#4c42a8;border-color:#d7d3ff}.business-task-card{border-left:4px solid #6c5ce7}
.operation-status-strip{margin-bottom:10px}.operation-actual-summary{padding:10px;border:1px solid #dde5ee;background:#f8fbff;margin:10px 0}.operation-checks{display:flex;gap:6px;flex-wrap:wrap;margin-top:7px}.operation-checks span{font-size:11px;padding:5px 7px;border:1px solid #dce4ed;background:#fff}.operation-checks .done{color:#087443;border-color:#b8dbc9;background:#f0fbf5}.operation-checks .missing{color:#a33a2c;border-color:#efc7c0;background:#fff6f4}
.operation-layout{display:grid;grid-template-columns:minmax(340px,.8fr) minmax(520px,1.2fr);gap:12px;align-items:start}.operation-submit-card{margin:0}.operation-file-label,.wide-note{display:grid;gap:6px;font-weight:800;margin:10px 0}.operation-file-label input{min-height:44px;border:1px dashed #bfcbd9;padding:9px;background:#fbfdff}.operation-file-label span{font-size:11px;font-weight:500;color:#667589}.wide-note textarea{min-height:86px;border:1px solid #d8e1ec;padding:9px;resize:vertical}.competitor-price-grid{display:grid;gap:5px;margin:8px 0 10px}.competitor-price-row{display:grid;grid-template-columns:25px minmax(130px,1fr) 90px 90px;gap:5px;align-items:center}.competitor-price-row span{text-align:center;font-size:11px;color:#64748b}.competitor-price-row input{min-height:38px;border:1px solid #d8e1ec;padding:6px 7px}.operation-report-list{display:grid;gap:5px;margin-top:10px}.operation-report-row{width:100%;display:grid;grid-template-columns:110px minmax(0,1fr) 78px 76px;gap:8px;align-items:center;text-align:left;border:1px solid #dce4ed;background:#fff;padding:9px 10px;border-radius:5px}.operation-report-row:hover{background:#f7faff}.operation-report-kind{font-weight:900;font-size:11px}.operation-report-row strong{display:block;font-size:12px}.operation-report-row small{display:block;color:#6f7f92;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.operation-report-status{font-size:10px;font-weight:900;padding:4px 6px;text-align:center;background:#fff6df;color:#93610d}.operation-report-status.reviewed{background:#eef9f3;color:#147348}.operation-report-status.paid{background:#edf4ff;color:#145cc5}.operation-report-attach{font-size:10px;color:#68798c}.operation-detail{margin-top:12px;padding:12px}.operation-detail-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:14px}.operation-detail-grid p{line-height:1.6}.operation-docs{display:grid;gap:5px;margin:7px 0}.operation-price-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;margin:6px 0}.operation-price-summary span{padding:6px;border:1px solid #e2e8ef;background:#fbfdff;font-size:10px}
@media(max-width:900px){.operation-layout,.operation-detail-grid{grid-template-columns:1fr}.operation-report-row{grid-template-columns:96px minmax(0,1fr) 68px}.operation-report-attach{display:none}.competitor-price-row{grid-template-columns:22px minmax(105px,1fr) 78px 78px}.mini-calendar-day{min-height:38px}.operation-price-summary{grid-template-columns:1fr}}



/* ============================================================
   PC / PHONE UI SPLIT v1.0.8
   원칙: 데이터/API는 공유하지만 화면 구조·메뉴·정보밀도는 공유하지 않는다.
   PC = 관리/분석/표 중심, PHONE = 오늘업무/사진/보고/알림 중심.
   ============================================================ */
.mobile-workcenter,.mobile-logout-label{display:none}
@media (min-width:960px){
  .desktop-workcenter{display:block}
  .mobile-workcenter{display:none!important}
  .role-dashboard{max-width:1680px}
  main{margin-left:240px;padding:16px 18px 48px}
  .topbar{margin-left:240px;padding-left:18px;padding-right:18px}
  .role-dashboard-grid{grid-template-columns:minmax(0,1.85fr) minmax(300px,.72fr)}
  .role-station-row{grid-template-columns:minmax(160px,1fr) minmax(135px,.82fr) minmax(320px,1.6fr) 18px}
  .role-dashboard-kpis{grid-template-columns:repeat(4,minmax(0,1fr))}
  .role-business-strip{grid-template-columns:repeat(4,minmax(0,1fr))}
}
@media (max-width:959px){
  :root{font-size:16px}
  .desktop-workcenter{display:none!important}
  .mobile-workcenter{display:block}
  .desktop-top-action,.desktop-logout-label,.topbar .zoom-switch{display:none!important}
  .mobile-logout-label{display:inline}
  .topbar{height:56px;padding:7px 10px;border-bottom:0;background:var(--sidebar-bg);color:#fff}
  .topbar-left{max-width:52%}.topbar-title>strong{font-size:.92rem;color:#fff}.topbar small{font-size:.7rem;color:#b9c9d9;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .topbar .top-actions{gap:5px}.topbar .top-actions .quiet{min-height:40px;padding:7px 10px;border-radius:8px;background:#ffffff12;color:#fff;font-size:.76rem}
  #notificationButton{background:var(--accent)!important;color:var(--accent-ink)!important;font-weight:900}
  .phone-nav{top:56px;background:#102f50}
  .phone-nav-row{padding:5px 7px}.phone-nav-row.sub{padding:4px 7px;background:#0b2540}
  .phone-nav-item{min-height:38px;padding:0 12px;border-radius:6px;font-size:.78rem}.phone-nav-row.sub .phone-nav-item{min-height:34px;padding:0 10px;font-size:.72rem}
  main{margin-left:0;padding:10px 10px 72px;background:#f2f5f8}
  .page-title{gap:8px}.page-title h1{font-size:1.22rem}.page-title p{font-size:.76rem}
  .form-card,.overview-panel,.trend-panel{border-radius:8px;padding:12px;margin-bottom:9px}
  .form-grid{grid-template-columns:1fr}
  .toolbar{grid-template-columns:1fr}
  .data-table,.analysis-columns .data-table{font-size:.75rem}
  .table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .quick-upload-bar{z-index:55}

  /* 모바일 첫 화면은 PC 대시보드 축소판이 아니다. */
  .role-dashboard{max-width:none;margin:0}
  .mobile-home-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding:5px 2px 10px}
  .mobile-home-role{display:block;color:#1768e8;font-size:.7rem;font-weight:950;letter-spacing:.04em}
  .mobile-home-head h1{margin:2px 0 3px;font-size:1.35rem;letter-spacing:-.035em}.mobile-home-head p{margin:0;color:#68788b;font-size:.76rem;line-height:1.4}
  .mobile-notify-button{flex:0 0 auto;min-height:42px;border:0;border-radius:8px;background:#102f50;color:#fff;padding:8px 10px;font-size:.74rem;font-weight:900}.mobile-notify-button span{display:inline-grid;place-items:center;min-width:20px;height:20px;border-radius:999px;background:#d92d20;color:#fff;margin-left:4px}
  .mobile-home-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;margin-bottom:8px}
  .mobile-stat{min-width:0;background:#fff;border:1px solid #dce4ed;border-top:3px solid #8da0b5;padding:8px 7px}.mobile-stat.has{border-top-color:#e79a00}.mobile-stat span{display:block;color:#6e7d90;font-size:.62rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mobile-stat strong{display:block;margin-top:3px;font-size:1.15rem;line-height:1.15}
  .mobile-home-card{background:#fff;border:1px solid #dce4ed;border-radius:8px;padding:10px;margin-bottom:8px}
  .mobile-priority-card{border-left:4px solid #1768e8}
  .mobile-card-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:7px}.mobile-card-head span{display:block;color:#1768e8;font-size:.62rem;font-weight:900}.mobile-card-head h2{margin:1px 0 0;font-size:.92rem}.mobile-card-head button{min-height:34px;border:0;border-radius:6px;background:#eef3f8;color:#38506a;padding:6px 9px;font-size:.68rem;font-weight:850}
  .mobile-priority-list,.mobile-alert-list{display:grid;gap:5px}
  .mobile-priority-row{width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px;border:1px solid #e0e7ef;border-left:4px solid #1a7f50;background:#fff;padding:9px;text-align:left}.mobile-priority-row.needs{border-left-color:#d92d20;background:#fffcfb}.mobile-priority-row span{min-width:0}.mobile-priority-row strong,.mobile-priority-row small{display:block}.mobile-priority-row strong{font-size:.8rem}.mobile-priority-row small{margin-top:2px;color:#6f7f92;font-size:.68rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mobile-priority-row>b{flex:0 0 auto;font-size:.68rem;color:#1768e8}
  .mobile-action-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.mobile-action-grid button{min-height:56px;border:1px solid #dce4ed;border-radius:7px;background:#f8fbff;padding:8px;text-align:left}.mobile-action-grid strong,.mobile-action-grid span{display:block}.mobile-action-grid strong{font-size:.76rem}.mobile-action-grid span{margin-top:3px;color:#1768e8;font-size:.62rem;font-weight:800}
  .mobile-alert-list button{display:grid;grid-template-columns:8px minmax(0,1fr);gap:7px;border:0;border-bottom:1px solid #edf1f5;background:#fff;padding:7px 2px;text-align:left}.mobile-alert-list i{width:7px;height:7px;border-radius:50%;background:#e79a00;margin-top:4px}.mobile-alert-list i.priority-high,.mobile-alert-list i.priority-urgent{background:#d92d20}.mobile-alert-list strong,.mobile-alert-list small{display:block}.mobile-alert-list strong{font-size:.75rem}.mobile-alert-list small{margin-top:2px;color:#6f7f92;font-size:.66rem;line-height:1.35}
  .mobile-connect-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.mobile-connect-grid button{min-height:50px;border:1px solid #dce4ed;border-radius:7px;background:#fbfdff;padding:8px;text-align:left}.mobile-connect-grid button:last-child{grid-column:1/-1}.mobile-connect-grid span,.mobile-connect-grid strong{display:block}.mobile-connect-grid span{font-size:.67rem;color:#657589}.mobile-connect-grid strong{margin-top:3px;font-size:.82rem;color:#1768e8}
  .mobile-calendar-summary p{margin:0;color:#6f7f92;font-size:.72rem;line-height:1.45}
  .mobile-empty-ok,.mobile-empty-error{padding:14px;text-align:center;border:1px dashed #c8d3df;border-radius:7px;color:#637589;font-size:.74rem}.mobile-empty-ok{background:#f5fbf7;color:#19724b}.mobile-empty-error{background:#fff5f4;color:#b42318}
}
@media (max-width:390px){
  .mobile-home-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .mobile-action-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .topbar-left{max-width:45%}
}


/* ============================================================
   v1.0.9 역할 화면 / 초기등록 / 컴팩트 대시보드
   ============================================================ */
@media (min-width:960px){
  .sidebar-nav{overflow:hidden!important}
  .role-menu-root{flex:1 1 auto;min-height:0;overflow-y:auto;display:grid;align-content:start;gap:6px;margin:6px 0 8px;padding-right:2px}
  .quick-upload{flex:0 0 auto;margin-top:8px!important;padding-top:9px!important;background:var(--sidebar-bg);position:relative;z-index:3}
  .role-nav-group{display:block;margin:0}
  .role-nav-group-head{all:unset;box-sizing:border-box;cursor:pointer;width:100%;min-height:42px;display:flex;align-items:center;justify-content:space-between;padding:9px 11px;border-radius:7px;color:#e7eff7;font-size:.82rem;font-weight:900;background:#ffffff0a;border:1px solid transparent}
  .role-nav-group-head:hover,.role-nav-group.open>.role-nav-group-head{background:#ffffff15;border-color:#ffffff12}
  .role-nav-group-head b{font-size:.8rem;color:#9fb3c7;transition:transform .15s}.role-nav-group.open>.role-nav-group-head b{transform:rotate(180deg)}
  .role-nav-children{display:grid;gap:2px;padding:3px 0 5px 7px}.role-nav-children[hidden]{display:none!important}
  .role-nav-item{min-height:36px!important;padding:7px 10px!important;font-size:.76rem!important}
  .admin-role-preview{display:flex;align-items:center;gap:6px;margin-left:auto;padding:4px 6px;border:1px solid #d7e1ec;background:#f7f9fc;border-radius:8px}
  .admin-role-preview>span{font-size:.69rem;font-weight:900;color:#5f7186;white-space:nowrap}.admin-role-preview select{height:32px;min-width:112px;border:1px solid #d6e0eb;border-radius:6px;background:#fff;padding:0 8px;font-size:.72rem;font-weight:800}.admin-role-preview #adminPreviewStation{min-width:135px}
  .station-grid{grid-template-columns:repeat(auto-fit,minmax(205px,1fr))!important;gap:8px!important}
  .station-tile{border-radius:8px!important;padding:9px 10px!important;gap:6px!important;min-height:168px}
  .role-station-board{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:8px!important}
  .role-station-mini{min-width:0;border:1px solid #dbe3ec;border-left:4px solid #1a7f50;background:#fff;padding:10px;text-align:left;cursor:pointer}.role-station-mini.needs{border-left-color:#e5483f;background:#fffdfc}.role-station-mini:hover{box-shadow:0 5px 14px #18496f1c}
  .role-dashboard-grid{grid-template-columns:minmax(0,2.2fr) minmax(290px,.72fr)!important}
}
.tile-head{align-items:flex-start}.tile-head>span{min-width:0}.tile-head strong{display:block;font-size:.8rem}.tile-head small{display:block;margin-top:2px;color:var(--muted);font-size:.62rem;font-weight:750}
.tile-donut,.mini-donut{--p:0;position:relative;flex:0 0 auto;width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(#1a7f50 calc(var(--p)*1%),#e8edf3 0)}
.tile-donut:after,.mini-donut:after{content:"";position:absolute;inset:6px;border-radius:50%;background:#fff}.tile-donut b,.mini-donut b{position:relative;z-index:1;font-size:.62rem;font-weight:950;color:#284057}
.tile-sales>span:first-child small,.tile-sales>span:first-child b{display:block}.tile-sales>span:first-child small{font-size:.58rem;color:#758598}.tile-sales-track,.mini-sales-track{height:5px;background:#eef2f6;overflow:hidden}.tile-sales-track span,.mini-sales-track i{display:block;height:100%;background:#1768e8}
.tile-mix{height:5px!important}.tile-mix-legend{font-size:.6rem!important}.status-dots{gap:3px 6px!important}.status-dot{font-size:.6rem!important}.status-dot i{width:6px!important;height:6px!important}
.role-mini-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.role-mini-head strong,.role-mini-head small{display:block}.role-mini-head strong{font-size:.8rem}.role-mini-head small{font-size:.62rem;color:#738397;margin-top:2px}.role-mini-sales{margin-top:7px}.role-mini-sales>span{font-size:.59rem;color:#718195}.role-mini-sales>strong{display:block;font-size:.92rem;margin:1px 0 4px}.mini-mix{margin-top:7px}.mini-mix>div{height:5px;display:flex;background:#edf1f5}.mini-mix>div span{background:#1768e8}.mini-mix>div i{background:#f4a11b}.mini-mix small{display:block;margin-top:3px;font-size:.59rem;color:#738397}.mini-status-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;margin-top:7px}.mini-status-grid .role-status{text-align:center;padding:4px 5px;font-size:.6rem}
.overview-panel{border-radius:8px!important;border:1px solid #ccd8e5!important;box-shadow:0 10px 28px #17345216}.overview-kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px;margin:10px 0}.overview-kpis article{background:#f8fbff;border:1px solid #dce5ef;padding:9px 10px}.overview-kpis span{display:block;font-size:.62rem;color:#6e7e91}.overview-kpis strong{display:block;margin-top:3px;font-size:.95rem}.overview-tabs button{border-radius:6px!important;min-height:38px!important;padding:7px 11px!important;font-size:.72rem}
.manager-setup-dialog{width:min(900px,calc(100% - 24px));max-height:90vh;border:0;border-radius:10px;padding:0;box-shadow:0 24px 70px #0e274443}.manager-setup-dialog::backdrop{background:#0b1d2f99}.manager-setup-dialog form{padding:18px}.setup-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;border-bottom:1px solid #e2e8f0;padding-bottom:12px}.setup-head span{font-size:.65rem;color:#1768e8;font-weight:950}.setup-head h2{margin:2px 0 4px;font-size:1.25rem}.setup-head p{margin:0;color:#69798c;font-size:.78rem;line-height:1.5}.setup-station-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin:13px 0}.setup-station-grid label{font-size:.7rem;font-weight:850;color:#5f7185}.setup-station-grid input,.setup-station-grid select{width:100%;min-height:42px;margin-top:4px}.setup-tank-grid{display:grid;gap:6px}.setup-tank-row{display:grid;grid-template-columns:135px minmax(150px,1fr) 105px 105px 105px;gap:6px;align-items:center;padding:7px;border:1px solid #dce5ef;background:#fbfdff}.setup-tank-row input{min-width:0;min-height:40px}.setup-check{display:flex;align-items:center;gap:7px;font-size:.75rem}.setup-check input{min-height:auto}.setup-foot{margin:9px 0 0;color:#718094;font-size:.68rem}
@media(max-width:959px){.manager-setup-dialog{width:calc(100% - 16px)}.manager-setup-dialog form{padding:14px}.setup-station-grid{grid-template-columns:1fr}.setup-tank-row{grid-template-columns:1fr 1fr}.setup-tank-row .setup-check{grid-column:1/-1}.overview-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}


/* ============================================================
   v1.0.10 Excel형 컴팩트 운영 대시보드
   - PC 상단 요약은 한 줄
   - 주유소는 행 단위 한눈표
   - 원형 완료율 제거, 실제 탱크 재고 막대 사용
   - 미완료 상태 셀은 눌러서 바로 해당 업무로 이동
   ============================================================ */
@media (min-width:960px){
  .role-dashboard-head{align-items:center;margin-bottom:7px}
  .role-dashboard-head h1{font-size:1.42rem;margin:1px 0 1px}.role-dashboard-head p{font-size:.72rem}.role-dashboard-asof{font-size:.64rem}
  .role-dashboard-kpis{display:grid!important;gap:0!important;border:1px solid #d8e1eb;background:#d8e1eb;margin-bottom:7px!important}
  .role-dashboard-kpis .work-stat{min-height:54px!important;padding:6px 9px!important;border:0!important;border-top:0!important;background:#fff;display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:7px;align-items:end}
  .role-dashboard-kpis .work-stat span{font-size:.61rem;color:#6c7c90;grid-column:1/-1}.role-dashboard-kpis .work-stat strong{font-size:1rem!important;line-height:1.05;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.role-dashboard-kpis .work-stat small{font-size:.58rem;color:#8592a3;text-align:right;white-space:nowrap}
  .role-dashboard-kpis .work-stat.has-value{box-shadow:inset 0 3px 0 #eda100}
  .role-business-strip{display:none!important}
  .role-dashboard-primary{min-height:0!important;padding:9px!important}
  .role-panel-head{margin-bottom:6px}.role-panel-head h2{font-size:.88rem}
  .role-station-board{display:block!important}
  .role-station-table{display:grid;gap:4px}
  .role-station-table-head{display:grid;grid-template-columns:minmax(170px,.9fr) minmax(270px,1.35fr) minmax(360px,1.65fr) 28px;gap:7px;align-items:center;padding:0 7px 4px;color:#718196;font-size:.6rem;font-weight:850}
  .role-station-table-head small{display:block;font-size:.54rem;font-weight:600;color:#98a2b3;margin-top:1px}
  .role-station-mini{display:grid!important;grid-template-columns:minmax(170px,.9fr) minmax(270px,1.35fr) minmax(360px,1.65fr) 28px;gap:7px;align-items:stretch;min-height:82px!important;padding:6px 7px!important;border:1px solid #dbe3ec!important;border-left:4px solid #159455!important;background:#fff!important;box-shadow:none!important}
  .role-station-mini.needs{border-left-color:#e5483f!important;background:#fffdfc!important}.role-station-mini:hover{box-shadow:0 3px 10px #18496f12!important}
  .station-main-cell,.station-tank-cell,.station-detail-go{border:0;background:transparent;text-align:left;padding:3px;min-width:0}
  .station-main-cell{display:grid;grid-template-columns:minmax(0,1fr);gap:6px;align-content:center}.station-main-title strong,.station-main-title small{display:block}.station-main-title strong{font-size:.8rem;color:#152b46}.station-main-title small{font-size:.59rem;color:#738397;margin-top:1px}
  .station-main-sales{display:grid;grid-template-columns:auto minmax(60px,1fr);gap:6px;align-items:center}.station-main-sales b{font-size:.72rem;color:#1a2e48;white-space:nowrap}.station-main-sales i{height:6px;background:#edf1f5;overflow:hidden}.station-main-sales i em{display:block;height:100%;background:#1768e8}
  .station-tank-cell{display:flex;align-items:center;cursor:pointer}.station-tank-bars{display:grid;gap:4px;width:100%}.station-tank-line{display:grid;grid-template-columns:58px minmax(80px,1fr) 46px;gap:5px;align-items:center}.station-tank-name{display:flex;align-items:center;gap:4px;font-size:.58rem;color:#526377;white-space:nowrap}.station-tank-name .fuel-dot{width:6px;height:6px}.station-tank-track{height:7px;background:#edf1f5;overflow:hidden;border:1px solid #e4e9ef}.station-tank-track i{display:block;height:100%}.station-tank-line strong{font-size:.57rem;text-align:right;color:#44566b;white-space:nowrap}.station-tank-line.risk strong{color:#b42318;font-weight:950}.station-tank-empty{width:100%;border:1px dashed #d8a3a0;background:#fff8f7;color:#b42318;padding:8px;font-size:.62rem;font-weight:850;text-align:center}
  .station-status-cells{display:grid;grid-template-columns:repeat(5,minmax(58px,1fr));gap:3px;align-items:stretch}.work-status-cell{border:1px solid transparent;padding:5px 3px;display:grid;place-items:center;align-content:center;gap:2px;min-width:0;cursor:pointer}.work-status-cell span{font-size:.55rem;font-weight:750}.work-status-cell b{font-size:.61rem}.work-status-cell.done{background:#159455;color:#fff;border-color:#12824a}.work-status-cell.done:hover{background:#117c45}.work-status-cell.missing{background:#fff0ef;color:#b42318;border-color:#f1c5c0}.work-status-cell.missing:hover{background:#ffe5e2}.work-status-cell:focus-visible{outline:2px solid #1768e8;outline-offset:1px}
  .station-detail-go{display:grid;place-items:center;color:#1768e8;font-size:1.25rem;font-weight:800;cursor:pointer}.station-detail-go:hover{background:#f1f6fd}
}
@media (min-width:960px) and (max-width:1250px){
  .role-dashboard-kpis{grid-template-columns:repeat(4,minmax(0,1fr))!important}
  .role-station-table-head,.role-station-mini{grid-template-columns:minmax(145px,.8fr) minmax(220px,1.15fr) minmax(330px,1.55fr) 26px}
  .station-status-cells{grid-template-columns:repeat(5,minmax(50px,1fr))}
}


/* ============================================================
   v1.0.11 실제 운영형 대시보드 통합 디자인
   기준: 사용자가 확정한 네이비 사이드바 + Excel형 표 + 작은 KPI + 실제 그래프
   PC/모바일은 같은 데이터를 쓰되 화면 구조는 별도로 표현한다.
   ============================================================ */
:root{
  --ui-blue:#1768e8; --ui-blue-dark:#0f58c6; --ui-navy:#0d2b49; --ui-navy-2:#123d66;
  --ui-bg:#f4f7fb; --ui-panel:#fff; --ui-border:#d8e2ee; --ui-muted:#708196;
  --ui-green:#159455; --ui-red:#d92d20; --ui-amber:#e89b16;
  --sidebar-bg:#0d2b49; --sidebar-ink:#edf5fd; --sidebar-muted:#b9c9da; --accent:#1768e8; --accent-ink:#fff;
}
body{background:var(--ui-bg);color:#152b46}

/* 공통 화면을 '관리표'처럼 정돈한다. */
.form-card,.station-card,.role-dashboard-panel,.metric,.kpi,.overview-panel{border:1px solid var(--ui-border)!important;box-shadow:0 2px 8px rgba(24,55,88,.045)!important}
.form-card,.station-card,.metric,.kpi{border-radius:7px!important}
.form-card{background:#fff}
.page-title{margin-bottom:10px}.page-title h1{font-weight:950;letter-spacing:-.035em;color:#142a46}.page-title p{font-size:.78rem;margin-bottom:0;color:var(--ui-muted)}
input,select,textarea{border-radius:6px;min-height:40px;border-color:#ccd8e5;background:#fff}.primary,.quiet{border-radius:6px;min-height:38px;padding:8px 12px}.primary{background:var(--ui-blue)}
/* v1.3.129 — 위 "폰: 손가락 크기 확보(959px 이하 44px)" 규칙이 바로 윗줄 관리표 규칙(input,select,textarea 40px)에 select 만 져서,
   폰에서 월 선택·주유소 선택 드롭다운만 40px 였다(입력칸·버튼은 44px). 폰에서 드롭다운도 44px 로 되돌린다. PC 는 그대로. */
@media (max-width: 959px) { select { min-height: 44px; } }
.tab-bar{border-radius:7px!important;border-color:var(--ui-border)!important;background:#f4f7fb!important;padding:4px!important}.tab-button{border-radius:5px!important}.tab-button.active{background:#fff!important;color:var(--ui-blue)!important;box-shadow:0 2px 7px rgba(32,65,100,.08)!important}
.data-table,table{border-color:var(--ui-border)}.data-table th,.data-table td,table th,table td{border-color:#e4eaf1}.data-table th,table th{background:#f7f9fc;color:#52657a;font-weight:900}
.badge{border-radius:4px!important}.empty-card{border-radius:6px!important}

@media(min-width:960px){
  .sidebar-nav{width:218px;padding:12px 10px;background:linear-gradient(180deg,#0c2947 0%,#102f50 62%,#0b253f 100%);box-shadow:5px 0 24px rgba(9,31,54,.08)}
  .sidebar-brand{padding:7px 7px 13px;border-bottom:1px solid rgba(255,255,255,.10);margin-bottom:5px}.sidebar-brand-mark{width:27px;height:27px;background:#fff!important;color:#0d2b49!important;border-radius:5px!important;font-size:.82rem}.sidebar-brand-copy{display:grid}.sidebar-brand-text{font-size:.81rem!important;font-weight:950!important}.sidebar-brand-copy small{font-size:.55rem;color:#8ea8c1;margin-top:1px}
  .topbar{margin-left:218px;height:58px;border-bottom:1px solid var(--ui-border);padding:7px 16px;background:rgba(255,255,255,.98)}
  #mainContent{margin-left:218px;padding:14px 16px 46px;background:var(--ui-bg)}
  .topbar-title strong{font-size:.82rem}.topbar-title small{font-size:.62rem}.crumb{font-size:.66rem}
  .top-actions button{min-height:32px!important;padding:6px 9px!important;border-radius:5px!important;font-size:.68rem!important}.admin-role-preview{border-radius:6px!important;padding:3px 5px!important}.admin-role-preview select{height:30px!important;border-radius:5px!important}
  .role-menu-root{gap:5px;margin:4px 0 7px}.role-nav-group-head{min-height:36px!important;padding:7px 9px!important;border-radius:5px!important;background:transparent!important;color:#9eb3c8!important;font-size:.67rem!important;letter-spacing:.01em}.role-nav-group.open>.role-nav-group-head{color:#d8e5f1!important;background:rgba(255,255,255,.045)!important}.role-nav-group-head b{font-size:.7rem!important}
  .role-nav-children{padding:2px 0 4px 3px!important;gap:2px!important}.role-nav-item{min-height:35px!important;padding:6px 8px!important;border-radius:5px!important;display:grid!important;grid-template-columns:22px minmax(0,1fr) auto;gap:6px;align-items:center;color:#cfdae7!important;font-size:.7rem!important;font-weight:780!important;border-left:3px solid transparent!important}.role-nav-item:hover{background:rgba(255,255,255,.07)!important;color:#fff!important}.role-nav-item.active{background:linear-gradient(90deg,#1768e8,#1d63cf)!important;color:#fff!important;border-left-color:#8ec2ff!important;box-shadow:0 3px 9px rgba(0,0,0,.14)}.role-nav-icon{width:20px;height:20px;display:grid;place-items:center;border-radius:4px;background:rgba(255,255,255,.07);font-style:normal;font-size:.66rem}.role-nav-item.active .role-nav-icon{background:rgba(255,255,255,.14)}
  .quick-upload{gap:5px!important;padding:8px 0 0!important}.quick-btn{min-height:42px!important;border-radius:5px!important;padding:7px 9px!important}.quick-btn.camera{background:#7138c7!important;border-color:#7138c7!important}.quick-btn.file{background:#1768e8!important;border-color:#1768e8!important}.quick-btn span>strong{font-size:.69rem!important}.quick-btn span>small{font-size:.54rem!important}

  .work-center-view{max-width:100%}.desktop-workcenter{display:block}.role-dashboard-head{margin-bottom:8px!important}.role-dashboard-head h1{font-size:1.28rem!important;color:#132a46}.role-dashboard-eyebrow{font-size:.62rem!important;color:var(--ui-blue)!important;font-weight:950}.role-dashboard-head p{font-size:.67rem!important;color:#718297}.role-dashboard-asof{font-size:.58rem!important;color:#8090a3}
  .role-dashboard-kpis{grid-template-columns:repeat(7,minmax(0,1fr))!important;border:0!important;background:transparent!important;gap:6px!important;margin-bottom:8px!important}.role-dashboard-kpis .work-stat{min-height:58px!important;border:1px solid var(--ui-border)!important;border-radius:6px!important;padding:7px 9px!important;box-shadow:0 2px 7px rgba(26,55,88,.035)!important}.role-dashboard-kpis .work-stat.has-value{box-shadow:inset 0 3px 0 var(--ui-amber),0 2px 7px rgba(26,55,88,.035)!important}.role-dashboard-kpis .work-stat span{font-size:.57rem!important}.role-dashboard-kpis .work-stat strong{font-size:1.02rem!important;color:#122946}.role-dashboard-kpis .work-stat small{font-size:.53rem!important}
  .role-dashboard-grid{grid-template-columns:minmax(0,2.35fr) minmax(260px,.72fr)!important;gap:8px!important}.role-dashboard-panel{border-radius:6px!important;padding:9px!important;background:#fff}.role-panel-head{min-height:31px;padding-bottom:5px;border-bottom:1px solid #edf1f5;margin-bottom:6px!important}.role-panel-kicker{font-size:.52rem!important;color:var(--ui-blue)!important}.role-panel-head h2{font-size:.78rem!important;color:#17304e}.text-link{font-size:.58rem!important;color:var(--ui-blue)!important}
  .role-dashboard-side{gap:8px!important}.role-alert-row{border-radius:4px!important;padding:6px 5px!important}.role-alert-copy strong{font-size:.62rem!important}.role-alert-copy small{font-size:.54rem!important}.role-alert-time{font-size:.5rem!important}.role-comms button{border-radius:4px!important;min-height:38px!important;padding:6px 8px!important}.role-comms button strong,.role-comms button span{font-size:.59rem!important}

  .role-station-table{gap:0!important;border:1px solid #dce4ed;border-bottom:0}.role-station-table-head{grid-template-columns:minmax(150px,.82fr) minmax(280px,1.42fr) minmax(360px,1.65fr) 26px!important;background:#f4f7fb;padding:7px 8px!important;border-bottom:1px solid #dce4ed;font-size:.56rem!important}.role-station-mini{grid-template-columns:minmax(150px,.82fr) minmax(280px,1.42fr) minmax(360px,1.65fr) 26px!important;min-height:88px!important;border:0!important;border-bottom:1px solid #dce4ed!important;border-left:4px solid var(--ui-green)!important;padding:7px 8px!important}.role-station-mini.needs{border-left-color:var(--ui-red)!important;background:#fffdfa!important}.station-main-title strong{font-size:.74rem!important}.station-main-title small{font-size:.53rem!important}.station-main-sales b{font-size:.66rem!important}.station-main-sales i{height:7px!important;border-radius:1px}.station-main-sales i em{background:linear-gradient(90deg,#78a5f4,#1768e8)!important}.station-tank-line{grid-template-columns:55px minmax(90px,1fr) 43px!important}.station-tank-track{height:8px!important;background:#edf1f5!important;border-radius:1px!important}.station-tank-name{font-size:.54rem!important}.station-tank-line strong{font-size:.52rem!important}.station-status-cells{grid-template-columns:repeat(5,minmax(54px,1fr))!important;gap:4px!important}.work-status-cell{min-height:48px!important;border-radius:4px!important}.work-status-cell.done{background:#e9f8ef!important;color:#0d7543!important;border-color:#c5ecd5!important}.work-status-cell.done b{color:#0a7b45}.work-status-cell.missing{background:#fff0ef!important;color:#c52d24!important;border-color:#f2c6c2!important}.work-status-cell span{font-size:.51rem!important}.work-status-cell b{font-size:.58rem!important}.station-detail-go{border-left:1px solid #edf1f5!important}

  .role-dashboard-insights{display:grid;grid-template-columns:1.35fr 1fr 1fr;gap:8px;margin-top:8px}.insight-panel{min-height:176px}.work-insight-chart{height:118px;display:flex;align-items:end;gap:4px;padding:5px 3px 0;border-bottom:1px solid #e8edf3}.work-insight-bar{height:100%;flex:1;min-width:5px;display:grid;grid-template-rows:1fr 15px;align-items:end}.work-insight-bar i{display:block;width:100%;background:linear-gradient(180deg,#7fa9ef,#1768e8);min-height:4px}.work-insight-bar small{text-align:center;font-size:.46rem;color:#8b98a9;padding-top:2px}.dashboard-no-data{display:grid;place-items:center;min-height:105px;color:#7b8999;font-size:.6rem}
  .work-rank-list,.work-tank-overview{display:grid;gap:3px}.work-rank-list button,.work-tank-overview button{border:0;border-bottom:1px solid #edf1f5;background:#fff;min-height:30px;padding:4px 2px;display:grid;align-items:center;gap:6px;text-align:left;color:#30455d}.work-rank-list button{grid-template-columns:18px minmax(70px,.7fr) minmax(60px,1fr) 72px}.work-rank-list button>b{width:16px;height:16px;display:grid;place-items:center;background:#eef4ff;color:#1768e8;border-radius:3px;font-size:.5rem}.work-rank-list button>span{font-size:.55rem;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.work-rank-list button>i,.work-tank-overview button>i{height:6px;background:#edf1f5;overflow:hidden}.work-rank-list button>i em,.work-tank-overview button>i em{display:block;height:100%;background:#1768e8}.work-rank-list button>strong{font-size:.53rem;text-align:right}.work-rank-list button>strong small{display:block;color:#159455;font-size:.46rem}.work-tank-overview button{grid-template-columns:minmax(75px,.8fr) minmax(70px,1fr) 35px}.work-tank-overview button span b,.work-tank-overview button span small{display:block}.work-tank-overview button span b{font-size:.54rem}.work-tank-overview button span small{font-size:.47rem;color:#7c8b9d}.work-tank-overview button strong{font-size:.53rem;text-align:right}.work-tank-overview button.risk strong{color:var(--ui-red)}
  .work-calendar-panel{margin-top:8px!important}.work-mini-calendar{max-width:none!important}.mini-calendar-head{margin-bottom:4px!important}.mini-calendar-grid{gap:2px!important}.mini-calendar-day{min-height:31px!important;border-radius:3px!important}.mini-calendar-day b{font-size:.55rem!important}.role-quick-panel{margin-top:8px!important}.role-shortcuts{grid-template-columns:repeat(6,minmax(0,1fr))!important}.work-shortcut{min-height:42px!important;border-radius:4px!important;padding:6px 8px!important}.work-shortcut strong{font-size:.59rem!important}.work-shortcut span{font-size:.5rem!important}

  /* 나머지 모든 PC 화면도 같은 디자인 언어로 맞춘다. */
  .form-card{padding:14px!important;margin-bottom:10px!important}.form-card.compact{padding:12px!important}.form-card h2{font-size:.92rem!important}.form-card h3{font-size:.78rem!important}.form-card p,.form-help{font-size:.65rem!important}.form-grid{gap:7px 9px!important}.form-card label{font-size:.68rem!important;margin:7px 0!important}.form-card input,.form-card select,.form-card textarea{min-height:37px!important;border-radius:5px!important;padding:7px 9px!important;font-size:.72rem!important}.card-list{gap:7px!important}.station-card{padding:10px!important;gap:6px!important}.station-card strong{font-size:.72rem}.station-card,.station-card p,.station-card span{font-size:.64rem}.metric-grid,.kpi-row{gap:7px!important}.metric,.kpi{padding:10px!important}.metric strong,.kpi strong{font-size:1.05rem!important}.metric span,.kpi-label{font-size:.61rem!important}.data-table th,.data-table td,table th,table td{padding:7px 8px!important;font-size:.64rem!important}.page-title h1{font-size:1.23rem!important}.page-title{align-items:center}.page-title .btn-row{gap:5px}.page-title input,.page-title button{min-height:34px!important;font-size:.66rem!important;border-radius:5px!important}
}

@media(max-width:959px){
  body{background:#f2f5f9}.topbar{height:55px!important;padding:7px 10px!important}.topbar-title strong{font-size:.8rem}.topbar-title small{font-size:.58rem}.top-actions .quiet{min-height:34px!important;border-radius:6px!important;padding:6px 8px!important;font-size:.67rem!important}.phone-nav{top:55px!important;background:#102f50!important}.phone-nav-row{padding:4px 7px!important}.phone-nav-item{min-height:36px!important;border-radius:5px!important;font-size:.72rem!important}.phone-nav-item.active{background:#1768e8!important;color:#fff!important}.phone-nav-row.sub .phone-nav-item.active{background:#fff!important;color:#1768e8!important}
  main{padding:10px 9px 72px!important}.desktop-workcenter{display:none!important}.mobile-workcenter{display:block!important}.mobile-home-head{padding:3px 1px 8px!important}.mobile-home-role{font-size:.62rem!important;color:#1768e8!important}.mobile-home-head h1{font-size:1.25rem!important;margin:2px 0!important}.mobile-home-head p{font-size:.68rem!important}.mobile-notify-button{border-radius:6px!important;min-height:37px!important;background:#fff!important;border:1px solid #d8e2ed!important;color:#1768e8!important}
  .mobile-home-stats{grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:5px!important}.mobile-stat{min-height:62px!important;border-radius:7px!important;padding:8px!important;background:#fff!important;border:1px solid #d9e2ed!important}.mobile-stat span{font-size:.55rem!important}.mobile-stat strong{font-size:1rem!important}.mobile-stat.has{box-shadow:inset 0 3px 0 #e89b16!important}
  .mobile-home-card{border-radius:8px!important;border:1px solid #d9e2ed!important;padding:10px!important;margin-top:8px!important;box-shadow:0 2px 8px rgba(25,55,87,.04)!important}.mobile-card-head span{font-size:.54rem!important;color:#1768e8!important}.mobile-card-head h2{font-size:.82rem!important}.mobile-card-head button{min-height:31px!important;border-radius:5px!important;font-size:.6rem!important}.mobile-priority-row{border-radius:6px!important;padding:9px!important}.mobile-priority-row strong{font-size:.7rem!important}.mobile-priority-row small{font-size:.58rem!important}.mobile-action-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:6px!important}.mobile-action-grid button{min-height:74px!important;border-radius:8px!important;background:#fff!important;border:1px solid #d7e1ec!important;padding:9px 6px!important;display:grid!important;place-items:center!important;text-align:center!important}.mobile-action-grid button:before{content:'↗';width:28px;height:28px;border-radius:8px;background:#edf4ff;color:#1768e8;display:grid;place-items:center;font-size:.8rem}.mobile-action-grid button strong{font-size:.68rem!important}.mobile-action-grid button span{font-size:.54rem!important}.mobile-alert-list button{border-radius:5px!important;padding:8px!important}.mobile-connect-grid button{border-radius:6px!important;min-height:55px!important}.mobile-connect-grid button span{font-size:.58rem!important}.mobile-connect-grid button strong{font-size:.75rem!important}
  .quick-upload-bar{height:60px!important;box-shadow:0 -4px 14px rgba(20,48,80,.10)!important}.quick-bar-btn{min-height:60px!important;font-size:.75rem!important}.quick-bar-btn.camera{background:#7138c7!important}.quick-bar-btn.file{background:#1768e8!important}
  .form-card,.station-card{border-radius:8px!important;padding:12px!important}.form-card input,.form-card select,.form-card textarea{min-height:44px!important;border-radius:7px!important;font-size:16px!important}.primary,.quiet{border-radius:7px!important}.page-title h1{font-size:1.2rem!important}.data-table-wrap{overflow-x:auto}.data-table{min-width:680px}
}

/* =========================================================
   v1.0.15 전체 업무화면 완성형 UI
   - 기존 DOM id, 이벤트, API, 권한 구조를 그대로 유지한다.
   - PC는 Excel/ERP형 고밀도 작업공간, 모바일은 현장용 별도 화면이다.
   - 이 블록만 마지막에 덧붙여 v1.0.14 복구 기준을 점진적으로 확장한다.
   ========================================================= */
:root{
  --ui115-sidebar:196px;
  --ui115-topbar:50px;
  --ui115-navy:#0b2743;
  --ui115-navy-2:#12395e;
  --ui115-blue:#1768e8;
  --ui115-green:#168451;
  --ui115-green-bg:#eaf7f0;
  --ui115-amber:#b96f05;
  --ui115-amber-bg:#fff4dc;
  --ui115-red:#bd3028;
  --ui115-red-bg:#ffebe9;
  --ui115-line:#d5dee8;
  --ui115-head:#edf2f7;
  --ui115-bg:#f2f5f9;
  --ui115-text:#17304d;
  --ui115-muted:#63748a;
}

.empty-card{
  min-height:42px!important;
  padding:10px 12px!important;
  border:1px solid var(--ui115-line)!important;
  border-radius:3px!important;
  background:#f8fafc!important;
  color:var(--ui115-muted)!important;
  display:flex!important;
  align-items:center!important;
  justify-content:flex-start!important;
  font-size:.75rem!important;
  box-shadow:none!important;
}
.empty-card.problem{background:var(--ui115-red-bg)!important;color:var(--ui115-red)!important;border-color:#efc1bd!important}
.message{min-height:0;margin-top:6px;font-size:.75rem;font-weight:700}
.badge{border-radius:3px!important}

@media(min-width:960px){
  html,body{background:var(--ui115-bg)!important;color:var(--ui115-text)!important}
  body{font-size:14px!important}
  .sidebar{
    width:var(--ui115-sidebar)!important;
    padding:10px 9px!important;
    background:linear-gradient(180deg,var(--ui115-navy) 0%,#0d3153 64%,#081d32 100%)!important;
    border-right:1px solid #06182a!important;
  }
  .sidebar-brand{min-height:48px!important;padding:2px 4px 9px!important;margin-bottom:7px!important}
  .sidebar-brand-mark{width:30px!important;height:30px!important;border-radius:4px!important;font-size:.9rem!important}
  .sidebar-brand-text{font-size:.82rem!important;white-space:nowrap!important}
  .sidebar-brand-copy small{font-size:.63rem!important}
  .sidebar-nav{gap:3px!important}
  .role-nav-group{margin:0!important}
  .role-nav-group-head{min-height:32px!important;padding:5px 8px!important;font-size:.7rem!important;border-radius:3px!important}
  .role-nav-item{min-height:42px!important;padding:7px 9px!important;border-radius:3px!important;font-size:.78rem!important;gap:8px!important}
  .role-nav-icon{width:20px!important;font-size:.78rem!important}
  .role-nav-item.active{box-shadow:inset 3px 0 0 #83b4ff,0 3px 9px #051a3026!important}
  .quick-upload{padding-top:8px!important;gap:5px!important}
  .quick-btn{min-height:45px!important;padding:7px 9px!important;border-radius:3px!important}
  .quick-btn span>strong{font-size:.74rem!important}.quick-btn span>small{font-size:.6rem!important}

  .topbar{
    left:var(--ui115-sidebar)!important;
    height:var(--ui115-topbar)!important;
    padding:5px 12px!important;
    border-bottom:1px solid var(--ui115-line)!important;
    box-shadow:none!important;
    background:#fff!important;
  }
  .topbar-title strong{font-size:.82rem!important}.topbar-title small{font-size:.64rem!important}
  .top-actions{gap:4px!important}
  .top-actions button,.top-actions select,.admin-role-preview select{min-height:38px!important;font-size:.72rem!important;border-radius:3px!important}
  .zoom-option{min-width:34px!important;min-height:34px!important;border-radius:3px!important}
  #mainContent{
    margin-left:var(--ui115-sidebar)!important;
    padding:10px 12px 22px!important;
    max-width:none!important;
    background:var(--ui115-bg)!important;
  }
  .view{width:100%!important;max-width:none!important;min-width:0}
  .page-title{min-height:42px!important;margin:0 0 7px!important;padding:0!important}
  .page-title h1{font-size:1.15rem!important;line-height:1.2!important;margin:0 0 2px!important;color:#102b49!important}
  .page-title p{font-size:.72rem!important;line-height:1.35!important;color:var(--ui115-muted)!important;margin:0!important}

  button,input,select,textarea{font-family:inherit}
  button.primary,button.quiet,.primary,.quiet,.tab-button,.segmented button{
    min-height:42px!important;
    padding:8px 12px!important;
    border-radius:3px!important;
    font-size:.75rem!important;
    font-weight:800!important;
  }
  .primary{background:var(--ui115-blue)!important;border-color:#0e59ca!important}
  .quiet{background:#fff!important;border-color:var(--ui115-line)!important;color:#314a65!important}
  .form-card,.panel,.overview-panel,.trend-panel,.role-dashboard-panel,.operation-submit-panel,.operation-inbox-panel{
    border:1px solid var(--ui115-line)!important;
    border-radius:4px!important;
    box-shadow:0 1px 3px #142f4a0a!important;
    background:#fff!important;
  }
  .form-card,.form-card.compact,.panel{padding:10px!important;margin-bottom:8px!important}
  .form-card h2,.panel h2{font-size:.91rem!important;margin:0 0 7px!important}
  .form-card h3,.panel h3{font-size:.8rem!important;margin:9px 0 5px!important}
  .form-card p,.form-help{font-size:.71rem!important;line-height:1.45!important;margin:4px 0 8px!important}
  .form-grid{grid-template-columns:repeat(auto-fit,minmax(175px,1fr))!important;gap:7px 9px!important}
  .form-grid .wide-field{grid-column:span 2}
  .form-card label,.panel label{font-size:.7rem!important;font-weight:750!important;margin:0!important;gap:4px!important}
  .form-card input,.form-card select,.form-card textarea,.panel input,.panel select,.panel textarea,
  .toolbar input,.toolbar select,.sheet-toolbar input,.sheet-toolbar select{
    min-height:42px!important;
    padding:8px 9px!important;
    border:1px solid #cfd9e4!important;
    border-radius:3px!important;
    background:#fff!important;
    color:#203953!important;
    font-size:.75rem!important;
  }
  .form-card textarea,.panel textarea{min-height:72px!important;resize:vertical}
  .button-row,.btn-row{gap:6px!important;align-items:center!important}
  .tab-bar{min-height:46px!important;padding:3px!important;gap:2px!important;border:1px solid var(--ui115-line)!important;border-radius:4px!important;background:#eaf0f6!important;margin-bottom:8px!important}
  .tab-button{background:transparent!important;color:#52677d!important;border:0!important}
  .tab-button.active{background:#fff!important;color:var(--ui115-blue)!important;box-shadow:0 1px 3px #16314d17!important}
  .segmented{gap:2px!important;padding:3px!important;border-radius:4px!important;background:#eaf0f6!important;margin-bottom:8px!important}
  .segmented button.active{background:#fff!important;color:var(--ui115-blue)!important}
  .section-label{font-size:.76rem!important;margin:9px 0 5px!important;color:#3d536a!important}

  .data-table,.sheet-table{width:100%;font-size:.75rem!important}
  .data-table th,.sheet-table th{height:34px!important;padding:6px 8px!important;background:var(--ui115-head)!important;color:#425970!important;font-size:.7rem!important;font-weight:850!important;border:1px solid #d8e1ea!important}
  .data-table td,.sheet-table td{height:34px!important;padding:6px 8px!important;font-size:.73rem!important;border:1px solid #e0e7ef!important;background:#fff!important}
  .table-scroll,.sheet-wrap{border:1px solid var(--ui115-line)!important;border-radius:3px!important;box-shadow:none!important}

  /* 대표·관리자·소장 대시보드 */
  .target-kpi-grid{grid-template-columns:repeat(7,minmax(122px,1fr))!important;gap:6px!important;overflow-x:auto;padding-bottom:2px}
  .target-kpi{min-height:76px!important;border-radius:4px!important;padding:9px 10px!important;gap:8px!important;box-shadow:none!important}
  .target-kpi-icon{width:32px!important;height:32px!important;border-radius:4px!important;font-size:.86rem!important}
  .target-kpi-copy small{font-size:.68rem!important}.target-kpi-copy strong{font-size:1.03rem!important}.target-kpi-copy em{font-size:.62rem!important}
  .target-panel{border-radius:4px!important;box-shadow:none!important}
  .target-panel-head{min-height:43px!important;padding:7px 10px!important;background:#fff!important}
  .target-panel-head span{font-size:.62rem!important}.target-panel-head h2{font-size:.82rem!important}.target-link{min-height:34px!important;font-size:.68rem!important}
  .target-station-panel .role-station-mini{min-height:84px!important}
  .role-station-table-head,.role-station-mini{
    grid-template-columns:minmax(180px,.9fr) minmax(330px,1.45fr) minmax(390px,1.6fr) 30px!important;
  }
  .role-station-table-head{padding:8px 9px!important;font-size:.7rem!important;background:var(--ui115-head)!important}
  .role-station-table-head small{font-size:.61rem!important}
  .role-station-mini{padding:7px 8px!important;border-left:3px solid var(--ui115-green)!important}
  .role-station-mini.needs{border-left-color:var(--ui115-red)!important}
  .station-main-title strong{font-size:.82rem!important}.station-main-title small{font-size:.67rem!important}.station-main-sales b{font-size:.75rem!important}
  .station-tank-line{grid-template-columns:65px minmax(90px,1fr) minmax(128px,.9fr)!important;gap:6px!important}
  .station-tank-name{font-size:.67rem!important}.station-tank-track{height:8px!important}
  .station-tank-value{display:grid;grid-template-columns:minmax(0,1fr) 34px;gap:4px;align-items:center;min-width:0}
  .station-tank-value b{font-size:.62rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#4f6175}
  .station-tank-value strong{font-size:.65rem!important;text-align:right!important}
  .station-status-cells{grid-template-columns:repeat(5,minmax(62px,1fr))!important;gap:4px!important}
  .work-status-cell{min-height:50px!important;border-radius:3px!important}
  .work-status-cell span{font-size:.64rem!important}.work-status-cell b{font-size:.71rem!important}
  .work-status-cell.done{background:var(--ui115-green-bg)!important;color:#0f7042!important;border-color:#b9e1ca!important}
  .work-status-cell.warn{background:var(--ui115-amber-bg)!important;color:#925700!important;border-color:#ecd299!important}
  .work-status-cell.missing,.work-status-cell.danger{background:var(--ui115-red-bg)!important;color:var(--ui115-red)!important;border-color:#efbbb7!important}
  .target-insight-grid,.target-bottom-grid{gap:7px!important;margin-top:7px!important}
  .target-insight-grid{grid-template-columns:1.05fr 1.25fr .9fr!important}.target-bottom-grid{grid-template-columns:1.2fr 1fr .9fr!important}
  .target-sales-legend button,.target-tank-list button,.target-list-row,.target-action-row{min-height:36px!important}
  .target-sales-legend button span,.target-tank-list button span b,.target-action-row b,.target-list-row b{font-size:.68rem!important}
  .target-sales-legend button b,.target-tank-list button strong,.target-tank-list .pct,.target-action-row small,.target-list-row small,.target-list-row time{font-size:.61rem!important}
  .target-tank-list button{grid-template-columns:minmax(100px,.75fr) minmax(150px,1fr) minmax(90px,.9fr) 38px!important}
  .target-empty-list,.target-empty-chart{font-size:.7rem!important}

  /* 마감·현금: 입력과 결과를 한 화면에 */
  .closing-station{display:grid!important;grid-template-columns:repeat(2,minmax(220px,1fr))!important;gap:9px!important}
  .closing-actions{grid-template-columns:repeat(8,minmax(105px,1fr))!important;gap:5px!important;overflow-x:auto;margin-bottom:8px!important}
  .closing-action{min-height:66px!important;padding:9px 10px!important;border-radius:4px!important}
  .closing-action strong{font-size:.78rem!important}.closing-action span{font-size:.63rem!important}
  .closing-editor{border-top:3px solid var(--ui115-blue)!important}
  .cash-layout{grid-template-columns:minmax(620px,1.55fr) minmax(300px,.7fr)!important;gap:8px!important}
  .cash-summary{position:sticky;top:calc(var(--ui115-topbar) + 10px)}
  .difference-box{border-radius:4px!important;padding:13px!important}

  /* 채팅: 작성 / 메시지 / 기기 설정 3열 */
  .message-workspace{display:grid;grid-template-columns:minmax(300px,.72fr) minmax(440px,1.35fr) minmax(260px,.62fr);gap:8px;align-items:start}
  .message-workspace>.form-card{margin:0!important}
  .message-compose-panel{position:sticky;top:calc(var(--ui115-topbar) + 10px)}
  .message-compose-panel .form-grid{grid-template-columns:1fr!important}
  .message-compose-panel .wide-field{grid-column:auto!important}
  .message-thread-panel{border:1px solid var(--ui115-line);background:#fff;padding:6px;min-height:420px}
  .message-card{border-radius:3px!important;border-left:3px solid #b8c6d6!important;margin:0!important}
  .message-card.unread{border-left-color:var(--ui115-blue)!important}.message-card.urgent{border-left-color:var(--ui115-red)!important}
  .message-device-panel{position:sticky;top:calc(var(--ui115-topbar) + 10px)}

  /* 보고센터: 상태표 + 입력/목록 + 상세 */
  .operation-status-strip{margin-bottom:7px!important}
  .operation-layout{grid-template-columns:minmax(340px,.72fr) minmax(560px,1.28fr)!important;gap:8px!important}
  .operation-submit-card{position:sticky;top:calc(var(--ui115-topbar) + 10px)}
  .operation-report-row{min-height:42px!important;border-radius:3px!important;padding:7px 9px!important}

  /* 자료함: 작은 업로드 패널 + 고밀도 자료목록 */
  .document-workspace{display:grid;grid-template-columns:minmax(300px,.55fr) minmax(620px,1.45fr);gap:8px;align-items:start}
  .document-upload-panel{position:sticky;top:calc(var(--ui115-topbar) + 10px);margin:0!important}
  .document-upload-panel .form-grid{grid-template-columns:1fr!important}.document-upload-panel .upload-primary-actions{grid-template-columns:1fr 1fr!important;gap:5px!important}
  .document-list-panel{border:1px solid var(--ui115-line);background:#fff;padding:0!important;gap:0!important;min-height:160px}

  /* 재고·탱크·발주: 입력 폼은 짧게, 현황은 행 단위 */
  [data-view="inventory"]>.form-card{max-width:none!important}
  [data-view="inventory"]>[data-inventory-pane="item"],
  [data-view="inventory"]>[data-inventory-pane="movement"]{border-top:3px solid var(--ui115-blue)!important}
  [data-view="inventory"]>[data-inventory-pane="tank"] .form-grid,
  [data-view="inventory"]>[data-inventory-pane="supplier"] .form-grid{grid-template-columns:repeat(auto-fit,minmax(165px,1fr))!important}
  #inventoryCards{border:1px solid var(--ui115-line);background:#fff;padding:0!important;gap:0!important}
  #tankCards,#orderCards,#supplierList{margin-top:8px}

  /* 원장: 입력 패널 + 잔액표 */
  .ledger-workspace{display:grid;grid-template-columns:minmax(350px,.72fr) minmax(540px,1.28fr);gap:8px;align-items:start}
  .ledger-entry-panel{position:sticky;top:calc(var(--ui115-topbar) + 10px);margin:0!important}
  .ledger-entry-panel .form-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .ledger-list-panel{border:1px solid var(--ui115-line);background:#fff;padding:0!important;gap:0!important;min-height:120px}

  /* 공통 Excel형 동적 목록 */
  .dense-record-head{display:grid;align-items:center;min-height:35px;padding:6px 9px;background:var(--ui115-head);border-bottom:1px solid var(--ui115-line);color:#486077;font-size:.69rem;font-weight:850}
  .dense-record-row{display:grid!important;align-items:center;gap:8px;min-height:52px!important;margin:0!important;padding:6px 9px!important;border:0!important;border-bottom:1px solid #e1e8ef!important;border-radius:0!important;box-shadow:none!important;background:#fff!important}
  .dense-record-row:last-child{border-bottom:0!important}
  .dense-record-row:hover{background:#f8fbff!important}
  .dense-record-row .station-head{margin:0!important;gap:6px!important}.dense-record-row .station-head strong{font-size:.75rem!important;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .dense-record-row .amount-row{margin:0!important;gap:5px 10px!important;font-size:.69rem!important}
  .dense-record-row .button-row{justify-content:flex-end!important;flex-wrap:wrap!important}
  .dense-record-row .button-row button{min-height:34px!important;padding:5px 8px!important;font-size:.67rem!important}
  .document-record-head,.document-record-row{grid-template-columns:minmax(260px,1.2fr) minmax(145px,.55fr) minmax(300px,1fr)}
  /* 아래 .inventory-view 블록(재고 현황 표 새 디자인)이 이 값을 덮어쓴다. 여기 것은 최소 fallback. */
  .inventory-record-head,.inventory-record-row{grid-template-columns:minmax(170px,.75fr) minmax(260px,1.05fr) minmax(250px,1fr) minmax(250px,1fr)}
  .inventory-record-row .forecast-note{margin:0!important;font-size:.68rem!important;line-height:1.35!important}
  .inventory-record-row .inline-settings{display:grid!important;grid-template-columns:1fr 1fr auto!important;gap:5px!important;margin:0!important}
  .inventory-record-row .inline-settings label{font-size:.62rem!important}.inventory-record-row .inline-settings input{min-height:36px!important}
  .ledger-record-head,.ledger-record-row{grid-template-columns:minmax(240px,1fr) minmax(260px,1fr)}

  /* 매입·마진·관리 */
  .purchase-toolbar{min-height:48px!important;padding:6px 9px!important;border-radius:4px!important}
  .kpi-row,.metric-grid{gap:6px!important}.kpi,.metric{min-height:72px!important;padding:9px!important;border-radius:4px!important}
  .analysis-columns{grid-template-columns:1fr 1fr!important;gap:8px!important}
  #manageTabs{position:sticky;top:var(--ui115-topbar);z-index:12}
  /* display 에는 !important 를 주지 않는다 — 탭 전환(showTab)이 style.display:none 로 숨길 때
     계정 생성 패널이 다른 탭(감사·설비 등)에 새어 나오던 버그(2026-08-30) */
  #userManager:not([hidden]){display:grid;grid-template-columns:minmax(360px,.72fr) minmax(520px,1.28fr)!important;column-gap:10px!important;align-items:start!important}
  #userManager>h2,#userManager>p,#userManager>.form-grid,#userManager>h3,#userManager>.check-grid,#userManager>#createUser,#userManager>#userMessage{grid-column:1}
  #userManager>#userCards{grid-column:2;grid-row:1/span 20;margin:0!important}
  .check-grid{gap:5px!important}.check-grid label{min-height:42px!important;border-radius:3px!important;padding:7px 8px!important}
  .user-access-card{border-radius:3px!important;padding:9px!important}
  .user-access-card details{margin-top:7px!important;padding-top:7px!important}
  .step-block,.backup-kind,.warn-box,.restore-kind{border-radius:4px!important;box-shadow:none!important}
}

@media(max-width:1190px) and (min-width:960px){
  :root{--ui115-sidebar:184px}
  .message-workspace{grid-template-columns:300px minmax(430px,1fr)}
  .message-device-panel{grid-column:1/-1;position:static;display:grid!important;grid-template-columns:1fr auto;align-items:center}
  .document-workspace{grid-template-columns:300px minmax(520px,1fr)}
  .role-station-table-head,.role-station-mini{grid-template-columns:minmax(160px,.8fr) minmax(270px,1.2fr) minmax(330px,1.5fr) 28px!important}
  .target-insight-grid,.target-bottom-grid{grid-template-columns:1fr 1fr!important}
  .target-insight-grid>:last-child,.target-bottom-grid>:last-child{grid-column:1/-1}
}

@media(max-width:959px){
  #mainContent{padding:10px 9px 78px!important}
  .page-title{min-height:44px!important;margin-bottom:8px!important}.page-title h1{font-size:1.18rem!important}.page-title p{font-size:.73rem!important}
  .message-workspace,.document-workspace,.ledger-workspace{display:grid;grid-template-columns:1fr;gap:8px}
  .message-workspace>.form-card,.document-workspace>.form-card,.ledger-workspace>.form-card{margin:0!important}
  .message-thread-panel,.document-list-panel,.ledger-list-panel{padding:0!important;gap:0!important}
  .dense-record-head{display:none!important}
  .dense-record-row{border-radius:8px!important;margin-bottom:7px!important}
  .closing-actions{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:7px!important}.closing-action{min-height:86px!important}
  .cash-layout,.operation-layout,.analysis-columns{grid-template-columns:1fr!important}
  .form-grid .wide-field{grid-column:auto!important}
  .work-status-cell.warn{background:var(--ui115-amber-bg)!important;color:var(--ui115-amber)!important;border-color:#efd59f!important}
  .work-status-cell.danger{background:var(--ui115-red-bg)!important;color:var(--ui115-red)!important;border-color:#efbbb7!important}
  .quick-upload-bar{height:auto!important;min-height:62px!important;padding:0 0 env(safe-area-inset-bottom)!important;gap:0!important}
  .quick-bar-btn{min-height:62px!important;border:0!important;border-radius:0!important;font-size:.79rem!important}
  .mobile-home-stats{gap:6px!important}.mobile-stat{min-height:68px!important;padding:8px!important}
  .mobile-action-grid button,.mobile-work-actions button{min-height:82px!important}
  .mobile-priority-row,.mobile-alert-list button,.mobile-connect-grid button{min-height:48px!important}
  .form-card input,.form-card select,.form-card textarea,.panel input,.panel select,.panel textarea{min-height:48px!important;font-size:16px!important}
  button.primary,button.quiet,.primary,.quiet{min-height:46px!important}
}

/* =========================================================
   v1.0.12 사용자 확정 시안형 실제 운영 UI
   - 네이비 사이드바 + Excel형 고밀도 대시보드
   - 실제 API 데이터만 표시, 빈 자료는 빈 상태로 표시
   - PC/모바일 레이아웃은 계속 분리
   ========================================================= */
:root{
  --ui112-navy:#0d2a48;
  --ui112-navy2:#123a63;
  --ui112-blue:#1768e8;
  --ui112-blue-soft:#eef5ff;
  --ui112-green:#169b5b;
  --ui112-green-soft:#eaf8f0;
  --ui112-red:#e5483f;
  --ui112-red-soft:#fff0ef;
  --ui112-amber:#f59e0b;
  --ui112-amber-soft:#fff7e7;
  --ui112-bg:#f4f7fb;
  --ui112-panel:#ffffff;
  --ui112-line:#d9e3ee;
  --ui112-text:#142a45;
  --ui112-muted:#718198;
}
body{background:var(--ui112-bg);color:var(--ui112-text)}
.sidebar{background:linear-gradient(180deg,var(--ui112-navy) 0%,#102f50 62%,#0b223a 100%)!important}
.sidebar-brand{border-bottom:1px solid rgba(255,255,255,.1)!important}
.role-nav-group-head,.role-nav-item{border-radius:5px!important}
.role-nav-group-head{color:#94abc2!important;font-size:.68rem!important;letter-spacing:.01em}
.role-nav-item{min-height:38px!important;color:#dce8f4!important;font-size:.72rem!important}
.role-nav-item.active{background:linear-gradient(90deg,#1e66d5,#1768e8)!important;color:#fff!important;box-shadow:0 5px 14px rgba(23,104,232,.22)!important}
.sidebar-upload-fixed button{border-radius:5px!important}

@media(min-width:960px){
  #mainContent{background:var(--ui112-bg)!important;padding:12px 14px 24px!important}
  .view{max-width:none!important}
  .page-title{min-height:46px!important;margin:0 0 8px!important;align-items:center!important}
  .page-title h1{font-size:1.22rem!important;color:#132b47!important;margin:0 0 2px!important;letter-spacing:-.025em}
  .page-title p{font-size:.63rem!important;color:#748398!important;margin:0!important}
  .page-title .btn-row{gap:6px!important}
  .page-title input,.page-title select,.page-title button{min-height:34px!important;font-size:.62rem!important;border-radius:5px!important}

  /* 확정 시안형 메인 대시보드 */
  .target-dashboard-top,.target-dashboard-board,.target-dashboard-lower{width:100%;min-width:0;margin:0 0 8px}
  .target-dashboard-loading{min-height:90px;display:grid;place-items:center;background:#fff;border:1px solid var(--ui112-line);color:var(--ui112-muted);font-size:.7rem}
  .target-kpi-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
  .target-kpi{position:relative;min-height:78px;background:#fff;border:1px solid var(--ui112-line);border-radius:6px;padding:10px 9px;display:flex;align-items:center;gap:8px;box-shadow:0 2px 7px rgba(24,54,85,.035);overflow:hidden}
  .target-kpi:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:#b9c8d9}
  .target-kpi.info:before{background:var(--ui112-blue)}.target-kpi.ok:before{background:var(--ui112-green)}.target-kpi.warn:before{background:var(--ui112-amber)}.target-kpi.danger:before{background:var(--ui112-red)}
  .target-kpi-icon{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:#f3f7fd;color:var(--ui112-blue);font-size:.9rem;font-weight:900;flex:none}
  .target-kpi.ok .target-kpi-icon{background:var(--ui112-green-soft);color:var(--ui112-green)}.target-kpi.warn .target-kpi-icon{background:var(--ui112-amber-soft);color:var(--ui112-amber)}.target-kpi.danger .target-kpi-icon{background:var(--ui112-red-soft);color:var(--ui112-red)}
  .target-kpi-copy{min-width:0;display:grid;gap:1px}.target-kpi-copy small{font-size:.55rem;color:#718299;font-weight:750}.target-kpi-copy strong{font-size:.97rem;color:#112944;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.target-kpi-copy em{font-size:.5rem;color:#8492a4;font-style:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

  .target-panel{background:#fff;border:1px solid var(--ui112-line);border-radius:6px;box-shadow:0 2px 8px rgba(25,55,86,.04);overflow:hidden;min-width:0}
  .target-panel-head{min-height:40px;padding:7px 10px;border-bottom:1px solid #e8eef4;display:flex;align-items:center;justify-content:space-between;gap:10px;background:#fff}
  .target-panel-head>div{min-width:0}.target-panel-head span{display:block;font-size:.49rem;color:var(--ui112-blue);font-weight:950;margin-bottom:1px}.target-panel-head h2{font-size:.78rem;color:#17304e;margin:0;font-weight:950;letter-spacing:-.02em}.target-link{border:0;background:#fff;color:var(--ui112-blue);font-size:.55rem;font-weight:850;padding:5px 6px}
  .target-station-panel{overflow:visible}.target-station-panel .role-station-table{border:0!important;border-bottom:0!important}.target-station-panel .role-station-table-head{background:#f5f8fc!important;border-bottom:1px solid #dce5ef!important;border-top:0!important}
  .target-station-panel .role-station-mini{min-height:102px!important;background:#fff!important}.target-station-panel .role-station-mini.needs{background:#fffdfa!important}

  .target-insight-grid{display:grid;grid-template-columns:1.05fr 1.15fr 1fr;gap:8px;margin-top:8px}
  .target-insight-grid>.target-panel{min-height:205px}
  .target-bottom-grid{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:8px;margin-top:8px}
  .target-bottom-grid>.target-panel{min-height:160px}

  .target-sales-mix{display:grid;grid-template-columns:150px 1fr;gap:12px;align-items:center;padding:12px}
  .target-donut{width:126px;height:126px;border-radius:50%;display:grid;place-items:center;margin:auto;position:relative}.target-donut:after{content:"";position:absolute;inset:22px;background:#fff;border-radius:50%;box-shadow:inset 0 0 0 1px #edf1f5}.target-donut>span{position:relative;z-index:1;text-align:center;display:grid;gap:1px}.target-donut small{font-size:.48rem;color:#77879a}.target-donut strong{font-size:.78rem;color:#122a47}
  .target-sales-legend{display:grid;gap:3px}.target-sales-legend button{border:0;border-bottom:1px solid #edf1f5;background:#fff;min-height:27px;padding:3px 2px;display:grid;grid-template-columns:7px 1fr 34px;gap:6px;align-items:center;text-align:left}.target-sales-legend button i{width:7px;height:7px;border-radius:2px}.target-sales-legend button span{font-size:.53rem;font-weight:800;color:#40546c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.target-sales-legend button b{font-size:.52rem;text-align:right;color:#51647a}

  .target-tank-list{display:grid;padding:8px 10px}.target-tank-list button{border:0;border-bottom:1px solid #edf1f5;background:#fff;min-height:29px;padding:4px 2px;display:grid;grid-template-columns:minmax(90px,.95fr) 66px minmax(90px,1fr) 30px;gap:7px;align-items:center;text-align:left}.target-tank-list button span b,.target-tank-list button span small{display:block}.target-tank-list button span b{font-size:.52rem;color:#29415d}.target-tank-list button span small{font-size:.46rem;color:#7e8da0}.target-tank-list button>strong{font-size:.5rem;color:#55677a;text-align:right}.target-tank-list button>i{height:7px;background:#edf1f5;overflow:hidden;border-radius:1px}.target-tank-list button>i em{display:block;height:100%}.target-tank-list .pct{font-size:.51rem;text-align:right}.target-tank-list button.risk .pct{color:var(--ui112-red)}

  .target-progress-bars{height:150px;display:grid;grid-template-columns:repeat(5,1fr);gap:8px;align-items:end;padding:13px 12px 9px}.target-progress-bars>div{height:100%;display:grid;grid-template-rows:18px 1fr 18px;align-items:end;text-align:center}.target-progress-bars span{font-size:.5rem;color:#66788d;font-weight:800}.target-progress-bars i{height:100%;max-height:105px;background:#f0f3f7;display:flex;align-items:end;justify-content:center;margin:0 6px;overflow:hidden}.target-progress-bars i em{display:block;width:100%;min-height:4px}.target-progress-bars strong{font-size:.52rem;color:#3f536b}

  .target-list{display:grid;padding:4px 8px}.target-list-row{border:0;border-bottom:1px solid #edf1f5;background:#fff;display:grid;grid-template-columns:7px 1fr auto;gap:7px;align-items:center;min-height:33px;text-align:left;padding:4px 2px}.target-list-row>i{width:6px;height:6px;border-radius:50%;background:var(--ui112-blue)}.target-list-row.priority-high>i,.target-list-row.priority-urgent>i{background:var(--ui112-red)}.target-list-row.priority-normal>i{background:var(--ui112-amber)}.target-list-row span{min-width:0}.target-list-row b{display:block;font-size:.53rem;color:#263d59;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.target-list-row small{display:block;font-size:.45rem;color:#8492a4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.target-list-row time{font-size:.43rem;color:#99a5b5;white-space:nowrap}
  .target-empty-list,.target-empty-chart{color:#7d8b9c;font-size:.54rem}.target-empty-chart{min-height:150px;display:grid;place-items:center;text-align:center;padding:20px}.target-empty-chart strong{display:block;color:#52657a;font-size:.65rem}.target-empty-chart span{display:block;margin-top:4px}

  .target-actions{display:grid;padding:6px 9px}.target-action-row{min-height:39px;border:0;border-bottom:1px solid #edf1f5;background:#fff;padding:5px 3px;display:flex;align-items:center;justify-content:space-between;text-align:left}.target-action-row span{display:grid}.target-action-row b{font-size:.55rem;color:#2c425d}.target-action-row small{font-size:.46rem;color:#8391a3}.target-action-row>strong{font-size:.8rem;color:var(--ui112-blue)}
  .target-quick-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px;padding:9px}.target-quick-grid button{min-height:48px;border:1px solid #e1e8f0;background:#f9fbfe;padding:7px;text-align:left;border-radius:4px}.target-quick-grid button strong{display:block;font-size:.54rem;color:#263f5c}.target-quick-grid button span{display:block;font-size:.44rem;color:var(--ui112-blue);margin-top:3px}

  /* 실제 업무 화면 전체도 동일한 시안 언어로 정돈 */
  .form-card,.overview-panel,.trend-panel,.station-card,.role-dashboard-panel,.operation-submit-panel,.operation-inbox,.recognition-dialog,.password-dialog{border:1px solid var(--ui112-line)!important;border-radius:6px!important;box-shadow:0 2px 8px rgba(24,55,88,.04)!important;background:#fff!important}
  .form-card{padding:11px!important;margin-bottom:8px!important}.form-card h2,.form-card h3{color:#18324f!important}.form-card label{font-size:.62rem!important;color:#52647a!important}.form-card input,.form-card select,.form-card textarea{min-height:36px!important;border:1px solid #d9e2ec!important;border-radius:4px!important;background:#fbfdff!important;font-size:.65rem!important}.form-card textarea{min-height:72px!important}
  button.primary,button.quiet,.primary,.quiet{border-radius:4px!important}.primary{background:var(--ui112-blue)!important}.quiet{border-color:#d8e2ed!important;background:#fff!important;color:#42566e!important}
  table{border-collapse:collapse}.data-table th,.data-table td,.sheet-table th,.sheet-table td{border-color:#e2e9f1!important}.data-table th,.sheet-table th{background:#f5f8fc!important;color:#506279!important;font-size:.58rem!important}.data-table td,.sheet-table td{font-size:.6rem!important}
  .tab-row,.overview-tabs{gap:4px!important}.tab-row button,.overview-tabs button{border-radius:4px!important;font-size:.58rem!important;min-height:32px!important}
  .card-list{gap:7px!important}.station-card{padding:9px!important}.station-head h2,.station-head strong{color:#203a58!important}
}

@media(max-width:959px){
  #mainContent{background:#f7f9fc!important}
  .page-title{padding:5px 2px!important;margin-bottom:7px!important}.page-title h1{font-size:1.18rem!important}.page-title p{font-size:.72rem!important}
  .mobile-work-center,.phone-nav{font-family:inherit}
  .mobile-work-actions button,.mobile-priority-row,.mobile-stat,.mobile-work-section{border-radius:12px!important;box-shadow:0 3px 12px rgba(25,55,85,.05)!important;border-color:#dfe7f0!important;background:#fff!important}
  .mobile-work-actions button{min-height:84px!important}.mobile-work-actions button strong{font-size:.9rem!important}.mobile-work-section h2{color:#1a3351!important}
  .phone-nav{background:rgba(255,255,255,.98)!important;border-top:1px solid #dce5ef!important;box-shadow:0 -4px 16px rgba(25,55,85,.07)!important}
  .phone-nav button.active{color:var(--ui112-blue)!important}
  /* PC형 대시보드를 폰에서는 그대로 축소하지 않는다. */
  [data-view="dashboard"] .target-kpi-grid,[data-view="dashboard"] .target-insight-grid,[data-view="dashboard"] .target-bottom-grid,[data-view="dashboard"] .target-dashboard-board{display:none!important}
  [data-view="dashboard"] .target-dashboard-top:after{content:"휴대폰은 현장용 ‘오늘’ 화면에서 같은 실제 자료를 더 간단하게 보여드립니다.";display:block;background:#fff;border:1px solid #dce5ef;border-radius:10px;padding:14px;color:#64758a;font-size:.78rem;line-height:1.5}
}

/* v1.0.15 우선순위 고정: 긴급복구 CSS 뒤에서도 완성형 레이어가 이긴다. */
@media(min-width:960px){
  .sidebar,.sidebar-nav{box-sizing:border-box!important;width:var(--ui115-sidebar)!important;padding:10px 9px!important;background:linear-gradient(180deg,var(--ui115-navy) 0%,#0d3153 64%,#081d32 100%)!important}
  .sidebar-brand{min-height:48px!important;padding:2px 4px 9px!important}.sidebar-brand-mark{width:30px!important;height:30px!important;border-radius:4px!important}.sidebar-brand-text{font-size:.82rem!important}
  .role-nav-group-head{min-height:32px!important;padding:5px 8px!important;font-size:.7rem!important;border-radius:3px!important}.role-nav-item{min-height:42px!important;padding:7px 9px!important;border-radius:3px!important;font-size:.78rem!important}
  .topbar{left:auto!important;margin-left:var(--ui115-sidebar)!important;height:var(--ui115-topbar)!important;padding:5px 12px!important;border-bottom:1px solid var(--ui115-line)!important;box-shadow:none!important}
  #mainContent{margin-left:var(--ui115-sidebar)!important;padding:10px 12px 22px!important;background:var(--ui115-bg)!important}
  .page-title{min-height:42px!important;margin:0 0 7px!important;padding:0!important}.page-title h1{font-size:1.15rem!important}.page-title p{font-size:.72rem!important}
  button.primary,button.quiet,.primary,.quiet,.tab-button,.segmented button{min-height:42px!important;padding:8px 12px!important;border-radius:3px!important;font-size:.75rem!important}
  .form-card,.overview-panel,.trend-panel,.station-card,.role-dashboard-panel,.operation-submit-panel,.operation-inbox-panel,.recognition-dialog,.password-dialog{border:1px solid var(--ui115-line)!important;border-radius:4px!important;box-shadow:0 1px 3px #142f4a0a!important}
  .form-card,.form-card.compact,.panel{padding:10px!important;margin-bottom:8px!important}.form-card h2,.form-card h3{color:#18324f!important}.form-card label{font-size:.7rem!important}
  .form-card input,.form-card select,.form-card textarea,.panel input,.panel select,.panel textarea{min-height:42px!important;border-radius:3px!important;background:#fff!important;font-size:.75rem!important}
  .data-table th,.sheet-table th{background:var(--ui115-head)!important;font-size:.7rem!important;padding:6px 8px!important}.data-table td,.sheet-table td{font-size:.73rem!important;padding:6px 8px!important}
  .target-kpi-grid{grid-template-columns:repeat(7,minmax(122px,1fr))!important;gap:6px!important}.target-kpi{min-height:76px!important;border-radius:4px!important;padding:9px 10px!important}.target-kpi-copy small{font-size:.68rem!important}.target-kpi-copy strong{font-size:1.03rem!important}.target-kpi-copy em{font-size:.62rem!important}
  .target-panel{border-radius:4px!important}.target-panel-head{min-height:43px!important;padding:7px 10px!important}.target-panel-head span{font-size:.62rem!important}.target-panel-head h2{font-size:.82rem!important}
  .role-station-table-head,.role-station-mini{grid-template-columns:minmax(180px,.9fr) minmax(330px,1.45fr) minmax(390px,1.6fr) 30px!important}.target-station-panel .role-station-mini{min-height:84px!important}.role-station-table-head{font-size:.7rem!important}.role-station-table-head small{font-size:.61rem!important}
  .station-main-title strong{font-size:.82rem!important}.station-main-title small{font-size:.67rem!important}.station-main-sales b{font-size:.75rem!important}.station-tank-line{grid-template-columns:65px minmax(90px,1fr) minmax(128px,.9fr)!important}.station-tank-name{font-size:.67rem!important}
  .work-status-cell{min-height:50px!important}.work-status-cell span{font-size:.64rem!important}.work-status-cell b{font-size:.71rem!important}.work-status-cell.done{background:var(--ui115-green-bg)!important;color:#0f7042!important;border-color:#b9e1ca!important}.work-status-cell.warn{background:var(--ui115-amber-bg)!important;color:#925700!important;border-color:#ecd299!important}.work-status-cell.missing,.work-status-cell.danger{background:var(--ui115-red-bg)!important;color:var(--ui115-red)!important;border-color:#efbbb7!important}
  .target-sales-legend button span,.target-tank-list button span b,.target-action-row b,.target-list-row b{font-size:.68rem!important}.target-sales-legend button b,.target-tank-list button strong,.target-tank-list .pct,.target-action-row small,.target-list-row small,.target-list-row time{font-size:.61rem!important}
  .dense-record-row.dense-record-row{padding:6px 9px!important;border-radius:0!important;box-shadow:none!important}.dense-record-row .station-head strong{font-size:.75rem!important}.dense-record-row .amount-row{font-size:.69rem!important}
}
@media(max-width:1190px) and (min-width:960px){
  .role-station-table-head,.role-station-mini{grid-template-columns:minmax(160px,.8fr) minmax(270px,1.2fr) minmax(330px,1.5fr) 28px!important}
}
@media(max-width:959px){
  #mainContent{padding:10px 9px 78px!important}.page-title{min-height:44px!important;margin-bottom:8px!important}.page-title h1{font-size:1.18rem!important}.page-title p{font-size:.73rem!important}
  .message-workspace,.document-workspace,.ledger-workspace{grid-template-columns:1fr!important}.dense-record-head{display:none!important}.dense-record-row.dense-record-row{display:block!important;border-radius:8px!important;margin-bottom:7px!important;padding:12px!important}
  .form-card input,.form-card select,.form-card textarea,.panel input,.panel select,.panel textarea{min-height:48px!important;font-size:16px!important}
  button.primary,button.quiet,.primary,.quiet{min-height:46px!important}.quick-upload-bar{min-height:62px!important;padding:0 0 env(safe-area-inset-bottom)!important;gap:0!important}.quick-bar-btn{min-height:62px!important;border:0!important;border-radius:0!important}
  .work-status-cell.warn{background:var(--ui115-amber-bg)!important;color:var(--ui115-amber)!important;border-color:#efd59f!important}.work-status-cell.danger{background:var(--ui115-red-bg)!important;color:var(--ui115-red)!important;border-color:#efbbb7!important}
}


/* ═══ v1.0.16 재고·탱크 안전 개편 — inventory view에만 범위를 제한한다 ═══ */
.inventory-view .inventory-context-bar{display:grid;grid-template-columns:minmax(210px,260px) 1fr auto;align-items:end;gap:10px;margin:0 0 8px;padding:9px 10px;border:1px solid var(--ui115-line,#d7e0e9);background:#fff;border-radius:4px}.inventory-view .inventory-context-bar label{display:grid;gap:4px;font-size:.7rem;color:#536779}.inventory-view .inventory-context-copy{display:grid;gap:2px;align-self:center}.inventory-view .inventory-context-copy strong{font-size:.85rem;color:#18324f}.inventory-view .inventory-context-copy small{font-size:.68rem;color:#6b7b8c}.inventory-view .inventory-context-bar select{min-height:42px}
.inventory-view .tank-entry-grid{grid-template-columns:repeat(3,minmax(155px,1fr))}.inventory-view .tank-entry-grid .wide-field{grid-column:span 2}.inventory-view .form-help{margin:4px 0 0;color:#6b7b8c;font-size:.68rem}.inventory-view .empty-card{min-height:auto!important;padding:10px!important;border:1px dashed #cdd7e2!important;border-radius:3px!important;background:#f9fbfd!important;color:#66778a!important;font-size:.72rem!important}
.inventory-view .tank-record-head,.inventory-view .tank-record-row{display:grid;grid-template-columns:minmax(145px,1.05fr) minmax(165px,1.18fr) minmax(175px,1.25fr) minmax(145px,1fr) minmax(125px,.9fr) minmax(205px,1.25fr);gap:0;align-items:stretch}.inventory-view .tank-record-head{border:1px solid #d7e0e9;border-bottom:0;background:#eef3f8;color:#38516a;font-size:.68rem;font-weight:800}.inventory-view .tank-record-head span{padding:7px 8px;border-right:1px solid #d7e0e9}.inventory-view .tank-record-row{border:1px solid #d7e0e9;border-bottom:0;background:#fff;font-size:.7rem}.inventory-view .tank-record-row:last-child{border-bottom:1px solid #d7e0e9}.inventory-view .tank-record-row>div{min-width:0;padding:7px 8px;border-right:1px solid #e4e9ef;display:flex;flex-direction:column;justify-content:center;gap:3px}.inventory-view .tank-record-row>div:last-child{border-right:0}.inventory-view .tank-record-row.warning{box-shadow:inset 3px 0 #e0a020}.inventory-view .tank-record-row.problem{box-shadow:inset 3px 0 #c0392b}.inventory-view .tank-ident strong{font-size:.77rem;color:#18324f}.inventory-view .tank-ledger b{font-size:.65rem}.inventory-view .balance-ok{color:#147a4c}.inventory-view .balance-warning{color:#c0392b}.inventory-view .tank-level i{display:block;height:8px;border-radius:2px;background:#e9eef4;overflow:hidden}.inventory-view .tank-level i em{display:block;height:100%;min-width:0}.inventory-view .tank-level small,.inventory-view .tank-threshold small,.inventory-view .tank-reading-meta small{color:#6b7b8c;font-size:.63rem}.inventory-view .tank-actions{display:grid!important;grid-template-columns:auto 1fr 1fr;align-content:center;gap:5px!important}.inventory-view .tank-actions .tank-adjust{grid-column:2/4}.inventory-view .tank-actions button{min-height:36px!important;padding:5px 7px!important;font-size:.67rem!important}
.inventory-dialog{width:min(760px,calc(100vw - 28px));border:1px solid #cbd5df;border-radius:5px;padding:14px}.inventory-dialog::backdrop{background:#10243a80}.inventory-adjust-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:8px 0;padding:8px;border:1px solid #d7e0e9;background:#f7f9fc}.inventory-adjust-summary span{display:grid;gap:2px;font-size:.68rem}.inventory-adjust-summary strong{font-size:.76rem;color:#18324f}
@media(max-width:959px){.inventory-view .inventory-context-bar{grid-template-columns:1fr;align-items:stretch}.inventory-view .inventory-context-bar button{width:100%}.inventory-view .tank-entry-grid{grid-template-columns:1fr}.inventory-view .tank-entry-grid .wide-field{grid-column:auto}.inventory-view .tank-record-head{display:none}.inventory-view .tank-record-row{grid-template-columns:1fr 1fr;margin:0 0 8px;border:1px solid #d7e0e9!important;border-radius:7px}.inventory-view .tank-record-row>div{border-right:0;border-bottom:1px solid #edf1f5;padding:9px}.inventory-view .tank-record-row>div:nth-last-child(-n+2){border-bottom:0}.inventory-view .tank-actions{grid-column:1/-1}.inventory-view .tank-actions button{min-height:46px!important}.inventory-adjust-summary{grid-template-columns:1fr}.inventory-dialog{padding:11px}.inventory-dialog .form-grid{grid-template-columns:1fr}}

/* ═══ v1.0.78 — 재고 현황 목록(품목별). 탱크 표와 같은 톤: 칸 구분선·정렬·상태 줄무늬 ═══
   구조는 그대로(.dense-record-row.inventory-record-row 안에 station-head / amount-row.inventory-balance /
   forecast-note / inline-settings 4칸). 여기서 '보기'만 손본다. #inventoryCards 를 한 줄씩 세로로
   쌓는 건 위 v1.0.53 블록에 추가해 뒀다(그게 깨짐의 원인이었음). */
.inventory-view #inventoryCards{ border:1px solid #d7e0e9; border-radius:6px; overflow:hidden; background:#fff; }
.inventory-view .inventory-record-head,
.inventory-view .inventory-record-row{
  grid-template-columns:minmax(150px,.95fr) minmax(220px,1.25fr) minmax(200px,1.35fr) minmax(250px,1.5fr) !important;
  align-items:stretch !important;
}
.inventory-view .inventory-record-head{
  background:#eef3f8; color:#38516a; font-size:.68rem; font-weight:800; border-bottom:1px solid #d7e0e9;
}
.inventory-view .inventory-record-head span{ padding:8px 10px; border-right:1px solid #dce4ec; }
.inventory-view .inventory-record-head span:last-child{ border-right:0; }

.inventory-view .inventory-record-row{
  border:0 !important; border-bottom:1px solid #e9edf2 !important; border-radius:0 !important;
  box-shadow:none !important; background:#fff !important; margin:0 !important; padding:0 !important;
  min-height:0 !important; font-size:.72rem; transition:background .12s;
}
.inventory-view #inventoryCards .inventory-record-row:last-child{ border-bottom:0 !important; }
.inventory-view .inventory-record-row:hover{ background:#f7fafd !important; }
.inventory-view .inventory-record-row.warning{ box-shadow:inset 3px 0 #e0a020 !important; }
.inventory-view .inventory-record-row.problem{ box-shadow:inset 3px 0 #c0392b !important; }

.inventory-view .inventory-record-row > *{
  min-width:0; margin:0 !important; padding:9px 10px !important;
  border-right:1px solid #eef1f5;
  display:flex; flex-direction:column; justify-content:center; gap:4px;
}
.inventory-view .inventory-record-row > *:last-child{ border-right:0; }

/* 1칸 — 품목 + 상태 배지 */
.inventory-view .inventory-record-row .station-head{ align-items:flex-start !important; gap:5px; }
.inventory-view .inventory-record-row .station-head strong{ font-size:.8rem !important; color:#18324f; white-space:normal; }
.inventory-view .inventory-record-row .station-head .badge{ font-size:.58rem; padding:2px 7px; font-weight:800; }

/* 2칸 — 장부 · 실측 · 차이 · 입고예정 : 한 줄에 하나씩 */
.inventory-view .inventory-record-row .inventory-balance{
  flex-direction:column !important; align-items:flex-start; gap:3px !important;
  font-size:.7rem !important; color:#54687c;
}
.inventory-view .inventory-record-row .inventory-balance .balance-warning{ color:#c0392b; font-weight:700; }

/* 3칸 — 예측 : 회색 알약 말고 조용한 본문 */
.inventory-view .inventory-record-row .forecast-note{
  background:none !important; padding:0 !important; border-radius:0 !important; margin:0 !important;
  color:#6b7b8c; font-size:.67rem !important; line-height:1.45 !important;
}

/* 4칸 — 설정 · 조정 : 2×2 (안전재고 | 판매단가 / 저장 | 재고조정) */
.inventory-view .inventory-record-row .inline-settings{
  display:grid !important; grid-template-columns:1fr 1fr !important; gap:5px 6px !important;
  align-items:end !important; margin:0 !important;
}
.inventory-view .inventory-record-row .inline-settings label{ font-size:.58rem; color:#5a6b7d; gap:2px; }
.inventory-view .inventory-record-row .inline-settings input{
  min-height:32px; width:100%; box-sizing:border-box;
  border:1px solid #cdd8e3; border-radius:5px; padding:4px 7px; font-size:.72rem;
}
.inventory-view .inventory-record-row .inline-settings button{
  min-height:32px !important; padding:4px 8px !important; font-size:.64rem !important;
}
.inventory-view .inventory-record-row .inline-settings .item-settings-save{ grid-column:1; }
.inventory-view .inventory-record-row .inline-settings .stock-adjust-open{ grid-column:2; }
.inventory-view .inventory-record-row .form-help{ color:#8a97a6; font-size:.66rem; }

@media(max-width:959px){
  .inventory-view .inventory-record-head{ display:none; }
  .inventory-view .inventory-record-row{
    grid-template-columns:1fr 1fr !important; margin:0 0 8px !important;
    border:1px solid #d7e0e9 !important; border-radius:8px !important;
  }
  .inventory-view .inventory-record-row > *{ border-right:0; border-bottom:1px solid #edf1f5; }
  .inventory-view .inventory-record-row .station-head{ grid-column:1/-1; }
  .inventory-view .inventory-record-row .inline-settings{ grid-column:1/-1; }
  .inventory-view .inventory-record-row > *:nth-last-child(-n+1){ border-bottom:0; }
}


/* ═══ v1.0.17 연결형 대시보드 · 소장 상세 · 고정 상단바 설정 ═══ */
:root{--ui117-topbar-size:42px;--ui117-menu-font:14px;--ui117-body-font:14px;--ui117-gap:6px;--ui115-topbar:var(--ui117-topbar-size)}
@media(min-width:960px){
  body{font-size:var(--ui117-body-font)!important}
  .topbar{height:var(--ui117-topbar-size)!important;min-height:var(--ui117-topbar-size)!important;padding:3px 9px!important;position:fixed!important;top:0!important;right:0!important;z-index:80!important;overflow:visible!important}
  .topbar-left{gap:7px!important;min-width:0}.topbar-title{min-width:132px}.topbar-title strong{font-size:.78rem!important}.topbar-title small{font-size:.58rem!important}
  .history-nav{display:flex;align-items:center;gap:3px;flex:none}.top-nav-button{height:32px;min-height:32px!important;padding:4px 8px!important;border:1px solid #cfd9e5;border-radius:3px;background:#fff;color:#173650;font-size:.68rem;font-weight:800;white-space:nowrap}.top-nav-button.home{background:#edf4ff;color:#115ac6;border-color:#bdd3f3}
  .admin-role-preview{height:32px!important;gap:3px!important}.admin-role-preview span{font-size:.6rem!important}.admin-role-preview select{height:32px!important;min-height:32px!important;padding:3px 6px!important}
  .top-actions{gap:3px!important;flex-wrap:nowrap!important;min-width:0}.top-actions>.quiet{height:32px!important;min-height:32px!important;padding:4px 7px!important;font-size:.66rem!important}
  .ui-setting-cluster{display:flex;align-items:center;gap:3px;flex:none}.ui-setting-cluster label{height:32px;display:flex;align-items:center;gap:3px;padding:2px 4px;border:1px solid #d4dde7;border-radius:3px;background:#fff;white-space:nowrap}.ui-setting-cluster label>span{font-size:.56rem;color:#53677e;font-weight:800}.ui-setting-cluster select{height:26px!important;min-height:26px!important;width:66px;padding:1px 18px 1px 5px!important;border:0!important;background:#f7f9fc;font-size:.62rem!important;font-weight:800}.ui-setting-cluster .data-mode-setting select{width:78px}
  .demo-data-badge{height:26px;display:inline-flex;align-items:center;padding:0 7px;border:1px solid #e6b95f;background:#fff5d9;color:#8b5a00;border-radius:3px;font-size:.58rem;font-weight:900;white-space:nowrap}
  #mainContent{padding:calc(var(--ui117-topbar-size) + var(--ui117-gap)) var(--ui117-gap) 18px!important;margin-top:0!important}
  .sidebar-nav,.role-nav-item,.role-nav-group-head{font-size:var(--ui117-menu-font)!important}.role-nav-group-head{min-height:30px!important;padding:4px 7px!important}.role-nav-item{min-height:36px!important;padding:5px 8px!important;gap:7px!important}.sidebar-brand{min-height:42px!important;margin-bottom:4px!important;padding-bottom:5px!important}
  .target-dashboard-top,.target-dashboard-board,.target-dashboard-lower,.target-insight-grid,.target-bottom-grid,.manager-dashboard-main,.manager-dashboard-insights,.overview-dashboard-grid{gap:var(--ui117-gap)!important;margin-bottom:var(--ui117-gap)!important}
  .target-kpi-grid{gap:var(--ui117-gap)!important}.target-kpi{min-height:58px!important;padding:6px 8px!important;gap:6px!important}.target-kpi-icon{width:27px!important;height:27px!important;font-size:.72rem!important}.target-kpi-copy small{font-size:.66rem!important;font-weight:850!important;color:#53697f!important}.target-kpi-copy strong{font-size:.91rem!important;line-height:1.1!important}.target-kpi-copy em{font-size:.57rem!important;margin-top:1px}.target-panel-head{min-height:35px!important;padding:5px 8px!important}.target-panel-head h2{font-size:.78rem!important}.target-panel-head span{font-size:.58rem!important}
  .target-panel,.role-dashboard-panel,.overview-panel{margin-bottom:var(--ui117-gap)!important}.target-insight-grid,.target-bottom-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--ui117-gap)!important}
  .manager-dashboard-main{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(280px,.8fr);align-items:stretch}.manager-dashboard-insights{display:grid;grid-template-columns:1.35fr 1.35fr .8fr}.manager-tank-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:5px;padding:7px}.manager-tank-card{min-height:94px;border:1px solid #d5dee8;background:#fff;border-radius:4px;padding:7px;text-align:left;display:grid;grid-template-rows:auto auto auto 8px;gap:4px;box-shadow:inset 3px 0 #168451}.manager-tank-card.warn{background:#fffaf0;box-shadow:inset 3px 0 #e89a16}.manager-tank-card.danger{background:#fff3f2;border-color:#efc6c2;box-shadow:inset 4px 0 #d73a32}.manager-tank-head{display:flex;justify-content:space-between;gap:6px}.manager-tank-head b{font-size:.73rem;color:#17314e}.manager-tank-head em{font-size:.6rem;font-style:normal;color:#60758b}.manager-tank-card>strong{font-size:.92rem;color:#102b49}.manager-tank-card>small{font-size:.58rem;color:#6a7c8f}.manager-tank-card>i{height:8px;background:#e7edf3;border-radius:2px;overflow:hidden}.manager-tank-card>i>em{display:block;height:100%}
  .manager-status-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:4px;padding:7px}.manager-status-grid .work-status-cell{min-height:52px!important}.manager-work-panel .target-list{padding:0 7px 7px}.manager-sales-bars{height:150px;display:flex;align-items:end;gap:4px;padding:10px 8px 5px;border-top:1px solid #edf1f5}.manager-sales-bars>span{flex:1;min-width:0;height:100%;display:flex;flex-direction:column;justify-content:end;align-items:center;gap:3px}.manager-sales-bars i{width:min(16px,75%);background:#7fa9e9;border-radius:2px 2px 0 0;display:block;min-height:4px}.manager-sales-bars small{font-size:.52rem;color:#718195}
  .station-fuel-summary{margin-top:var(--ui117-gap)!important}.station-fuel-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:0;border-top:1px solid #e1e7ee}.station-fuel-card{text-align:left;padding:7px 9px;border:0;border-right:1px solid #e1e7ee;border-bottom:1px solid #e1e7ee;background:#fff;display:grid;gap:5px}.station-fuel-card:hover{background:#f7faff}.station-fuel-card>strong{font-size:.72rem;color:#17314e}.station-fuel-line{display:grid;grid-template-columns:54px 1fr 132px;align-items:center;gap:5px}.station-fuel-line>b{font-size:.61rem}.station-fuel-line>i{height:7px;background:#e6edf3;border-radius:2px;overflow:hidden}.station-fuel-line>i>em{display:block;height:100%}.station-fuel-line>small{font-size:.56rem;color:#667a90;text-align:right}.station-fuel-line.risk small,.station-fuel-line.risk b{color:#bd3028;font-weight:800}
  .overview-panel{scroll-margin-top:calc(var(--ui117-topbar-size) + 8px)!important;padding:8px!important}.overview-kpis{display:grid!important;grid-template-columns:repeat(6,minmax(0,1fr))!important;gap:4px!important}.overview-kpis article{min-height:52px!important;padding:6px 8px!important;border-radius:3px!important}.overview-kpis span{font-size:.6rem!important}.overview-kpis strong{font-size:.83rem!important}.overview-dashboard-grid{display:grid;grid-template-columns:1.45fr 1fr .95fr}.overview-dashboard-grid>section{border:1px solid #d5dee8;background:#fff;border-radius:4px;min-width:0}.station-detail-link-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:4px;padding:7px}.station-detail-link-grid button{min-height:55px;border:1px solid #dbe3ec;background:#f9fbfd;border-radius:3px;text-align:left;padding:6px 8px;display:grid;gap:2px}.station-detail-link-grid b{font-size:.68rem;color:#17314e}.station-detail-link-grid span{font-size:.56rem;color:#6d7e90}
}
@media(max-width:1320px) and (min-width:960px){.ui-setting-cluster label>span{display:none}.ui-setting-cluster select{width:60px}.demo-data-badge{display:none}.topbar-title{display:none}.manager-dashboard-insights{grid-template-columns:1fr 1fr}.manager-dashboard-insights>section:last-child{grid-column:1/-1}.overview-dashboard-grid{grid-template-columns:1fr 1fr}.station-detail-links{grid-column:1/-1}}
@media(max-width:959px){.history-nav,.ui-setting-cluster,.demo-data-badge{display:none!important}.overview-dashboard-grid{display:block}.overview-dashboard-grid>section{margin-bottom:8px}.manager-dashboard-main,.manager-dashboard-insights{display:block}.manager-tank-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.manager-status-grid{grid-template-columns:repeat(2,1fr)}.station-fuel-grid{grid-template-columns:1fr}}

@media(min-width:960px){
  .role-nav-item{min-height:calc(30px + var(--ui117-gap))!important}.role-nav-group{margin-bottom:calc(var(--ui117-gap)/3)!important}.role-nav-children{gap:calc(var(--ui117-gap)/3)!important}
  [data-view="dashboard"].station-detail-mode>.page-title,[data-view="dashboard"].station-detail-mode>#salesTrendPanel,[data-view="dashboard"].station-detail-mode>#dashboardSummary,[data-view="dashboard"].station-detail-mode>#stationCards,[data-view="dashboard"].station-detail-mode>#reportStatusPanel,[data-view="dashboard"].station-detail-mode>#tankBoardPanel{display:none!important}
  [data-view="dashboard"].station-detail-mode>#stationOverview{display:block!important;margin:0!important}
}


/* ═══ v1.0.18 안정형 상단바 · 단일업무 미니대시보드 · 관리자 운영보드 ═══ */
@media(min-width:960px){
  .topbar{display:flex!important;align-items:center!important;gap:6px!important;height:var(--ui117-topbar-size)!important;padding:3px 8px!important;box-sizing:border-box!important;white-space:nowrap!important}
  .topbar-left{display:flex!important;align-items:center!important;gap:5px!important;flex:0 0 auto!important;overflow:visible!important;max-width:none!important}
  .topbar-title{display:none!important}
  .history-nav{height:30px!important;display:flex!important;align-items:center!important;gap:3px!important}
  .top-nav-button{height:30px!important;min-height:30px!important;padding:3px 8px!important;font-size:.66rem!important;line-height:1!important;box-sizing:border-box!important}
  .admin-role-preview{flex:0 0 auto!important;height:30px!important;padding:2px 4px!important}
  .admin-role-preview select{height:26px!important;min-height:26px!important;max-width:118px!important;padding:1px 20px 1px 5px!important;font-size:.61rem!important}
  .top-actions{margin-left:auto!important;display:flex!important;align-items:center!important;justify-content:flex-end!important;gap:3px!important;min-width:0!important;overflow:visible!important}
  .ui-setting-cluster{display:flex!important;align-items:center!important;gap:3px!important;flex:0 0 auto!important}
  .ui-setting-cluster label{height:30px!important;min-height:30px!important;padding:1px 3px!important;box-sizing:border-box!important}
  .ui-setting-cluster select{height:24px!important;min-height:24px!important;width:62px!important;padding:1px 17px 1px 4px!important;font-size:.6rem!important}
  .ui-setting-cluster .data-mode-setting select{width:74px!important}
  .top-actions>.quiet{height:30px!important;min-height:30px!important;padding:3px 6px!important;font-size:.63rem!important}
  .demo-data-badge{height:24px!important;padding:0 5px!important}
  .app-runtime-message{max-width:230px;overflow:hidden;text-overflow:ellipsis;border:1px solid #efc6c2;background:#fff3f2;color:#a12620;padding:4px 7px;border-radius:3px;font-size:.58rem;font-weight:800}
  #mainContent{padding-top:calc(var(--ui117-topbar-size) + var(--ui117-gap))!important}

  .target-kpi-grid{grid-template-columns:repeat(7,minmax(0,1fr))!important}
  .target-kpi{min-height:50px!important;padding:5px 7px!important;gap:5px!important;border-radius:4px!important}
  .target-kpi-icon{width:24px!important;height:24px!important;font-size:.66rem!important}
  .target-kpi-copy small{font-size:.64rem!important;line-height:1.05!important;color:#40566f!important}
  .target-kpi-copy strong{font-size:.84rem!important;line-height:1.08!important;margin-top:1px!important}
  .target-kpi-copy em{font-size:.54rem!important;line-height:1.05!important}

  .menu-context-strip{display:grid;grid-template-columns:minmax(220px,1.2fr) minmax(420px,2fr) auto;align-items:stretch;gap:var(--ui117-gap);margin:0 0 var(--ui117-gap);border:1px solid #d5dee8;background:#fff;min-height:54px}
  .menu-context-title{padding:6px 9px;border-left:4px solid #1768e8;display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:7px;align-content:center}
  .menu-context-title>span{grid-row:1/3;align-self:center;font-size:.55rem;color:#1768e8;font-weight:900}
  .menu-context-title>strong{font-size:.76rem;color:#17314e;line-height:1.1}
  .menu-context-title>small{font-size:.55rem;color:#718195;white-space:normal;line-height:1.2}
  .menu-context-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-left:1px solid #e3e9ef}
  .menu-context-kpis article{padding:6px 9px;border-right:1px solid #e3e9ef;display:grid;align-content:center;gap:2px}
  .menu-context-kpis span{font-size:.53rem;color:#718195;font-weight:800}
  .menu-context-kpis strong{font-size:.65rem;color:#203b58;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .menu-context-home{margin:6px;border:1px solid #bfd1e6;background:#f3f7fc;color:#145aa8;border-radius:3px;padding:0 10px;font-size:.62rem;font-weight:900;white-space:nowrap}

  .admin-system-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px;padding:7px}
  .admin-system-card{min-height:68px;border:1px solid #d9e2eb;background:#fff;border-radius:4px;padding:7px 8px;text-align:left;display:grid;gap:2px;box-shadow:inset 3px 0 #1768e8}
  .admin-system-card.ok{background:#f4fbf7;box-shadow:inset 3px 0 #159455}
  .admin-system-card.warn{background:#fffaf0;box-shadow:inset 3px 0 #e89b16}
  .admin-system-card>span{font-size:.54rem;color:#6d7f91;font-weight:800}.admin-system-card>strong{font-size:.73rem;color:#17314e}.admin-system-card>small{font-size:.53rem;color:#687c90;white-space:normal;line-height:1.2}
  .admin-insight-grid{grid-template-columns:1.15fr .85fr 1.05fr!important}

  [data-manage-pane],[data-inventory-pane],[data-system-pane]{scroll-margin-top:calc(var(--ui117-topbar-size) + 8px)}
}
@media(max-width:1480px) and (min-width:960px){
  .ui-setting-cluster label>span{display:none!important}.ui-setting-cluster select{width:56px!important}.ui-setting-cluster .data-mode-setting select{width:68px!important}
  .top-actions>.app-install-button,.top-actions>#passwordButton{display:none!important}
  .admin-role-preview span{display:none!important}
}
@media(max-width:1180px) and (min-width:960px){
  .top-actions>#globalSearchButton{display:none!important}.demo-data-badge{display:none!important}
  .menu-context-strip{grid-template-columns:1fr auto}.menu-context-kpis{display:none}
}
/* v1.0.75 — 폰에서 메뉴 요약을 감추던 규칙을 뺐다. 아래 '메뉴 위 요약을 막대로' 에서
   폰 전용으로 다시 그린다(폰에서도 메뉴마다 요약이 보여야 한다). */
@media(max-width:959px){.app-runtime-message{display:none!important}}
@media(min-width:960px){
  .manager-dashboard-insights{grid-template-columns:1.35fr 1.15fr .85fr .72fr!important}
  .manager-tank-compare,.manager-fuel-mix{display:grid;gap:0;padding:5px 7px}
  .manager-tank-compare button,.manager-fuel-mix button{border:0;border-bottom:1px solid #e8edf3;background:#fff;display:grid;grid-template-columns:minmax(76px,.7fr) minmax(80px,1fr) minmax(100px,.8fr);align-items:center;gap:6px;min-height:34px;padding:4px 2px;text-align:left;color:#203b58}
  .manager-tank-compare button>span,.manager-fuel-mix button>span{display:grid;gap:1px}.manager-tank-compare b,.manager-fuel-mix b{font-size:.57rem}.manager-tank-compare small,.manager-fuel-mix small{font-size:.48rem;color:#748599}
  .manager-tank-compare button>i,.manager-fuel-mix button>i{height:8px;background:#e8edf3;overflow:hidden;border-radius:2px}.manager-tank-compare button>i>em,.manager-fuel-mix button>i>em{display:block;height:100%;background:#159455}
  .manager-tank-compare button.warn>i>em{background:#e89b16}.manager-tank-compare button.danger>i>em{background:#d92d20}.manager-tank-compare button.danger,.manager-fuel-mix button.risk{background:#fff7f6}
  .manager-tank-compare button>strong,.manager-fuel-mix button>strong{text-align:right;font-size:.53rem}.manager-tank-compare button>strong small{display:block;color:#6e8093}
}
@media(max-width:1500px) and (min-width:960px){.manager-dashboard-insights{grid-template-columns:1fr 1fr!important}.manager-dashboard-insights>section:nth-child(n+3){grid-column:auto!important}}

/* ======================================================================
   v1.0.20 ROLE DASHBOARD MASTER THEME
   확정 시안: 진한 네이비 상단/좌측, 홈-뒤로-앞으로, 고밀도 한 화면 대시보드,
   좌측 하단 사진 촬영/파일 업로드 상시 유지
   ====================================================================== */
:root{
  --v119-navy:#062a51;
  --v119-navy-2:#0a365f;
  --v119-blue:#0879f8;
  --v119-blue-soft:#eaf3ff;
  --v119-bg:#f4f7fb;
  --v119-panel:#fff;
  --v119-line:#dbe4ef;
  --v119-text:#102845;
  --v119-muted:#6d7c91;
  --v119-green:#1c9a55;
  --v119-orange:#f59e0b;
  --v119-red:#ef4444;
  --v119-sidebar:220px;
  --v119-topbar:var(--ui117-topbar-size,44px);
  --ui119-topbar-font:14px;
}

@media (min-width:960px){
  html,body{height:100%;background:var(--v119-bg)!important;}
  body{overflow:hidden!important;color:var(--v119-text)!important;}
  #appView{height:100vh!important;overflow:hidden!important;background:var(--v119-bg)!important;}

  /* ---------- fixed top bar ---------- */
  body .topbar.topbar-v119{
    position:fixed!important;inset:0 0 auto 0!important;
    width:100%!important;height:var(--v119-topbar)!important;min-height:var(--v119-topbar)!important;
    margin:0!important;padding:0 14px 0 12px!important;box-sizing:border-box!important;
    display:flex!important;align-items:center!important;gap:7px!important;flex-wrap:nowrap!important;
    background:linear-gradient(90deg,#06284d 0%,#07335e 54%,#06284d 100%)!important;
    color:#fff!important;border:0!important;border-bottom:1px solid #051d39!important;
    box-shadow:0 2px 8px rgba(1,26,52,.18)!important;z-index:300!important;overflow:hidden!important;
    font-size:var(--ui119-topbar-font)!important;
  }
  .topbar-brand-v119{height:100%;min-width:245px;display:flex;align-items:center;gap:8px;color:#fff;white-space:nowrap;flex:0 0 auto;}
  .topbar-brand-v119 .topbar-brand-drop{width:22px;height:22px;flex:none;display:grid;place-items:center;border-radius:6px;background:rgba(255,255,255,.14);color:#fff;font-size:12px;font-weight:800;transform:none;}
  .topbar-brand-v119 strong{font-size:calc(var(--ui119-topbar-font) + 3px)!important;font-weight:900!important;letter-spacing:-.4px;}
  .topbar-brand-v119 small{font-size:10px!important;padding:2px 5px;border-radius:3px;background:#fff;color:#31465e;font-weight:800;}
  body .topbar .topbar-left{display:flex!important;align-items:center!important;gap:5px!important;flex:0 0 auto!important;min-width:0!important;margin:0!important;padding:0!important;background:transparent!important;}
  body .topbar .topbar-title,body .topbar .crumb{display:none!important;}
  body .topbar .history-nav{display:flex!important;align-items:center!important;gap:4px!important;height:100%!important;background:transparent!important;margin:0!important;padding:0!important;}
  body .topbar #navHome,body .topbar #navBack,body .topbar #navForward{
    min-width:70px!important;height:calc(var(--v119-topbar) - 10px)!important;min-height:30px!important;margin:0!important;padding:0 12px!important;
    border:1px solid rgba(255,255,255,.22)!important;border-radius:4px!important;background:rgba(2,28,56,.28)!important;color:#fff!important;
    font-size:var(--ui119-topbar-font)!important;font-weight:900!important;line-height:1!important;box-shadow:inset 0 1px rgba(255,255,255,.05)!important;
  }
  body .topbar #navHome:hover,body .topbar #navBack:hover,body .topbar #navForward:hover{background:#0d4c84!important;}
  body .topbar #navHome{order:1} body .topbar #navBack{order:2} body .topbar #navForward{order:3}

  body .topbar #adminRolePreview{height:calc(var(--v119-topbar) - 10px)!important;display:flex;align-items:center;gap:4px;padding:0 5px!important;margin:0!important;border:1px solid rgba(255,255,255,.18)!important;border-radius:4px!important;background:rgba(255,255,255,.08)!important;}
  body .topbar #adminRolePreview[hidden]{display:none!important;}
  body .topbar #adminRolePreview>span{color:#eaf4ff!important;font-size:calc(var(--ui119-topbar-font) - 1px)!important;font-weight:800!important;}
  body .topbar #adminRolePreview select{height:28px!important;border:1px solid #bdcfe0!important;border-radius:3px!important;background:#fff!important;color:#173653!important;font-size:calc(var(--ui119-topbar-font) - 1px)!important;font-weight:800!important;padding:0 24px 0 7px!important;}

  body .topbar .top-actions{display:flex!important;align-items:center!important;gap:4px!important;flex:1 1 auto!important;min-width:0!important;height:100%!important;margin:0!important;padding:0!important;background:transparent!important;overflow:hidden!important;}
  body .topbar .ui-setting-cluster{display:flex!important;align-items:center!important;gap:4px!important;flex:0 0 auto!important;background:transparent!important;margin:0!important;padding:0!important;}
  body .topbar .ui-setting-cluster label{height:calc(var(--v119-topbar) - 10px)!important;display:flex!important;align-items:center!important;gap:4px!important;padding:0 5px!important;margin:0!important;border:1px solid rgba(255,255,255,.18)!important;border-radius:4px!important;background:rgba(255,255,255,.08)!important;box-sizing:border-box!important;color:#fff!important;}
  body .topbar .ui-setting-cluster label>span{color:#edf6ff!important;font-size:calc(var(--ui119-topbar-font) - 1px)!important;font-weight:800!important;white-space:nowrap!important;}
  body .topbar .ui-setting-cluster input[type="number"]{width:38px!important;min-width:38px!important;max-width:38px!important;height:27px!important;min-height:27px!important;padding:0 2px!important;margin:0!important;border:1px solid #b8cce0!important;border-radius:3px!important;background:#fff!important;color:#173b5d!important;text-align:center!important;font-size:var(--ui119-topbar-font)!important;font-weight:900!important;appearance:textfield!important;-moz-appearance:textfield!important;}
  body .topbar .ui-setting-cluster input[type="number"]::-webkit-inner-spin-button,body .topbar .ui-setting-cluster input[type="number"]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0;}
  body .topbar .data-mode-setting select{height:27px!important;min-height:27px!important;width:76px!important;padding:0 20px 0 6px!important;border:1px solid #b8cce0!important;border-radius:3px!important;background:#fff!important;color:#173b5d!important;font-size:calc(var(--ui119-topbar-font) - 1px)!important;font-weight:800!important;}
  body .topbar .demo-data-badge{height:28px;display:inline-flex;align-items:center;padding:0 7px;border-radius:4px;background:#ffda73!important;color:#654500!important;font-size:calc(var(--ui119-topbar-font) - 2px)!important;font-weight:900!important;white-space:nowrap;}
  body .topbar .topbar-right-start{margin-left:auto!important;}
  body .topbar #notificationButton,body .topbar #globalSearchButton,body .topbar .app-install-button,body .topbar #passwordButton,body .topbar #logoutButton{
    height:30px!important;min-height:30px!important;padding:0 6px!important;margin:0!important;border:0!important;border-radius:3px!important;background:transparent!important;color:#f4f8ff!important;font-size:calc(var(--ui119-topbar-font) - 1px)!important;font-weight:900!important;white-space:nowrap!important;}
  body .topbar #notificationButton:hover,body .topbar #globalSearchButton:hover,body .topbar .app-install-button:hover,body .topbar #passwordButton:hover,body .topbar #logoutButton:hover{background:rgba(255,255,255,.1)!important;}
  .topbar-user-v119{min-width:108px;max-width:155px;height:calc(var(--v119-topbar) - 8px);display:grid;align-content:center;gap:0;padding:0 8px;border-left:1px solid rgba(255,255,255,.18);color:#fff;line-height:1.05;}
  .topbar-user-v119 span{font-size:calc(var(--ui119-topbar-font) - 1px)!important;font-weight:900!important;color:#fff!important;}
  .topbar-user-v119 strong{font-size:calc(var(--ui119-topbar-font) - 3px)!important;font-weight:700!important;color:#d6e7f6!important;overflow:hidden;text-overflow:ellipsis;}

  /* ---------- left menu ---------- */
  body .sidebar-nav{
    position:fixed!important;top:var(--v119-topbar)!important;left:0!important;bottom:0!important;width:var(--v119-sidebar)!important;height:auto!important;
    margin:0!important;padding:8px 8px 152px!important;box-sizing:border-box!important;background:linear-gradient(180deg,#062b52 0%,#062547 100%)!important;
    border-right:1px solid #0b3a68!important;z-index:210!important;overflow:hidden!important;color:#fff!important;
  }
  body .sidebar-nav .sidebar-brand{display:none!important;}
  body .role-menu-root{height:100%;overflow-y:auto;overflow-x:hidden;padding-right:2px;scrollbar-width:thin;}
  .role-nav-group{margin:0 0 3px!important;border:0!important;}
  .role-nav-group-head{min-height:27px!important;padding:4px 7px!important;background:transparent!important;border:0!important;color:#9eb6ce!important;font-size:calc(var(--ui117-menu-font) - 1px)!important;font-weight:800!important;}
  .role-nav-group-head b{font-size:10px!important;color:#8ca6c1!important;}
  .role-nav-children{display:grid!important;gap:2px!important;}
  .role-nav-item{min-height:34px!important;padding:5px 8px!important;margin:0!important;border:0!important;border-left:3px solid transparent!important;border-radius:4px!important;background:transparent!important;color:#eef6ff!important;display:flex!important;align-items:center!important;gap:8px!important;text-align:left!important;font-size:var(--ui117-menu-font)!important;font-weight:800!important;}
  .role-nav-item .role-nav-icon{width:18px!important;text-align:center!important;color:#dcecff!important;font-style:normal!important;font-size:calc(var(--ui117-menu-font) + 1px)!important;}
  .role-nav-item:hover{background:rgba(255,255,255,.08)!important;}
  .role-nav-item.active{background:linear-gradient(180deg,#1683ff,#0875ea)!important;color:#fff!important;border-left-color:#8dc5ff!important;box-shadow:0 2px 7px rgba(0,85,190,.28)!important;}
  .role-nav-item.active .role-nav-icon{color:#fff!important;}
  .nav-badge{margin-left:auto!important;background:#e83b3b!important;color:#fff!important;}
  body .quick-upload{position:absolute!important;left:8px!important;right:8px!important;bottom:9px!important;display:grid!important;gap:6px!important;padding:0!important;margin:0!important;background:transparent!important;border-top:1px solid rgba(255,255,255,.13)!important;padding-top:8px!important;z-index:5!important;}
  body .quick-upload .quick-btn{min-height:58px!important;border:0!important;border-radius:4px!important;padding:7px 8px!important;display:grid!important;grid-template-columns:28px 1fr!important;align-items:center!important;gap:5px!important;color:#fff!important;text-align:left!important;box-shadow:none!important;}
  body .quick-upload .quick-btn.camera{background:linear-gradient(135deg,#7a35d4,#8738df)!important;}
  body .quick-upload .quick-btn.file{background:linear-gradient(135deg,#0876ef,#137ff7)!important;}
  body .quick-upload .quick-icon{font-size:17px!important;}
  body .quick-upload strong{font-size:calc(var(--ui117-menu-font) + 1px)!important;font-weight:900!important;color:#fff!important;}
  body .quick-upload small{display:block;color:#e7f1ff!important;font-size:calc(var(--ui117-menu-font) - 3px)!important;line-height:1.2;}

  /* ---------- main shell ---------- */
  body #mainContent{position:fixed!important;top:var(--v119-topbar)!important;left:var(--v119-sidebar)!important;right:0!important;bottom:0!important;width:auto!important;height:auto!important;margin:0!important;padding:8px 10px!important;box-sizing:border-box!important;background:var(--v119-bg)!important;overflow-y:auto!important;overflow-x:hidden!important;font-size:var(--ui117-body-font)!important;}
  body #menuContextStrip{margin-bottom:4px!important;}
  body .page-title{margin:0 0 6px!important;min-height:34px!important;align-items:center!important;}
  body .page-title h1{font-size:calc(var(--ui117-body-font) + 5px)!important;margin:0!important;}
  body .page-title p{font-size:calc(var(--ui117-body-font) - 2px)!important;margin:1px 0 0!important;}
  body .view{min-height:0!important;}

  /* ---------- v119 dashboard ---------- */
  [data-view="dashboard"]{height:100%!important;min-height:0!important;overflow:hidden!important;}
  [data-view="dashboard"]>.v119-hidden-title{display:none!important;}
  .v119-dashboard-host{height:100%!important;min-height:0!important;margin:0!important;padding:0!important;border:0!important;background:transparent!important;overflow:hidden!important;}
  .v119-dashboard-hidden{display:none!important;}
  .v119-loading{height:100%;display:grid;place-items:center;color:var(--v119-muted);background:#fff;border:1px solid var(--v119-line);}
  .v119-dashboard{height:100%;display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;gap:6px;overflow:hidden;color:var(--v119-text);}
  .v119-dashboard.manager{grid-template-rows:auto auto minmax(0,1fr) auto;}
  .v119-titlebar{min-height:32px;display:flex;align-items:center;justify-content:space-between;padding:0 3px 2px;border-bottom:1px solid #d9e3ef;}
  .v119-titlebar>div{display:flex;align-items:baseline;gap:8px;min-width:0;}
  .v119-titlebar span{font-size:calc(var(--ui117-body-font) - 1px);font-weight:800;color:#335c89;white-space:nowrap;}
  .v119-titlebar h1{font-size:calc(var(--ui117-body-font) + 7px)!important;line-height:1;margin:0;color:#132f52;letter-spacing:-.4px;}
  .v119-titlebar>button,.v119-panel>header button{height:26px;border:1px solid #d1deec;border-radius:3px;background:#fff;color:#1769c5;font-size:calc(var(--ui117-body-font) - 2px);font-weight:800;padding:0 8px;}
  .v119-kpis{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:6px;}
  .v119-kpi{min-width:0;height:70px;display:grid;grid-template-columns:32px 1fr;align-items:center;gap:6px;padding:6px 8px;border:1px solid var(--v119-line);border-radius:4px;background:#fff;box-sizing:border-box;box-shadow:0 1px 3px rgba(17,47,79,.03);}
  .v119-kpi>i{width:28px;height:28px;display:grid;place-items:center;border-radius:5px;background:#eef4fb;color:#176bd0;font-style:normal;font-weight:900;}
  .v119-kpi.ok>i{background:#e9f7ef;color:#149047}.v119-kpi.warn>i{background:#fff4e2;color:#e78900}.v119-kpi.bad>i{background:#fff0f0;color:#e63737}
  .v119-kpi>span{display:grid;gap:1px;min-width:0;}
  .v119-kpi small{font-size:calc(var(--ui117-body-font) - 3px);font-weight:800;color:#405a77;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .v119-kpi strong{font-size:calc(var(--ui117-body-font) + 2px);line-height:1.05;color:#102d50;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .v119-kpi em{font-size:calc(var(--ui117-body-font) - 4px);font-style:normal;color:#74859a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}

  /* v1.0.69: 옛 대시보드 행/열 그리드(.v119-grid.ceo-main/.admin-top/.manager-main …)는 블럭 구조(.dblk-grid)로 대체 — 삭제. .v119-panel 등 패널 겉모습은 블럭도 그대로 씀. */
  .v119-panel{min-width:0;min-height:0;display:flex;flex-direction:column;border:1px solid var(--v119-line);border-radius:4px;background:#fff;overflow:hidden;box-shadow:0 1px 4px rgba(20,49,79,.03);}
  .v119-panel>header{height:31px;min-height:31px;display:flex;align-items:center;justify-content:space-between;gap:6px;padding:4px 8px;border-bottom:1px solid #e3eaf2;background:#fbfdff;box-sizing:border-box;}
  .v119-panel>header>span{display:flex;align-items:baseline;gap:6px;min-width:0;}
  .v119-panel>header small{font-size:calc(var(--ui117-body-font) - 4px);color:#6280a0;font-weight:800;white-space:nowrap;}
  .v119-panel>header strong{font-size:calc(var(--ui117-body-font) - 1px);color:#132f52;font-weight:900;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}

  .v119-table{display:grid;min-height:0;overflow:auto;font-size:calc(var(--ui117-body-font) - 3px);}
  .v119-table-head,.v119-table-row{display:grid;grid-template-columns:1.35fr 1fr .58fr .58fr .7fr .58fr .58fr 22px;align-items:center;gap:3px;padding:0 6px;min-height:27px;border-bottom:1px solid #edf1f5;box-sizing:border-box;}
  .v119-table-head{min-height:25px;background:#f5f8fc;color:#5d6f84;font-weight:900;}
  .v119-table-row{border-left:3px solid transparent;background:#fff;color:#253a52;text-align:left;width:100%;border-top:0;border-right:0;cursor:pointer;}
  .v119-table-row:hover{background:#f7fbff;border-left-color:#2080ed;}
  .v119-table-row .station{display:grid;min-width:0;}.v119-table-row .station strong{font-size:calc(var(--ui117-body-font) - 2px);color:#123252;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.v119-table-row .station small{font-size:calc(var(--ui117-body-font) - 5px);color:#7c8997;}
  .v119-status{display:inline-flex;align-items:center;justify-content:center;width:max-content;min-width:34px;height:19px;padding:0 4px;border-radius:3px;font-size:calc(var(--ui117-body-font) - 5px);font-weight:900;}.v119-status.ok{background:#eaf7ef;color:#16864b}.v119-status.bad{background:#fff0ee;color:#e13d35}.v119-table .ok{color:#148b4c;font-weight:900}.v119-table .warn{color:#dc8300;font-weight:900}.v119-table .bad{color:#e03b34;font-weight:900}.v119-table-row .arrow{font-size:18px;color:#176bd1;text-align:right;}

  .v119-chart{height:100%;min-height:0;padding:7px 8px 5px;box-sizing:border-box;}
  .v119-chart-bars{height:100%;min-height:105px;display:flex;align-items:flex-end;gap:3px;border-bottom:1px solid #dfe7ef;padding:5px 3px 17px;box-sizing:border-box;background:linear-gradient(to top,#fbfdff,#fff);}
  .v119-chart-bars>span{position:relative;flex:1;height:100%;display:flex;align-items:flex-end;justify-content:center;min-width:4px;}.v119-chart-bars i{display:block;width:72%;max-width:15px;background:linear-gradient(180deg,#6aa5f4,#2f78dc);border-radius:2px 2px 0 0;}.v119-chart-bars small{position:absolute;bottom:-15px;font-size:9px;color:#7a8999;white-space:nowrap;}

  .v119-risk-list,.v119-list,.v119-mini-table{display:grid;min-height:0;overflow:auto;}
  .v119-risk-list button{height:34px;display:grid;grid-template-columns:18px 1.3fr .8fr 38px;gap:5px;align-items:center;border:0;border-bottom:1px solid #edf1f5;background:#fff;text-align:left;padding:3px 7px;font-size:calc(var(--ui117-body-font) - 3px);}.v119-risk-list button>b:first-child{width:17px;height:17px;display:grid;place-items:center;border-radius:2px;background:#edf3fa;color:#2c517b}.v119-risk-list span{display:grid;min-width:0}.v119-risk-list span strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.v119-risk-list span small{font-size:9px;color:#7d8a98}.v119-risk-list em{height:6px;border-radius:4px;background:#edf1f5;overflow:hidden}.v119-risk-list em i{display:block;height:100%;background:#28a05a}.v119-risk-list .bad{color:#ef3838}.v119-risk-list .warn{color:#eb8c00}.v119-risk-list .ok{color:#19864a}
  .v119-list button{min-height:31px;display:grid;grid-template-columns:7px 1fr auto;align-items:center;gap:6px;border:0;border-bottom:1px solid #edf1f5;background:#fff;text-align:left;padding:4px 8px;}.v119-list button>i{width:6px;height:6px;border-radius:50%;background:#2e7ad8}.v119-list button>i.bad{background:#ef4141}.v119-list button>i.warn{background:#f09a13}.v119-list button>i.info{background:#2e7ad8}.v119-list button span{display:grid;min-width:0}.v119-list button strong{font-size:calc(var(--ui117-body-font) - 3px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#253d58}.v119-list button small{font-size:calc(var(--ui117-body-font) - 5px);color:#7c8997;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.v119-list button>em{font-size:calc(var(--ui117-body-font) - 5px);font-style:normal;color:#73869a;white-space:nowrap}.v119-list.compact button{min-height:33px;}
  .v119-mini-table button{min-height:31px;display:flex;justify-content:space-between;align-items:center;border:0;border-bottom:1px solid #edf1f5;background:#fff;padding:4px 8px;font-size:calc(var(--ui117-body-font) - 3px);}.v119-mini-table .bad{color:#e83d37}.v119-mini-table .ok{color:#168b4d}

  .v119-station-cards{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;padding:6px;min-height:0;}.v119-station-cards>button{min-width:0;display:grid;grid-template-rows:auto auto auto 7px auto;gap:4px;padding:7px 8px;border:1px solid #dce5ee;border-radius:4px;background:#fff;text-align:left;color:#243c58;}.v119-station-cards>button.risk{border-color:#f3c8c4;background:#fffafa}.v119-station-cards header{display:flex;justify-content:space-between;align-items:center;gap:5px}.v119-station-cards header strong{font-size:calc(var(--ui117-body-font) - 1px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#102e4f}.v119-station-cards>button>div{display:flex;justify-content:space-between;gap:5px;font-size:calc(var(--ui117-body-font) - 4px)}.v119-station-cards>button>i{height:7px;border-radius:4px;background:#edf1f5;overflow:hidden}.v119-station-cards>button>i>em{display:block;height:100%;background:#25a05a}.v119-station-cards>button.risk>i>em{background:#ef4c42}.v119-station-cards>button>small{font-size:calc(var(--ui117-body-font) - 5px);color:#6d7e90;}

  .v119-system-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;padding:7px;height:100%;box-sizing:border-box;}.v119-system-cards button{border:1px solid #dce5ef;border-radius:4px;background:#fbfdff;display:grid;align-content:center;gap:3px;text-align:left;padding:7px;}.v119-system-cards span{font-size:calc(var(--ui117-body-font) - 4px);color:#6f8092}.v119-system-cards strong{font-size:calc(var(--ui117-body-font) + 1px);color:#173a5f}.v119-system-cards small{font-size:calc(var(--ui117-body-font) - 5px);color:#7c8a99}.v119-system-cards strong.ok{color:#168b4d}.v119-system-cards strong.warn{color:#e08a00}
  .v119-process{display:grid;align-content:center;gap:10px;padding:10px;height:100%;box-sizing:border-box;}.v119-process>span{display:grid;grid-template-columns:38px 1fr 38px;gap:6px;align-items:center;font-size:calc(var(--ui117-body-font) - 3px)}.v119-process i{height:8px;border-radius:4px;background:#edf1f5;overflow:hidden}.v119-process i em{display:block;height:100%;background:#2d7cd7}.v119-process strong{text-align:right;color:#31516f}

  .v119-tank-table{display:grid;min-height:0;overflow:auto;font-size:calc(var(--ui117-body-font) - 4px)}.v119-tank-table .head,.v119-tank-table>button{display:grid;grid-template-columns:.7fr .9fr .9fr .9fr 1.2fr .55fr;gap:5px;align-items:center;min-height:29px;padding:3px 7px;box-sizing:border-box;border-bottom:1px solid #edf1f5}.v119-tank-table .head{background:#f5f8fb;font-weight:900;color:#61758c}.v119-tank-table>button{border-top:0;border-left:0;border-right:0;background:#fff;text-align:left;color:#243c58}.v119-tank-table>button span:nth-child(5){display:grid;grid-template-columns:1fr 30px;gap:4px;align-items:center}.v119-tank-table>button span:nth-child(5)>i{height:7px;border-radius:4px;background:#edf1f5;overflow:hidden}.v119-tank-table>button span:nth-child(5)>i em{display:block;height:100%;background:#2ba15b}.v119-tank-table b.ok{color:#198b4c}.v119-tank-table b.warn{color:#e38b00}.v119-tank-table b.bad{color:#e74039}
  .v119-tank-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:6px;padding:6px;}.v119-tank-cards>button{min-width:0;border:1px solid #dce4ed;border-radius:4px;background:#fff;text-align:left;padding:7px;display:grid;gap:4px;color:#263d58}.v119-tank-cards header{display:flex;justify-content:space-between;gap:5px}.v119-tank-cards header strong{color:#123352}.v119-tank-cards header span{font-size:10px;color:#718096}.v119-tank-cards>button>b{font-size:calc(var(--ui117-body-font) + 1px);color:#102f50}.v119-tank-cards>button>b small{font-size:10px;color:#718096}.v119-tank-cards .gauge{position:relative;height:34px;overflow:hidden}.v119-tank-cards .gauge i{position:absolute;left:8%;right:8%;bottom:-22px;height:54px;border:8px solid #e7edf4;border-radius:50%;border-bottom-color:transparent;transform:rotate(-45deg)}.v119-tank-cards .gauge i:after{content:"";position:absolute;inset:-8px;border:8px solid #25a05a;border-radius:50%;border-bottom-color:transparent;clip-path:polygon(0 0,calc(var(--pct)*1%) 0,calc(var(--pct)*1%) 100%,0 100%)}.v119-tank-cards .gauge strong{position:absolute;inset:auto 0 0;text-align:center;color:#173b5f}.v119-tank-cards footer{display:flex;justify-content:space-between;font-size:10px}.v119-tank-cards footer .bad{color:#e53f39}.v119-tank-cards footer .warn{color:#e48a00}.v119-tank-cards footer .ok{color:#188a4c}
  .v119-empty{min-height:52px;display:grid;place-items:center;color:#74869a;font-size:calc(var(--ui117-body-font) - 3px);padding:8px}.v119-empty.ok{color:#16894c}.v119-empty.bad{color:#de3f38;background:#fff5f4}

  /* manager multi/smaller screen controlled scroll only when necessary */
  @media(max-height:850px){.v119-kpi{height:62px}.v119-panel>header{height:28px;min-height:28px}.v119-station-cards{gap:4px}.v119-dashboard{gap:4px}.v119-kpis{gap:4px}.v119-grid{gap:4px}}
  @media(max-width:1500px){.topbar-brand-v119{min-width:205px}.topbar-brand-v119 strong{font-size:14px!important}.topbar-user-v119{display:none!important}.ui-setting-cluster label>span{display:none!important}.v119-kpis{grid-template-columns:repeat(4,1fr)}[data-view="dashboard"]{overflow:auto!important}.v119-dashboard-host{overflow:auto!important}.v119-dashboard{height:auto;min-height:100%;}.v119-station-cards{grid-template-columns:repeat(3,1fr)}}

  /* ---------- staff/work center visual family ---------- */
  html[data-ui-role="STAFF"] .desktop-workcenter{height:100%;display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;gap:6px;overflow:hidden;}
  html[data-ui-role="STAFF"] .role-dashboard-head{display:none!important;}
  html[data-ui-role="STAFF"] .work-center-stats{display:grid!important;grid-template-columns:repeat(8,minmax(0,1fr))!important;gap:6px!important;margin:0!important;}
  html[data-ui-role="STAFF"] .work-stat{height:72px!important;border:1px solid var(--v119-line)!important;border-radius:4px!important;background:#fff!important;padding:7px 9px!important;box-sizing:border-box!important;display:grid!important;align-content:center!important;gap:2px!important;}
  html[data-ui-role="STAFF"] .work-stat span{font-size:calc(var(--ui117-body-font) - 3px)!important;font-weight:800;color:#405a76}.work-stat strong{font-size:calc(var(--ui117-body-font) + 3px)!important;color:#102e50}.work-stat small{font-size:calc(var(--ui117-body-font) - 4px)!important;color:#728499}
  html[data-ui-role="STAFF"] .role-dashboard-grid{display:grid!important;grid-template-columns:1.4fr 1fr!important;gap:6px!important;min-height:0!important;overflow:hidden!important;}
  html[data-ui-role="STAFF"] .role-dashboard-panel{border:1px solid var(--v119-line)!important;border-radius:4px!important;background:#fff!important;box-shadow:none!important;min-height:0!important;overflow:hidden!important;}
  html[data-ui-role="STAFF"] .role-dashboard-primary{display:flex;flex-direction:column;}
  html[data-ui-role="STAFF"] .role-panel-head{min-height:31px!important;padding:4px 8px!important;border-bottom:1px solid #e4eaf1!important;background:#fbfdff!important;}
  html[data-ui-role="STAFF"] .role-panel-head h2{font-size:calc(var(--ui117-body-font) - 1px)!important;color:#143354!important;}
  html[data-ui-role="STAFF"] .role-panel-kicker{font-size:calc(var(--ui117-body-font) - 4px)!important;color:#69819a!important;}
  html[data-ui-role="STAFF"] .role-dashboard-side{display:grid!important;grid-template-columns:1fr!important;gap:6px!important;min-height:0!important;}
  html[data-ui-role="STAFF"] .work-calendar-panel,html[data-ui-role="STAFF"] .role-quick-panel{margin:0!important;}
  html[data-ui-role="STAFF"] .work-shortcuts{display:grid!important;grid-template-columns:repeat(6,1fr)!important;gap:6px!important;padding:7px!important;}
  html[data-ui-role="STAFF"] .work-shortcuts button{min-height:64px!important;border:1px solid #dce5ef!important;border-radius:4px!important;background:#fff!important;display:grid!important;place-content:center!important;text-align:center!important;gap:3px!important;}

  /* default one-screen rule; custom larger fonts/density naturally unlock main scrolling */
  html:not([style*="--ui117-body-font: 0px"]) [data-view="dashboard"]{scrollbar-width:thin;}
}

/* mobile remains field-first; only keep quick upload functionality, not desktop shell */
@media(max-width:959px){
  .topbar-brand-v119,.topbar-user-v119{display:none!important;}
}
@media(min-width:960px){
  .v119-staff-board{height:100%;display:grid;grid-template-columns:1fr 1.15fr;gap:6px;padding:7px;box-sizing:border-box;}
  .v119-staff-board>section{border:1px solid #dce5ef;border-radius:4px;background:#fff;overflow:hidden;}
  .v119-staff-board>section>header{height:31px;display:flex;align-items:baseline;gap:6px;padding:4px 8px;border-bottom:1px solid #e5ebf2;background:#fbfdff;box-sizing:border-box;}
  .v119-staff-board>section>header small{font-size:calc(var(--ui117-body-font) - 4px);font-weight:800;color:#71879d}.v119-staff-board>section>header strong{font-size:calc(var(--ui117-body-font) - 1px);color:#153555}
  .v119-staff-summary{display:grid;grid-template-columns:repeat(2,1fr);gap:6px;padding:8px}.v119-staff-summary span{min-height:58px;border:1px solid #e0e8f0;border-radius:4px;background:#fbfdff;padding:7px;display:grid;align-content:center;gap:2px}.v119-staff-summary small{font-size:calc(var(--ui117-body-font) - 4px);color:#728398}.v119-staff-summary b{font-size:calc(var(--ui117-body-font) + 2px);color:#123353}.v119-staff-summary b.bad{color:#e13c36}.v119-staff-summary b.ok{color:#178a4c}
  .v119-staff-quick{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;padding:8px}.v119-staff-quick button{min-height:72px;border:1px solid #dce5ef;border-radius:4px;background:#fff;text-align:left;padding:8px;display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto;align-content:center;gap:3px;color:#173653}.v119-staff-quick b{font-size:calc(var(--ui117-body-font) - 1px)}.v119-staff-quick small{font-size:calc(var(--ui117-body-font) - 4px);color:#7b8998}.v119-staff-quick em{grid-row:1/3;grid-column:2;font-size:20px;color:#1670d8;font-style:normal;align-self:center}
}

/* v1.0.20 ONE-SCREEN ROLE ROWS FINAL */
@media(min-width:960px){
  .v119-dashboard.ceo,.v119-dashboard.admin{
    grid-template-rows:auto auto minmax(0,1.28fr) minmax(0,.78fr) minmax(116px,.48fr)!important;
  }
  .v119-dashboard.manager{
    grid-template-rows:auto auto minmax(0,1fr) minmax(145px,.42fr)!important;
  }
  .v119-dashboard.ceo>.v119-panel:last-child,
  .v119-dashboard.admin>.v119-panel:last-child,
  .v119-dashboard.manager>.v119-panel:last-child{min-height:0!important;overflow:hidden!important;}
}


/* v1.0.20 ROLE DASHBOARD FINAL — 확정 시안 실사이트 구현 */
@media(min-width:960px){
  :root{--v120-gap:7px;--v120-head:32px;}
  [data-view="dashboard"]{padding:0!important;overflow:hidden!important;background:#f4f7fb!important;}
  .v119-dashboard-host{height:calc(100vh - var(--v119-topbar))!important;padding:8px 10px 9px!important;box-sizing:border-box!important;overflow:hidden!important;}
  .v119-dashboard{height:100%!important;display:grid!important;gap:var(--v120-gap)!important;min-height:0!important;}
  .v119-titlebar{height:36px!important;min-height:36px!important;padding:0 4px!important;display:flex!important;align-items:center!important;justify-content:space-between!important;border:0!important;background:transparent!important;}
  .v119-titlebar>div{display:flex!important;align-items:baseline!important;gap:8px!important;}.v119-titlebar span{font-size:11px!important;color:#59708a!important;font-weight:800!important}.v119-titlebar h1{font-size:20px!important;margin:0!important;color:#102e52!important}.v119-titlebar>button{height:30px!important;min-height:30px!important;border:1px solid #d7e2ee!important;background:#fff!important;color:#176ac7!important;border-radius:4px!important;padding:0 10px!important;font-weight:900!important}
  .v119-kpis{display:grid!important;grid-template-columns:repeat(8,minmax(0,1fr))!important;gap:7px!important;min-height:0!important;}
  .v119-kpi{height:82px!important;min-height:82px!important;border:1px solid #dbe4ef!important;border-radius:5px!important;background:#fff!important;padding:8px 10px!important;display:grid!important;grid-template-columns:36px 1fr!important;align-items:center!important;gap:7px!important;box-shadow:0 1px 2px rgba(22,50,84,.03)!important;}
  .v119-kpi>i{width:32px!important;height:32px!important;display:grid!important;place-items:center!important;border-radius:7px!important;background:#eef5ff!important;color:#176bd3!important;font-size:19px!important;font-style:normal!important}.v119-kpi.ok>i{background:#edf8f1!important;color:#198f50!important}.v119-kpi.warn>i{background:#fff7e8!important;color:#e78b00!important}.v119-kpi.bad>i{background:#fff0ef!important;color:#e7443d!important}
  .v119-kpi span{display:grid!important;align-content:center!important;min-width:0!important}.v119-kpi small{font-size:11px!important;color:#415b77!important;font-weight:900!important}.v119-kpi strong{font-size:17px!important;line-height:1.1!important;color:#102e52!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}.v119-kpi em{font-size:9px!important;font-style:normal!important;color:#728398!important;margin-top:3px!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
  .v119-panel{min-height:0!important;overflow:hidden!important;border:1px solid #dbe4ef!important;border-radius:5px!important;background:#fff!important;box-shadow:0 1px 2px rgba(22,50,84,.02)!important;display:flex!important;flex-direction:column!important}.v119-panel>header{height:var(--v120-head)!important;min-height:var(--v120-head)!important;display:flex!important;align-items:center!important;justify-content:space-between!important;padding:4px 9px!important;box-sizing:border-box!important;border-bottom:1px solid #e7edf4!important;background:#fff!important}.v119-panel>header span{display:flex!important;align-items:baseline!important;gap:6px!important}.v119-panel>header small{font-size:9px!important;color:#7d8da0!important;font-weight:800!important}.v119-panel>header strong{font-size:13px!important;color:#153656!important}.v119-panel>header button{border:0!important;background:transparent!important;color:#1472da!important;font-size:10px!important;font-weight:900!important;padding:0!important;min-height:auto!important}

  .v120-ceo-table{height:100%!important;display:flex!important;flex-direction:column!important;overflow:hidden!important}.v120-ceo-head,.v120-ceo-row{display:grid!important;grid-template-columns:1.1fr .95fr 1.02fr .55fr .55fr .65fr .58fr .58fr 20px!important;align-items:center!important;gap:4px!important;padding:0 7px!important;box-sizing:border-box!important}.v120-ceo-head{height:27px!important;min-height:27px!important;background:#f5f8fb!important;border-bottom:1px solid #e3eaf2!important;font-size:9px!important;color:#64778c!important;font-weight:900!important}.v120-ceo-row{height:35px!important;min-height:35px!important;border:0!important;border-bottom:1px solid #edf1f5!important;background:#fff!important;text-align:left!important;color:#203d5a!important;font-size:9.5px!important}.v120-ceo-row:hover{background:#f8fbff!important}.v120-ceo-row .station strong{font-size:10.5px!important;color:#113251!important}.v120-ceo-row .ok{color:#168d4d!important;font-weight:900!important}.v120-ceo-row .warn{color:#e58a00!important;font-weight:900!important}.v120-ceo-row .bad{color:#e33f39!important;font-weight:900!important}.v120-ceo-row .arrow{font-size:18px!important;color:#176bd2!important}.v120-ceo-table footer{margin-top:auto!important;min-height:24px!important;display:flex!important;align-items:center!important;gap:12px!important;padding:0 8px!important;font-size:9px!important;color:#7c8997!important}.v120-ceo-table footer span:last-child{margin-left:auto!important}
  .v120-sales-chart .v119-chart-bars{position:relative!important;overflow:hidden!important}.v120-sales-line{position:absolute!important;left:4px!important;right:4px!important;top:8px!important;bottom:18px!important;width:calc(100% - 8px)!important;height:calc(100% - 26px)!important;pointer-events:none!important;overflow:visible!important}.v120-sales-line polyline{fill:none!important;stroke:#199653!important;stroke-width:1.3!important;vector-effect:non-scaling-stroke!important}
  .v119-risk-list button{height:43px!important;grid-template-columns:20px 1.2fr .9fr 42px!important;font-size:10px!important}.v119-risk-list span small{font-size:8.5px!important}.v119-list button{min-height:29px!important}.v119-list button strong{font-size:10px!important}.v119-list button small,.v119-list button>em{font-size:8.5px!important}.v119-mini-table button{min-height:29px!important;font-size:10px!important}
  .v120-station-cards{height:100%!important;display:grid!important;grid-template-columns:repeat(5,minmax(0,1fr))!important;gap:7px!important;padding:7px!important;box-sizing:border-box!important}.v120-station-cards>button{min-width:0!important;border:1px solid #dce5ee!important;border-radius:5px!important;background:#fff!important;padding:8px 9px!important;text-align:left!important;display:grid!important;grid-template-rows:auto auto 1fr auto!important;gap:6px!important;color:#223d59!important}.v120-station-cards>button.risk{border-color:#f1c4c1!important;background:#fffafa!important}.v120-station-cards header{display:flex!important;align-items:center!important;justify-content:space-between!important}.v120-station-cards header strong{font-size:12px!important;color:#113251!important}.station-card-metrics{display:grid!important;grid-template-columns:1fr 1fr!important;gap:2px 8px!important;font-size:9px!important}.station-card-metrics span:last-child{grid-column:1/3!important}.station-card-fuels{display:grid!important;gap:4px!important;align-content:center!important}.station-card-fuels>span{display:grid!important;grid-template-columns:55px 1fr 64px!important;align-items:center!important;gap:5px!important;font-size:8.7px!important}.station-card-fuels>span>b{font-size:9px!important}.station-card-fuels i{height:6px!important;border-radius:3px!important;background:#edf1f5!important;overflow:hidden!important}.station-card-fuels i em{display:block!important;height:100%!important;background:#20a05a!important}.v120-station-cards>button.risk .station-card-fuels i em{background:#ef574d!important}.station-card-fuels small{text-align:right!important;color:#687b8f!important}.v120-station-cards footer{display:flex!important;align-items:center!important;gap:8px!important;font-size:8.7px!important;border-top:1px solid #edf1f5!important;padding-top:5px!important}.v120-station-cards footer span:nth-child(3){margin-left:auto!important}.v120-station-cards footer b{font-size:16px!important;color:#176bd1!important}

  .v119-dashboard.admin{grid-template-rows:36px 82px 285px 200px minmax(175px,1fr)!important}.v119-grid.admin-top{display:grid!important;grid-template-columns:1.25fr 1fr!important;gap:7px!important;min-height:0!important}.v119-grid.admin-mid{display:grid!important;grid-template-columns:.78fr 1.15fr 1.05fr!important;gap:7px!important;min-height:0!important}.v120-admin-table{height:100%!important;overflow:hidden!important}.v120-admin-head,.v120-admin-row{display:grid!important;grid-template-columns:1.2fr repeat(4,.78fr) .55fr .55fr .55fr .55fr 18px!important;align-items:center!important;gap:4px!important;padding:0 7px!important;box-sizing:border-box!important}.v120-admin-head{height:28px!important;background:#f5f8fb!important;border-bottom:1px solid #e4ebf3!important;color:#60748b!important;font-size:8.7px!important;font-weight:900!important}.v120-admin-row{height:39px!important;border:0!important;border-bottom:1px solid #edf1f5!important;background:#fff!important;color:#24405b!important;font-size:8.7px!important;text-align:left!important}.v120-admin-row>span:first-child{display:grid!important}.v120-admin-row>span:first-child strong{font-size:10px!important;color:#113251!important}.v120-admin-row>span:first-child small{font-size:8.3px!important;color:#6f8195!important}.fuel-cell{display:grid!important;gap:2px!important}.fuel-cell small{font-size:8px!important;color:#3e5872!important;white-space:nowrap!important}.fuel-cell i{height:5px!important;background:#edf1f5!important;border-radius:3px!important;overflow:hidden!important}.fuel-cell i em{display:block!important;height:100%!important;background:var(--fuel-etc)}.v120-admin-row .ok{color:#168b4c!important;font-weight:900!important}.v120-admin-row .warn{color:#df8700!important;font-weight:900!important}.v120-admin-row .bad{color:#e03e38!important;font-weight:900!important}.v120-admin-row>b{font-size:17px!important;color:#176bd1!important}.v120-backup-layout{height:100%!important;display:grid!important;grid-template-columns:1.15fr 1.15fr .8fr!important;gap:7px!important;padding:7px!important;box-sizing:border-box!important}.v120-backup-layout>div{border:1px solid #e1e8f0!important;border-radius:4px!important;background:#fbfdff!important;padding:8px!important;display:grid!important;align-content:start!important;gap:6px!important;font-size:9px!important}.v120-backup-layout>div>strong{font-size:11px!important;color:#163757!important}.v120-backup-layout span{display:flex!important;justify-content:space-between!important;gap:5px!important}.v120-backup-layout b.ok{color:#188c4d!important}.v120-backup-layout b.warn{color:#e28700!important}.v120-backup-layout small{color:#758598!important}.v120-backup-layout button{margin-top:auto!important;min-height:25px!important;border:1px solid #d7e2ee!important;border-radius:3px!important;background:#fff!important;color:#176bd0!important;font-size:9px!important;font-weight:900!important}.v120-audit-summary{display:grid!important;height:100%!important;overflow:hidden!important}.v120-audit-summary>span{display:grid!important;grid-template-columns:52px 1fr 60px 42px!important;gap:4px!important;align-items:center!important;min-height:28px!important;padding:0 7px!important;border-bottom:1px solid #edf1f5!important;font-size:8.8px!important}.v120-audit-summary small{color:#718398!important}.v120-audit-summary b{font-weight:800!important;color:#28445f!important}.v120-audit-summary em{font-style:normal!important;color:#60748b!important}.v120-audit-summary strong{color:#168a4c!important}

  .v119-dashboard.manager{grid-template-rows:36px 82px minmax(0,1fr) 250px!important}.v119-grid.manager-main{display:grid!important;grid-template-columns:1.05fr 1.42fr .68fr .66fr!important;gap:7px!important;min-height:0!important}.v120-manager-sales{height:100%!important;display:grid!important;grid-template-rows:minmax(0,1fr) 105px!important;min-height:0!important}.v120-manager-sales .daily{min-height:0!important}.v120-manager-sales .mini-row{display:grid!important;grid-template-columns:1.15fr .85fr!important;gap:6px!important;padding:0 7px 7px!important}.v120-manager-sales .hourly,.v120-manager-sales .fuelmix{border:1px solid #e4eaf1!important;border-radius:4px!important;padding:6px!important;overflow:hidden!important}.v120-manager-sales .hourly>strong,.v120-manager-sales .fuelmix>strong{font-size:9px!important;color:#31516f!important}.v120-manager-sales .hourly>div{height:65px!important;display:flex!important;align-items:flex-end!important;gap:3px!important;padding-top:4px!important}.v120-manager-sales .hourly span{flex:1!important;height:100%!important;display:flex!important;align-items:flex-end!important}.v120-manager-sales .hourly i{display:block!important;width:100%!important;background:#3e84df!important;border-radius:2px 2px 0 0!important}.v120-manager-sales .hourly small{font-size:8.5px!important;color:#74869a!important}.v120-manager-sales .fuelmix{display:grid!important;grid-template-columns:72px 1fr!important;grid-template-rows:auto 1fr!important;gap:4px 7px!important}.v120-manager-sales .fuelmix>strong{grid-column:1/3!important}.v120-manager-sales .donut{width:65px!important;height:65px!important;border-radius:50%!important;position:relative!important}.v120-manager-sales .donut:after{content:""!important;position:absolute!important;inset:18px!important;border-radius:50%!important;background:#fff!important}.v120-manager-sales .fuelmix ul{list-style:none!important;margin:0!important;padding:0!important;display:grid!important;align-content:center!important;gap:3px!important}.v120-manager-sales .fuelmix li{display:grid!important;grid-template-columns:7px 1fr 28px!important;gap:4px!important;align-items:center!important;font-size:8px!important}.v120-manager-sales .fuelmix li>i{width:6px!important;height:6px!important;border-radius:1px!important}.v120-manager-sales .fuelmix li b{text-align:right!important}.v120-manager-docs{border-top:1px solid #edf1f5!important;margin:4px 7px 0!important;padding:6px 0!important;display:grid!important;gap:4px!important;font-size:9px!important}.v120-manager-docs>strong{font-size:10px!important;color:#31516f!important}.v120-manager-docs span{display:flex!important;justify-content:space-between!important}.v119-tank-cards{height:100%!important;grid-template-columns:repeat(auto-fit,minmax(145px,1fr))!important;align-items:stretch!important}.v119-tank-cards>button{display:grid!important;grid-template-rows:auto auto 44px auto auto!important;gap:4px!important}.v119-tank-cards .tank-delta{font-size:8.5px!important;color:#718398!important}

  html[data-ui-role="STAFF"] .desktop-workcenter{height:calc(100vh - var(--v119-topbar))!important;padding:9px 10px!important;box-sizing:border-box!important;display:grid!important;grid-template-rows:82px minmax(0,1fr) 220px!important;gap:7px!important;overflow:hidden!important}.desktop-workcenter>.role-dashboard-head,html[data-ui-role="STAFF"] #workCenterPushRequired,html[data-ui-role="STAFF"] #workCenterBusiness,html[data-ui-role="STAFF"] #workCenterInsights,html[data-ui-role="STAFF"] .role-quick-panel{display:none!important}.html[data-ui-role="STAFF"] .role-dashboard-head{display:none!important}html[data-ui-role="STAFF"] .work-center-stats{grid-template-columns:repeat(8,minmax(0,1fr))!important;gap:7px!important}html[data-ui-role="STAFF"] .work-stat{height:82px!important;min-height:82px!important;border:1px solid #dbe4ef!important;border-radius:5px!important;background:#fff!important;padding:8px 10px!important}html[data-ui-role="STAFF"] .work-stat span{font-size:11px!important}html[data-ui-role="STAFF"] .work-stat strong{font-size:18px!important}html[data-ui-role="STAFF"] .work-stat small{font-size:9px!important}html[data-ui-role="STAFF"] .role-dashboard-grid{display:grid!important;grid-template-columns:minmax(0,1.55fr) minmax(300px,.8fr)!important;gap:7px!important;min-height:0!important;overflow:hidden!important}html[data-ui-role="STAFF"] .role-dashboard-primary{height:100%!important;min-height:0!important}.v120-staff-board{height:100%!important;display:grid!important;grid-template-columns:1.05fr .82fr .82fr!important;grid-template-rows:1fr 1fr!important;gap:7px!important;padding:0!important}.v120-staff-board>section{border:1px solid #dbe4ef!important;border-radius:5px!important;background:#fff!important;overflow:hidden!important}.v120-staff-board>section>header{height:34px!important;display:flex!important;align-items:baseline!important;justify-content:space-between!important;padding:6px 9px!important;border-bottom:1px solid #e7edf4!important;box-sizing:border-box!important}.v120-staff-board>section>header strong{font-size:13px!important;color:#153656!important}.v120-staff-board>section>header small{font-size:9px!important;color:#74869a!important}.v120-staff-board .staff-quick{grid-row:1/3!important}.v120-staff-board .staff-quick>div{display:grid!important;grid-template-columns:repeat(3,1fr)!important;grid-template-rows:repeat(2,1fr)!important;gap:7px!important;padding:9px!important;height:calc(100% - 34px)!important;box-sizing:border-box!important}.v120-staff-board .staff-quick button{border:1px solid #dfe7ef!important;border-radius:5px!important;background:#fff!important;display:grid!important;grid-template-columns:1fr auto!important;grid-template-rows:30px auto auto!important;align-content:center!important;padding:8px!important;text-align:left!important;color:#173653!important}.v120-staff-board .staff-quick i{grid-column:1/3!important;font-style:normal!important;font-size:25px!important;color:#1872dc!important}.v120-staff-board .staff-quick b{font-size:12px!important}.v120-staff-board .staff-quick small{font-size:9px!important;color:#738398!important}.v120-staff-board .staff-quick em{grid-column:2!important;grid-row:2/4!important;font-size:18px!important;font-style:normal!important;color:#176bd1!important}.v120-staff-board .staff-summary>div{height:calc(100% - 34px)!important;display:grid!important;grid-template-columns:1fr 1fr!important;gap:7px!important;padding:8px!important;box-sizing:border-box!important}.v120-staff-board .staff-summary span{border:1px solid #e1e8f0!important;border-radius:4px!important;padding:8px!important;display:grid!important;align-content:center!important}.v120-staff-board .staff-summary small{font-size:9px!important;color:#728398!important}.v120-staff-board .staff-summary b{font-size:15px!important;color:#153656!important}.v120-staff-board .staff-summary b.ok{color:#178a4c!important}.v120-staff-board .staff-summary b.warn{color:#e48a00!important}.v120-staff-board .staff-summary b.bad{color:#e23e37!important}.v120-staff-board .staff-tanks>div{height:calc(100% - 34px)!important;display:grid!important;align-content:center!important;gap:8px!important;padding:8px!important;box-sizing:border-box!important}.v120-staff-board .staff-tanks button{border:0!important;background:#fff!important;display:grid!important;grid-template-columns:1fr 1fr 34px!important;align-items:center!important;gap:6px!important;text-align:left!important;color:#29445f!important}.v120-staff-board .staff-tanks span{display:grid!important}.v120-staff-board .staff-tanks b{font-size:10px!important}.v120-staff-board .staff-tanks small{font-size:8px!important;color:#728398!important}.v120-staff-board .staff-tanks i{height:7px!important;background:#edf1f5!important;border-radius:4px!important;overflow:hidden!important}.v120-staff-board .staff-tanks i em{display:block!important;height:100%!important;background:#239f59!important}.v120-staff-board .staff-tanks>div>button:nth-child(n+3) i em{background:#f3a019!important}.v120-staff-board .staff-today>div{height:calc(100% - 34px)!important;display:grid!important;align-content:start!important;overflow:hidden!important}.v120-staff-board .staff-today button{min-height:31px!important;display:grid!important;grid-template-columns:20px 1fr 52px!important;align-items:center!important;gap:5px!important;border:0!important;border-bottom:1px solid #edf1f5!important;background:#fff!important;padding:4px 8px!important;text-align:left!important;color:#2a455f!important;font-size:9px!important}.v120-staff-board .staff-today button>b{width:18px!important;height:18px!important;display:grid!important;place-items:center!important;background:#eef4fb!important;border-radius:2px!important}.v120-staff-board .staff-today em{font-style:normal!important;color:#74869a!important;text-align:right!important;font-size:8px!important}html[data-ui-role="STAFF"] .role-dashboard-side{display:grid!important;grid-template-columns:1fr!important;grid-template-rows:1fr 1fr!important;gap:7px!important;min-height:0!important}html[data-ui-role="STAFF"] .role-dashboard-panel{border:1px solid #dbe4ef!important;border-radius:5px!important;background:#fff!important;overflow:hidden!important}html[data-ui-role="STAFF"] .role-panel-head{height:34px!important;min-height:34px!important;padding:6px 9px!important}html[data-ui-role="STAFF"] .role-alert-row{min-height:32px!important}html[data-ui-role="STAFF"] .work-calendar-panel{margin:0!important;height:220px!important;overflow:hidden!important}
  @media(max-height:900px){.v119-dashboard.ceo{grid-template-rows:34px 76px 260px 175px minmax(170px,1fr)!important}.v119-dashboard.admin{grid-template-rows:34px 76px 255px 180px minmax(165px,1fr)!important}.v119-dashboard.manager{grid-template-rows:34px 76px minmax(0,1fr) 220px!important}.v119-kpi{height:76px!important;min-height:76px!important}.v119-kpi strong{font-size:15px!important}.v119-dashboard-host{padding-top:6px!important}.v120-station-cards>button{padding:6px!important}.station-card-fuels>span{grid-template-columns:46px 1fr 54px!important}}
}


/* v1.0.21 ROLE DASHBOARD REFINEMENT — v1.0.70: .v121-* 클래스 전부 미사용(v120StationCards·v121Sparkline 삭제)으로 제거. v121StationDailyRows 함수는 v123 가 재사용 중이라 유지. */

/* v1.0.22 BACKUP / RESTORE SPLIT */
.system-standalone-view { max-width: none; }
.system-standalone-view .system-page-title { margin-bottom: 8px; }
.system-standalone-view .system-status-message { margin: 0 0 8px; }
.system-standalone-view .system-work-card { margin: 0 0 8px; }
.system-standalone-view .backup-station-row { max-width: 360px; margin-bottom: 8px; }
.system-standalone-view .backup-choice { align-items: stretch; }
.system-standalone-view .backup-kind { height: 100%; }
@media (min-width: 1200px) {
  [data-view="backup"] .backup-choice { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.25fr); gap:8px; }
  [data-view="restore"] .system-work-card { max-width:none; }
}

/* v1.0.30 — 백업/복구 화면 정체성 (2026-08-29)
   열자마자 "지키는 화면"인지 "되돌리는 화면"인지 색·아이콘·한 줄로 못 박는다. */
.screen-hero {
  display:flex; gap:16px; align-items:flex-start;
  border:1px solid var(--line); border-radius:14px; padding:16px 18px;
  background:var(--card,#fff); margin-bottom:10px;
}
.screen-hero.protect { border-left:5px solid #1f9d58; }
.screen-hero.rewind  { border-left:5px solid #d64541; }
.screen-hero .hero-ico {
  width:44px; height:44px; flex:none; border-radius:12px;
  display:grid; place-items:center; font-size:1.35rem;
}
.screen-hero.protect .hero-ico { background:#e5f4ec; color:#1f8a4d; }
.screen-hero.rewind  .hero-ico { background:#fbe7e6; color:#c53a35; }
.screen-hero .hero-copy { flex:1; min-width:0; }
.screen-hero .hero-kind {
  font-size:.72rem; font-weight:800; letter-spacing:.06em; text-transform:uppercase;
  color:#5a6675; display:block; margin-bottom:2px;
}
.screen-hero.protect .hero-kind b { color:#1f8a4d; }
.screen-hero.rewind  .hero-kind b { color:#c53a35; }
.screen-hero .hero-copy h1 { margin:0 0 3px; font-size:1.2rem; }
.screen-hero .hero-copy p { margin:0; font-size:.84rem; color:#5c6673; line-height:1.55; }
.screen-hero .hero-copy p b { color:#33404d; }
.screen-hero .hero-state {
  flex:none; display:flex; flex-direction:column; align-items:flex-end; gap:5px;
  text-align:right; max-width:230px;
}
.screen-hero .hero-state .system-status-message { margin:0; font-size:.74rem; color:#7a8593; }

.safe-line, .risk-line {
  display:flex; gap:9px; align-items:flex-start;
  border-radius:10px; padding:10px 13px; font-size:.82rem; line-height:1.55; margin-bottom:12px;
}
.safe-line { background:#e5f4ec; color:#1c7a45; }
.risk-line { background:#fbe7e6; color:#b83833; }
.risk-line b { white-space:nowrap; font-weight:800; }

.step-badge {
  display:inline-block; flex:none; font-size:.68rem; font-weight:800;
  letter-spacing:.04em; padding:5px 10px; border-radius:999px;
  background:#eef2f7; color:#4a586a; white-space:nowrap; margin-top:1px;
}
.step-no.danger { background:#d64541; }

.restore-run.danger-step {
  border:1px solid #f0c9c6; border-left:4px solid #d64541;
  border-radius:11px; padding:14px 15px 4px; margin-top:12px; background:#fffafa;
}
.restore-run.danger-step .step-head { margin-bottom:9px; }
#restoreBackup.danger, button.danger {
  background:#d64541; border:1px solid #c53a35; color:#fff; font-weight:700;
}
#restoreBackup.danger:hover, button.danger:hover { background:#c53a35; }

.system-standalone-view .do-card > h3 { margin:0 0 8px; font-size:.95rem; }
.system-standalone-view .do-k {
  font-size:.68rem; font-weight:800; letter-spacing:.06em; text-transform:uppercase;
  color:#7a8593; margin-bottom:4px;
}
.system-standalone-view .backup-admin-only { border-top:1px solid var(--line); margin-top:10px; padding-top:10px; }
.system-standalone-view .backup-admin-only h4 { margin:0 0 3px; font-size:.82rem; }

@media (max-width:720px){
  .screen-hero { flex-wrap:wrap; }
  .screen-hero .hero-state { align-items:flex-start; text-align:left; max-width:none; }
}


/* v1.0.23 GASONE CEO DASHBOARD */
@media (min-width:960px){
  .topbar-v119{background:linear-gradient(90deg,#062d58,#073b6c)!important;box-shadow:0 1px 4px rgba(5,34,63,.2)!important}
  .topbar-brand-v119 strong,.sidebar-brand-text{letter-spacing:-.25px!important}
  .topbar-brand-drop{color:#43a7ff!important}.sidebar-nav{background:linear-gradient(180deg,#092f57,#07345f 62%,#062b52)!important}
  .role-menu-root button.active{background:#1375e8!important;box-shadow:inset 3px 0 #79b9ff!important}
  .v123-titlebar{border-bottom:1px solid #d7e3ef!important}
  .v123-ceo .v119-panel{border-color:#d7e2ed!important;border-radius:4px!important;box-shadow:0 1px 2px rgba(29,64,99,.04)!important}
  .v123-ceo .v119-panel>header{height:32px!important;min-height:32px!important;padding:5px 8px!important;background:#fff!important}
  .v123-ceo .v119-panel>header strong{font-size:12px!important}.v123-ceo .v119-panel>header small:empty{display:none!important}
  .v123-kpis{gap:7px!important}.v123-kpis .v119-kpi{border-radius:4px!important;box-shadow:none!important}
  .v123-station-table{height:100%!important;display:grid!important;grid-template-rows:28px repeat(5,1fr) 22px!important;overflow:hidden!important;padding:0 7px 5px!important;box-sizing:border-box!important}
  .v123-station-head,.v123-station-row{display:grid!important;grid-template-columns:1.15fr .9fr 1fr .62fr .78fr .5fr .55fr!important;align-items:center!important;gap:5px!important}
  .v123-station-head{color:#657a90!important;font-size:8.5px!important;font-weight:800!important;border-bottom:1px solid #e4eaf1!important}.v123-station-row{border:0!important;border-bottom:1px solid #edf1f5!important;background:#fff!important;padding:3px 0!important;text-align:left!important;color:#28435d!important;font-size:9px!important}.v123-station-row strong{font-size:9.5px!important;color:#102f4c!important}.v123-station-row b{color:#1671dc!important;text-align:right!important}.v123-station-row .ok{color:#17914e!important}.v123-station-row .warn{color:#e48700!important}.v123-station-row .bad{color:#e43c35!important}.v123-station-table footer{display:flex!important;align-items:center!important;justify-content:space-between!important;font-size:8px!important;color:#718497!important}
  .v123-sales-chart{height:100%!important;padding:5px 9px 7px!important;box-sizing:border-box!important;display:grid!important;grid-template-rows:22px minmax(0,1fr)!important}.v123-sales-chart .legend{display:flex!important;gap:16px!important;align-items:center!important;font-size:8.5px!important;color:#61758a!important}.v123-sales-chart .legend span:before{content:"";display:inline-block;width:18px;height:5px;margin-right:5px;vertical-align:middle}.v123-sales-chart .legend .bar:before{background:#1678e8}.v123-sales-chart .legend .line:before{height:2px;background:#1f9d58}.v123-sales-chart .plot{position:relative!important;display:grid!important;grid-template-columns:repeat(7,1fr)!important;gap:8px!important;align-items:end!important;border-bottom:1px solid #dce5ee!important;background:repeating-linear-gradient(to bottom,#fff 0,#fff 31px,#edf2f6 32px)!important;padding:5px 8px 18px!important;overflow:hidden!important}.v123-sales-chart .col{height:100%!important;display:flex!important;align-items:end!important;justify-content:center!important;position:relative!important}.v123-sales-chart .col i{display:block!important;width:40%!important;min-width:13px!important;background:linear-gradient(#1678e8,#2b83e9)!important}.v123-sales-chart .col small{position:absolute!important;bottom:-15px!important;font-size:8px!important;color:#64788d!important}.v123-sales-chart svg{position:absolute!important;left:9%!important;right:9%!important;top:10%!important;width:82%!important;height:72%!important;overflow:visible!important;pointer-events:none!important}.v123-sales-chart polyline{fill:none!important;stroke:#1b9e56!important;stroke-width:1.7!important;vector-effect:non-scaling-stroke!important}.v123-sales-chart circle{fill:#fff!important;stroke:#1b9e56!important;stroke-width:1.5!important;vector-effect:non-scaling-stroke!important}
  .v123-risk-list{height:100%!important;display:grid!important;grid-template-rows:repeat(5,1fr) 20px!important;padding:3px 8px 5px!important;box-sizing:border-box!important}.v123-risk-list button{border:0!important;border-bottom:1px solid #edf1f5!important;background:#fff!important;display:grid!important;grid-template-columns:22px 1fr 1fr 38px!important;align-items:center!important;gap:7px!important;text-align:left!important;color:#25445e!important;padding:2px 0!important}.v123-risk-list button>b{width:19px;height:19px;display:grid;place-items:center;background:#eff4f8;color:#536b82;font-size:8px}.v123-risk-list button span{display:grid!important}.v123-risk-list button span strong{font-size:9px!important}.v123-risk-list button span small{font-size:7.5px!important;color:#8292a2!important}.v123-risk-list button>i{height:6px!important;background:#e8edf2!important;border-radius:4px!important;overflow:hidden!important}.v123-risk-list button>i em{height:100%!important;display:block!important;background:#ed4d45!important}.v123-risk-list button>strong{text-align:right!important;font-size:10px!important}.v123-risk-list .formula{font-size:7.5px!important;color:#7d8e9f!important;align-self:center!important}
  .v123-report-list{display:grid!important;height:100%!important;padding:4px 8px 7px!important;box-sizing:border-box!important}.v123-report-list button{border:0!important;border-bottom:1px solid #edf1f5!important;background:#fff!important;display:flex!important;align-items:center!important;justify-content:space-between!important;padding:3px 0!important;color:#304c66!important;font-size:9px!important}.v123-report-list .bad{color:#e43d36!important}.v123-report-list .ok{color:#17914e!important}
  .v123-ceo>.v119-panel:last-child{min-height:0!important;overflow:hidden!important}.v123-station-cards{height:100%!important;display:grid!important;grid-template-columns:repeat(5,minmax(0,1fr))!important;gap:7px!important;padding:7px!important;box-sizing:border-box!important}.v123-station-cards>button{min-width:0!important;border:1px solid #dce5ee!important;border-radius:5px!important;background:#fff!important;padding:7px 8px!important;display:grid!important;grid-template-rows:38px 94px 74px 24px!important;gap:5px!important;text-align:left!important;color:#203d58!important;overflow:hidden!important}.v123-station-cards>button.risk{border-color:#f0c5c1!important;background:#fffafa!important}.v123-station-cards>button.attention{border-color:#efd9b0!important;background:#fffdf8!important}.v123-station-cards header{display:grid!important;grid-template-columns:1fr auto!important;grid-template-rows:1fr 1fr!important;align-items:center!important;column-gap:6px!important}.v123-station-cards header>div{display:grid!important;grid-row:1/3!important}.v123-station-cards header strong{font-size:11px!important;color:#0e2f4d!important}.v123-station-cards header span{font-size:8px!important;color:#667b90!important}.v123-station-cards header span b{font-size:10px!important;color:#23435e!important}.v123-station-cards header em{font-size:7.5px!important;font-style:normal!important;color:#63788d!important}.v123-station-cards header i{font-style:normal!important;font-size:7.5px!important;padding:2px 5px!important;border-radius:3px!important;background:#eef8f1!important;color:#188a4b!important}.v123-station-cards header i.risk{background:#fff0ef!important;color:#e34038!important}.v123-station-cards header i.attention{background:#fff6e9!important;color:#dd8500!important}
  .v123-mini-chart{position:relative!important;display:grid!important;grid-template-rows:18px minmax(0,1fr) 16px!important;min-height:0!important}.v123-mini-chart>strong{font-size:8.5px!important;color:#52697e!important}.v123-mini-chart>strong small{font-size:7px!important;font-weight:500!important}.v123-mini-chart svg{width:100%!important;height:58px!important;overflow:visible!important}.v123-mini-chart svg line{stroke:#e7edf3!important;stroke-width:1!important;vector-effect:non-scaling-stroke!important}.v123-mini-chart polygon{fill:rgba(38,126,226,.09)!important}.v123-mini-chart polyline{fill:none!important;stroke:#247de3!important;stroke-width:1.8!important;vector-effect:non-scaling-stroke!important}.v123-mini-chart circle{fill:#fff!important;stroke:#247de3!important;stroke-width:1.3!important;vector-effect:non-scaling-stroke!important}.v123-mini-chart .xlabels{display:grid!important;grid-template-columns:repeat(7,1fr)!important;text-align:center!important;font-size:6.7px!important;color:#718497!important}.v123-mini-chart.empty{display:grid!important;place-items:center!important;color:#8796a6!important;font-size:8px!important}
  .v123-stock-block{display:grid!important;grid-template-rows:18px repeat(3,1fr)!important;border-top:1px solid #edf1f5!important;padding-top:3px!important}.v123-stock-block>strong{font-size:8.5px!important;color:#536a80!important}.v123-stock-block>strong small{font-size:7px!important;font-weight:500!important}.v123-stock-block>span{display:grid!important;grid-template-columns:28px 1fr 16px!important;align-items:center!important;gap:5px!important;font-size:7.5px!important}.v123-stock-block>span>b{font-size:7.5px!important}.v123-stock-block>span>i{height:5px!important;background:#e9eef3!important;border-radius:4px!important;overflow:hidden!important}.v123-stock-block>span>i em{display:block!important;height:100%!important}.v123-stock-block em.bad{background:#ef4f47!important}.v123-stock-block em.warn{background:#f2a018!important}.v123-stock-block em.ok{background:#1f9d58!important}.v123-stock-block>span>small{text-align:right!important;font-size:7px!important}.v123-station-cards footer{display:flex!important;align-items:center!important;justify-content:space-between!important;border-top:1px solid #edf1f5!important;font-size:8px!important;color:#63788d!important}.v123-station-cards footer strong{font-size:8px!important}.v123-station-cards footer b.bad{color:#e33e37!important}.v123-station-cards footer b.warn{color:#e48700!important}.v123-station-cards footer b.ok{color:#178f4d!important}
  @media(max-height:900px){.v123-ceo{grid-template-rows:34px 74px 238px 150px minmax(205px,1fr)!important}.v123-station-cards>button{grid-template-rows:34px 82px 66px 22px!important}.v123-mini-chart svg{height:50px!important}}
}

/* v1.0.24 — 주유소 상세 탭 차트 전용 클래스.
   공용 .bar-track(표 안의 가로 진행바)와 충돌하지 않게 완전히 분리한다. */
#overviewChart.bar-chart {
  min-height: 230px;
  display: flex;
  align-items: stretch;
  gap: 7px;
  overflow-x: auto;
  overflow-y: hidden;
  padding: 30px 4px 8px;
  border-bottom: 1px solid var(--line);
  margin-bottom: 14px;
}
#overviewChart .overview-bar-item {
  flex: 1 0 42px;
  min-width: 42px;
  max-width: 78px;
  display: grid;
  grid-template-rows: 24px 150px auto;
  gap: 5px;
  text-align: center;
}
#overviewChart .overview-bar-value {
  font-size: .6875rem;
  color: var(--muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
#overviewChart .overview-bar-track {
  display: flex;
  align-items: flex-end;
  justify-content: center;
  height: 150px;
  min-height: 150px;
  background: #eef4ff;
  border-radius: 6px 6px 2px 2px !important;
  overflow: hidden;
}
#overviewChart .overview-bar-track > span {
  width: 100%;
  min-height: 4px;
  display: block;
  background: linear-gradient(180deg,#528bff,var(--blue));
  border-radius: 5px 5px 0 0 !important;
  transition: height .18s ease;
}
#overviewChart .overview-bar-item > small {
  font-weight: 800;
  color: #475467;
  white-space: nowrap;
}
@media (max-width: 760px) {
  #overviewChart.bar-chart { min-height: 205px; }
  #overviewChart .overview-bar-item {
    grid-template-rows: 20px 125px auto;
    min-width: 34px;
  }
  #overviewChart .overview-bar-track {
    height: 125px;
    min-height: 125px;
  }
}


/* CALENDAR_WORKSPACE_V125 — 요청 범위: 달력/입고 일정만 */
.calendar-actionbar{display:flex;align-items:center;gap:8px;margin:7px 0;padding:7px 9px;border:1px solid #dbe5ef;border-radius:5px;background:#f7faff}.calendar-actionbar>div{display:flex;align-items:baseline;gap:10px;min-width:0;flex:1}.calendar-actionbar strong{font-size:12px;color:#173a5d}.calendar-actionbar span{font-size:10px;color:#66798d;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.calendar-actionbar button{height:30px;padding:0 10px;font-size:11px;white-space:nowrap}.calendar-delivery-tools{border-color:#b9d4f3!important}.calendar-delivery-tools>summary{color:#155fa8!important;background:#f5f9ff}.calendar-delivery-form{padding:9px!important}.calendar-delivery-head{display:flex;gap:10px;align-items:baseline;margin-bottom:7px}.calendar-delivery-head strong{font-size:12px;color:#173a5d}.calendar-delivery-head span{font-size:10px;color:#6d8094}.calendar-delivery-grid{grid-template-columns:1.05fr 1.1fr .9fr 1.2fr .8fr .8fr!important;gap:6px!important}.calendar-delivery-grid label{font-size:10px!important;font-weight:800;color:#40566e}.calendar-delivery-grid input,.calendar-delivery-grid select{height:32px!important;min-height:32px!important;font-size:11px!important}.calendar-delivery-actions{display:flex;align-items:center;gap:10px;margin-top:7px}.calendar-delivery-actions button{height:31px;padding:0 12px}.calendar-delivery-actions span{font-size:9.5px;color:#74869a}@media(min-width:1200px){[data-view="calendar"]{padding-bottom:8px}.calendar-topbar{margin-bottom:5px!important}.calendar-legendbar{margin:5px 0!important}.calendar-weekday{padding:3px 0!important}.calendar-grid{min-height:0!important}.calendar-day{min-height:82px!important;padding:7px 6px 5px!important;gap:2px!important}.calendar-day .day-head>strong{font-size:12px!important}.calendar-day .badge{font-size:9px!important;padding:2px 4px!important}.calendar-legend{margin-top:5px!important;font-size:9px!important}.calendar-tools{margin-top:7px!important}}@media(max-width:900px){.calendar-actionbar{align-items:stretch;flex-wrap:wrap}.calendar-actionbar>div{flex-basis:100%;display:block}.calendar-actionbar span{display:block;white-space:normal;margin-top:2px}.calendar-delivery-grid{grid-template-columns:1fr 1fr!important}}


/* CALENDAR_DENSITY_HOVER_V126
   요청 범위: 업무 달력만. 상단/사이드바/대시보드는 변경하지 않는다.
   목적: 위 도구를 얇게 만들고 달력을 크게, 날짜 칸에는 4건까지 보이고 hover 시 전체 내역 표시. */
.calendar-day .day-head-meta{display:flex;align-items:center;gap:4px;min-width:0}.day-event-count{display:inline-flex;align-items:center;height:16px;padding:0 4px;background:#eaf2ff;color:#155eef;border:1px solid #cfe0ff;font-size:8.5px;font-weight:900;line-height:1;white-space:nowrap}.badge.cash-calendar{background:#eef7ff;color:#175a92}.badge.cash-calendar.warn{background:#fff4e5;color:#b45f06}.cal-tip{max-width:min(430px,calc(100vw - 24px));max-height:calc(100vh - 24px);padding:11px 13px;font-size:11px;line-height:1.55;white-space:pre-wrap;overflow:hidden;border:1px solid #2f4051;border-radius:5px!important;box-shadow:0 12px 30px #10182840}.calendar-day[data-tip]{cursor:pointer}

@media(min-width:1200px){
  [data-view="calendar"]>.page-title{min-height:32px!important;margin:0 0 3px!important;padding:0!important;display:flex!important;align-items:center!important}
  [data-view="calendar"]>.page-title h1{margin:0!important;font-size:17px!important;line-height:1.05!important}
  [data-view="calendar"]>.page-title p{margin:2px 0 0!important;font-size:9.5px!important;line-height:1.15!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
  [data-view="calendar"] .calendar-topbar{display:grid!important;grid-template-columns:300px minmax(0,1fr)!important;align-items:stretch!important;gap:5px!important;margin:0 0 3px!important}
  [data-view="calendar"] .calendar-move{gap:3px!important;height:36px!important}
  [data-view="calendar"] .calendar-move input[type="month"]{height:34px!important;min-height:34px!important;width:164px!important;font-size:12px!important;padding:0 8px!important}
  [data-view="calendar"] .calendar-move .quiet{height:34px!important;min-height:34px!important;min-width:34px!important;padding:0 8px!important;font-size:11px!important}
  [data-view="calendar"] .calendar-summary{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:4px!important;flex:none!important}
  [data-view="calendar"] .cal-kpi{height:36px!important;min-height:36px!important;box-sizing:border-box!important;display:grid!important;grid-template-columns:auto minmax(0,1fr)!important;align-items:center!important;gap:7px!important;padding:3px 7px!important;border-left-width:3px!important}
  [data-view="calendar"] .cal-kpi span{font-size:9px!important;white-space:nowrap!important}
  [data-view="calendar"] .cal-kpi strong{font-size:12px!important;line-height:1!important;text-align:right!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
  [data-view="calendar"] .calendar-actionbar{height:32px!important;min-height:32px!important;box-sizing:border-box!important;margin:3px 0!important;padding:2px 6px!important;gap:5px!important}
  [data-view="calendar"] .calendar-actionbar>div{gap:6px!important;overflow:hidden!important}
  [data-view="calendar"] .calendar-actionbar strong{font-size:10.5px!important;white-space:nowrap!important}
  [data-view="calendar"] .calendar-actionbar span{font-size:8.8px!important}
  [data-view="calendar"] .calendar-actionbar button{height:26px!important;min-height:26px!important;padding:0 8px!important;font-size:9.5px!important}
  [data-view="calendar"] .calendar-legendbar{min-height:26px!important;height:26px!important;box-sizing:border-box!important;margin:2px 0 3px!important;padding:0 2px!important;display:flex!important;align-items:center!important}
  [data-view="calendar"] .qty-switch button{height:24px!important;min-height:24px!important;padding:0 7px!important;font-size:9.5px!important}
  [data-view="calendar"] .fuel-legend{font-size:9px!important;gap:8px!important}
  [data-view="calendar"] .calendar-weekdays{height:24px!important;min-height:24px!important;margin-bottom:0!important}
  [data-view="calendar"] .calendar-weekday{height:24px!important;box-sizing:border-box!important;padding:4px 0!important;font-size:10px!important}
  [data-view="calendar"] .calendar-grid{height:clamp(560px,calc(100vh - 235px),840px)!important;min-height:560px!important;grid-auto-rows:minmax(0,1fr)!important;gap:0!important;overflow:visible!important}
  [data-view="calendar"] .calendar-grid>div,
  [data-view="calendar"] .calendar-day{min-height:0!important;height:auto!important;padding:5px 5px 4px!important;gap:2px!important;overflow:hidden!important}
  [data-view="calendar"] .calendar-day .day-head{min-height:21px!important;gap:4px!important}
  [data-view="calendar"] .calendar-day .day-head>strong{font-size:12px!important}
  [data-view="calendar"] .calendar-day.today>.day-head>strong{width:21px!important;height:21px!important;font-size:11px!important}
  [data-view="calendar"] .calendar-day .day-head-meta{margin-left:auto!important}
  [data-view="calendar"] .calendar-day .day-sales{font-size:8.5px!important;padding:1px 3px!important}
  [data-view="calendar"] .calendar-day .day-badges{gap:2px!important;overflow:hidden!important}
  [data-view="calendar"] .calendar-day .badge{min-height:16px!important;box-sizing:border-box!important;padding:2px 4px!important;font-size:9px!important;line-height:1.15!important}
  [data-view="calendar"] .calendar-legend{margin:3px 2px 0!important;gap:8px!important;font-size:8.5px!important;min-height:18px!important}
  [data-view="calendar"] .calendar-tools{margin-top:5px!important}
}

@media(max-width:900px){
  .cal-tip{max-width:calc(100vw - 18px);font-size:10.5px}
  .day-event-count{font-size:8px;height:15px}
}


/* CALENDAR_EXECUTIVE_SUMMARY_HOVER_V128
   요청 범위: 달력만. 대표/관리자는 날짜 칸의 입고를 주유소별 요약하고, 전체 Hover는 읽기 쉬운 카드형으로 표시한다. */
[data-view="calendar"] .badge.executive-delivery-summary{display:flex!important;align-items:center!important;gap:4px!important;width:100%!important;max-width:100%!important;box-sizing:border-box!important;background:#eef6ff!important;color:#174f86!important;border:1px solid #cfe2f7!important;font-weight:700!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important}
[data-view="calendar"] .badge.executive-delivery-summary b{font-weight:900!important;color:#0f3f6c!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important}

.cal-tip.rich{width:min(560px,calc(100vw - 24px))!important;max-width:min(560px,calc(100vw - 24px))!important;max-height:min(620px,calc(100vh - 24px))!important;padding:0!important;background:#fff!important;color:#172b4d!important;border:1px solid #aebed0!important;border-radius:8px!important;box-shadow:0 16px 42px rgba(16,24,40,.28)!important;white-space:normal!important;overflow:auto!important;pointer-events:auto!important;font-size:11px!important;line-height:1.35!important}
.cal-tip.rich .cal-tip-rich{min-width:0;background:#fff}
.cal-tip.rich .cal-tip-head{position:sticky;top:0;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;background:#0f3b66;color:#fff;border-bottom:1px solid #0b3156}
.cal-tip.rich .cal-tip-head>div{display:flex;align-items:baseline;gap:8px;min-width:0}.cal-tip.rich .cal-tip-head strong{font-size:13px;font-weight:900;white-space:nowrap}.cal-tip.rich .cal-tip-head span{font-size:10px;font-weight:800;color:#d8e9fa}.cal-tip.rich .cal-tip-head small{font-size:9px;color:#d8e9fa;white-space:nowrap}
.cal-tip.rich .cal-tip-chips{display:flex;flex-wrap:wrap;gap:4px;padding:7px 10px;background:#f5f8fc;border-bottom:1px solid #e2e9f0}.cal-tip.rich .cal-tip-chips span{display:inline-flex;align-items:center;gap:3px;padding:3px 6px;border-radius:999px;background:#fff;border:1px solid #d6e0ea;color:#41576e;font-size:9.5px;font-weight:700}.cal-tip.rich .cal-tip-chips span.delivery{color:#145ca0;border-color:#bfd8f1;background:#eff7ff}.cal-tip.rich .cal-tip-chips span.danger{color:#b42318;border-color:#f5c2bd;background:#fff4f3}.cal-tip.rich .cal-tip-chips b{font-size:10px}
.cal-tip.rich .cal-tip-section{padding:8px 10px;border-bottom:1px solid #e5ebf1}.cal-tip.rich .cal-tip-section:last-child{border-bottom:0}.cal-tip.rich .cal-tip-section>header{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}.cal-tip.rich .cal-tip-section>header strong{font-size:11px;font-weight:900;color:#173a5d}.cal-tip.rich .cal-tip-section>header span{font-size:9.5px;color:#60758b;font-weight:700}
.cal-tip.rich .cal-tip-station{margin:5px 0 7px;border:1px solid #dce7f1;border-radius:6px;overflow:hidden;background:#fff}.cal-tip.rich .cal-tip-station:last-child{margin-bottom:0}.cal-tip.rich .cal-tip-station-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:5px 7px;background:#f5f9fd;border-bottom:1px solid #e0e9f2}.cal-tip.rich .cal-tip-station-head strong{font-size:10.5px;font-weight:900;color:#153d62}.cal-tip.rich .cal-tip-station-head span{font-size:9px;color:#526b83;font-weight:800;white-space:nowrap}
.cal-tip.rich .cal-tip-delivery-row{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(64px,.75fr) 88px 40px;align-items:center;gap:6px;padding:5px 7px;border-top:1px solid #edf1f5}.cal-tip.rich .cal-tip-delivery-row:first-of-type{border-top:0}.cal-tip.rich .cal-tip-delivery-row .company{display:flex;align-items:center;gap:5px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:800}.cal-tip.rich .cal-tip-delivery-row .company i{width:7px;height:7px;flex:0 0 7px;border-radius:50%;background:var(--supplier-color,#155eef)}.cal-tip.rich .cal-tip-delivery-row .fuel{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#40566e}.cal-tip.rich .cal-tip-delivery-row strong{text-align:right;font-size:10px;color:#172b4d;white-space:nowrap}.cal-tip.rich .cal-tip-delivery-row em{justify-self:end;display:inline-flex;align-items:center;height:18px;padding:0 5px;border-radius:4px;font-size:8.5px;font-style:normal;font-weight:900}.cal-tip.rich .cal-tip-delivery-row em.plan{background:#fff3db;color:#9a6100}.cal-tip.rich .cal-tip-delivery-row em.done{background:#e8f7ee;color:#177245}
.cal-tip.rich .cal-tip-lines{display:grid;gap:0;border:1px solid #e3eaf1;border-radius:5px;overflow:hidden}.cal-tip.rich .cal-tip-lines>div{display:grid;grid-template-columns:minmax(88px,.9fr) minmax(0,1.2fr) auto;align-items:center;gap:7px;min-height:27px;padding:4px 7px;border-top:1px solid #edf1f5;background:#fff}.cal-tip.rich .cal-tip-lines>div:first-child{border-top:0}.cal-tip.rich .cal-tip-lines>div:nth-child(even){background:#fafbfd}.cal-tip.rich .cal-tip-lines span,.cal-tip.rich .cal-tip-lines b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cal-tip.rich .cal-tip-lines .wide{grid-column:auto/span 2}.cal-tip.rich .cal-tip-lines b{font-size:9.5px;text-align:right}.cal-tip.rich .danger{color:#c4322b!important}
.cal-tip.rich .cal-tip-empty{display:grid;gap:4px;padding:14px}.cal-tip.rich .cal-tip-empty strong{font-size:12px}.cal-tip.rich .cal-tip-empty span{color:#66798d}

@media(max-width:900px){.cal-tip.rich{width:calc(100vw - 16px)!important;max-width:calc(100vw - 16px)!important;max-height:66vh!important}.cal-tip.rich .cal-tip-delivery-row{grid-template-columns:minmax(0,1fr) 72px 38px}.cal-tip.rich .cal-tip-delivery-row .fuel{display:none}.cal-tip.rich .cal-tip-head small{display:none}}

/* ══════════════════════════════════════════════════════════════════════
   v1.0.30 — 대표 대시보드 확장 (2026-08-29)
   주유소 6곳 이상을 다 보이게 + 전체 발주 현황 / 재고 소진 예측 / 최근 변경 패널.
   한 화면 고정 그리드 대신 세로로 흐르고 필요하면 스크롤한다.
   기존 하드코딩 라이트 색을 따른다(이 앱 대시보드는 단일 테마).
   ══════════════════════════════════════════════════════════════════════ */
@media (min-width:960px){
  [data-view="dashboard"]{overflow:auto!important}
  .v119-dashboard-host{overflow:auto!important;height:auto!important;min-height:calc(100vh - var(--v119-topbar))!important}
  /* 되도록 한 화면에. 패널 높이 하한을 없애 내용만큼만 차지하고, 내부는 짧게 스크롤. */
  .v123-ceo{display:flex!important;flex-direction:column!important;height:auto!important;grid-template-rows:none!important;gap:7px!important}
  .v123-ceo>.v119-panel:last-child{overflow:visible!important;min-height:0!important}
  .v123-ceo .v119-panel{display:flex!important;flex-direction:column!important;min-height:0!important}
  .v123-ceo>.v119-panel{max-height:268px!important;overflow:hidden!important}
  .v123-ceo>.v119-panel .v123-station-cards{max-height:232px!important;overflow-y:auto!important}
  .v123-ceo .v119-panel>header{flex:none!important;height:24px!important;min-height:24px!important}
  .v123-ceo .v119-panel>header strong{font-size:11px!important}
  .v123-ceo .v119-kpis{gap:6px!important}
  .v123-ceo .v119-kpi{min-height:0!important;height:auto!important;padding:6px 9px!important}

  .v123-station-table{display:flex!important;flex-direction:column!important;height:auto!important;grid-template-rows:none!important;overflow:hidden!important;padding:0 8px 5px!important}
  .v123-station-rows{display:flex!important;flex-direction:column!important;max-height:150px!important;overflow-y:auto!important}
  .v123-station-row{padding:4px 0!important}

  .v123-station-cards{grid-template-columns:repeat(3,minmax(0,1fr))!important;grid-auto-rows:auto!important;height:auto!important;max-height:none!important}
  .v123-station-cards>button{grid-template-rows:auto auto auto auto!important;height:auto!important;min-height:0!important}
  .v123-mini-chart svg{height:44px!important}

  .v123-orderboard{display:flex!important;flex-direction:column!important;gap:6px!important;padding:7px 9px 9px!important;min-height:0!important;flex:1!important}
  .v123-ob-sum{font-size:10px!important;color:#5b6f84!important}
  .v123-ob-sum b.warn{color:#d9861a!important}.v123-ob-sum b.ok{color:#238a5e!important}
  .v123-ob-list{display:flex!important;flex-direction:column!important;gap:5px!important;max-height:164px!important;overflow-y:auto!important}
  .v123-ob-row{display:grid!important;grid-template-columns:46px 1fr auto!important;gap:8px!important;align-items:center!important;border:1px solid #e2e8f0!important;border-radius:7px!important;background:#fff!important;padding:6px 8px!important;text-align:left!important;color:#28435d!important}
  .v123-ob-row.needs{border-color:#eccb9a!important;background:#fdf6ea!important}
  .v123-ob-row .ob-day{display:grid!important;text-align:center!important;background:#eef2f6!important;border-radius:6px!important;padding:3px 2px!important}
  .v123-ob-row .ob-day b{font-size:9.5px!important;color:#1c3a54!important}
  .v123-ob-row .ob-day small{font-size:7.5px!important;color:#6f8296!important}
  .v123-ob-row .ob-main{min-width:0!important}
  .v123-ob-row .ob-main b{font-size:9.5px!important;color:#122f4c!important;display:block!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important}
  .v123-ob-row .ob-main small{font-size:8px!important;color:#74869a!important;display:block!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important}
  .v123-ob-row .ob-stat{font-size:7.5px!important;font-weight:800!important;padding:3px 7px!important;border-radius:999px!important;white-space:nowrap!important}
  .v123-ob-row .ob-stat.wait{background:#fbeedd!important;color:#c8761a!important}
  .v123-ob-row .ob-stat.set{background:#e0f0e8!important;color:#1f7d54!important}

  .v123-forecast{display:flex!important;flex-direction:column!important;gap:2px!important;padding:6px 9px 9px!important;overflow-y:auto!important;flex:1!important}
  .v123-fc-row{display:grid!important;grid-template-columns:1fr auto!important;gap:3px 8px!important;align-items:center!important;border:0!important;border-bottom:1px solid #eef1f5!important;background:#fff!important;padding:6px 0!important;text-align:left!important}
  .v123-fc-row .fc-name{font-size:9px!important;font-weight:700!important;color:#26425c!important}
  .v123-fc-row .fc-days{font-size:9px!important;font-weight:800!important;font-variant-numeric:tabular-nums!important;color:#546a80!important}
  .v123-fc-row .fc-days.bad{color:#d23b36!important}.v123-fc-row .fc-days.warn{color:#d9861a!important}.v123-fc-row .fc-days.ok{color:#238a5e!important}
  .v123-fc-row .fc-track{grid-column:1/-1!important;height:6px!important;border-radius:999px!important;background:#eef1f5!important;overflow:hidden!important}
  .v123-fc-row .fc-track em{display:block!important;height:100%!important;border-radius:999px!important}
  .v123-fc-row .fc-note{grid-column:1/-1!important;font-size:7.5px!important;color:#7a8b9c!important}

  .v123-stream{display:flex!important;flex-direction:column!important;padding:4px 9px 8px!important;overflow-y:auto!important;flex:1!important}
  .v123-stream .v123-ev{display:grid!important;grid-template-columns:auto 1fr!important;gap:8px!important;align-items:start!important;border:0!important;border-bottom:1px solid #eef1f5!important;background:#fff!important;padding:6px 0!important;text-align:left!important;font-size:8.5px!important;color:#33506b!important}
  .v123-stream .v123-ev time{font-size:7.5px!important;color:#718398!important;white-space:nowrap!important;font-variant-numeric:tabular-nums!important}
  .v123-stream .v123-ev b{font-weight:800!important;color:#1c3a54!important}

  .v119-kpi.tappable{cursor:pointer!important;position:relative!important;border:1px solid #dbe4ef!important;font:inherit!important;text-align:left!important}
  .v119-kpi.tappable:hover{border-color:#1671dc!important;box-shadow:0 1px 5px rgba(22,113,220,.12)!important}
  .v119-kpi-go{position:absolute!important;top:6px!important;right:8px!important;color:#9aa7b6!important;font-size:11px!important;font-weight:900!important}

  .v123-titlebar h1 small{font-size:11px!important;color:#6b7f94!important;font-weight:600!important;margin-left:6px!important}
}

.demo-warn-strip{background:#fef3c7;color:#8a5a06;border:1px solid #f0d488;border-radius:7px;padding:8px 13px;font-size:12px;font-weight:700;margin:0 0 9px;line-height:1.4}
.demo-warn-strip span{font-weight:500;color:#9a7433}

/* ======================================================================
   v1.0.31 - PC screen density cleanup (2026-08-29)
   On wide screens, forms / checkbox grids / cards were locked to 2 columns
   and puffed up, leaving lots of empty space. Make them fill to content.
   Not applied on phones (<960px); mobile keeps its own 42px touch rules.
   ====================================================================== */
@media (min-width:960px){
  .check-grid{grid-template-columns:repeat(auto-fill,minmax(184px,1fr))!important;gap:5px 8px!important;margin:8px 0 12px!important}
  .permission-choice-grid,.station-choice-grid{grid-template-columns:repeat(auto-fill,minmax(224px,1fr))!important;gap:6px!important}
  .permission-choice-grid label,.station-choice-grid label{padding:7px 9px!important;border-radius:8px!important;gap:7px!important;align-items:center!important}
  .permission-choice-grid input,.station-choice-grid input{width:17px!important;height:17px!important;margin-top:0!important}
  .permission-choice-grid span,.station-choice-grid span{gap:1px!important}
  .permission-choice-grid strong,.station-choice-grid strong{font-size:.78rem!important;line-height:1.2!important}
  .permission-choice-grid small,.station-choice-grid small{font-size:.6rem!important;line-height:1.2!important}
  #userManager .check-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))!important}

  .form-grid:not(.closing-totals):not(.calendar-delivery-grid):not(.calendar-filters){
    grid-template-columns:repeat(auto-fill,minmax(198px,1fr))!important;gap:7px 12px!important
  }
  .form-grid .wide-field{grid-column:1/-1!important}

  .form-card{padding:14px 16px!important;border-radius:10px!important;box-shadow:0 1px 2px rgba(16,42,67,.05),0 6px 18px rgba(16,42,67,.06)!important}
  .form-card.compact{padding:11px 13px!important;border-radius:9px!important}
  .form-card>h2,.overview-panel>h2{font-size:.9rem!important;margin:0 0 9px!important;padding-bottom:7px!important;border-bottom:1px solid var(--ui115-line,#d5dee8)!important;letter-spacing:-.01em!important}
  .form-card>h3{font-size:.76rem!important;margin:11px 0 6px!important;color:var(--ui115-muted,#63748a)!important;text-transform:uppercase!important;letter-spacing:.04em!important;font-weight:800!important}
  .form-card>p,.form-card .form-help{font-size:.7rem!important;line-height:1.45!important;margin:4px 0 8px!important}
  .form-card label{margin:5px 0!important;font-size:.72rem!important}
  .form-card input,.form-card select,.form-card textarea{min-height:34px!important;padding:6px 9px!important;font-size:.76rem!important;border-radius:6px!important}
  .form-card .button-row{margin-top:9px!important;gap:6px!important}
  .form-card .button-row button,.toolbar button{min-height:34px!important;padding:7px 13px!important;font-size:.76rem!important;border-radius:6px!important}

  .card-list{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))!important;gap:8px!important}
  .card-list.card-list-wide{grid-template-columns:1fr!important}
  .station-card{padding:10px 12px!important;gap:5px!important;border-radius:9px!important}
  .metric-grid,.kpi-row{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))!important;gap:8px!important;margin:6px 0 10px!important}
  .metric,.kpi,.trend-kpi{padding:9px 11px!important;border-radius:9px!important}

  [data-view="purchases"] .kpi-row{grid-template-columns:repeat(auto-fill,minmax(180px,1fr))!important}
  [data-view="purchases"] #purchasePendingLots{grid-template-columns:repeat(auto-fill,minmax(320px,1fr))!important}
  [data-view="purchases"] .cost-pending-row{display:grid!important;grid-template-columns:minmax(0,1fr) 110px 110px auto!important;gap:6px!important;align-items:end!important;margin-top:7px!important}
  [data-view="purchases"] .cost-pending-row label{margin:0!important;font-size:.66rem!important;display:grid!important;gap:2px!important}
  [data-view="purchases"] .cost-pending-row input{min-height:32px!important}
  [data-view="purchases"] .cost-pending-row button{min-height:32px!important;white-space:nowrap!important}
  [data-view="purchases"] .price-cell .price-input,[data-view="purchases"] .cost-supply,[data-view="purchases"] .cost-transport,[data-view="purchases"] .cost-vat{max-width:110px!important;text-align:right!important}
  [data-view="purchases"] #purchaseStationCards{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))!important}
  [data-view="purchases"] .data-table th,[data-view="purchases"] .data-table td{padding:5px 8px!important;font-size:.7rem!important}
  [data-view="purchases"] .section-label{margin:12px 0 6px!important;font-size:.72rem!important;font-weight:800!important;color:var(--ui115-muted,#63748a)!important;text-transform:uppercase!important;letter-spacing:.04em!important}

  /* 계정 생성: 폼은 좌우 2열로 두되, 체크박스 그리드와 계정 목록은 화면 전체 폭을 쓴다. */
  #userManager{grid-template-columns:minmax(360px,.62fr) minmax(360px,.62fr)!important;column-gap:16px!important}
  #userManager>h3,#userManager>#newUserStations,#userManager>#permissionChoices,#userManager>#createUser,#userManager>#userMessage,#userManager>#userCards{grid-column:1/-1!important}
  #userManager>#userCards{grid-row:auto!important;margin-top:6px!important}
  #userManager .check-grid,#userManager .permission-choice-grid,#userManager .station-choice-grid{grid-template-columns:repeat(auto-fill,minmax(178px,1fr))!important}
  #userCards{grid-template-columns:repeat(auto-fill,minmax(240px,1fr))!important;display:grid!important;gap:8px!important;align-content:start!important}

  .menu-context-strip{min-height:46px!important;border-radius:9px!important;box-shadow:0 1px 2px rgba(16,42,67,.05)!important;background:#fff!important}
  .menu-context-title>strong{font-size:.82rem!important}
  .menu-context-title>span{font-size:.58rem!important}
  .menu-context-title>small{font-size:.58rem!important}
  .menu-context-kpis strong{font-size:.72rem!important}
  .menu-context-kpis span{font-size:.56rem!important}
  .menu-context-home{font-size:.7rem!important;padding:0 12px!important;font-weight:800!important}

  .ui-setting-cluster .ui-scale-main{display:flex!important;align-items:center!important;gap:5px!important}
  .ui-setting-cluster .ui-scale-main select{min-width:78px!important}
  .ui-setting-detail{position:relative!important}
  .ui-setting-detail>summary{list-style:none!important;cursor:pointer!important;font-size:calc(var(--ui119-topbar-font,13px) - 1px)!important;font-weight:800!important;color:#edf6ff!important;padding:0 7px!important;height:calc(var(--v119-topbar,44px) - 12px)!important;display:flex!important;align-items:center!important;border:1px solid rgba(255,255,255,.18)!important;border-radius:4px!important;background:rgba(255,255,255,.08)!important;white-space:nowrap!important}
  .ui-setting-detail>summary::-webkit-details-marker{display:none!important}
  .ui-setting-detail[open]>summary{background:rgba(255,255,255,.22)!important}
  .ui-setting-detail-grid{position:absolute!important;top:calc(100% + 6px)!important;right:0!important;z-index:120!important;display:grid!important;grid-template-columns:repeat(2,minmax(120px,1fr))!important;gap:6px!important;padding:10px!important;background:#fff!important;border:1px solid #cbd6e2!important;border-radius:8px!important;box-shadow:0 10px 28px rgba(15,35,60,.22)!important;width:280px!important}
  .ui-setting-detail-grid label{display:grid!important;gap:3px!important;margin:0!important}
  .ui-setting-detail-grid label>span{font-size:11px!important;color:#53677e!important;font-weight:800!important}
  .ui-setting-detail-grid input{width:100%!important;min-height:30px!important;border:1px solid #c3cfdc!important;border-radius:5px!important;padding:4px 7px!important;font-size:12px!important;color:#173b5d!important;text-align:center!important;background:#fff!important}
}

/* v1.0.32 — 매입·실마진 유류/유외 구분 표 */
[data-view="purchases"] #purchaseItemTable .cat-row td{background:#0b2743;color:#fff;font-weight:800;font-size:.72rem;padding:5px 9px;letter-spacing:.02em}
[data-view="purchases"] #purchaseItemTable .subtotal-row td{background:#eef2f7;font-weight:800}
[data-view="purchases"] #purchaseItemTable tfoot td{background:#0b2743;color:#fff;font-weight:800}
[data-view="purchases"] #purchaseItemTable .num-good{color:#168451;font-weight:800}
[data-view="purchases"] #purchaseItemTable .num-bad{color:#bd3028;font-weight:800}

/* v1.0.33 — 메뉴별 상단 요약 대시보드: 클릭 가능한 KPI 타일 */
.menu-context-kpis .menu-context-kpi{border:0;border-right:1px solid #e3e9ef;background:#fff;text-align:left;padding:6px 10px;display:grid;align-content:center;gap:2px;cursor:pointer;transition:background .12s}
.menu-context-kpis .menu-context-kpi:hover{background:#f4f7fb}
.menu-context-kpis .menu-context-kpi span{font-size:.56rem;color:#71879d;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.menu-context-kpis .menu-context-kpi strong{font-size:.82rem;color:#17314e;font-variant-numeric:tabular-nums}
.menu-context-kpis .menu-context-kpi.warn strong{color:#b96f05}
.menu-context-kpis .menu-context-kpi.ok strong{color:#168451}
@media (min-width:960px){
  .menu-context-kpis{grid-auto-flow:column!important;grid-auto-columns:minmax(112px,1fr)!important;grid-template-columns:none!important}
  .menu-context-strip{grid-template-columns:minmax(200px,1fr) auto auto!important}
}

/* v1.0.33 — 재고·원장 리포트 엑셀 버튼 배치 */
.ledger-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:10px}
.ledger-toolbar .segmented{margin:0!important}
.ledger-toolbar #downloadLedgerReport{white-space:nowrap}
.inventory-context-bar #downloadInventoryReport{white-space:nowrap}
@media (max-width:720px){
  .ledger-toolbar{gap:8px}
  .ledger-toolbar .segmented{flex:1 1 100%}
  .ledger-toolbar #downloadLedgerReport,
  .inventory-context-bar #downloadInventoryReport{width:100%}
}

/* ══ v1.0.34 — 권한 화면(누르는 버튼) · 원가·실마진 관리 화면 ══ */

/* 직책 프리셋 버튼 */
.visually-hidden-select{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;padding:0;margin:-1px}
.role-preset-row{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 14px}
.role-preset{appearance:none;border:1.5px solid #cbd5e1;background:#fff;color:#334155;font-weight:800;font-size:.86rem;padding:9px 18px;border-radius:8px;cursor:pointer;transition:all .12s;min-width:64px}
.role-preset:hover{border-color:#94a3b8;background:#f8fafc}
.role-preset.active{border-color:#1768e8;background:#1768e8;color:#fff;box-shadow:0 2px 8px rgba(23,104,232,.28)}

/* 권한/주유소 = 누르면 색이 바뀌는 버튼 (체크박스 아님) */
.toggle-grid{display:grid!important;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:8px}
.perm-toggle{position:relative;appearance:none;text-align:left;border:1.5px solid #d5dee8;background:#fff;border-radius:8px;padding:9px 30px 9px 12px;cursor:pointer;display:grid;gap:2px;transition:all .1s;line-height:1.25}
.perm-toggle>strong{font-size:.82rem;color:#1f2d3d;font-weight:800}
.perm-toggle>small{font-size:.62rem;color:#8090a2;letter-spacing:.01em}
.perm-toggle::after{content:"";position:absolute;right:10px;top:50%;transform:translateY(-50%);width:15px;height:15px;border-radius:50%;border:2px solid #c4cfdb;background:#fff;transition:all .1s}
.perm-toggle:hover:not([disabled]){border-color:#9db4cc;background:#f6f9fc}
.perm-toggle[aria-pressed="true"]{border-color:#1768e8;background:#eaf2ff;box-shadow:inset 0 0 0 1px #1768e8}
.perm-toggle[aria-pressed="true"]>strong{color:#0f4bb3}
.perm-toggle[aria-pressed="true"]::after{border-color:#1768e8;background:radial-gradient(circle at center,#1768e8 0 6px,#fff 6px)}
.perm-toggle[disabled]{opacity:.45;cursor:not-allowed}
.perm-toggle[data-cost="1"]{border-style:dashed}
.perm-toggle.station-toggle{display:block}
.perm-toggle.station-toggle>strong{font-size:.8rem}
#permScopeNote{font-weight:600;font-size:.66rem;color:#8a6d3b}

/* 원가·실마진 관리 화면 */
.cost-filterbar{display:flex;flex-wrap:wrap;align-items:end;gap:10px 14px;padding:12px 14px;background:#f4f7fb;border:1px solid #dbe4ee;border-radius:10px;margin-bottom:12px}
.cost-filterbar label{display:grid;gap:3px;font-size:.66rem;font-weight:800;color:#4a5b6e}
.cost-filterbar input,.cost-filterbar select{min-height:34px;border:1px solid #c3cfdc;border-radius:6px;padding:4px 8px;font-size:.8rem;background:#fff;color:#1f2d3d}
.cost-filterbar .cost-filter-range{flex-direction:row;align-items:center;gap:5px}
.cost-filterbar .cost-filter-range input{max-width:140px}
.cost-filterbar .cost-filter-search input{min-width:170px}
.cost-filterbar button{min-height:36px;padding:0 14px;border-radius:6px;font-weight:800}

.cost-bar-list{display:grid;gap:5px;margin-bottom:10px}
.cost-bar-row{display:grid;grid-template-columns:minmax(96px,1.1fr) minmax(90px,2fr) minmax(84px,auto) minmax(120px,auto) minmax(70px,auto);align-items:center;gap:10px;border:1px solid #e0e7ef;background:#fff;border-radius:7px;padding:7px 10px;cursor:pointer;font-size:.76rem;text-align:left;transition:background .1s,border-color .1s}
.cost-bar-row:hover{background:#f6f9fc;border-color:#b9c8d8}
.cost-bar-row.selected{border-color:#1768e8;background:#eef4ff;box-shadow:inset 0 0 0 1px #1768e8}
.cost-bar-row .cbr-name{font-weight:800;color:#20303f;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cost-bar-row .cbr-track{height:12px;background:#eef2f6;border-radius:6px;overflow:hidden}
.cost-bar-row .cbr-track>i{display:block;height:100%;background:linear-gradient(90deg,#1768e8,#4b93f7)}
.cost-bar-row .cbr-amount{font-variant-numeric:tabular-nums;text-align:right;color:#33475b}
.cost-bar-row .cbr-margin{font-variant-numeric:tabular-nums;text-align:right;font-weight:800}
.cost-bar-row .cbr-margin.ok{color:#168451}.cost-bar-row .cbr-margin.bad{color:#bd3028}
.cost-bar-row .cbr-pending{text-align:right;font-size:.66rem;font-weight:800;color:#6b7a8a}
.cost-bar-row .cbr-pending.warn{color:#b96f05}
/* v1.3.63 — 주유소 줄 아래에 '무엇이 빠졌는지' 한 줄. 칸을 늘리지 않고 전체 폭을 쓴다. */
.cost-bar-row .cbr-issue{grid-column:1/-1;font-size:.66rem;font-weight:700;line-height:1.4;color:#b96f05;white-space:normal}

table.cost-grid{width:100%;border-collapse:collapse;font-size:.74rem}
table.cost-grid th,table.cost-grid td{border:1px solid #e2e8ef;padding:4px 7px;text-align:left;white-space:nowrap}
table.cost-grid thead th{background:#12395e;color:#fff;font-weight:700;position:sticky;top:0}
table.cost-grid td.num{text-align:right;font-variant-numeric:tabular-nums}
table.cost-grid td.cost-doc{max-width:180px;overflow:hidden;text-overflow:ellipsis}
table.cost-grid tbody tr:nth-child(even),table.cost-grid tbody tr:nth-child(even){background:#f7f9fc}
table.cost-grid input{width:92px;min-height:28px;border:1px solid #c3cfdc;border-radius:4px;padding:2px 6px;font-size:.76rem;text-align:right;font-variant-numeric:tabular-nums}
table.cost-grid input:focus{outline:2px solid #1768e8;border-color:#1768e8}

@media (max-width:720px){
  .cost-filterbar{gap:8px}
  .cost-filterbar label,.cost-filterbar button{width:100%}
  .cost-filterbar .cost-filter-range input{max-width:none;flex:1}
  .cost-bar-row{grid-template-columns:1fr auto;grid-auto-rows:min-content;gap:4px 8px}
  .cost-bar-row .cbr-track{grid-column:1/-1;order:5}
  .cost-bar-row .cbr-issue{grid-column:1/-1;order:6}
  .role-preset{flex:1 1 40%}
  .toggle-grid{grid-template-columns:1fr 1fr}
}

/* ══ v1.0.35 — 관리자 대시보드 '주유소 운영 현황' 한 단계 크게 + 칸 정렬 ══ */
@media (min-width:960px){
  .v119-dashboard.admin{grid-template-rows:36px 82px 305px 220px minmax(175px,1fr)!important}
  .v120-admin-table{overflow-y:auto!important}
  /* 헤더와 데이터 행이 정확히 같은 10칸을 쓰도록 명시 (마감·현금·자료·승인은 고정폭·가운데) */
  .v120-admin-head,.v120-admin-row{grid-template-columns:minmax(96px,1.35fr) repeat(4,minmax(72px,0.95fr)) repeat(4,46px) 16px!important;column-gap:4px!important}
  .v120-admin-head>span:nth-child(n+2):nth-child(-n+5),
  .v120-admin-row>.fuel-cell{text-align:center!important;justify-items:center!important}
  .v120-admin-head>span:nth-child(n+6),
  .v120-admin-row>span:nth-child(n+6),
  .v120-admin-row>b{text-align:center!important;justify-self:center!important}
  .v120-admin-head{height:32px!important;font-size:9.5px!important}
  .v120-admin-row{height:47px!important;font-size:9.5px!important}
  .v120-admin-row>span:first-child strong{font-size:11.5px!important}
  .v120-admin-row>span:first-child small{font-size:9px!important}
  .v120-admin-row .fuel-cell{min-width:0!important}
  .v120-admin-row .fuel-cell small{font-size:8.6px!important}
  .v120-admin-row .fuel-cell i{height:6px!important;width:100%!important}
  .v120-admin-row>b{font-size:15px!important}
}

/* ══ v1.0.35 — 담당 주유소 2곳 이상 소장·부장·차장 대시보드 ══ */
@media (min-width:960px){
  .v119-dashboard.v135-mm{display:flex!important;flex-direction:column!important;height:auto!important;grid-template-rows:none!important;gap:8px!important}
  .v135-mm>.v119-panel{max-height:none!important}
  .v135-mm>.v119-panel .v123-station-cards{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(260px,1fr))!important;gap:8px!important;padding:8px!important;height:auto!important;max-height:none!important;overflow:visible!important}
  .v135-mm>.v119-panel .v123-station-cards>button{grid-template-rows:38px 100px 78px 24px!important;height:auto!important}
  .v135-mm-grid{display:grid!important;grid-template-columns:1fr 1fr 1fr!important;gap:8px!important}
  .v135-mm-grid>.v119-panel{max-height:300px!important;overflow:hidden!important}
  .v135-mm-grid>.v119-panel>*:not(header){max-height:262px!important;overflow-y:auto!important}
}
@media (max-width:959px){
  .v135-mm-grid{display:block!important}
  .v135-mm-grid>.v119-panel{margin-bottom:8px!important}
}

/* ══ v1.0.36 — 알림 일반/중요 색 통일 · 주유소별 백업 현황 ══ */
.role-alert-dot{background:#1570ef!important}
.role-alert-row.priority-high .role-alert-dot,.role-alert-row.priority-urgent .role-alert-dot{background:#d92d20!important}
.mobile-alert-list i{background:#1570ef!important}
.mobile-alert-list i.priority-high,.mobile-alert-list i.priority-urgent{background:#d92d20!important}
.target-list-row.priority-normal>i{background:#1570ef!important}
.notification-open.priority-normal{border-left-color:#1570ef!important}
.notification-open.priority-high,.notification-open.priority-urgent{border-left-color:#d92d20!important}

#stationBackupPanel .station-backup-list{display:grid;gap:5px;margin-top:8px}
.station-backup-row{display:grid;grid-template-columns:minmax(110px,1fr) auto minmax(0,1.4fr);gap:10px;align-items:center;padding:9px 11px;border:1px solid #dde5ee;border-radius:8px;background:#fff}
.station-backup-row.ok{border-left:4px solid #1f9d58}
.station-backup-row.warn{border-left:4px solid #d64541;background:#fff8f7}
.station-backup-row .sbr-name{font-weight:800;color:#1f2d3d;font-size:.86rem}
.station-backup-row .sbr-state{font-weight:800;font-size:.78rem;white-space:nowrap}
.station-backup-row.ok .sbr-state{color:#1f7a45}
.station-backup-row.warn .sbr-state{color:#c0392b}
.station-backup-row .sbr-meta{font-size:.68rem;color:#7c8a99;text-align:right}
.station-backup-warn{margin:9px 0 0;padding:8px 11px;border-radius:7px;background:#fdecea;color:#b42318;font-size:.76rem;font-weight:700}
.station-backup-ok{margin:9px 0 0;padding:8px 11px;border-radius:7px;background:#eaf7ef;color:#1f7a45;font-size:.76rem;font-weight:700}
@media (max-width:720px){
  .station-backup-row{grid-template-columns:1fr auto}
  .station-backup-row .sbr-meta{grid-column:1/-1;text-align:left}
}

/* ══ v1.0.38 — 카카오톡식 채팅방 ══ */
.chat-view{padding:0!important}
.chat-layout{display:grid;grid-template-columns:300px 1fr;height:calc(100vh - 108px);min-height:420px;border:1px solid #d9e2ec;border-radius:12px;overflow:hidden;background:#fff}
.chat-rooms{display:flex;flex-direction:column;border-right:1px solid #e4ebf2;min-width:0;background:#f7f9fc}
.chat-rooms-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 12px 10px;border-bottom:1px solid #e4ebf2}
.chat-rooms-head strong{font-size:1rem;color:#17314e}
.chat-rooms-head button{padding:7px 12px;border-radius:7px;font-weight:800;font-size:.78rem}
.chat-room-list{flex:1;overflow-y:auto;padding:6px}
.chat-room-item{display:block;width:100%;text-align:left;border:0;background:transparent;border-radius:8px;padding:9px 10px;cursor:pointer}
.chat-room-item:hover{background:#eef3f9}
.chat-room-item.active{background:#e4eefb}
.chat-room-item .cri-top{display:flex;align-items:baseline;gap:6px}
.chat-room-item .cri-top strong{font-size:.86rem;color:#1f2d3d;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}
.chat-room-item .cri-tag{font-size:.58rem;font-weight:800;background:#dbe6f3;color:#3a5b7f;border-radius:4px;padding:1px 5px}
.chat-room-item .cri-top time{font-size:.6rem;color:#93a2b3;white-space:nowrap}
.chat-room-item .cri-bot{display:flex;align-items:center;gap:6px;margin-top:2px}
.chat-room-item .cri-bot small{flex:1;font-size:.7rem;color:#7c8b9c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chat-room-item .cri-unread{background:#d92d20;color:#fff;font-size:.6rem;font-weight:900;border-radius:999px;min-width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center;padding:0 4px}
.chat-thread{display:flex;flex-direction:column;min-width:0;background:#b2c7da}
.chat-thread-empty{margin:auto;text-align:center;color:#3d566e;padding:24px;max-width:360px}
.chat-thread-empty p{margin:0 0 8px}
.chat-thread-head{display:flex;align-items:center;gap:8px;padding:9px 12px;background:#fff;border-bottom:1px solid #e0e7ee}
.chat-back{display:none;font-size:1.3rem;line-height:1;padding:2px 8px;border-radius:7px}
.chat-thread-title{flex:1;min-width:0}
.chat-thread-title strong{display:block;font-size:.92rem;color:#17314e;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chat-thread-title small{display:block;font-size:.62rem;color:#8090a0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chat-thread-actions{display:flex;gap:6px}
.chat-thread-actions button{padding:5px 10px;font-size:.72rem;border-radius:6px}
.chat-messages{flex:1;overflow-y:auto;padding:12px 12px 6px;display:flex;flex-direction:column;gap:3px}
.chat-sys{align-self:center;background:rgba(0,0,0,.18);color:#fff;font-size:.66rem;padding:3px 12px;border-radius:999px;margin:6px 0}
.chat-msg{display:flex;flex-direction:column;max-width:76%}
.chat-msg.other{align-self:flex-start}
.chat-msg.mine{align-self:flex-end;align-items:flex-end}
.chat-msg .chat-name{font-size:.64rem;color:#33475b;margin:6px 2px 2px}
.chat-msg .chat-name em{font-style:normal;color:#7c8b9c}
.chat-msg .chat-bubble{display:inline-block;padding:7px 11px;border-radius:12px;font-size:.84rem;line-height:1.4;word-break:break-word;white-space:pre-wrap}
.chat-msg.other .chat-bubble{background:#fff;color:#1f2d3d;border-radius:4px 12px 12px 12px}
.chat-msg.mine .chat-bubble{background:#fee500;color:#191600;border-radius:12px 4px 12px 12px}
.chat-msg time{font-size:.56rem;color:#40566b;margin:1px 3px}
.chat-composer{display:flex;gap:8px;align-items:flex-end;padding:9px 10px;background:#fff;border-top:1px solid #e0e7ee}
.chat-composer textarea{flex:1;resize:none;border:1px solid #cbd6e2;border-radius:10px;padding:8px 11px;font-size:.86rem;line-height:1.4;max-height:120px;font-family:inherit}
.chat-composer textarea:focus{outline:2px solid #1768e8;border-color:#1768e8}
.chat-composer button{padding:9px 16px;border-radius:9px;font-weight:800;white-space:nowrap}
.chat-people-list{display:grid;gap:4px;max-height:min(50vh,360px);overflow-y:auto;margin:10px 0}
.chat-person{display:flex;align-items:center;gap:9px;padding:8px 10px;border:1px solid #dde5ee;border-radius:8px;cursor:pointer}
.chat-person:hover{background:#f4f7fb}
.chat-person input{width:18px;height:18px}
.chat-person em{font-style:normal;color:#7c8b9c;font-size:.78rem}

@media (max-width:900px){
  .chat-layout{grid-template-columns:1fr;height:calc(100vh - 130px)}
  .chat-thread{position:absolute;inset:0;transform:translateX(100%);transition:transform .18s;z-index:5}
  .chat-view .chat-layout{position:relative}
  .chat-thread-pane.room-open,.chat-thread.room-open,#chatThreadPane.room-open{transform:translateX(0)}
  .chat-back{display:block}
  .chat-msg{max-width:82%}
}

/* ══════════════════════════════════════════════════════════════════════
   v1.0.40 — 입체감 · 강조 정리 (DESIGN POLISH, 2026-08-30)
   --------------------------------------------------------------------
   [요청] 각진 모양은 그대로 두되(엑셀식 유지), 화면이 너무 평평하다 →
   면마다 높낮이(그림자)를 주고, 중요한 부분(주요 버튼·큰 숫자·활성 메뉴·
   중요 알림)이 더 또렷하게 튀어나오게 한다.

   [원칙]
     - 모서리 둥글기는 이 블록에서 절대 건드리지 않는다(각진 모양 유지).
     - HTML/JS 요소 id 는 그대로. CSS 만 덧붙인다(파일 맨 끝 = 우선순위 최상).
     - 그림자는 3단계로만: --elev-1(면) / --elev-2(뜬 것) / --elev-3(대화상자).
   ══════════════════════════════════════════════════════════════════════ */
:root{
  --pop:#1768e8;                 /* 유일하게 튀는 파랑 — 활성·강조에만 */
  --pop-deep:#0f57c9;
  --elev-1:0 1px 2px rgba(16,42,67,.08), 0 2px 6px rgba(16,42,67,.09);
  --elev-2:0 3px 8px rgba(16,42,67,.10), 0 14px 30px rgba(16,42,67,.15);
  --elev-3:0 22px 52px rgba(10,28,52,.30);
  --elev-btn:inset 0 1px 0 rgba(255,255,255,.20), 0 2px 5px rgba(16,42,67,.24), 0 9px 20px rgba(16,42,67,.16);
  --ring:0 0 0 3px rgba(23,104,232,.22);
}

/* ── 1. 면(패널·카드·표)에 높낮이 부여 ─────────────────────────── */
.panel,.overview-panel,.trend-panel,.station-card,.table-scroll,
.menu-context-strip,.station-backup-row,.chat-layout,
.mobile-home-card,.work-comms,.work-push-required{
  box-shadow:var(--elev-1);
}
.difference-box{ box-shadow:var(--elev-1); border-left:4px solid var(--pop); }
.difference-box strong{ font-variant-numeric:tabular-nums; }

@media (min-width:960px){
  /* .v119-panel 은 .v123-ceo / .v120-* 안에서 (0,2,0)!important 로 눌려 있어
     여기서는 대시보드 컨테이너를 함께 적어 (0,2,1) 로 확실히 이긴다. */
  body .v119-dashboard .v119-panel,
  body .v123-ceo .v119-panel,
  body .v120-admin .v119-panel,
  body .v135-mm .v119-panel,
  body .v135-mm-grid .v119-panel,
  body .role-dashboard-panel,
  html[data-ui-role="STAFF"] .role-dashboard-panel,
  body .panel,
  body .overview-panel,
  body .trend-panel,
  body .station-card,
  body .operation-submit-panel,
  body .operation-inbox-panel,
  body .menu-context-strip,
  body .overview-dashboard-grid>section{
    box-shadow:var(--elev-1)!important;
    border-color:#d4deea!important;
  }
  body .table-scroll,body .sheet-wrap{ box-shadow:var(--elev-1)!important; }
  /* 패널 머리글이 본문보다 한 겹 위에 있게 */
  body .v119-dashboard .v119-panel>header,
  body .v123-ceo .v119-panel>header{
    background:#f3f7fc!important; border-bottom:1px solid #dbe4ee!important; box-shadow:0 1px 0 #eef2f7;
  }
  body .v119-dashboard .v119-panel>header strong{ color:#0e2c4f!important; font-weight:900!important; }
  body .v119-dashboard .v119-panel>header small{ color:var(--pop)!important; font-weight:900!important; }
}

/* ── 2. 상단바 · 좌측 메뉴 · 하단 메뉴 = 본문 위에 뜬 층 ───────── */
.topbar{ box-shadow:0 2px 10px rgba(16,42,67,.14); }
.bottom-nav{ box-shadow:0 -6px 24px rgba(16,42,67,.16); }
.phone-nav{ box-shadow:0 10px 20px rgba(6,26,48,.30); }
@media (min-width:960px){
  body .topbar,body .topbar.topbar-v119{ box-shadow:0 4px 18px rgba(4,20,40,.32)!important; }
  body .sidebar-nav{ box-shadow:6px 0 22px rgba(4,20,40,.20)!important; }
}

/* ── 3. 주요 버튼 = 확실히 튀어나오게 ─────────────────────────── */
.primary,button.primary{
  box-shadow:var(--elev-btn);
}
.primary:hover,button.primary:hover,
.primary:focus-visible,button.primary:focus-visible{
  filter:brightness(1.05);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.20), 0 3px 8px rgba(16,42,67,.26), 0 12px 26px rgba(16,42,67,.20);
  outline:none;
}
.primary:active,button.primary:active{
  transform:translateY(1px);
  box-shadow:inset 0 2px 6px rgba(0,0,0,.24);
}
.primary:disabled{ box-shadow:none; }
.quiet,button.quiet{ box-shadow:var(--elev-1); }
.quiet:hover,button.quiet:hover{ box-shadow:var(--elev-2); }

/* ── 4. 큰 숫자(KPI) 강조 — 크기 · 굵기 · 상태색 · 윗변 띠 ─────── */
.metric,.kpi,.work-stat,.role-dashboard-kpis .work-stat,.mobile-home-card{ box-shadow:var(--elev-1); }
.metric strong,.kpi strong,.work-stat strong,.mini-stats strong{
  font-weight:900; letter-spacing:-.02em; font-variant-numeric:tabular-nums;
}
@media (min-width:960px){
  /* .v123-kpis .v119-kpi 가 box-shadow:none!important (0,2,0) 로 눌러서
     대시보드 컨테이너까지 적어 (0,2,1) 로 이긴다. */
  body .v119-dashboard .v119-kpi,
  body .v123-kpis .v119-kpi,
  body .v119-kpis .v119-kpi{
    box-shadow:var(--elev-1)!important;
    border-color:#d4deea!important;
    border-top:2px solid #cdd9e8!important;
  }
  body .v119-dashboard .v119-kpi.ok,   body .v123-kpis .v119-kpi.ok{ border-top-color:#16a45c!important; }
  body .v119-dashboard .v119-kpi.warn, body .v123-kpis .v119-kpi.warn{ border-top-color:#e79000!important; }
  body .v119-dashboard .v119-kpi.bad,  body .v123-kpis .v119-kpi.bad{ border-top-color:#e23b3b!important; }
  body .v119-dashboard .v119-kpi strong{
    font-size:calc(var(--ui117-body-font) + 6px)!important;
    font-weight:900!important; letter-spacing:-.015em!important; color:#0c2444!important;
    font-variant-numeric:tabular-nums!important;
  }
  body .v119-dashboard .v119-kpi.ok strong{ color:#11814a!important; }
  body .v119-dashboard .v119-kpi.warn strong{ color:#b97400!important; }
  body .v119-dashboard .v119-kpi.bad strong{ color:#cf372c!important; }
  body .v119-titlebar h1,body .page-title h1{ font-weight:900!important; letter-spacing:-.03em!important; }
  .menu-context-kpis .menu-context-kpi strong{ font-size:.92rem!important; font-variant-numeric:tabular-nums; }
}

/* ── 5. 활성 상태(메뉴·탭·구분버튼·필터) 더 또렷하게 ──────────── */
.sidebar-nav button[data-nav].active{ background:#ffffff22; box-shadow:inset 3px 0 0 var(--accent); }
.tab-button{ position:relative; }
.tab-button.active{ color:var(--pop)!important; font-weight:900!important; box-shadow:0 2px 9px rgba(23,104,232,.20)!important; }
.tab-button.active::after{ content:""; position:absolute; left:8px; right:8px; bottom:-1px; height:2px; background:var(--pop); }
.segmented .active{ box-shadow:0 2px 8px rgba(16,42,67,.18); color:var(--pop); font-weight:900; }
.notification-filter.active{ box-shadow:var(--elev-btn); }
.overview-tabs button.active{ box-shadow:var(--elev-btn); }
.role-preset.active{ box-shadow:0 2px 10px rgba(23,104,232,.34); }
.perm-toggle[aria-pressed="true"]{ box-shadow:inset 0 0 0 1px var(--pop), var(--elev-1); }
@media (min-width:960px){
  .role-nav-item.active{ box-shadow:0 3px 12px rgba(0,85,190,.36)!important; border-left-width:4px!important; border-left-color:#8dc5ff!important; }
}

/* ── 6. 알림 우선순위 — 색 띠 + 옅은 바탕 + 큰 점 ─────────────── */
.priority-high,.priority-urgent{
  background:linear-gradient(90deg, rgba(217,45,32,.07), rgba(217,45,32,0) 62%)!important;
}
.priority-normal{
  background:linear-gradient(90deg, rgba(21,112,239,.06), rgba(21,112,239,0) 62%)!important;
}
.notification-open.priority-high,.notification-open.priority-urgent{ box-shadow:var(--elev-1); }
.notification-open.priority-normal{ box-shadow:var(--elev-1); }
.role-alert-dot{ width:9px!important; height:9px!important; box-shadow:0 0 0 3px rgba(240,160,0,.20); }
.role-alert-row.priority-high .role-alert-dot,
.role-alert-row.priority-urgent .role-alert-dot{ box-shadow:0 0 0 3px rgba(217,45,32,.20); }
.prio-chip.imp{ background:#d92d20; color:#fff; }
.work-push-required.problem{ box-shadow:var(--elev-2); }

/* ── 7. 표 — 머리글이 스크롤 때 떨어져 보이게 + 합계줄 강조 ───── */
.data-table thead th{ box-shadow:inset 0 -1px 0 #d3dde8; }
.data-table tfoot td,.total-row td,table tr.total td{ font-variant-numeric:tabular-nums; }
@media (min-width:960px){
  .v119-table-head{ box-shadow:inset 0 -1px 0 #dbe3ec; color:#4a5c72!important; }
}

/* ── 8. 누를 수 있는 줄·카드 = 얹으면 살짝 떠오른다 ──────────── */
.station-open:hover,.station-open:focus-visible{ box-shadow:var(--elev-2)!important; transform:translateY(-1px); }
.menu-context-kpis .menu-context-kpi:hover{ box-shadow:var(--elev-1); }
@media (min-width:960px){
  .v119-table-row:hover,
  .role-station-row:hover,
  .cost-bar-row:hover,
  .operation-report-row:hover,
  .v119-station-cards>button:hover,
  .v123-station-cards>button:hover,
  .chat-room-item:hover{
    box-shadow:var(--elev-1);
    transform:translateY(-1px);
  }
}

/* ── 9. 입력칸 포커스 — 각진 파란 테두리 대신 부드러운 링 ───── */
input:focus,select:focus,textarea:focus,
.cost-filterbar input:focus,.cost-filterbar select:focus,
table.cost-grid input:focus,.chat-composer textarea:focus{
  outline:none!important;
  border-color:var(--pop)!important;
  box-shadow:var(--ring)!important;
}
button:focus-visible,[role="button"]:focus-visible,
.role-nav-item:focus-visible,.tab-button:focus-visible,
.v119-table-row:focus-visible,.role-station-row:focus-visible{
  outline:2px solid var(--pop);
  outline-offset:2px;
}

/* ── 10. 대화상자 = 화면에서 가장 높은 층 ─────────────────────── */
.password-dialog,.recognition-dialog,.search-dialog,.install-dialog,
#chatNewRoomDialog,#chatInviteDialog,dialog{
  box-shadow:var(--elev-3)!important;
}
.password-dialog::backdrop,.recognition-dialog::backdrop,
.search-dialog::backdrop,.install-dialog::backdrop,dialog::backdrop{
  background:rgba(12,26,45,.55)!important;
}

/* ── 11. 채팅 말풍선 · 빈 화면 마무리 ────────────────────────── */
.chat-msg .chat-bubble{ box-shadow:0 1px 2px rgba(16,42,67,.14); }
.empty-card,.v119-empty{ background:#fbfcfe; border-color:#cfd9e5; }

/* ── 12. 높낮이 변화가 의도적으로 보이도록 짧은 전환 ─────────── */
.station-card,.station-open,.primary,.quiet,button.primary,button.quiet,
.tab-button,.segmented button,.role-nav-item,.perm-toggle,.role-preset,
.v119-table-row,.role-station-row,.cost-bar-row,.operation-report-row,
.v119-station-cards>button,.v123-station-cards>button,.chat-room-item,
.menu-context-kpi,.notification-filter{
  transition:box-shadow .13s ease, transform .13s ease, background-color .13s ease, border-color .13s ease, filter .13s ease;
}
@media (prefers-reduced-motion: reduce){
  .station-card,.station-open,.primary,.quiet,button.primary,button.quiet,
  .tab-button,.segmented button,.role-nav-item,.perm-toggle,.role-preset,
  .v119-table-row,.role-station-row,.cost-bar-row,.operation-report-row,
  .v119-station-cards>button,.v123-station-cards>button,.chat-room-item,
  .menu-context-kpi,.notification-filter{ transition:none!important; }
  .station-open:hover,
  .v119-table-row:hover,.role-station-row:hover,.cost-bar-row:hover,
  .operation-report-row:hover,.v119-station-cards>button:hover,
  .v123-station-cards>button:hover,.chat-room-item:hover,
  .primary:active,button.primary:active{ transform:none!important; }
}
/* v1.0.40 DESIGN POLISH — 끝 */

/* ══════════════════════════════════════════════════════════════════════
   v1.0.42 — 기초 설정 화면 + '미완료 = 빨간 메뉴' 강조
   ══════════════════════════════════════════════════════════════════════ */

/* ── 메뉴 빨간 강조: 기초 설정이 안 끝났을 때. 끝나면 클래스가 빠져 원래색 ── */
.role-nav-item.attention span{ color:#ff6b6b; font-weight:900; }
.role-nav-item.attention{ background:rgba(217,45,32,.14); border-left-color:#ff5a4d; }
.role-nav-group-head.attention span{ color:#ff8f88; }
.attention-badge{
  margin-left:auto; min-width:16px; height:16px; padding:0 4px;
  display:inline-flex; align-items:center; justify-content:center;
  background:#d92d20; color:#fff; font-size:.62rem; font-weight:900;
  border-radius:999px;
}
.phone-nav-item.attention{ color:#ffd7d3; box-shadow:inset 0 -2px 0 #ff5a4d; }
@media (min-width:960px){
  .role-nav-item.attention{ background:rgba(217,45,32,.16)!important; border-left-color:#ff5a4d!important; }
  .role-nav-item.attention span{ color:#ff7a70!important; font-weight:900!important; }
  .role-nav-item.attention:hover{ background:rgba(217,45,32,.24)!important; }
  .role-nav-group-head.attention span{ color:#ff9089!important; font-weight:900!important; }
}

/* ── 기초 설정 화면 ── */
.setup-context-bar{
  display:flex; flex-wrap:wrap; align-items:center; gap:10px 14px;
  padding:11px 13px; margin:0 0 10px;
  background:#fff; border:1px solid var(--line); box-shadow:var(--elev-1);
}
.setup-context-bar label{ display:flex; align-items:center; gap:7px; margin:0; font-weight:800; font-size:.8rem; }
.setup-context-bar select{ min-height:36px; min-width:180px; }
.setup-context-bar .quiet{ margin-left:auto; }
.setup-status{ flex:1 1 260px; font-size:.82rem; color:#33475b; display:flex; flex-direction:column; gap:1px; }
.setup-status.ok{ color:#11814a; }
.setup-status.warn{ color:#b3402f; }
.setup-status b{ font-weight:900; }
.setup-status-sub{ font-size:.7rem; color:var(--muted); font-weight:700; }

.setup-grid{ display:grid; gap:12px; grid-template-columns:1fr; }
@media (min-width:1100px){ .setup-grid{ grid-template-columns:1fr 1fr; } }
.setup-card{ box-shadow:var(--elev-1); }
.setup-card .station-head{ align-items:flex-start; gap:10px; }
.setup-card h2{ font-size:.98rem; margin:0 0 3px; }
.setup-card .station-head small{ color:var(--muted); line-height:1.4; display:block; }
.setup-chip{
  flex:0 0 auto; align-self:flex-start;
  padding:3px 9px; font-size:.66rem; font-weight:900; white-space:nowrap;
  background:#eef2f7; color:#5b6b7d; border:1px solid var(--line);
}
.setup-chip.ok{ background:#e7f7ef; color:#11814a; border-color:#bfe6cf; }
.setup-chip.need{ background:#fdecea; color:#b3402f; border-color:#f2c4bd; }

.setup-list{ display:grid; gap:5px; margin:10px 0 12px; }
.setup-empty{ margin:8px 0; padding:9px 11px; background:var(--sunken,#eef2f7); color:var(--muted); font-size:.78rem; }
.setup-item{
  display:flex; flex-wrap:wrap; align-items:baseline; gap:3px 10px;
  padding:7px 10px; border:1px solid var(--line); background:#fff;
}
.setup-item-main{ font-size:.82rem; color:#20303f; }
.setup-item-main b{ font-weight:900; }
.setup-item-sub{ font-size:.7rem; color:var(--muted); font-variant-numeric:tabular-nums; }

.setup-addrow{
  display:flex; flex-wrap:wrap; align-items:end; gap:8px 10px;
  padding-top:10px; border-top:1px dashed var(--line);
}
.setup-addrow label{ display:grid; gap:3px; margin:0; font-size:.66rem; font-weight:800; color:#4a5b6e; }
.setup-addrow input,.setup-addrow select{ min-height:34px; }
.setup-addrow input{ max-width:150px; }
.setup-addrow .primary{ min-height:36px; white-space:nowrap; }

.setup-price-row{ display:grid; grid-template-columns:1fr 120px auto auto; gap:8px; align-items:center; padding:6px 10px; border:1px solid var(--line); background:#fff; }
.setup-price-row .setup-price-input{ min-height:32px; text-align:right; font-variant-numeric:tabular-nums; }
.setup-price-row .setup-price-save{ min-height:32px; padding:0 12px; }
.setup-price-state{ font-size:.72rem; font-weight:900; text-align:center; }
.setup-price-state.ok{ color:#11814a; }
.setup-price-state.need{ color:#b3402f; }
@media (max-width:680px){
  .setup-price-row{ grid-template-columns:1fr auto; }
  .setup-price-row .setup-price-input{ grid-column:1/-1; }
  .setup-addrow input{ max-width:none; flex:1 1 120px; }
}
/* v1.0.42 기초 설정 — 끝 */

/* ══════════════════════════════════════════════════════════════════════
   v1.0.43 — 마감 월별 일괄 확정 바
   ══════════════════════════════════════════════════════════════════════ */
.closing-batch-bar{
  display:flex; flex-wrap:wrap; align-items:center; gap:10px 14px;
  padding:10px 12px; margin:0 0 8px;
  background:var(--sunken,#eef2f7); border:1px solid var(--line);
}
.closing-batch-bar #closingBatchInfo{ font-weight:800; font-size:.82rem; color:#33475b; }
.closing-batch-bar .closing-batch-flagged{ display:flex; align-items:center; gap:6px; margin:0; font-size:.74rem; font-weight:700; color:#4a5b6e; }
.closing-batch-bar .closing-batch-flagged input{ width:16px; min-height:16px; }
.closing-batch-bar #closingBatchConfirm{ margin-left:auto; min-height:36px; white-space:nowrap; }
.closing-batch-bar #closingBatchConfirm:disabled{ opacity:.5; }
@media (max-width:680px){
  .closing-batch-bar #closingBatchConfirm{ margin-left:0; width:100%; }
}
/* v1.0.43 — 끝 */

/* v1.0.46 — 기초 설정: 기본 마감시간 */
.setup-closing-time{ display:flex; align-items:center; gap:6px; margin:0; font-size:.74rem; font-weight:800; color:#4a5b6e; }
.setup-closing-time input{ min-height:34px; width:auto; }
.setup-closing-time button{ min-height:34px; padding:0 10px; }
.setup-closing-help{ margin:2px 0 8px; }

/* v1.0.47 — 예상 현재고 */
.tank-forecast-panel .tank-forecast-meta{ font-size:.68rem; color:var(--muted); font-weight:800; white-space:nowrap; }
.tank-forecast-list{ display:grid; gap:8px; margin-top:8px; }
.tank-forecast-row{ border:1px solid var(--line); background:#fff; padding:9px 11px; box-shadow:var(--elev-1); }
.tank-forecast-row.bad{ border-left:4px solid #d23a2f; }
.tank-forecast-row.warn{ border-left:4px solid #e08a00; }
.tank-forecast-row.ok{ border-left:4px solid #16a45c; }
.tank-forecast-row.not-ready{ border-left:4px solid #c4cfdb; }
.tfr-head{ display:flex; align-items:baseline; gap:8px; flex-wrap:wrap; }
.tfr-head strong{ font-weight:900; font-size:.9rem; }
.tfr-now{ font-size:1.05rem; font-weight:900; color:#0c2444; font-variant-numeric:tabular-nums; }
.tfr-head span{ font-size:.7rem; color:var(--muted); font-weight:700; margin-left:auto; }
.tfr-bar{ height:8px; background:#eef2f6; margin:6px 0 4px; overflow:hidden; }
.tfr-bar i{ display:block; height:100%; background:linear-gradient(90deg,#1768e8,#4b93f7); }
.tank-forecast-row.bad .tfr-bar i{ background:#d23a2f; }
.tank-forecast-row.warn .tfr-bar i{ background:#e08a00; }
.tfr-calc,.tfr-note{ margin:2px 0 0; font-size:.66rem; color:var(--muted); line-height:1.45; font-variant-numeric:tabular-nums; }

/* v1.0.48 — 달력 매입 뱃지 · 주유소 필터 */
.calendar-scope{ display:flex; align-items:center; gap:6px; margin:0; font-size:.72rem; font-weight:800; color:#4a5b6e; }
.calendar-scope select{ min-height:32px; width:auto; }
.badge.purchase-badge{ background:#eef3fb; color:#1f4e79; }
.badge.purchase-badge.expected{ background:#fdf0e4; color:#8a5200; }
.badge.purchase-badge b{ font-weight:900; }

/* ══════════════════════════════════════════════════════════════════════
   v1.0.49 — 본문(내용) 전용 크기조절 · 상단 이동버튼 · 버전 표기
   ══════════════════════════════════════════════════════════════════════ */
/* 본문 크기: 메인메뉴·상단바는 그대로, 내용만 확대/축소한다.
   ⚠ #mainContent 자체(position:fixed; left:240px)에 zoom 을 걸면 left 값까지 축소돼
   내용이 왼쪽 메뉴 밑으로 들어가 잘린다. 그래서 '안쪽 요소'만 zoom 한다.
   zoom 은 글자·간격·이미지를 통째로 키워서 rem/px 섞여 있어도 확실히 먹는다. */
#mainContent > *{ zoom: var(--ui-content-zoom, 1); }
@media (min-width:960px){
  body #mainContent > *{ zoom: var(--ui-content-zoom, 1) !important; }
}
/* 두 크기 선택칸을 상단바에서 좁게 — 글자가 잘리지 않게 라벨은 짧게(메뉴/본문) */
.ui-setting-cluster .ui-scale-main,
.ui-setting-cluster .ui-scale-body{ display:flex; align-items:center; gap:4px; }
@media (min-width:960px){
  .ui-setting-cluster .ui-scale-main,
  .ui-setting-cluster .ui-scale-body{ display:flex !important; align-items:center !important; gap:4px !important; }
  .ui-setting-cluster .ui-scale-main select,
  .ui-setting-cluster .ui-scale-body select{ min-width:66px !important; max-width:82px !important; padding:0 16px 0 5px !important; }
  .ui-setting-cluster .ui-scale-main > span,
  .ui-setting-cluster .ui-scale-body > span{ color:#edf6ff !important; font-size:calc(var(--ui119-topbar-font,13px) - 2px) !important; font-weight:800 !important; white-space:nowrap !important; }
  /* '자료' 선택칸이 잘려서 '실제제자' 처럼 보이던 것 — 폭을 늘린다 */
  body .topbar .data-mode-setting select{ width:88px !important; }
  /* 넘치면 숨기지 말고 옆으로 밀어서 보게 한다(잘려서 안 보이는 것보다 낫다) */
  body .topbar .top-actions{ overflow-x:auto !important; scrollbar-width:thin; }
  body .topbar .top-actions::-webkit-scrollbar{ height:4px; }
}

/* 상단 이동 버튼(홈·뒤로·앞으로) — 눌리는 자리를 넉넉히 */
@media (min-width:960px){
  body .topbar #navHome,body .topbar #navBack,body .topbar #navForward{
    min-width:78px !important; padding:0 14px !important; cursor:pointer !important;
  }
  body .topbar #navHome:active,body .topbar #navBack:active,body .topbar #navForward:active{ background:#0a3e6e !important; }
}
/* v1.0.49 — 끝 */

/* ══ v1.0.51 — 상단바 '메뉴/본문' 선택칸: '더 크게'·'사용자 지정' 글자 잘림만 수정 ══ */
@media (min-width:960px){
  /* v1.0.49의 max-width:82px 때문에 '더 크게' 끝 글자가 잘렸다 — 가장 긴 항목이
     다 보이도록 폭만 넓힌다. 상단바 다른 요소는 건드리지 않는다. */
  body .ui-setting-cluster .ui-scale-main select,
  body .ui-setting-cluster .ui-scale-body select{
    min-width:104px !important; max-width:124px !important; width:auto !important;
    padding:0 18px 0 7px !important; text-overflow:clip !important;
  }
}
/* v1.0.51 — 끝 */

/* ══ v1.0.52 — 관리자 '주유소 운영 현황' 표 밑에 상태(완료/확인/정상) 뜻 설명 줄 ══ */
.v120-ops-legend{
  display:flex; flex-wrap:wrap; align-items:baseline; gap:2px 12px;
  padding:6px 9px; border-top:1px solid #e7edf4; background:#fbfdff;
  font-size:11px; line-height:1.4; color:#5f7086;
}
.v120-ops-legend span{ white-space:nowrap; }
.v120-ops-legend b{ color:#2f4a67; font-weight:800; }
.v120-ops-legend em{ font-style:normal; font-weight:800; color:#8a99ab; letter-spacing:.5px; }
/* 패널(세로 flex) 안에서: 표는 남는 높이를 채우고, 설명 줄은 항상 밑에 보이게.
   .v120-admin-table 의 height:100% 를 풀어야 설명 줄이 패널 밖으로 밀려나지 않는다. */
body .v119-grid.admin-top > .v119-panel > .v120-admin-table{
  height:auto !important; flex:1 1 auto !important; min-height:0 !important;
}
body .v119-grid.admin-top > .v119-panel > .v120-ops-legend{ flex:none !important; }
@media (min-width:960px){
  body .v119-grid.admin-top > .v119-panel > .v120-ops-legend{
    font-size:9px !important; gap:1px 10px !important; padding:4px 9px !important;
  }
}
/* v1.0.52 — 끝 */

/* ══ v1.0.53 — 감사 후속: '먼저 할 일' 배너 · 실시간 탱크재고 · 예측 정확도 ══ */
.v119-setup-banner{
  display:flex; flex-wrap:wrap; align-items:center; gap:4px 12px;
  width:100%; margin:0 0 8px; padding:9px 14px; box-sizing:border-box;
  border:1px solid #e6b6b0; border-left:4px solid #d23b36; border-radius:5px;
  background:#fdf2f1; color:#8a2b26; text-align:left; cursor:pointer;
  font-size:calc(var(--ui117-body-font, 14px) - 1px);
}
.v119-setup-banner:hover{ background:#fbe9e7; }
.v119-setup-banner b{ font-weight:900; color:#b3312b; }
.v119-setup-banner span{ flex:1 1 220px; color:#7a3f3b; font-weight:600; }
.v119-setup-banner em{ font-style:normal; font-weight:900; color:#b3312b; white-space:nowrap; }

.v123-forecast.v123-rt .fc-days small{ font-weight:700; color:#6a7787; margin-left:3px; }

.v123-accuracy{ display:flex; flex-direction:column; gap:3px; padding:6px 8px; }
.v123-acc-head{ font-size:calc(var(--ui117-body-font, 14px) - 3px); color:#5f7086; font-weight:700; margin-bottom:2px; }
.v123-acc-head b{ font-weight:900; }
.v123-acc-head b.ok{ color:#168b4c; } .v123-acc-head b.warn{ color:#df8700; } .v123-acc-head b.bad{ color:#e03e38; }
.v123-acc-row{
  display:flex; align-items:center; justify-content:space-between; gap:8px;
  border:0; background:#fff; border-bottom:1px solid #eef1f5; padding:5px 4px;
  text-align:left; color:#28445f; font-size:calc(var(--ui117-body-font, 14px) - 3px); cursor:pointer;
}
.v123-acc-row:hover{ background:#f7fbff; }
.v123-acc-row b{ font-weight:900; font-variant-numeric:tabular-nums; }
.v123-acc-row b.ok{ color:#168b4c; } .v123-acc-row b.warn{ color:#df8700; } .v123-acc-row b.bad{ color:#e03e38; }

/* 자료함·메시지·원장·재고 목록: .card-list 의 auto-fill 격자(260px) 때문에 넓은 화면에서
   행이 가로로 흩어지던 것 수정 — 한 줄에 한 행씩 세로로 쌓는다. (v1.0.53)
   v1.0.78: #inventoryCards 가 이 목록에서 빠져 있어 재고 현황 화면이 깨졌었다 → 추가.
   (예전에 아래쪽에 있던 별도 #inventoryCards.card-list 블록은 이걸로 통합해 삭제) */
@media (min-width:960px){
  body #documentList.document-list-panel,
  body #messageList.message-thread-panel,
  body #ledgerCards.ledger-list-panel,
  body #inventoryCards.card-list{
    grid-template-columns:1fr !important;
  }
}
/* v1.0.53 — 끝 */

/* ══ v1.0.55 — 카톡·엑셀 루틴 화면 ══ */
.v55-bar{ display:flex; flex-wrap:wrap; align-items:end; gap:8px 12px; margin:8px 0 12px; }
.v55-bar label{ display:flex; flex-direction:column; gap:3px; font-size:.75rem; color:#53677e; font-weight:700; }
.v55-bar input, .v55-bar select{ min-height:34px; border:1px solid #cdd8e3; border-radius:6px; padding:4px 8px; background:#fff; }
.v55-bar button{ min-height:34px; }
.v55-chip{ background:#eef3fb; color:#1f4e79; border-radius:12px; padding:3px 12px; font-size:.78rem; font-weight:800; }
.v55-h2{ font-size:1rem; margin:18px 0 8px; color:#153656; }
.v55-panel{ border:1px solid #dbe4ef; border-radius:6px; background:#fff; overflow:hidden; }
.v55-panel .empty-card{ margin:0; border:0; }
.v55-quick summary, .form-card > summary{ cursor:pointer; font-weight:800; color:#1769c5; padding:2px 0; }
.v55-quick-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:8px 12px; margin:8px 0; }
.v55-quick-grid label{ display:flex; flex-direction:column; gap:3px; font-size:.74rem; color:#53677e; font-weight:700; }
.v55-quick-grid input, .v55-quick-grid select{ min-height:34px; border:1px solid #cdd8e3; border-radius:6px; padding:4px 8px; }
[data-view] textarea{ width:100%; box-sizing:border-box; border:1px solid #cdd8e3; border-radius:6px; padding:8px; font:inherit; resize:vertical; }

/* 아침 보고 격자 */
.v55-morning-head, .v55-morning-row{ display:grid; grid-template-columns:minmax(120px,1.4fr) repeat(4,1fr); gap:1px; align-items:stretch; }
.v55-morning-head{ background:#f5f8fb; border-bottom:1px solid #e3eaf2; }
.v55-morning-head span{ padding:8px 10px; font-size:.72rem; font-weight:900; color:#546881; }
.v55-morning-row{ border-bottom:1px solid #eef1f5; }
.v55-morning-row:last-child{ border-bottom:0; }
.v55-st{ padding:8px 10px; display:flex; flex-direction:column; gap:1px; }
.v55-st small{ color:#7d8da0; font-size:.68rem; }
.v55-cell{ margin:5px; border-radius:5px; padding:6px 4px; text-align:center; font-size:.74rem; font-weight:800; }
.v55-cell.ok{ background:#e7f6ec; color:#1a7f46; }
.v55-cell.warn{ background:#fdf2e2; color:#a9670a; }
.v55-cell.bad{ background:#fdeceb; color:#c0392b; }

/* 재고조정 */
.v55-adj-head, .v55-adj-row{ display:grid; grid-template-columns:1.1fr .9fr repeat(6,1fr); gap:4px; align-items:center; padding:5px 8px; }
.v55-adj-head{ background:#f5f8fb; font-size:.68rem; font-weight:900; color:#546881; border-bottom:1px solid #e3eaf2; }
.v55-adj-row{ border-bottom:1px solid #eef1f5; font-size:.78rem; }
.v55-adj-row input{ min-width:0; width:100%; box-sizing:border-box; min-height:30px; border:1px solid #cdd8e3; border-radius:5px; padding:3px 5px; background:#eef5ff; }
.v55-adj-diff.bad{ color:#c0392b; font-weight:800; } .v55-adj-diff.warn{ color:#a9670a; font-weight:800; } .v55-adj-diff.ok{ color:#1a7f46; }
.v55-adj-source{display:block;margin-top:2px;color:#66788a;font-size:.61rem;font-weight:400;white-space:nowrap}
.v55-adj-summary{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:7px 9px;border:1px solid #d8e4f0;border-radius:7px;background:#f7fbff;color:#38536b;font-size:.72rem}
.v55-adj-summary strong{color:#173f69}.v55-adj-summary span{padding-left:8px;border-left:1px solid #d8e4f0}.v55-adj-summary b{color:#173f69;font-variant-numeric:tabular-nums}
.stockadj-charts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:8px 0}.stockadj-charts article{padding:9px;border:1px solid #dce6f0;background:#fff;border-radius:8px}.stockadj-charts h3{margin:0;color:#173f69;font-size:.8rem}.stockadj-charts p{margin:3px 0 7px;color:#687789;font-size:.65rem}.stockadj-bar-row{display:grid;grid-template-columns:68px minmax(35px,1fr) 58px;gap:5px;align-items:center;margin:4px 0;font-size:.68rem}.stockadj-bar-row>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stockadj-bar-row i{height:8px;background:#edf2f7;border-radius:99px;overflow:hidden}.stockadj-bar-row em{display:block;height:100%;border-radius:99px}.stockadj-bar-row em.positive{background:#d89122}.stockadj-bar-row em.negative{background:#c63b32}.stockadj-bar-row b{text-align:right;font-variant-numeric:tabular-nums;font-size:.67rem}@media(max-width:900px){.stockadj-charts{grid-template-columns:1fr}.stockadj-bar-row{grid-template-columns:82px minmax(35px,1fr) 65px}}
/* v1.0.78 — 재고조정 그래프·요약 어두운 화면 대응 (userzip 병합 시 빠져 있던 것) */
html[data-theme="dark"] .stockadj-charts article{background:#161d25;border-color:#2a323c}
html[data-theme="dark"] .stockadj-charts h3{color:#e7ebef}
html[data-theme="dark"] .stockadj-charts p{color:#9aa4b0}
html[data-theme="dark"] .stockadj-bar-row i{background:#242a31}
html[data-theme="dark"] .v55-adj-summary{background:#161d25;border-color:#2a323c;color:#9aa4b0}
html[data-theme="dark"] .v55-adj-summary strong,html[data-theme="dark"] .v55-adj-summary b{color:#e7ebef}
html[data-theme="dark"] .v55-adj-summary span{border-left-color:#2a323c}
html[data-theme="dark"] .v55-adj-source{color:#8891a0}
.v55-annual-head, .v55-annual-row{ display:grid; grid-template-columns:60px repeat(auto-fit,minmax(70px,1fr)); gap:4px; padding:5px 8px; font-size:.76rem; }
.v55-annual-head{ background:#f5f8fb; font-weight:900; color:#546881; }
.v55-annual-row{ border-bottom:1px solid #eef1f5; font-variant-numeric:tabular-nums; }
.v55-annual-row .bad{ color:#c0392b; } .v55-annual-row .warn{ color:#a9670a; }

/* 주변시세 */
#marketBoard{ display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:10px; border:0; }
.v55-market-card{ border:1px solid #dbe4ef; border-radius:6px; background:#fff; padding:10px 12px; }
.v55-market-card h3{ margin:0 0 6px; font-size:.92rem; color:#153656; }
.v55-market-row{ display:grid; grid-template-columns:1fr 1fr 1fr 46px; gap:4px; font-size:.76rem; padding:3px 0; border-top:1px solid #f0f3f7; }
.v55-market-row .bad{ color:#c0392b; font-weight:800; } .v55-market-row .ok{ color:#1a7f46; font-weight:800; }

/* 지출·결제 */
.v55-pay-head, .v55-pay-row{ display:grid; grid-template-columns:1.3fr 1fr .6fr 1fr auto; gap:8px; align-items:center; padding:7px 10px; font-size:.8rem; }
.v55-pay-head{ background:#f5f8fb; font-weight:900; color:#546881; border-bottom:1px solid #e3eaf2; }
.v55-pay-row{ border-bottom:1px solid #eef1f5; }
.v55-pay-row .warn{ color:#a9670a; font-weight:800; } .v55-pay-row .ok{ color:#1a7f46; }
.v55-exp-row{ display:grid; grid-template-columns:52px 1.2fr .8fr .7fr 1.3fr; gap:6px; padding:5px 10px; border-bottom:1px solid #eef1f5; font-size:.76rem; }
.v55-exp-row .ok{ color:#1a7f46; } .v55-exp-row .warn{ color:#a9670a; }

/* 발주 요청 */
.v55-orq-line{ display:flex; align-items:center; gap:8px; padding:7px 10px; border-bottom:1px solid #eef1f5; font-size:.8rem; }
.v55-orq-line span{ flex:1; }
/* v1.3.120 — 전체 input{width:100%} 때문에 체크칸이 줄 전체를 차지하고 주유소·유종·수량 글자가 오른쪽 끝에 세로로 찌그러졌다. 체크칸은 크게(26px) 고정. */
.v55-orq-line input[type="checkbox"]{ width:26px; height:26px; min-height:0; flex:0 0 auto; margin:0; }
.v55-orqrows{ display:flex; flex-direction:column; gap:6px; margin-top:6px; }
.v55-orq-input{ display:grid; grid-template-columns:1fr 1fr .7fr 1fr; gap:6px; }
.v55-orq-input select, .v55-orq-input input{ min-height:32px; border:1px solid #cdd8e3; border-radius:5px; padding:3px 6px; min-width:0; }

@media (max-width:720px){
  .v55-morning-head, .v55-morning-row{ grid-template-columns:minmax(90px,1fr) repeat(4,1fr); }
  .v55-adj-head, .v55-adj-row{ grid-template-columns:1fr 1fr; }
  .v55-adj-head span:nth-child(n+3), .v55-adj-row span.v55-adj-pos, .v55-adj-row span.v55-adj-gauge{ display:none; }
  .v55-pay-head, .v55-pay-row{ grid-template-columns:1fr 1fr auto; }
  .v55-pay-head span:nth-child(3), .v55-pay-row span:nth-child(3), .v55-pay-head span:nth-child(4), .v55-pay-row span:nth-child(4){ display:none; }
}
/* ══ v1.0.57 — 폰 전용 홈(카드 대시보드) · 하단 5칸 네비 ══ */
@media (max-width:720px){
  /* 하단 네비 — 5칸 균등, 아이콘+글씨 세로 */
  .bottom-nav{ justify-content:space-around !important; overflow-x:visible !important; gap:0 !important; }
  .bottom-nav button{ flex:1 1 0 !important; min-width:0 !important; display:flex; align-items:center; justify-content:center; }
  .bottom-nav button span{ display:flex; flex-direction:column; align-items:center; gap:2px; font-size:.98rem; }
  .bottom-nav button span em{ font-style:normal; font-size:.6rem; font-weight:800; }

  /* 폰 홈 카드 — 큰 탭 타깃, 세로 스택 */
  .mobile-action-grid{ display:grid !important; grid-template-columns:1fr 1fr !important; gap:8px !important; grid-auto-rows:min-content !important; }
  .mobile-action-grid button{
    display:flex !important; flex-direction:column !important; align-items:flex-start !important; gap:3px !important;
    min-height:64px !important; padding:11px 12px !important; border:1px solid #dbe4ef !important; border-radius:10px !important;
    background:#fff !important; text-align:left !important; color:#1b3450 !important;
  }
  .mobile-action-grid button strong{ font-size:.9rem !important; }
  .mobile-action-grid button span{ font-size:.66rem !important; color:#7d8da0 !important; }
  .mobile-action-grid button:active{ background:#eef4ff !important; }
  /* 홈에서 목록/입력 화면으로 들어갔을 때 위에 '홈으로' 줄 */
  .mobile-view-bar{ display:flex; align-items:center; gap:8px; position:sticky; top:0; z-index:20;
    background:#fff; border-bottom:1px solid #e3eaf2; padding:8px 4px; margin:-4px -4px 8px; }
  .mobile-view-bar button{ border:1px solid #cdd8e3; background:#f4f8ff; color:#1769c5; border-radius:8px;
    padding:6px 12px; font-weight:800; font-size:.8rem; }
  .mobile-view-bar b{ font-size:.86rem; color:#1b3450; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
}
@media (min-width:721px){ .mobile-view-bar{ display:none; } }

/* 대시보드 아침보고 미니 패널 */
.v55-dash-morning{ display:flex; flex-direction:column; }
.v55-dm-head, .v55-dm-row{ display:grid; grid-template-columns:minmax(90px,1.6fr) repeat(4,1fr); gap:2px; align-items:center; }
.v55-dm-head{ background:#f5f8fb; border-bottom:1px solid #e3eaf2; }
.v55-dm-head span{ padding:5px 8px; font-size:.66rem; font-weight:900; color:#546881; text-align:center; }
.v55-dm-head span:first-child{ text-align:left; }
.v55-dm-row{ border:0; background:#fff; border-bottom:1px solid #eef1f5; text-align:left; cursor:pointer; padding:0; }
.v55-dm-row:hover{ background:#f7fbff; }
.v55-dm-row span:first-child{ padding:6px 8px; font-size:.76rem; font-weight:700; color:#24405b; }
.v55-dot{ width:12px; height:12px; border-radius:50%; margin:6px auto; display:block; }
.v55-dot.ok{ background:#1a9e57; } .v55-dot.warn{ background:#e0a020; } .v55-dot.bad{ background:#e0483f; }
.v55-clone-box{ margin-top:12px; padding:12px; border:1px dashed #b8cce0; border-radius:6px; background:#fbfdff; }
.v55-clone-box h3{ margin:0 0 4px; font-size:.88rem; color:#153656; }
/* v1.0.56 — 소장 아침 할일 체크리스트 · 채팅 등록 버튼 */
.v55-fieldchecklist{ display:flex; flex-direction:column; gap:8px; padding:8px 10px; }
.v55-fc-block b{ font-size:.82rem; color:#1b3450; }
.v55-fc-ok{ color:#1a7f46; font-weight:800; font-size:.74rem; }
.v55-fc-left{ color:#c0392b; font-weight:800; font-size:.74rem; }
.v55-fc-items{ display:flex; flex-wrap:wrap; gap:5px; margin-top:5px; }
.v55-fc-item{ border:1px solid #d4dde7; border-radius:14px; background:#fff; padding:4px 10px; font-size:.74rem; color:#33465c; cursor:pointer; display:flex; align-items:center; gap:4px; }
.v55-fc-item i{ font-style:normal; }
.v55-fc-item.done{ background:#eef7f0; border-color:#bfe0c9; color:#1a7f46; }
.v55-fc-item.pending{ border-color:#e6b6b0; color:#b3312b; font-weight:700; }
.chat-register{ align-self:flex-start; margin-top:3px; border:1px solid #cdd8e3; background:#f2f7ff; color:#1769c5; border-radius:12px; padding:2px 9px; font-size:.7rem; font-weight:800; cursor:pointer; }
.chat-msg.mine .chat-register{ align-self:flex-end; }
/* v1.0.55 — 끝 */

/* v1.0.57 — 대표 '유류 매입단가·수송료' 표 (loadFuelCost) */
.v55-fc{ display:flex; flex-direction:column; border:1px solid #e3eaf2; border-radius:8px;
  overflow-x:auto; background:#fff; }
.v55-fc-head, .v55-fc-line{ display:grid; gap:6px; align-items:center; padding:5px 8px; min-width:640px;
  grid-template-columns:1.5fr .9fr .8fr .9fr .95fr .85fr .8fr .85fr .95fr; }
.v55-fc-head{ background:#f5f8fb; border-bottom:1px solid #e3eaf2; font-size:.66rem; font-weight:900;
  color:#546881; text-align:right; }
.v55-fc-head span:first-child, .v55-fc-head span:nth-child(2){ text-align:left; }
.v55-fc-line{ border-bottom:1px solid #eef1f5; font-size:.78rem; color:#2a3f57; text-align:right; }
.v55-fc-line span:first-child, .v55-fc-line span:nth-child(2){ text-align:left; font-weight:700; }
.v55-fc-line input{ width:100%; min-width:0; box-sizing:border-box; padding:4px 6px; border:1px solid #cdd8e3;
  border-radius:5px; font-size:.78rem; text-align:right; }
.v55-fc-line .fc-margin.ok{ color:#1a7f46; font-weight:800; }
.v55-fc-line .fc-margin.bad{ color:#c0392b; font-weight:800; }
.v55-fc:has(.v55-fc-line.ro) .v55-fc-head,
.v55-fc-line.ro{ grid-template-columns:1.5fr 1fr .95fr 1fr .9fr 1fr 1fr; min-width:560px; }
.v55-fc-line.ro span{ font-weight:600; }

/* ══ v1.0.58 — 항상 보이는 버전 칩 (내가 어느 버전을 보는지 헷갈리지 않게) ══ */
.version-chip{
  flex:0 0 auto; align-self:center; margin:0 3px;
  border:1px solid #d0d8e2; border-radius:999px;
  background:#eef2f7; color:#3d4d60;
  font-size:.68rem; font-weight:800; letter-spacing:.02em;
  padding:3px 9px; line-height:1; white-space:nowrap; cursor:pointer;
  font-variant-numeric:tabular-nums;
}
.version-chip:hover{ background:#e3e9f1; }
.version-chip:focus-visible{ outline:2px solid #4a90d9; outline-offset:1px; }
.version-chip.stale{ background:#fff3d6; border-color:#e6b85c; color:#8a5a06; }
.version-chip.stale::before{ content:"⚠ "; }
@media (max-width:720px){
  .version-chip{ font-size:.63rem; padding:3px 7px; margin:0 2px; }
}

/* ══ v1.0.59 — 버전 잘 보이게 + 대표 폰 홈(주유소별 신호 + 지시) ══ */
.login-version{ margin:2px 0 10px; font-size:.82rem; font-weight:800; color:#5b6b7f;
  letter-spacing:.03em; font-variant-numeric:tabular-nums; }
.mobile-home-version{ display:inline-block; margin-top:5px; padding:2px 8px; border-radius:999px;
  background:#eef2f7; color:#42536a; font-size:.7rem; font-weight:800; letter-spacing:.02em;
  font-variant-numeric:tabular-nums; }
.mobile-home-version.stale{ background:#fff3d6; color:#8a5a06; }
.mobile-home-summary{ margin:0 0 10px; padding:9px 12px; border:1px solid #e3eaf2; border-radius:10px;
  background:#f7fafc; font-size:.82rem; color:#33465c; line-height:1.5; }
.mobile-home-summary b{ font-weight:900; font-variant-numeric:tabular-nums; }
.mobile-home-summary b.ok{ color:#1a7f46; } .mobile-home-summary b.warn{ color:#b06f00; }
.mobile-home-summary b.bad{ color:#c0392b; }

.ceo-st-card{ display:flex; align-items:stretch; gap:8px; margin-bottom:8px; }
.ceo-st-main{ flex:1 1 auto; display:grid; grid-template-columns:1fr auto; grid-template-rows:auto auto;
  gap:2px 8px; align-items:center; text-align:left; padding:10px 12px; border:1px solid #dbe3ec;
  border-left:4px solid #1a9e57; border-radius:10px; background:#fff; }
.ceo-st-card.needs .ceo-st-main{ border-left-color:#e0483f; }
.ceo-st-name{ font-size:.92rem; font-weight:800; color:#1b3450; }
.ceo-st-sales{ font-size:.82rem; font-weight:800; color:#33465c; text-align:right; font-variant-numeric:tabular-nums; }
.ceo-st-sigs{ grid-column:1 / -1; display:flex; align-items:center; gap:3px 6px; flex-wrap:wrap; margin-top:4px; }
.ceo-st-sigs em{ font-style:normal; font-size:.66rem; color:#6b7c90; margin-right:6px; }
.ceo-sig{ width:9px; height:9px; border-radius:50%; display:inline-block; }
.ceo-sig.ok{ background:#1a9e57; } .ceo-sig.warn{ background:#e0a020; } .ceo-sig.bad{ background:#e0483f; }
.ceo-st-instruct{ flex:0 0 auto; align-self:stretch; padding:0 14px; border:1px solid #cdd8e3;
  border-radius:10px; background:#f2f7ff; color:#1769c5; font-weight:800; font-size:.8rem; }
.ceo-st-instruct:active{ background:#e2edfb; }

/* ══ v1.0.60 — 관리자 '화면 보기 = 폰 화면' (앱을 390px iframe 으로 다시 띄워 폰 레이아웃 그대로) ══ */
#adminPreviewViewport{ margin-right:4px; }
#adminPhoneFrame{ position:fixed; left:0; right:0; bottom:0; top:var(--ui117-topbar-size,46px);
  z-index:60; background:#0c1016; display:flex; justify-content:center; align-items:flex-start;
  padding:18px 12px; overflow:auto; }
#adminPhoneFrame[hidden]{ display:none; }
#adminPhoneStage{ width:390px; max-width:100%;
  height:min(860px, calc(100vh - var(--ui117-topbar-size,46px) - 36px));
  border:0; border-radius:20px; background:#fff; box-shadow:0 14px 60px rgba(0,0,0,.55); }
.embed-phone #adminRolePreview,
.embed-phone #adminPhoneFrame,
.embed-phone .quick-upload-bar{ display:none !important; }

/* ══ v1.0.61 — 브리핑 색 토큰 · 밝게/어둡게 (v1.0.66: 띠에서 실제 쓰는 규칙만 남김) ══ */
.brief-theme-toggle{ flex:0 0 auto; align-self:center; margin:0 3px; border:1px solid #cdd8e3; border-radius:999px;
  background:#eef2f7; color:#3d4d60; font-size:.72rem; font-weight:800; padding:4px 10px; white-space:nowrap; cursor:pointer; }
.brief-theme-toggle:active{ background:#e2e8f1; }

/* 색 토큰 — 띠(.brief-strip) 안의 .bh-card / .bh-rem / .bh-ask / .bh-more 가 참조한다. */
.brief-strip{
  --bh-ground:#EEF2F7; --bh-panel:#FFFFFF; --bh-ink:#141B26; --bh-mut:#5C6B7D; --bh-line:#E1E7EF;
  --bh-accent:#0B5FD9; --bh-ok:#0FA36B; --bh-warn:#B5730A; --bh-bad:#E8480E; --bh-head-ink:#FFFFFF;
}
body[data-brief-theme="dark"] .brief-strip, html[data-theme="dark"] .brief-strip{
  --bh-ground:#0F141A; --bh-panel:#181F27; --bh-ink:#EAEFF5; --bh-mut:#8DA0B4; --bh-line:#2B3540;
  --bh-accent:#FFB020; --bh-ok:#36D399; --bh-warn:#FFB020; --bh-bad:#F26D5B; --bh-head-ink:#EAEFF5;
}

.bh-card{ margin:0 14px 11px; background:var(--bh-panel); border-radius:15px; padding:14px 15px;
  border:1px solid var(--bh-line); border-top:4px solid var(--bh-ok); box-shadow:0 2px 9px rgba(20,27,38,.05); }
body[data-brief-theme="dark"] .bh-card{ box-shadow:none; border:1px solid var(--bh-line); border-top:4px solid var(--bh-ok); }
.bh-card.bad{ border-top-color:var(--bh-bad); }
.bh-card-top{ display:flex; justify-content:space-between; align-items:baseline; gap:10px; }
.bh-card-nm{ font-size:1rem; font-weight:800; }
.bh-card-rt{ font-size:.86rem; font-weight:800; color:var(--bh-accent); }
.bh-say{ font-size:.85rem; color:var(--bh-mut); margin:7px 0 12px; line-height:1.6; }
.bh-acts{ display:flex; gap:8px; flex-wrap:wrap; }
.bh-act{ font:inherit; font-size:.81rem; font-weight:800; padding:9px 14px; border-radius:11px;
  border:1.5px solid var(--bh-accent); background:transparent; color:var(--bh-accent); cursor:pointer; }
.bh-act.solid{ background:var(--bh-accent); color:#fff; }
body[data-brief-theme="dark"] .bh-act{ border-color:var(--bh-line); color:var(--bh-ink); }
body[data-brief-theme="dark"] .bh-act.solid{ background:var(--bh-accent); color:#161B22; border-color:var(--bh-accent); }

.bh-rem{ margin:0 14px; display:flex; flex-direction:column; gap:7px; }
.bh-rem-row{ display:flex; align-items:center; gap:10px; text-align:left; width:100%; background:var(--bh-panel);
  border:1px solid var(--bh-line); border-radius:12px; padding:11px 13px; font:inherit; font-size:.83rem;
  color:var(--bh-ink); line-height:1.5; cursor:pointer; }
.bh-rem-row span{ flex:1; } .bh-rem-row b{ color:var(--bh-mut); }
.bh-rem-row:active{ background:var(--bh-ground); }

.bh-ask{ display:block; width:calc(100% - 28px); margin:8px 14px 20px; padding:12px; border-radius:12px;
  border:1px dashed var(--bh-line); background:var(--bh-panel); color:var(--bh-mut); font:inherit;
  font-size:.83rem; font-weight:700; text-align:left; cursor:pointer; }
.bh-more{ margin:0 14px 11px; padding:11px 15px; font-size:.82rem; font-weight:700; color:var(--bh-mut);
  background:var(--bh-panel); border:1px dashed var(--bh-line); border-radius:12px; }
.bh-more-link{ border:0; background:none; color:var(--bh-accent); font:inherit; font-weight:800; cursor:pointer; padding:0; }

/* v1.0.62 — PC 대시보드 맨 위 아침 브리핑 */
#deskBrief{ display:block; max-width:880px; width:100%; margin:0 auto 20px; align-self:center; border-radius:16px; }
@media (max-width:720px){ #deskBrief{ display:none; } }  /* 폰은 workcenter 쪽 브리핑을 쓴다 */

/* ═══════════════════════════════════════════════════════════════════════
   v1.0.64 — 화면 전체 밝게/어둡게 (1차)
   상단바·좌측메뉴는 이미 진한 네이비라 그대로 두고, 밝던 본문·패널·표·입력칸을
   어둡게 덮는다. 하드코딩 #fff 가 많아 !important 로 눌러 준다.
   빠진 구석은 신고 받는 대로 보강 (styles.css 토큰화는 별도 작업).
   ═══════════════════════════════════════════════════════════════════════ */
html[data-theme="dark"]{
  color-scheme:dark; background:#0d1117;
  --text:#e6ecf3; --line:#2a323c; --muted:#9aa7b6; --blue:#4d9bff; --danger:#f26d5b;
  --v119-bg:#0d1117; --v119-panel:#161b22; --v119-line:#2a323c; --v119-text:#e6ecf3; --v119-muted:#9aa7b6;
  --v119-blue-soft:#15233a;
  --state-ok:#3fbe7e; --state-warn:#d9a441; --state-bad:#f26d5b;
}
html[data-theme="dark"] body{ background:#0d1117 !important; color:#e6ecf3 !important; }
html[data-theme="dark"] #appView{ background:#0d1117 !important; }
@media (min-width:960px){
  html[data-theme="dark"] html, html[data-theme="dark"] body{ background:#0d1117 !important; color:#e6ecf3 !important; }
  html[data-theme="dark"] body #mainContent{ background:#0d1117 !important; color:#e6ecf3 !important; }
}
/* 본문 큰 제목·설명 */
html[data-theme="dark"] .page-title h1, html[data-theme="dark"] .v119-titlebar h1,
html[data-theme="dark"] h1, html[data-theme="dark"] h2, html[data-theme="dark"] h3{ color:#eef2f7 !important; }
html[data-theme="dark"] .page-title p, html[data-theme="dark"] .v119-titlebar span,
html[data-theme="dark"] small, html[data-theme="dark"] .form-help, html[data-theme="dark"] .muted{ color:#9aa7b6 !important; }

/* 카드·패널·KPI 공통 (v119/v120/v123 + 예전 세대 + 일반) */
html[data-theme="dark"] .v119-panel, html[data-theme="dark"] .v119-panel>header,
html[data-theme="dark"] .v119-kpi, html[data-theme="dark"] .v119-titlebar>button,
html[data-theme="dark"] .v119-panel>header button, html[data-theme="dark"] .v123-station-row,
html[data-theme="dark"] .v123-station-head, html[data-theme="dark"] .v123-station-cards>button,
html[data-theme="dark"] .v120-ceo-row, html[data-theme="dark"] .v120-ceo-head,
html[data-theme="dark"] .v123-ceo .v119-panel, html[data-theme="dark"] .v123-ceo .v119-panel>header,
html[data-theme="dark"] .v55-panel, html[data-theme="dark"] .v55-bar, html[data-theme="dark"] .v119-setup-banner,
html[data-theme="dark"] .card, html[data-theme="dark"] .panel, html[data-theme="dark"] .kpi,
html[data-theme="dark"] .card-list > *, html[data-theme="dark"] .form-card,
html[data-theme="dark"] .station-card, html[data-theme="dark"] .overview-panel,
html[data-theme="dark"] .empty-card, html[data-theme="dark"] .v119-empty, html[data-theme="dark"] .dashboard-no-data,
html[data-theme="dark"] .work-stat, html[data-theme="dark"] .work-shortcut, html[data-theme="dark"] .work-comms,
html[data-theme="dark"] .notification-filter, html[data-theme="dark"] .cost-grid td, html[data-theme="dark"] .cost-grid th{
  background:#161b22 !important; border-color:#2a323c !important; color:#e6ecf3 !important; box-shadow:none !important;
}
html[data-theme="dark"] .v119-kpi strong, html[data-theme="dark"] .v119-kpi small, html[data-theme="dark"] .v119-kpi em,
html[data-theme="dark"] .v119-panel>header strong, html[data-theme="dark"] .v119-panel>header small,
html[data-theme="dark"] .v123-station-row strong, html[data-theme="dark"] .v120-ceo-row .station strong,
html[data-theme="dark"] .kpi strong, html[data-theme="dark"] .kpi span, html[data-theme="dark"] .panel-label{ color:#e6ecf3 !important; }
html[data-theme="dark"] .v119-kpi small, html[data-theme="dark"] .v119-kpi em,
html[data-theme="dark"] .v123-station-head, html[data-theme="dark"] .v120-ceo-head{ color:#9aa7b6 !important; }
html[data-theme="dark"] .v119-kpi>i, html[data-theme="dark"] .v123-station-cards header i{ background:#20262f !important; }
html[data-theme="dark"] .v119-kpi.ok>i{ background:#13291f !important; }
html[data-theme="dark"] .v119-kpi.warn>i{ background:#2a2214 !important; }
html[data-theme="dark"] .v119-kpi.bad>i{ background:#2c1a17 !important; }
html[data-theme="dark"] .v123-station-row:hover, html[data-theme="dark"] .v120-ceo-row:hover{ background:#1c222b !important; }
html[data-theme="dark"] .v123-station-cards>button.risk{ background:#1e1614 !important; border-color:#402926 !important; }
html[data-theme="dark"] .v123-station-cards>button.attention{ background:#1e1c14 !important; border-color:#40391f !important; }

/* 표 */
html[data-theme="dark"] table, html[data-theme="dark"] .data-table{ background:#161b22 !important; color:#e6ecf3 !important; }

/* (v1.0.78) 예전 여기 있던 #inventoryCards.card-list 단일컬럼 블록은
   위 v1.0.53 목록 규칙 + 아래 .inventory-view 재디자인으로 통합되어 삭제됨. */
html[data-theme="dark"] .data-table thead th, html[data-theme="dark"] thead th{ background:#1c222b !important; color:#9aa7b6 !important; border-color:#2a323c !important; }
html[data-theme="dark"] td, html[data-theme="dark"] th{ border-color:#2a323c !important; }

/* 입력칸 */
html[data-theme="dark"] input, html[data-theme="dark"] select, html[data-theme="dark"] textarea{
  background:#1c222b !important; color:#e6ecf3 !important; border-color:#2f3946 !important;
}
html[data-theme="dark"] input::placeholder, html[data-theme="dark"] textarea::placeholder{ color:#6b7889 !important; }

/* 배지·칩 */
html[data-theme="dark"] .badge{ background:#20262f !important; color:#c7d2df !important; border-color:#2a323c !important; }
html[data-theme="dark"] .badge.warn{ background:#2a2214 !important; color:#d9a441 !important; }
html[data-theme="dark"] .badge.problem, html[data-theme="dark"] .badge.document{ background:#2c1a17 !important; color:#f26d5b !important; }

/* 다이얼로그 */
html[data-theme="dark"] dialog, html[data-theme="dark"] .recognition-dialog, html[data-theme="dark"] .password-dialog,
html[data-theme="dark"] .install-dialog, html[data-theme="dark"] .search-dialog, html[data-theme="dark"] .notification-dialog{
  background:#161b22 !important; color:#e6ecf3 !important; border:1px solid #2a323c !important;
}
html[data-theme="dark"] dialog::backdrop{ background:rgba(0,0,0,.6); }

/* 채팅·메시지·달력 본문 */
html[data-theme="dark"] .chat-msg, html[data-theme="dark"] .message-card, html[data-theme="dark"] .calendar-day,
html[data-theme="dark"] .calendar-grid, html[data-theme="dark"] .ledger-card, html[data-theme="dark"] #messageList > *{
  background:#161b22 !important; border-color:#2a323c !important; color:#e6ecf3 !important;
}

/* 모바일 홈 */
html[data-theme="dark"] .mobile-workcenter, html[data-theme="dark"] .mobile-home-card,
html[data-theme="dark"] .mobile-stat, html[data-theme="dark"] .mobile-action-grid button,
html[data-theme="dark"] .mobile-priority-row, html[data-theme="dark"] .bottom-nav,
html[data-theme="dark"] .phone-nav, html[data-theme="dark"] .mobile-view-bar,
html[data-theme="dark"] .mobile-home-head{
  background:#161b22 !important; border-color:#2a323c !important; color:#e6ecf3 !important;
}
html[data-theme="dark"] .bottom-nav button, html[data-theme="dark"] .phone-nav button{ color:#9aa7b6 !important; }

/* 로그인 */
html[data-theme="dark"] .login-shell{ background:#0d1117 !important; }
html[data-theme="dark"] .login-card{ background:#161b22 !important; color:#e6ecf3 !important; border:1px solid #2a323c !important; }

/* v1.0.64 다크 — 2차 보강 (v55 화면들 + quiet 버튼 + 흰 조각) */
html[data-theme="dark"] button.quiet, html[data-theme="dark"] .quiet,
html[data-theme="dark"] .qty-option, html[data-theme="dark"] .zoom-option, html[data-theme="dark"] .tab-button{
  background:#1c222b !important; color:#c7d2df !important; border-color:#2f3946 !important;
}
html[data-theme="dark"] .qty-option.active, html[data-theme="dark"] .zoom-option.active,
html[data-theme="dark"] .notification-filter.active{ background:#25405f !important; color:#fff !important; }
/* v55 계열(아침보고·재고조정·주변시세·지출·발주·유류원가) 표/칩/셀 */
html[data-theme="dark"] .v55-fc, html[data-theme="dark"] .v55-fc-head, html[data-theme="dark"] .v55-fc-line,
html[data-theme="dark"] .v55-fc-line.ro, html[data-theme="dark"] .v55-chip, html[data-theme="dark"] .v55-morning-head,
html[data-theme="dark"] .v55-dm-head, html[data-theme="dark"] .v55-dm-row, html[data-theme="dark"] .v55-adj-head,
html[data-theme="dark"] .v55-adj-row, html[data-theme="dark"] .v55-annual-head, html[data-theme="dark"] .v55-annual-row,
html[data-theme="dark"] .v55-market-head, html[data-theme="dark"] .v55-market-row, html[data-theme="dark"] .v55-pay-head,
html[data-theme="dark"] .v55-pay-row, html[data-theme="dark"] .v55-orq-head, html[data-theme="dark"] .v55-orq-row,
html[data-theme="dark"] .v55-fc-item, html[data-theme="dark"] .v55-clone-box, html[data-theme="dark"] .chat-register{
  background:#161b22 !important; color:#e6ecf3 !important; border-color:#2a323c !important;
}
html[data-theme="dark"] .v55-fc-head, html[data-theme="dark"] .v55-morning-head, html[data-theme="dark"] .v55-dm-head,
html[data-theme="dark"] .v55-adj-head, html[data-theme="dark"] .v55-annual-head, html[data-theme="dark"] .v55-market-head,
html[data-theme="dark"] .v55-pay-head, html[data-theme="dark"] .v55-orq-head{ background:#1c222b !important; color:#9aa7b6 !important; }
html[data-theme="dark"] .v55-cell{ background:transparent !important; }
html[data-theme="dark"] .v55-cell.ok{ background:#13291f !important; color:#3fbe7e !important; }
html[data-theme="dark"] .v55-cell.warn{ background:#2a2214 !important; color:#d9a441 !important; }
html[data-theme="dark"] .v55-cell.bad{ background:#2c1a17 !important; color:#f26d5b !important; }
html[data-theme="dark"] .v55-fc-item.done{ background:#13291f !important; border-color:#1f4230 !important; color:#3fbe7e !important; }
html[data-theme="dark"] .v55-fc-item.pending{ border-color:#40392a !important; color:#d9a441 !important; }
/* form-card / step 계열, 설정 화면 */
html[data-theme="dark"] .form-card, html[data-theme="dark"] .system-work-card, html[data-theme="dark"] .setup-station-grid,
html[data-theme="dark"] .setup-tank-row, html[data-theme="dark"] .step-head, html[data-theme="dark"] .screen-hero,
html[data-theme="dark"] .backup-device-panel, html[data-theme="dark"] .station-backup-list > *{
  background:#161b22 !important; color:#e6ecf3 !important; border-color:#2a323c !important;
}
html[data-theme="dark"] .step-badge, html[data-theme="dark"] .step-no{ background:#20262f !important; color:#c7d2df !important; }
html[data-theme="dark"] .safe-line{ background:#13291f !important; color:#3fbe7e !important; }
html[data-theme="dark"] .risk-line{ background:#2c1a17 !important; color:#f26d5b !important; }
html[data-theme="dark"] .v55-market-card, html[data-theme="dark"] .v55-dash-morning,
html[data-theme="dark"] .v55-fieldchecklist, html[data-theme="dark"] .v55-fc-block,
html[data-theme="dark"] .v55-market-fuel, html[data-theme="dark"] .v55-annual-block{
  background:#161b22 !important; color:#e6ecf3 !important; border-color:#2a323c !important;
}

/* v1.0.64 다크 — 3차 (달력·채팅·메시지·자료함) */
html[data-theme="dark"] .cal-kpi, html[data-theme="dark"] .calendar-actionbar, html[data-theme="dark"] .calendar-summary,
html[data-theme="dark"] .calendar-legendbar, html[data-theme="dark"] .calendar-topbar, html[data-theme="dark"] .calendar-tools,
html[data-theme="dark"] .cal-day, html[data-theme="dark"] .calendar-grid > *, html[data-theme="dark"] .cal-tip,
html[data-theme="dark"] .chat-layout, html[data-theme="dark"] .chat-rooms, html[data-theme="dark"] .chat-room-list > *,
html[data-theme="dark"] .chat-thread, html[data-theme="dark"] .chat-compose, html[data-theme="dark"] .chat-room-item,
html[data-theme="dark"] .message-thread-panel, html[data-theme="dark"] .message-compose-panel, html[data-theme="dark"] .message-device-panel,
html[data-theme="dark"] .document-list-panel, html[data-theme="dark"] .document-upload-panel, html[data-theme="dark"] .ledger-entry-panel,
html[data-theme="dark"] .operation-submit-card, html[data-theme="dark"] .cash-summary, html[data-theme="dark"] #manageTabs,
html[data-theme="dark"] .card-list > *, html[data-theme="dark"] .form-grid > label, html[data-theme="dark"] .report-grid > *{
  background:#161b22 !important; color:#e6ecf3 !important; border-color:#2a323c !important;
}
html[data-theme="dark"] .cal-tip.rich .cal-tip-head, html[data-theme="dark"] table.cost-grid thead th{ background:#1c2f45 !important; }
html[data-theme="dark"] .calendar-grid{ background:#0d1117 !important; }

/* v1.0.64 다크 — 4차 (CEO 대시보드 패널 행들 + 달력 요일줄) */
html[data-theme="dark"] .v123-fc-row, html[data-theme="dark"] .v123-ev, html[data-theme="dark"] .v123-acc-row,
html[data-theme="dark"] .v123-ob-row, html[data-theme="dark"] .v123-ob-sum, html[data-theme="dark"] .v123-orderboard,
html[data-theme="dark"] .v123-realtime, html[data-theme="dark"] .v123-change, html[data-theme="dark"] .v123-accuracy,
html[data-theme="dark"] .v119-task-row, html[data-theme="dark"] .v119-task-item, html[data-theme="dark"] .v119-taskitem{
  background:#161b22 !important; color:#e6ecf3 !important; border-color:#2a323c !important;
}
html[data-theme="dark"] .fc-track, html[data-theme="dark"] .v123-fc-bar, html[data-theme="dark"] .bm{ background:#20262f !important; }
html[data-theme="dark"] .calendar-weekday{ background:#1c222b !important; color:#9aa7b6 !important; border-color:#2a323c !important; }
html[data-theme="dark"] .calendar-weekday.sun{ color:#f26d5b !important; }
html[data-theme="dark"] .qty-switch, html[data-theme="dark"] .qty-switch button{ background:#1c222b !important; color:#c7d2df !important; border-color:#2f3946 !important; }
html[data-theme="dark"] .qty-switch button.active{ background:#25405f !important; color:#fff !important; }
html[data-theme="dark"] .ob-day, html[data-theme="dark"] .ob-main, html[data-theme="dark"] .v123-ob-row .ob-stat,
html[data-theme="dark"] details > summary, html[data-theme="dark"] .calendar-tools > summary,
html[data-theme="dark"] .ui-setting-detail-grid, html[data-theme="dark"] .ui-setting-detail > summary{
  background:#1c222b !important; color:#c7d2df !important; border-color:#2a323c !important;
}

/* ══ v1.0.65 — 브리핑 '띠' (대시보드 맨 위 한 줄, 자세히로 펼침) ══ */
#deskBrief{ max-width:none !important; margin:0 0 14px !important; }
#briefHome{ display:block; margin:0 0 10px; }
#briefHome:empty{ display:none; }
.brief-strip{ background:#fff; border:1px solid #e4e9ef; border-radius:11px; overflow:hidden; }
html[data-theme="dark"] .brief-strip{ background:#161b22; border-color:#2a323c; color:#e6ecf3; }
.brief-strip .bs-line{ display:flex; align-items:center; gap:10px; padding:11px 13px; }
.bs-dot{ width:8px; height:8px; border-radius:50%; flex:none; background:#c23b2a; }
.bs-dot.ok{ background:#167c4a; }
html[data-theme="dark"] .bs-dot{ background:#f26d5b; } html[data-theme="dark"] .bs-dot.ok{ background:#3fbe7e; }
.bs-when{ flex:none; font-size:.71rem; color:#8a97a6; font-family:"IBM Plex Mono","Consolas",monospace; }
.bs-msg{ flex:1; min-width:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; font-size:.85rem; font-weight:700; color:#1a2430; }
html[data-theme="dark"] .bs-msg{ color:#e6ecf3; }
.bs-msg b{ font-weight:900; }
.bs-chips{ display:flex; gap:6px; flex:none; }
.bs-chip{ font-size:.69rem; font-weight:800; padding:3px 9px; border-radius:999px; white-space:nowrap; }
.bs-chip.bad{ background:#fbe7e3; color:#c23b2a; } .bs-chip.warn{ background:#f8efd8; color:#8a6200; }
html[data-theme="dark"] .bs-chip.bad{ background:#2c1a17; color:#f26d5b; }
html[data-theme="dark"] .bs-chip.warn{ background:#2a2214; color:#d9a441; }
.bs-more{ flex:none; border:0; background:none; color:#1e5edc; font:inherit; font-size:.75rem; font-weight:800; cursor:pointer; padding:2px 4px; white-space:nowrap; }
html[data-theme="dark"] .bs-more{ color:#4d9bff; }
.bs-exp{ display:none; border-top:1px solid #e4e9ef; padding:12px 13px; }
html[data-theme="dark"] .bs-exp{ border-color:#2a323c; }
.brief-strip[data-open="1"] .bs-exp{ display:block; }
.bs-h{ font-size:.64rem; letter-spacing:.1em; text-transform:uppercase; color:#8a97a6; font-weight:800; margin:2px 0 7px; }
.bs-h:not(:first-child){ margin-top:14px; }
.bs-h b{ color:#1e5edc; } html[data-theme="dark"] .bs-h b{ color:#4d9bff; }
.bs-cards{ display:grid; grid-template-columns:1fr 1fr; gap:9px; }
.bs-normal{ font-size:.82rem; color:#5b6b7c; padding:8px 0 0; } html[data-theme="dark"] .bs-normal{ color:#9aa7b6; }
.bs-total{ font-size:.83rem; color:#5b6b7c; margin-top:12px; padding-top:10px; border-top:1px solid #e4e9ef; }
html[data-theme="dark"] .bs-total{ color:#9aa7b6; border-color:#2a323c; }
.bs-total b{ font-weight:800; color:#1a2430; } html[data-theme="dark"] .bs-total b{ color:#e6ecf3; }
.bs-allok{ font-size:.85rem; color:#5b6b7c; text-align:center; padding:4px 0; }
/* 폰: 아주 좁게, 스크롤해도 위에 붙음, when·chips 숨김 */
@media (max-width:720px){
  #briefHome .brief-strip{ position:sticky; top:0; z-index:6; border-radius:10px; }
  #briefHome .bs-line{ padding:9px 12px; gap:8px; }
  #briefHome .bs-when{ display:none; }
  #briefHome .bs-msg{ font-size:.8rem; }
  #briefHome .bs-chips{ display:none; }
  .bs-cards{ grid-template-columns:1fr; }
}

/* ══ v1.0.67~69 — 대시보드 블럭 그리드 (모든 역할 대시보드의 유일한 레이아웃) ══════
   부품 = .dblk · 크기 = sz-sm(4칸)/md(6)/lg(8)/full(12) · 12칸 그리드 · ≤960px 전부 세로 1줄.
   패널 겉모습(.v119-panel / .v119-kpi / .v123-ceo .v119-panel …)·다크테마는 기존 규칙을 그대로 물려받는다.
   v1.0.69: 옛 행/열 그리드(.v119-grid.* / .v123-grid.*)는 삭제. 남은 옛 역할별 grid-template-rows
   (.v119-dashboard.ceo/.admin/.manager · .v123-ceo 의 mega-line 안)는 아래 reset 으로 무력화됨 —
   mega-line 편집 위험이 커서 선언만 죽여 두고 실제 제거는 추후. */
/* 블럭 대시보드는 rigid 한 옛 grid-template-rows(역할별 고정 픽셀 높이)를 쓰지 않는다 — 내용 높이대로 흐른다. */
.v119-dashboard.dash-blocks{ display:block !important; height:auto !important; grid-template-rows:none !important; overflow:visible !important; }
.v119-dashboard-host:has(.dash-blocks){ overflow:auto !important; height:auto !important; min-height:0 !important; }
.dash-blocks .dblk-grid{ display:grid; grid-template-columns:repeat(12,1fr); gap:16px; align-items:start; }
.dash-blocks .dblk{ min-width:0; display:flex; }
.dash-blocks .dblk > .v119-panel{ flex:1; height:100%; }
.dash-blocks .dblk-bare{ display:block; }
.dash-blocks .dblk.sz-sm{ grid-column:span 4; }
.dash-blocks .dblk.sz-md{ grid-column:span 6; }
.dash-blocks .dblk.sz-lg{ grid-column:span 8; }
.dash-blocks .dblk.sz-full{ grid-column:1 / -1; }
.dash-blocks .dblk-bare .v119-kpis{ margin:0; }
@media (max-width:960px){
  .dash-blocks .dblk-grid{ grid-template-columns:1fr; gap:13px; }
  .dash-blocks .dblk[class*="sz-"]{ grid-column:1 / -1; }
}

/* ══ v1.0.71 — 대표 홈 재설계 (ceo2) ══════════════════════════════════════════
   가독성 중심. 노란 둥근 테두리 없음. 상태 = ○ △ ✕ 글자, 숫자 = 큰 고정폭.
   .dash-blocks.ceo (PC 대시보드) 와 .ceo2-mobile (폰 홈) 두 곳에서 같은 조각을 씀.
   관리자·소장 화면은 안 건드린다. */
.dash-blocks, .ceo2{
  --c2-ink:#1b232e; --c2-mut:#5c6672; --c2-faint:#8b939d;
  --c2-line:#e4ded4; --c2-line2:#efeae1; --c2-surf:#ffffff; --c2-raise:#faf8f4;
  --c2-accent:#1f5f8b; --c2-ok:#1f7a4d; --c2-warn:#a9741a; --c2-bad:#bd3b3b;
  /* 비중 도넛 6색. 색맹이어도 밝기 차이로 구분되게 명도를 벌려 놓는다. */
  --c3-p1:#1f5f8b; --c3-p2:#7fb2d4; --c3-p3:#2f8f6b; --c3-p4:#d99a2b; --c3-p5:#8f6bb5; --c3-p6:#9aa7b6;
  font-family:"IBM Plex Sans KR","Malgun Gothic",system-ui,sans-serif;
}
html[data-theme="dark"] .dash-blocks, html[data-theme="dark"] .ceo2{
  --c2-ink:#e8ebef; --c2-mut:#9aa4b0; --c2-faint:#727d89;
  --c2-line:#2a3037; --c2-line2:#242a31; --c2-surf:#1b1f26; --c2-raise:#20252d;
  --c2-accent:#63a8d6; --c2-ok:#4bbd82; --c2-warn:#d6a24e; --c2-bad:#e0665f;
  --c3-p1:#63a8d6; --c3-p2:#2f6f99; --c3-p3:#4bbd82; --c3-p4:#d6a24e; --c3-p5:#a98fd0; --c3-p6:#7b8794;
}
.ceo2-num{ font-family:"IBM Plex Mono",ui-monospace,"Consolas",monospace; font-variant-numeric:tabular-nums; letter-spacing:-.01em; }

/* --- PC 대시보드 패널 껍데기: 얇은 테두리, 조용한 머리글 --- */
.v119-dashboard.dash-blocks .dblk-grid{ gap:14px !important; }
.v119-dashboard.dash-blocks .v119-panel{ border:1px solid var(--c2-line) !important; border-radius:12px !important; background:var(--c2-surf) !important; box-shadow:none !important; }
.v119-dashboard.dash-blocks .v119-panel > header{ height:auto !important; min-height:0 !important; padding:13px 15px 9px !important; background:transparent !important; border-bottom:1px solid var(--c2-line2) !important; align-items:baseline !important; }
.v119-dashboard.dash-blocks .v119-panel > header strong{ font-size:12px !important; font-weight:600 !important; letter-spacing:.05em !important; text-transform:uppercase !important; color:var(--c2-mut) !important; }
.v119-dashboard.dash-blocks .v119-panel > header small{ font-size:11px !important; color:var(--c2-faint) !important; font-weight:400 !important; }
.v119-dashboard.dash-blocks .v119-panel > header button{ font-size:11px !important; color:var(--c2-accent) !important; font-weight:500 !important; }
.v119-dashboard.dash-blocks .v119-panel > *:not(header){ padding:13px 15px 16px !important; overflow:visible !important; max-height:none !important; }
.v119-dashboard.dash-blocks .v119-titlebar h1{ font-family:"IBM Plex Sans KR","Malgun Gothic",sans-serif; font-weight:700; letter-spacing:-.02em; }

/* --- 폰 홈 wrapper --- */
.ceo2-mobile{ display:flex; flex-direction:column; gap:22px; }
.ceo2-mod > h3{ font-size:11.5px; font-weight:600; letter-spacing:.06em; text-transform:uppercase; color:var(--c2-mut); margin:0 0 10px; }

/* --- 아침 보고 표 --- */
.ceo2-mx{ display:flex; flex-direction:column; }
.ceo2-mx-head{ display:grid; grid-template-columns:1fr repeat(4,24px) 42px; gap:0 8px; padding:0 2px 8px; font-size:10px; color:var(--c2-faint); letter-spacing:.03em; }
.ceo2-mx-head span:not(:first-child){ text-align:center; }
.ceo2-mx-row{ display:grid; grid-template-columns:1fr repeat(4,24px) 42px; gap:0 8px; align-items:center; padding:11px 2px; border-top:1px solid var(--c2-line2); text-decoration:none; color:var(--c2-ink); }
.ceo2-mx-row:first-of-type{ border-top:1px solid var(--c2-line); }
.ceo2-st{ display:flex; flex-direction:column; gap:1px; min-width:0; }
.ceo2-st b{ font-size:14px; font-weight:600; }
.ceo2-st small{ font-size:11px; color:var(--c2-faint); }
.ceo2-mx-row.clear .ceo2-st b{ color:var(--c2-mut); font-weight:500; }
.ceo2-cell{ justify-self:center; font-size:13px; font-weight:700; font-style:normal; line-height:1; }
.ceo2-cell.ok{ color:var(--c2-ok); } .ceo2-cell.warn{ color:var(--c2-warn); } .ceo2-cell.bad{ color:var(--c2-bad); }
.ceo2-instruct{ justify-self:end; font-size:11px; font-weight:600; color:var(--c2-accent); border:1px solid var(--c2-line); border-radius:999px; padding:4px 9px; }
.ceo2-legend{ display:flex; gap:14px; padding:11px 2px 0; font-size:11px; color:var(--c2-faint); }
.ceo2-legend span{ display:flex; align-items:center; gap:4px; }
.ceo2-legend .ceo2-cell{ font-size:12px; }

/* --- 봐야 할 곳 --- */
.ceo2-exc{ display:flex; flex-direction:column; gap:9px; }
.ceo2-exc-card{ border:1px solid var(--c2-line); border-top:3px solid var(--c2-bad); border-radius:12px; background:var(--c2-raise); padding:11px 12px; display:flex; flex-direction:column; gap:8px; box-shadow:0 2px 8px rgba(24,53,86,.04); }
.ceo2-exc-card.warn{ border-top-color:var(--c2-warn); }
.ceo2-exc-top{ display:flex; align-items:baseline; justify-content:space-between; gap:10px; }
.ceo2-exc-top b{ font-size:13.5px; font-weight:600; color:var(--c2-ink); }
.ceo2-exc-top .ceo2-num{ font-size:11.5px; color:var(--c2-mut); }
.ceo2-exc-card p{ margin:0; font-size:12.5px; color:var(--c2-mut); line-height:1.5; }
.ceo2-exc-acts{ display:flex; gap:7px; flex-wrap:wrap; }
.ceo2-act{ font-family:inherit; font-size:11.5px; font-weight:600; padding:7px 11px; border-radius:7px; cursor:pointer; border:1px solid var(--c2-accent); background:var(--c2-accent); color:#fff; }
.ceo2-act.ghost{ background:transparent; color:var(--c2-accent); }
.ceo2-quiet{ font-size:12.5px; color:var(--c2-faint); padding:2px; }
.ceo2-empty{ font-size:12px; color:var(--c2-faint); padding:6px 2px; }

/* --- 오늘 숫자 --- */
.ceo2-figs{ display:grid; grid-template-columns:repeat(2,1fr); gap:15px 18px; }
.ceo2-fig{ display:flex; flex-direction:column; gap:3px; text-decoration:none; color:var(--c2-ink); }
.ceo2-k{ font-size:10px; letter-spacing:.05em; text-transform:uppercase; color:var(--c2-faint); }
.ceo2-v{ font-size:20px; font-weight:600; letter-spacing:-.01em; }
.ceo2-v.attn{ color:var(--c2-warn); }
.ceo2-v small{ font-size:11px; color:var(--c2-faint); font-weight:400; margin-left:4px; }
@media (min-width:960px){ .dash-blocks .ceo2-figs{ grid-template-columns:repeat(4,1fr); } }

/* --- 매출 순위 --- */
.ceo2-rank{ display:flex; flex-direction:column; }
.ceo2-rank-row{ display:grid; grid-template-columns:18px 1fr 70px auto; gap:10px; align-items:center; padding:9px 2px; border-top:1px solid var(--c2-line2); text-decoration:none; color:var(--c2-ink); font-size:13px; }
.ceo2-rank-row:first-child{ border-top:0; }
.ceo2-rk{ font-size:11px; color:var(--c2-faint); text-align:center; }
.ceo2-rk-name{ font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ceo2-rk-bar{ height:5px; background:var(--c2-line2); border-radius:3px; overflow:hidden; }
.ceo2-rk-bar i{ display:block; height:100%; background:var(--c2-accent); }
.ceo2-rk-val{ font-size:12px; color:var(--c2-mut); text-align:right; white-space:nowrap; }
.ceo2-rk-val small{ margin-left:4px; color:var(--c2-faint); }

/* --- 주변시세 --- */
.ceo2-price{ display:flex; flex-direction:column; }
.ceo2-price-sum{ font-size:12.5px; color:var(--c2-mut); padding:0 2px 10px; }
.ceo2-price-sum b{ color:var(--c2-ink); font-weight:600; }
.ceo2-price-row{ display:flex; align-items:center; justify-content:space-between; gap:10px; padding:9px 2px; border-top:1px solid var(--c2-line2); text-decoration:none; color:var(--c2-ink); }
.ceo2-price-name{ font-size:13px; font-weight:600; white-space:nowrap; }
.ceo2-price-fuels{ display:flex; gap:12px; }
.ceo2-price-f{ font-size:11px; color:var(--c2-faint); white-space:nowrap; }
.ceo2-price-f b{ font-size:12px; }
.ceo2-price-f.bad b{ color:var(--c2-bad); } .ceo2-price-f.ok b{ color:var(--c2-ok); }

/* v1.0.71 — 폰 홈: ceo2 모듈이 들어오면 stats 그리드를 풀고, 옛 노란 상단 테두리를 조용한 왼쪽 선으로 */
.mobile-home-stats:has(.ceo2-mobile){ display:block !important; margin-bottom:0 !important; }
.mobile-stat{ border-top-width:1px !important; border-top-color:#dbe3ec !important; box-shadow:none !important; border-left:2px solid #c7d0dc !important; border-radius:8px !important; }
.mobile-stat.has{ border-left-color:#5b7a9c !important; }
html[data-theme="dark"] .mobile-stat{ border-top-color:#2a3037 !important; border-left-color:#3a424c !important; }
html[data-theme="dark"] .mobile-stat.has{ border-left-color:#63a8d6 !important; }

/* v1.0.72 — 대표 홈 = 대시보드. KPI 카드 + 주유소별 현황 카드. 독촉/지시 버튼 제거. */
.ceo2-kpis{ display:grid; grid-template-columns:repeat(2,1fr); gap:10px; }
@media (min-width:720px){ .ceo2-kpis{ grid-template-columns:repeat(4,1fr); } }
.ceo2-kpi{ display:flex; flex-direction:column; gap:3px; padding:13px 14px; border:1px solid var(--c2-line); border-radius:11px; background:var(--c2-surf); text-decoration:none; color:var(--c2-ink); }
.ceo2-kpi-k{ font-size:10.5px; letter-spacing:.05em; text-transform:uppercase; color:var(--c2-faint); }
.ceo2-kpi strong{ font-size:21px; font-weight:600; letter-spacing:-.02em; line-height:1.15; }
.ceo2-kpi strong small{ font-size:12px; color:var(--c2-faint); font-weight:400; }
.ceo2-kpi-sub{ font-size:11px; color:var(--c2-faint); }
.ceo2-kpi.warn strong{ color:var(--c2-warn); }

.ceo2-scards{ display:grid; grid-template-columns:repeat(2,1fr); gap:9px; }
@media (min-width:720px){ .dash-blocks .ceo2-scards{ grid-template-columns:repeat(3,1fr); } }
.ceo2-scard{ display:flex; flex-direction:column; gap:8px; padding:12px 13px; border:1px solid var(--c2-line); border-radius:10px; background:var(--c2-surf); text-decoration:none; color:var(--c2-ink); }
.ceo2-sc-top{ display:flex; align-items:baseline; justify-content:space-between; gap:8px; }
.ceo2-sc-top b{ font-size:13.5px; font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ceo2-sc-top .ceo2-num{ font-size:12.5px; color:var(--c2-mut); }
.ceo2-sc-mid{ display:flex; align-items:center; justify-content:space-between; gap:8px; }
.ceo2-sc-dots{ display:flex; gap:5px; }
.ceo2-sc-dot{ width:9px; height:9px; border-radius:50%; }
.ceo2-sc-dot.ok{ background:var(--c2-ok); } .ceo2-sc-dot.warn{ background:var(--c2-warn); } .ceo2-sc-dot.bad{ background:var(--c2-bad); }
.ceo2-sc-risk{ font-size:10.5px; font-weight:600; color:var(--c2-bad); }
.ceo2-sc-ok{ font-size:10.5px; color:var(--c2-faint); }

.ceo2-mx-head, .ceo2-mx-row{ grid-template-columns:1fr repeat(4,26px) 14px !important; }
.ceo2-mx-go, .ceo2-exc-go{ justify-self:end; color:var(--c2-faint); font-size:13px; }

.ceo2-exc{ display:flex; flex-direction:column; }
.ceo2-exc-row{ display:grid; grid-template-columns:auto 1fr auto; gap:10px; align-items:center; padding:10px 2px; border-top:1px solid var(--c2-line2); text-decoration:none; color:var(--c2-ink); }
.ceo2-exc-row:first-child{ border-top:0; }
.ceo2-exc-nm{ font-size:13px; font-weight:600; white-space:nowrap; }
.ceo2-exc-nm::before{ content:""; display:inline-block; width:6px; height:6px; border-radius:50%; margin-right:7px; vertical-align:1px; background:var(--c2-bad); }
.ceo2-exc-row.warn .ceo2-exc-nm::before{ background:var(--c2-warn); }
.ceo2-exc-rs{ font-size:12px; color:var(--c2-mut); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

/* v1.0.72 — KPI 카드: 숫자 아닌 값("원가 대기")은 본문 글꼴로, 글자 넓게 벌어지지 않게 */
.ceo2-kpi strong.ceo2-txt{ font-family:"IBM Plex Sans KR","Malgun Gothic",sans-serif; font-size:19px; font-weight:600; letter-spacing:-.01em; }
.ceo2-kpi strong.ceo2-num{ letter-spacing:0; }

/* ══ v1.0.74 — 그래프 대시보드 (ceo3). 나이 있는 분들이 그림으로 본다: 큰 막대·도넛·링 + 값 표시 ══ */
.ceo2 .ceo3-empty, .dash-blocks .ceo3-empty{ font-size:12.5px; color:var(--c2-faint); padding:14px 4px; }

/* 매출 추이 */
.ceo3-trend{ display:flex; flex-direction:column; gap:12px; }
.ceo3-trend-head{ display:flex; align-items:baseline; gap:12px; }
.ceo3-trend-head b{ font-size:24px; font-weight:700; color:var(--c2-ink); }
.ceo3-delta{ font-size:12.5px; font-weight:600; }
.ceo3-delta.up{ color:var(--c2-ok); } .ceo3-delta.dn{ color:var(--c2-bad); }
.ceo3-trend-plot{ position:relative; display:flex; align-items:flex-end; gap:5px; height:150px; padding-top:18px; }
.ceo3-bar{ position:relative; flex:1; min-width:0; height:100%; display:flex; flex-direction:column; justify-content:flex-end; align-items:center; }
.ceo3-bar > i{ width:min(26px,80%); background:var(--c2-accent); border-radius:3px 3px 0 0; display:block; min-height:3px; }
.ceo3-bar > b{ position:absolute; top:-2px; font-size:10px; font-weight:600; color:var(--c2-mut); white-space:nowrap; }
.ceo3-bar > small{ margin-top:5px; font-size:10px; color:var(--c2-faint); }
.ceo3-trend-line{ position:absolute; left:0; right:0; top:18px; bottom:16px; width:100%; height:calc(100% - 34px); pointer-events:none; overflow:visible; }
.ceo3-trend-line polyline{ fill:none; stroke:var(--c2-ink); stroke-width:1.6; opacity:.35; vector-effect:non-scaling-stroke; }

/* 주유소별 가로 막대 */
.ceo3-bars{ display:flex; flex-direction:column; gap:10px; }
.ceo3-bar-row{ display:grid; grid-template-columns:84px 1fr auto; gap:10px; align-items:center; text-decoration:none; color:var(--c2-ink);
  width:100%; border:0; background:none; padding:2px 0; font:inherit; text-align:left; }
button.ceo3-bar-row{ cursor:pointer; border-radius:6px; }
button.ceo3-bar-row:hover .ceo3-bar-track i{ filter:brightness(1.12); }
button.ceo3-bar-row:focus-visible{ outline:2px solid var(--c2-accent); outline-offset:2px; }
.ceo3-bar-nm{ font-size:12.5px; font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ceo3-bar-track{ height:16px; background:var(--c2-line2); border-radius:5px; overflow:hidden; }
.ceo3-bar-track i{ display:block; height:100%; background:var(--c2-accent); border-radius:5px; }
.ceo3-bar-v{ font-size:12px; color:var(--c2-mut); text-align:right; white-space:nowrap; font-weight:600; }

/* 도넛 */
.ceo3-donutwrap{ display:flex; gap:16px; align-items:center; flex-wrap:wrap; }
.ceo3-donut{ width:112px; height:112px; border-radius:50%; flex:none; display:grid; place-items:center; position:relative; }
.ceo3-donut::after{ content:""; position:absolute; inset:22px; border-radius:50%; background:var(--c2-surf); }
.ceo3-donut > span{ position:relative; z-index:1; text-align:center; display:grid; gap:1px; }
.ceo3-donut b{ font-size:15px; font-weight:700; color:var(--c2-ink); }
.ceo3-donut small{ font-size:9.5px; color:var(--c2-faint); }
.ceo3-legend{ list-style:none; margin:0; padding:0; display:grid; gap:6px; flex:1; min-width:120px; }
.ceo3-legend li{ display:grid; grid-template-columns:10px 1fr auto; gap:8px; align-items:center; font-size:12px; color:var(--c2-mut); }
.ceo3-legend i{ width:10px; height:10px; border-radius:3px; }
.ceo3-legend b{ font-weight:600; color:var(--c2-ink); }

/* 아침 보고 진행 링 */
.ceo3-ringwrap{ display:flex; gap:16px; align-items:center; }
.ceo3-ring{ width:104px; height:104px; border-radius:50%; flex:none; display:grid; place-items:center; position:relative; }
.ceo3-ring::after{ content:""; position:absolute; inset:14px; border-radius:50%; background:var(--c2-surf); }
.ceo3-ring > span{ position:relative; z-index:1; text-align:center; display:grid; gap:1px; }
.ceo3-ring b{ font-size:22px; font-weight:700; color:var(--c2-ink); }
.ceo3-ring b small{ font-size:12px; color:var(--c2-faint); font-weight:400; }
.ceo3-ring > span small{ font-size:10px; color:var(--c2-faint); }
.ceo3-ring-side b{ display:block; font-size:14px; font-weight:600; color:var(--c2-ink); }
.ceo3-ring-side span{ font-size:12px; color:var(--c2-mut); }

/* 탱크 게이지 */
.ceo3-tanks{ display:flex; flex-direction:column; gap:9px; }
.ceo3-tank{ display:grid; grid-template-columns:1fr 90px 36px; gap:10px; align-items:center; font-size:12px; }
.ceo3-tank-nm{ color:var(--c2-ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ceo3-tank-track{ position:relative; height:12px; background:var(--c2-line2); border-radius:4px; overflow:hidden; }
.ceo3-tank-track i{ display:block; height:100%; background:var(--c2-accent); }
/* 발주선(안전재고) 눈금 — 막대가 이 선 아래로 내려오면 주문할 때다 */
.ceo3-tank-track u{ position:absolute; top:-1px; bottom:-1px; width:2px; background:var(--c2-ink); opacity:.45; }
.ceo3-tank.low .ceo3-tank-track i{ background:var(--c2-bad); }
.ceo3-tank.low .ceo3-tank-nm, .ceo3-tank.low .ceo3-tank-v{ color:var(--c2-bad); font-weight:600; }
.ceo3-tank-v{ text-align:right; color:var(--c2-mut); font-weight:600; }

/* 주변시세 (0선 기준 좌우 막대) */
.ceo3-price{ display:flex; flex-direction:column; gap:9px; }
.ceo3-price-row{ display:grid; grid-template-columns:80px 1fr 34px; gap:10px; align-items:center; font-size:12px; }
.ceo3-price-nm{ white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
/* 어느 유종 기준인지 이름 옆에 작게 */
.ceo3-price-nm em{ font-style:normal; color:var(--c2-faint); font-size:10.5px; margin-left:5px; }
.ceo3-price-axis{ position:relative; height:14px; background:var(--c2-line2); border-radius:4px; }
.ceo3-price-axis::before{ content:""; position:absolute; left:50%; top:0; bottom:0; width:1px; background:var(--c2-faint); }
.ceo3-price-axis i{ position:absolute; top:0; bottom:0; }
.ceo3-price-axis i.over{ background:var(--c2-bad); border-radius:0 4px 4px 0; }
.ceo3-price-axis i.under{ background:var(--c2-ok); border-radius:4px 0 0 4px; }
.ceo3-price-v{ text-align:right; font-weight:600; }
.ceo3-price-v.bad{ color:var(--c2-bad); } .ceo3-price-v.ok{ color:var(--c2-ok); }
.ceo3-price-foot{ font-size:10.5px; color:var(--c2-faint); margin-top:2px; }

/* KPI 카드 스파크라인 */
/* ── v1.0.75 — 메뉴 위 요약을 막대로. 홈 그래프와 같은 언어로 맞춘다 ── */
.menu-context-kpis .menu-context-kpi{ position:relative; }
.mctx-bar{ display:block; height:5px; border-radius:3px; background:#e6ebf1; overflow:hidden; margin-top:4px; }
.mctx-bar b{ display:block; height:100%; border-radius:3px; background:#c98a12; }
.menu-context-kpi.ok .mctx-bar b{ background:#168451; }
html[data-theme="dark"] .mctx-bar{ background:#242a31; }
html[data-theme="dark"] .mctx-bar b{ background:#d6a24e; }
html[data-theme="dark"] .menu-context-kpi.ok .mctx-bar b{ background:#4bbd82; }
/* 어두운 화면에서 #b96f05 / #168451 은 너무 어두워 안 읽힌다 → 밝은 쪽으로 */
html[data-theme="dark"] .menu-context-kpis .menu-context-kpi.warn strong{ color:#e0ad5c !important; }
html[data-theme="dark"] .menu-context-kpis .menu-context-kpi.ok strong{ color:#5cc98f !important; }

/* 폰에서도 메뉴마다 요약이 보이게. 예전엔 959px 아래에서 통째로 감췄다
   → 폰으로 일하는 소장·부장은 메뉴를 열어도 아무 요약이 없었다.
   위 기본 배치는 전부 @media(min-width:960px) 안에 있으니, 폰은 여기서 처음부터 짠다.
   1줄: [메뉴 이름] ......... [홈]   2줄: [숫자 막대들] */
@media(max-width:959px){
  .menu-context-strip{
    display:grid !important; grid-template-columns:1fr auto; column-gap:8px; row-gap:8px;
    margin:0 0 10px; padding:10px 12px;
    border:1px solid #dbe3ec; border-radius:12px; background:#fff;
  }
  .menu-context-title{ grid-row:1; grid-column:1; display:flex; align-items:baseline; gap:6px; min-width:0; }
  .menu-context-title>span{ font-size:.62rem; color:#1768e8; font-weight:800; white-space:nowrap; }
  .menu-context-title>strong{ font-size:.95rem; color:#17314e; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .menu-context-title>small{ display:none; }
  .menu-context-home{
    grid-row:1; grid-column:2; margin:0; align-self:center; white-space:nowrap;
    border:1px solid #bfd1e6; background:#f3f7fc; color:#145aa8;
    border-radius:8px; padding:5px 10px; font-size:.72rem; font-weight:700;
  }
  .menu-context-kpis{
    grid-row:2; grid-column:1/-1; border-left:0;
    display:grid !important; grid-auto-flow:column; grid-auto-columns:minmax(0,1fr); gap:10px;
  }
  .menu-context-kpis article,
  .menu-context-kpis .menu-context-kpi{
    border:0; border-right:0; background:none; padding:0; min-width:0;
    display:grid; gap:3px; align-content:start; text-align:left;
  }
  .menu-context-kpis span{ font-size:.62rem; color:#71879d; font-weight:700; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .menu-context-kpis strong{ font-size:1.05rem; color:#17314e; font-variant-numeric:tabular-nums; }
  .menu-context-kpis .menu-context-kpi.warn strong{ color:#b96f05; }
  .menu-context-kpis .menu-context-kpi.ok strong{ color:#168451; }
  html[data-theme="dark"] .menu-context-title>strong,
  html[data-theme="dark"] .menu-context-kpis strong{ color:#e6ecf3; }
  html[data-theme="dark"] .menu-context-home{ background:#1c222b; border-color:#2a323c; color:#8fc0ee; }
}
html[data-theme="dark"] .menu-context-strip{ background:#161b22 !important; border-color:#2a323c !important; }

/* 폰에서 도넛/링을 세로로 */
@media (max-width:520px){
  .ceo2-mobile .ceo3-donutwrap, .ceo2-mobile .ceo3-ringwrap{ flex-direction:column; align-items:flex-start; }
}

/* ── PC 전체 주유소 한눈표: 정보는 유지하고 행 높이만 줄인다 ── */
@media (min-width:960px){
  .target-station-panel .role-station-table-head{
    padding:5px 7px!important;
  }
  .target-station-panel .role-station-mini{
    min-height:66px!important;
    padding:4px 7px!important;
    gap:6px!important;
  }
  .target-station-panel .station-main-cell{
    padding:1px 3px!important;
    gap:3px!important;
  }
  .target-station-panel .station-main-title strong{
    font-size:.78rem!important;
  }
  .target-station-panel .station-main-title small{
    display:inline-block!important;
    margin:0 0 0 6px!important;
    font-size:.62rem!important;
  }
  .target-station-panel .station-main-sales{
    gap:5px!important;
  }
  .target-station-panel .station-main-sales b{
    font-size:.7rem!important;
  }
  .target-station-panel .station-tank-bars{
    gap:2px!important;
  }
  .target-station-panel .station-tank-line{
    gap:5px!important;
  }
  .target-station-panel .station-tank-track{
    height:7px!important;
  }
  .target-station-panel .station-tank-empty{
    padding:6px!important;
  }
  .target-station-panel .station-status-cells{
    gap:3px!important;
  }
  .target-station-panel .work-status-cell{
    min-height:42px!important;
    padding:3px 2px!important;
    gap:1px!important;
  }
  .target-station-panel .work-status-cell span{
    font-size:.61rem!important;
  }
  .target-station-panel .work-status-cell b{
    font-size:.68rem!important;
  }
}
@media (min-width:1200px){
  .target-station-panel .station-main-cell{
    grid-template-columns:minmax(92px,.85fr) minmax(105px,1.15fr)!important;
    align-items:center!important;
  }
}


/* v1.0.82 — 역할별 메인 메뉴 구분 + 기초 설정 우선 강조
   업무 상태색(문제/주의/정상)과 섞이지 않도록 역할 구분은 사이드바 메뉴에만 적용한다. */
@media (min-width:960px){
  #roleMenuRoot[data-menu-role="CEO"]{ --role-menu-accent:#8b6bc4; --role-menu-soft:rgba(139,107,196,.18); --role-menu-line:#bba7df; }
  #roleMenuRoot[data-menu-role="ADMIN"]{ --role-menu-accent:#2a82e8; --role-menu-soft:rgba(42,130,232,.18); --role-menu-line:#86baf4; }
  #roleMenuRoot[data-menu-role="ADMIN_FIELD"],
  #roleMenuRoot[data-menu-role="STATION_MANAGER"],
  #roleMenuRoot[data-menu-role="DEPARTMENT_HEAD"],
  #roleMenuRoot[data-menu-role="SECTION_CHIEF"]{ --role-menu-accent:#1a8d86; --role-menu-soft:rgba(26,141,134,.18); --role-menu-line:#73c7c1; }

  #roleMenuRoot[data-menu-role] .role-nav-group:first-child{
    margin-bottom:6px!important;
    padding:3px 3px 4px!important;
    border-left:3px solid var(--role-menu-line)!important;
    border-radius:5px!important;
    background:var(--role-menu-soft)!important;
  }
  #roleMenuRoot[data-menu-role] .role-nav-group:first-child>.role-nav-group-head span{
    color:var(--role-menu-line)!important;
    font-weight:900!important;
  }
  #roleMenuRoot[data-menu-role] .role-nav-group:first-child .role-nav-item.active:not(.attention){
    background:var(--role-menu-accent)!important;
    border-left-color:var(--role-menu-line)!important;
    box-shadow:0 2px 7px rgba(0,0,0,.18)!important;
  }
  #roleMenuRoot[data-menu-role] .role-nav-group:first-child .role-nav-item:hover:not(.attention){
    background:var(--role-menu-soft)!important;
  }

  /* 미완료 기초 설정은 역할색보다 우선한다. 메뉴 첫 칸에서 바로 해야 할 일로 보이게 한다. */
  .role-nav-item.attention{
    min-height:39px!important;
    background:rgba(217,45,32,.25)!important;
    border:1px solid rgba(255,111,97,.55)!important;
    border-left:4px solid #ff5a4d!important;
    box-shadow:0 0 0 1px rgba(217,45,32,.10),0 2px 8px rgba(0,0,0,.14)!important;
  }
  .role-nav-item.attention span:not(.nav-badge){ color:#ffd5d1!important; font-weight:900!important; }
  .role-nav-item.attention .role-nav-icon{ color:#ffb1aa!important; }
  .role-nav-item.attention .attention-badge{
    min-width:34px!important;
    height:19px!important;
    padding:0 6px!important;
    background:#ff5a4d!important;
    color:#fff!important;
    font-size:.58rem!important;
    letter-spacing:-.02em;
  }
}


/* ══ v1.0.83 — 버전 번호 상시 표시 보강 ══
   PC 상단바가 좁아져 기존 버전 칩이 가려져도 왼쪽 메뉴 하단에서 현재 버전을 항상 확인한다. */
.sidebar-version-chip{ display:none; }
@media (min-width:960px){
  body .sidebar-nav{ padding-bottom:184px!important; }
  body .sidebar-version-chip{
    position:absolute!important; left:8px!important; right:8px!important; bottom:148px!important;
    min-height:28px!important; display:flex!important; align-items:center!important; justify-content:center!important;
    padding:4px 8px!important; border:1px solid rgba(255,255,255,.30)!important; border-radius:5px!important;
    background:rgba(255,255,255,.96)!important; color:#07335e!important;
    font-size:11px!important; font-weight:950!important; letter-spacing:.02em!important;
    line-height:1!important; white-space:nowrap!important; z-index:8!important; cursor:pointer!important;
    box-shadow:0 2px 8px rgba(0,18,40,.22)!important;
  }
  body .sidebar-version-chip:hover{ background:#eef6ff!important; }
  body .sidebar-version-chip.stale{ background:#fff1cf!important; color:#8a5a06!important; border-color:#e6b85c!important; }
  body .topbar #versionChip{
    background:#ffffff!important; color:#173653!important; border:1px solid #cbd9e8!important;
    min-height:26px!important; padding:3px 8px!important; font-weight:950!important;
  }
}
@media (max-width:959px){
  body .sidebar-version-chip{ display:none!important; }
  body .topbar #versionChip{ display:inline-flex!important; align-items:center!important; justify-content:center!important; }
}
/* ══ v1.0.83 — 끝 ══ */

/* Data availability must not look like a successful zero-value dashboard. */
.workflow-data-warning{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:11px 13px;margin-bottom:10px;border:1px solid #e8c27a;border-top:3px solid #d97706;border-radius:12px;background:#fffaf0;color:#78350f;font-size:13px;line-height:1.5;box-shadow:0 2px 8px rgba(120,53,15,.05)}
.workflow-data-warning span{flex:1;min-width:160px;overflow-wrap:anywhere}
.workflow-data-warning button{min-height:42px;padding:8px 14px;border:1px solid #92400e;border-radius:6px;background:#fff;color:#78350f;font-weight:700;cursor:pointer}
@media(max-width:959px){.workflow-data-warning{display:grid;grid-template-columns:1fr;font-size:14px}.workflow-data-warning button{width:100%;min-height:44px}}
@media(min-width:960px){
  body .topbar > .topbar-brand-v119{display:flex!important;flex-direction:row!important;align-items:center!important;flex-wrap:nowrap!important;max-width:none!important;line-height:1.2!important;gap:8px!important}
  body .topbar > .topbar-brand-v119 strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
}
@media(max-width:959px){
  body #phoneNavTop .phone-nav-item{color:#173a5d!important;min-height:42px!important}
  body #phoneNavTop .phone-nav-item.active{background:#1768e8!important;color:#fff!important}
  body #phoneNavSub .phone-nav-item{color:#e3edfa!important;min-height:42px!important}
  body #phoneNavSub .phone-nav-item.active{background:#fff!important;color:#1554b0!important}
  body .phone-nav-item:focus-visible{outline:2px solid #e0a020;outline-offset:-2px}
}

/* ══════════════════════════════════════════════════════════════════════════════
   v1.0.93 USER-CENTERED DASHBOARD
   목적: 컴퓨터에 익숙하지 않은 사용자도 첫 화면에서 상태 → 해야 할 일 → 상세 순서로 읽는다.
   PC와 휴대폰은 같은 데이터를 쓰되, 휴대폰에서는 그래프를 접어서 업무 버튼을 먼저 보여준다.
   ══════════════════════════════════════════════════════════════════════════════ */
.v193-guide{
  --v193-accent:#1f6f4a; --v193-soft:#f2fbf6; --v193-border:#bfe2cf;
  display:grid;grid-template-columns:minmax(0,1fr) minmax(360px,.85fr);gap:14px 20px;align-items:center;
  padding:16px 18px;border:1px solid var(--v193-border);border-top:4px solid var(--v193-accent);border-radius:14px;
  background:linear-gradient(180deg,color-mix(in srgb,var(--v193-soft) 70%,#fff) 0%,#fff 100%);box-shadow:0 8px 24px rgba(22,45,72,.06);color:#17324d;
}
.v193-guide.warn{--v193-accent:#c77b09;--v193-soft:#fff9ee;--v193-border:#efd6a7}
.v193-guide.bad{--v193-accent:#c43d36;--v193-soft:#fff5f4;--v193-border:#efc3bf}
.v193-guide.unknown{--v193-accent:#738298;--v193-soft:#f6f8fa;--v193-border:#d6dde5}
.v193-guide-copy{min-width:0}.v193-guide-copy>small{display:block;margin-bottom:5px;color:#59708a;font-size:11px;font-weight:800}
.v193-guide-title{display:flex;align-items:center;gap:9px;min-width:0}.v193-guide-title>i{width:12px;height:12px;border-radius:50%;background:var(--v193-accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--v193-accent) 12%,transparent);flex:none}
.v193-guide-title>strong{font-size:21px;line-height:1.22;letter-spacing:-.035em;color:#163654;overflow-wrap:anywhere}
.v193-guide-copy>p{margin:6px 0 0;color:#50677f;font-size:13px;line-height:1.55;font-weight:600}
.v193-guide-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}
.v193-guide-actions button{min-height:44px;border:1px solid #ccd9e6;border-radius:8px;background:#fff;color:#1b4f7f;padding:0 12px;display:flex;align-items:center;justify-content:space-between;gap:8px;font:inherit;font-size:12px;font-weight:900;text-align:left;cursor:pointer}
.v193-guide-actions button:hover{border-color:#9ebbd6;background:#f8fbff}.v193-guide-actions button.primary{background:#195f9f;border-color:#195f9f;color:#fff}.v193-guide-actions button b{font-size:16px;line-height:1}
.v193-guide-legend{grid-column:1/-1;display:flex;align-items:center;gap:12px;border-top:1px solid color-mix(in srgb,var(--v193-border) 70%,#fff);padding-top:9px;font-size:10.5px;color:#66798d}
.v193-guide-legend span{display:inline-flex;align-items:center;gap:5px;font-weight:800}.v193-guide-legend span::before{content:"";width:8px;height:8px;border-radius:50%;background:#8996a6}.v193-guide-legend .ok::before{background:#218a55}.v193-guide-legend .warn::before{background:#d58b17}.v193-guide-legend .bad::before{background:#d34840}.v193-guide-legend .unknown::before{background:#8794a5}

/* 상태판: 색에 의존하지 않고 모든 칸에 한글 상태를 같이 쓴다. */
.v193-health-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;margin-bottom:8px}
.v193-health-stat{min-height:48px;padding:7px 9px;border:1px solid #dce5ee;border-radius:9px;display:grid;align-content:center;gap:2px;background:#f8fafc}.v193-health-stat>b{font-size:10.5px;color:#50657a}.v193-health-stat>em{font-style:normal;font-size:13px;font-weight:950;color:#1d7650}.v193-health-stat.ok{background:#eff9f2;border-color:#cfe7d7}.v193-health-stat.warn{background:#fff8ea;border-color:#efd9ad}.v193-health-stat.warn>em{color:#a76700}.v193-health-stat.bad{background:#fff2f1;border-color:#efc8c4}.v193-health-stat.bad>em{color:#bd3932}
.v193-health{display:flex;flex-direction:column;gap:6px}
.v193-station{width:100%;min-height:58px;display:grid;grid-template-columns:minmax(125px,1fr) 78px minmax(280px,2.2fr) 50px;align-items:center;gap:8px;padding:7px 9px;border:1px solid #e0e6ed;border-top:3px solid #36a36a;border-radius:12px;background:#fff;color:#1c354f;text-align:left;font:inherit;cursor:pointer;transition:border-color .12s ease,background .12s ease,box-shadow .12s ease;box-shadow:0 2px 8px rgba(20,41,67,.04)}
.v193-station:hover{background:#f8fbff;border-color:#bdd0e4;box-shadow:0 8px 18px rgba(20,41,67,.08)}.v193-station.warn{border-top-color:#d89424}.v193-station.bad{border-top-color:#d34a43}
.v193-station-main{display:grid;gap:2px;min-width:0}.v193-station-main>b{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.v193-station-main>small{font-size:10px;color:#74869a;font-weight:700}
.v193-station-state{justify-self:start;min-width:66px;padding:5px 6px;border-radius:7px;background:#eaf7ef;color:#167744;font-size:10.5px;font-weight:950;text-align:center;white-space:nowrap}.v193-station-state.warn{background:#fff3df;color:#a56500}.v193-station-state.bad{background:#fff0ee;color:#b6322c}
.v193-station-chips{display:grid;grid-template-columns:repeat(5,minmax(58px,1fr));gap:4px;min-width:0}
.v193-chip{min-height:34px;border:1px solid #dfe7ee;border-radius:7px;padding:4px 5px;display:grid;align-content:center;gap:1px;background:#f8fafc}.v193-chip>b{font-size:9px;color:#50657a}.v193-chip>em{font-style:normal;font-size:10px;font-weight:950;color:#1d7650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.v193-chip.warn{background:#fff8ea;border-color:#efd9ad}.v193-chip.warn>em{color:#a76700}.v193-chip.bad{background:#fff2f1;border-color:#efc8c4}.v193-chip.bad>em{color:#bd3932}.v193-chip.unknown{background:#f2f4f7;border-color:#dce1e7}.v193-chip.unknown>em{color:#657387}
.v193-go{justify-self:end;color:#176ac7;font-size:10px;white-space:nowrap}.v193-health-more{margin-top:7px;color:#53687d;font-size:10.5px;line-height:1.45}.v193-health-more b{color:#1f4e7b}.v193-help{margin-top:6px;color:#718195;font-size:10px;line-height:1.45}.v193-help b{color:#4e6074}
.v193-empty{min-height:74px;display:grid;place-content:center;gap:3px;text-align:center;color:#66798e}.v193-empty>b{font-size:13px;color:#3c5269}.v193-empty>span{font-size:11px}

/* 현장 역할: 해야 할 일을 번호 순서로 크게 보여준다. */
.v193-steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:12px}.v193-steps>section{border:1px solid #e0e6ed;border-radius:10px;overflow:hidden;background:#fff}.v193-steps>section>header{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;background:#f7f9fc;border-bottom:1px solid #e7ecf2}.v193-steps>section>header>b{font-size:13px;color:#24415d}.v193-steps>section>header>span{font-size:10.5px;font-weight:950;padding:4px 8px;border-radius:999px;background:#fff1db;color:#a86700}.v193-steps>section>header>span.ok{background:#e9f7ef;color:#167a46}
.v193-steps>section>div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;padding:9px}.v193-steps button{min-height:66px;border:1px solid #dce5ee;border-radius:8px;background:#fff;display:grid;grid-template-columns:34px 1fr auto;align-items:center;gap:8px;padding:8px 9px;text-align:left;color:#23405c;font:inherit;cursor:pointer}.v193-steps button.pending{border-color:#efce9c;background:#fffaf1}.v193-steps button.done{background:#f7faf8;color:#667a6d}.v193-steps button>i{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;background:#eaf2fd;color:#176ac7;font-style:normal;font-size:13px;font-weight:950}.v193-steps button.pending>i{background:#fff0d3;color:#aa6800}.v193-steps button.done>i{background:#e8f6ee;color:#168049}.v193-steps button>span{display:grid;gap:2px;min-width:0}.v193-steps button>span>b{font-size:12px}.v193-steps button>span>small{font-size:9.5px;color:#76879a}.v193-steps button>em{font-style:normal;font-size:10.5px;font-weight:900;color:#176ac7;white-space:nowrap}.v193-steps button.done>em{color:#268454}

/* v1.0.93: 대시보드의 한글 제목은 작고 희미한 영문식 헤더가 아니라 바로 읽히게. */
.v119-dashboard.dash-blocks .v119-panel>header{padding:12px 14px 10px!important;align-items:center!important}
.v119-dashboard.dash-blocks .v119-panel>header strong{font-size:14px!important;font-weight:900!important;letter-spacing:-.02em!important;text-transform:none!important;color:#243f5a!important}
.v119-dashboard.dash-blocks .v119-panel>header small{font-size:10px!important;font-weight:700!important;color:#7a8a9a!important}
.v119-dashboard.dash-blocks .v119-panel>header button{min-height:30px!important;border-radius:7px!important;font-size:10.5px!important;font-weight:850!important}
.v119-dashboard.dash-blocks .dblk-grid{gap:12px!important}.v119-dashboard.dash-blocks .v119-titlebar{margin-bottom:4px!important}.v119-dashboard.dash-blocks .v119-titlebar span{font-size:11px!important}.v119-dashboard.dash-blocks .v119-titlebar h1{font-size:21px!important}.v119-dashboard.dash-blocks .v119-titlebar h1 small{font-size:12px!important;color:#6f8194!important;font-weight:700!important;margin-left:5px}
.ceo2-kpi{min-height:88px;justify-content:center;padding:12px 14px}.ceo2-kpi-k{font-size:11px!important;font-weight:850!important}.ceo2-kpi strong{font-size:23px!important;line-height:1.1!important}.ceo2-kpi-sub{font-size:10.5px!important;line-height:1.25!important}

/* 역할별로 상태판 첫인상만 구분. 메뉴/권한 색과 충돌하지 않게 옅게 사용한다. */
.dash-blocks.ceo .v193-guide:not(.bad):not(.warn):not(.unknown){--v193-accent:#315f9f;--v193-soft:#f4f8ff;--v193-border:#c7d8ee}
.dash-blocks.admin .v193-guide:not(.bad):not(.warn):not(.unknown){--v193-accent:#42627f;--v193-soft:#f5f8fb;--v193-border:#ced9e4}
.dash-blocks.manager .v193-guide:not(.bad):not(.warn):not(.unknown){--v193-accent:#218454;--v193-soft:#f1faf5;--v193-border:#c4e3d1}

/* 휴대폰: 그래프를 먼저 보여 주고, 상태 목록은 접어서 본다. */
.v193-mobile-dashboard{gap:12px!important}.v193-mobile-dashboard>.ceo2-mod,.v193-mobile-graphs>.ceo2-mod{margin:0;padding:0}.v193-mobile-dashboard>.ceo2-mod>h3,.v193-mobile-graphs>.ceo2-mod>h3{margin:0 0 7px;font-size:12px;letter-spacing:-.01em;text-transform:none;color:#405a74;font-weight:900}
.v193-guide.mobile{display:block;padding:13px 12px;border-radius:12px;border-top-width:4px}.v193-guide.mobile .v193-guide-title>strong{font-size:18px}.v193-guide.mobile .v193-guide-copy>p{font-size:12px;line-height:1.45}.v193-guide.mobile .v193-guide-actions{margin-top:11px;grid-template-columns:repeat(2,minmax(0,1fr))}.v193-guide.mobile .v193-guide-actions button{min-height:48px;font-size:12px;padding:0 10px}.v193-guide.mobile .v193-guide-legend{margin-top:10px;padding-top:8px;gap:9px;flex-wrap:wrap;font-size:9.5px}
.v193-mobile-kpis .ceo2-kpis{gap:6px}.v193-mobile-kpis .ceo2-kpi{min-height:78px;padding:10px 11px;border-radius:9px}.v193-mobile-kpis .ceo2-kpi strong{font-size:18px!important}.v193-mobile-kpis .ceo2-kpi-k{font-size:9.5px!important}.v193-mobile-kpis .ceo2-kpi-sub{font-size:9px!important}
.v193-mobile-graphs{display:grid;gap:10px}.v193-mobile-graphs .ceo2-mod{padding:12px;border:1px solid #e5ebf1;border-radius:10px;background:#fff}.v193-mobile-graphs .ceo3-trend-plot{height:128px}
.v193-mobile-dashboard .v193-health-summary{grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}.v193-mobile-dashboard .v193-health-stat{min-height:44px;padding:6px 7px}.v193-mobile-dashboard .v193-health-stat>b{font-size:9px}.v193-mobile-dashboard .v193-health-stat>em{font-size:11.5px}
.v193-mobile-dashboard .v193-health{gap:6px}.v193-mobile-dashboard .v193-station{display:grid;grid-template-columns:1fr auto;gap:6px;padding:8px 8px;min-height:0;border-radius:9px}.v193-mobile-dashboard .v193-station-main>b{font-size:12.5px}.v193-mobile-dashboard .v193-station-main>small{font-size:9.2px}.v193-mobile-dashboard .v193-station-state{grid-column:2;grid-row:1;min-width:60px;font-size:9.2px;padding:4px 5px}.v193-mobile-dashboard .v193-station-chips{grid-column:1/-1;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px}.v193-mobile-dashboard .v193-chip{min-height:34px;padding:4px 3px;text-align:center}.v193-mobile-dashboard .v193-chip>b{font-size:8px}.v193-mobile-dashboard .v193-chip>em{font-size:8.8px}.v193-mobile-dashboard .v193-go{grid-column:1/-1;justify-self:end;font-size:9px}.v193-mobile-dashboard .v193-help,.v193-mobile-dashboard .v193-health-more{font-size:8.7px;margin-top:5px}
.v193-mobile-dashboard .v193-steps{display:block}.v193-mobile-dashboard .v193-steps>section{margin-bottom:8px}.v193-mobile-dashboard .v193-steps>section>div{grid-template-columns:1fr;gap:6px;padding:7px}.v193-mobile-dashboard .v193-steps button{min-height:58px;grid-template-columns:31px 1fr auto;padding:7px}.v193-mobile-dashboard .v193-steps button>i{width:28px;height:28px}.v193-mobile-dashboard .v193-steps button>span>b{font-size:11.5px}
.v193-mobile-more{border:1px solid #dce5ee;border-radius:10px;background:#fff;overflow:hidden}.v193-mobile-more>summary{min-height:46px;display:flex;align-items:center;justify-content:space-between;padding:0 12px;color:#23547d;font-size:12px;font-weight:900;cursor:pointer;list-style:none}.v193-mobile-more>summary::-webkit-details-marker{display:none}.v193-mobile-more>summary::after{content:"펼치기 ＋";font-size:10px;color:#6c7f92}.v193-mobile-more[open]>summary{border-bottom:1px solid #e6ebf0}.v193-mobile-more[open]>summary::after{content:"접기 －"}.v193-mobile-more>.ceo2-mod{padding:12px;border-bottom:1px solid #eef2f5}.v193-mobile-more>.ceo2-mod:last-child{border-bottom:0}.v193-mobile-more .ceo3-trend-plot{height:120px}.v193-mobile-more .ceo3-bar>small{font-size:9px}

/* 직원 폰도 큰 동작 버튼과 분명한 글자로 통일한다. */
@media(max-width:959px){
  .mobile-action-grid button,.mobile-work-actions button{min-height:76px!important;border-radius:10px!important}.mobile-action-grid button strong,.mobile-work-actions button strong{font-size:.76rem!important;line-height:1.25!important}.mobile-alert-list button{min-height:58px!important}.mobile-alert-list strong{font-size:.72rem!important}.mobile-alert-list small{font-size:.62rem!important;line-height:1.35!important}
  .brief-strip .bs-line{padding:10px 9px!important;gap:7px!important}.brief-strip .bs-msg{font-size:11px!important;line-height:1.35!important}.brief-strip .bs-more{min-width:54px!important;font-size:9.5px!important}
}
@media(max-width:560px){
  .v193-guide.mobile .v193-guide-actions{grid-template-columns:1fr 1fr}.v193-mobile-dashboard .v193-station-chips{grid-template-columns:repeat(3,minmax(0,1fr))}.v193-mobile-kpis .ceo2-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.mobile-home-head h1{font-size:1.18rem!important}.mobile-home-head p{font-size:.68rem!important;line-height:1.4!important}
}
@media(min-width:960px) and (max-width:1280px){
  .v193-guide{grid-template-columns:1fr}.v193-guide-actions{grid-template-columns:repeat(4,minmax(0,1fr))}.v193-station{grid-template-columns:125px 74px 1fr 48px}.v193-station-chips{grid-template-columns:repeat(5,minmax(54px,1fr))}.v193-chip{padding:4px 4px}
}

html[data-theme="dark"] .v193-guide{background:#1d2630;border-color:#394b5c;color:#e8eef5}html[data-theme="dark"] .v193-guide-copy>p{color:#aebdca}
html[data-theme="dark"] .v193-guide-title>strong{color:#edf3f8}html[data-theme="dark"] .v193-guide-actions button{background:#222b35;border-color:#3b4958;color:#d8e7f6}html[data-theme="dark"] .v193-guide-actions button.primary{background:#236ba8;border-color:#236ba8;color:#fff}
html[data-theme="dark"] .v193-station,html[data-theme="dark"] .v193-steps>section,html[data-theme="dark"] .v193-mobile-more,html[data-theme="dark"] .v193-mobile-graphs .ceo2-mod{background:#1b2027;border-color:#303943;color:#e6edf4}html[data-theme="dark"] .v193-station:hover{background:#222a33}html[data-theme="dark"] .v193-chip,html[data-theme="dark"] .v193-health-stat{background:#242b33;border-color:#353f49}html[data-theme="dark"] .v193-chip>b,html[data-theme="dark"] .v193-health-stat>b{color:#aeb9c5}html[data-theme="dark"] .v193-steps>section>header{background:#222831;border-color:#303943}html[data-theme="dark"] .v193-steps button{background:#20262d;border-color:#333d47;color:#e5ecf3}

/* ══ v1.1.3 — 운영현황·보고 중심 역할 UI / PC+PHONE ══ */
.setup-role-note{margin:0 0 10px;padding:9px 12px;border:1px solid #d9e5f1;border-radius:9px;background:#f7fbff;color:#46617b;font-size:11px;line-height:1.5;font-weight:750}
.setup-tank-item{display:grid!important;grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:10px}.setup-tank-item .setup-item-sub{grid-column:1}.setup-tank-delete{grid-column:2;grid-row:1/3;min-width:54px}.quiet.danger{color:#b42318;border-color:#efc6c2;background:#fff7f6}.quiet.danger:hover{background:#fff0ee;border-color:#dfa7a2}

.operation-hub{margin:0 0 12px}.operation-hub-field,.operation-hub-summary{border:1px solid #dce6ef;border-radius:12px;background:#fff;padding:12px;box-shadow:0 2px 8px rgba(26,59,93,.04)}
.operation-hub-field-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px}.operation-hub-field-head>div{display:grid;gap:2px}.operation-hub-field-head span{font-size:10px;color:#75879a;font-weight:800}.operation-hub-field-head strong{font-size:17px;color:#233f5b}
.operation-hub-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.operation-hub-action{min-height:82px;border:1px solid #dce5ee;border-radius:10px;background:#f9fbfd;text-align:left;padding:10px 11px;display:grid;grid-template-columns:1fr auto;grid-template-rows:auto 1fr;gap:4px 8px;color:#28445f;font:inherit;cursor:pointer}.operation-hub-action>span{font-size:12px;font-weight:950}.operation-hub-action>small{grid-column:1/-1;font-size:10px;color:#708296;line-height:1.35}.operation-hub-action>b{font-size:10px;color:#176ac7}.operation-hub-action.ok{background:#f2faf5;border-color:#cfe6d7}.operation-hub-action.warn{background:#fff9ef;border-color:#efd8b2}.operation-hub-action.na{background:#f5f6f8;color:#718093}
.operation-hub-summary{display:grid;grid-template-columns:180px 1fr;gap:12px;align-items:stretch}.operation-hub-summary>div:first-child{border:1px solid #d7e3ee;border-radius:10px;background:#f6faff;padding:13px;display:grid;align-content:center;gap:3px}.operation-hub-summary>div:first-child>span{font-size:10px;color:#6d8196;font-weight:850}.operation-hub-summary>div:first-child>strong{font-size:27px;color:#1c5d97}.operation-hub-summary>div:first-child>small{font-size:10px;color:#657a90}.operation-hub-stations{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:7px}.operation-hub-stations button{min-height:66px;border:1px solid #dfe7ef;border-radius:9px;background:#fff;text-align:left;padding:8px 9px;display:grid;grid-template-columns:1fr auto;gap:2px 8px;color:#2c4864;font:inherit;cursor:pointer}.operation-hub-stations button span{font-size:11px;font-weight:900;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.operation-hub-stations button b{font-size:12px;color:#176ac7}.operation-hub-stations button small{grid-column:1/-1;font-size:9.5px;color:#7a8b9c}

.report-head-v112{align-items:stretch!important}.report-head-v112>div:first-child p:last-child{margin:4px 0 0;color:#6f8194;font-size:11px}.report-progress-ring{min-width:82px;min-height:60px;border:1px solid #d7e3ee;border-radius:10px;background:#f6faff;padding:7px 10px;display:grid;place-content:center;text-align:center}.report-progress-ring b{font-size:17px;color:#1d619b}.report-progress-ring small{font-size:9px;color:#74869a}
.report-card-v112{border:1px solid #dfe7ee;border-top:3px solid #37a36b;border-radius:12px;box-shadow:0 2px 8px rgba(20,41,67,.04)}.report-card-v112.warn{border-top-color:#d89424}.report-card-v112.bad{border-top-color:#d34a43}.report-card-open{width:100%;border:0;background:transparent;display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:9px;padding:2px 0 9px;text-align:left;color:#27445f;font:inherit;cursor:pointer}.report-card-open>span{display:grid;gap:2px;min-width:0}.report-card-open strong{font-size:13px}.report-card-open small{font-size:9.5px;color:#7b8c9e}.report-card-open>b{font-size:11px;color:#315f8d}.report-card-open>em{font-style:normal;font-size:10px;color:#176ac7;font-weight:850}.report-lines-v112{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}.report-line-v112{min-height:42px;padding:6px 7px;border:1px solid #dfe7ee;border-radius:7px;background:#f8fafc;display:grid;align-content:center;gap:2px}.report-line-v112 b{font-size:9.5px;color:#53697e}.report-line-v112 em{font-size:10px;font-style:normal;font-weight:900;color:#278052}.report-line-v112.missing{background:#fff5f2;border-color:#efcfca}.report-line-v112.missing em{color:#b53a32}.report-line-v112.na{background:#f4f5f7}.report-line-v112.na em{color:#7c8997}
.report-station-detail{margin-top:14px;border:1px solid #dbe5ee;border-radius:12px;background:#fff;padding:14px}.report-detail-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:11px}.report-detail-head span{font-size:10px;color:#74879a;font-weight:850}.report-detail-head h2{margin:2px 0;font-size:18px;color:#223e59}.report-detail-head p{margin:0;color:#708296;font-size:10.5px}.report-detail-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;margin-bottom:12px}.report-detail-summary article{min-height:68px;border:1px solid #e0e7ee;border-radius:9px;padding:8px 9px;background:#fafcfd;display:grid;align-content:center;gap:2px}.report-detail-summary span{font-size:9.5px;color:#718498}.report-detail-summary b{font-size:13px;color:#294760}.report-detail-summary b.ok{color:#208052}.report-detail-summary b.bad{color:#b93b34}.report-detail-summary small{font-size:9px;color:#7f8d9b}
.report-doc-section{margin-top:12px}.report-doc-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.report-doc-card{border:1px solid #dfe7ee;border-radius:9px;background:#fafcfd;padding:9px;display:grid;grid-template-columns:1fr auto;gap:7px 10px;align-items:center}.report-doc-card>div:first-child{display:grid;gap:2px;min-width:0}.report-doc-card>div:first-child b{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.report-doc-card>div:first-child small{font-size:9px;color:#7c8c9c}.report-doc-type{font-size:9px;font-weight:900;color:#24649b}.report-recognition{grid-column:1/-1;display:flex;gap:5px;flex-wrap:wrap}.report-recognition span{padding:4px 6px;border-radius:6px;background:#eef5fb;color:#46647f;font-size:9px}.report-recognition b{margin-right:4px;color:#275578}.report-original-open{min-height:34px}.report-submit-list{display:grid;gap:6px}.report-submit-list button{min-height:54px;border:1px solid #dfe7ef;border-radius:8px;background:#fff;padding:7px 9px;display:grid;grid-template-columns:1fr auto;gap:2px 8px;text-align:left;color:#2a4762;font:inherit;cursor:pointer}.report-submit-list button span{font-size:10px;font-weight:900}.report-submit-list button b{font-size:10px;color:#176ac7}.report-submit-list button small{grid-column:1/-1;font-size:9px;color:#7d8d9d}
.v112-mobile-report{border:1px solid #e2e9f0;border-radius:10px;background:#fff;padding:11px!important}.v112-mobile-report .ceo3-ring-wrap{min-height:118px!important}.v112-mobile-report .ceo3-ring{width:88px!important;height:88px!important}

@media(max-width:959px){
  .operation-layout{grid-template-columns:1fr!important}.operation-hub{margin:0 0 9px}.operation-hub-field,.operation-hub-summary{padding:9px;border-radius:10px}.operation-hub-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.operation-hub-action{min-height:72px;padding:8px}.operation-hub-action>span{font-size:11px}.operation-hub-action>small{font-size:9px}.operation-hub-summary{grid-template-columns:1fr;gap:7px}.operation-hub-summary>div:first-child{min-height:74px;grid-template-columns:auto auto;align-items:center;column-gap:8px}.operation-hub-summary>div:first-child>strong{font-size:23px}.operation-hub-stations{grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}.operation-hub-stations button{min-height:58px;padding:7px}.operation-submit-card,.operation-inbox-panel{padding:10px!important}.operation-file-label{min-height:54px!important}
  .report-head-v112{display:grid!important;gap:9px}.report-head-right{justify-content:flex-start!important;flex-wrap:wrap}.report-grid{grid-template-columns:1fr!important}.report-card-v112{padding:9px!important}.report-card-open{grid-template-columns:1fr auto;padding-bottom:7px}.report-card-open>em{display:none}.report-lines-v112{grid-template-columns:repeat(2,minmax(0,1fr));gap:4px}.report-line-v112{min-height:38px;padding:5px}.report-station-detail{padding:10px;margin-top:10px}.report-detail-head h2{font-size:16px}.report-detail-summary{grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}.report-detail-summary article{min-height:60px;padding:7px}.report-doc-grid{grid-template-columns:1fr}.report-doc-card{grid-template-columns:1fr auto;padding:8px}.report-original-open{min-height:40px;min-width:72px}.report-recognition{gap:4px}.report-recognition span{font-size:8.5px}.report-submit-list button{min-height:50px}
  .setup-grid{grid-template-columns:1fr!important}.setup-role-note{font-size:10px}.setup-tank-item{grid-template-columns:1fr auto}.setup-tank-delete{min-height:38px}
}
@media(max-width:520px){
  .operation-hub-grid{grid-template-columns:1fr 1fr}.operation-hub-field-head{align-items:flex-start}.operation-hub-field-head strong{font-size:15px}.operation-hub-stations{grid-template-columns:1fr 1fr}.report-lines-v112{grid-template-columns:1fr 1fr}.report-detail-summary{grid-template-columns:1fr 1fr}.report-progress-ring{min-width:72px}.v112-mobile-report .ceo3-ring-wrap{min-height:108px!important}
}
html[data-theme="dark"] .operation-hub-field,html[data-theme="dark"] .operation-hub-summary,html[data-theme="dark"] .report-station-detail,html[data-theme="dark"] .v112-mobile-report{background:#1b2027;border-color:#303943;color:#e7edf3}html[data-theme="dark"] .operation-hub-action,html[data-theme="dark"] .operation-hub-stations button,html[data-theme="dark"] .report-doc-card,html[data-theme="dark"] .report-submit-list button,html[data-theme="dark"] .report-detail-summary article{background:#20262d;border-color:#343f4a;color:#e6edf4}html[data-theme="dark"] .report-line-v112,html[data-theme="dark"] .report-progress-ring{background:#232a32;border-color:#36414c}

/* ══ v1.1.4 — 카드 가장자리 색 띠 전면 제거 / PC+PHONE ══
   상태는 배지·점·배경톤·텍스트로만 표현한다. 왼쪽/위쪽 색 선은 쓰지 않는다. */
.station-card.problem,
.metric,
.station-tile,
.cal-kpi,
.message-card,
.trend-kpi,
.backup-kind,
.warn-box,
.restore-warn,
.restore-kind,
.priority-high,.priority-urgent,.priority-normal,.priority-low,
.ok-card,
.work-push-required,
.role-station-row,
.business-task-card,
.mobile-priority-card,
.mobile-priority-row,
.role-station-mini,
.screen-hero.protect,.screen-hero.rewind,
.restore-run.danger-step,
.notification-open.priority-normal,.notification-open.priority-high,.notification-open.priority-urgent,
.station-backup-row.ok,.station-backup-row.warn,
.difference-box,
.tank-forecast-row,
.ceo-st-main,
.v119-table-row,
.menu-context-title {
  border-left-width:1px!important;
  border-left-color:var(--line,#dce4ed)!important;
}

/* 대시보드/KPI/보고/브리핑의 위쪽 상태 띠도 전부 제거 */
.role-dashboard-kpis .work-stat.has-value,
.mobile-stat,.mobile-stat.has,
.closing-editor,
[data-view="inventory"]>[data-inventory-pane="movement"],
.workflow-data-warning,
.bh-card,.bh-card.bad,
.ceo2-exc-card,.ceo2-exc-card.warn,
.v193-guide,.v193-guide.warn,.v193-guide.bad,.v193-guide.unknown,
.v193-station,.v193-station.warn,.v193-station.bad,
.report-card-v112,.report-card-v112.warn,.report-card-v112.bad,
body .v119-dashboard .v119-kpi,
body .v123-kpis .v119-kpi,
body .v119-kpis .v119-kpi,
body .v119-dashboard .v119-kpi.ok,
body .v119-dashboard .v119-kpi.warn,
body .v119-dashboard .v119-kpi.bad,
body .v123-kpis .v119-kpi.ok,
body .v123-kpis .v119-kpi.warn,
body .v123-kpis .v119-kpi.bad {
  border-top-width:1px!important;
  border-top-color:var(--line,#dce4ed)!important;
}

/* 역할 메뉴도 왼쪽 색 띠 없이 배경/아이콘으로만 활성 상태를 표시 */
.role-nav-item,
.role-nav-item.active,
.role-nav-item.attention,
#roleMenuRoot[data-menu-role] .role-nav-group:first-child,
#roleMenuRoot[data-menu-role] .role-nav-group:first-child .role-nav-item.active:not(.attention) {
  border-left-width:0!important;
  border-left-color:transparent!important;
}
.sidebar-nav button[data-nav].active{box-shadow:none!important}

/* 색선이 사라진 뒤에도 상태는 충분히 구분되도록 면과 배지만 사용 */
.v193-guide.bad,.v193-station.bad,.report-card-v112.bad{background:#fff8f7!important;border-color:#efcfcb!important}
.v193-guide.warn,.v193-station.warn,.report-card-v112.warn{background:#fffcf5!important;border-color:#ead9b8!important}
.v193-guide:not(.bad):not(.warn):not(.unknown),.v193-station:not(.bad):not(.warn),.report-card-v112:not(.bad):not(.warn){background:#fff!important}
.station-card.problem,.message-card.urgent,.work-push-required.problem,.role-station-row.needs,.mobile-priority-row.needs,.role-station-mini.needs,.station-backup-row.warn,.tank-forecast-row.bad{background:#fff8f7!important}
.station-tile.problem,.cal-kpi.bad,.trend-kpi.warn,.tank-forecast-row.warn{background:#fffcf5!important}

/* PC/폰 동일 원칙 */
@media(max-width:959px){
  .v193-guide.mobile{border-top-width:1px!important}
  .mobile-stat,.mobile-stat.has{border-left-width:1px!important;border-left-color:#dce4ed!important}
}
html[data-theme="dark"] .v193-guide.bad,
html[data-theme="dark"] .v193-station.bad,
html[data-theme="dark"] .report-card-v112.bad,
html[data-theme="dark"] .station-card.problem,
html[data-theme="dark"] .message-card.urgent,
html[data-theme="dark"] .role-station-row.needs,
html[data-theme="dark"] .mobile-priority-row.needs,
html[data-theme="dark"] .role-station-mini.needs{background:#282126!important;border-color:#4a3940!important}
html[data-theme="dark"] .v193-guide.warn,
html[data-theme="dark"] .v193-station.warn,
html[data-theme="dark"] .report-card-v112.warn{background:#28251f!important;border-color:#4b4332!important}
/* ══ v1.1.4 — 끝 ══ */
/* v1.1.4 보강 — 고특이도/과거 레이아웃의 색선도 제거 */
.v119-setup-banner,
[data-view="calendar"] .cal-kpi{
  border-left-width:1px!important;
  border-left-color:var(--line,#dce4ed)!important;
}
.phone-nav-item.attention{box-shadow:none!important}

/* ════════════════════════════════════════════════════════════════════════════
   v1.2.0 — 역할·업무 흐름 최종 스타일 / PC + PHONE
   기존 업무 로직·HTML ID·API 연결은 유지하고, 공통 표면/여백/상태 표현만 통일한다.
   중요: 카드의 왼쪽/위쪽 색 강조선은 사용하지 않는다.
   ════════════════════════════════════════════════════════════════════════════ */
:root{
  --v120-bg:#f3f6f9;
  --v120-surface:#ffffff;
  --v120-surface-2:#f7f9fb;
  --v120-surface-3:#edf2f7;
  --v120-border:#dfe6ed;
  --v120-border-strong:#ccd7e1;
  --v120-ink:#1c2a39;
  --v120-muted:#66788a;
  --v120-faint:#91a0ae;
  --v120-accent:#286eaa;
  --v120-accent-soft:#eaf2f8;
  --v120-ok:#257b55;
  --v120-ok-soft:#edf7f1;
  --v120-warn:#a96f18;
  --v120-warn-soft:#fbf5e8;
  --v120-bad:#b94b45;
  --v120-bad-soft:#fbefee;
  --v120-shadow:0 2px 9px rgba(25,49,72,.055);
  --v120-shadow-up:0 8px 24px rgba(25,49,72,.075);
}
html[data-theme="dark"]{
  --v120-bg:#11171e;
  --v120-surface:#1a222b;
  --v120-surface-2:#202a34;
  --v120-surface-3:#26323e;
  --v120-border:#303c48;
  --v120-border-strong:#43515f;
  --v120-ink:#e9eef4;
  --v120-muted:#a5b1bd;
  --v120-faint:#75818d;
  --v120-accent:#65a5d7;
  --v120-accent-soft:#1b3041;
  --v120-ok:#59b98b;
  --v120-ok-soft:#173126;
  --v120-warn:#d1a155;
  --v120-warn-soft:#302716;
  --v120-bad:#df7772;
  --v120-bad-soft:#321e1e;
  --v120-shadow:0 2px 9px rgba(0,0,0,.18);
  --v120-shadow-up:0 10px 26px rgba(0,0,0,.23);
}
body{background:var(--v120-bg);color:var(--v120-ink)}
#mainContent{background:var(--v120-bg)}
#mainContent>.view{padding-top:2px}
#mainContent .page-title{margin:0 0 13px}
#mainContent .page-title h1,#mainContent .page-title h2{color:var(--v120-ink);letter-spacing:-.025em}
#mainContent .page-title p{color:var(--v120-muted);margin-bottom:0}

/* 공통 PC 쉘 — 네이비 메뉴 + 중립 본문 */
.sidebar{background:#14334f!important}
.sidebar-brand{padding-bottom:13px!important;margin-bottom:7px!important;border-bottom:1px solid rgba(255,255,255,.10)!important}
.sidebar-brand-mark{border-radius:9px!important;background:rgba(255,255,255,.13)!important;box-shadow:none!important}
.sidebar-brand-copy small{color:#9fb4c8!important}
.role-menu-root{gap:9px!important;margin:6px 0 12px!important}
.role-nav-group{gap:3px!important}
.role-nav-group-head,.role-nav-label{color:#91a8bd!important;font-size:.66rem!important;letter-spacing:.025em!important;padding-left:9px!important}
.role-nav-item{
  min-height:39px!important;border:0!important;border-left:0!important;border-top:0!important;
  border-radius:8px!important;background:transparent!important;color:#dbe7f1!important;
  padding:8px 9px!important;font-size:.73rem!important;font-weight:750!important;box-shadow:none!important;
}
.role-nav-item:hover{background:rgba(255,255,255,.075)!important}
.role-nav-item.active{background:rgba(255,255,255,.145)!important;color:#fff!important;box-shadow:none!important}
.role-nav-item.attention{background:rgba(255,255,255,.075)!important;color:#fff!important}
.role-nav-item.attention span{color:#fff!important}
.role-nav-icon{background:rgba(255,255,255,.08)!important;border-radius:6px!important}
.role-nav-item.active .role-nav-icon{background:rgba(255,255,255,.14)!important}
.sidebar-upload-fixed button{border-radius:8px!important}
.topbar-v119{background:var(--v120-surface)!important;border-bottom:1px solid var(--v120-border)!important;box-shadow:none!important}
.topbar-v119 .quiet,.topbar-v119 button{border-radius:8px!important}

/* 기존 패널/폼/표도 같은 표면 규칙으로 정리 */
.panel,.overview-panel,.trend-panel,.form-card,.station-card,.table-scroll,.data-table,
.operation-submit-card,.operation-inbox-panel,.report-card-v112,.report-station-detail,
.setup-card,.calendar-summary,.calendar-tools,.calendar-actionbar,.chat-layout{
  background:var(--v120-surface)!important;border:1px solid var(--v120-border)!important;
  box-shadow:var(--v120-shadow)!important;border-radius:12px!important;
}
.panel,.overview-panel,.trend-panel,.form-card,.setup-card{padding:14px!important}
input,select,textarea{background:var(--v120-surface)!important;color:var(--v120-ink)!important;border-color:var(--v120-border-strong)!important;border-radius:9px!important}
.primary,.quiet,.action-button,.tab-button{border-radius:8px!important}
.quiet{background:var(--v120-surface)!important;border:1px solid var(--v120-border)!important;color:var(--v120-ink)!important}

/* ── v1.2.0 역할별 운영현황 ───────────────────────────────────────────── */
.v1200-overview{display:grid;gap:11px;color:var(--v120-ink)}
.v1200-hero{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;padding:3px 2px 1px}
.v1200-hero small{display:block;color:var(--v120-accent);font-size:10px;font-weight:900;margin-bottom:3px}
.v1200-hero h2{margin:0;font-size:21px;line-height:1.22;letter-spacing:-.035em;color:var(--v120-ink)}
.v1200-hero p{margin:5px 0 0;color:var(--v120-muted);font-size:11px;line-height:1.55}
.v1200-hero>button{min-height:36px;border:1px solid var(--v120-border);border-radius:9px;background:var(--v120-surface);color:var(--v120-muted);padding:7px 10px;font-size:10px;font-weight:850}
.v1200-kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}
.v1200-admin .v1200-kpis,.v1200-overview.admin .v1200-kpis{grid-template-columns:repeat(6,minmax(0,1fr))}
.v1200-kpi{position:relative;min-width:0;min-height:82px;display:grid;align-content:center;gap:3px;text-align:left;padding:10px 11px;border:1px solid var(--v120-border);border-radius:11px;background:var(--v120-surface);box-shadow:var(--v120-shadow);color:var(--v120-ink);font:inherit}
button.v1200-kpi{cursor:pointer}
button.v1200-kpi:hover{border-color:var(--v120-border-strong);box-shadow:var(--v120-shadow-up)}
.v1200-kpi>span{font-size:9px;color:var(--v120-muted);font-weight:850}
.v1200-kpi>strong{font-size:19px;letter-spacing:-.035em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v1200-kpi>small{font-size:8.5px;color:var(--v120-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v1200-kpi>small.up{color:var(--v120-ok)}.v1200-kpi>small.warn{color:var(--v120-warn)}.v1200-kpi>small.bad{color:var(--v120-bad)}
.v1200-kpi>b{position:absolute;right:9px;top:8px;color:var(--v120-faint);font-size:11px}
.v1200-grid{display:grid;gap:9px;align-items:start}
.v1200-grid.primary{grid-template-columns:minmax(0,1.45fr) minmax(300px,.72fr)}
.v1200-grid.thirds{grid-template-columns:repeat(3,minmax(0,1fr))}
.v1200-grid.halves{grid-template-columns:repeat(2,minmax(0,1fr))}
.v1200-card{min-width:0;background:var(--v120-surface);border:1px solid var(--v120-border);border-radius:12px;padding:12px;box-shadow:var(--v120-shadow)}
.v1200-card>header{display:flex;align-items:flex-start;justify-content:space-between;gap:9px;margin-bottom:9px}
.v1200-card>header small{display:block;font-size:8.5px;color:var(--v120-faint);font-weight:750;margin-bottom:2px}
.v1200-card>header h3{margin:0;font-size:11.5px;color:var(--v120-ink);letter-spacing:-.015em}
.v1200-card>header>button{min-height:31px;border:1px solid var(--v120-border);border-radius:8px;background:var(--v120-surface-2);color:var(--v120-accent);font-size:8.5px;font-weight:900;padding:5px 8px}
.v1200-empty{min-height:68px;border:1px dashed var(--v120-border-strong);border-radius:9px;background:var(--v120-surface-2);display:grid;place-items:center;text-align:center;padding:12px;color:var(--v120-muted);font-size:9px}
.v1200-empty.ok{color:var(--v120-ok);background:var(--v120-ok-soft)}
.v1200-more{margin-top:6px;color:var(--v120-faint);font-size:8.5px;text-align:right}

/* 탱크: 실제 등록된 1번~마지막 탱크를 모두 표시. 유종색은 내용물에만 사용 */
.v1200-tanks-full{overflow:hidden}
.v1200-tank-station{display:grid;gap:7px;margin-bottom:12px}.v1200-tank-station:last-child{margin-bottom:0}
.v1200-tank-station>header{display:flex;justify-content:space-between;align-items:center;padding:0 1px}.v1200-tank-station>header b{font-size:10px}.v1200-tank-station>header span{font-size:8.5px;color:var(--v120-muted)}
.v1200-tank-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:7px}
.v1200-tank-card{min-width:0;display:grid;gap:7px;text-align:left;padding:9px;border:1px solid var(--v120-border);border-radius:10px;background:var(--v120-surface-2);color:var(--v120-ink);font:inherit;box-shadow:none}
.v1200-tank-card:hover{border-color:var(--v120-border-strong);background:var(--v120-surface)}
.v1200-tank-card>header{display:flex;align-items:flex-start;justify-content:space-between;gap:5px;min-width:0}
.v1200-tank-card>header>span{min-width:0}.v1200-tank-card>header b{display:block;font-size:9.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.v1200-tank-card>header small{display:block;margin-top:2px;color:var(--v120-muted);font-size:7.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v1200-tank-card>header em{font-style:normal;font-size:7.5px;font-weight:900;border-radius:999px;padding:3px 5px;background:var(--v120-surface-3);color:var(--v120-muted);white-space:nowrap}
.v1200-tank-card>header em.ok{background:var(--v120-ok-soft);color:var(--v120-ok)}.v1200-tank-card>header em.warn{background:var(--v120-warn-soft);color:var(--v120-warn)}.v1200-tank-card>header em.bad{background:var(--v120-bad-soft);color:var(--v120-bad)}
.v1200-tank-visual{height:80px;position:relative;overflow:hidden;border:1px solid var(--v120-border);border-radius:9px;background:var(--v120-surface);display:flex;align-items:center;justify-content:center}
.v1200-tank-visual>i{position:absolute;left:0;right:0;bottom:0;opacity:.78}
.v1200-tank-visual>u{position:absolute;left:0;right:0;border-top:1px dashed var(--v120-warn);text-decoration:none;z-index:2}
.v1200-tank-visual>strong{position:relative;z-index:3;padding:3px 6px;border-radius:999px;background:rgba(255,255,255,.86);color:#233647;font-size:13px;box-shadow:0 1px 4px rgba(20,43,62,.10)}
html[data-theme="dark"] .v1200-tank-visual>strong{background:rgba(20,28,36,.84);color:#eef4f8}
.v1200-tank-numbers{display:grid;grid-template-columns:1fr 1fr;gap:4px}.v1200-tank-numbers>span{padding:5px 6px;border-radius:7px;background:var(--v120-surface)}.v1200-tank-numbers small{display:block;font-size:7px;color:var(--v120-faint)}.v1200-tank-numbers b{display:block;margin-top:1px;font-size:8.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v1200-tank-card>footer{display:flex;justify-content:space-between;gap:7px;align-items:center;font-size:7.2px;color:var(--v120-faint)}.v1200-tank-card>footer b{color:var(--v120-muted);font-size:7.5px;text-align:right}

/* 보고 진행/보고 매트릭스 */
.v1200-report-progress{display:flex;align-items:center;gap:12px;min-height:116px}
.v1200-ring{--p:0;width:86px;height:86px;flex:0 0 86px;border-radius:50%;background:conic-gradient(var(--v120-accent) calc(var(--p)*1%),var(--v120-surface-3) 0);position:relative;display:grid;place-items:center}
.v1200-ring:after{content:"";position:absolute;inset:12px;border-radius:50%;background:var(--v120-surface)}
.v1200-ring>span{position:relative;z-index:1;text-align:center}.v1200-ring b{display:block;font-size:16px}.v1200-ring small{display:block;color:var(--v120-muted);font-size:7.5px;margin-top:1px}
.v1200-report-copy{min-width:0}.v1200-report-copy strong{font-size:10px}.v1200-report-copy p{margin:4px 0 7px;color:var(--v120-muted);font-size:8px;line-height:1.5}.v1200-report-copy button{min-height:29px;border:1px solid var(--v120-border);border-radius:7px;background:var(--v120-surface-2);color:var(--v120-accent);font-size:8px;font-weight:900;padding:4px 7px}
.v1200-report-matrix{display:grid;gap:4px;overflow:auto}
.v1200-report-head,.v1200-report-row{min-width:430px;display:grid;grid-template-columns:minmax(112px,1.35fr) repeat(4,minmax(58px,.7fr)) 18px;gap:4px;align-items:center}
.v1200-report-head{padding:0 7px 3px}.v1200-report-head span{font-size:7.5px;color:var(--v120-faint);font-weight:850;text-align:center}.v1200-report-head span:first-child{text-align:left}
.v1200-report-row{border:1px solid var(--v120-border);border-radius:8px;background:var(--v120-surface-2);padding:6px 7px;color:var(--v120-ink);text-align:left;font:inherit}
.v1200-report-row:hover{background:var(--v120-surface)}
.v1200-report-row>span b{display:block;font-size:8.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.v1200-report-row>span small{display:block;font-size:7px;color:var(--v120-muted);margin-top:1px}
.v1200-report-row em{font-style:normal;text-align:center;border-radius:6px;padding:4px 3px;background:var(--v120-surface);font-size:7.3px;color:var(--v120-muted);font-weight:900}.v1200-report-row em.ok{background:var(--v120-ok-soft);color:var(--v120-ok)}.v1200-report-row em.bad{background:var(--v120-bad-soft);color:var(--v120-bad)}.v1200-report-row em.na{color:var(--v120-faint)}.v1200-report-row>i{font-style:normal;color:var(--v120-accent);text-align:right}

/* 대표 비교 / 문제 주유소 */
.v1200-rank{display:grid;gap:6px}.v1200-rank>button{display:grid;grid-template-columns:22px minmax(70px,105px) 1fr 58px;gap:7px;align-items:center;border:0;background:transparent;padding:5px 2px;color:var(--v120-ink);text-align:left;font:inherit}.v1200-rank>button>b{width:21px;height:21px;border-radius:50%;background:var(--v120-surface-3);display:grid;place-items:center;font-size:8px}.v1200-rank>button>span{font-size:8.5px;font-weight:850;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.v1200-rank>button>i{height:8px;border-radius:999px;background:var(--v120-surface-3);overflow:hidden}.v1200-rank>button>i>em{display:block;height:100%;border-radius:999px;background:var(--v120-accent)}.v1200-rank>button>strong{font-size:8.5px;text-align:right}
.v1200-attention{display:grid;gap:6px}.v1200-attention>button{display:grid;grid-template-columns:1fr auto auto;gap:7px;align-items:center;text-align:left;border:1px solid var(--v120-border);border-radius:9px;background:var(--v120-surface-2);padding:7px 8px;color:var(--v120-ink);font:inherit}.v1200-attention>button span{min-width:0}.v1200-attention>button b{display:block;font-size:9px}.v1200-attention>button small{display:block;margin-top:2px;font-size:7.5px;color:var(--v120-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.v1200-attention>button em{font-style:normal;color:var(--v120-bad);background:var(--v120-bad-soft);border-radius:999px;padding:3px 5px;font-size:7px;font-weight:900;white-space:nowrap}.v1200-attention>button i{font-style:normal;color:var(--v120-accent);font-size:7.5px;white-space:nowrap}
.v1200-system{display:grid;gap:6px}.v1200-system>span{display:grid;grid-template-columns:1fr auto;gap:7px;padding:7px 8px;border-radius:8px;background:var(--v120-surface-2)}.v1200-system b,.v1200-system em{font-size:8px}.v1200-system em{font-style:normal;color:var(--v120-muted)}.v1200-system em.ok{color:var(--v120-ok)}.v1200-system em.warn{color:var(--v120-warn)}
.v1200-quick{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.v1200-quick>button{min-height:58px;text-align:left;border:1px solid var(--v120-border);border-radius:9px;background:var(--v120-surface-2);padding:8px;color:var(--v120-ink);font:inherit}.v1200-quick b{display:block;font-size:9px}.v1200-quick small{display:block;margin-top:3px;color:var(--v120-muted);font-size:7.5px;line-height:1.4}

/* 주유소 상세 대시보드 */
.v1200-station-detail{display:grid;gap:10px}
.v1200-station-detail .station-detail-kpis{grid-template-columns:repeat(5,minmax(0,1fr))}
.v1200-detail-reports{display:grid;gap:5px}.v1200-detail-reports>div{display:flex;justify-content:space-between;align-items:center;gap:7px;padding:7px 8px;border-radius:8px;background:var(--v120-surface-2)}.v1200-detail-reports span{font-size:8.5px}.v1200-detail-reports b{font-size:8.5px}.v1200-detail-reports b.ok{color:var(--v120-ok)}.v1200-detail-reports b.bad{color:var(--v120-bad)}.v1200-detail-reports b.na{color:var(--v120-muted)}
.v1200-source-list{display:grid;gap:6px}.v1200-source-list>button{display:grid;grid-template-columns:1fr auto;gap:7px;align-items:center;text-align:left;border:1px solid var(--v120-border);border-radius:9px;background:var(--v120-surface-2);padding:7px 8px;color:var(--v120-ink);font:inherit}.v1200-source-list b{display:block;font-size:8.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.v1200-source-list small{display:block;margin-top:2px;font-size:7px;color:var(--v120-muted)}.v1200-source-list em{font-style:normal;color:var(--v120-accent);font-size:7.5px;font-weight:900}

/* ── 보고/보고현황: 기존 기능 보존 + 최종 스타일 통일 ───────────────── */
.operation-layout{gap:10px!important}
.operation-hub-field,.operation-hub-summary{background:var(--v120-surface)!important;border:1px solid var(--v120-border)!important;border-radius:12px!important;box-shadow:var(--v120-shadow)!important}
.operation-hub-action{border:1px solid var(--v120-border)!important;border-left:1px solid var(--v120-border)!important;border-top:1px solid var(--v120-border)!important;border-radius:9px!important;background:var(--v120-surface-2)!important;box-shadow:none!important}
.operation-hub-action.ok{background:var(--v120-ok-soft)!important}.operation-hub-action.warn{background:var(--v120-warn-soft)!important}.operation-hub-action.bad{background:var(--v120-bad-soft)!important}
.operation-hub-stations button{border-radius:9px!important;background:var(--v120-surface-2)!important;border:1px solid var(--v120-border)!important}
.report-card-v112,.report-card-v112.warn,.report-card-v112.bad{border:1px solid var(--v120-border)!important;border-left:1px solid var(--v120-border)!important;border-top:1px solid var(--v120-border)!important;border-radius:11px!important;background:var(--v120-surface)!important;box-shadow:var(--v120-shadow)!important}
.report-card-v112.warn{background:var(--v120-warn-soft)!important}.report-card-v112.bad{background:var(--v120-bad-soft)!important}
.report-line-v112{border-radius:8px!important;background:var(--v120-surface-2)!important;border-color:var(--v120-border)!important}.report-line-v112.done{background:var(--v120-ok-soft)!important}.report-line-v112.missing{background:var(--v120-bad-soft)!important;border-color:var(--v120-border)!important}
.report-doc-card{background:var(--v120-surface-2)!important;border-color:var(--v120-border)!important;border-radius:9px!important}
.report-recognition span{background:var(--v120-accent-soft)!important;border-radius:7px!important}
.report-submit-list button{background:var(--v120-surface-2)!important;border-color:var(--v120-border)!important;border-radius:9px!important}

/* ── 달력: 매출/보고/입고/결제의 날짜 축 ────────────────────────────── */
.calendar-topbar{gap:8px!important;margin-bottom:9px!important}
.calendar-summary{display:grid!important;gap:8px!important;border-radius:12px!important}
.calendar-grid{gap:1px!important;background:var(--v120-border)!important;border-color:var(--v120-border)!important;border-radius:10px!important;overflow:hidden}
.calendar-grid>div{background:var(--v120-surface)!important;border:0!important;min-height:92px}
.calendar-day{background:var(--v120-surface)!important}.calendar-day:hover{background:var(--v120-surface-2)!important}
.calendar-day.today{box-shadow:inset 0 0 0 2px var(--v120-ink)!important}
.calendar-event{border-radius:6px!important;border:0!important}
.calendar-tools,.calendar-actionbar{padding:10px!important}

/* ── 채팅: 같은 표면/라운드/여백 규칙 ───────────────────────────────── */
.chat-layout{border-radius:12px!important;background:var(--v120-surface)!important;overflow:hidden!important}
.chat-rooms{background:var(--v120-surface-2)!important;border-right:1px solid var(--v120-border)!important}
.chat-rooms-head,.chat-thread-head{border-color:var(--v120-border)!important;background:var(--v120-surface)!important}
.chat-room-item{border:1px solid transparent!important;border-radius:9px!important;background:transparent!important;margin:3px 5px!important}
.chat-room-item:hover{background:var(--v120-surface-3)!important}.chat-room-item.active{background:var(--v120-accent-soft)!important;border-color:var(--v120-border)!important}
.chat-thread,.chat-messages{background:var(--v120-surface)!important}
.chat-bubble{border-radius:11px!important;background:var(--v120-surface-2)!important;border:1px solid var(--v120-border)!important;box-shadow:none!important}
.chat-msg.mine .chat-bubble{background:var(--v120-accent-soft)!important}
.chat-composer{background:var(--v120-surface)!important;border-top:1px solid var(--v120-border)!important}

/* ── 기본설정: 수시변경 vs 구조값을 같은 카드 체계로 ───────────────── */
.setup-context-bar{border:1px solid var(--v120-border)!important;border-radius:10px!important;background:var(--v120-surface)!important;box-shadow:var(--v120-shadow)!important}
.setup-grid{gap:10px!important}
.setup-card{border-radius:12px!important;background:var(--v120-surface)!important;border:1px solid var(--v120-border)!important}
.setup-list{gap:6px!important}.setup-item{border:1px solid var(--v120-border)!important;border-radius:9px!important;background:var(--v120-surface-2)!important;padding:8px!important}
.setup-price-row,.setup-tank-item{border:1px solid var(--v120-border)!important;border-radius:9px!important;background:var(--v120-surface-2)!important;padding:8px!important}
.setup-price-state{border-radius:999px!important}

/* dark: 구형 하드코딩 흰색을 공통 변수로 교정 */
html[data-theme="dark"] .v1200-card,html[data-theme="dark"] .v1200-kpi,html[data-theme="dark"] .v1200-tank-card,
html[data-theme="dark"] .operation-hub-field,html[data-theme="dark"] .operation-hub-summary,html[data-theme="dark"] .report-card-v112,
html[data-theme="dark"] .setup-card,html[data-theme="dark"] .chat-layout,html[data-theme="dark"] .calendar-grid>div{
  color:var(--v120-ink)!important;background:var(--v120-surface)!important;border-color:var(--v120-border)!important;
}

/* ── PHONE: 같은 정보, 다른 배치. 기능을 숨기지 않는다. ───────────────── */
@media(max-width:959px){
  #mainContent{background:var(--v120-bg)!important}
  #mainContent>.view{padding-left:9px!important;padding-right:9px!important}
  .v1200-mobile-host .v1200-overview{gap:9px}
  .v1200-mobile-host .v1200-hero{padding:0}
  .v1200-mobile-host .v1200-hero h2{font-size:17px}
  .v1200-mobile-host .v1200-hero p{font-size:9.5px;line-height:1.45}
  .v1200-mobile-host .v1200-hero>button{min-height:42px;padding:8px 10px}
  /* v1.3.131 — 폰 '업무' 화면: 운영현황 묶음이 숫자 칸 4줄 격자(#mobileWorkStats)의 한 칸(약 85px)에 갇혀 글자가 한두 자씩 세로로 찍혔다. 한 줄 전체를 쓰게 한다. */
  .mobile-home-stats>.v1200-mobile-host{grid-column:1/-1;min-width:0}
  .v1200-kpis,.v1200-overview.admin .v1200-kpis,.v1200-station-detail .station-detail-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
  .v1200-kpi{min-height:74px;padding:9px}.v1200-kpi>strong{font-size:17px}.v1200-kpi>span{font-size:8.5px}.v1200-kpi>small{font-size:8px}
  .v1200-grid.primary,.v1200-grid.thirds,.v1200-grid.halves{grid-template-columns:1fr;gap:7px}
  .v1200-card{padding:10px;border-radius:11px}.v1200-card>header h3{font-size:11px}.v1200-card>header>button{min-height:40px;padding:7px 9px}
  .v1200-tank-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
  .v1200-tank-visual{height:72px}.v1200-tank-card{padding:8px}.v1200-tank-card>header b{font-size:9px}.v1200-tank-card>footer{display:grid;gap:2px}.v1200-tank-card>footer b{text-align:left}
  .v1200-report-progress{min-height:104px}.v1200-ring{width:78px;height:78px;flex-basis:78px}.v1200-ring:after{inset:11px}
  .v1200-report-matrix{margin:0 -2px;padding-bottom:2px}
  .v1200-report-head,.v1200-report-row{min-width:400px}
  .v1200-rank>button{grid-template-columns:20px minmax(60px,90px) 1fr 52px;min-height:36px}
  .v1200-attention>button{min-height:48px}
  .v1200-quick>button{min-height:58px}
  .operation-layout{grid-template-columns:1fr!important}.operation-hub-action,.operation-hub-stations button{min-height:48px!important}
  .report-original-open,.report-submit-list button,.operation-status-btn,.setup-price-save,.setup-tank-delete{min-height:42px!important}
  .calendar-grid>div{min-height:66px!important}
  .chat-layout{grid-template-columns:1fr!important;height:auto!important;min-height:520px!important}
  .chat-rooms{border-right:0!important;border-bottom:1px solid var(--v120-border)!important;max-height:180px;overflow:auto}
  .chat-thread{min-height:330px}
  .setup-grid{grid-template-columns:1fr!important}
}
@media(max-width:420px){
  .v1200-tank-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .v1200-tank-numbers{grid-template-columns:1fr}
  .v1200-quick{grid-template-columns:1fr 1fr}
}
/* ══ v1.2.0 — 끝 ══ */

/* v1.2.2 — 최종 공통 규칙: 카드/패널 상태를 색 띠로 표현하지 않는다.
   오래된 화면별 규칙이 뒤섞여 있어도 이 마지막 레이어가 항상 이긴다. */
.priority-high,.priority-urgent,.priority-normal,.priority-low,
.ok-card,.work-push-required,.role-station-row,.business-task-card,
.mobile-priority-card,.mobile-priority-row,.role-station-mini,
.message-card,.screen-hero.protect,.screen-hero.rewind,
.station-backup-row.ok,.station-backup-row.warn,
.tank-forecast-row.bad,.tank-forecast-row.warn,.tank-forecast-row.ok,.tank-forecast-row.not-ready,
.workflow-data-warning,.v193-station,.report-card-v112,
.inventory-view .tank-record-row.warning,.inventory-view .tank-record-row.problem,
.inventory-view .inventory-record-row.warning,.inventory-view .inventory-record-row.problem,
.manager-tank-card,.manager-tank-card.warn,.manager-tank-card.danger {
  border-left-width:1px!important;
  border-left-color:var(--line,#dbe3ec)!important;
  border-top-width:1px!important;
  border-top-color:var(--line,#dbe3ec)!important;
  box-shadow:none!important;
}
.role-dashboard-kpis .work-stat.has-value,.mobile-stat.has,.closing-editor,
[data-view="inventory"]>[data-inventory-pane="movement"] {
  border-top-width:1px!important;
  border-top-color:var(--line,#dbe3ec)!important;
}
.role-nav-item.active,.role-menu-root button.active,.sidebar-nav button[data-nav].active {
  box-shadow:none!important;
}

/* v1.2.4 terminal mapping edit/delete: show the saved relationship itself, not only a label. */
.setup-terminal-item{display:grid!important;grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:10px;row-gap:3px}.setup-terminal-item .setup-item-main{grid-column:1}.setup-terminal-item .setup-item-sub{grid-column:1;line-height:1.45}.setup-terminal-item>.button-row{grid-column:2;grid-row:1/3;margin:0;align-self:center;white-space:nowrap}.setup-terminal-item.muted{opacity:.68}.setup-terminal-item .button-row button{min-width:48px}@media(max-width:720px){.setup-terminal-item{grid-template-columns:1fr}.setup-terminal-item>.button-row{grid-column:1;grid-row:auto;justify-content:flex-end;margin-top:4px}}


/* v1.2.5 단말기 입력순서/한글 우선 입력 */
.terminal-sortbar{display:flex;align-items:end;justify-content:space-between;gap:10px;flex-wrap:wrap;margin:8px 0 5px}.terminal-sortbar label{display:grid;gap:3px;font-size:.67rem;font-weight:800;color:#4a5b6e}.terminal-sortbar select{min-height:32px;min-width:132px}.terminal-sortbar small{color:#6b7785;font-size:.66rem}.setup-order-no{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 5px;margin-right:6px;border:1px solid var(--v120-border,#d7dde5);border-radius:999px;background:var(--v120-surface,#fff);font-size:.66rem;font-weight:800;color:#667085;vertical-align:middle}@media(max-width:720px){.terminal-sortbar{align-items:stretch}.terminal-sortbar label{width:100%}.terminal-sortbar select{width:100%}}


/* v1.3.4 관리자 전체 초기화: 명확한 위험 버튼 + 경고 모달 */
.factory-reset-danger{
  border:1px solid #b42318!important;background:#d92d20!important;color:#fff!important;
  font-weight:900!important;box-shadow:0 2px 6px rgba(180,35,24,.18)!important;
}
.factory-reset-danger:hover{background:#b42318!important;border-color:#912018!important}
.factory-reset-danger:disabled{opacity:.55!important;cursor:not-allowed!important}
.setup-factory-reset .button-row{justify-content:flex-end}
#factoryResetExecute{min-width:180px;min-height:42px}
.factory-reset-dialog{width:min(560px,calc(100vw - 24px));border:1px solid #f0b4ae;border-radius:10px;padding:0;background:#fff;box-shadow:0 24px 70px rgba(50,15,12,.32)}
.factory-reset-dialog::backdrop{background:rgba(16,24,40,.62)}
.factory-reset-dialog-body{display:grid;grid-template-columns:44px 1fr;gap:12px;padding:20px 20px 14px}
.factory-reset-warning-icon{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:#fee4e2;color:#b42318;font-size:1.25rem;font-weight:1000}
.factory-reset-dialog h2{margin:0 0 8px;color:#8f1d14;font-size:1.18rem}
.factory-reset-dialog p{margin:0 0 8px;color:#344054;font-size:.8rem;line-height:1.62}
.factory-reset-dialog .factory-reset-backup-note{padding:9px 10px;background:#fff4f2;border:1px solid #fecdca;border-radius:6px;color:#7a271a}
.factory-reset-dialog-actions{display:flex;justify-content:flex-end;gap:8px;padding:12px 20px 18px;border-top:1px solid #f2d5d2}
.factory-reset-dialog-actions button{min-height:40px;padding:0 16px}
@media(max-width:959px){.factory-reset-dialog-body{grid-template-columns:36px 1fr;padding:16px 14px 12px}.factory-reset-warning-icon{width:34px;height:34px}.factory-reset-dialog-actions{padding:10px 14px 14px}.factory-reset-dialog-actions button{flex:1}}

/* v1.3.7 — 자료 촬영·원본 모아보기·간편 인식수정 */
.document-capture-guide{margin:10px 0 12px;padding:11px 12px;border:1px solid #cfd8e6;border-radius:8px;background:#f8fbff;display:grid;gap:4px}
.document-capture-guide strong{font-size:.88rem;color:#163a63}.document-capture-guide p{margin:0;font-size:.82rem;line-height:1.5;color:#344054}.document-capture-guide small{color:#667085;line-height:1.45}
.document-list-workspace{min-width:0;display:grid;gap:8px}.document-filter-panel{margin:0!important}.document-filter-grid{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr));gap:7px}.document-filter-grid label{display:grid;gap:4px;font-size:.78rem;color:#475467}.document-filter-grid input,.document-filter-grid select{min-width:0}
.document-quick-review-dialog .form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.document-raw-text{margin:12px 0;border:1px solid var(--line);border-radius:8px;padding:8px 10px}.document-raw-text textarea{width:100%;margin-top:8px;resize:vertical;font-family:"IBM Plex Mono",monospace;font-size:.75rem;line-height:1.45;box-sizing:border-box}
.document-gallery-dialog{width:min(1240px,calc(100% - 20px));}.document-gallery-shell{padding:18px;overflow:auto;max-height:calc(100vh - 24px)}.document-gallery-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:12px}.document-gallery-card{border:1px solid var(--line);border-radius:8px;background:#fff;overflow:hidden;display:flex;flex-direction:column;min-width:0}.document-gallery-preview{height:230px;background:#f5f7fa;display:flex;align-items:center;justify-content:center;overflow:hidden;border-bottom:1px solid var(--line)}.document-gallery-preview img{width:100%;height:100%;object-fit:contain;background:#fff}.document-gallery-preview iframe{width:100%;height:100%;border:0;background:#fff}.document-gallery-fileicon{font-size:2.2rem}.document-gallery-meta{padding:9px 10px;display:grid;gap:5px}.document-gallery-meta strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.document-gallery-meta small{color:#667085}.document-gallery-meta .button-row{margin-top:3px}
.document-record-row .identity-warning{font-size:.75rem;color:#b45309;margin-top:4px}.document-record-row .identity-ok{font-size:.75rem;color:#067647;margin-top:4px}
@media (max-width:1100px){.document-filter-grid{grid-template-columns:repeat(2,minmax(120px,1fr))}.document-gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:700px){.document-filter-grid{grid-template-columns:1fr 1fr}.document-gallery-grid{grid-template-columns:1fr}.document-gallery-preview{height:300px}.document-quick-review-dialog .form-grid{grid-template-columns:1fr}.document-capture-guide{font-size:.9rem}.upload-primary-actions{grid-template-columns:1fr!important}}
html[data-theme="dark"] .document-capture-guide{background:#16202c;border-color:#344054}.document-capture-guide strong{color:inherit}html[data-theme="dark"] .document-capture-guide p,html[data-theme="dark"] .document-capture-guide small{color:#cbd5e1}html[data-theme="dark"] .document-gallery-card{background:#111827}html[data-theme="dark"] .document-gallery-preview{background:#0f172a}

/* ============================================================
   v1.3.13 — 달력: 매입자료 / 확정실패 현장 모드
   ============================================================ */
.calendar-view-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.calendar-mode-switch{display:inline-flex;align-items:center;gap:2px;padding:3px;background:#e8eef5;border:1px solid #d4dee9;border-radius:7px}
.calendar-mode-option{all:unset;box-sizing:border-box;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;min-height:34px;padding:7px 16px;border-radius:5px;font-size:.75rem;font-weight:900;color:#4b6075}
.calendar-mode-option.active{background:#173f68;color:#fff;box-shadow:0 1px 3px #10182822}
.calendar-legendbar .qty-switch{border-radius:7px}
.calendar-legendbar .qty-option{border-radius:5px}
.calendar-failure-filters{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.calendar-failure-filters[hidden],#calendarQtyWrap[hidden],#calendarFuelLegend[hidden]{display:none!important}
.calendar-day.purchase-mode .purchase-badge{background:#eef7f1;color:#1e6b43;border-color:#cce6d5}
.calendar-day.failure-mode .calendar-failure-badge{background:#fff1f0;color:#b42318;border-color:#f3c4c0;font-weight:900}
.calendar-day.failure-mode .day-sales{font-weight:900;color:#137047;background:#eef8f1}

.calendar-mode-tip .calendar-purchase-tip-list,.calendar-mode-tip .calendar-failure-tip-list{display:grid;border:1px solid #e0e8ef;border-radius:6px;overflow:hidden}
.calendar-purchase-tip-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:8px;align-items:center;padding:7px 8px;border-top:1px solid #e9eef3;background:#fff}
.calendar-purchase-tip-row:first-child{border-top:0}
.calendar-purchase-tip-row>div{display:flex;align-items:baseline;gap:6px;min-width:0;flex-wrap:wrap}
.calendar-purchase-tip-row strong{font-size:10.5px;color:#173a5d}
.calendar-purchase-tip-row small{font-size:8.5px;color:#66798d}
.calendar-purchase-tip-row span{font-size:9.5px;color:#526b83}
.calendar-purchase-tip-row>b{font-size:11px;color:#172b4d;white-space:nowrap}
.calendar-purchase-tip-row>em{font-size:8.5px;font-style:normal;color:#66798d;white-space:nowrap}
.calendar-finance-tip{display:flex;align-items:center;gap:16px;padding:9px 11px;background:#f4f8fc;border-bottom:1px solid #dce6ef;font-size:11px}
.calendar-finance-tip strong{font-size:11.5px;color:#173a5d}
.calendar-finance-tip span{font-weight:900;color:#36607f}
.calendar-failure-tip-row{display:grid;grid-template-columns:60px minmax(0,1fr) minmax(116px,auto);gap:8px;align-items:center;padding:7px 8px;border-top:1px solid #e9eef3;background:#fff}
.calendar-failure-tip-row:first-child{border-top:0}
.calendar-failure-tip-row time{font-weight:900;color:#b42318;font-variant-numeric:tabular-nums}
.calendar-failure-tip-row>div{display:flex;align-items:center;gap:8px;min-width:0;flex-wrap:wrap}
.calendar-failure-tip-row>div small{color:#66798d;font-size:8.5px}
.calendar-failure-tip-row>div strong{font-size:10px;color:#172b4d}
.calendar-failure-tip-row>div span{font-size:9.5px;color:#526b83}
.calendar-failure-tip-row>b{font-size:10px;color:#173a5d;text-align:right;white-space:nowrap}

.calendar-day-financial-card{display:flex;align-items:center;gap:18px;padding:10px 13px;border:1px solid #cbd9e6;background:#f5f9fd;border-radius:6px}
.calendar-day-financial-card strong{font-size:13px;color:#173a5d}
.calendar-day-financial-card span{font-size:12px;font-weight:900;color:#36607f}
.calendar-detail-station{display:block;margin-top:2px;font-size:10px;color:#708399;font-weight:700}
.calendar-purchase-detail .station-head>div{min-width:0}
.calendar-purchase-main{display:flex;align-items:baseline;gap:10px;margin:12px 0 8px;padding:10px 12px;background:#f4f8fc;border:1px solid #dbe6ef;border-radius:6px}
.calendar-purchase-main span{font-size:11px;font-weight:800;color:#5d7187}
.calendar-purchase-main strong{font-size:20px;color:#173a5d;font-variant-numeric:tabular-nums}
.calendar-purchase-quantities{display:flex;gap:10px;flex-wrap:wrap}
.calendar-purchase-quantities span{display:inline-flex;gap:5px;padding:5px 8px;background:#f8fafc;border:1px solid #e1e8ef;border-radius:5px;font-size:11px;color:#526b83}
.calendar-purchase-quantities b{color:#172b4d}
.calendar-purchase-source{display:block;margin-top:8px;font-size:10px;color:#718399;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.calendar-failure-detail{padding:14px!important}
.calendar-failure-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.calendar-failure-detail-head time{font-size:17px;font-weight:950;color:#b42318;font-variant-numeric:tabular-nums}
.calendar-failure-money{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}
.calendar-failure-money>div{padding:10px 12px;border:1px solid #e1e8ef;background:#f8fafc;border-radius:6px}
.calendar-failure-money span{display:block;margin-bottom:3px;font-size:10px;font-weight:800;color:#66798d}
.calendar-failure-money strong{font-size:18px;color:#b42318}
.calendar-failure-money b{font-size:16px;color:#173a5d}
.failure-approval-no{margin-top:9px;padding:10px 12px;border:2px solid #173f68;background:#fff;border-radius:6px}
.failure-approval-no span{display:block;font-size:10px;font-weight:900;color:#526b83}
.failure-approval-no strong{display:block;margin-top:2px;font-size:24px;line-height:1.1;letter-spacing:.06em;color:#102f50;font-variant-numeric:tabular-nums;word-break:break-all}
.calendar-failure-minor{display:flex;gap:8px;flex-wrap:wrap;margin-top:9px}
.calendar-failure-minor span{font-size:10px;color:#66798d;background:#f5f7fa;border:1px solid #e2e8ef;border-radius:4px;padding:3px 6px}
.calendar-failure-detail p{margin:9px 0 0;font-size:10.5px;color:#66798d}
@media(max-width:900px){.calendar-view-controls{align-items:flex-start;flex-direction:column}.calendar-failure-tip-row{grid-template-columns:52px minmax(0,1fr)}.calendar-failure-tip-row>b{grid-column:2;text-align:left}.calendar-failure-money{grid-template-columns:1fr}.failure-approval-no strong{font-size:21px}.calendar-day-financial-card{flex-wrap:wrap;gap:8px}}

/* v1.3.16 — 달력 매입자료는 글자색을 바꾸지 않고 유종별로 아주 옅은 배경만 깐다. */
.purchase-badge { color: inherit; border-color: rgba(91,102,114,.16); }
.purchase-badge.fuel-bg-reg { background: rgba(224,160,32,.12); }
.purchase-badge.fuel-bg-die { background: rgba(47,158,107,.12); }
.purchase-badge.fuel-bg-hi { background: rgba(235,135,60,.13); }
.purchase-badge.fuel-bg-ker { background: rgba(72,126,176,.10); }
.purchase-badge.fuel-bg-urea { background: rgba(122,111,176,.10); }
.purchase-badge.fuel-bg-etc { background: rgba(91,102,114,.07); }
.day-flag.goods { background: #7a6fb0; }
.calendar-goods-badge { background: rgba(122,111,176,.08); color: inherit; border-color: rgba(122,111,176,.16); }
.calendar-goods-tip-list { display: grid; gap: 6px; }
.calendar-goods-tip-row { display: grid; grid-template-columns: minmax(120px,1fr) auto auto auto; gap: 8px; align-items: center; padding: 7px 8px; border-radius: 8px; background: rgba(122,111,176,.06); }
.calendar-goods-tip-row span,.calendar-goods-tip-row em { font-size: .75rem; font-style: normal; white-space: nowrap; }
.calendar-goods-detail { border-left: 4px solid rgba(122,111,176,.45); }
.calendar-goods-numbers { display: flex; gap: 14px; flex-wrap: wrap; align-items: baseline; }
.calendar-goods-numbers span { display: inline-flex; gap: 5px; align-items: baseline; }
@media (max-width: 700px) { .calendar-goods-tip-row { grid-template-columns: 1fr 1fr; } }

/* v1.3.17 — 마감일지 중심 유외상품 운영현황 */
.goods-overview-panel{margin:0 0 14px;padding:14px;border:1px solid var(--line,#dfe3ea);border-radius:14px;background:var(--panel,#fff)}
.goods-overview-list{display:grid;gap:8px}
.goods-overview-row{display:grid;gap:8px}
.goods-overview-row.problem{box-shadow:inset 4px 0 0 rgba(197,58,58,.72)}
.goods-overview-row.warning{box-shadow:inset 4px 0 0 rgba(206,137,33,.68)}
.goods-overview-values{display:flex;flex-wrap:wrap;gap:8px 18px;font-size:.86rem}
.goods-overview-values span{white-space:nowrap}
.dashboard-goods-strip{margin:14px 0;padding:14px;border:1px solid var(--line,#dfe3ea);border-radius:16px;background:var(--panel,#fff)}
.goods-dash-kpis{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0 12px}
.goods-dash-kpis span{padding:6px 10px;border-radius:999px;background:rgba(88,103,120,.08);font-size:.8rem}
.goods-dash-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(260px,.8fr);gap:14px}
.goods-dash-grid h3{margin:0 0 8px;font-size:.9rem}
.goods-dash-row{width:100%;border:0;border-radius:9px;padding:8px 10px;margin:4px 0;display:flex;align-items:center;justify-content:space-between;text-align:left;background:rgba(88,103,120,.05);color:inherit}
.goods-dash-row.problem{background:rgba(197,58,58,.07)}
.goods-dash-row.warning{background:rgba(206,137,33,.08)}
.goods-dash-row span{display:grid;gap:2px}.goods-dash-row small{opacity:.72}.goods-dash-row strong{font-size:.8rem;white-space:nowrap}
.goods-dash-ok{padding:12px;border-radius:9px;background:rgba(56,132,93,.07);font-size:.83rem}
.goods-dash-chart{height:120px;display:flex;align-items:end;gap:8px;padding:8px 4px 0}
.goods-dash-chart span{height:100%;flex:1;min-width:28px;display:flex;flex-direction:column;justify-content:end;align-items:center;gap:4px}
.goods-dash-chart i{width:70%;min-height:5px;border-radius:5px 5px 2px 2px;background:rgba(91,115,145,.58)}
.goods-dash-chart small{font-size:.7rem;white-space:nowrap}
@media(max-width:800px){.goods-dash-grid{grid-template-columns:1fr}.goods-overview-values{display:grid;grid-template-columns:1fr 1fr}}

/* v1.3.18 — 최근 유외상품 운영현황의 PHONE 전용 배치 보정.
   PC 스타일은 그대로 두고 959px 이하에서만 카드/버튼/그래프가 화면 밖으로 밀리지 않게 한다. */
@media(max-width:959px){
  .dashboard-goods-strip,
  .goods-overview-panel{
    margin:8px 0!important;
    padding:10px!important;
    border-radius:10px!important;
    min-width:0!important;
    overflow:hidden!important;
  }
  .dashboard-goods-strip>.station-head,
  .goods-overview-panel>.station-head,
  .goods-overview-row>.station-head{
    display:grid!important;
    grid-template-columns:minmax(0,1fr)!important;
    gap:7px!important;
    align-items:start!important;
  }
  .dashboard-goods-strip>.station-head>div,
  .goods-overview-panel>.station-head>div,
  .goods-overview-row>.station-head>div{
    min-width:0!important;
  }
  .dashboard-goods-strip>.station-head h2,
  .goods-overview-panel>.station-head h2{
    margin:0 0 2px!important;
    font-size:.92rem!important;
    line-height:1.25!important;
  }
  .dashboard-goods-strip>.station-head small,
  .goods-overview-panel>.station-head small,
  .goods-overview-row>.station-head small{
    display:block!important;
    white-space:normal!important;
    overflow-wrap:anywhere!important;
    line-height:1.35!important;
  }
  .dashboard-goods-strip>.station-head>button,
  .goods-overview-panel>.station-head>button{
    width:100%!important;
    min-height:42px!important;
    margin:0!important;
  }
  .goods-dash-kpis{
    display:grid!important;
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
    gap:5px!important;
    margin:8px 0 10px!important;
  }
  .goods-dash-kpis span{
    min-width:0!important;
    padding:6px 5px!important;
    text-align:center!important;
    white-space:normal!important;
    font-size:.72rem!important;
  }
  .goods-dash-grid{
    grid-template-columns:minmax(0,1fr)!important;
    gap:10px!important;
    min-width:0!important;
  }
  .goods-dash-row{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) auto!important;
    gap:7px!important;
    align-items:center!important;
    min-width:0!important;
    padding:9px!important;
  }
  .goods-dash-row span,
  .goods-dash-row b,
  .goods-dash-row small{
    min-width:0!important;
    white-space:normal!important;
    overflow-wrap:anywhere!important;
  }
  .goods-dash-row strong{
    font-size:.72rem!important;
    white-space:nowrap!important;
  }
  .goods-dash-chart{
    width:100%!important;
    min-width:0!important;
    height:112px!important;
    gap:4px!important;
    overflow:hidden!important;
  }
  .goods-dash-chart span{
    min-width:0!important;
  }
  .goods-dash-chart small{
    font-size:.62rem!important;
    white-space:nowrap!important;
  }
  .goods-overview-values{
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:6px 8px!important;
    font-size:.78rem!important;
  }
  .goods-overview-values span{
    min-width:0!important;
    white-space:normal!important;
    overflow-wrap:anywhere!important;
  }
  .goods-overview-row .badge{
    justify-self:start!important;
  }
  .goods-overview-row .button-row{
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:6px!important;
  }
  .goods-overview-row .button-row>button{
    width:100%!important;
    min-width:0!important;
    min-height:42px!important;
    margin:0!important;
    white-space:normal!important;
  }
  .goods-overview-row .button-row>button:last-child:nth-child(odd){
    grid-column:1/-1!important;
  }
}
@media(max-width:420px){
  .goods-dash-kpis{grid-template-columns:1fr 1fr!important}
  .goods-dash-kpis span:first-child{grid-column:1/-1!important}
  .goods-overview-values{grid-template-columns:1fr!important}
  .goods-dash-row{grid-template-columns:minmax(0,1fr)!important}
  .goods-dash-row strong{justify-self:start!important}
}


/* v1.3.20 — 모든 메뉴 공통 조회기간 + PHONE 실제 반응형 보정.
   폰은 PC 폭을 억지로 축소하지 않고 입력/버튼을 세로로 재배치한다. */
.global-period-bar{display:flex;align-items:end;gap:10px;margin:0 0 12px;padding:10px 12px;border:1px solid var(--line,#dce4ed);border-radius:12px;background:var(--panel,#fff)}
.global-period-copy{display:grid;gap:2px;margin-right:auto;min-width:180px}.global-period-copy strong{font-size:.82rem}.global-period-copy small{font-size:.7rem;color:var(--muted,#6b7785);line-height:1.35}
.global-period-bar label{display:grid;gap:3px;font-size:.68rem;font-weight:800;color:var(--muted,#667085)}
.global-period-bar input{min-height:36px;min-width:142px}
.global-period-bar button{min-height:36px;white-space:nowrap}
@media(max-width:959px){
  #mainContent{max-width:100%;overflow-x:hidden}
  .global-period-bar{display:grid!important;grid-template-columns:1fr 1fr;align-items:end;gap:8px;padding:10px;margin-bottom:10px}
  .global-period-copy{grid-column:1/-1;min-width:0;margin:0}.global-period-copy small{white-space:normal;overflow-wrap:anywhere}
  .global-period-bar label{min-width:0;width:100%}.global-period-bar input{width:100%;min-width:0;max-width:100%;box-sizing:border-box}
  .global-period-bar button{grid-column:1/-1;width:100%}
  .page-title{min-width:0;max-width:100%}.page-title>div,.station-head>div{min-width:0}
  .page-title h1,.page-title p,.station-head h2,.station-head small{overflow-wrap:anywhere}
  .btn-row,.button-row{max-width:100%;flex-wrap:wrap}.btn-row>*{min-width:0;max-width:100%}
  .form-grid{grid-template-columns:1fr!important}.form-grid>*{min-width:0;max-width:100%}
  .inventory-context-bar{grid-template-columns:1fr!important}.inventory-context-bar>*{min-width:0;max-width:100%}
  .inventory-context-bar label,.inventory-context-bar select{width:100%;max-width:100%}
  .tab-bar{max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain}
  .card-list,.station-card,.panel,.form-card,.dashboard-goods-strip,.goods-overview-panel{max-width:100%;min-width:0;box-sizing:border-box}
  table{max-width:100%}
}
@media(max-width:430px){
  .global-period-bar{grid-template-columns:1fr}.global-period-copy,.global-period-bar button{grid-column:1}.global-period-bar label{grid-column:1}
  .page-title .btn-row{width:100%}.page-title .btn-row input,.page-title .btn-row button{width:100%}
}

/* ============================================================
   v1.3.21 — 운영 대시보드/입고예정/유외상품: PC+모바일 동시 보강
   - 글보다 그래프, 정상은 담백하게 / 부족·위험만 강하게
   - 유외상품은 Excel형 촘촘한 표
   - 달력은 오늘 / 입고예정 / 실제입고를 즉시 구분
   ============================================================ */
.v1321-dashboard{display:grid;gap:8px;min-width:0}
.v1321-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;padding:0 2px 2px}
.v1321-head small{font-size:9px;color:#667085;font-weight:800}
.v1321-head h2{margin:2px 0 0;font-size:17px;line-height:1.15;letter-spacing:-.02em;color:#172b4d}
.v1321-head-status{display:flex;align-items:center;gap:7px;font-size:9px;color:#667085}
.v1321-head-status button{min-height:28px;padding:3px 9px;border:1px solid #d7e0e9;background:#fff;border-radius:6px;color:#37516d;font-weight:900}
.v1321-kpis{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:5px}
.v1321-kpis .v1200-kpi{min-height:58px;padding:6px 8px;border-radius:7px;gap:1px;box-shadow:none;background:#fff}
.v1321-kpis .v1200-kpi>span{font-size:8px;font-weight:850}
.v1321-kpis .v1200-kpi>strong{font-size:15px;line-height:1.1}
.v1321-kpis .v1200-kpi>small{font-size:7.5px}
.v1321-kpis .v1200-kpi>b{right:6px;top:5px;font-size:9px}
.v1321-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:7px;min-width:0}
.v1321-card{min-width:0;border:1px solid #dce4ed;border-radius:8px;background:#fff;padding:8px 9px;box-shadow:0 1px 3px #1018280a;overflow:hidden}
.v1321-card>header{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:6px;border-bottom:1px solid #edf1f5;padding-bottom:5px}
.v1321-card>header h3{margin:0;font-size:11.5px;color:#173a5d;letter-spacing:-.015em}
.v1321-card>header small{font-size:7.5px;color:#7a8796;white-space:nowrap}
.v1321-empty{min-height:68px;display:grid;place-items:center;padding:8px;border:1px dashed #d9e1ea;border-radius:6px;color:#7a8796;font-size:8.5px;text-align:center;background:#fbfcfd}
.v1321-bars{display:grid;gap:4px;min-width:0}
.v1321-bar-row{appearance:none;border:0;background:transparent;color:inherit;width:100%;display:grid;grid-template-columns:minmax(96px,1.25fr) minmax(90px,1.8fr) minmax(70px,.7fr) minmax(62px,.8fr);align-items:center;gap:6px;min-height:24px;padding:2px 3px;border-radius:4px;text-align:left;font:inherit;min-width:0}
button.v1321-bar-row{cursor:pointer}.v1321-bar-row:hover{background:#f7faff}
.v1321-bar-row>span{font-size:8.5px;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#344054}
.v1321-bar-row>i{position:relative;height:8px;border-radius:2px;background:#eef2f6;overflow:visible;min-width:0}
.v1321-bar-row>i>em{display:block;height:100%;min-width:1px;border-radius:2px;background:#6688ab}
.v1321-bar-row>i>u{position:absolute;top:-3px;bottom:-3px;width:1px;background:#b42318;text-decoration:none;opacity:.85}
.v1321-bar-row>strong{font-size:8.5px;text-align:right;white-space:nowrap;color:#27364a;font-variant-numeric:tabular-nums}
.v1321-bar-row>small{font-size:7.2px;color:#7b8795;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v1321-bar-row.bad{background:#fff4f2}.v1321-bar-row.bad>i>em{background:#d92d20}.v1321-bar-row.bad>strong,.v1321-bar-row.bad>small{color:#b42318;font-weight:900}
.v1321-bar-row.warn{background:#fffaf0}.v1321-bar-row.warn>i>em{background:#e9a23b}.v1321-bar-row.warn>strong{color:#9a6700}
.v1321-bar-row.ok>i>em{background:#4d9b72}.v1321-bar-row.unknown>i>em{background:#98a2b3}
.v1321-hourly{height:105px;display:grid;grid-template-columns:repeat(24,minmax(0,1fr));align-items:end;gap:2px;padding:7px 3px 1px;border-bottom:1px solid #e5eaf0}
.v1321-hourly>span{height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:2px;min-width:0}
.v1321-hourly i{display:block;width:100%;min-height:2px;background:#577da5;border-radius:2px 2px 0 0}
.v1321-hourly small{height:10px;font-size:6px;color:#788696}
.v1321-foot{margin:5px 1px 0;font-size:7.5px;color:#667085}
.v1321-inbound{display:grid;gap:3px;max-height:166px;overflow:auto}
.v1321-inbound button{display:grid;grid-template-columns:72px minmax(0,1fr) auto;gap:7px;align-items:center;min-height:27px;padding:4px 6px;border:1px solid #e7ecf1;background:#fbfdff;border-radius:5px;text-align:left;color:#344054}
.v1321-inbound time{font-size:7.5px;font-weight:850;color:#35638d}.v1321-inbound span{font-size:8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.v1321-inbound strong{font-size:8px;white-space:nowrap}

/* 달력 상태: 예정은 점선/연한 파랑, 실제 입고는 초록. 오늘은 셀 전체를 부드럽게 강조. */
.calendar-day.today{background:#eef6ff!important;border-color:#3b82c4!important;box-shadow:inset 0 0 0 2px #3b82c4!important}
.calendar-day.today>.day-head{background:#e2f0ff;border-radius:4px;padding:2px 3px}
.today-label{display:inline-flex;align-items:center;justify-content:center;margin-left:auto;padding:1px 5px;border-radius:999px;background:#2f6fa8;color:#fff;font-size:7px;font-weight:900;letter-spacing:-.02em}
.calendar-day .delivery-badge.expected{background:#f2f7ff!important;color:#285d8f!important;border:1px dashed #78a7d2!important;font-weight:850}
.calendar-day .delivery-badge.received{background:#edf8f1!important;color:#17633a!important;border:1px solid #91c9a6!important;font-weight:900}
.calendar-day .purchase-badge.actual{border-style:solid!important;box-shadow:inset 3px 0 0 #2f8f5b}
.calendar-day .delivery-badge.expected::first-letter{font-weight:900}.calendar-day .delivery-badge.received::first-letter{font-weight:900}
.calendar-delivery-simple,.calendar-delivery-grid.simple{display:grid;grid-template-columns:repeat(5,minmax(120px,1fr));gap:7px;align-items:end}
.calendar-delivery-advanced{margin-top:7px;border:1px solid #e1e7ee;border-radius:7px;padding:6px 8px;background:#fbfcfe}.calendar-delivery-advanced summary{cursor:pointer;font-size:8.5px;font-weight:850;color:#50647b}

/* 유외상품: 빈 카드 대신 실제 품목만 Excel형 한 표에 촘촘하게 표시 */
.goods-overview-panel{padding:8px!important;border-radius:8px!important;margin-bottom:8px!important}
.goods-overview-panel>.station-head{margin-bottom:5px}.goods-overview-panel>.station-head h2{font-size:13px;margin:0}.goods-overview-panel>.station-head small{font-size:8px}
.goods-sheet-summary{display:flex;align-items:center;gap:4px;flex-wrap:wrap;margin:3px 0 7px}
.goods-sheet-summary>span{display:inline-flex;align-items:baseline;gap:5px;padding:3px 7px;border:1px solid #e1e7ee;border-radius:4px;background:#fafbfd}
.goods-sheet-summary small{font-size:7px;color:#667085}.goods-sheet-summary b{font-size:9px;color:#27364a}.goods-sheet-summary .bad{background:#fff1f0;border-color:#f1c7c3}.goods-sheet-summary .bad b{color:#b42318}.goods-sheet-summary .warn{background:#fff9eb;border-color:#efd9a6}.goods-sheet-summary .warn b{color:#946200}
.goods-sheet-table-wrap{width:100%;overflow:auto;border:1px solid #dfe5ec;border-radius:5px;background:#fff}
.goods-sheet-table{width:100%;min-width:940px;border-collapse:collapse;font-size:8.5px}
.goods-sheet-table th{height:27px;padding:4px 6px;background:#f3f7fb;color:#3e566e;border:1px solid #dfe5ec;font-size:7.5px;white-space:nowrap;position:sticky;top:0;z-index:1}
.goods-sheet-table td{height:30px;padding:3px 6px;border:1px solid #e5e9ee;background:#fff;white-space:nowrap;font-variant-numeric:tabular-nums}
.goods-sheet-table tr.bad td{background:#fff5f4}.goods-sheet-table tr.warn td{background:#fffbf2}.goods-sheet-table tr:hover td{background:#f7fbff}
.goods-sheet-table .goods-name{white-space:normal;min-width:120px}.goods-sheet-table .goods-name b{display:block;font-size:8.5px}.goods-sheet-table .goods-name small{display:block;margin-top:1px;color:#8a96a3;font-size:6.8px}
.goods-sheet-table .num{text-align:right}.goods-sheet-table .strong{font-weight:900}
.goods-sheet-status{display:inline-flex;padding:2px 5px;border-radius:999px;font-size:7px;font-weight:900;background:#edf7f1;color:#1b6b44}.goods-sheet-status.bad{background:#feeceb;color:#b42318}.goods-sheet-status.warn{background:#fff4d9;color:#946200}
.goods-sheet-actions{display:flex;gap:3px}.goods-sheet-actions button{min-height:24px!important;height:24px!important;padding:2px 6px!important;border-radius:4px!important;font-size:7px!important}

/* 마감일지 편집 진입: 엑셀형 보기에서 바로 인식 원본 수정으로 연결 */
.sheet-actions .sheet-edit{background:#173f68;color:#fff;border-color:#173f68}.sheet-edit-hint{font-size:7.5px;color:#667085;margin-left:4px}

@media(max-width:1100px){
  .v1321-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}
  .calendar-delivery-simple,.calendar-delivery-grid.simple{grid-template-columns:repeat(3,minmax(120px,1fr))}
}
@media(max-width:959px){
  .v1321-dashboard{gap:7px}
  .v1321-head{align-items:flex-start}.v1321-head h2{font-size:15px}.v1321-head-status{align-self:center}
  .v1321-kpis{grid-template-columns:repeat(3,minmax(0,1fr));gap:4px}
  .v1321-kpis .v1200-kpi{min-height:52px;padding:5px 6px}.v1321-kpis .v1200-kpi>strong{font-size:13px}
  .v1321-grid{grid-template-columns:1fr;gap:6px}
  .v1321-card{padding:7px}.v1321-card>header h3{font-size:11px}
  .v1321-bar-row{grid-template-columns:minmax(78px,1.1fr) minmax(70px,1.4fr) minmax(64px,.7fr);gap:4px;min-height:25px}
  .v1321-bar-row>small{grid-column:1/-1;padding-left:2px;white-space:normal}
  .v1321-hourly{height:92px;gap:1px}
  .calendar-delivery-simple,.calendar-delivery-grid.simple{grid-template-columns:1fr 1fr}
  .goods-overview-panel{padding:7px!important}
  .goods-sheet-table-wrap{border-radius:4px}
  .goods-sheet-table{min-width:760px;font-size:8px}
  .goods-sheet-table th{font-size:7px}.goods-sheet-table td{font-size:7.8px}
}
@media(max-width:560px){
  .v1321-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .v1321-head{display:grid;grid-template-columns:1fr auto}.v1321-head small{font-size:8px}.v1321-head h2{font-size:14px}
  .v1321-bar-row{grid-template-columns:minmax(84px,1fr) minmax(60px,1fr) auto}.v1321-bar-row>span{font-size:8px}.v1321-bar-row>strong{font-size:8px}
  .calendar-delivery-simple,.calendar-delivery-grid.simple{grid-template-columns:1fr}
  .today-label{font-size:6.5px}
  .goods-sheet-summary{display:grid;grid-template-columns:1fr 1fr}.goods-sheet-summary>span{justify-content:space-between}
  .goods-sheet-table{min-width:690px}
}
.v1321-bars.margin .v1321-bar-row.bad>i>em{background:#d92d20}
.v1321-bars.margin .v1321-bar-row.warn>i>em{background:#d9a441}
.v1321-quick-card{padding-bottom:7px}.v1321-quick-card .v1200-quick{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:5px}.v1321-quick-card .v1200-quick button{min-height:42px;padding:6px 7px}.v1321-quick-card .v1200-quick b{font-size:9px}.v1321-quick-card .v1200-quick small{font-size:7px}
@media(max-width:959px){.v1321-quick-card .v1200-quick{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.v1321-quick-card .v1200-quick button{min-height:40px}}

/* v1.3.22 — 조회실패/예측보류/전체목록 표시 */
.v1321-empty.error{border-style:solid;border-color:#f1b8b2;background:#fff5f4;color:#b42318;grid-template-columns:1fr auto;gap:8px}
.v1321-empty.error button{min-height:25px;padding:3px 7px;border:1px solid #d92d20;border-radius:5px;background:#fff;color:#b42318;font-size:7.5px;font-weight:900}
.v1321-note.warn{margin:0 0 5px;padding:5px 7px;border:1px solid #efd59b;border-radius:5px;background:#fff9eb;color:#8a5a00;font-size:7.5px;font-weight:800}
.v1322-forecast-pending{margin:5px 0 0;padding:5px 8px;border:1px solid #e3e8ef;border-radius:5px;background:#fafbfd;color:#5d6b7a;font-size:7.5px}
ul.v1322-forecast-pending{padding-left:20px}.v1322-forecast-pending p{margin:3px 0}.v1322-forecast-pending summary{cursor:pointer;font-weight:900}
.v1321-bars.tank,.v1321-bars.goods,.v1321-bars.forecast{max-height:310px;overflow:auto;padding-right:2px}
.v1322-basis-strip{display:flex;gap:4px;flex-wrap:wrap;margin-top:-2px}.v1322-basis-strip span{padding:3px 6px;border:1px solid #e3e8ef;border-radius:4px;background:#fafbfd;color:#667085;font-size:7px}.v1322-basis-strip b{color:#344054}
.goods-focus-row td{animation:v1322Focus 2.2s ease both;box-shadow:inset 0 1px #2f75b5,inset 0 -1px #2f75b5}
@keyframes v1322Focus{0%,65%{background:#eaf4ff}100%{background:inherit}}
@media(max-width:959px){.v1321-bars.tank,.v1321-bars.goods,.v1321-bars.forecast{max-height:360px}.v1322-basis-strip{display:grid;grid-template-columns:1fr 1fr}.v1321-empty.error{grid-template-columns:1fr}}
@media(max-width:560px){.v1322-basis-strip{grid-template-columns:1fr}.v1322-basis-strip span{font-size:7.2px}}

/* v1.3.23 — 대표 전용 전체 비교 대시보드. 개별 주유소 대시보드는 기존 규칙 유지. */
.v1323-ceo .v1321-kpis .v1200-kpi>span{font-size:10px;font-weight:900;color:#38516a}
.v1323-ceo .v1321-kpis .v1200-kpi>strong{font-size:16px}
.v1323-ceo .v1321-card>header h3{font-size:12.5px}
.v1323-ceo .v1321-card>header small{font-size:8px}
.v1323-column-chart,.v1323-station-columns{height:176px;display:grid;grid-auto-flow:column;grid-auto-columns:minmax(44px,1fr);align-items:end;gap:7px;padding:12px 6px 2px;border-bottom:1px solid #e2e8f0;overflow-x:auto;overflow-y:hidden}
.v1323-column{height:100%;min-width:44px;display:grid;grid-template-rows:1fr auto auto;gap:3px;align-items:end;text-align:center}
.v1323-column>i,.v1323-station-column>i{height:118px;display:flex;align-items:flex-end;justify-content:center;border-radius:5px 5px 0 0;background:linear-gradient(180deg,#f7fafe 0,#eef4f9 100%);overflow:hidden}
.v1323-column>i>em,.v1323-station-column>i>em{display:block;width:min(34px,74%);min-height:2px;border-radius:5px 5px 0 0;background:#557fa7}
.v1323-column>b,.v1323-station-column>b{font-size:8.5px;color:#20374f;white-space:nowrap;font-variant-numeric:tabular-nums}
.v1323-column>small{font-size:7.5px;color:#6e7e8e;white-space:nowrap}
.v1323-station-column{appearance:none;border:0;background:transparent;min-width:58px;height:100%;display:grid;grid-template-rows:1fr auto auto;gap:3px;align-items:end;text-align:center;padding:0 2px;cursor:pointer;color:inherit}
.v1323-station-column:hover>i{background:#f0f6fb}.v1323-station-column:hover>i>em{background:#326f9f}
.v1323-station-column>span{font-size:8px;font-weight:900;color:#42566b;line-height:1.15;min-height:18px;display:flex;align-items:flex-start;justify-content:center;white-space:normal}
.v1323-chart-help{margin:5px 2px 0;font-size:7.5px;color:#758393;text-align:right}
.v1323-station-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:6px}
.v1323-station-tile{appearance:none;border:1px solid #dce4ed;border-radius:7px;background:#fbfdff;padding:8px 9px;text-align:left;color:#25364a;cursor:pointer;min-width:0}
.v1323-station-tile:hover{border-color:#93b5d4;background:#f6fbff}.v1323-station-tile.bad{border-left:4px solid #d92d20;background:#fff8f7}.v1323-station-tile.warn{border-left:4px solid #e9a23b}.v1323-station-tile.ok{border-left:4px solid #4d9b72}
.v1323-station-tile>header{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:7px}.v1323-station-tile>header b{font-size:10.5px}.v1323-station-tile>header em{font-style:normal;font-size:7.5px;color:#52718d;font-weight:900;white-space:nowrap}
.v1323-station-tile>div{display:grid;grid-template-columns:1fr 1fr;gap:5px}.v1323-station-tile>div span{display:grid;gap:1px;padding:5px 6px;border-radius:5px;background:#fff;border:1px solid #edf1f5}.v1323-station-tile>div small{font-size:7px;color:#718096}.v1323-station-tile>div strong{font-size:10px;color:#20374f;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v1323-station-tile>footer{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}.v1323-station-tile>footer span{padding:2px 5px;border-radius:999px;background:#eef3f7;font-size:7px;color:#5d6b79;font-weight:850}.v1323-station-tile>footer span.bad{background:#fee4e2;color:#b42318}.v1323-station-tile>footer span.warn{background:#fff1cc;color:#8a5a00}
.v1323-station-groups{display:grid;grid-template-columns:repeat(auto-fit,minmax(310px,1fr));gap:7px;align-items:start}
.v1323-station-groups.goods{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}
.v1323-station-group{min-width:0;border:1px solid #e5eaf0;border-radius:7px;background:#fcfdff;overflow:hidden}
.v1323-station-group>header{background:#f5f8fb;border-bottom:1px solid #e5eaf0}.v1323-station-group>header button{appearance:none;border:0;background:transparent;width:100%;display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:7px;align-items:center;padding:6px 8px;text-align:left;color:#2c4358;cursor:pointer}.v1323-station-group>header button:hover{background:#edf5fb}.v1323-station-group>header b{font-size:9.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.v1323-station-group>header span{font-size:7.5px;color:#6f7f8e;white-space:nowrap}.v1323-station-group>header em{font-size:7px;font-style:normal;font-weight:900;color:#52718d;white-space:nowrap}
.v1323-station-group>.v1321-bars{padding:4px 5px 5px;max-height:none!important;overflow:visible!important}
.v1323-full{grid-column:1/-1}
@media(max-width:959px){
  .v1323-ceo .v1321-kpis .v1200-kpi>span{font-size:9px}.v1323-ceo .v1321-kpis .v1200-kpi>strong{font-size:14px}
  .v1323-column-chart,.v1323-station-columns{height:154px;grid-auto-columns:minmax(48px,1fr);gap:5px;padding-left:2px;padding-right:2px}
  .v1323-column>i,.v1323-station-column>i{height:98px}.v1323-column>b,.v1323-station-column>b{font-size:8px}
  .v1323-station-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}.v1323-station-groups,.v1323-station-groups.goods{grid-template-columns:1fr}
}
@media(max-width:560px){
  .v1323-ceo .v1321-kpis .v1200-kpi>span{font-size:8.8px}.v1323-ceo .v1321-card>header h3{font-size:11.5px}
  .v1323-station-tiles{grid-template-columns:1fr}.v1323-station-tile>div{grid-template-columns:1fr 1fr}
  .v1323-column-chart,.v1323-station-columns{height:146px;grid-auto-columns:minmax(52px,1fr)}
  .v1323-station-group>header button{grid-template-columns:1fr auto}.v1323-station-group>header em{display:none}
}

/* v1.3.40 — 운영현황 범위/유류 전체실측 전용 보강. 공통 레이아웃은 변경하지 않는다. */
.dashboard-station-context{margin:.18rem 0 .08rem;font-weight:700;color:var(--text,#243746)}
.inventory-measure-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;margin:12px 0}
.inventory-measure-grid label{display:grid;gap:6px;padding:10px;border:1px solid var(--line,#d9e1e8);border-radius:10px;background:var(--panel,#fff)}
.inventory-measure-grid label small{font-size:.82rem;opacity:.78}
@media(max-width:720px){.inventory-measure-grid{grid-template-columns:1fr}}

/* v1.3.107 — 주유소관리 + 세차장 통합 설치센터 */
.install-dialog{width:min(94vw,620px)}
/* v1.3.114 — 설치센터(앱 두 장 고르기)를 없애고, 지금 만드는 아이콘 하나만 크게 보여 준다. */
.install-here{display:flex;align-items:center;gap:14px;padding:14px 16px;border-radius:16px;background:#eef5ff;border:1px solid #c9dcff;margin:12px 0 14px}
.install-here-icon{width:58px;height:58px;border-radius:16px;flex:0 0 58px;box-shadow:0 4px 12px #16324f1f}
.install-here-copy strong,.install-here-copy span{display:block}
.install-here-copy strong{font-size:1.05rem;color:#173b67}
.install-here-copy span{margin-top:4px;color:#51677f;font-size:.86rem}
.install-plain{margin:10px 2px;color:var(--text);font-size:.92rem;line-height:1.65}
.install-plain.ok{color:#067647;font-weight:700}
.install-plain.warn{color:#9a3412;font-weight:700}
.install-tell-apart{margin:14px 0 4px;padding:13px 15px;border:1px dashed #d8e1ec;border-radius:14px;background:#fbfcfe}
.install-tell-apart>strong{display:block;font-size:.9rem;color:#173b67;margin-bottom:9px}
.install-tell-row{display:flex;align-items:center;gap:11px;margin:7px 0}
.install-tell-row img{width:38px;height:38px;border-radius:11px;flex:0 0 38px}
.install-tell-row span{font-size:.85rem;line-height:1.45;color:var(--muted)}
.install-tell-row span b{color:var(--text)}
.install-tell-apart small{display:block;margin-top:10px;color:var(--muted);font-size:.78rem;line-height:1.5}


/* v1.3.108 — 상단 앱 설치 분리 + 세차장 공용 PC 로그인 확인 */
.install-top-main,.install-top-carwash{font-weight:700!important;border-radius:9px!important;padding-inline:11px!important}
.install-top-main{background:#e8f1ff!important;border-color:#94bfff!important;color:#124f9c!important}
.install-top-carwash,.carwash-install-button{background:#e7f8f2!important;border-color:#7acdaf!important;color:#116149!important;font-weight:700!important}
.install-top-main:hover{background:#d9e9ff!important}.install-top-carwash:hover,.carwash-install-button:hover{background:#d3f2e7!important}
.carwash-login-confirm-note{margin:8px 0 2px;color:#64748b;font-size:12px;line-height:1.45}
.carwash-session-continue{margin-top:8px;background:#0f766e!important;border-color:#0f766e!important}
.install-manual-help{margin-top:12px}
@media(max-width:959px){.login-card .carwash-install-button{width:100%;margin-top:8px}.install-top-main,.install-top-carwash{display:none!important}}

@media(max-width:640px){.install-dialog{width:min(96vw,520px)}.install-here-icon{width:50px;height:50px;flex:0 0 50px}}

/* v1.3.133 — 폰 운영현황 머리 정리 (대기열 12번)
 * 1) 메뉴 요약 띠(#menuContextStrip)는 운영현황에서 hidden 인데, 폰 규칙 `.menu-context-strip{display:grid!important}` 가
 *    `[hidden]{display:none!important}` 와 무게가 같고 뒤에 있어서 이겼다 → 모든 폰 화면 맨 위에 빈 흰 줄이 떴다.
 * 2) 운영현황 머리(PC 에서는 v119 가 통째로 숨김)가 폰에서는 보이는데, 제목 옆에 조회월·필요물량 기준일·새로고침이
 *    178px 칸에 붙어 제목 설명이 좁게 줄바꿈되고, 조회월은 바로 위 '조회기간' 막대와 같은 것(두 개).
 *    조회월은 막대가 이미 맡으므로(MENU_PERIOD_FIELDS dashboard → trendMonth) 폰에서는 뺀다.
 *    필요물량 기준일·새로고침은 폰에서만 바꿀 수 있는 것이라 남기고 제목 아래 한 줄로 둔다. */
@media(max-width:959px){
  .menu-context-strip[hidden]{display:none!important}
  [data-view="dashboard"]>.page-title{flex-direction:column;align-items:stretch;gap:8px}
  [data-view="dashboard"]>.page-title .dashboard-period-controls{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:end;width:100%}
  [data-view="dashboard"]>.page-title .dashboard-period-controls>label:first-child{display:none}
  /* v1.3.136 — 머리의 '새로고침'(#refreshDashboard)은 바로 아래 운영현황 묶음의 '새로고침 ↻'·'↻' 와 똑같이 loadDashboard 를 부른다
     (크로미움: 셋 다 같은 12개 조회). PC 처럼 폰도 아래 것만 둔다. 기준일 칸이 한 줄을 다 쓴다. */
  [data-view="dashboard"]>.page-title #refreshDashboard{display:none}
  [data-view="dashboard"]>.page-title .dashboard-period-controls{grid-template-columns:minmax(0,1fr)}
}

/* v1.3.137 — 폰 작은 누름칸 (대기열 16번)
 * 크로미움 390px 소장·직원으로 42px 미만 누름칸을 뽑아 원인을 찾음(모두 PC 촘촘한 규칙이 폰에도 걸린 것):
 *  - 달력 '입고 일정 등록' 칸 8개: `.calendar-delivery-grid input,select{height:32px!important;font-size:11px!important}`(CALENDAR_WORKSPACE_V125, 화면 크기 구분 없음)
 *    → 폰에서 32px·글자 11px. 아이폰은 16px 보다 작은 글자 칸을 누르면 화면이 확대된다.
 *  - 달력 '매입자료·유외상품·확정실패', '부피수량·환산수량' 전환 단추 34px·12px (`.calendar-mode-option{min-height:34px}` 이 폰 44px 규칙보다 무거움)
 *  - 업무 화면 '새로고침·전체·달력 열기' 31px·글자 9.6px (`.mobile-card-head button{min-height:31px!important}`)
 *  - 운영현황 '↻' 28px·글자 9px (`.v1321-head-status button{min-height:28px}`)
 * 폰(959px 이하)에서만 44px 이상·읽을 수 있는 글자로. PC 는 그대로. */
@media(max-width:959px){
  .calendar-delivery-form .calendar-delivery-grid input,.calendar-delivery-form .calendar-delivery-grid select{height:auto!important;min-height:44px!important;font-size:16px!important}
  .calendar-mode-switch .calendar-mode-option,.calendar-legendbar .qty-option{min-height:44px;font-size:14px}
  .mobile-home-card .mobile-card-head button{min-height:44px!important;font-size:14px!important;padding:6px 12px!important}
  .v1321-head .v1321-head-status button{min-height:44px;min-width:44px;font-size:18px}
}

/* v1.3.138 — 어둡게 모드 글자 대비 (대기열 17번, 크로미움으로 글자·배경 대비를 계산해 3 미만만 뽑음)
 *  - 폰 모든 메뉴 위 '← 홈 · 메뉴 이름' 줄: 어둡게 규칙이 줄 배경만 어둡게 바꾸고 `.mobile-view-bar b{color:#1b3450}` 는 남아 대비 1.36(안 보임).
 *  - 마감일지 아래 탭(종합 합계·확정실패·통합입고): 어둡게 배경 위 `.sheet-tab{color:var(--s2)}` 짙은 남색, 대비 1.53. */
html[data-theme="dark"] .mobile-view-bar b{color:#e6ecf3}
html[data-theme="dark"] .sheet-tab:not(.active){color:#c9d6e3}
/*  - 안내·오류 글(.message): 화면 코드가 글자색을 직접 넣는다(빨강 #b42318 71곳 · 초록 #067647 42곳 · 주황 #b45309 16곳).
 *    어둡게 배경(#141b24)에서 빨강 대비 2.64 · 초록 3.04 · 주황 3.45 → 같은 뜻의 밝은 색으로(대비 8.9 · 9.3 · 9.4). */
html[data-theme="dark"] .message[style*="rgb(180, 35, 24)"]{color:#fda29b!important}
html[data-theme="dark"] .message[style*="rgb(6, 118, 71)"]{color:#5dd39e!important}
html[data-theme="dark"] .message[style*="rgb(180, 83, 9)"]{color:#fdb022!important}

/* v1.3.139 — PC 어둡게 모드 (대기열 18번). 1366px 소장·대표 모든 메뉴에서 대비 3 미만은 '업무' 화면 주유소 표 한 곳뿐이었다:
 *  - 표 머리 `.role-station-table-head{background:var(--ui115-head)!important}` 가 어둡게에서도 밝은 회색 → 어둡게용 흐린 글자와 대비 1.97
 *  - '판매자료 없음' `.station-main-sales b{color:#1a2e48}` 어두운 바탕에 대비 1.26 · 탱크 이름 `.station-tank-name{color:#526377}` 2.81 */
html[data-theme="dark"] .role-station-table-head{background:#1c2430!important;border-bottom-color:#2e3a48!important}
html[data-theme="dark"] .station-main-sales b{color:#e6ecf3}
html[data-theme="dark"] .station-tank-name{color:#9fb0c2}

/* v1.3.140 — PC 업무 화면 '담당 주유소 한눈표' 가 오른쪽 카드 밑으로 들어가던 것 (대기열 19번)
 * 마지막으로 이기는 규칙 `.role-station-table-head, .role-station-mini{grid-template-columns:minmax(180px,.9fr) minmax(330px,1.45fr) minmax(390px,1.6fr) 30px!important}`
 * 의 최소 폭 합이 969px(칸 930 + 간격 21 + 안쪽 여백 18)인데, 표 자리는 1366px 화면에서 856px · 1280px 에서 778px 라
 * 줄이 오른쪽으로 넘쳐 '지금 확인할 일' 카드 밑에 5번째 진행 칸이 가려졌다(크로미움으로 잰 값). 1536px 이상은 표 자리가 넓어 괜찮다.
 * 그 구간에서만 앞 두 칸(주유소·매출 / 탱크)의 최소 폭을 줄인다. 진행 칸 5개(각 최소 62px)는 그대로 들어간다. */
@media(min-width:960px) and (max-width:1535px){
  .role-station-table .role-station-table-head,.role-station-table .role-station-mini{grid-template-columns:minmax(120px,.9fr) minmax(150px,1.45fr) minmax(340px,1.6fr) 30px!important}
}
/* 1199px 이하(작은 노트북·가로 태블릿)는 한 줄로 쌓는다 — 원래 뜻(styles.css `@media(max-width:1100px){.role-dashboard-grid{grid-template-columns:1fr}}`)을
 * 뒤쪽 PC 규칙 `.role-dashboard-grid{grid-template-columns:minmax(0,2.35fr) minmax(260px,.72fr)!important}` 가 이겨 1024px 에서 표 자리가 522px 로 좁아졌었다.
 * 1101~1199px 도 두 줄이면 표 자리(599px 부터)가 위 최소 폭(679px)보다 좁아 같은 문제라 1199px 까지 넓혔다(크로미움 1101px 에서 확인). */
@media(min-width:960px) and (max-width:1199px){
  .desktop-workcenter .role-dashboard-grid{grid-template-columns:minmax(0,1fr)!important}
}

/* v1.3.141 — PC 1280·1366 겹침·넘침 점검 (대기열 20번)
 * 업무 화면 한눈표의 탱크 칸: 한 줄(이름·막대·값) 격자가 `65px minmax(90px,1fr) minmax(128px,.9fr)` 로 최소 295px 인데
 * v1.3.140 에서 탱크 칸이 1280px 화면 227px · 1366px 275px 로 좁아져 값(실측량/용량)이 옆 진행 칸 쪽으로 74px · 23px 넘쳤다.
 * 같은 구간(960~1535px)에서만 이름·막대가 줄어들고 값은 글자 길이만큼 차지하게 한다. */
@media(min-width:960px) and (max-width:1535px){
  .role-station-table .station-tank-line{grid-template-columns:minmax(44px,65px) minmax(36px,1fr) auto!important}
}
/* 좁은 옆 칸(알림 받기 설정 230px · 자료함 사진 인식 준비 240px)의 카드 목록: `.card-list{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))!important}`
 * 이라 칸보다 넓은 260px 카드가 20~30px 밖으로 나갔다. 칸이 260px 보다 좁을 때만 칸 폭에 맞춘다(넓은 칸은 그대로 260px 기준). */
@media(min-width:960px){
  .card-list{grid-template-columns:repeat(auto-fill,minmax(min(260px,100%),1fr))!important}
}
/* 달력 위 요약 칸이 자료를 못 불렀을 때 뜨는 '일부 자료 확인 필요 / 마감일지 확정실패' 는 글자가 길어(한 줄 고정) 칸 밖으로 85~106px 넘쳤다. 이 경고 칸만 줄바꿈. */
.calendar-summary .cal-kpi.warn strong{white-space:normal!important;overflow-wrap:anywhere}
/* PC(1200px 이상) 달력 위 '오늘' 단추가 34px 폭에 글자 11px 이라 '오 / 늘' 로 세로로 갈라졌다
 * (`[data-view="calendar"] .calendar-move .quiet{min-width:34px!important}`). 이 단추만 한 줄로. 옆 달 고르기 칸이 조금 줄어든다. */
@media(min-width:1200px){
  [data-view="calendar"] .calendar-move #calendarToday{min-width:44px!important;white-space:nowrap}
}

/* v1.3.142 — 글자가 한두 자씩 세로로 갈라진 곳 (대기열 21번)
 * 크로미움으로 모든 메뉴의 글자 줄 수를 세서(Range.getClientRects), 2줄 이상인데 가장 짧은 줄이 글자 2자 폭보다 좁은 것을 뽑음:
 *  - 세차장 '주유소별 오늘 세차 수납' 표: 10칸이 폰 326px 에 끼워져 '무/한/대/주/유/소' 처럼 한 자씩(가로 스크롤 칸 안인데도 표가 칸 폭에 맞춰 줄어듦).
 *    폰은 칸 글자를 한 줄로 두고 기존 가로 스크롤 칸(.cw-table-scroll)이 밀어 준다. PC 1280·1366 은 '전/체' 처럼 낱말 안에서 끊기던 머리만 낱말 단위로.
 *  - 외상 원장 '외상 · 선입금 · 보관증' 전환 단추(PC): '선입 / 금', '보관 / 증' → 한 줄.
 *  - 폰 아침 보고 현황 표 머리: '현금마 / 감', '마감일 / 지' → 낱말 안에서 끊지 않고 옆 여백을 줄임.
 *  - 폰 공지·운영 머리 '새로 / 고침' 단추 → 한 줄.
 *  - 달력 오늘 칸 '오 / 늘' 표시(7px) → 한 줄. */
.cw-table-scroll .cw-summary-table th{word-break:keep-all}
@media(max-width:959px){.cw-table-scroll .cw-summary-table th,.cw-table-scroll .cw-summary-table td{white-space:nowrap}}
/*   그 표를 담은 칸이 글자 한 줄 폭(폰 592px)만큼 커지지 않도록(격자 칸 기본 최소 폭 auto) — 칸은 화면 폭 그대로, 표만 가로로 밀림. */
.carwash-grid-two>*{min-width:0}
.segmented button{white-space:nowrap}
.today-label{white-space:nowrap}
@media(max-width:959px){
  .v55-morning-head span{padding-left:4px;padding-right:4px;word-break:keep-all}
  .view>.page-title button{white-space:nowrap}
}

/* v1.3.143 — 폰 입력칸 글자 16px (대기열 22번)
 * 아이폰(사파리)은 글자가 16px 보다 작은 입력칸을 누르면 화면을 확대한다 — 어르신들이 "화면이 커졌다" 며 당황하고 되돌리기 어렵다.
 * 크로미움 390px 로 모든 메뉴의 입력칸 글자 크기를 모아 보니 16px 미만 12곳, 모두 `button, input, select, textarea { font: inherit; }` (styles.css 앞쪽)로
 * 작은 글자 칸(라벨 등)의 크기를 물려받은 것: 모든 화면 위 '조회기간' 년·월·일 10.9px, 재고 화면들 주유소 11.2px,
 * 아침 보고·월말 재고정산·지출 12px, 기본설정 주유소 12.8px. 폰(959px 이하)에서는 입력칸 글자를 16px 로 둔다(PC 그대로). */
@media(max-width:959px){
  input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]):not([type="file"]),select,textarea{font-size:16px}
}

/* v1.3.144 — PC 1024px(960~1199px) 칸 넘침 (대기열 24번)
 * 크로미움 1024px 소장 모든 메뉴에서 칸 밖으로 넘친 것: 두 칸 배치의 최소 폭 합이 본문 폭(810px)보다 넓었다.
 *   운영 보고 .operation-layout 340+560 → +100 · 현금마감 .cash-layout 620+300 → +134 · 자료함 .document-workspace 300+520 → +224
 *   외상 원장 .ledger-workspace 350+540 → +88 · 계정 #userManager 360+520 → +96
 *   세차장 '주유소별 오늘 세차 수납' 표 +158 — 표를 감싼 .cw-table-scroll 의 overflow:auto 가 carwash.css 에서 720px 이하에만 있어
 *   그보다 넓은 화면에서는 밀리지 않고 칸 밖으로 나갔다(v1.3.142 에서 머리를 낱말 단위로 바꾸며 드러남).
 *   달력 입고 등록 6칸 격자 — 날짜 칸(최소 126px)이 112px 칸에 → +14.
 * 이 구간에서는 두 칸 배치를 위아래로 쌓고(폰·태블릿과 같은 순서), 입고 등록은 3칸씩, 표 감싸개는 어느 폭에서나 옆으로 밀리게. */
.cw-table-scroll{overflow-x:auto}
/* 1200~1279px 에서도 넘친 것(1280 이상은 0): 자료함 목록 카드(+48) · 알림/지시 3칸(300+440+260 → +30)
 * · 업무 한눈표 '판매자료 없음'+막대(+26, 960·1200·1240) — 자료함은 1279px 까지 쌓고, 알림/지시는 2칸, 매출 막대는 줄어들게.
 * (달력 요약 '거래처 / 입고일 0곳 · 0일' 이 1200~1240px 에서 옆 칸 사이로 12~14px 나가는 것은 테마 글자 크기 규칙끼리 얽혀 있어 이번엔 두었다.) */
@media(min-width:960px) and (max-width:1279px){
  .document-workspace{grid-template-columns:minmax(0,1fr)!important}
  .message-workspace{grid-template-columns:minmax(0,1fr) minmax(0,1.3fr)!important}
  /* 옆에 나란히 둘 때 쓰던 '따라 내려오는' 입력칸(position:sticky)이, 위아래로 쌓으면 아래 목록 위에 겹쳐 떠 버린다(크로미움으로 봄: 운영 보고 '대표에게 보고 보내기' 가 '내가 보낸 보고' 위에). */
  .document-workspace>.document-upload-panel,.message-workspace>.message-compose-panel{position:static}
}
@media(min-width:960px) and (max-width:1535px){
  .role-station-table .station-main-sales{grid-template-columns:auto minmax(24px,1fr)!important}
}
@media(min-width:960px) and (max-width:1199px){
  .operation-layout,.cash-layout,.document-workspace,.ledger-workspace,.carwash-grid-two{grid-template-columns:minmax(0,1fr)!important}
  .operation-layout>.operation-submit-card,.cash-layout>.cash-summary,.ledger-workspace>.ledger-entry-panel{position:static}
  #userManager:not([hidden]){grid-template-columns:minmax(0,1fr)!important}
  .calendar-delivery-form .calendar-delivery-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important}
}

/* v1.3.146 — 달력 위 요약 칸 (대기열 27번, 24번에서 남긴 것)
 * 1200px 이상 `[data-view="calendar"] .cal-kpi{grid-template-columns:auto minmax(0,1fr)!important}` 라 이름(span)이 먼저 자리를 잡고
 * 숫자(strong)는 남은 자리에 한 줄 고정인데, 테마(theme-v1342/1343)가 숫자를 20px 로 키워 '0곳 · 0일' 이 1200~1240px 에서 칸 밖으로 12~14px 나갔다.
 * 숫자가 제 폭을 먼저 갖고 이름이 남은 자리에서 줄바꿈하게 바꾼다. 경고 칸(.warn — 숫자 자리가 긴 글)은 그대로. */
@media(min-width:1200px){
  [data-view="calendar"] .calendar-summary .cal-kpi:not(.warn){grid-template-columns:minmax(0,1fr) auto!important}
  [data-view="calendar"] .calendar-summary .cal-kpi:not(.warn)>span{word-break:keep-all;line-height:1.15}
}

/* v1.3.150 — 폰 작은 글씨 (대기열 31번)
 * 크로미움 폰 390 에서 글자 크기를 잼: 소장 운영현황 카드 7~9.5px(기준 달 7.6·빠른 이동 설명 7·칸 이름 9.5),
 * 달력 '오늘' 6.5px, 입고 칸 이름 10px, 폰 메뉴 단추 11.5px, 업무 화면 칸 머리 8.6px 등.
 * 직원분들이 읽어야 하는 글은 12px 이상, 누르는 단추·칸 이름은 13px 로. 폰만(760px 이하), 세차 화면은 제외.
 * 테마 파일(theme-v13xx)이 styles.css 뒤에 !important 로 줄여 놓아서 html:root body:not(.carwash-mode) 로 무게를 올린다. */
@media (max-width: 760px) {
  /* 맨 위 알림·나가기·어둡게는 그대로 — 키우면 왼쪽 제목 칸이 좁아져 머리 줄이 두 줄로 커진다(크로미움으로 봄) */
  html:root body:not(.carwash-mode) .phone-nav-row .phone-nav-item{font-size:13px!important}
  html:root body:not(.carwash-mode) .menu-context-strip .menu-context-title>span,
  html:root body:not(.carwash-mode) .menu-context-strip .menu-context-kpi>span,
  html:root body:not(.carwash-mode) .global-period-bar>label,
  html:root body:not(.carwash-mode) .mobile-home-head .mobile-home-role,
  html:root body:not(.carwash-mode) .mobile-home-head #mobileWorkSubtitle,
  html:root body:not(.carwash-mode) .mobile-home-stats .mobile-stat>span,
  html:root body:not(.carwash-mode) .mobile-home-card .mobile-card-head>div>span,
  html:root body:not(.carwash-mode) .mobile-action-grid>button>span,
  html:root body:not(.carwash-mode) .mobile-connect-grid>button>span,
  html:root body:not(.carwash-mode) .brief-strip .bs-more{font-size:12px!important}
  /* 운영현황 카드 */
  html:root body:not(.carwash-mode) .v1321-dashboard .v1321-head small,
  html:root body:not(.carwash-mode) .v1321-dashboard .v1322-basis-strip span,
  html:root body:not(.carwash-mode) .v1321-dashboard .v1322-basis-strip span>b,
  html:root body:not(.carwash-mode) .v1321-kpis .v1200-kpi>small,
  html:root body:not(.carwash-mode) .v1321-kpis .v1200-kpi>b,
  html:root body:not(.carwash-mode) .v1321-card>header small,
  html:root body:not(.carwash-mode) .v1321-card .v1200-quick>button>small{font-size:12px!important}
  html:root body:not(.carwash-mode) .v1321-kpis .v1200-kpi>small{word-break:keep-all;text-wrap:balance;line-height:1.25}
  html:root body:not(.carwash-mode) .v1321-kpis .v1200-kpi>span,
  html:root body:not(.carwash-mode) .v1321-card .v1321-empty,
  html:root body:not(.carwash-mode) .v1321-card .v1200-empty,
  html:root body:not(.carwash-mode) .v1321-card .v1200-quick>button>b{font-size:13px!important}
  /* 달력 */
  html:root body:not(.carwash-mode) .calendar-day .today-label{font-size:11px!important}
  /* 50px 칸에 날짜와 '오늘' 이 한 줄이라 전에도 5px 밖으로 나가 잘렸다 → '오늘' 은 날짜 밑 줄로 */
  html:root body:not(.carwash-mode) .calendar-day.today .day-head{flex-wrap:wrap;row-gap:2px;min-width:0}
  html:root body:not(.carwash-mode) .calendar-actionbar>div>span,
  html:root body:not(.carwash-mode) .calendar-delivery-form .calendar-delivery-head>span,
  html:root body:not(.carwash-mode) .calendar-delivery-form .calendar-delivery-actions>span{font-size:12px!important}
  /* 제목과 긴 설명이 한 줄이라 제목이 44~51px 로 눌려 '입고예정 / 간편 / 등록' 세 줄 → 제목 위, 설명 아래 */
  html:root body:not(.carwash-mode) .calendar-delivery-form .calendar-delivery-head{flex-direction:column;align-items:flex-start;gap:2px}
  /* 설명 글을 키우면 옆 '입고예정 저장' 단추가 '입고예/정 저장' 으로 갈라짐 → 단추 한 줄 전체, 설명은 밑에 */
  html:root body:not(.carwash-mode) .calendar-delivery-form .calendar-delivery-actions{flex-direction:column;align-items:stretch;gap:6px}
  html:root body:not(.carwash-mode) .calendar-delivery-form .calendar-delivery-actions>button{white-space:nowrap}
  html:root body:not(.carwash-mode) .calendar-delivery-form .calendar-delivery-grid>label,
  html:root body:not(.carwash-mode) .calendar-delivery-form .calendar-delivery-advanced>summary{font-size:13px!important}
  /* 운영 입력 · 유외상품 · 계정 */
  html:root body:not(.carwash-mode) .operation-hub-grid .operation-hub-action>small,
  html:root body:not(.carwash-mode) .goods-overview-panel #goodsOverviewBasis,
  html:root body:not(.carwash-mode) .goods-sheet-summary>span>small,
  html:root body:not(.carwash-mode) .inventory-context-bar #inventoryStationHelp,
  html:root body:not(.carwash-mode) #userManager #permScopeNote,
  html:root body:not(.carwash-mode) #permissionChoices .perm-toggle>small{font-size:12px!important}
  html:root body:not(.carwash-mode) .operation-hub-grid .operation-hub-action>b,
  html:root body:not(.carwash-mode) .goods-sheet-summary>span>b{font-size:13px!important}
}

/* v1.3.151 — 폰·태블릿 맨 위 '지금 있는 곳'(예: 시스템 › 근무 관리)이 안 보이던 것 (대기열 32번)
 * 959px 이하 `.topbar{background:var(--sidebar-bg);color:#fff}` — 원래 짙은 머리라 흰 글자였다. 뒤에 theme-v1324 가 머리를 밝게(rgba(250,253,255)) 바꾸면서
 * 제목(.topbar-title strong)만 #173b63 으로 바꾸고 이 줄은 흰색을 물려받은 채 남아 흰 바탕에 흰 글자(자리만 차지). 어둡게 모드에서는 잘 보인다.
 * 밝게 모드에서만 글자색을 제목과 맞추고, 지금 화면 이름만 한 줄로(긴 이름은 …). */
@media (max-width: 959px) {
  html:not([data-theme="dark"]) body .topbar .crumb{color:#5b7088}
  html:not([data-theme="dark"]) body .topbar .crumb strong{color:#173b63}
  /* 16px '재고·발주 › 유외상품 재고' 가 제목 칸(117px)을 넘어 오른쪽 단추 밑으로 들어가 잘렸다(어둡게에서도) →
     윗 메뉴 이름은 바로 밑 폰 메뉴 줄에 이미 있으니 빼고, 지금 화면 이름만 14px 한 줄 … 로 */
  body .topbar .topbar-left{min-width:0;overflow:hidden}
  body .topbar .crumb{min-width:0;max-width:100%;white-space:nowrap;overflow:hidden}
  body .topbar .crumb>span{display:none}
  body .topbar .crumb strong{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;font-size:14px}
}

/* v1.3.152 — 계정·권한 화면 권한 단추 밑 설명('세부 권한' 등)이 흐리던 것 (대기열 33번)
 * `.perm-toggle>small{color:#8090a2}` — 흰 바탕 대비 3.27, 켜진 단추(#eaf2ff) 2.9. 폰·PC 모두. 대비 도구(폰 소장 13개 메뉴)에서 이 화면만 15곳.
 * 같은 무게 규칙을 뒤에 두어 #52667a(흰 5.93 · 켜짐 5.27 · 올림 5.61). 어둡게 모드는 테마 규칙(html[data-theme="dark"] …)이 더 무거워 그대로. */
.perm-toggle>small{color:#52667a}
/* 같은 단추 이름이 '인식 자료 검토·확 / 정' 처럼 낱말 가운데서 갈라지던 것(폰 390, 5개) → 낱말 단위로 두 줄 고르게, 칸보다 긴 낱말만 쪼갬 */
.perm-toggle>strong{word-break:keep-all;overflow-wrap:anywhere;text-wrap:balance}

/* v1.3.153 — PC 흐린 글자 2곳 (대기열 34번)
 * 대비 도구(크로미움 1366, 소장·대표 모든 메뉴): 운영현황 브리핑 시각 `.bs-when{color:#8a97a6}` 흰 바탕 2.98,
 * 손익 화면 자료 없는 줄 `.cost-bar-row.nodata .cbr-margin{color:#8a97a4}`(theme-v1364) 2.90.
 * 어둡게 모드는 짙은 바탕이라 지금 색이 맞다 → 밝게 모드에서만 #5f6f80(흰 5.16 · #fbfcfd 5.02). */
html:not([data-theme="dark"]) .bs-when{color:#5f6f80}
html:not([data-theme="dark"]) .cost-bar-row.nodata .cbr-margin{color:#5f6f80}


/* v1.3.156 — 태블릿·폰 가로(761~959px) 글자 갈라짐 2곳 (대기열 37번)
 * 크로미움 844×390·768×1024·900×600·959×700 소장 모든 메뉴: 달력 '오늘' 단추가 44px 칸에 '오/늘' 두 줄(1200px 이상은 v1.3.141 에서 고침),
 * 기본설정 맨 위 '주유소' 이름표가 '주유/소' 두 줄. 폰을 가로로 돌렸을 때 위아래 띠·칸 넘침·아래 띠 가림은 없었다(따로 고칠 것 없음).
 * '오늘' 은 줄바꿈만 막으면 44px 칸 밖으로 글자가 나가서(칸이 넘침 숨김이라 최소 폭 0) 칸이 줄지 않게도 한다. */
#calendarToday{white-space:nowrap;flex:0 0 auto}
.setup-context-bar>label{white-space:nowrap}
/* 1024px 달력 위 안내 줄 제목 '한 번 입력 · 함께 반 / 영'(v1.3.155 에서도) → 한 줄, 옆 설명이 … 로 줄어든다 */
.calendar-actionbar>div>strong{white-space:nowrap;flex:0 0 auto}

/* v1.3.157 — 대표 계정 폰 화면 (대기열 38번)
 * 크로미움 폰 390 대표(CEO) 36개 메뉴를 넘침·작은 글씨·대비·글자 갈라짐 도구로 봄. 넘침·대비는 소장과 같이 0(백업·복구 머리 칸은 전부터),
 * 갈라짐 2곳이 대표 화면에만 있었다:
 *  - 운영현황 카드 머리 '전체 유 / 류 예상 현 / 재고' — 옆 설명(`.v1321-card>header small{white-space:nowrap}`)이 한 줄로 자리를 다 차지해
 *    제목이 65px 로 눌림. v1.3.150 에서 설명을 8px → 12px 로 키우며 더 심해짐(소장 카드는 설명이 짧아 괜찮았음).
 *    → 폰에서는 제목 위, 설명 아래(설명은 줄바꿈 허용).
 *  - 아침 보고 표 주유소 이름 '무한대주 / 유소' — 첫 칸 90px(글자 자리 70px)에 16px 굵은 6글자.
 *    → 현황 칸 4개를 62px 로 고정하고 남는 자리를 이름 칸에(약 100px), 이름 15px·양옆 여백 6px. 가장 긴 이름(6글자)도 한 줄. */
@media (max-width: 760px) {
  html:root body:not(.carwash-mode) .v1321-card>header{flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:2px}
  html:root body:not(.carwash-mode) .v1321-card>header small{white-space:normal}
  html:root body:not(.carwash-mode) .v1321-card>header h3{word-break:keep-all}
  html:root body:not(.carwash-mode) .v55-morning-head,
  html:root body:not(.carwash-mode) .v55-morning-row{grid-template-columns:minmax(0,1fr) repeat(4,62px)}
  html:root body:not(.carwash-mode) .v55-morning-row .v55-st{padding-left:6px;padding-right:6px}
  html:root body:not(.carwash-mode) .v55-morning-row .v55-st>b{font-size:15px;letter-spacing:-.02em;word-break:keep-all}
}

/* v1.3.158 — 대표 폰 작은 글씨 (대기열 39번, v1.3.150 을 대표·세차장 화면까지)
 * 크로미움 폰 390 대표 36개 메뉴에서 11px 미만: 손익 화면 표 머리 10px·내용 10.5px·거래조건 '저장' 10.5px·조회 칸 이름 10.6px·
 * 주유소 막대 '확인'·안내 10.6px, 세차장 요약 표 머리 10px·내용 10.5px, 메뉴 위 요약 칸 이름 9.9px, 운영 '오늘 보고 진행' 10px,
 * 기본설정 안내 10px, 재고정산 그래프 설명 10.4px, 탱크·거래처 안내 10.9px, 설비 정렬 안내 10.6px. 읽는 글 12px, 누르는 단추 13px(폰만, 세차 모드 제외).
 * 표는 원래 가로로 밀어 보는 칸(min-width 720px) 안이라 글자가 커져도 화면 밖으로 안 나간다. 백업 화면은 건드리지 않음. */
@media (max-width: 760px) {
  html:root body:not(.carwash-mode) .data-table th,
  html:root body:not(.carwash-mode) .data-table td,
  html:root body:not(.carwash-mode) .cw-summary-table th,
  html:root body:not(.carwash-mode) .cw-summary-table td,
  html:root body:not(.carwash-mode) .cost-filterbar>label,
  html:root body:not(.carwash-mode) .cost-filterbar>label>span,
  html:root body:not(.carwash-mode) .cost-bar-row>.cbr-pending,
  html:root body:not(.carwash-mode) .cost-bar-row>.cbr-issue,
  html:root body:not(.carwash-mode) .menu-context-kpis>article>span,
  html:root body:not(.carwash-mode) #setupRoleNote,
  html:root body:not(.carwash-mode) #setupPriceChip,
  html:root body:not(.carwash-mode) .operation-hub-summary>div>span,
  html:root body:not(.carwash-mode) .operation-hub-summary>div>small,
  html:root body:not(.carwash-mode) #stockAdjCharts>article>p,
  html:root body:not(.carwash-mode) .inventory-view .form-card .form-help,
  html:root body:not(.carwash-mode) .terminal-sortbar>label,
  html:root body:not(.carwash-mode) .terminal-sortbar>small{font-size:12px!important}
  html:root body:not(.carwash-mode) .data-table td>button{font-size:13px!important}
  /* 카드 머리 오른쪽 단추가 '새로 / 고침'(손익 매입 조건)처럼 낱말 가운데서 갈라지던 것 → 한 줄, 왼쪽 제목이 줄바꿈 */
  html:root body:not(.carwash-mode) .station-head>button{white-space:nowrap;flex:0 0 auto}
}

/* v1.3.159 — 어둡게 모드 달력 '오늘' 딱지가 흐리던 것 (대기열 40번)
 * 크로미움 폰 390 어둡게: 파란 딱지(#2f6fa8) 위 글자가 회색(#9aa7b6)이라 대비 2.39.
 * theme-v1331 이 이 딱지를 흰색으로 해 놓았지만, 같은 파일의 `html[data-theme="dark"] body #mainContent small:not(...)` 가
 * #mainContent(아이디) 덕분에 더 무거워 이겼다. 그보다 무거운 선택자로 흰색을 되돌린다(대비 4.6). 밝게 모드는 그대로. */
html[data-theme="dark"] body #mainContent .calendar-grid .calendar-day.today .day-head .day-head-meta small.today-label{color:#fff!important}
