/* ═══════════════════════════════════════════════════════════════
   bsncare.css — BSN케어 전용 페이지 스타일 (v2)
   디자인 시스템 원칙 준수: 그림자 없음 · 모션 없음 (색상 전환만)
   의존: tokens.css → ui.css → 이 파일
   ═══════════════════════════════════════════════════════════════ */

/* ─────────────────────────────────────────────
   아이콘 — Heroicons Outline 24 · stroke-width 1.5
   크기: 16 (.sm) / 20 (기본) / 24 (.lg) / 32 (.xl) — 8pt 그리드
   ───────────────────────────────────────────── */
.ic {
  display: inline-block;
  width: 20px; height: 20px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.5;
  stroke-linecap: round;
  stroke-linejoin: round;
  vertical-align: -4px;
  flex-shrink: 0;
}
.ic.sm { width: 16px; height: 16px; vertical-align: -3px; }
.ic.lg { width: 24px; height: 24px; vertical-align: -5px; }
.ic.xl { width: 32px; height: 32px; vertical-align: -7px; }

/* ─────────────────────────────────────────────
   인증 오버레이 (로그인·승인대기·거절)
   ───────────────────────────────────────────── */
.auth-ov {
  position: fixed; inset: 0;
  z-index: var(--z-modal);
  background: var(--bg-subtle);
  display: flex; align-items: center; justify-content: center;
  padding: var(--space-5);
}
.auth-ov.hide { display: none; }
.auth-box {
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  width: 100%;
  max-width: 400px;
  padding: var(--space-6) var(--space-5);
}
.auth-brand { text-align: center; margin-bottom: var(--space-5); }
.auth-brand h1 {
  font-size: var(--fs-2xl);
  font-weight: var(--fw-bold);
  letter-spacing: var(--ls-tight);
}
.auth-brand p {
  font-size: var(--fs-md);
  color: var(--text-tertiary);
  margin-top: var(--space-1);
}

.auth-tabs {
  display: flex; gap: var(--space-1);
  background: var(--bg-subtle);
  padding: var(--space-1);
  border-radius: var(--radius-md);
  margin-bottom: var(--space-4);
}
.auth-tab {
  flex: 1;
  padding: var(--space-2);
  border-radius: var(--radius-sm);
  font-size: var(--fs-md);
  font-weight: var(--fw-medium);
  color: var(--text-secondary);
  cursor: pointer;
  text-align: center;
  transition: background-color var(--t-color), color var(--t-color);
}
.auth-tab.on {
  background: var(--bg);
  color: var(--text);
  font-weight: var(--fw-semibold);
}

.auth-field { margin-bottom: var(--space-3); position: relative; }
.auth-field label {
  display: block;
  font-size: var(--fs-xs);
  color: var(--text-secondary);
  margin-bottom: var(--space-1);
  font-weight: var(--fw-medium);
}
.auth-field input {
  width: 100%;
  height: 44px;
  padding: 0 var(--space-3) 0 40px;
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  background: var(--bg);
  color: var(--text);
  font-size: var(--fs-md);
  font-family: inherit;
  transition: border-color var(--t-color);
}
.auth-field input:focus {
  outline: none;
  border-color: var(--text-secondary);
}
.auth-field .ic-prefix {
  position: absolute; left: var(--space-3); top: 33px;
  color: var(--text-tertiary);
  pointer-events: none;
}

.auth-btn {
  width: 100%;
  height: 44px;
  margin-top: var(--space-3);
  background: var(--accent);
  color: var(--on-accent);
  border: 1px solid var(--accent);
  border-radius: var(--radius-md);
  font-size: var(--fs-md);
  font-weight: var(--fw-semibold);
  display: inline-flex; align-items: center; justify-content: center;
  gap: var(--space-1);
  transition: background-color var(--t-color), border-color var(--t-color);
}
.auth-btn:hover { background: var(--accent-hover); border-color: var(--accent-hover); }
.auth-btn.secondary {
  background: var(--bg);
  border-color: var(--border);
  color: var(--text);
}
.auth-btn.secondary:hover { border-color: var(--border-strong); background: var(--bg); }

