/* 기UP 프로그램 UI 정비 v1 — 공통 폭·가독성·업무 밀도 */
:root {
  --sidebar-w: 272px;
  --header-h: 76px;
  --admin-content-max: 1480px;
  --admin-page-gutter: 34px;
}

body {
  font-size: 16px;
  letter-spacing: -0.012em;
}

/* 역할 클래스는 화면 권한 구분에만 사용하고 관리자 바탕색은 모든 역할에서 동일하게 유지한다. */
body.role-super_admin,
body.role-admin,
body.role-consultant,
body.role-client { background: var(--gray-7); }

.main-content { min-width: 0; }

.sidebar-logo { min-height: var(--header-h); padding: 18px 22px; }
.logo-mark { width: 42px; height: 42px; border-radius: 11px; font-size: 19px; }
.logo-text { font-size: 22px; letter-spacing: -0.035em; }
.logo-badge { font-size: 10px; }
.sidebar-nav { padding:16px 14px 24px; scrollbar-width:thin; scrollbar-color:rgba(255,255,255,.14) transparent; }
.sidebar-dashboard { display:flex; align-items:center; gap:12px; min-height:48px; margin-bottom:18px; padding:12px 14px; border-radius:11px; color:#cbd5e1; font-size:15px; font-weight:800; transition:.18s ease; }
.sidebar-dashboard:hover { color:#fff; background:rgba(255,255,255,.07); }
.sidebar-dashboard.active { color:#fff; background:linear-gradient(105deg,rgba(79,70,229,.98),rgba(99,102,241,.68)); box-shadow:0 9px 24px rgba(49,46,129,.28); }
.sidebar-dashboard .ui-icon { color:inherit; }
.sidebar-menu-label { margin:0 7px 8px; color:#77849a; font-size:11px; font-weight:800; letter-spacing:.12em; }
.sidebar-nav-group { margin:7px 0; }
.sidebar-group-toggle { width:100%; min-height:48px; padding:0 12px; border:1px solid rgba(255,255,255,.09); border-radius:11px; display:flex; align-items:center; gap:10px; color:#edf2f7; background:rgba(255,255,255,.035); cursor:pointer; text-align:left; font:inherit; transition:color .18s,background .18s,border-color .18s; }
.sidebar-group-toggle:hover { color:#fff; border-color:rgba(255,255,255,.17); background:rgba(255,255,255,.07); }
.sidebar-nav-group.is-open .sidebar-group-toggle { color:#fff; border-color:rgba(129,140,248,.42); background:rgba(79,70,229,.16); }
.sidebar-group-index { width:26px; height:26px; display:grid; place-items:center; flex:none; border-radius:7px; color:#aeb8c9; background:rgba(255,255,255,.07); font-size:11px; font-weight:900; letter-spacing:.03em; }
.sidebar-nav-group.is-open .sidebar-group-index { color:#fff; background:var(--primary); }
.sidebar-group-label { flex:1; font-size:14px; font-weight:800; letter-spacing:-.02em; }
.sidebar-group-chevron { width:8px; height:8px; flex:none; border-right:2px solid currentColor; border-bottom:2px solid currentColor; transform:rotate(45deg) translate(-2px,-2px); opacity:.64; transition:transform .18s; }
.sidebar-nav-group.is-open .sidebar-group-chevron { transform:rotate(225deg) translate(-1px,-1px); }
.sidebar-group-panel { margin:5px 0 2px 17px; padding:4px 0 5px 9px; border-left:1px solid rgba(255,255,255,.11); }
.sidebar-group-panel[hidden] { display:none; }
.nav-section-title { margin-top: 13px; padding: 9px 12px 7px; font-size: 11px; letter-spacing: .11em; }
.nav-item { min-height:42px; padding:9px 11px; border-radius:9px; font-size:14px; gap:10px; }
.nav-item i { width: 20px; font-size: 16px; }
.sidebar-group-panel .nav-item.active { color:#fff; background:linear-gradient(100deg,rgba(79,70,229,.96),rgba(79,70,229,.62)); box-shadow:0 7px 18px rgba(49,46,129,.2); }
.sidebar-group-panel .nav-item.active::before { display:none; }
.sidebar-footer { padding: 16px 14px; }
.user-info { min-height: 58px; padding: 11px 12px; }
.user-avatar { width: 38px; height: 38px; font-size: 14px; }
.user-name { font-size: 14px; }
.user-role { margin-top: 1px; font-size: 12px; }

.top-header {
  min-height: var(--header-h);
  height: auto;
  padding-block: 12px;
  padding-inline: max(28px, calc((100vw - var(--sidebar-w) - var(--admin-content-max)) / 2 + var(--admin-page-gutter)));
}

/* 관리자 공통 페이지 헤더: 메뉴 → 제목/설명 → 주요 작업 */
.page-heading { display:flex; align-items:center; gap:14px; min-width:0; }
.page-heading-copy,
.top-header :where(div):has(> .page-title, > .header-title) {
  display:grid;
  align-content:center;
  gap:2px;
  min-width:0;
}
.top-header .page-title,
.top-header .header-title { margin:0 !important; font-size:21px; line-height:1.2; font-weight:800; color:var(--dark); }
.top-header .page-subtitle,
.top-header .header-subtitle,
.top-header .page-heading-copy > p,
.top-header .page-title + *,
.top-header .header-title + * { margin:0 !important; font-size:14px !important; line-height:1.35 !important; color:var(--gray-2) !important; }
.top-header .sidebar-toggle-btn { flex:0 0 auto; width:42px; height:42px; }
.top-header #sidebarToggle { display:none; }
.top-header .header-actions .btn { min-height:42px; white-space:nowrap; }

.page-content {
  width: 100%;
  max-width: var(--admin-content-max);
  margin-inline: auto;
  padding: 32px var(--admin-page-gutter) 56px;
}

/* 모든 관리자 페이지의 바깥 작업 영역은 이 규칙 하나로 통일한다. */
.main-content > .page-content {
  width: min(100%, var(--admin-content-max)) !important;
  max-width: var(--admin-content-max) !important;
  margin-inline: auto !important;
}

.ui-icon {
  width: 20px;
  height: 20px;
  flex: 0 0 20px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.nav-item .ui-icon { color: #94a3b8; transition: color .18s ease, transform .18s ease; }
.nav-item:hover .ui-icon, .nav-item.active .ui-icon { color: #c7d2fe; }
.nav-item:hover .ui-icon { transform: translateX(1px); }

.icon-btn, .btn-icon {
  border: 1px solid var(--gray-5);
  border-radius: 10px;
  background: var(--white);
}
.ui-icon--inline { width: 1.1em; height: 1.1em; vertical-align: -.16em; }
.ui-emoji-icon { display:inline-block; width:1.15em; margin-right:.35em; color:currentColor; text-align:center; font-size:.95em; line-height:1; }
.ui-emoji-icon:only-child { margin-right:0; }
.ui-emoji-icon--success { color:#10b981; }
.ui-emoji-icon--warning { color:#f59e0b; }
.ui-emoji-icon--danger { color:#ef4444; }
.header-logout-btn,
.header-home-btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  border: 1px solid var(--gray-5);
  background: #fff;
  color: var(--dark-3);
  white-space: nowrap;
  text-decoration: none;
}
.header-home-btn { margin-left: auto; }
.header-logout-btn:hover,
.header-home-btn:hover { border-color: var(--dark-3); color: var(--dark); background: var(--gray-7); }
.header-logout-btn .ui-icon,
.header-home-btn .ui-icon { width: 17px; height: 17px; }
[hidden] { display: none !important; }
body.role-client .two-col:has(> .admin-only[hidden]),
body.role-consultant .two-col:has(> .admin-only[hidden]) { grid-template-columns: 1fr; }
.kpi-icon, .stat-icon, .rt-icon, .feature-icon {
  border: 1px solid rgba(15, 23, 42, .06);
  box-shadow: 0 8px 18px rgba(15, 23, 42, .06);
}

.page-title { font-size: 23px; font-weight: 800; letter-spacing: -.035em; }
.page-subtitle { margin-top: 3px; font-size: 14px; line-height: 1.55; }
.header-title { font-size: 21px; font-weight: 800; }
.header-subtitle { font-size: 14px; }
.top-header #pageSubtitle { font-size:14px !important; line-height:1.5; }

.btn { min-height: 44px; padding: 10px 18px; font-size: 15px; border-radius: 9px; }
.btn-sm { min-height: 40px; padding: 8px 14px; font-size: 14px; }
.btn-icon, .icon-btn { width: 42px; height: 42px; padding: 0; }
.form-label { margin-bottom: 7px; font-size: 14px; }
.form-control, .form-input, .form-select { min-height: 46px; font-size: 15px; }
.form-hint { font-size: 13px; }
.card-title, .section-head h3 { font-size: 17px; }
.card-header { padding: 21px 24px; }
.card-body { padding: 24px; }
.modal-title { font-size: 19px; }
.modal-body { font-size: 15px; }

thead th { padding: 14px 17px; font-size: 13px; }
tbody td { padding: 16px 17px; font-size: 15px; }
.badge { min-height: 26px; padding: 4px 10px; font-size: 13px; }

/* 공통 배열과 가독성: 페이지별 작은 값이 업무 문구를 다시 축소하지 않게 한다. */
.grid-2, .grid-3, .grid-4 { align-items: stretch; }
.grid-2 > .card, .grid-3 > .card, .grid-4 > .card,
.grid-2 > .stat-card, .grid-3 > .stat-card, .grid-4 > .stat-card { height: 100%; }
.header-actions, .card-header, .card-footer { gap: 12px; }
.header-actions { flex-wrap: wrap; justify-content: flex-end; }
.btn, .btn-sm, .chip, .filter-tab, .cat-btn { white-space: nowrap; }
.tab-nav { gap: 4px; overflow-x: auto; }
.tab-btn { min-height: 44px; padding: 11px 16px; font-size: 14px; white-space: nowrap; }
.empty-state p, .empty-mini, .stat-label, .stat-change { font-size: 13px; line-height: 1.6; }

/* 관리자 전체 가독성 하한선: 페이지마다 남아 있던 10~12px 업무 문구를 일괄 보정한다. */
.page-content [style*="font-size:10px"],
.page-content [style*="font-size: 10px"],
.page-content [style*="font-size:11px"],
.page-content [style*="font-size: 11px"] { font-size:13px !important; }
.page-content [style*="font-size:12px"],
.page-content [style*="font-size: 12px"] { font-size:14px !important; }
.page-content small { font-size:13px !important; line-height:1.55; }
.page-content .kpi-cat,
.page-content .info-label,
.page-content .score-label,
.page-content .step-label,
.page-content .cal-dow,
.page-content .cal-day,
.page-content .sw-num,
.page-content .field-label,
.page-content .confirm-tag,
.page-content .mc-meta,
.page-content .user-role-sm { font-size:13px !important; }
.page-content .card-stat-val,
.page-content .meta,
.page-content .month-sub,
.page-content .room-sub,
.page-content .mc-desc,
.page-content .user-name-sm { font-size:14px !important; line-height:1.55; }
.page-content .kpi-name { font-size:15px !important; line-height:1.5; }
.page-content .sub-badge,
.page-content .dday-badge,
.page-content .role-badge,
.page-content .access-chip,
.page-content .new-badge { font-size:13px !important; }
.page-content .field-hint,
.page-content .optional { font-size:13px !important; line-height:1.55; }
.page-content .kpi-prog-name,
.page-content .kpi-prog-pct,
.page-content .stage,
.page-content .step-num,
.page-content .uz-sub { font-size:13px !important; }
.page-content .access-remove { min-height:34px; padding:6px 10px; font-size:13px !important; }
.page-content .fin-info-bar,
.page-content .fin-info-bar strong { font-size:14px !important; line-height:1.7; }
.page-content .wizard-wrap strong { font-size:13px !important; }

/* 제안서 작성기: 입력·선택·미리보기 전 과정의 판독성을 업무 화면 기준에 맞춘다. */
.wizard-steps { padding:22px; }
.wizard-step-item { min-height:46px; padding:11px 13px; }
.wizard-step-item .step-label { font-size:14px; font-weight:650; }
.wizard-content { padding:32px; }
.wizard-content .step-title { font-size:20px; }
.wizard-content .step-subtitle { font-size:14px; line-height:1.6; }
.wizard-content .form-label { font-size:14px; }
.wizard-content .form-input,
.wizard-content .form-select,
.wizard-content textarea { font-size:15px !important; line-height:1.55; }
.wizard-content .hint-box { padding:13px 15px; font-size:14px; line-height:1.6; }
.service-check-grid { gap:10px; }
.service-check-item { min-height:88px; padding:15px 16px; }
.service-check-icon { width:38px; height:38px; font-size:17px; }
.service-check-label { font-size:15px; font-weight:700; }
.service-check-desc { margin-top:3px; font-size:13px; line-height:1.5; }
.service-cat-tag { min-height:24px; padding:3px 9px; font-size:13px; }
.kpi-card .kpi-company { font-size:14px !important; font-weight:650; color:var(--gray-2); }
.kpi-card .kpi-title { font-size:16px !important; line-height:1.45; }
.kpi-card .kpi-val-label { font-size:13px !important; }
.kpi-card .kpi-val-text { font-size:14px !important; line-height:1.5; }
.kpi-row-header span,
.kvi-period,
.kvi-values,
.exec-point .ep-label,
.dash-card .dc-label,
.dash-card .dc-sub,
.cover-meta-label,
.sec-badge,
.gov-rec-fit,
.ci-label,
.sign-line { font-size:13px; }
.dpm-feature .df-title,
.gov-rec-name,
.ry-item,
.sign-title { font-size:14px; }
.dpm-feature .df-desc { font-size:13px; }
.service-table th { font-size:14px; }
.service-table td { font-size:14px; line-height:1.55; }

/* KPI·재무·기업·리포트·지원사업·교육 화면의 실제 업무용 보조 문구 */
.kpi-company { margin-bottom: 10px; color: var(--gray-3); font-size: 13px; }
.kpi-company i { margin-right: 4px; }
.rate-label, .rate-unit { color: var(--gray-3); font-size: 13px; }
.card-stat-label, .fc-score .fl, .diag-card .dc-sub,
.rt-desc, .metric-lbl, .prog-info-item .pi-label,
.rec-card .rec-caution, .rec-meta-item, .fit-tag,
.task-meta-tag, .task-standard, .task-risk, .status-pill,
.hero-stat .hs-label, .stat-info .si-label, .qrc-sub,
.cat-group-title, .cat-btn .cb-count, .level-badge, .mc-meta,
.edu-body-text th, .edu-body-text td, .prog-item-header,
.sub-chip, .cd-label, .stat-mini .sm-lbl,
.kanban-card-meta, .field-hint, .attach-file-item .afi-size,
.attach-file-item .afi-status { font-size: 13px; }
.cat-chip, .dday, .fit-tag, .level-badge, .new-badge,
.status-pill, .task-meta-tag { min-height: 28px; padding: 5px 10px; }
.new-badge { display: inline-flex; align-items: center; font-size: 12px; }
.filter-tabs { gap: 8px; }
.filter-tab { min-height: 42px; padding: 9px 15px; font-size: 14px; }
.filter-bar { align-items:center; gap:9px; padding:14px; border:1px solid var(--gray-5); border-radius:12px; background:#fff; }
.filter-btn { min-height:42px; padding:9px 14px; border-radius:9px; font-size:14px; }
.company-card-footer-meta { color:var(--gray-3); font-size:13px; }
.company-card-sub, .task-meta, .kanban-card-meta, .kanban-card-footer { font-size:13px; }
.task-status-select { min-width:82px; min-height:36px; padding:6px 28px 6px 11px; border:0; border-radius:9px; font:inherit; font-size:13px; font-weight:700; cursor:pointer; }
.task-status-select option { color:#0f172a; font-size:14px; }
.month-progress-label { color:var(--gray-3); font-size:13px; }
.gov-table .prog-name { font-size:16px; line-height:1.5; }
.gov-table .org, .gov-org-cell { color:var(--gray-2); font-size:14px; line-height:1.55; }
.gov-table th, .gov-table td { vertical-align:middle; }

.list-pager { display:flex; align-items:center; justify-content:space-between; gap:18px; margin:22px 0 4px; padding:14px 16px; border:1px solid var(--gray-5); border-radius:12px; background:#fff; }
.pager-summary { margin:0; color:var(--gray-2); font-size:13px; }
.pager-controls { display:flex; align-items:center; gap:6px; }
.pager-page, .pager-nav { display:inline-grid; place-items:center; min-width:38px; height:38px; padding:0 9px; border:1px solid var(--gray-5); border-radius:8px; background:#fff; color:var(--dark-3); font:inherit; font-size:14px; font-weight:700; cursor:pointer; }
.pager-page:hover, .pager-nav:hover { border-color:var(--primary-light); color:var(--primary); background:var(--primary-bg); }
.pager-page.active { border-color:var(--primary); color:#fff; background:var(--primary); }
.pager-nav:disabled { opacity:.4; cursor:not-allowed; }
.pager-gap { padding:0 2px; color:var(--gray-3); }

/* 대시보드: 핵심 현황을 먼저 읽고 세부 업무로 내려가는 구조 */
.core-banner {
  min-height: 150px;
  margin-bottom: 22px;
  padding: 30px 32px;
  border: 1px solid rgba(102, 83, 184, .25);
  border-radius: 16px;
  background: linear-gradient(125deg, #33285f 0%, #51418c 68%, #6653b8 100%);
  box-shadow: 0 18px 40px rgba(51, 40, 95, .14);
}
.core-banner .left h2 { font-size: 23px; letter-spacing: -.025em; }
.core-banner .left p { max-width: 620px; font-size: 15px; line-height: 1.65; }
.core-btn { min-height: 42px; padding: 10px 16px; font-size: 14px; }
.kpi-grid { gap: 14px; margin-bottom: 18px; }
.kpi-card { min-height: 116px; padding: 22px; border-radius: 14px; box-shadow: none; }
.kpi-card:hover { border-color: #c9c3e6; box-shadow: 0 8px 24px rgba(30, 27, 39, .07); }
.kpi-icon { width: 50px; height: 50px; }
.kpi-info .label { font-size: 14px; font-weight: 600; }
.kpi-info .value { margin-top: 4px; font-size: 27px; font-weight: 800; }
.kpi-info .sub { margin-top: 7px; font-size: 13px; }
.fin-grid { gap: 14px; margin-bottom: 22px; }
.fin-card { min-height: 108px; padding: 20px; border-radius: 13px; }
.fin-card .f-label { font-size: 13px; font-weight: 650; }
.fin-card .f-value { margin-top: 8px; font-size: 21px; }
.fin-card .f-sub { margin-top: 6px; font-size: 13px; }
.two-col, .three-col { gap: 16px; margin-bottom: 16px; }
.section-card { border-radius: 14px; box-shadow: none; }
.section-head { min-height: 59px; padding: 17px 20px; }
.section-head a { font-size: 13px; }
.section-body { padding: 19px 20px; }
.quick-btn { min-height: 50px; padding: 13px 15px; }
.quick-btn span, .meeting-info .title, .gov-name { font-size: 14px; }
.meeting-info .meta, .gov-org { font-size: 13px; }

/* 고객사/회원 관리: 검색과 데이터 행의 판독성을 우선 */
.client-filter-bar { gap: 12px; margin-bottom: 18px; padding: 16px; border: 1px solid var(--gray-5); border-radius: 13px; background: #fff; }
.client-filter-bar .form-input, .client-filter-bar .form-select { min-height: 46px; }
.client-table-wrap { border-radius: 14px; box-shadow: none; }
.client-table th { padding: 14px 17px; font-size: 13px; }
.client-table td { height: 61px; padding: 15px 17px; font-size: 15px; }
.client-name { font-size: 15px; font-weight: 700; }
.client-rep { margin-top: 3px; font-size: 13px; }
.sub-chip { padding: 5px 10px; font-size: 12px; }
.action-btns button { min-height: 34px; padding: 6px 10px; font-size: 13px; }
.cd-label, .stat-mini .sm-lbl { font-size: 12px; }
.cd-value { font-size: 15px; }
.stat-mini .sm-val { font-size: 21px; }

/* 사용자·기업 권한 관리 */
.access-summary { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:14px; margin-bottom:18px; }
.access-summary-card { display:flex; align-items:center; justify-content:space-between; min-height:96px; padding:22px; background:#fff; border:1px solid var(--gray-5); border-radius:14px; }
.access-summary-card span { color:var(--gray-2); font-size:14px; font-weight:650; }
.access-summary-card strong { color:var(--dark); font-size:27px; }
.access-toolbar { display:flex; align-items:center; justify-content:space-between; gap:20px; }
.access-toolbar p { margin-top:4px; color:var(--gray-2); font-size:13px; }
.access-filters { display:flex; gap:10px; }
.access-filters .form-select { width:160px; }
.access-filters .form-input { width:260px; }
.access-table-wrap { overflow-x:auto; }
.access-table th:nth-child(1) { width:28%; }
.access-table th:nth-child(2) { width:18%; }
.access-table th:nth-child(3) { width:auto; }
.access-table th:nth-child(4) { width:150px; }
.access-table td { vertical-align:middle; }
.access-scope-summary { display:flex; align-items:center; gap:12px; min-width:0; }
.access-scope-summary > strong { flex:0 0 auto; font-size:15px; color:var(--dark); }
.access-scope-summary > span { font-size:13px; color:var(--gray-3); }
.access-scope-summary .access-chip-list { display:flex; align-items:center; flex-wrap:nowrap; gap:6px; min-width:0; overflow:hidden; }
.access-scope-summary .access-chip { max-width:170px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.access-more { flex:0 0 auto; font-size:13px; font-weight:700; color:var(--primary); }
.assignment-current { margin-top:22px; padding-top:18px; border-top:1px solid var(--gray-5); }
.assignment-current-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:10px; }
.assignment-current-head strong { font-size:15px; }
.assignment-current-head span { font-size:13px; color:var(--gray-3); }
.assignment-current-list { display:grid; gap:8px; max-height:260px; overflow-y:auto; padding-right:4px; }
.assignment-current-item { display:flex; align-items:center; justify-content:space-between; gap:14px; padding:11px 12px; border:1px solid var(--gray-5); border-radius:10px; background:var(--gray-7); }
.assignment-current-item div { min-width:0; display:flex; align-items:center; gap:8px; }
.assignment-current-item strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:14px; }
.assignment-current-item span { flex:0 0 auto; font-size:12px; color:var(--gray-3); }
.assignment-current-item button { flex:0 0 auto; min-height:34px; padding:6px 10px; border:1px solid #fecaca; border-radius:8px; background:#fff; color:var(--danger); cursor:pointer; }
.access-table { width:100%; border-collapse:collapse; }
.access-user { display:flex; align-items:center; gap:11px; }
.access-user > span { display:grid; place-items:center; width:38px; height:38px; border-radius:11px; color:var(--primary); background:var(--primary-bg); font-weight:800; }
.access-user strong,.access-user small { display:block; }
.access-user small { margin-top:2px; color:var(--gray-2); font-size:13px; }
.role-badge,.access-chip { display:inline-flex; align-items:center; min-height:29px; padding:5px 10px; border-radius:999px; font-size:13px; font-weight:700; }
.role-badge.role-admin,.role-badge.role-super_admin { color:#4338ca; background:#eef2ff; }
.role-badge.role-consultant { color:#6d28d9; background:#f3e8ff; }
.role-badge.role-client { color:#047857; background:#d1fae5; }
.approval-badge { display:inline-flex; align-items:center; min-height:29px; padding:5px 10px; border-radius:999px; font-size:13px; font-weight:700; }
.approval-pending { color:#9a3412; background:#ffedd5; }
.approval-approved { color:#047857; background:#d1fae5; }
.approval-rejected { color:#b91c1c; background:#fee2e2; }
.access-chip { color:var(--dark-3); background:var(--gray-6); }
.access-chip-list,.access-role-list,.access-actions { display:flex; flex-wrap:wrap; gap:6px; }
.access-role-list { color:var(--gray-1); font-size:13px; }
.access-remove { min-height:32px; padding:5px 9px; color:var(--danger); border:1px solid #fecaca; border-radius:8px; background:#fff; font-size:12px; font-weight:700; }
.access-none { color:var(--gray-3); font-size:13px; }
.access-empty { padding:54px !important; text-align:center; color:var(--gray-2); }
.access-error { color:var(--danger); }
.access-help { padding:12px 14px; color:var(--gray-2); background:var(--gray-7); border-radius:9px; font-size:13px; line-height:1.6; }
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }

/* 로그인 화면은 별도 레이아웃이지만 같은 가독성 기준을 사용 */
.left-panel { width: 480px; padding: 54px 48px; }
.panel-logo { margin-bottom: 72px; }
.panel-logo img { width: 194px; }
.panel-headline h2 { margin-bottom: 20px; font-size: 36px; line-height: 1.28; }
.panel-headline p { max-width: 350px; font-size: 17px; line-height: 1.75; }
.feature-list { margin-top: 46px; gap: 18px; }
.feature-icon { width: 42px; height: 42px; font-size: 17px; }
.feature-text, .feature-text strong { font-size: 14px; }
.panel-bottom p { font-size: 13px; }
.right-panel { padding: 48px; }
.auth-box { max-width: 520px; }
.auth-tab { margin-bottom: 24px; }
.auth-tab-btn { min-height: 46px; font-size: 15px; }
.auth-form { padding: 42px; border-radius: 18px; }
.auth-title { font-size: 29px; letter-spacing: -.035em; }
.auth-subtitle { margin-top: 7px; margin-bottom: 30px; font-size: 16px; }
.auth-form .form-label { font-size: 15px; }
.auth-form .form-control { min-height: 52px; padding: 13px 15px; font-size: 16px; }
.auth-form .input-wrap .form-control { padding-left: 44px; }
.auth-form .btn-auth { min-height: 52px; font-size: 16px; }
.auth-form .divider { font-size: 14px; }
.demo-btn { min-height: 56px; padding: 11px 14px; }
.demo-name { font-size: 14px; }
.demo-role { font-size: 12px; }
.admin-login-link { font-size: 14px; }

@media (max-width: 1200px) {
  :root { --admin-page-gutter: 26px; }
  .core-banner { align-items: flex-start; flex-direction: column; gap: 20px; }
  .core-banner .right { flex-wrap: wrap; }
}

@media (max-width: 900px) {
  .left-panel { width: 390px; padding: 42px 34px; }
  .panel-headline h2 { font-size: 31px; }
  .access-summary { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .access-toolbar { align-items:stretch; flex-direction:column; }
}

@media (max-width: 768px) {
  :root { --admin-page-gutter: 18px; }
  .main-content, .top-header, .page-content { width: 100%; max-width: 100vw; box-sizing:border-box; }
  .top-header { min-height: 68px; padding: 10px var(--admin-page-gutter); flex-wrap: wrap; }
  .top-header #sidebarToggle { display:inline-grid; place-items:center; }
  .page-heading { gap:10px; }
  .top-header .page-title,
  .top-header .header-title { font-size:19px; }
  .top-header .page-subtitle,
  .top-header .header-subtitle,
  .top-header .page-heading-copy > p { font-size:13px; }
  .top-header .header-actions { width:100%; padding-left:52px; justify-content:flex-start; }
  .top-header > *, .header-actions { min-width: 0; max-width: 100%; }
  .top-header .form-control, .top-header .form-select { max-width: 100%; }
  .page-content { padding: 22px var(--admin-page-gutter) 44px; }
  .wizard-wrap, .wizard-steps, .wizard-content { width:100%; min-width:0; box-sizing:border-box; }
  .page-title { font-size: 21px; }
  .page-subtitle { font-size: 13px; }
  .core-banner { min-height: auto; padding: 24px 22px; }
  .core-banner .left h2 { font-size: 21px; }
  .kpi-grid, .fin-grid { grid-template-columns: 1fr 1fr; }
  .client-filter-bar { padding: 13px; }
}

@media (max-width: 600px) {
  .right-panel { padding: 24px 18px; }
  .auth-form { padding: 30px 24px; }
  .auth-title { font-size: 25px; }
  .kpi-grid, .fin-grid { grid-template-columns: 1fr; }
  .core-banner .right, .core-btn { width: 100%; }
  .core-btn { justify-content: center; }
  .client-filter-bar .form-input, .client-filter-bar .form-select { width: 100% !important; min-width: 0 !important; }
  .client-table th, .client-table td { padding-inline: 13px; }
  .access-summary { grid-template-columns:1fr 1fr; }
  .access-summary-card { min-height:82px; padding:16px; align-items:flex-start; flex-direction:column; }
  .access-filters { flex-direction:column; }
  .access-filters .form-select,.access-filters .form-input { width:100%; }
  .report-type-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
  .list-pager { align-items:stretch; flex-direction:column; }
  .pager-controls { justify-content:center; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; }
}
/* 현재 작업 기업: 기업 단위 업무 화면의 최우선 컨텍스트 */
.company-context {
  display:grid;
  grid-template-columns:auto minmax(260px, 420px) minmax(180px, 1fr);
  align-items:center;
  gap:16px;
  margin:0 0 22px;
  padding:17px 20px;
  border:1px solid #d9e1ee;
  border-left:4px solid var(--primary);
  border-radius:14px;
  background:#fff;
  box-shadow:0 6px 20px rgba(15, 23, 42, .055);
}
.company-context__intro { display:flex; align-items:center; gap:12px; min-width:0; }
.company-context__icon {
  width:44px; height:44px; border-radius:12px; flex:0 0 auto;
  display:flex; align-items:center; justify-content:center;
  background:var(--primary-bg); color:var(--primary); font-size:18px;
}
.company-context__eyebrow { margin:0 0 2px; color:var(--primary); font-size:12px; font-weight:800; letter-spacing:.04em; }
.company-context__title { margin:0; color:var(--dark); font-size:16px; font-weight:800; line-height:1.35; }
.company-context__control { min-width:0; }
.company-context__control label { display:block; margin:0 0 6px; color:var(--gray-2); font-size:12px; font-weight:700; }
.company-context__control select {
  width:100% !important; min-height:46px; padding:0 42px 0 14px !important;
  border:1.5px solid #aebbd0; border-radius:10px; background-color:#fff;
  color:var(--dark); font-size:14px !important; font-weight:700;
}
.company-context__control select:focus { border-color:var(--primary); box-shadow:0 0 0 3px rgba(79,70,229,.12); outline:0; }
.company-context__help { color:var(--gray-2); font-size:13px; line-height:1.55; }
.company-context__help strong { color:var(--dark); }
@media (max-width:900px) {
  .company-context { grid-template-columns:1fr 1.25fr; }
  .company-context__help { grid-column:1 / -1; }
}
@media (max-width:640px) {
  .company-context { grid-template-columns:1fr; gap:12px; padding:15px 16px; }
  .company-context__help { grid-column:auto; }
  .company-context__icon { width:40px; height:40px; }
}
/* 기업담당자에게는 선택기 대신 서버에서 배정된 단일 기업명을 표시한다. */
.single-company-name {
  display: inline-flex;
  min-height: 42px;
  align-items: center;
  padding: 0 14px;
  border: 1px solid var(--gray-5);
  border-radius: 8px;
  background: var(--white);
  color: var(--navy);
  font-size: 14px;
  font-weight: 700;
}

/* 2026-08-27 관리자 전 화면 공통 시각 체계
   장식용 다색 아이콘은 중립색+브랜드색으로 통일하고 상태 의미색은 배지와 상태값에만 사용한다. */
:root {
  --admin-ink:#17213a;
  --admin-muted:#64748b;
  --admin-line:#dfe4ec;
  --admin-line-strong:#d2d8e3;
  --admin-surface:#ffffff;
  --admin-surface-soft:#f7f8fb;
  --admin-brand:#5b50a6;
  --admin-brand-soft:#f0eef9;
  --admin-shadow:0 5px 18px rgba(15,23,42,.045);
}

body.role-super_admin,
body.role-admin,
body.role-consultant,
body.role-client { color:var(--admin-ink); background:#f5f7fa; }

.page-content :where(.card,.section-card,.stat-card,.summary-card,.metric-card,.report-card,.edu-card,.training-card,.settings-card) {
  border-color:var(--admin-line);
  box-shadow:var(--admin-shadow);
}
.page-content :where(.card,.section-card,.stat-card,.summary-card,.metric-card) { border-radius:14px; }
.page-content :where(.card-header,.section-head) { border-bottom-color:#e7eaf0; }
.page-content :where(.card-title,.section-head h3,.modal-title) { color:var(--admin-ink); letter-spacing:-.02em; }

/* 제목·요약·빈 상태 아이콘은 한 가지 모양과 색으로 표시한다. */
.page-content :where(.card-title,.section-head h3) > i,
.modal-title > i,
.page-content :where(.stat-icon,.rt-icon,.edu-card-icon,.hero-icon,.mc-icon,.r-icon,.gp-icon,.ps-icon,.cb-icon,.ep-icon,.ai-icon,.service-check-icon,.company-context__icon) {
  border:1px solid rgba(91,80,166,.1) !important;
  background:var(--admin-brand-soft) !important;
  color:var(--admin-brand) !important;
  box-shadow:none !important;
}
.page-content :where(.card-title,.section-head h3) > i,
.modal-title > i {
  display:inline-grid;
  place-items:center;
  width:32px;
  height:32px;
  margin-right:7px !important;
  border-radius:9px;
  font-size:14px !important;
  vertical-align:middle;
}
.page-content .stat-icon i,
.page-content :where(.rt-icon,.edu-card-icon,.hero-icon,.mc-icon,.r-icon,.gp-icon,.ps-icon,.cb-icon,.ep-icon,.ai-icon,.service-check-icon,.company-context__icon) i {
  color:var(--admin-brand) !important;
}
.page-content .empty-state > i,
.page-content .empty-mini > i { color:#93a0b4 !important; }

/* 공통 상호작용 요소 */
.page-content :where(.btn-secondary,.btn-ghost,.icon-btn,.btn-icon) {
  border-color:var(--admin-line-strong);
  background:#fff;
  color:#465269;
}
.page-content :where(.btn-secondary,.btn-ghost,.icon-btn,.btn-icon):hover {
  border-color:#aaa2ce;
  background:#f7f6fb;
  color:var(--admin-brand);
}
.page-content :where(.tab-btn,.filter-tab,.filter-btn,.cat-btn) { border-color:var(--admin-line-strong); background:#fff; color:#536077; }
.page-content :where(.tab-btn.active,.filter-tab.active,.filter-btn.active,.cat-btn.active) {
  border-color:#8f85bf;
  background:var(--admin-brand-soft);
  color:#4f468d;
  box-shadow:none;
}
.page-content :where(.form-control,.form-input,.form-select) { border-color:#cfd6e2; background-color:#fff; }
.page-content :where(.form-control,.form-input,.form-select):focus {
  border-color:#8f85bf;
  box-shadow:0 0 0 3px rgba(91,80,166,.11);
}
.page-content :where(.filter-bar,.client-filter-bar) { border-color:var(--admin-line); background:var(--admin-surface); box-shadow:none; }

/* 알림·승인·진행 상태는 의미색을 유지한다. */
.page-content :where(.badge-success,.status-success,.approval-approved,.task-check.done) { color:#047857; }
.page-content :where(.badge-warning,.status-warning,.approval-pending) { color:#9a6700; }
.page-content :where(.badge-danger,.status-danger,.approval-rejected) { color:#b42318; }

@media (max-width:768px) {
  .page-content :where(.card-title,.section-head h3) > i,
  .modal-title > i { width:30px; height:30px; }
}