.auth-msg {
  margin-top: var(--space-3);
  font-size: var(--fs-xs);
  text-align: center;
  min-height: 16px;
}
.auth-msg.err { color: var(--danger-strong); }
.auth-msg.ok { color: var(--success-strong); }
.auth-form { display: none; }
.auth-form.on { display: block; }

.auth-status { text-align: center; padding: var(--space-5) 0; }
.auth-status-icon {
  width: 64px; height: 64px;
  margin: 0 auto var(--space-4);
  border-radius: var(--radius-full);
  display: flex; align-items: center; justify-content: center;
  background: var(--bg-subtle);
  color: var(--text-secondary);
}
.auth-status-icon.err { background: var(--danger-bg); color: var(--danger-strong); }
.auth-status-icon.ok { background: var(--success-bg); color: var(--success-strong); }
.auth-status-icon .ic { width: 32px; height: 32px; vertical-align: 0; }
.auth-status h2 {
  font-size: var(--fs-xl);
  font-weight: var(--fw-semibold);
  margin-bottom: var(--space-1);
}
.auth-status p {
  font-size: var(--fs-md);
  color: var(--text-tertiary);
  line-height: var(--lh-relaxed);
}
.auth-status .auth-email {
  margin-top: var(--space-2);
  font-size: var(--fs-xs);
  color: var(--text-muted);
}

/* ─────────────────────────────────────────────
   앱 컨테이너 (7탭 SPA)
   ───────────────────────────────────────────── */
.app { display: none; }
.app.on { display: flex; flex-direction: column; }
.navbar-nav a.nav-item { display: inline-flex; align-items: center; gap: var(--space-1); }

.page { display: none; }
.page.on { display: flex; flex-direction: column; flex: 1; min-height: 0; }

.care-container {
  max-width: 1440px;
  margin: 0 auto;
  padding: var(--space-5);
  width: 100%;
  flex: 1;
  overflow: auto;
}

/* 건물 탭 개요: 4컬럼 KV (데스크탑) */
.care-container .bldg-body .kv {
  grid-template-columns: 120px 1fr 120px 1fr;
}
.care-container .bldg-body .kv > div:nth-child(-n+4) { border-top: none; }
.care-container .bldg-body .kv > div:nth-child(4n) { border-right: none; }
.care-container .bldg-body .kv > div { border-right: 1px solid var(--border); }

/* 건물 탭 섹션 제목 메타 느낌 */
.bldg-body .section-title {
  font-size: var(--fs-xs);
  font-weight: var(--fw-semibold);
  color: var(--text-secondary);
  text-transform: uppercase;
  letter-spacing: var(--ls-wider);
  margin-bottom: var(--space-2);
}

/* ─────────────────────────────────────────────
   대시보드 — 통계(KPI) 카드 · 2단 그리드
   ───────────────────────────────────────────── */
.dash-glance {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--space-3);
  margin-bottom: var(--space-4);
}
.glance {
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: var(--space-5);
  display: flex; flex-direction: column;
  gap: var(--space-1);
  cursor: pointer;
  transition: border-color var(--t-color);
}
.glance:hover { border-color: var(--border-strong); }
.glance-head {
  display: flex; align-items: center; justify-content: space-between;
  color: var(--text-tertiary);
}
.glance-head .lbl {
  font-size: var(--fs-sm);
  font-weight: var(--fw-medium);
}
.glance-val {
  font-size: var(--fs-3xl);                   /* 32px — 통계 카드 스펙 */
  font-weight: var(--fw-bold);
  letter-spacing: var(--ls-tight);
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
.glance-sub {
  font-size: var(--fs-sm);
  color: var(--text-tertiary);
  line-height: var(--lh-normal);
}
.glance.warn .glance-val { color: var(--danger); }
.glance.ok .glance-val { color: var(--success); }

.dash-grid-2 {
  display: grid;
  grid-template-columns: 1.3fr 1fr;
  gap: var(--space-3);
}

/* 이번 주 일정 · 공실 리스트 */
.sch-li, .vac-li { list-style: none; }
.sch-li li, .vac-li li {
  display: flex; align-items: center; gap: var(--space-2);
  padding: var(--space-3);
  border-top: 1px solid var(--border);
  font-size: var(--fs-md);
}
.sch-li li:first-child,
.vac-li li:first-child { border-top: none; }
.sch-li .date {
  width: 48px;
  font-size: var(--fs-xs);
  color: var(--text-tertiary);
  font-variant-numeric: tabular-nums;
  flex-shrink: 0;
}
.sch-li .bldg {
  font-size: var(--fs-xs);
  color: var(--text-tertiary);
  padding: 2px var(--space-1);
  border-radius: var(--radius-sm);
  background: var(--bg-subtle);
  flex-shrink: 0;
}
.sch-li .title { flex: 1; }
.sch-li .done { color: var(--text-muted); text-decoration: line-through; }
.vac-li .name { flex: 1; }
.vac-li .days {
  font-size: var(--fs-sm);
  color: var(--danger);
  font-weight: var(--fw-semibold);
}

/* ─────────────────────────────────────────────
   건물 탭 — 2분할 (사이드바 + 메인)
   ───────────────────────────────────────────── */
.bldg-layout {
  display: grid;
  grid-template-columns: 260px 1fr;
  gap: var(--space-3);
  flex: 1;
  min-height: 0;
}
.bldg-sidebar {
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  display: flex; flex-direction: column;
  overflow: hidden;
  max-height: calc(100dvh - 160px);
}
.bldg-search {
  padding: var(--space-2);
  border-bottom: 1px solid var(--border);
  position: relative;
}
.bldg-search input {
  width: 100%;
  height: 36px;
  padding: 0 var(--space-2) 0 36px;
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  background: var(--bg);
  color: var(--text);
  font-size: var(--fs-md);
  font-family: inherit;
}
.bldg-search .ic-prefix {
  position: absolute;
  left: 20px; top: 50%;
  transform: translateY(-50%);
  color: var(--text-tertiary);
  pointer-events: none;
}

.bldg-list { flex: 1; overflow: auto; }
.bldg-item {
  padding: var(--space-3);
  border-bottom: 1px solid var(--border);
  cursor: pointer;
  font-size: var(--fs-md);
  font-weight: var(--fw-medium);
  transition: background-color var(--t-color);
}
.bldg-item:hover { background: var(--bg-subtle); }
.bldg-item.on {
  background: var(--bg-subtle);
  border-left: 3px solid var(--accent);
  padding-left: calc(var(--space-3) - 3px);
}
.bldg-item .bldg-addr {
  display: block;
  font-size: var(--fs-xs);
  color: var(--text-tertiary);
  font-weight: var(--fw-normal);
  margin-top: 2px;                   /* 마이크로 예외 */
}

.bldg-main {
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  overflow: hidden;
  display: flex; flex-direction: column;
  min-width: 0;
  max-height: calc(100dvh - 160px);
}
.bldg-main-h {
  padding: var(--space-4) var(--space-5);
  border-bottom: 1px solid var(--border);
  display: flex; justify-content: space-between; align-items: flex-start;
}
.bldg-main-h .meta h2 {
  font-size: var(--fs-xl);
  font-weight: var(--fw-semibold);
  letter-spacing: var(--ls-snug);
}
.bldg-main-h .meta .sub {
  font-size: var(--fs-xs);
  color: var(--text-tertiary);
  margin-top: 2px;
}
.bldg-main-h .quick { display: flex; gap: var(--space-1); }

.sub-tabs {
  display: flex; gap: var(--space-5);
  padding: 0 var(--space-5);
  border-bottom: 1px solid var(--border);
  overflow-x: auto;
}
.sub-tab {
  padding: var(--space-3) var(--space-1);
  margin-bottom: -1px;
  font-size: var(--fs-md);
  font-weight: var(--fw-medium);
  color: var(--text-tertiary);
  cursor: pointer;
  border-bottom: 2px solid transparent;
  white-space: nowrap;
  transition: color var(--t-color), border-color var(--t-color);
}
.sub-tab:hover { color: var(--text-secondary); }
.sub-tab.on {
  color: var(--accent);
  border-bottom-color: var(--accent);
}

.bldg-body { padding: var(--space-5); flex: 1; overflow: auto; }
.bldg-body .section { margin-bottom: var(--space-5); }
.bldg-body .section:last-child { margin-bottom: 0; }

/* ─────────────────────────────────────────────
   시설·점검
   ───────────────────────────────────────────── */
.facility-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: var(--space-2);
}
.fac-card {
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: var(--space-4);
  background: var(--bg);
  transition: border-color var(--t-color);
}
.fac-card:hover { border-color: var(--border-strong); }
.fac-card .fac-head {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: var(--space-2);
}
.fac-card .fac-name {
  font-weight: var(--fw-semibold);
  font-size: var(--fs-md);
}
.fac-card .fac-vendor,
.fac-card .fac-expire {
  font-size: var(--fs-xs);
  color: var(--text-tertiary);
}

/* 타임라인 */
.timeline { list-style: none; position: relative; }
.timeline::before {
  content: ""; position: absolute;
  left: 6px; top: 6px; bottom: 6px;
  width: 2px; background: var(--border);
}
.timeline li {
  position: relative;
  padding: var(--space-1) 0 var(--space-3) var(--space-6);
  font-size: var(--fs-md);
}
.timeline li::before {
  content: ""; position: absolute;
  left: 0; top: 6px;
  width: 14px; height: 14px;
  border-radius: var(--radius-full);
  background: var(--bg);
  border: 2px solid var(--accent);
}
.timeline .date {
  font-size: var(--fs-xs);
  color: var(--text-tertiary);
  margin-bottom: 2px;
}

/* ─────────────────────────────────────────────
   파일 카테고리 · 리스트
   ───────────────────────────────────────────── */
.file-cats {
  display: flex; flex-wrap: wrap;
  gap: var(--space-1);
  margin-bottom: var(--space-3);
}
.file-cat {
  padding: var(--space-1) var(--space-3);
  border: 1px solid var(--border);
  border-radius: var(--radius-full);
  font-size: var(--fs-xs);
  cursor: pointer;
  color: var(--text-secondary);
  background: var(--bg);
  transition: border-color var(--t-color), color var(--t-color), background-color var(--t-color);
}
.file-cat:hover { border-color: var(--border-strong); }
.file-cat.on {
  background: var(--accent);
  color: var(--on-accent);
  border-color: var(--accent);
}

.file-list { list-style: none; }
.file-list li {
  padding: var(--space-3);
  border-bottom: 1px solid var(--border);
  display: flex; align-items: center; gap: var(--space-2);
  font-size: var(--fs-md);
}
.file-list li:last-child { border-bottom: none; }
.file-list .meta {
  margin-left: auto;
  font-size: var(--fs-xs);
  color: var(--text-muted);
}

/* ─────────────────────────────────────────────
   일정 탭 — 필터 · 캘린더
   ───────────────────────────────────────────── */
.sch-layout {
  display: grid;
  grid-template-columns: 240px 1fr;
  gap: var(--space-3);
  flex: 1;
  min-height: 0;
}
.sch-filter {
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: var(--space-4);
  max-height: calc(100dvh - 160px);
  overflow: auto;
}
.sch-filter h4 {
  font-size: var(--fs-xs);
  color: var(--text-secondary);
  margin-bottom: var(--space-2);
  font-weight: var(--fw-semibold);
  text-transform: uppercase;
  letter-spacing: var(--ls-wider);
}
.sch-filter .bldg-check {
  display: flex; align-items: center; gap: var(--space-2);
  padding: var(--space-1) 0;
  font-size: var(--fs-md);
  cursor: pointer;
}

.cal-main {
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  display: flex; flex-direction: column;
  overflow: hidden;
}
.cal-toolbar {
  padding: var(--space-3) var(--space-4);
  border-bottom: 1px solid var(--border);
  display: flex; align-items: center; gap: var(--space-2);
  background: var(--bg-subtle);
}
.cal-toolbar h3 {
  font-size: var(--fs-lg);
  font-weight: var(--fw-semibold);
  letter-spacing: var(--ls-snug);
  min-width: 140px;
}

.cal-grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  flex: 1;
}
.cal-dow {
  text-align: center;
  font-size: var(--fs-xs);
  color: var(--text-secondary);
  padding: var(--space-2) var(--space-1);
  background: var(--bg-subtle);
  border-bottom: 1px solid var(--border);
  font-weight: var(--fw-semibold);
  text-transform: uppercase;
  letter-spacing: var(--ls-wide);
}
.cal-dow.sun { color: var(--danger); }
.cal-dow.sat { color: var(--accent); }
.cal-cell {
  min-height: 96px;
  border-right: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
  padding: var(--space-1);
  font-size: var(--fs-xs);
  position: relative;
  overflow: hidden;
}
.cal-cell:nth-child(7n+7) { border-right: none; }
.cal-cell.dim { background: var(--bg-subtle); color: var(--text-muted); }
.cal-cell.today .cal-d {
  background: var(--accent);
  color: var(--on-accent);
  border-radius: var(--radius-full);
  padding: 1px 6px;
}
.cal-d {
  font-weight: var(--fw-semibold);
  font-size: var(--fs-xs);
  display: inline-block;
  margin-bottom: var(--space-1);
  font-variant-numeric: tabular-nums;
}
.cal-ev {
  display: block;
  font-size: var(--fs-xs);
  padding: 2px var(--space-1);
  border-radius: var(--radius-sm);
  background: var(--accent-bg);
  color: var(--accent);
  margin-bottom: 2px;                 /* 마이크로 예외 (22px 이하 요소 내부) */
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  cursor: pointer;
}
.cal-ev.err { background: var(--danger-bg); color: var(--danger-strong); }
.cal-ev.warn { background: var(--warning-bg); color: var(--warning-strong); }
.cal-ev.done { opacity: .5; text-decoration: line-through; }

/* 고정일정 · 만료일 리스트 */
.fixed-li, .exp-li { list-style: none; }
.fixed-li li {
  display: grid;
  grid-template-columns: 40px 1fr auto auto;
  gap: var(--space-2);
  padding: var(--space-3);
  border-bottom: 1px solid var(--border);
  align-items: center;
  font-size: var(--fs-md);
}
.fixed-li li:last-child { border-bottom: none; }
.fixed-li .day {
  font-weight: var(--fw-bold);
  color: var(--accent);
  font-variant-numeric: tabular-nums;
  text-align: right;
}
.fixed-li .memo {
  font-size: var(--fs-xs);
  color: var(--text-muted);
}

.exp-li li {
  display: grid;
  grid-template-columns: 144px 1fr 120px 96px;   /* 8pt 배수 */
  gap: var(--space-2);
  padding: var(--space-3);
  border-bottom: 1px solid var(--border);
  align-items: center;
  font-size: var(--fs-md);
}
.exp-li li:last-child { border-bottom: none; }
.exp-li .cat {
  font-weight: var(--fw-medium);
  font-size: var(--fs-xs);
  padding: 3px var(--space-2);        /* 마이크로 예외 */
  border-radius: var(--radius-sm);
  background: var(--bg-subtle);
  color: var(--text-secondary);
  display: inline-block;
  width: fit-content;
}
.exp-li .dday {
  font-weight: var(--fw-bold);
  text-align: right;
  font-variant-numeric: tabular-nums;
}
.exp-li .dday.err { color: var(--danger); }
.exp-li .dday.warn { color: var(--warning); }

/* ─────────────────────────────────────────────
   정산 — 월 네비 · 공과금 안분
   ───────────────────────────────────────────── */
.inv-monthnav {
  display: flex; align-items: center; gap: var(--space-2);
}
.inv-monthnav h3 {
  min-width: 100px;
  text-align: center;
  font-size: var(--fs-lg);
  font-weight: var(--fw-semibold);
}

.allot-head {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: var(--space-2);
  padding: var(--space-4);
  background: var(--bg-subtle);
  border-bottom: 1px solid var(--border);
}
.allot-head input {
  height: 36px;
  padding: 0 var(--space-3);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  background: var(--bg);
  color: var(--text);
  font-size: var(--fs-md);
  font-family: inherit;
  font-variant-numeric: tabular-nums;
}
.allot-head label {
  font-size: var(--fs-xs);
  color: var(--text-secondary);
  margin-bottom: var(--space-1);
  display: block;
}

/* ─────────────────────────────────────────────
   리포트 — 매트릭스 · 편집 2분할
   ───────────────────────────────────────────── */
.rpt-matrix {
  display: grid;
  grid-template-columns: 176px repeat(6, 1fr);   /* 8pt 배수 */
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  overflow: hidden;
  font-size: var(--fs-sm);
}
.rpt-matrix > div {
  padding: var(--space-3) var(--space-2);
  border-top: 1px solid var(--border);
  border-right: 1px solid var(--border);
  text-align: center;
}
.rpt-matrix .bldg-name {
  text-align: left;
  font-weight: var(--fw-semibold);
  font-size: var(--fs-md);
}
.rpt-matrix > div:nth-child(-n+7) {
  border-top: none;
  font-weight: var(--fw-semibold);
  color: var(--text-secondary);
  background: var(--bg-subtle);
  text-transform: uppercase;
  letter-spacing: var(--ls-wide);
  font-size: var(--fs-xs);
}
.rpt-matrix > div:nth-child(7n) { border-right: none; }
.rpt-cell { cursor: pointer; transition: background-color var(--t-color); }
.rpt-cell:hover { background: var(--bg-subtle); }

.rpt-edit-grid {
  display: grid;
  grid-template-columns: 260px 1fr;
  gap: var(--space-3);
}
.rpt-sec-nav {
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: var(--space-2);
  align-self: start;
}
.rpt-sec-nav ul { list-style: none; }
.rpt-sec-nav li {
  padding: var(--space-3);
  border-radius: var(--radius-md);
  cursor: pointer;
  font-size: var(--fs-md);
  display: flex; align-items: center; gap: var(--space-2);
  transition: background-color var(--t-color);
}
.rpt-sec-nav li:hover { background: var(--bg-subtle); }
.rpt-sec-nav li.on {
  background: var(--bg-subtle);
  font-weight: var(--fw-semibold);
}
.rpt-sec-nav .seq {
  width: 24px; height: 24px;
  border-radius: var(--radius-full);
  background: var(--bg-muted);
  color: var(--text-secondary);
  display: inline-flex; align-items: center; justify-content: center;
  font-size: var(--fs-xs);
  font-weight: var(--fw-semibold);
}
.rpt-sec-nav li.on .seq {
  background: var(--accent);
  color: var(--on-accent);
}

.rpt-edit-main {
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  display: flex; flex-direction: column;
}
.rpt-edit-main .card-h {
  padding: var(--space-4) var(--space-5);
  border-bottom: 1px solid var(--border);
  margin-bottom: 0;
}

/* ─────────────────────────────────────────────
   드라이브 — 트리 · 파일 영역
   ───────────────────────────────────────────── */
.drive-layout {
  display: grid;
  grid-template-columns: 280px 1fr;
  gap: var(--space-3);
  flex: 1;
  min-height: 0;
}
.drive-tree {
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: var(--space-2);
  max-height: calc(100dvh - 160px);
  overflow: auto;
}
.drive-tree ul { list-style: none; }
.drive-tree .tree-bldg {
  font-weight: var(--fw-semibold);
  padding: var(--space-2) var(--space-3);
  font-size: var(--fs-md);
}
.drive-tree .tree-cat {
  padding: var(--space-1) var(--space-3) var(--space-1) var(--space-6);
  border-radius: var(--radius-md);
  cursor: pointer;
  font-size: var(--fs-md);
  display: flex; align-items: center; gap: var(--space-1);
  transition: background-color var(--t-color);
}
.drive-tree .tree-cat:hover { background: var(--bg-subtle); }
.drive-tree .tree-cat.on { background: var(--bg-subtle); font-weight: var(--fw-semibold); }

.drive-main {
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  display: flex; flex-direction: column;
  padding: var(--space-4);
}
.drive-main .card-h { margin-bottom: var(--space-3); }

/* ─────────────────────────────────────────────
   반응형
   ───────────────────────────────────────────── */
@media (max-width: 980px) {
  .dash-glance { grid-template-columns: repeat(2, 1fr); }
  .dash-grid-2 { grid-template-columns: 1fr; }
  .bldg-layout { grid-template-columns: 1fr; }
  .bldg-sidebar { max-height: 240px; }
  .bldg-main { max-height: none; }
  .sch-layout, .drive-layout { grid-template-columns: 1fr; }
  .care-container .bldg-body .kv { grid-template-columns: 100px 1fr; }
  .care-container .bldg-body .kv > div { border-right: none; }
  .rpt-edit-grid { grid-template-columns: 1fr; }
  .rpt-matrix { grid-template-columns: 110px repeat(3, 1fr); overflow-x: auto; }
}
