/* KMI GROUPWARE V20.6.3 - enterprise visual system */
:root {
  --navy: #0b1f3a;
  --navy2: #102d52;
  --blue: #1769e0;
  --cyan: #159fbb;
  --bg: #f3f6fa;
  --line: #dce4ee;
  --text: #17243a;
  --muted: #66758a;
  --ok: #147a55;
  --warn: #ad6b05;
  --danger: #b73543;
  --white: #ffffff;
  --shadow: 0 10px 30px rgba(17, 39, 70, 0.07);
  --kmi-font: "Pretendard", "Noto Sans KR", "Malgun Gothic", "Apple SD Gothic Neo", Arial, sans-serif;
  --kmi-navy-950: #071426;
  --kmi-navy-900: #0b1f3a;
  --kmi-navy-800: #102d52;
  --kmi-blue-700: #1458bf;
  --kmi-blue-600: #1769e0;
  --kmi-blue-500: #2c7bf0;
  --kmi-blue-100: #eaf2ff;
  --kmi-slate-950: #111c2e;
  --kmi-slate-800: #29384d;
  --kmi-slate-700: #435269;
  --kmi-slate-600: #66758a;
  --kmi-slate-500: #7f8da0;
  --kmi-slate-300: #cbd5e1;
  --kmi-slate-200: #dce4ee;
  --kmi-slate-100: #edf2f7;
  --kmi-slate-050: #f7f9fc;
  --kmi-green-700: #126b4b;
  --kmi-green-100: #e8f6ef;
  --kmi-amber-700: #9b6106;
  --kmi-amber-100: #fff3d6;
  --kmi-red-700: #aa2f3e;
  --kmi-red-100: #fdebee;
  --kmi-logo-orange: #fbb316;
  --kmi-logo-orange-text: #17243a;
  --kmi-logo-orange-soft: #fff8e7;
  --kmi-radius-sm: 7px;
  --kmi-radius-md: 10px;
  --kmi-radius-lg: 14px;
  --kmi-radius-xl: 18px;
  --kmi-control: 42px;
  --kmi-sidebar: 252px;
  --kmi-header: 66px;
  --kmi-focus: 0 0 0 3px rgba(23, 105, 224, 0.18);
  --kmi-shadow-sm: 0 2px 8px rgba(17, 39, 70, 0.05);
  --kmi-shadow-md: 0 12px 32px rgba(17, 39, 70, 0.09);
  --kmi-shadow-lg: 0 24px 70px rgba(7, 25, 51, 0.18);
}

/* V20.7.49: employee signature management and linked approval signatures */
.hr-signature-manager{display:grid;grid-template-columns:minmax(260px,380px) minmax(260px,1fr);gap:20px;align-items:center}
.hr-signature-preview{height:126px;border:1px solid var(--line);border-radius:12px;background:#fff;display:grid;place-items:center;padding:12px;overflow:hidden}
.hr-signature-preview img{display:block;max-width:100%;max-height:100%;object-fit:contain}
.hr-signature-preview span{color:var(--muted);font-size:13px}
.hr-signature-actions{display:flex;align-items:flex-start;gap:8px;flex-wrap:wrap}
.hr-signature-actions small{flex-basis:100%;color:var(--muted);line-height:1.5}
.approval-signature-image{display:block;width:100%;height:48px;object-fit:contain;margin:auto}
.approval-electronic-sign.signature-missing{font-size:10px;color:#8b98aa;background:#f4f6f9;border:1px dashed #c8d0db;border-radius:5px;padding:4px 5px}
@media(max-width:720px){.hr-signature-manager{grid-template-columns:1fr}.hr-signature-preview{height:110px}}
.training-bulk-sign{border-color:#d69a2d!important;background:#fff8e9!important;color:#8a5b05!important}

/* V20.7.41 구매·매출 대시보드 */
.purchase-tabs{overflow-x:auto;flex-wrap:nowrap;scrollbar-width:thin}
.purchase-tabs button{flex:0 0 auto;white-space:nowrap}
.purchase-sales-metrics{margin-bottom:16px}
.purchase-receivable-overview{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:16px;margin-bottom:16px;align-items:stretch}
.purchase-receivable-overview>.card{margin:0}
.purchase-panel-actions{display:flex;gap:8px;align-items:center}
@media(max-width:980px){.purchase-receivable-overview{grid-template-columns:1fr}}

/* V20.7.42 통합 자금관리 메뉴 */
.purchase-combined-switch{display:flex;gap:8px;margin:0 0 14px;padding:4px 0;align-items:center}
.purchase-combined-switch .btn{min-width:112px}
@media(max-width:700px){.purchase-combined-switch{overflow-x:auto}.purchase-combined-switch .btn{flex:0 0 auto}}

/* V20.7.44 자금 대시보드 좌우 카드 정렬 */
.purchase-receivable-overview>.card{display:flex;flex-direction:column}
.purchase-receivable-overview>.card>.panel-head{min-height:58px;box-sizing:border-box}
.purchase-receivable-overview>.card>.purchase-bars,
.purchase-receivable-overview>.card>.purchase-scheduled-list{flex:1;min-height:160px}
.purchase-receivable-overview .purchase-bars>.empty,
.purchase-receivable-overview .purchase-scheduled-list>.empty{display:flex!important;align-items:center;justify-content:center;width:100%;min-height:160px;text-align:center;grid-template-columns:none!important}

/* V20.7.44 입금·지급 중심 자금 대시보드 */
.cashflow-dashboard-block{margin:0 0 16px}
.cashflow-dashboard-block.cashflow-payable-block{margin-top:22px}
.cashflow-section-head{display:flex;align-items:baseline;gap:10px;margin:0 0 10px;padding:0 2px}
.cashflow-section-head h2{margin:0;font-size:18px;color:#101d31}
.cashflow-section-head span{font-size:12px;color:#718096}
.cashflow-metrics{grid-template-columns:repeat(4,minmax(0,1fr))!important;margin-bottom:0!important}
.purchase-overview-grid.cashflow-payment-grid{grid-template-columns:1fr!important}
.cashflow-payment-grid .purchase-overview-right{width:100%}
@media(max-width:900px){.cashflow-metrics{grid-template-columns:repeat(2,minmax(0,1fr))!important}}
@media(max-width:540px){.cashflow-section-head{display:block}.cashflow-section-head span{display:block;margin-top:4px}.cashflow-metrics{grid-template-columns:1fr!important}}

/* V20.7.48 계정관리 세부 항목 권한 */
.account-permission-table .account-permission-group td{background:#edf3fb!important;border-top:2px solid #b9cbe3}
.account-permission-table .account-permission-group td:first-child b{color:#173f72;font-size:13px}
.account-permission-group-note{color:#60738d;font-size:11px;font-weight:700}
.account-permission-table .account-permission-detail td:first-child{position:relative;padding-left:34px!important;background:#fbfcfe}
.account-permission-table .account-permission-detail td:first-child::before{content:"";position:absolute;left:18px;top:0;bottom:50%;width:8px;border-left:1px solid #b9c7d8;border-bottom:1px solid #b9c7d8}
.account-permission-table .account-permission-detail td:first-child b{font-size:12px;color:#263b58}
.account-permission-table .account-permission-detail .cell-sub{font-size:10px;color:#8190a4}

/* V20.7.22: schedule master bulk actions and expanded color palette */
.master-head-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap}
.master-editor .info-panel{padding:14px 16px;border:1px solid #d7e1ef;border-radius:12px;background:#f7faff;color:#263b5a}
.master-editor .info-panel p{margin:6px 0 0;line-height:1.55}
.master-editor .color-choices{grid-template-columns:repeat(10,minmax(30px,1fr));gap:10px}
@media(max-width:760px){
 .master-head-actions{width:100%;justify-content:stretch}
 .master-head-actions .btn{flex:1 1 auto}
 .master-editor .color-choices{grid-template-columns:repeat(5,minmax(34px,1fr))}
}

html {
  color-scheme: light;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
}

body {
  min-width: 320px;
  margin: 0;
  color: var(--kmi-slate-950);
  background: var(--bg);
  font-family: var(--kmi-font);
  font-size: 14px;
  line-height: 1.5;
}

body.kmi-modal-open,
body.kmi-sidebar-open {
  overflow: hidden;
}

* {
  scrollbar-width: thin;
  scrollbar-color: #b8c4d3 transparent;
}

*::-webkit-scrollbar {
  width: 9px;
  height: 9px;
}

*::-webkit-scrollbar-thumb {
  border: 2px solid transparent;
  border-radius: 999px;
  background: #b8c4d3;
  background-clip: padding-box;
}

*::-webkit-scrollbar-track {
  background: transparent;
}

button,
input,
select,
textarea {
  font: inherit;
}

button,
[role="button"] {
  -webkit-tap-highlight-color: transparent;
}

button:focus-visible,
a:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
summary:focus-visible,
[tabindex]:focus-visible {
  outline: 0;
  box-shadow: var(--kmi-focus);
}

::selection {
  color: #ffffff;
  background: var(--kmi-blue-600);
}

[hidden] {
  display: none !important;
}

#app {
  min-height: 100vh;
  display: flex;
}

.sidebar {
  position: fixed;
  inset: 0 auto 0 0;
  z-index: 40;
  width: var(--kmi-sidebar);
  display: flex;
  flex-direction: column;
  color: #dce8f7;
  background: linear-gradient(180deg, var(--kmi-navy-900) 0%, var(--kmi-navy-950) 100%);
  box-shadow: 10px 0 30px rgba(7, 20, 38, 0.08);
}

.brand {
  min-height: 78px;
  height: 78px;
  padding: 0 20px;
  gap: 12px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}

.brand-logo {
  width: 86px;
  max-height: 34px;
  object-fit: contain;
}

.brand b {
  color: #ffffff;
  font-size: 14px;
  font-weight: 800;
  letter-spacing: 0.04em;
}

.brand span {
  margin-top: 3px;
  color: #8ca5c2;
  font-size: 9px;
  letter-spacing: 0.06em;
}

.sidebar nav {
  flex: 1;
  overflow: auto;
  padding: 17px 12px 24px;
  overscroll-behavior: contain;
}

.nav-group {
  margin: 0 0 16px;
}

.nav-group label {
  padding: 0 10px 7px;
  color: #728dad;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.09em;
}

.nav-item {
  width: 100%;
  min-height: 41px;
  height: auto;
  margin: 2px 0;
  padding: 9px 11px;
  gap: 10px;
  border: 1px solid transparent;
  border-radius: 9px;
  color: #c8d7e8;
  background: transparent;
  font-size: 12px;
  font-weight: 650;
  text-align: left;
  transition: background 0.16s ease, border-color 0.16s ease, color 0.16s ease, transform 0.16s ease;
}

.nav-item:hover {
  color: #ffffff;
  border-color: rgba(255, 255, 255, 0.07);
  background: rgba(255, 255, 255, 0.07);
}

.nav-item:active {
  transform: translateY(1px);
}

.nav-item.active {
  color: #ffffff;
  border-color: rgba(120, 182, 255, 0.24);
  background: linear-gradient(90deg, #1769e0 0%, #135db9 100%);
  box-shadow: 0 8px 18px rgba(0, 70, 156, 0.28);
}

.nav-item .ico {
  width: 20px;
  flex: 0 0 20px;
  color: inherit;
  font-size: 14px;
  text-align: center;
}

.profile {
  min-height: 74px;
  padding: 13px 15px;
  gap: 10px;
  border-top: 1px solid rgba(255, 255, 255, 0.09);
  background: rgba(0, 0, 0, 0.13);
}

.avatar {
  width: 36px;
  height: 36px;
  border-radius: 10px;
  background: linear-gradient(145deg, #2d83ed, #1455b7);
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.18);
}

.profile b {
  font-size: 12px;
}

.profile span {
  margin-top: 2px;
  color: #8fa6bf;
  font-size: 9px;
}

.profile button {
  width: 32px;
  height: 32px;
  border-radius: 8px;
}

.shell {
  width: calc(100% - var(--kmi-sidebar));
  min-width: 0;
  margin-left: var(--kmi-sidebar);
}

.shell > header {
  position: sticky;
  top: 0;
  z-index: 30;
  height: var(--kmi-header);
  padding: 0 24px;
  border-bottom: 1px solid var(--kmi-slate-200);
  background: rgba(255, 255, 255, 0.94);
  box-shadow: 0 1px 0 rgba(17, 39, 70, 0.02);
  backdrop-filter: blur(14px);
}

.global-search {
  width: min(560px, 52vw);
  height: 40px;
  padding: 0 13px;
  gap: 9px;
  border: 1px solid var(--kmi-slate-200);
  border-radius: 10px;
  color: var(--kmi-slate-500);
  background: var(--kmi-slate-050);
  transition: border-color 0.16s ease, background 0.16s ease, box-shadow 0.16s ease;
}

.global-search:focus-within {
  border-color: var(--kmi-blue-500);
  background: #ffffff;
  box-shadow: var(--kmi-focus);
}

.global-search input {
  height: 100%;
  border: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
}

.head-actions {
  gap: 8px;
}

.iconbtn,
.profile button,
.modal-head > button {
  display: inline-grid;
  place-items: center;
  border: 1px solid var(--kmi-slate-200);
  color: var(--kmi-slate-700);
  background: #ffffff;
}

.iconbtn {
  width: 38px;
  height: 38px;
  border-radius: 10px;
}

.iconbtn:hover,
.modal-head > button:hover {
  border-color: #b9c7d8;
  background: var(--kmi-slate-050);
}

.head-user {
  margin-left: 8px;
  color: var(--kmi-slate-800);
  font-size: 12px;
}

.status {
  width: 8px;
  height: 8px;
  box-shadow: 0 0 0 3px rgba(20, 122, 85, 0.12);
}

main#main {
  width: 100%;
  max-width: 1760px;
  min-height: calc(100vh - var(--kmi-header));
  margin: 0 auto;
  padding: 28px clamp(22px, 2.2vw, 38px) 48px;
}

.page-head {
  min-height: 68px;
  margin: 0 0 22px;
  align-items: flex-end;
  gap: 24px;
}

.eyebrow {
  color: var(--kmi-blue-600);
  font-size: 10px;
  font-weight: 850;
  letter-spacing: 0.12em;
}

.page-head h1 {
  margin: 5px 0 5px;
  color: var(--kmi-slate-950);
  font-size: clamp(23px, 2vw, 29px);
  font-weight: 820;
  line-height: 1.22;
  letter-spacing: -0.035em;
}

.page-head p {
  max-width: 900px;
  color: var(--kmi-slate-600);
  font-size: 12px;
  line-height: 1.55;
}

.datebox {
  flex: 0 0 auto;
  padding: 8px 0 2px 18px;
  border-left: 1px solid var(--kmi-slate-200);
  color: var(--kmi-slate-500);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.04em;
}

.datebox b {
  margin-top: 3px;
  color: var(--kmi-slate-800);
  font-size: 12px;
  letter-spacing: 0;
}

.card,
.modal-box,
.ap-card,
.org-dept-card,
.safety-role-card,
.dept-rank-level,
.cert090-person,
.cert095-process,
.tool097-qr-select {
  border: 1px solid var(--kmi-slate-200);
  background: #ffffff;
  box-shadow: var(--kmi-shadow-sm);
}

.card {
  border-radius: var(--kmi-radius-lg);
  box-shadow: var(--kmi-shadow-sm);
}

.card:hover {
  border-color: #d1dbe7;
}

.cards {
  gap: 14px;
  margin-bottom: 17px;
}

.cards.compact {
  gap: 12px;
  margin-bottom: 16px;
}

.metric {
  min-height: 112px;
  padding: 17px 18px;
  border-radius: var(--kmi-radius-lg);
}

.metric:before {
  width: 3px;
  background: linear-gradient(180deg, var(--kmi-blue-500), var(--kmi-blue-700));
}

.metric .label {
  color: var(--kmi-slate-600);
  font-size: 11px;
  font-weight: 700;
}

.metric strong {
  margin: 8px 0 3px;
  color: var(--kmi-slate-950);
  font-size: clamp(23px, 2vw, 29px);
  font-weight: 830;
  letter-spacing: -0.035em;
}

.metric strong small {
  color: var(--kmi-slate-600);
  font-size: 12px;
  font-weight: 650;
}

.metric > small,
.metric small {
  color: var(--kmi-slate-500);
  font-size: 10px;
}

.grid2 {
  gap: 16px;
}

/* Grid children must be allowed to shrink so wide tables scroll inside their
   own containers instead of forcing the entire page wider on phones. */
.grid2 > *,
.cards > *,
.module-summary > *,
.assistant-layout > *,
.stock105-grid > *,
.form-grid > *,
.print-grid > * {
  min-width: 0;
}

/* Legacy feature grids occasionally used intrinsic track sizing. Keep wide
   tables and controls inside their own panels instead of widening the page. */
.cert-work-grid > *,
.cert075-approval-grid > *,
.cert075-stage-list,
.cert075-stage-list > * {
  min-width: 0;
}

.training-alert-guide {
  min-width: 0;
  flex-wrap: wrap;
}

.panel,
.form-card {
  padding: 20px;
}

.panel-head,
.section-title,
.ap-card-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
}

.panel-head {
  min-height: 34px;
  margin: 0 0 16px;
}

.panel-head > div:first-child,
.section-title > div:first-child {
  min-width: 0;
}

.panel-head h2,
.section-title h3,
.ap-card-head h3,
.form-section > h3 {
  margin: 0;
  color: var(--kmi-slate-950);
  font-size: 15px;
  font-weight: 800;
  line-height: 1.4;
}

.panel-head span,
.panel-head p,
.section-title span,
.ap-card-head span {
  display: block;
  margin-top: 3px;
  color: var(--kmi-slate-600);
  font-size: 11px;
  font-weight: 500;
  line-height: 1.5;
}

.panel-actions,
.form-actions,
.modal-actions,
.button-stack,
.row-actions,
.org-edit-actions,
.schedule-actions {
  display: flex;
  align-items: center;
  gap: 7px;
  flex-wrap: wrap;
}

.panel-actions,
.form-actions,
.modal-actions {
  justify-content: flex-end;
}

.tabs,
.cert-tabs,
.schedule-tabs,
.c119-tabs,
.c120-tabs {
  display: flex;
  align-items: flex-end;
  gap: 3px;
  min-height: 45px;
  margin: 0 0 18px;
  padding: 0 2px;
  overflow-x: auto;
  overflow-y: hidden;
  border-bottom: 1px solid var(--kmi-slate-200);
  scrollbar-width: none;
}

.tabs::-webkit-scrollbar,
.cert-tabs::-webkit-scrollbar,
.schedule-tabs::-webkit-scrollbar {
  display: none;
}

.tabs button,
.cert-tabs button,
.schedule-tabs button,
.tab-btn {
  position: relative;
  min-height: 44px;
  flex: 0 0 auto;
  padding: 0 15px;
  border: 0;
  border-bottom: 3px solid transparent;
  border-radius: 8px 8px 0 0;
  color: var(--kmi-slate-600);
  background: transparent;
  font-size: 12px;
  font-weight: 760;
  white-space: nowrap;
  transition: color 0.15s ease, background 0.15s ease, border-color 0.15s ease;
}

.tabs button:hover,
.cert-tabs button:hover,
.schedule-tabs button:hover,
.tab-btn:hover {
  color: var(--kmi-blue-700);
  background: var(--kmi-blue-100);
}

.tabs button.active,
.cert-tabs button.active,
.schedule-tabs button.active,
.tab-btn.active,
.tabs button[aria-selected="true"] {
  color: var(--kmi-blue-700);
  border-bottom-color: var(--kmi-blue-600);
  background: linear-gradient(180deg, transparent, rgba(23, 105, 224, 0.05));
}

.toolbar,
.schedule-toolbar,
.cert086-nc-toolbar,
.tool100-qr-toolbar,
.dept-org-toolbar,
.org-edit-bar,
.cert079-picker-tools,
.c119-pickerbar,
.c120-pickerbar {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  margin: 0 0 14px;
  padding: 0;
}

.toolbar > input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),
.toolbar > select {
  min-width: 170px;
}

.toolbar > input[type="text"],
.toolbar > input:not([type]) {
  flex: 1 1 260px;
  max-width: 420px;
}

#app input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]):not([type="hidden"]),
#app select,
#app textarea,
.modal-overlay input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]):not([type="hidden"]),
.modal-overlay select,
.modal-overlay textarea {
  width: 100%;
  min-height: var(--kmi-control);
  margin: 0;
  padding: 9px 11px;
  border: 1px solid #d5dfeb;
  border-radius: var(--kmi-radius-md);
  color: var(--kmi-slate-950);
  background: #ffffff;
  outline: 0;
  transition: border-color 0.15s ease, box-shadow 0.15s ease, background 0.15s ease;
}

#app input:hover:not([type="checkbox"]):not([type="radio"]):not([type="range"]),
#app select:hover,
#app textarea:hover,
.modal-overlay input:hover:not([type="checkbox"]):not([type="radio"]):not([type="range"]),
.modal-overlay select:hover,
.modal-overlay textarea:hover {
  border-color: #b9c7d8;
}

#app input:focus:not([type="checkbox"]):not([type="radio"]):not([type="range"]),
#app select:focus,
#app textarea:focus,
.modal-overlay input:focus:not([type="checkbox"]):not([type="radio"]):not([type="range"]),
.modal-overlay select:focus,
.modal-overlay textarea:focus {
  border-color: var(--kmi-blue-500);
  box-shadow: var(--kmi-focus);
}

#app input:disabled,
#app select:disabled,
#app textarea:disabled,
#app input[readonly],
.modal-overlay input:disabled,
.modal-overlay select:disabled,
.modal-overlay textarea:disabled,
.modal-overlay input[readonly] {
  color: var(--kmi-slate-600);
  background: #f1f4f8;
  cursor: not-allowed;
}

#app textarea,
.modal-overlay textarea {
  min-height: 92px;
  resize: vertical;
  line-height: 1.55;
}

#app input[type="file"],
.modal-overlay input[type="file"] {
  padding: 7px 8px;
}

#app input[type="checkbox"],
#app input[type="radio"],
.modal-overlay input[type="checkbox"],
.modal-overlay input[type="radio"] {
  width: 17px;
  height: 17px;
  margin: 0;
  accent-color: var(--kmi-blue-600);
  cursor: pointer;
}

#app label,
.modal-overlay label {
  color: var(--kmi-slate-700);
  font-size: 11px;
  font-weight: 760;
  line-height: 1.4;
}

#app label > input,
#app label > select,
#app label > textarea,
.modal-overlay label > input,
.modal-overlay label > select,
.modal-overlay label > textarea {
  margin-top: 6px;
  font-weight: 500;
}

.btn,
.row-actions button,
.panel-actions button,
.form-actions button,
.modal-actions button,
.button-stack button,
.org-edit-actions button,
.schedule-actions button,
.kmi-button {
  min-height: var(--kmi-control);
  height: auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 8px 14px;
  border: 1px solid #d2dce8;
  border-radius: var(--kmi-radius-md);
  color: var(--kmi-slate-700);
  background: #ffffff;
  box-shadow: 0 1px 2px rgba(17, 39, 70, 0.03);
  font-size: 12px;
  font-weight: 730;
  line-height: 1.2;
  white-space: nowrap;
  cursor: pointer;
  transition: transform 0.12s ease, border-color 0.15s ease, background 0.15s ease, color 0.15s ease, box-shadow 0.15s ease;
}

.btn:hover,
.row-actions button:hover,
.panel-actions button:hover,
.form-actions button:hover,
.modal-actions button:hover,
.button-stack button:hover,
.kmi-button:hover {
  border-color: #b6c4d6;
  color: var(--kmi-slate-950);
  background: var(--kmi-slate-050);
  box-shadow: 0 3px 9px rgba(17, 39, 70, 0.07);
}

.btn:active,
.row-actions button:active,
.panel-actions button:active,
.form-actions button:active,
.modal-actions button:active,
.kmi-button:active {
  transform: translateY(1px);
}

.btn.primary,
button.primary,
.kmi-button.primary,
.btn.kmi-primary {
  border-color: var(--kmi-blue-600);
  color: #ffffff;
  background: linear-gradient(180deg, #2778ea, #1765d5);
  box-shadow: 0 5px 12px rgba(23, 105, 224, 0.2);
}

.btn.primary:hover,
button.primary:hover,
.kmi-button.primary:hover,
.btn.kmi-primary:hover {
  border-color: var(--kmi-blue-700);
  color: #ffffff;
  background: linear-gradient(180deg, #1f70e4, #145abb);
}

.btn.danger,
button.danger,
.icon-danger,
.kmi-button.danger {
  border-color: #efc8ce;
  color: var(--kmi-red-700);
  background: #ffffff;
}

.btn.danger:hover,
button.danger:hover,
.icon-danger:hover,
.kmi-button.danger:hover {
  border-color: #e7a8b1;
  color: #8e2331;
  background: var(--kmi-red-100);
}

.btn.small,
.row-actions button,
.btn.mini,
.kmi-button.small {
  min-height: 32px;
  padding: 6px 10px;
  border-radius: 8px;
  font-size: 11px;
}

.btn.mini {
  min-height: 29px;
  padding: 5px 8px;
  font-size: 10px;
}

button:disabled,
.btn:disabled,
[aria-disabled="true"] {
  opacity: 0.48;
  cursor: not-allowed !important;
  transform: none !important;
  box-shadow: none !important;
}

.kmi-button-busy {
  position: relative;
  pointer-events: none;
}

.kmi-button-busy:before {
  content: "";
  width: 13px;
  height: 13px;
  border: 2px solid currentColor;
  border-right-color: transparent;
  border-radius: 50%;
  animation: kmi-spin 0.7s linear infinite;
}

@keyframes kmi-spin {
  to { transform: rotate(360deg); }
}

.form-card {
  border-radius: var(--kmi-radius-lg);
}

.form-section {
  margin: 0 0 22px;
  padding: 0 0 22px;
  border-bottom: 1px solid var(--kmi-slate-200);
}

.form-section:last-child {
  margin-bottom: 0;
  padding-bottom: 0;
  border-bottom: 0;
}

.section-title {
  margin-bottom: 14px;
}

.form-grid,
.modal-form {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
  align-items: start;
}

.modal-form {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.form-grid > label,
.modal-form > label {
  min-width: 0;
}

.span2 {
  grid-column: span 2;
}

.form-actions,
.modal-actions {
  min-height: 42px;
  margin-top: 4px;
}

.dynamic-list,
.master-list,
.cert090-list,
.alerts {
  display: grid;
  gap: 9px;
}

.dynamic-row,
.master-row,
.safety-assign-row,
.cert086-file-list > div,
.inspection115-option-row {
  border: 1px solid var(--kmi-slate-200);
  border-radius: var(--kmi-radius-md);
  background: var(--kmi-slate-050);
}

.dynamic-row {
  gap: 9px;
  padding: 12px;
}

.table-wrap {
  position: relative;
  max-width: 100%;
  overflow: auto;
  border: 1px solid var(--kmi-slate-200);
  border-radius: var(--kmi-radius-md);
  background: #ffffff;
  box-shadow: inset 0 1px 0 rgba(17, 39, 70, 0.02);
  overscroll-behavior: contain;
}

.table-wrap:focus-visible {
  box-shadow: var(--kmi-focus);
}

.data-table,
.table-wrap > table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  color: var(--kmi-slate-800);
}

.data-table th,
.table-wrap > table th {
  position: sticky;
  top: 0;
  z-index: 2;
  padding: 11px 12px;
  border: 0;
  border-bottom: 1px solid var(--kmi-slate-200);
  color: #516178;
  background: #f5f8fb;
  font-size: 10px;
  font-weight: 820;
  line-height: 1.35;
  text-align: center;
  white-space: nowrap;
}

.data-table td,
.table-wrap > table td {
  padding: 10px 12px;
  border: 0;
  border-bottom: 1px solid #e9eef4;
  color: var(--kmi-slate-800);
  background: #ffffff;
  font-size: 11px;
  line-height: 1.45;
  vertical-align: middle;
}

.data-table tbody tr:last-child td,
.table-wrap > table tbody tr:last-child td {
  border-bottom: 0;
}

.data-table tbody tr:hover td,
.table-wrap > table tbody tr:hover td {
  background: #f8fbff;
}

.data-table tbody tr:focus-within td {
  background: #f5f9ff;
}

.data-table td.left,
.data-table th.left,
.table-wrap table td.left {
  text-align: left !important;
}

.data-table td b {
  color: var(--kmi-slate-950);
  font-weight: 750;
}

.data-table td small,
.cell-sub {
  display: block;
  margin-top: 3px;
  color: var(--kmi-slate-500);
  font-size: 10px;
  line-height: 1.35;
}

.row-actions {
  justify-content: center;
  min-width: max-content;
  flex-wrap: nowrap;
}

.badge,
.cert090-pill,
[class*="-pill"] {
  min-height: 24px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  padding: 4px 9px;
  border: 1px solid #d8e6fa;
  border-radius: 999px;
  color: var(--kmi-blue-700);
  background: var(--kmi-blue-100);
  font-size: 10px;
  font-weight: 780;
  line-height: 1.1;
  white-space: nowrap;
}

.badge.ok,
.cert090-pill.ok,
.badge.success {
  border-color: #c8e9da;
  color: var(--kmi-green-700);
  background: var(--kmi-green-100);
}

.badge.warn,
.badge.warning {
  border-color: #f0dba7;
  color: var(--kmi-amber-700);
  background: var(--kmi-amber-100);
}

.badge.danger,
.badge.error {
  border-color: #efc8ce;
  color: var(--kmi-red-700);
  background: var(--kmi-red-100);
}

.alert,
.training-alert,
.tool098-import-note,
.cert079-inline-note,
.cert087-help,
.cert092-rule,
.cert094-guide,
.inspection113-popup-guide,
.inspection113-alert-list > button,
.kmi-notice {
  border: 1px solid #d8e4f2;
  border-radius: var(--kmi-radius-md);
  color: var(--kmi-slate-700);
  background: #f5f9ff;
  box-shadow: none;
}

.alert {
  min-height: 52px;
  padding: 11px 13px;
}

.alert b {
  color: var(--kmi-slate-800);
  font-size: 11px;
}

.alert span {
  margin-top: 2px;
  color: var(--kmi-slate-600);
  font-size: 10px;
}

/* 숙련도 현황 안내를 검색 입력과 같은 높이의 독립 안내 영역으로 표시 */
.cert090-toolbar .cert087-help {
  display: inline-flex;
  flex: 0 1 440px;
  align-items: center;
  min-width: 360px;
  min-height: var(--kmi-control);
  box-sizing: border-box;
  padding: 0 16px;
  border-radius: var(--kmi-radius-md);
  font-size: 12px;
  line-height: 1.45;
  white-space: nowrap;
}

@media screen and (max-width: 720px) {
  .cert090-toolbar .cert087-help {
    flex: 1 1 100%;
    width: 100%;
    min-width: 0;
    min-height: 48px;
    padding: 9px 13px;
    white-space: normal;
  }
}

.empty {
  min-height: 160px;
  display: grid;
  place-items: center;
  align-content: center;
  gap: 8px;
  padding: 42px 18px;
  color: var(--kmi-slate-500);
  font-size: 12px;
  text-align: center;
}

.empty .symbol {
  margin: 0;
  color: #9aabbe;
  font-size: 30px;
}

.modal-overlay {
  position: fixed;
  inset: 0;
  z-index: 100001;
  display: grid;
  place-items: center;
  padding: 24px;
  overflow: auto;
  background: rgba(5, 18, 36, 0.58);
  backdrop-filter: blur(5px);
  animation: kmi-fade-in 0.14s ease-out;
}

@keyframes kmi-fade-in {
  from { opacity: 0; }
  to { opacity: 1; }
}

.modal-box {
  width: min(960px, 100%);
  max-height: min(88vh, 940px);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  border-radius: var(--kmi-radius-xl);
  box-shadow: var(--kmi-shadow-lg);
  animation: kmi-modal-in 0.18s ease-out;
}

@keyframes kmi-modal-in {
  from { opacity: 0; transform: translateY(8px) scale(0.985); }
  to { opacity: 1; transform: none; }
}

.modal-head {
  min-height: 62px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 14px 18px;
  border-bottom: 1px solid var(--kmi-slate-200);
  background: #ffffff;
}

.modal-head h2 {
  margin: 0;
  color: var(--kmi-slate-950);
  font-size: 17px;
  font-weight: 820;
  letter-spacing: -0.02em;
}

.modal-head > button {
  width: 36px;
  height: 36px;
  flex: 0 0 36px;
  border-radius: 10px;
  font-size: 21px;
  line-height: 1;
}

.modal-body {
  min-height: 0;
  padding: 20px;
  overflow: auto;
  background: #ffffff;
  overscroll-behavior: contain;
}

.modal-body > p:first-child,
.print-standard-modal > p:first-child,
.print-choice > p:first-child {
  margin-top: 0;
}

.print-standard-modal,
.print-choice,
.kmi-print-dialog {
  display: grid;
  gap: 16px;
}

.kmi-print-description {
  margin: 0;
  color: var(--kmi-slate-600);
  font-size: 12px;
  line-height: 1.6;
}

.kmi-print-options {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}

.kmi-print-option {
  min-height: 118px;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  gap: 5px;
  padding: 15px;
  border: 1px solid var(--kmi-slate-200);
  border-radius: var(--kmi-radius-lg);
  color: var(--kmi-slate-700);
  background: #ffffff;
  text-align: left;
}

.kmi-print-option:hover {
  border-color: var(--kmi-blue-500);
  color: var(--kmi-blue-700);
  background: #f6f9ff;
}

.kmi-print-option b {
  color: inherit;
  font-size: 13px;
}

.kmi-print-option span {
  color: var(--kmi-slate-500);
  font-size: 10px;
  line-height: 1.45;
}

.kmi-print-option .kmi-print-icon {
  width: 30px;
  height: 38px;
  display: block;
  border: 2px solid currentColor;
  border-radius: 3px;
}

.kmi-print-option[data-orientation="landscape"] .kmi-print-icon {
  width: 42px;
  height: 29px;
}

.kmi-print-option[data-orientation="auto"] .kmi-print-icon:after {
  content: "A";
  display: grid;
  place-items: center;
  width: 100%;
  height: 100%;
  font-size: 13px;
  font-weight: 850;
}

.kmi-print-document-no {
  display: grid;
  grid-template-columns: 110px minmax(0, 1fr);
  align-items: center;
  gap: 10px;
}

#toast {
  right: 24px;
  bottom: 22px;
  z-index: 100010;
  max-width: min(420px, calc(100vw - 32px));
  padding: 12px 15px;
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: 11px;
  color: #ffffff;
  background: #10243d;
  box-shadow: var(--kmi-shadow-lg);
  font-size: 11px;
}

/* The Applied contact picker is opened from inside the schedule modal. */
body .contact-picker-overlay {
  z-index: 100006 !important;
  pointer-events: auto;
}

body .contact-picker-dialog {
  position: relative;
  z-index: 1;
  pointer-events: auto;
}

.kmi-password-change-status {
  min-height: 20px;
  padding: 0 2px;
  font-size: 12px;
  font-weight: 800;
}

.kmi-password-change-status:empty {
  display: none;
}

.kmi-password-change-status.error {
  color: #b42318;
}

.kmi-password-change-status.success {
  color: #137a50;
}

#kmiSaveStatus {
  min-height: 30px;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 0 10px;
  border: 1px solid var(--kmi-slate-200);
  border-radius: 999px;
  color: var(--kmi-slate-600);
  background: #ffffff;
  font-size: 10px;
  font-weight: 700;
  white-space: nowrap;
}

#kmiSaveStatus:before {
  content: "";
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--kmi-green-700);
  box-shadow: 0 0 0 3px rgba(18, 107, 75, 0.1);
}

#kmiSaveStatus[data-state="saving"]:before {
  border: 2px solid var(--kmi-blue-600);
  border-right-color: transparent;
  background: transparent;
  animation: kmi-spin 0.7s linear infinite;
  box-shadow: none;
}

#kmiSaveStatus[data-state="error"] {
  color: var(--kmi-red-700);
  border-color: #efc8ce;
  background: var(--kmi-red-100);
}

#kmiSaveStatus[data-state="error"]:before {
  background: var(--kmi-red-700);
  box-shadow: none;
}

#kmiSaveStatus[data-state="offline"] {
  color: var(--kmi-amber-700);
  border-color: #f0dba7;
  background: var(--kmi-amber-100);
}

#kmiSaveStatus[data-state="offline"]:before {
  background: var(--kmi-amber-700);
  box-shadow: none;
}

#kmiSaveProgress {
  position: fixed;
  inset: 0 0 auto;
  z-index: 2600;
  height: 3px;
  opacity: 0;
  background: linear-gradient(90deg, transparent 0%, var(--kmi-blue-500) 36%, var(--cyan, #159fbb) 62%, transparent 100%);
  background-size: 220% 100%;
  pointer-events: none;
  transition: opacity 0.16s ease;
}

body.kmi-saving #kmiSaveProgress {
  opacity: 1;
  animation: kmi-progress 1.15s linear infinite;
}

@keyframes kmi-progress {
  from { background-position: 100% 0; }
  to { background-position: -120% 0; }
}

#kmiSidebarScrim {
  display: none;
}

details {
  border: 1px solid var(--kmi-slate-200);
  border-radius: var(--kmi-radius-md);
  background: #ffffff;
  overflow: clip;
}

details > summary {
  min-height: 48px;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 11px 14px;
  color: var(--kmi-slate-800);
  background: #ffffff;
  font-size: 12px;
  font-weight: 760;
  cursor: pointer;
  list-style: none;
  user-select: none;
}

details > summary::-webkit-details-marker {
  display: none;
}

details > summary:before {
  content: ">";
  width: 18px;
  flex: 0 0 18px;
  color: var(--kmi-slate-500);
  font-size: 15px;
  font-weight: 800;
  text-align: center;
  transition: transform 0.16s ease;
}

details[open] > summary {
  color: var(--kmi-blue-700);
  background: #f7faff;
  border-bottom: 1px solid var(--kmi-slate-200);
}

details[open] > summary:before {
  transform: rotate(90deg);
}

.kmi-details-toggle {
  margin-left: auto;
}

.kmi-input-action {
  width: 100%;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 7px;
  align-items: stretch;
  margin-top: 6px;
}

.kmi-input-action > input,
.kmi-input-action > select {
  margin-top: 0 !important;
}

.kmi-picker-trigger {
  min-width: 82px;
  min-height: var(--kmi-control);
  padding: 7px 10px;
}

.kmi-employee-picker {
  display: grid;
  gap: 14px;
}

.kmi-employee-toolbar {
  display: grid;
  grid-template-columns: minmax(220px, 1fr) minmax(140px, 190px) minmax(140px, 190px);
  gap: 9px;
}

.kmi-employee-list {
  max-height: min(55vh, 520px);
  overflow: auto;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  padding: 2px;
}

.kmi-employee-item {
  min-width: 0;
  display: grid;
  grid-template-columns: 38px minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
  padding: 10px;
  border: 1px solid var(--kmi-slate-200);
  border-radius: var(--kmi-radius-md);
  color: var(--kmi-slate-800);
  background: #ffffff;
  text-align: left;
}

.kmi-employee-item:hover {
  border-color: var(--kmi-blue-500);
  background: #f7faff;
}

.kmi-employee-item.is-selected {
  border-color: var(--kmi-blue-600);
  background: var(--kmi-blue-100);
  box-shadow: inset 0 0 0 1px var(--kmi-blue-600);
}

.kmi-employee-avatar {
  width: 38px;
  height: 38px;
  display: grid;
  place-items: center;
  border-radius: 11px;
  color: #ffffff;
  background: linear-gradient(145deg, #387fe1, #194f9c);
  font-size: 12px;
  font-weight: 800;
}

.kmi-employee-meta {
  min-width: 0;
}

.kmi-employee-meta b,
.kmi-employee-meta span {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.kmi-employee-meta b {
  color: var(--kmi-slate-950);
  font-size: 12px;
}

.kmi-employee-meta span {
  margin-top: 2px;
  color: var(--kmi-slate-500);
  font-size: 10px;
}

.kmi-employee-status {
  color: var(--kmi-green-700);
  font-size: 9px;
  font-weight: 750;
}

.kmi-employee-empty {
  grid-column: 1 / -1;
}

.c119-people,
.c120-people,
.cert079-picker-list,
.cert080-picker-list,
.safety-assign-list,
.org-person-list,
.cert077-target-list,
.cert084-question-list {
  gap: 8px;
  padding: 4px;
}

.c119-people label,
.c120-people label,
.cert079-picker-list label,
.cert080-picker-list label,
.safety-assign-row,
.cert077-target-list label,
.cert084-question-list label,
.tool098-qr-list label {
  min-height: 44px;
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 9px 11px;
  border: 1px solid var(--kmi-slate-200);
  border-radius: var(--kmi-radius-md);
  color: var(--kmi-slate-700);
  background: #ffffff;
  cursor: pointer;
}

.c119-people label:hover,
.c120-people label:hover,
.cert079-picker-list label:hover,
.cert080-picker-list label:hover,
.tool098-qr-list label:hover {
  border-color: var(--kmi-blue-500);
  background: #f7faff;
}

.kmi-pagination {
  min-height: 48px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 2px 0;
}

.kmi-pagination-info {
  color: var(--kmi-slate-600);
  font-size: 11px;
}

.kmi-pagination-info b {
  color: var(--kmi-slate-950);
}

.kmi-pagination-controls {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 6px;
  flex-wrap: wrap;
}

.kmi-page-number {
  min-width: 34px;
  min-height: 34px;
  padding: 6px 9px;
}

.kmi-page-number.active {
  border-color: var(--kmi-blue-600);
  color: #ffffff;
  background: var(--kmi-blue-600);
}

.kmi-page-size {
  width: auto !important;
  min-width: 96px !important;
  min-height: 34px !important;
  padding: 5px 28px 5px 9px !important;
}

.kmi-filter-summary {
  min-height: 34px;
  display: flex;
  align-items: center;
  gap: 8px;
  margin: -4px 0 10px;
  color: var(--kmi-slate-600);
  font-size: 10px;
}

.tool103-table-wrap {
  contain: layout paint;
}

.tool103-asset-table {
  min-width: 1080px;
}

.tool103-actions {
  flex-wrap: nowrap;
}

.tool100-selection-count {
  margin-left: auto;
  color: var(--kmi-blue-700);
  font-size: 11px;
  font-weight: 800;
}

.tool098-qr-list.kmi-paged-qr {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.tool098-qr-list label.is-selected {
  border-color: var(--kmi-blue-600);
  background: var(--kmi-blue-100);
}

.org-dept-card,
.safety-role-card,
.dept-rank-level,
.org-person-card,
.dept-person-node,
.cert090-person,
.cert095-process,
.tool097-qr-select {
  border-radius: var(--kmi-radius-md);
}

.org-person-card,
.dept-person-node {
  border-color: var(--kmi-slate-200) !important;
  background: #ffffff !important;
}

.module-summary {
  gap: 14px;
}

.module-card {
  padding: 18px;
  border-radius: var(--kmi-radius-lg);
}

.module-card h3 {
  color: var(--kmi-slate-950);
  font-weight: 800;
}

.module-card p,
.module-card footer {
  color: var(--kmi-slate-600);
}

.cert086-nc-summary,
.cert075-summary,
[class*="summary-grid"] {
  gap: 10px;
}

.cert086-nc-summary > div,
.cert075-summary > div {
  border: 1px solid var(--kmi-slate-200);
  border-radius: var(--kmi-radius-md);
  background: #ffffff;
}

#kmiConnectionBanner {
  position: sticky;
  top: var(--kmi-header);
  z-index: 29;
  display: none;
  padding: 8px 16px;
  color: #6e4604;
  background: #fff0c5;
  border-bottom: 1px solid #efd28a;
  font-size: 11px;
  font-weight: 700;
  text-align: center;
}

body.kmi-offline #kmiConnectionBanner {
  display: block;
}

@media (max-width: 1280px) {
  :root {
    --kmi-sidebar: 236px;
  }

  .cards,
  .cards.compact {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .form-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .tool098-qr-list.kmi-paged-qr,
  .kmi-employee-list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 900px) {
  .panel-head,
  .section-title,
  .ap-card-head {
    align-items: stretch;
    flex-direction: column;
  }

  .panel-actions,
  .section-title .panel-actions {
    justify-content: flex-start;
  }

  .modal-form,
  .cert094-level-form,
  .cert092-level-form {
    grid-template-columns: 1fr;
  }

  .modal-form .span2,
  .cert094-level-form .span2,
  .cert092-level-form .span2 {
    grid-column: auto;
  }

  .kmi-print-options {
    grid-template-columns: 1fr;
  }

  .kmi-print-option {
    min-height: 82px;
    display: grid;
    grid-template-columns: 52px minmax(0, 1fr);
    align-content: center;
  }

  .kmi-print-option b,
  .kmi-print-option span {
    grid-column: 2;
  }

  .kmi-print-option .kmi-print-icon {
    grid-row: 1 / 3;
  }
}

@media (max-width: 760px) {
  :root {
    --kmi-header: 60px;
  }

  .sidebar {
    width: min(286px, 86vw);
    transform: translateX(-102%);
    transition: transform 0.2s ease;
  }

  .sidebar.open {
    transform: none;
  }

  .shell {
    width: 100%;
    margin-left: 0;
  }

  #kmiSidebarScrim {
    position: fixed;
    inset: 0;
    z-index: 35;
    display: block;
    visibility: hidden;
    opacity: 0;
    background: rgba(5, 18, 36, 0.48);
    transition: opacity 0.18s ease, visibility 0.18s ease;
  }

  body.kmi-sidebar-open #kmiSidebarScrim {
    visibility: visible;
    opacity: 1;
  }

  .shell > header {
    padding: 0 12px;
  }

  #mobileMenu {
    display: inline-grid;
    flex: 0 0 38px;
    margin-right: 8px;
  }

  .global-search {
    width: auto;
    flex: 1;
    min-width: 0;
  }

  .global-search input::placeholder {
    color: transparent;
  }

  .head-user,
  .head-actions > .iconbtn,
  #kmiSaveStatus {
    display: none;
  }

  main#main {
    padding: 18px 14px 34px;
  }

  .page-head {
    min-height: 0;
    margin-bottom: 18px;
    align-items: flex-start;
  }

  .page-head h1 {
    font-size: 23px;
  }

  .datebox {
    display: none;
  }

  .cards,
  .cards.compact,
  .module-summary,
  .grid2,
  .form-grid,
  .print-grid {
    grid-template-columns: 1fr !important;
  }

  .span2 {
    grid-column: auto;
  }

  .panel,
  .form-card {
    padding: 15px;
  }

  .tabs,
  .cert-tabs,
  .schedule-tabs {
    margin-right: -14px;
    margin-left: -14px;
    padding: 0 12px;
  }

  .tabs button,
  .cert-tabs button,
  .schedule-tabs button {
    padding: 0 12px;
  }

  .toolbar,
  .schedule-toolbar,
  .cert086-nc-toolbar,
  .tool100-qr-toolbar,
  .dept-org-toolbar,
  .org-edit-bar,
  .c119-pickerbar,
  .c120-pickerbar {
    align-items: stretch;
  }

  .toolbar > input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),
  .toolbar > select,
  .toolbar > .btn,
  .toolbar > button,
  .schedule-toolbar > input,
  .schedule-toolbar > select {
    width: 100%;
    max-width: none;
    flex: 1 1 100%;
  }

  .panel-actions,
  .form-actions,
  .modal-actions,
  .button-stack {
    width: 100%;
  }

  .panel-actions > .btn,
  .form-actions > .btn,
  .modal-actions > .btn,
  .button-stack > .btn {
    flex: 1 1 auto;
  }

  .row-actions {
    justify-content: flex-start;
  }

  .modal-overlay {
    align-items: end;
    padding: 0;
  }

  .modal-box {
    width: 100%;
    max-height: 94vh;
    border-radius: 18px 18px 0 0;
  }

  .modal-head {
    min-height: 58px;
    padding: 12px 15px;
  }

  .modal-body {
    padding: 16px 14px calc(16px + env(safe-area-inset-bottom));
  }

  .kmi-print-document-no,
  .kmi-employee-toolbar {
    grid-template-columns: 1fr;
  }

  .kmi-employee-list,
  .tool098-qr-list.kmi-paged-qr {
    grid-template-columns: 1fr;
  }

  .kmi-pagination {
    align-items: stretch;
    flex-direction: column;
  }

  .kmi-pagination-controls {
    justify-content: flex-start;
  }

  .tool100-selection-count {
    width: 100%;
    margin-left: 0;
  }

  /* Approval steps use a compact two-line layout on phones. */
  .cert075-stage-list > div {
    grid-template-columns: 34px minmax(0, 1fr) auto auto;
  }

  .cert075-stage-list > div > .cert075-step {
    grid-row: 1 / span 2;
  }

  .cert075-stage-list > div > b {
    min-width: 0;
    overflow-wrap: anywhere;
  }

  .cert075-stage-list > div > small {
    grid-column: 2 / -1;
    grid-row: 2;
    min-width: 0;
    overflow-wrap: anywhere;
  }

  #toast {
    right: 14px;
    bottom: 14px;
  }
}

/* PATCH 127: PPE size values and employee-level row disclosure */
.s132-size-only .s132-size-input {
  text-align: center !important;
  text-align-last: center;
}

.s132-size-only .s132-size-input::placeholder {
  text-align: center;
}

.s132-size-toggle {
  width: 100%;
  min-height: 34px;
  border: 0;
  border-radius: 7px;
  background: transparent;
  color: inherit;
  cursor: pointer;
  display: grid;
  place-items: center;
  gap: 2px;
  padding: 3px 5px;
  font: inherit;
}

.s132-size-toggle:hover,
.s132-size-toggle:focus-visible {
  background: #eef4ff;
  outline: 2px solid #b9cdf8;
  outline-offset: -2px;
}

.s132-size-toggle span {
  color: #64748b;
  font-size: 10px;
  font-weight: 700;
}

.s132-size-summary {
  display: none;
  min-width: 0 !important;
  max-width: none !important;
  color: #52647a;
  font-weight: 700;
  text-align: center !important;
}

.s132-size-matrix tr.is-collapsed .s132-size-value {
  display: none;
}

.s132-size-matrix tr.is-collapsed .s132-size-summary {
  display: table-cell;
  background: #f8fafc;
}

/* PATCH 128: compact employee master-detail accordion */
.s132-size-accordion-scroll {
  max-height: 620px;
}

.s132-size-list-head {
  display: flex;
  justify-content: space-between;
  align-items: end;
  gap: 16px;
  margin: 18px 8px 12px;
}

.s132-size-list-head h2 {
  margin: 0 0 4px;
  font-size: 16px;
}

.s132-size-list-head span {
  color: #66758a;
  font-size: 11px;
}

.s132-size-list-head > span {
  border-radius: 999px;
  background: #edf3ff;
  color: #2f63cc;
  padding: 6px 11px;
  font-weight: 800;
}

.s132-size-employee-list {
  display: grid;
  gap: 10px;
  max-height: 620px;
  overflow: auto;
  padding: 2px 3px 10px;
}

.s132-employee-card {
  overflow: hidden;
  border: 1px solid #d7e0ec;
  border-radius: 11px;
  background: #fff;
  box-shadow: 0 4px 12px rgba(30, 52, 84, 0.04);
}

.s132-employee-card.is-open {
  border-color: #a9c2f4;
  box-shadow: 0 7px 18px rgba(47, 99, 204, 0.09);
}

.s132-size-accordion {
  width: 100%;
  table-layout: fixed;
}

.s132-size-accordion th,
.s132-size-accordion td {
  text-align: center !important;
  vertical-align: middle;
}

.s132-employee-row {
  cursor: pointer;
  display: grid;
  grid-template-columns: 26px minmax(190px, 1fr) auto;
  align-items: center;
  min-height: 68px;
  padding: 10px 20px;
  transition: background-color 0.15s ease;
}

.s132-employee-row:hover,
.s132-employee-row:focus-visible,
.s132-employee-row.is-open {
  background: #f2f6ff;
  outline: none;
}

.s132-employee-row td {
  height: 48px;
}

.s132-employee-identity {
  display: grid;
  gap: 5px;
  min-width: 0;
  text-align: left;
}

.s132-employee-identity b {
  color: #13233a;
  font-size: 13px;
  line-height: 1.45;
  overflow-wrap: anywhere;
  white-space: normal;
}

.s132-employee-identity span {
  color: #718096;
  font-size: 11px;
  line-height: 1.45;
  overflow-wrap: anywhere;
  white-space: normal;
}

.s132-employee-badges {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 8px;
}

.s132-size-progress {
  display: inline-flex;
  min-width: 70px;
  justify-content: center;
  border-radius: 999px;
  background: #eef2f7;
  color: #52647a;
  padding: 5px 10px;
  font-size: 11px;
  font-weight: 800;
}

.s132-size-progress.is-complete {
  background: #e7f7ee;
  color: #167247;
}

.s132-row-chevron {
  display: grid;
  place-items: center;
  width: 22px;
  color: #3569d4;
  font-size: 22px;
  font-weight: 800;
}

.s132-complete-badge {
  min-width: 68px;
  border-radius: 999px;
  background: #fff3df;
  color: #9a6211;
  padding: 5px 10px;
  font-size: 11px;
  font-weight: 800;
  text-align: center;
}

.s132-complete-badge.is-complete {
  background: #e7f7ee;
  color: #167247;
}

.s132-employee-detail td {
  padding: 0 !important;
  background: #f8fafc;
}

.s132-employee-detail {
  background: #f8fafc;
}

.s132-employee-detail[hidden] {
  display: none;
}

.s132-size-field-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
  padding: 18px 22px 20px;
  border-top: 2px solid #3569d4;
}

.s132-size-field-grid label {
  display: grid;
  gap: 7px;
  color: #34445a;
  font-size: 11px;
  font-weight: 800;
  text-align: center;
}

.s132-size-field-grid .s132-size-input {
  width: 100%;
  height: 40px;
  box-sizing: border-box;
  line-height: 1.4;
  overflow: visible;
  white-space: normal;
}

.s132-size-field-grid select.s132-size-input {
  min-height: 40px;
  padding-top: 0;
  padding-bottom: 0;
  text-align: center;
  text-align-last: center;
}

@media (max-width: 1100px) {
  .s132-size-field-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 700px) {
  .s132-employee-row {
    grid-template-columns: 24px minmax(0, 1fr);
    padding: 0 14px;
  }

  .s132-employee-badges {
    grid-column: 2;
    margin: 0 0 12px;
  }

  .s132-size-field-grid {
    grid-template-columns: 1fr;
  }
}

/* PATCH 177: one logo-orange active-tab indicator across every module. */
.tabs > button:hover,
.cert-tabs > button:hover,
.schedule-tabs > button:hover,
.ap-tabs > button:hover,
.org-tabs > button:hover,
[role="tablist"] > [role="tab"]:hover {
  color: var(--kmi-logo-orange-text) !important;
  background: var(--kmi-logo-orange-soft) !important;
}

.tabs > button.active,
.cert-tabs > button.active,
.schedule-tabs > button.active,
.ap-tabs > button.active,
.org-tabs > button.active,
.tab-btn.active,
[role="tablist"] > [role="tab"][aria-selected="true"] {
  color: var(--kmi-logo-orange-text) !important;
  border-bottom: 3px solid var(--kmi-logo-orange) !important;
  background: transparent !important;
  box-shadow: none !important;
  filter: none !important;
}

.tabs > button.active::after,
.cert-tabs > button.active::after,
.schedule-tabs > button.active::after,
.ap-tabs > button.active::after,
.org-tabs > button.active::after,
.tab-btn.active::after,
[role="tablist"] > [role="tab"][aria-selected="true"]::after {
  display: none !important;
  content: none !important;
}

.legacy-tabs > button.active {
  border-color: var(--kmi-logo-orange) !important;
  color: #5f3b00 !important;
  border-bottom: 3px solid var(--kmi-logo-orange) !important;
  background: transparent !important;
  box-shadow: none !important;
}

/* PATCH 178: schedule-management is the master density for every module. */
main#main > .page-head {
  min-height: 68px !important;
  margin-bottom: 22px !important;
  gap: 24px !important;
}

main#main > .page-head h1 {
  margin: 5px 0 !important;
  font-size: clamp(23px, 2vw, 29px) !important;
  line-height: 1.22 !important;
}

main#main > .page-head p {
  margin: 0 !important;
  font-size: 12px !important;
  line-height: 1.55 !important;
}

main#main .cards.compact {
  gap: 12px !important;
  margin-bottom: 16px !important;
}

main#main .cards.compact > .metric {
  box-sizing: border-box !important;
  min-height: 112px !important;
  height: 112px !important;
  padding: 17px 18px !important;
  border-radius: var(--kmi-radius-lg) !important;
}

main#main .cards.compact > .metric .label {
  font-size: 11px !important;
  line-height: 1.4 !important;
}

main#main .cards.compact > .metric strong {
  margin: 8px 0 3px !important;
  font-size: clamp(23px, 2vw, 29px) !important;
  line-height: 1.2 !important;
}

main#main .cards.compact > .metric small {
  font-size: 10px !important;
  line-height: 1.45 !important;
}

main#main > .tabs,
main#main .schedule-tabs,
main#main .cert-tabs,
main#main .ap-tabs,
main#main .org-tabs {
  align-items: flex-end !important;
  gap: 3px !important;
  min-height: 45px !important;
  padding: 0 2px !important;
}

main#main > .tabs > button,
main#main .schedule-tabs > button,
main#main .cert-tabs > button,
main#main .ap-tabs > button,
main#main .org-tabs > button {
  box-sizing: border-box !important;
  min-height: 44px !important;
  padding: 0 15px !important;
  border-radius: 8px 8px 0 0 !important;
  font-size: 12px !important;
  line-height: 1.25 !important;
}

main#main .panel,
main#main .form-card,
main#main .ap-card,
main#main .ap-editor {
  border-radius: var(--kmi-radius-lg) !important;
}

main#main .panel:not(.schedule-panel),
main#main .form-card {
  padding: 20px !important;
}

main#main .panel-head,
main#main .section-title,
main#main .ap-card-head {
  gap: 16px !important;
}

main#main .panel-head h2,
main#main .section-title h3,
main#main .ap-card-head h2,
main#main .ap-card-head h3 {
  font-size: 15px !important;
  line-height: 1.4 !important;
}

main#main .panel-head p,
main#main .panel-head span,
main#main .section-title span,
main#main .ap-card-head p,
main#main .ap-card-head span {
  font-size: 11px !important;
  line-height: 1.5 !important;
}

main#main .toolbar > input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),
main#main .toolbar > select,
main#main .toolbar > button,
main#main .toolbar > .btn,
main#main .schedule-toolbar > input,
main#main .schedule-toolbar > select,
main#main .schedule-toolbar > button,
main#main .schedule-toolbar > .btn {
  box-sizing: border-box !important;
  min-height: var(--kmi-control) !important;
}

.ap-shell {
  gap: 14px !important;
  padding-bottom: 0 !important;
}

.ap-shell > .cards.compact {
  gap: 12px !important;
}

.ap-shell > .cards.compact .metric {
  box-sizing: border-box !important;
  min-height: 112px !important;
  height: 112px !important;
  padding: 17px 18px !important;
}

.ap-tabs {
  align-items: flex-end !important;
  gap: 3px !important;
  min-height: 45px !important;
  margin: 0 0 4px !important;
  padding: 0 2px !important;
}

.ap-tabs > button {
  min-height: 44px !important;
  padding: 0 15px !important;
  border-radius: 8px 8px 0 0 !important;
  font-size: 12px !important;
  line-height: 1.25 !important;
}

.ap-card + .ap-card {
  margin-top: 14px !important;
}

.ap-card-head {
  min-height: 34px !important;
  padding: 16px 20px !important;
}

.ap-card-head h2 {
  margin: 0 0 3px !important;
  font-size: 15px !important;
  line-height: 1.4 !important;
}

.ap-card-head p {
  margin: 0 !important;
  color: var(--kmi-slate-600) !important;
  font-size: 11px !important;
  line-height: 1.5 !important;
}

.ap-quick-grid {
  gap: 10px !important;
  padding: 16px 20px !important;
}

.ap-quick-grid > button {
  min-height: 70px !important;
  gap: 12px !important;
  padding: 14px 16px !important;
  border-radius: 10px !important;
}

.ap-form-mark {
  width: 34px !important;
  height: 34px !important;
  flex-basis: 34px !important;
  border-radius: 9px !important;
  font-size: 10px !important;
}

.ap-quick-grid b {
  font-size: 13px !important;
}

.ap-quick-grid small {
  margin-top: 3px !important;
  font-size: 10px !important;
}

/* PATCH 180: align the department-chart controls to the organization axes. */
.org-shell .dept-org-toolbar {
  box-sizing: border-box !important;
  width: 100% !important;
  margin: 0 !important;
  padding: 0 28px 14px 17px !important;
}

.org-shell .dept-org-toolbar > label {
  margin: 0 !important;
}

.org-shell .dept-org-toolbar > span {
  margin-left: auto !important;
  text-align: right !important;
}

@media (max-width: 900px) {
  .org-shell .dept-org-toolbar {
    padding: 0 18px 14px !important;
  }

  .org-shell .dept-org-toolbar > span {
    margin-left: 0 !important;
    text-align: left !important;
  }
}

/* PATCH 181: data-driven HR dashboard. */
.hr-dashboard-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  flex-wrap: wrap;
  margin: 0 0 16px;
}

.hr-dashboard-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}

.hr-dashboard-grid > .panel {
  min-width: 0;
  margin: 0 !important;
}

.hr-dashboard-grid .panel-head > b {
  color: var(--kmi-slate-700);
  font-size: 12px;
}

.hr-dashboard-bars,
.hr-dashboard-ranks,
.hr-dashboard-list {
  display: grid;
  gap: 8px;
}

.hr-dashboard-bars > div {
  display: grid;
  grid-template-columns: minmax(90px, 130px) minmax(120px, 1fr) 42px;
  align-items: center;
  gap: 10px;
  min-height: 30px;
  font-size: 11px;
}

.hr-dashboard-bars > div > span {
  overflow: hidden;
  color: var(--kmi-slate-700);
  font-weight: 750;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.hr-dashboard-bars i {
  height: 8px;
  overflow: hidden;
  border-radius: 999px;
  background: var(--kmi-slate-100);
}

.hr-dashboard-bars i > b {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--kmi-blue-600), var(--kmi-blue-500));
}

.hr-dashboard-bars strong {
  color: var(--kmi-slate-800);
  font-size: 11px;
  text-align: right;
}

.hr-dashboard-ranks {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.hr-dashboard-ranks > div {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  min-height: 38px;
  padding: 7px 10px;
  border: 1px solid var(--kmi-slate-200);
  border-radius: 9px;
  background: var(--kmi-slate-050);
  font-size: 11px;
}

.hr-dashboard-ranks span {
  color: var(--kmi-slate-700);
  font-weight: 750;
}

.hr-dashboard-ranks strong {
  color: var(--kmi-slate-950);
}

.hr-dashboard-list > button,
.hr-dashboard-list > div:not(.empty):not(.hr-dashboard-complete) {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  min-height: 43px;
  padding: 8px 10px;
  border: 1px solid var(--kmi-slate-200);
  border-radius: 9px;
  color: inherit;
  background: #fff;
  text-align: left;
}

.hr-dashboard-list > button {
  cursor: pointer;
}

.hr-dashboard-list > button:hover {
  border-color: #a9bdd7;
  background: var(--kmi-slate-050);
}

.hr-dashboard-list span {
  display: grid;
  min-width: 0;
  gap: 2px;
}

.hr-dashboard-list b {
  color: var(--kmi-slate-950);
  font-size: 11px;
}

.hr-dashboard-list small,
.hr-dashboard-list time {
  color: var(--kmi-slate-500);
  font-size: 10px;
}

.hr-dashboard-list time,
.hr-dashboard-list em {
  flex: 0 0 auto;
}

.hr-dashboard-list em {
  color: var(--kmi-amber-700);
  font-size: 10px;
  font-style: normal;
  font-weight: 750;
  text-align: right;
}

.hr-dashboard-complete {
  padding: 28px 16px;
  border: 1px dashed #b9d8c9;
  border-radius: 10px;
  color: var(--kmi-green-700);
  background: var(--kmi-green-100);
  font-size: 11px;
  font-weight: 750;
  text-align: center;
}

@media (max-width: 900px) {
  .hr-dashboard-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 560px) {
  .hr-dashboard-actions > .btn {
    flex: 1 1 auto;
  }

  .hr-dashboard-ranks {
    grid-template-columns: 1fr;
  }

  .hr-dashboard-bars > div {
    grid-template-columns: minmax(78px, 110px) minmax(80px, 1fr) 38px;
  }
}

/* PATCH 182: data-driven document-management dashboard. */
.document-dashboard-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  flex-wrap: wrap;
  margin: 0 0 16px;
}

.document-dashboard-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}

.document-dashboard-grid > .panel {
  min-width: 0;
  margin: 0 !important;
}

.document-dashboard-grid .panel-head > b {
  color: var(--kmi-slate-700);
  font-size: 12px;
}

.document-dashboard-bars,
.document-dashboard-status,
.document-dashboard-list {
  display: grid;
  gap: 8px;
}

.document-dashboard-bars > div {
  display: grid;
  grid-template-columns: minmax(100px, 150px) minmax(120px, 1fr) 42px;
  align-items: center;
  gap: 10px;
  min-height: 30px;
  font-size: 11px;
}

.document-dashboard-bars > div > span {
  overflow: hidden;
  color: var(--kmi-slate-700);
  font-weight: 750;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.document-dashboard-bars i {
  height: 8px;
  overflow: hidden;
  border-radius: 999px;
  background: var(--kmi-slate-100);
}

.document-dashboard-bars i > b {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--kmi-blue-600), var(--kmi-blue-500));
}

.document-dashboard-bars strong {
  color: var(--kmi-slate-800);
  font-size: 11px;
  text-align: right;
}

.document-dashboard-status {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.document-dashboard-status > div {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  min-height: 38px;
  padding: 7px 10px;
  border: 1px solid var(--kmi-slate-200);
  border-radius: 9px;
  background: var(--kmi-slate-050);
  font-size: 11px;
}

.document-dashboard-list > button {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  min-height: 43px;
  padding: 8px 10px;
  border: 1px solid var(--kmi-slate-200);
  border-radius: 9px;
  color: inherit;
  background: #fff;
  text-align: left;
  cursor: pointer;
}

.document-dashboard-list > button:hover {
  border-color: #a9bdd7;
  background: var(--kmi-slate-050);
}

.document-dashboard-list span {
  display: grid;
  min-width: 0;
  gap: 2px;
}

.document-dashboard-list b {
  overflow: hidden;
  color: var(--kmi-slate-950);
  font-size: 11px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.document-dashboard-list small,
.document-dashboard-list time {
  color: var(--kmi-slate-500);
  font-size: 10px;
}

.document-dashboard-list time,
.document-dashboard-list em {
  flex: 0 0 auto;
}

.document-dashboard-list em {
  color: var(--kmi-amber-700);
  font-size: 10px;
  font-style: normal;
  font-weight: 800;
}

.document-dashboard-list em.over {
  color: var(--kmi-red-700);
}

.document-dashboard-complete {
  padding: 28px 16px;
  border: 1px dashed #b9d8c9;
  border-radius: 10px;
  color: var(--kmi-green-700);
  background: var(--kmi-green-100);
  font-size: 11px;
  font-weight: 750;
  text-align: center;
}

@media (max-width: 900px) {
  .document-dashboard-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 560px) {
  .document-dashboard-actions > .btn {
    flex: 1 1 auto;
  }

  .document-dashboard-status {
    grid-template-columns: 1fr;
  }

  .document-dashboard-bars > div {
    grid-template-columns: minmax(84px, 115px) minmax(80px, 1fr) 38px;
  }
}

/* PATCH 132: use the available screen width for the monthly PPE inspection sheet */
#s132Body .ppe115-sheet-card {
  width: 100% !important;
  max-width: none !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}

#s132Body .ppe115-scroll {
  width: 100% !important;
  overflow-x: auto !important;
}

#s132Body .ppe115-sheet {
  width: 100% !important;
  min-width: 1420px !important;
  max-width: none !important;
  margin: 0 !important;
}

#s132Body .ppe115-sheet th,
#s132Body .ppe115-sheet td {
  padding: 6px 5px !important;
  font-size: 10px !important;
  line-height: 1.35 !important;
}

#s132Body .ppe115-sheet input,
#s132Body .ppe115-sheet textarea {
  min-width: 0 !important;
  font-size: 10px !important;
  line-height: 1.35 !important;
}

#s132Body .ppe115-sheet .c-no {
  width: 52px !important;
}

#s132Body .ppe115-sheet .c-name {
  width: 110px !important;
}

#s132Body .ppe115-sheet .c-criteria {
  width: 185px !important;
}

#s132Body .ppe115-sheet .c-cycle {
  width: 84px !important;
}

#s132Body .ppe115-sheet .c-method {
  width: 112px !important;
}

#s132Body .ppe115-sheet .c-result {
  width: 128px !important;
}

#s132Body .ppe115-sheet .c-stock {
  width: 72px !important;
}

#s132Body .ppe115-bottom {
  width: 100% !important;
  max-width: none !important;
}

/* PATCH 133: compact editable inspection criteria and centered stock values */
#s132Body .ppe133-criteria-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 26px 26px;
  align-items: center;
  gap: 4px;
}

#s132Body .ppe133-criteria-row .ppe115-criteria {
  height: 30px !important;
  min-height: 30px !important;
  padding: 3px 7px !important;
  margin: 0 !important;
  text-align: center !important;
}

#s132Body .ppe133-criteria-row > button {
  width: 26px;
  height: 26px;
  min-height: 26px;
  padding: 0;
  border: 1px solid #cbd6e4;
  border-radius: 6px;
  color: #245fc4;
  background: #fff;
  font-size: 14px;
  font-weight: 900;
  line-height: 1;
}

#s132Body .ppe133-criteria-row > button.danger {
  color: #b43c3c;
  border-color: #edcaca;
}

#s132Body .ppe133-criteria-row > button:disabled {
  cursor: not-allowed;
  opacity: 0.35;
}

#s132Body .ppe115-safe,
#s132Body .ppe115-current {
  padding-left: 2px !important;
  padding-right: 2px !important;
  text-align: center !important;
  text-align-last: center !important;
  -moz-appearance: textfield;
}

#s132Body .ppe115-safe::-webkit-outer-spin-button,
#s132Body .ppe115-safe::-webkit-inner-spin-button,
#s132Body .ppe115-current::-webkit-outer-spin-button,
#s132Body .ppe115-current::-webkit-inner-spin-button {
  margin: 0;
  -webkit-appearance: none;
}

/* PATCH 133: align every monthly inspection toolbar action to the employee button */
#s132Body .ppe115-toolbar {
  display: flex !important;
  align-items: flex-end !important;
  gap: 8px !important;
}

#s132Body .ppe115-toolbar > .btn,
#s132Body .ppe115-toolbar > button {
  align-self: flex-end !important;
  height: 40px !important;
  min-height: 40px !important;
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}

#s132Body .ppe115-toolbar > label {
  align-self: flex-end !important;
  margin: 0 !important;
}

#s132Body .ppe115-toolbar > label > input {
  height: 40px !important;
  min-height: 40px !important;
  margin: 0 !important;
}


@media (max-width: 460px) {
  .cards.compact .metric {
    min-height: 96px;
  }

  .metric {
    min-height: 102px;
    padding: 15px;
  }

  .kmi-input-action {
    grid-template-columns: 1fr;
  }

  .kmi-picker-trigger {
    width: 100%;
  }
}

@media (prefers-reduced-motion: reduce) {
  *,
  *:before,
  *:after {
    scroll-behavior: auto !important;
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
  }
}

@media print {
  @page {
    margin: 0;
  }

  html {
    margin: 0 !important;
    padding: 0 !important;
  }

  body {
    margin: 0 !important;
    padding: 10mm !important;
    color: #111827 !important;
    background: #ffffff !important;
    -webkit-box-decoration-break: clone;
    box-decoration-break: clone;
  }

  .sidebar,
  .shell > header,
  #kmiSidebarScrim,
  #kmiSaveProgress,
  #kmiConnectionBanner,
  #toast,
  .tabs,
  .cert-tabs,
  .schedule-tabs,
  .toolbar,
  .schedule-toolbar,
  .panel-actions,
  .form-actions,
  .modal-actions,
  .row-actions,
  button,
  input,
  select,
  textarea,
  .no-print {
    display: none !important;
  }

  .shell {
    width: 100% !important;
    margin: 0 !important;
  }

  main#main {
    max-width: none !important;
    min-height: 0 !important;
    padding: 0 !important;
  }

  .page-head {
    margin-bottom: 8mm !important;
  }

  .datebox {
    display: block !important;
  }

  .card,
  .panel,
  .form-card,
  .table-wrap {
    overflow: visible !important;
    border-color: #aab4c0 !important;
    box-shadow: none !important;
    break-inside: avoid;
  }

  .cards,
  .cards.compact {
    grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
  }

  .data-table,
  .table-wrap > table {
    min-width: 0 !important;
  }

  .data-table th,
  .table-wrap > table th {
    position: static !important;
    color: #111827 !important;
    background: #edf1f5 !important;
  }

  .data-table td,
  .table-wrap > table td {
    color: #111827 !important;
  }

  details {
    break-inside: avoid;
  }

  details:not([open]) > :not(summary) {
    display: block !important;
  }
}

/* V20.6.4 production login and one-axis information standard */
.kmi-login[hidden]{display:none!important}
.kmi-login{position:fixed;z-index:100000;inset:0;display:grid;place-items:center;padding:24px;background:linear-gradient(145deg,#f7f9fc 0%,#e9eef5 100%)}
.kmi-login-card{width:min(420px,100%);display:grid;gap:18px;padding:36px;border:1px solid #dce3ec;border-radius:20px;background:#fff;box-shadow:0 24px 70px rgba(20,38,63,.16)}
.kmi-login-card>img{width:150px;height:auto;margin-bottom:4px}
.kmi-login-card>div>span{display:block;color:#c56528;font-size:11px;font-weight:900;letter-spacing:.12em}
.kmi-login-card h1{margin:8px 0 6px;color:#17263a;font-size:27px}
.kmi-login-card p{margin:0;color:#647286;font-size:13px;line-height:1.55}
.kmi-login-card label{display:grid;gap:7px;color:#34445a;font-size:12px;font-weight:800}
.kmi-login-card input{width:100%;height:46px;padding:0 13px;border:1px solid #cfd8e4;border-radius:10px;background:#fff;font:inherit;font-size:14px;box-sizing:border-box}
.kmi-login-card input:focus{outline:3px solid rgba(231,125,55,.16);border-color:#d97835}
.kmi-login-card .kmi-login-message{min-height:20px;color:#b42318;font-size:12px;font-weight:700}
.kmi-login-card>button{width:100%;height:46px;justify-content:center}
.kmi-login-card>small{text-align:center;color:#758297;font-size:11px}
.kmi-login-help{display:flex!important;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap}
.kmi-login-help button{padding:2px 7px;border:0;background:transparent;color:#425c7a;font-size:11px;font-weight:800;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.kmi-login-help button+button{border-left:1px solid #d7dee8}
.kmi-login-card .kmi-login-id-guide{padding:10px 11px;border-radius:8px;background:#f6f8fb;color:#556579;font-size:11px;text-align:center}
.kmi-reset-request-list{display:grid;gap:10px}
.kmi-reset-request-list>p{margin:0 0 4px;color:#59687c;line-height:1.55}
.kmi-reset-request-list article{padding:12px 14px;border:1px solid #dce3ec;border-radius:10px;background:#fff}
.kmi-reset-request-list article div{display:grid;gap:4px}
.kmi-reset-request-list article span,.kmi-reset-request-list article small{color:#6a788b;font-size:11px}

main#main .metric,
main#main .cards>.metric,
main#main .cards.compact>.metric{
 display:flex!important;
 flex-direction:column!important;
 align-items:center!important;
 justify-content:center!important;
 text-align:center!important;
}
main#main .metric>.label,
main#main .metric>strong,
main#main .metric>small{
 width:100%;
 margin-left:auto!important;
 margin-right:auto!important;
 text-align:center!important;
}
.kmi-info-stack{display:flex;min-width:0;flex-direction:column;align-items:center;justify-content:center;gap:5px;text-align:center}
.kmi-info-stack>span{display:block;color:#66758a;font-size:11px;font-weight:800;line-height:1.25}
.kmi-info-stack>b{display:block;color:#17263a;font-size:14px;font-weight:900;line-height:1.35;font-variant-numeric:tabular-nums}
@media(max-width:600px){.kmi-login{padding:14px}.kmi-login-card{padding:26px 22px;border-radius:16px}.kmi-login-card h1{font-size:23px}}
@media print{.kmi-login{display:none!important}.kmi-info-stack{break-inside:avoid}}

/* KMI GROUPWARE V20.6.3 - professional unification pass */
.nav-group {
  position: relative;
  margin-bottom: 19px;
  padding-top: 2px;
}

.nav-group + .nav-group {
  padding-top: 13px;
  border-top: 1px solid rgba(255, 255, 255, 0.065);
}

.nav-group > label,
.kmi-nav-group-label {
  padding: 0 12px 8px !important;
  color: #b8cbe0 !important;
  font-size: 10.5px !important;
  font-weight: 800 !important;
  letter-spacing: 0.09em !important;
  text-transform: none !important;
  opacity: 1 !important;
}

.nav-item .ico {
  width: 20px !important;
  height: 20px !important;
  flex: 0 0 20px;
  display: grid !important;
  place-items: center;
  color: #9eb9d6;
  font-size: 0 !important;
}

.nav-item .ico svg {
  width: 18px;
  height: 18px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.75;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.nav-item:hover .ico,
.nav-item.active .ico {
  color: #ffffff;
}

.eyebrow {
  color: #145fc8 !important;
  font-weight: 850 !important;
  letter-spacing: 0.095em !important;
}

.kmi-semantic-table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
}

.kmi-semantic-table th,
.kmi-semantic-table td {
  min-height: 46px;
  padding: 12px 14px !important;
  vertical-align: middle !important;
  line-height: 1.5 !important;
}

.kmi-semantic-table th {
  text-align: center !important;
  white-space: nowrap;
}

.kmi-semantic-table td {
  text-align: center;
  white-space: normal !important;
  word-break: keep-all;
  overflow-wrap: anywhere;
}

.kmi-semantic-table .kmi-align-left {
  text-align: left !important;
}

.kmi-semantic-table .kmi-align-center {
  text-align: center !important;
}

.kmi-semantic-table .kmi-align-right {
  text-align: center !important;
  font-variant-numeric: tabular-nums;
}

/* Screen and print tables share one alignment standard: only narrative
   columns are left-aligned; every short value follows the centered header. */
.kmi-semantic-table td:not(.kmi-align-left),
.kmi-semantic-table td.kmi-align-right,
.kmi-semantic-table td.right {
  text-align: center !important;
}

.kmi-semantic-table td:not(.kmi-align-left) > b,
.kmi-semantic-table td:not(.kmi-align-left) > strong,
.kmi-semantic-table td:not(.kmi-align-left) > span,
.kmi-semantic-table td:not(.kmi-align-left) > small,
.kmi-semantic-table td:not(.kmi-align-left) > div {
  text-align: center !important;
}

.kmi-semantic-table td:not(.kmi-align-left) > div {
  justify-content: center !important;
}

/*
 * PRINT ALIGNMENT STANDARD
 * All short ledger values share the centered axis of their column header.
 * Narrative fields keep their explicit left alignment.
 */
@media print {
  .kmi-semantic-table th,
  .kmi-semantic-table td.kmi-align-center,
  .kmi-semantic-table td.kmi-align-right {
    text-align: center !important;
  }

  .kmi-semantic-table td.kmi-align-right > * {
    text-align: center !important;
    justify-content: center !important;
  }

  .kmi-semantic-table td.kmi-align-left,
  .kmi-semantic-table td.print-left {
    text-align: left !important;
  }
}

.kmi-semantic-table td > b,
.kmi-semantic-table td > a,
.kmi-semantic-table td > span:not(.badge):not([class*="status"]):not([class*="pill"]) {
  line-height: 1.45;
}

.kmi-semantic-table .row-actions,
.kmi-semantic-table .ap-actions,
.kmi-semantic-table .legacy-actions {
  justify-content: center !important;
  align-items: center !important;
}

.kmi-detail-grid,
.purchase-detail {
  gap: 12px !important;
  align-items: stretch;
}

.google-sync-detail-grid {
  display: grid;
  gap: 14px;
  margin-top: 14px;
}

.google-sync-detail-grid > div {
  display: grid;
  grid-template-columns: minmax(112px, max-content) minmax(0, 1fr);
  align-items: baseline;
  column-gap: 18px;
  row-gap: 4px;
}

.google-sync-detail-grid > div > span {
  color: var(--muted, #64748b);
}

.google-sync-detail-grid > div > b {
  min-width: 0;
  overflow-wrap: anywhere;
}

@media (max-width: 640px) {
  .google-sync-detail-grid > div {
    grid-template-columns: 1fr;
  }
}

.kmi-detail-cell,
.purchase-detail > div:not(.modal-actions) {
  min-width: 0;
  min-height: 68px;
  padding: 13px 15px !important;
  border: 1px solid var(--kmi-slate-200) !important;
  border-radius: var(--kmi-radius-md) !important;
  background: #f9fbfd !important;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.kmi-detail-cell > span,
.purchase-detail > div > span {
  display: block;
  margin: 0 0 6px !important;
  color: var(--kmi-slate-600) !important;
  font-size: 10.5px !important;
  font-weight: 800 !important;
  line-height: 1.35;
}

.kmi-detail-cell > b,
.purchase-detail > div > b {
  display: block;
  color: var(--kmi-slate-950) !important;
  font-size: 12.5px !important;
  font-weight: 750 !important;
  line-height: 1.55 !important;
  word-break: keep-all;
  overflow-wrap: anywhere;
}

.kmi-detail-list {
  display: grid !important;
  grid-template-columns: minmax(108px, 0.28fr) minmax(0, 1fr) minmax(108px, 0.28fr) minmax(0, 1fr) !important;
  margin: 0 !important;
  overflow: hidden;
  border: 1px solid var(--kmi-slate-200);
  border-radius: var(--kmi-radius-md);
  background: #ffffff;
}

.kmi-detail-list > dt,
.kmi-detail-list > dd {
  min-width: 0;
  min-height: 50px;
  margin: 0 !important;
  padding: 12px 14px !important;
  border-bottom: 1px solid var(--kmi-slate-200);
  display: flex;
  align-items: center;
  line-height: 1.5;
}

.kmi-detail-list > dt {
  justify-content: center;
  border-right: 1px solid var(--kmi-slate-200);
  color: var(--kmi-slate-700);
  background: #f5f8fb;
  font-size: 11px;
  font-weight: 800;
  text-align: center;
}

.kmi-detail-list > dd {
  justify-content: flex-start;
  color: var(--kmi-slate-950);
  background: #ffffff;
  font-size: 12px;
  word-break: keep-all;
  overflow-wrap: anywhere;
}

.kmi-detail-list > :nth-last-child(-n + 4) {
  border-bottom: 0;
}

.kmi-information-grid > div {
  min-width: 0;
  padding: 12px 14px !important;
}

.kmi-employee-collection {
  display: grid !important;
  grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)) !important;
  gap: 9px !important;
  padding: 4px !important;
}

.kmi-employee-collection > label {
  min-height: 50px !important;
  margin: 0 !important;
  padding: 10px 12px !important;
  border: 1px solid var(--kmi-slate-200) !important;
  border-radius: var(--kmi-radius-md) !important;
  color: var(--kmi-slate-800) !important;
  background: #ffffff !important;
  display: flex !important;
  align-items: center !important;
  gap: 9px !important;
  line-height: 1.4 !important;
}

.kmi-employee-collection > label:hover,
.kmi-employee-collection > label:has(input:checked) {
  border-color: var(--kmi-blue-500) !important;
  background: #f4f8ff !important;
}

.kmi-employee-multiselect {
  min-height: 180px !important;
  padding: 6px !important;
  border: 1px solid var(--kmi-slate-200) !important;
  border-radius: var(--kmi-radius-md) !important;
  background: #ffffff !important;
}

.kmi-employee-multiselect option {
  padding: 9px 10px;
  border-radius: 6px;
}

.kmi-context-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
}

.kmi-context-print {
  white-space: nowrap;
}

.kmi-print-option[data-kmi-print-orientation="landscape"] .kmi-print-icon,
.kmi-print-option[data-kmi-org-orientation="landscape"] .kmi-print-icon {
  width: 42px;
  height: 29px;
}

.kmi-print-option[data-kmi-print-orientation="auto"] .kmi-print-icon:after,
.kmi-print-option[data-kmi-org-orientation="auto"] .kmi-print-icon:after {
  content: "A";
  display: grid;
  place-items: center;
  width: 100%;
  height: 100%;
  font-size: 13px;
  font-weight: 850;
}

.ap-table-wrap,
.legacy-table-wrap {
  max-width: 100%;
  overflow: auto;
  border: 1px solid var(--kmi-slate-200);
  border-radius: var(--kmi-radius-md);
  background: #ffffff;
}

.ap-table,
.legacy-table {
  width: 100%;
  border-collapse: separate !important;
  border-spacing: 0 !important;
}

@media (max-width: 900px) {
  .kmi-detail-list {
    grid-template-columns: minmax(96px, 0.32fr) minmax(0, 1fr) !important;
  }

  .kmi-detail-list > :nth-last-child(-n + 4) {
    border-bottom: 1px solid var(--kmi-slate-200);
  }

  .kmi-detail-list > :nth-last-child(-n + 2) {
    border-bottom: 0;
  }
}

@media (max-width: 760px) {
  .kmi-semantic-table th,
  .kmi-semantic-table td {
    padding: 11px 12px !important;
  }

  .kmi-detail-grid,
  .purchase-detail {
    grid-template-columns: 1fr !important;
  }

  .kmi-detail-cell,
  .purchase-detail > div:not(.modal-actions) {
    min-height: 62px;
  }

  .kmi-detail-list {
    grid-template-columns: 96px minmax(0, 1fr) !important;
  }

  .kmi-context-actions,
  .schedule-actions {
    width: 100%;
    justify-content: flex-start;
    flex-wrap: wrap;
  }
}



/* V20.6.3 final enterprise harmonization */
@media (min-width: 761px) {
  .toolbar > select {
    width: auto !important;
    max-width: 220px;
    flex: 0 1 190px;
  }

  .toolbar > .btn,
  .toolbar > button {
    flex: 0 0 auto;
  }

  .purchase-toolbar > #purchaseQ {
    flex: 1 1 320px;
    max-width: 520px;
  }

  .purchase-toolbar > #purchaseLimit {
    width: 150px !important;
    max-width: 150px;
  }
}

.kmi-overview-actions {
  margin: 0 0 12px;
}

.kmi-unified-employee-modal .modal-head h2:after {
  content: " · 공통 직원 선택";
  color: var(--kmi-slate-500);
  font-size: 10px;
  font-weight: 700;
}

.kmi-employee-modal-box {
  width: min(980px, 100%);
}

.kmi-unified-employee-modal .kmi-employee-search,
.kmi-unified-employee-modal input[type="search"],
.kmi-unified-employee-modal #kmiEmployeeSearch {
  min-height: var(--kmi-control) !important;
  border-color: #cfdbe9 !important;
  background: #f8fbff !important;
}

.kmi-unified-employee-modal .s132-picker-list,
.kmi-unified-employee-modal .cert080-employee-picker,
.kmi-unified-employee-modal .cert079-picker-list,
.kmi-unified-employee-modal .cert080-picker-list,
.kmi-unified-employee-modal .safety-assign-list,
.kmi-unified-employee-modal [class*="employee-picker"]:not(.kmi-employee-picker),
.kmi-unified-employee-modal [class*="employee-list"] {
  max-height: min(55vh, 520px);
  overflow: auto;
  display: grid !important;
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  gap: 8px !important;
  padding: 4px !important;
  border: 0 !important;
  background: transparent !important;
}

.kmi-unified-employee-choice {
  min-width: 0 !important;
  min-height: 58px !important;
  margin: 0 !important;
  padding: 10px 12px !important;
  border: 1px solid var(--kmi-slate-200) !important;
  border-radius: var(--kmi-radius-md) !important;
  color: var(--kmi-slate-800) !important;
  background: #ffffff !important;
  box-shadow: none !important;
  text-align: left !important;
}

button.kmi-unified-employee-choice,
label.kmi-unified-employee-choice {
  display: flex !important;
  align-items: center !important;
  gap: 10px !important;
}

.kmi-unified-employee-choice:hover,
.kmi-unified-employee-choice.is-selected,
.kmi-unified-employee-choice:has(input:checked) {
  border-color: var(--kmi-blue-500) !important;
  background: #f3f7ff !important;
  box-shadow: inset 0 0 0 1px rgba(31, 103, 215, 0.14) !important;
}

.kmi-unified-employee-choice input[type="checkbox"],
.kmi-unified-employee-choice input[type="radio"] {
  width: 18px !important;
  height: 18px !important;
  flex: 0 0 18px !important;
  accent-color: var(--kmi-blue-600);
}

@media (max-width: 900px) {
  .kmi-unified-employee-modal .s132-picker-list,
  .kmi-unified-employee-modal .cert080-employee-picker,
  .kmi-unified-employee-modal .cert079-picker-list,
  .kmi-unified-employee-modal .cert080-picker-list,
  .kmi-unified-employee-modal .safety-assign-list,
  .kmi-unified-employee-modal [class*="employee-picker"]:not(.kmi-employee-picker),
  .kmi-unified-employee-modal [class*="employee-list"] {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
}

@media (max-width: 600px) {
  .kmi-unified-employee-modal .s132-picker-list,
  .kmi-unified-employee-modal .cert080-employee-picker,
  .kmi-unified-employee-modal .cert079-picker-list,
  .kmi-unified-employee-modal .cert080-picker-list,
  .kmi-unified-employee-modal .safety-assign-list,
  .kmi-unified-employee-modal [class*="employee-picker"]:not(.kmi-employee-picker),
  .kmi-unified-employee-modal [class*="employee-list"] {
    grid-template-columns: 1fr !important;
  }
}

/* Approval-line employee controls use the same picker behavior in a compact
   form. Reset the legacy circular step-badge rule that also matched the
   injected field wrapper. */
.ap-line-row > .kmi-input-action {
  width: auto !important;
  height: 38px !important;
  min-width: 0 !important;
  display: flex !important;
  align-items: stretch !important;
  border-radius: 0 !important;
  background: transparent !important;
  color: inherit !important;
  font-weight: inherit !important;
}

.ap-line-row > .kmi-input-action > input {
  height: 38px !important;
  min-width: 0 !important;
  border-radius: 8px 0 0 8px !important;
}

.ap-line-row > .kmi-input-action > .kmi-picker-trigger {
  width: 42px !important;
  min-width: 42px !important;
  height: 38px !important;
  padding: 0 !important;
  margin: 0 !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  border: 1px solid var(--kmi-line, #d2dce8) !important;
  border-left: 0 !important;
  border-radius: 0 8px 8px 0 !important;
  background: #fff !important;
  color: var(--kmi-primary, #1769d3) !important;
  font-size: 0 !important;
  line-height: 1 !important;
  box-shadow: none !important;
}

.ap-line-row > .kmi-input-action > .kmi-picker-trigger::before {
  content: "선택";
  font-size: 10px;
  font-weight: 900;
  letter-spacing: -0.02em;
}

.ap-line-row > .kmi-input-action > .kmi-picker-trigger:hover {
  background: var(--kmi-primary-soft, #eef5ff) !important;
  border-color: var(--kmi-primary, #1769d3) !important;
}

/* Employee selector cards remain horizontal even inside legacy modal-form
   labels, which previously forced every candidate into a vertical layout. */
label.kmi-unified-employee-choice {
  flex-direction: row !important;
}

.safety-assign-row.kmi-unified-employee-choice > span {
  min-width: 0;
  flex: 1 1 auto;
}

.safety-assign-row.kmi-unified-employee-choice .org-person {
  width: 100%;
  padding: 0 !important;
  border: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
}


/* KMI GROUPWARE V20.6.3 - final 1:1 consistency pass */
:root {
  --kmi-control: 40px;
  --kmi-table-head: 44px;
  --kmi-table-row: 48px;
}

.page-head,
.panel-head,
.section-title,
.org-head,
.document-detail-head {
  min-width: 0;
}

.page-head h1,
.panel-head h2,
.section-title h3,
.org-head h2 {
  letter-spacing: -0.025em;
}

.btn,
button.btn,
.kmi-button {
  min-height: var(--kmi-control);
  padding: 0 14px;
  border-radius: 9px;
  font-size: 11px;
  font-weight: 800;
  line-height: 1.25;
}

.btn.small,
button.btn.small,
.row-actions button {
  min-height: 32px;
  padding: 0 10px;
  font-size: 10px;
}

/* PATCH 175: one semantic button color system across every module. */
.btn.kmi-action-create,
button.btn.kmi-action-create,
.kmi-button.kmi-action-create {
  border-color: #aac6ee !important;
  color: #1559b7 !important;
  background: #f3f7fe !important;
  box-shadow: 0 1px 2px rgba(20, 88, 191, 0.05) !important;
}

.btn.kmi-action-create.primary,
button.btn.kmi-action-create.primary,
.toolbar > .btn.kmi-action-create.primary,
.panel-actions > .btn.kmi-action-create.primary,
.form-actions > .btn.kmi-action-create.primary,
.modal-actions > .btn.kmi-action-create.primary {
  border-color: var(--kmi-blue-600) !important;
  color: #fff !important;
  background: linear-gradient(180deg, #2778ea, #1765d5) !important;
  box-shadow: 0 5px 12px rgba(23, 105, 224, 0.2) !important;
}

.btn.kmi-action-positive,
button.btn.kmi-action-positive,
.kmi-button.kmi-action-positive {
  border-color: #a9d7c4 !important;
  color: #126344 !important;
  background: #f0faf5 !important;
  box-shadow: 0 1px 2px rgba(18, 99, 68, 0.05) !important;
}

.btn.kmi-action-positive:hover,
button.btn.kmi-action-positive:hover {
  border-color: #78bea1 !important;
  color: #0c5137 !important;
  background: #e3f5ed !important;
}

.btn.kmi-action-edit,
button.btn.kmi-action-edit,
.kmi-button.kmi-action-edit {
  border-color: #bfd2eb !important;
  color: #254f82 !important;
  background: #f7faff !important;
}

.btn.kmi-action-print,
button.btn.kmi-action-print,
.kmi-button.kmi-action-print {
  border-color: #c2cedd !important;
  color: #30445f !important;
  background: #f8fafc !important;
}

.btn.kmi-action-danger,
button.btn.kmi-action-danger,
.kmi-button.kmi-action-danger {
  border-color: #efc8ce !important;
  color: #a62e3d !important;
  background: #fffafa !important;
  box-shadow: none !important;
}

.btn.kmi-action-danger:hover,
button.btn.kmi-action-danger:hover {
  border-color: #e5a3ad !important;
  color: #842331 !important;
  background: #fff0f2 !important;
}

.btn.kmi-action-neutral,
button.btn.kmi-action-neutral,
.kmi-button.kmi-action-neutral {
  border-color: #d2dce8 !important;
  color: #435269 !important;
  background: #fff !important;
}

.btn.kmi-action-create:hover,
.btn.kmi-action-edit:hover,
.btn.kmi-action-print:hover,
.btn.kmi-action-neutral:hover,
button.btn.kmi-action-create:hover,
button.btn.kmi-action-edit:hover,
button.btn.kmi-action-print:hover,
button.btn.kmi-action-neutral:hover {
  filter: brightness(0.975);
  box-shadow: 0 3px 9px rgba(17, 39, 70, 0.08) !important;
}

.row-actions .kmi-action-create,
.row-actions .kmi-action-positive,
.row-actions .kmi-action-edit,
.row-actions .kmi-action-print,
.row-actions .kmi-action-danger,
.data-table td .btn.kmi-action-create,
.data-table td .btn.kmi-action-positive,
.data-table td .btn.kmi-action-edit,
.data-table td .btn.kmi-action-print,
.data-table td .btn.kmi-action-danger {
  box-shadow: none !important;
}

/* PATCH 176: unified automatic notification modal. */
.modal-box.kmi-alert-modal {
  width: min(780px, 100%) !important;
  border: 1px solid #cbd7e6 !important;
  border-radius: 18px !important;
  background: #fff !important;
  box-shadow: 0 22px 55px rgba(7, 20, 38, 0.24) !important;
}

.kmi-alert-modal .modal-head {
  min-height: 64px !important;
  padding: 14px 18px !important;
  border-top: 4px solid var(--kmi-blue-600) !important;
  border-bottom: 1px solid #dce4ee !important;
  background: #fff !important;
}

.kmi-alert-modal.kmi-alert-warning .modal-head {
  border-top-color: #c98213 !important;
}

.kmi-alert-modal .modal-head h2 {
  display: flex !important;
  align-items: center !important;
  gap: 10px !important;
  color: #111c2e !important;
  font-size: 17px !important;
  font-weight: 850 !important;
}

.kmi-alert-modal .modal-head h2::before {
  content: "!" !important;
  display: inline-grid !important;
  place-items: center !important;
  width: 24px !important;
  height: 24px !important;
  flex: 0 0 24px !important;
  border-radius: 50% !important;
  color: #fff !important;
  background: var(--kmi-blue-600) !important;
  font-size: 13px !important;
  font-weight: 900 !important;
}

.kmi-alert-modal.kmi-alert-warning .modal-head h2::before {
  background: #c98213 !important;
}

.kmi-alert-modal .modal-head > button {
  border: 1px solid #d3deea !important;
  color: #52647a !important;
  background: #fff !important;
  box-shadow: none !important;
}

.kmi-alert-modal .kmi-alert-body {
  display: grid !important;
  gap: 14px !important;
  padding: 20px !important;
  background: #fff !important;
}

.kmi-alert-modal .kmi-alert-content {
  display: grid !important;
  gap: 14px !important;
  min-width: 0 !important;
}

.kmi-alert-modal .kmi-alert-summary {
  display: grid !important;
  gap: 5px !important;
  margin: 0 !important;
  padding: 14px 16px !important;
  border: 1px solid #d8e3f0 !important;
  border-radius: 11px !important;
  color: #34445b !important;
  background: #f6f9fd !important;
  line-height: 1.55 !important;
}

.kmi-alert-modal.kmi-alert-warning .kmi-alert-summary {
  border-color: #ead7b5 !important;
  background: #fffaf0 !important;
}

.kmi-alert-modal .kmi-alert-summary b {
  color: #1c2c43 !important;
  font-weight: 820 !important;
}

.kmi-alert-modal .kmi-alert-summary span {
  color: #66758a !important;
}

.kmi-alert-modal .kmi-alert-list {
  min-width: 0 !important;
  max-height: min(48vh, 430px) !important;
  overflow: auto !important;
  border: 1px solid #dce4ee !important;
  border-radius: 11px !important;
  background: #fff !important;
}

.kmi-alert-modal .inspection113-popup-list > div,
.kmi-alert-modal .cert075-alert-list > div:not(.modal-actions) {
  min-height: 46px !important;
  margin: 0 !important;
  padding: 10px 12px !important;
  border: 0 !important;
  border-bottom: 1px solid #e4eaf1 !important;
  border-radius: 0 !important;
  background: #fff !important;
}

.kmi-alert-modal .inspection113-popup-list > div:last-child,
.kmi-alert-modal .cert075-alert-list > div:not(.modal-actions):last-of-type {
  border-bottom: 0 !important;
}

.kmi-alert-modal .training-popup .table-wrap {
  margin: 0 !important;
}

.kmi-alert-modal .training-popup .data-table {
  border: 0 !important;
  border-radius: 0 !important;
}

.kmi-alert-modal .kmi-alert-actions {
  display: flex !important;
  justify-content: flex-end !important;
  align-items: center !important;
  gap: 8px !important;
  margin: 2px 0 0 !important;
  padding: 14px 0 0 !important;
  border-top: 1px solid #e1e8f0 !important;
}

.kmi-alert-modal .kmi-alert-actions .btn {
  min-width: 78px !important;
  min-height: 38px !important;
}

.toolbar,
.schedule-toolbar,
.purchase-toolbar,
.panel-actions,
.form-actions,
.modal-actions,
.kmi-context-actions {
  align-items: center;
  gap: 8px;
}

.kmi-print-button {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-width: max-content;
  white-space: nowrap;
}

.kmi-print-button::before {
  content: "";
  width: 14px;
  height: 14px;
  flex: 0 0 14px;
  background: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9V3h12v6'/%3E%3Cpath d='M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2'/%3E%3Crect x='6' y='14' width='12' height='7'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9V3h12v6'/%3E%3Cpath d='M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2'/%3E%3Crect x='6' y='14' width='12' height='7'/%3E%3C/svg%3E") center / contain no-repeat;
}

.row-actions .kmi-print-button {
  max-width: 170px;
  min-width: 0;
  white-space: normal;
  text-align: center;
}

.kmi-overview-actions:empty {
  display: none !important;
}

.kmi-overview-actions {
  min-height: 40px;
  margin: 0 0 12px;
  padding: 0;
}

/* Daily schedule uses the same quiet table system as every other list. */
.daily-sheet-wrap {
  padding: 18px 24px 28px !important;
}

.daily-sheet {
  border: 1px solid var(--kmi-slate-200) !important;
  border-collapse: separate !important;
  border-spacing: 0 !important;
  border-radius: 10px;
  overflow: hidden;
  background: #ffffff !important;
}

.daily-sheet th,
.daily-sheet td {
  height: var(--kmi-table-row);
  padding: 10px 12px !important;
  border: 0 !important;
  border-right: 1px solid #e0e7ef !important;
  border-bottom: 1px solid #e0e7ef !important;
  color: var(--kmi-slate-800) !important;
  background: #ffffff !important;
  font-size: 11px !important;
  line-height: 1.45 !important;
  text-align: center !important;
  vertical-align: middle !important;
}

.daily-sheet th {
  height: var(--kmi-table-head);
  color: #4f6077 !important;
  background: #f5f8fb !important;
  font-size: 10px !important;
  font-weight: 850 !important;
}

.daily-sheet tr > :last-child {
  border-right: 0 !important;
}

.daily-sheet tbody tr:last-child > * {
  border-bottom: 0 !important;
}

.daily-sheet tbody tr:hover td {
  background: #f8fbff !important;
}

.daily-sheet .empty {
  min-height: 150px;
  display: grid;
  place-items: center;
  color: var(--kmi-slate-500);
}

/* HR print center now uses the same employee selector and action hierarchy. */
.kmi-print-center-grid {
  align-items: stretch;
}

.kmi-print-center-card {
  display: flex;
  flex-direction: column;
  gap: 16px;
  min-height: 260px;
}

.kmi-print-center-card > .btn:last-child,
.kmi-print-center-card > .button-stack {
  margin-top: auto;
}

.kmi-print-employee-control {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 10px;
  align-items: stretch;
}

.kmi-print-employee-selection {
  min-height: var(--kmi-control);
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 12px;
  border: 1px solid var(--kmi-slate-200);
  border-radius: 9px;
  color: var(--kmi-slate-500);
  background: #f8fafc;
}

.kmi-print-employee-selection > span:not(.kmi-selected-employee-avatar) {
  display: grid;
  min-width: 0;
}

.kmi-print-employee-selection b,
.kmi-print-employee-selection small {
  display: block;
}

.kmi-print-employee-selection b {
  color: var(--kmi-slate-950);
  font-size: 12px;
}

.kmi-print-employee-selection small {
  margin-top: 2px;
  color: var(--kmi-slate-500);
  font-size: 10px;
}

.kmi-selected-employee-avatar {
  width: 34px;
  height: 34px;
  flex: 0 0 34px;
  display: grid;
  place-items: center;
  border-radius: 9px;
  color: #ffffff;
  background: linear-gradient(145deg, #387fe1, #194f9c);
  font-size: 11px;
  font-weight: 850;
}

/* One employee picker for single and multiple selection. */
.kmi-employee-modal-box {
  width: min(980px, calc(100vw - 32px)) !important;
  max-height: min(88vh, 820px);
}

.kmi-employee-picker {
  gap: 12px;
}

.kmi-employee-selection-bar {
  min-height: 34px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 0 2px;
  color: var(--kmi-slate-600);
  font-size: 10px;
}

.kmi-employee-selection-bar > span {
  color: var(--kmi-slate-800);
  font-size: 11px;
  font-weight: 850;
}

.kmi-employee-selection-bar > div {
  display: flex;
  align-items: center;
  gap: 7px;
}

.kmi-employee-list {
  scrollbar-gutter: stable;
}

.kmi-employee-item {
  min-height: 58px;
}

.kmi-employee-item.is-selected {
  border-color: #2f6de0;
  background: #eef4ff;
  box-shadow: inset 0 0 0 1px #2f6de0;
}

.kmi-legacy-employee-toolbar {
  display: grid;
  grid-template-columns: minmax(240px, 1fr) minmax(160px, 220px);
  gap: 9px;
  margin: 0 0 12px;
}

.kmi-legacy-employee-toolbar input,
.kmi-legacy-employee-toolbar select {
  width: 100%;
  min-height: var(--kmi-control);
  border: 1px solid #cfdbe9;
  border-radius: 9px;
  background: #f8fbff;
}

.kmi-unified-employee-choice {
  position: relative;
  padding-right: 52px !important;
}

.kmi-legacy-employee-status {
  position: absolute;
  top: 50%;
  right: 12px;
  transform: translateY(-50%);
  color: var(--kmi-green-700);
  font-size: 9px;
  font-weight: 800;
}

.kmi-unified-employee-choice[hidden] {
  display: none !important;
}

/* Consistent descriptive/value alignment in detail cards. */
.kmi-detail-cell,
.purchase-detail > div:not(.modal-actions),
.kmi-information-grid > div {
  justify-content: center;
}

.kmi-detail-cell > b,
.purchase-detail > div > b,
.kmi-information-grid > div > b {
  min-width: 0;
  text-align: center;
}

.kmi-detail-list > dd {
  padding-left: 16px !important;
  padding-right: 16px !important;
}

/* Prevent legacy controls from making panels wider than their parent. */
.card,
.panel,
.form-card,
.modal-box,
.table-wrap,
.kmi-information-grid,
.kmi-detail-grid {
  min-width: 0;
}

@media (max-width: 760px) {
  .kmi-print-button {
    min-width: 0;
    white-space: normal;
  }

  .kmi-print-employee-control,
  .kmi-employee-toolbar,
  .kmi-legacy-employee-toolbar {
    grid-template-columns: 1fr !important;
  }

  .kmi-employee-selection-bar {
    align-items: flex-start;
    flex-direction: column;
  }

  .kmi-employee-selection-bar > div {
    width: 100%;
    flex-wrap: wrap;
  }

  .kmi-employee-selection-bar > div > button {
    flex: 1 1 140px;
  }

  .daily-sheet-wrap {
    padding: 14px 16px 22px !important;
  }
}

/* PATCH 129: final shared alignment for every PPE size field */
#s132Body .s132-size-field-grid input.s132-size-input,
#s132Body .s132-size-field-grid select.s132-size-input {
  padding-left: 12px !important;
  padding-right: 12px !important;
  text-align: center !important;
  text-align-last: center !important;
  text-indent: 0 !important;
}

#s132Body .s132-size-field-grid input.s132-size-input::placeholder {
  color: #7b8798;
  opacity: 1;
  text-align: center !important;
}

#s132Body .s132-size-field-grid select.s132-size-input option {
  text-align: center;
}

/* PATCH 130: align the PPE item name field and add button on one baseline */
.s132-size-item-manager .s132-item-add-form {
  grid-template-columns: minmax(0, 1fr) auto !important;
  align-items: end !important;
  column-gap: 12px !important;
}

.s132-size-item-manager .s132-item-add-form > label {
  margin: 0 !important;
}

.s132-size-item-manager .s132-item-add-form > label > input {
  height: 40px !important;
  margin-top: 6px !important;
}

.s132-size-item-manager .s132-item-add-action {
  align-self: end !important;
  display: flex !important;
  align-items: flex-end !important;
  height: 40px !important;
  margin: 0 !important;
}

.s132-size-item-manager .s132-item-add-action > .btn {
  height: 40px !important;
  min-height: 40px !important;
  margin: 0 !important;
}

/* PATCH 131: common dashboard layout for Safety and Cable modules */
.s132-dashboard-metrics,
.c120-dashboard-metrics {
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
}

/* PATCH 138: PPE monthly sheet controls start at the same height as cycle fields. */
#s132Body .ppe115-sheet td > textarea.ppe115-method,
#s132Body .ppe115-sheet td > textarea.ppe115-result {
  display: block !important;
  width: 100% !important;
  height: 38px !important;
  min-height: 38px !important;
  max-height: none !important;
  margin: 0 auto !important;
  padding: 0 8px !important;
  overflow: hidden !important;
  resize: none !important;
  box-sizing: border-box !important;
  line-height: 36px !important;
  text-align: center !important;
}

/* PATCH 139: keep PPE print metadata as clearly separated fields. */
.print-content .ppe-company .ppe-meta {
  display: flex !important;
  flex-wrap: wrap !important;
  align-items: center !important;
  gap: 2mm 8mm !important;
  margin: 2mm 0 !important;
}

.print-content .ppe-company .ppe-meta > span {
  display: inline-block !important;
  margin: 0 !important;
  white-space: nowrap !important;
}

.print-content .ppe-company {
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) minmax(78mm, 42%) !important;
  align-items: stretch !important;
}

.print-content .ppe-company > .ppe-title {
  display: contents !important;
}

.print-content .ppe-company > .ppe-title > h1 {
  grid-column: 1 !important;
  grid-row: 1 !important;
  min-height: 15mm !important;
  padding: 2mm 4mm !important;
  border: 1.5px solid #111 !important;
  border-right: 0 !important;
}

.print-content .ppe-company > .ppe-title > .ppe-approval {
  grid-column: 2 !important;
  grid-row: 1 / span 2 !important;
}

.print-content .ppe-title > .ppe-approval .approval-side-label,
.print-content .ppe-title > .ppe-approval tr:first-child > th[rowspan],
.print-content .patrol-print-head > .ppe-approval .approval-side-label,
.print-content .patrol-print-head > .ppe-approval tr:first-child > th[rowspan] {
  font-size: 9pt !important;
  font-weight: 900 !important;
  line-height: 1.3 !important;
  letter-spacing: 0 !important;
}

.print-content .ppe-company > .ppe-meta {
  grid-column: 1 !important;
  grid-row: 2 !important;
  padding: 1.5mm 3mm !important;
  border: 1.5px solid #111 !important;
  border-top: 0 !important;
  border-right: 0 !important;
}

.print-content .ppe-company > :not(.ppe-title):not(.ppe-meta) {
  grid-column: 1 / -1 !important;
}

/* PATCH 143: editable PPE issue ledger matching the company paper register. */
#s132Body .ppe-issue-toolbar {
  align-items: flex-end !important;
}

#s132Body .ppe-issue-toolbar > label {
  display: grid !important;
  gap: 5px !important;
  margin: 0 !important;
  font-size: 12px !important;
  font-weight: 800 !important;
}

#s132Body .ppe-issue-toolbar input,
#s132Body .ppe-issue-toolbar .btn {
  height: 40px !important;
}

#s132Body .ppe-issue-sheet-card {
  overflow: hidden !important;
}

#s132Body .ppe-issue-scroll {
  width: 100% !important;
  overflow-x: auto !important;
}

#s132Body .ppe-issue-sheet {
  width: 100% !important;
  min-width: 1320px !important;
  border-collapse: collapse !important;
  table-layout: fixed !important;
}

#s132Body .ppe-issue-sheet th,
#s132Body .ppe-issue-sheet td {
  padding: 6px !important;
  border: 1px solid #c8d1dc !important;
  text-align: center !important;
  vertical-align: middle !important;
}

#s132Body .ppe-issue-sheet th {
  background: #f3f6fa !important;
  font-size: 11px !important;
}

#s132Body .ppe-issue-sheet th:nth-child(1) { width: 54px !important; }
#s132Body .ppe-issue-sheet th:nth-child(2) { width: 120px !important; }
#s132Body .ppe-issue-sheet th:nth-child(3) { width: 175px !important; }
#s132Body .ppe-issue-sheet th:nth-child(4) { width: 250px !important; }
#s132Body .ppe-issue-sheet th:nth-child(5) { width: 70px !important; }
#s132Body .ppe-issue-sheet th:nth-child(6) { width: 130px !important; }
#s132Body .ppe-issue-sheet th:nth-child(7) { width: 115px !important; }
#s132Body .ppe-issue-sheet th:nth-child(8) { width: 130px !important; }
#s132Body .ppe-issue-sheet th:nth-child(9) { width: 120px !important; }
#s132Body .ppe-issue-sheet th:nth-child(10) { width: 68px !important; }

#s132Body .ppe-issue-sheet input,
#s132Body .ppe-issue-sheet select,
#s132Body .ppe-issue-recipient {
  width: 100% !important;
  height: 38px !important;
  margin: 0 !important;
  padding: 0 8px !important;
  border: 1px solid #d2dbe7 !important;
  border-radius: 7px !important;
  background: #fff !important;
  box-sizing: border-box !important;
  color: #17283f !important;
  font: inherit !important;
  text-align: center !important;
}

.s132-dashboard-metrics > button,
.c120-dashboard-metrics > button {
  width: 100%;
  border: 1px solid var(--kmi-slate-200);
  color: inherit;
  cursor: pointer;
  font: inherit;
  text-align: left;
}

.s132-dashboard-metrics > button:hover,
.c120-dashboard-metrics > button:hover {
  border-color: var(--kmi-blue-300);
  transform: translateY(-1px);
}

.s132-dashboard-grid,
.c120-dashboard-grid {
  align-items: stretch;
}

.s132-dashboard-alert {
  width: 100%;
  color: inherit;
  background: #fff;
  text-align: left;
}

.s132-dashboard-alert > div {
  min-width: 0;
  flex: 1;
}

.s132-dashboard-alert em,
.c120-dashboard-actions em {
  color: var(--kmi-blue-600);
  font-size: 10px;
  font-style: normal;
  font-weight: 800;
}

.s132-dashboard-bars {
  display: grid;
  gap: 13px;
}

.s132-dashboard-bars > div {
  display: grid;
  grid-template-columns: 90px minmax(0, 1fr) 34px;
  align-items: center;
  gap: 10px;
  font-size: 11px;
}

.s132-dashboard-bars i {
  height: 10px;
  overflow: hidden;
  border-radius: 999px;
  background: #e9eef5;
}

.s132-dashboard-bars i b {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: var(--kmi-blue-600);
}

.c120-month-bars {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  align-items: end;
  gap: 8px;
  min-height: 220px;
}

.c120-month-bars > div {
  display: grid;
  grid-template-rows: 160px auto auto;
  gap: 5px;
  text-align: center;
}

.c120-month-bars i {
  display: flex;
  align-items: end;
  justify-content: center;
}

.c120-month-bars i b {
  width: min(24px, 72%);
  min-height: 2px;
  border-radius: 6px 6px 2px 2px;
  background: linear-gradient(180deg, var(--kmi-blue-500), var(--kmi-blue-700));
}

.c120-month-bars span {
  font-size: 10px;
  font-weight: 800;
}

.c120-month-bars small {
  color: var(--kmi-slate-500);
  font-size: 9px;
}

.c120-dashboard-actions {
  display: grid;
  gap: 8px;
  max-height: 300px;
  overflow: auto;
}

.c120-dashboard-actions > button {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  min-height: 54px;
  padding: 9px 12px;
  border: 1px solid var(--kmi-slate-200);
  border-radius: 9px;
  color: inherit;
  background: #fff;
  text-align: left;
}

.c120-dashboard-actions span {
  display: grid;
  gap: 3px;
}

.c120-dashboard-actions small {
  color: var(--kmi-slate-500);
}

@media (max-width: 1100px) {
  .s132-dashboard-metrics,
  .c120-dashboard-metrics {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
}

@media (max-width: 700px) {
  .s132-dashboard-metrics,
  .c120-dashboard-metrics {
    grid-template-columns: 1fr !important;
  }

  .c120-month-bars {
    grid-template-columns: repeat(6, minmax(0, 1fr));
    row-gap: 16px;
  }
}

/* PATCH 183: final compact metric-card standard across the whole groupware. */
main#main .cards > .metric,
main#main .cards.compact > .metric,
main#main .s132-dashboard-metrics > .metric,
main#main .c120-dashboard-metrics > .metric,
main#main .ap-shell > .cards.compact > .metric {
  box-sizing: border-box !important;
  min-height: 86px !important;
  height: 86px !important;
  padding: 13px 16px !important;
  border-radius: 12px !important;
}

main#main .metric > .label {
  margin: 0 !important;
  font-size: 10px !important;
  line-height: 1.35 !important;
}

main#main .metric > strong {
  margin: 7px 0 0 !important;
  font-size: clamp(21px, 1.7vw, 26px) !important;
  line-height: 1.15 !important;
}

main#main .metric > strong > small {
  display: inline !important;
  margin-left: 2px !important;
  font-size: 10px !important;
  line-height: inherit !important;
}

main#main .metric > small {
  display: none !important;
}

main#main .metric::before {
  width: 3px !important;
}

/* PATCH 188: electronic-approval tab layout is the final standard. */
main#main .tabs,
main#main .cert-tabs,
main#main .schedule-tabs,
main#main .c119-tabs,
main#main .c120-tabs,
main#main .ap-tabs,
main#main .org-tabs,
main#main .legacy-tabs,
main#main [role="tablist"] {
  background: transparent !important;
  box-shadow: none !important;
}

main#main .tabs > button,
main#main .cert-tabs > button,
main#main .schedule-tabs > button,
main#main .c119-tabs > button,
main#main .c120-tabs > button,
main#main .ap-tabs > button,
main#main .org-tabs > button,
main#main .legacy-tabs > button,
main#main [role="tablist"] > [role="tab"] {
  background: transparent !important;
}

/* Schedule tabs previously lived inside the white content card.
   Flatten that shell and start the white card at the actual content. */
main#main .schedule-panel {
  padding: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
}

main#main .schedule-panel > .panel-head {
  min-height: 45px !important;
  margin: 0 0 16px !important;
  padding: 0 2px !important;
  border: 0 !important;
  border-bottom: 1px solid var(--kmi-slate-200) !important;
  background: transparent !important;
}

main#main .schedule-panel > #sharedBody,
main#main .schedule-panel > #scheduleBody {
  min-width: 0;
  padding: 18px 20px;
  border: 1px solid var(--kmi-slate-200);
  border-radius: var(--kmi-radius-lg);
  background: #ffffff;
  box-shadow: var(--kmi-shadow-sm);
}

@media (max-width: 700px) {
  main#main .schedule-panel > .panel-head {
    align-items: stretch !important;
  }

  main#main .schedule-panel > #sharedBody,
main#main .schedule-panel > #scheduleBody {
    padding: 14px;
  }
}

/* PATCH 189: vehicle dashboard, without a duplicate print hub. */
.v189-dashboard-grid > .panel {
  min-width: 0;
  margin: 0 !important;
}

.v189-dashboard-grid .panel-head > b {
  color: var(--kmi-slate-700);
  font-size: 12px;
}

.v189-dashboard-list > button,
.v189-recent-list > button {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  width: 100%;
  min-height: 44px;
  padding: 8px 10px;
  border: 1px solid var(--kmi-slate-200);
  border-radius: 9px;
  color: inherit;
  background: #ffffff;
  text-align: left;
}

.v189-dashboard-list > button + button,
.v189-recent-list > button + button {
  margin-top: 8px;
}

.v189-dashboard-list > button:hover,
.v189-recent-list > button:hover {
  border-color: #a9bdd7;
  background: var(--kmi-slate-050);
}

.v189-dashboard-list em {
  flex: 0 0 auto;
  color: var(--kmi-logo-orange-text);
  font-size: 10px;
  font-style: normal;
  font-weight: 800;
}

.v189-recent-list > button > span {
  display: grid;
  min-width: 0;
  gap: 3px;
}

.v189-recent-list b {
  color: var(--kmi-slate-950);
  font-size: 11px;
}

.v189-recent-list small,
.v189-recent-list time {
  color: var(--kmi-slate-500);
  font-size: 10px;
}

.v189-recent-list time {
  flex: 0 0 auto;
}


/* PATCH 195: 업무사이트 등록 폼 행·컨트롤·체크박스 정렬 */
#workSiteForm.worksite-form .worksite-form-grid {
  align-items: end;
  column-gap: 14px;
  row-gap: 16px;
}

#workSiteForm.worksite-form .worksite-form-grid > label:not(.worksite-check) {
  display: flex;
  min-width: 0;
  margin: 0;
  flex-direction: column;
  justify-content: flex-start;
}

#workSiteForm .worksite-field-label {
  display: flex;
  min-height: 18px;
  margin: 0 0 7px;
  align-items: center;
  color: #526174;
  font-size: 12px;
  font-weight: 800;
  line-height: 18px;
}

#workSiteForm .worksite-form-grid input:not([type="checkbox"]),
#workSiteForm .worksite-form-grid select {
  box-sizing: border-box;
  width: 100%;
  height: 42px;
  min-height: 42px;
  margin-top: 0 !important;
  padding-top: 0;
  padding-bottom: 0;
}

#workSiteForm .worksite-form-grid textarea {
  box-sizing: border-box;
  width: 100%;
  min-height: 92px;
  margin-top: 0 !important;
  padding: 11px 12px;
  line-height: 1.55;
}

#workSiteForm .kmi-input-action {
  min-height: 42px;
  margin-top: 0;
  align-items: stretch;
}

#workSiteForm .kmi-input-action > input,
#workSiteForm .kmi-input-action > select,
#workSiteForm .kmi-picker-trigger {
  box-sizing: border-box;
  height: 42px !important;
  min-height: 42px !important;
}

#workSiteForm .worksite-check {
  display: flex !important;
  box-sizing: border-box;
  width: 100%;
  height: 42px;
  min-height: 42px;
  margin: 0;
  padding: 0 4px;
  align-self: end;
  flex-direction: row !important;
  align-items: center !important;
  justify-content: flex-start;
  gap: 9px;
  color: #43516a;
  font-size: 12px;
  font-weight: 700;
  line-height: 1.3;
  cursor: pointer;
}

#workSiteForm .worksite-check input[type="checkbox"] {
  display: block;
  flex: 0 0 18px;
  width: 18px !important;
  height: 18px !important;
  min-height: 18px !important;
  margin: 0 !important;
  accent-color: var(--kmi-primary, #2367d1);
}

#workSiteForm .worksite-check > span {
  display: inline-flex;
  min-height: 18px;
  align-items: center;
  line-height: 18px;
}

#workSiteForm .worksite-note {
  grid-column: 1 / -1;
}

@media (max-width: 650px) {
  #workSiteForm .worksite-check,
  #workSiteForm .worksite-note {
    grid-column: auto;
  }
}


/* PATCH 196: 업무사이트 전용 등록 탭 및 인쇄 문서 */
.worksite-print-detail .data-table th {
  width: 150px;
  white-space: nowrap;
}
.worksite-print-detail .data-table td {
  text-align: left;
  word-break: break-all;
}

.worksite-launch-steps {
  flex-wrap: wrap;
}

.worksite-launch-steps .btn {
  white-space: nowrap;
}

/* PATCH 197: 업무사이트 공통 주소 + 직원별 개인 접속정보 */
.worksite-credential-status,
.worksite-copy-cell,
.worksite-password-cell {
  display: flex;
  min-width: 0;
  align-items: center;
  justify-content: center;
  gap: 6px;
  flex-wrap: wrap;
}
.worksite-credential-status small {
  max-width: 150px;
  overflow: hidden;
  color: var(--kmi-slate-600, #526174);
  text-overflow: ellipsis;
  white-space: nowrap;
}
.worksite-user-card .panel-head span b {
  color: var(--kmi-primary, #2367d1);
}
.worksite-my-table td {
  vertical-align: middle;
}
.worksite-my-table td:nth-child(3) {
  text-align: left;
  word-break: break-all;
}
.worksite-copy-cell > span,
.worksite-password-cell > span {
  min-width: 76px;
  font-weight: 700;
}
.worksite-site-summary {
  display: grid;
  gap: 5px;
  padding: 13px 14px;
  border: 1px solid #dce5ef;
  border-radius: 10px;
  background: #f7f9fc;
}
.worksite-site-summary b {
  color: #16365f;
  font-size: 15px;
}
.worksite-site-summary span,
.worksite-site-summary small {
  color: #667085;
  line-height: 1.45;
  word-break: break-all;
}
.worksite-credential-form .worksite-check {
  display: flex !important;
  min-height: 42px;
  margin: 0;
  align-items: center !important;
  gap: 9px;
}
.worksite-credential-form .worksite-check input[type="checkbox"] {
  width: 18px !important;
  height: 18px !important;
  min-height: 18px !important;
  margin: 0 !important;
}
@media (max-width: 850px) {
  .worksite-my-table {
    min-width: 980px;
  }
}


/* PATCH 198 - subcontract module, aligned with existing enterprise UI */
.subcontract-tabs{margin-bottom:18px}
.subcontract-dashboard-grid{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(300px,.75fr);gap:18px;margin-top:18px}
.subcontract-vendor-summary{display:grid;gap:8px;padding-top:4px}
.subcontract-vendor-summary>div{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:42px;padding:9px 12px;border:1px solid var(--line,#dbe3ef);border-radius:10px;background:#fff}
.subcontract-vendor-summary span{font-weight:700;color:#334155}
.subcontract-vendor-summary b{color:#0f4c81;white-space:nowrap}
.subcontract-date-metric{font-size:24px!important;letter-spacing:-.04em}
.subcontract-toolbar input{min-width:330px;flex:1}
.subcontract-toolbar select{min-width:190px}
.subcontract-table td{vertical-align:middle}
.subcontract-table td.left{text-align:left}
.subcontract-file-button{display:inline-flex;flex-direction:column;align-items:flex-start;max-width:240px;border:0;background:transparent;color:#175aa8;font-weight:800;cursor:pointer;text-align:left;padding:3px 0}
.subcontract-file-button:hover{text-decoration:underline}
.subcontract-file-button small{display:block;color:#64748b;font-weight:600;margin-top:2px}
.subcontract-form-grid>label{align-self:start}
.subcontract-form-grid input,.subcontract-form-grid select{min-height:44px}
.subcontract-form-grid textarea{min-height:105px}
.subcontract-selected-file{display:flex;align-items:center;gap:12px;min-height:46px;margin-top:14px;padding:10px 14px;border:1px dashed #b8c7dc;border-radius:10px;background:#f8fafc;color:#64748b}
.subcontract-selected-file b{color:#173b67}
.subcontract-selected-file span{margin-left:auto;font-size:12px}
.subcontract-version-list{display:grid;gap:10px}
.subcontract-version-card{display:grid;grid-template-columns:minmax(180px,.55fr) minmax(0,1.45fr);gap:14px;align-items:center;padding:13px 14px;border:1px solid #dbe3ef;border-radius:12px;background:#fff}
.subcontract-version-card>div:first-child{display:grid;gap:4px}
.subcontract-version-card>div:first-child b{font-size:15px;color:#143f70}
.subcontract-version-card>div:first-child span{font-size:12px;color:#64748b}
.subcontract-version-card p{margin:2px 0 0;color:#475569;font-size:13px}
.subcontract-version-card>div:last-child{display:flex;justify-content:flex-end;align-items:center;gap:7px;flex-wrap:wrap}
.subcontract-detail dl dd{white-space:pre-wrap}
@media(max-width:1050px){.subcontract-dashboard-grid{grid-template-columns:1fr}.subcontract-toolbar input{min-width:220px}.subcontract-version-card{grid-template-columns:1fr}.subcontract-version-card>div:last-child{justify-content:flex-start}}
@media(max-width:720px){.subcontract-toolbar input,.subcontract-toolbar select{width:100%;min-width:0}.subcontract-version-card{padding:11px}.subcontract-date-metric{font-size:20px!important}}


/* PATCH 199 - subcontract vendor management and simplified registration */
.subcontract-vendor-field{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center}
.subcontract-vendor-field select{width:100%;min-width:0}
.subcontract-vendor-field .btn{min-height:44px;white-space:nowrap}
.subcontract-vendor-manage{display:grid;gap:16px}
.subcontract-vendor-add{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:end}
.subcontract-vendor-add label{display:grid;gap:7px;font-weight:700;color:#334155}
.subcontract-vendor-add input{min-height:44px}
.subcontract-vendor-add .btn{min-height:44px}
.subcontract-vendor-manage-list{display:grid;gap:8px;max-height:360px;overflow:auto;padding-right:3px}
.subcontract-vendor-manage-row{display:flex;align-items:center;justify-content:space-between;gap:14px;min-height:56px;padding:10px 12px;border:1px solid var(--line,#dbe3ef);border-radius:10px;background:#fff}
.subcontract-vendor-manage-row>div{display:grid;gap:3px}
.subcontract-vendor-manage-row b{color:#173b67}
.subcontract-vendor-manage-row span{font-size:12px;color:#64748b}
.subcontract-vendor-manage-row .btn:disabled{opacity:.45;cursor:not-allowed}
@media(max-width:720px){.subcontract-vendor-field,.subcontract-vendor-add{grid-template-columns:1fr}.subcontract-vendor-field .btn,.subcontract-vendor-add .btn{width:100%}}


/* KMI PATCH 201 - Daily schedule location consolidation and exclusion roster */
.daily-planner-grid{display:grid;grid-template-columns:minmax(0,3fr) minmax(300px,1fr);gap:16px;align-items:start}
.daily-main-table-wrap{min-width:0;overflow:auto;border:1px solid #d8e0ec;border-radius:12px}
.daily-main-table{margin:0;border:0;border-radius:0;table-layout:fixed;width:100%}
.daily-main-table th:nth-child(1){width:52px}.daily-main-table th:nth-child(2){width:18%}.daily-main-table th:nth-child(3){width:13%}.daily-main-table th:nth-child(4){width:22%}.daily-main-table th:nth-child(5){width:23%}.daily-main-table th:nth-child(6){width:76px}.daily-main-table th:nth-child(7){width:180px}
.daily-main-table td,.daily-main-table th{text-align:center;vertical-align:middle;white-space:normal;overflow-wrap:anywhere;word-break:keep-all}
.daily-main-table .daily-manage-actions{display:flex;width:100%;justify-content:center;align-items:center;gap:6px;margin:0;flex-wrap:wrap}
.daily-exclusion-panel{border:1px solid #d8e0ec;border-radius:12px;overflow:hidden;background:#fff;min-width:0}
.daily-exclusion-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;background:#f6f8fc;border-bottom:1px solid #d8e0ec}
.daily-exclusion-head h3{margin:0;font-size:15px;color:#10213d}.daily-exclusion-head span{display:block;margin-top:3px;font-size:11px;color:#71809a}.daily-exclusion-head>b{white-space:nowrap;font-size:13px;color:#1f5fc7}
.daily-exclusion-panel .table-wrap{border:0;border-radius:0;max-height:420px;overflow:auto}
.daily-exclusion-table{width:100%;border-collapse:collapse;table-layout:fixed}.daily-exclusion-table th,.daily-exclusion-table td{padding:12px 10px;border-bottom:1px solid #e3e8f1;text-align:center;vertical-align:middle}.daily-exclusion-table th{background:#fbfcfe;font-size:12px;color:#52627c}.daily-exclusion-table th:first-child{width:38%}.daily-exclusion-table td{font-size:13px}.daily-exclusion-table tbody tr:last-child td{border-bottom:0}
@media(max-width:1280px){.daily-planner-grid{grid-template-columns:1fr}.daily-exclusion-panel .table-wrap{max-height:none}}
@media print{.daily-planner-grid{display:block}.daily-exclusion-panel{margin-top:12px}.daily-main-table th:nth-child(7),.daily-main-table td:nth-child(7){display:none}}

/* KMI PATCH 202 - Fit daily schedule and exclusion roster in one desktop view */
@media screen and (min-width:1281px){
  .daily-planner-grid{
    grid-template-columns:minmax(0,4.2fr) minmax(260px,1fr);
    gap:12px;
  }
  .daily-main-table-wrap{
    overflow-x:hidden;
  }
  .daily-main-table th:nth-child(1){width:40px}
  .daily-main-table th:nth-child(2){width:12%}
  .daily-main-table th:nth-child(3){width:12%}
  .daily-main-table th:nth-child(4){width:20%}
  .daily-main-table th:nth-child(5){width:24%}
  .daily-main-table th:nth-child(6){width:58px}
  .daily-main-table th:nth-child(7){width:142px}
  .daily-main-table th,
  .daily-main-table td{
    padding:8px 7px!important;
  }
  .daily-main-table .daily-manage-actions{
    min-width:0;
    gap:4px;
  }
  .daily-main-table .daily-manage-actions button{
    min-height:30px;
    padding:0 7px;
    font-size:9px;
  }
}


/* KMI PATCH 203 - Uniform daily schedule body text weight */
.daily-main-table tbody td:nth-child(2){font-weight:400}


/* KMI PATCH 204 - HR leave management linked to daily schedule exclusions */
.hr-leave-panel{margin-top:18px}
.hr-leave-toolbar input{min-width:250px;flex:1}
.hr-leave-toolbar select{min-width:132px}
.hr-leave-table{table-layout:fixed;min-width:1120px}
.hr-leave-table th:nth-child(1){width:52px}
.hr-leave-table th:nth-child(2){width:125px}
.hr-leave-table th:nth-child(3){width:100px}
.hr-leave-table th:nth-child(4){width:88px}
.hr-leave-table th:nth-child(5),.hr-leave-table th:nth-child(6){width:105px}
.hr-leave-table th:nth-child(7){width:82px}
.hr-leave-table th:nth-child(8){width:90px}
.hr-leave-table th:nth-child(10){width:120px}
.hr-leave-table td{vertical-align:middle}
.hr-leave-table td.left{text-align:left;white-space:normal;word-break:keep-all}
.hr-leave-form select,.hr-leave-form input{min-height:44px}
.hr-leave-link-note{display:flex;align-items:flex-start;gap:12px;padding:12px 14px;border:1px solid #cdddf4;border-radius:10px;background:#f5f8fe;color:#53627a;line-height:1.45}
.hr-leave-link-note b{flex:0 0 auto;color:#1d5fbf}
.hr-leave-link-note span{font-size:12px}
@media(max-width:900px){.hr-leave-toolbar input,.hr-leave-toolbar select{width:100%;min-width:0}.hr-leave-link-note{display:grid;gap:4px}}


/* KMI PATCH 205 - Vacation approval integration and HR dashboard refresh */
.ap-leave-fields{margin-top:4px;padding:16px;border:1px solid #cdddf4;border-radius:12px;background:#f7f9fd}
.ap-leave-fields-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}
.ap-leave-fields-head h4{margin:0 0 4px;color:#12345d;font-size:15px}.ap-leave-fields-head p{margin:0;color:#66758e;font-size:11px;line-height:1.45}.ap-leave-fields-head>span{padding:5px 9px;border-radius:999px;background:#e7effd;color:#1f5fc7;font-size:10px;font-weight:800;white-space:nowrap}
.ap-leave-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.ap-leave-grid label{display:grid;gap:6px;font-size:11px;font-weight:700;color:#40516d}.ap-leave-grid input,.ap-leave-grid select{min-height:42px}.ap-leave-grid .span2{grid-column:1/-1}
.ap-leave-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0;margin:16px 0;border:1px solid #cfd8e6;border-radius:10px;overflow:hidden;background:#fff}.ap-leave-summary>div{display:grid;grid-template-columns:110px minmax(0,1fr);border-right:1px solid #dce3ee;border-bottom:1px solid #dce3ee}.ap-leave-summary>div:nth-child(even){border-right:0}.ap-leave-summary>div:nth-last-child(-n+2){border-bottom:0}.ap-leave-summary>div.span2{grid-column:1/-1;border-right:0;border-bottom:0}.ap-leave-summary span{padding:11px;background:#f4f7fb;color:#53627b;font-size:11px;font-weight:800}.ap-leave-summary b{padding:11px;color:#16253c;font-size:12px;font-weight:600}
.hr-leave-table .cell-sub{margin-top:4px;color:#2c67bf;font-weight:700}
@media(max-width:800px){.ap-leave-grid,.ap-leave-summary{grid-template-columns:1fr}.ap-leave-summary>div{border-right:0}.ap-leave-summary>div:nth-last-child(-n+2){border-bottom:1px solid #dce3ee}.ap-leave-summary>div:last-child{border-bottom:0}.ap-leave-fields-head{display:grid}.ap-leave-fields-head>span{justify-self:start}}

/* KMI PATCH 206 - WORK COMPLETION REPORT */
.work-completion-form{margin:0}.work-completion-toolbar{justify-content:flex-end;position:sticky;top:0;z-index:5;background:#f4f7fb;padding:8px 0;gap:8px}.work-completion-toolbar .btn{min-height:var(--kmi-control);padding:0 14px;font-size:11px;border-radius:9px}.work-completion-sheet{width:min(100%,760px);margin:0 auto 22px;background:#fff;color:#111;font-family:'Malgun Gothic',Arial,sans-serif;font-size:10.5px;box-shadow:0 6px 20px rgba(15,35,63,.07)}.work-completion-title,.work-completion-section-title{background:#0d5269;color:#fff;border:1px solid #111;font-weight:800}.work-completion-title{text-align:center;font-size:16px;padding:5px 8px;margin-bottom:3px;letter-spacing:.01em}.work-completion-section-title{font-size:12px;padding:3px 8px;margin-top:5px}.work-completion-table{width:100%;border-collapse:collapse;table-layout:fixed}.work-completion-table th,.work-completion-table td{border:1px solid #333;text-align:center;vertical-align:middle;padding:0;background:#fff}.work-completion-table th{background:#d9d9d9;font-weight:800;padding:3px 4px;line-height:1.25}.work-completion-table .label{width:13%}.work-completion-summary .summary-label{width:22%}.work-completion-detail .no{width:6%}.work-completion-detail .wide{width:44%}.work-completion-detail .owner{width:17%}.work-completion-detail .target{width:17%}.work-completion-confirm .confirm-role{width:20%}.work-completion-confirm .confirm-date{width:25%}.work-completion-confirm .confirm-sign{width:27%}.work-completion-table input,.work-completion-table textarea,.work-completion-table select{display:block;width:100%;min-width:0;border:0!important;border-radius:0!important;outline:0;background:#fff;color:#111;font:inherit;font-weight:500;text-align:center;box-shadow:none!important}.work-completion-table input,.work-completion-table select{height:28px;padding:3px 5px}.work-completion-table textarea{min-height:30px;padding:5px 6px;resize:vertical;text-align:left;line-height:1.35}.work-completion-meta td{height:28px}.work-completion-summary textarea{min-height:34px}.work-completion-detail td{height:30px}.work-completion-detail textarea{height:30px;min-height:30px;resize:none}.work-completion-confirm td{height:42px}.work-completion-signature-editor{display:flex;align-items:center;justify-content:center;gap:4px;min-height:40px;padding:3px}.work-completion-signature-preview{width:62px;height:28px;border:1px dashed #b8c3d1;display:grid;place-items:center;overflow:hidden;color:#7c899a;font-size:9px;background:#fafbfd}.work-completion-signature-preview img{max-width:100%;max-height:100%;object-fit:contain}.work-completion-signature-button,.work-completion-signature-clear{min-height:28px!important;height:28px!important;padding:0 7px!important;border-radius:7px!important;font-size:9px!important;white-space:nowrap;cursor:pointer}.work-completion-signature-button input{display:none}.work-completion-pre{display:block;text-align:left;white-space:pre-wrap;padding:4px 6px}.work-completion-signature-print{max-width:90px;max-height:30px;object-fit:contain}.work-completion-signature-empty{display:block;height:28px}.work-completion-recent{display:grid;gap:8px}.work-completion-recent>button{border:1px solid #d9e1eb;border-radius:8px;background:#fff;padding:11px 12px;display:flex;align-items:center;justify-content:space-between;text-align:left}.work-completion-recent>button:hover{border-color:#2f67dd;background:#f6f9ff}.work-completion-recent span{display:grid;gap:3px}.work-completion-recent small{color:#68778a}.work-completion-recent em{font-style:normal;color:#315784;font-weight:800}.work-completion-guide{display:grid;gap:11px}.work-completion-guide p{margin:0;color:#53647a}.work-completion-guide p b{display:inline-grid;place-items:center;width:23px;height:23px;border-radius:50%;background:#e9f0ff;color:#245fc7;margin-right:7px}.work-completion-import{display:grid;gap:10px}.work-completion-import>input{height:40px;border:1px solid #ced8e5;border-radius:7px;padding:0 12px}.work-completion-import>div{display:grid;gap:7px;max-height:470px;overflow:auto}.work-completion-import button{border:1px solid #d6dee9;border-radius:7px;background:#fff;padding:10px 12px;text-align:left;display:grid;gap:4px}.work-completion-import button:hover{border-color:#2f67dd;background:#f4f8ff}.work-completion-import button span{font-size:12px;color:#68778a}
@media(max-width:1100px){.work-completion-sheet{width:min(100%,720px);font-size:10px}.work-completion-signature-editor{flex-wrap:wrap}.work-completion-signature-preview{width:58px}}
@media(max-width:760px){.work-completion-toolbar{position:static;justify-content:flex-start}.work-completion-form{overflow-x:auto;padding-bottom:10px}.work-completion-sheet{min-width:700px;width:700px;box-shadow:none}.work-completion-title{font-size:15px}.work-completion-section-title{font-size:11px}}


/* PATCH 209: Work completion report uses the same neutral white action buttons as existing modules. */
#workCompletionBody .btn:not(.danger),
#workCompletionBody button.btn:not(.danger),
#workCompletionBody .toolbar > .btn:not(.danger),
#workCompletionBody .panel-actions > .btn:not(.danger),
#workCompletionBody .form-actions > .btn:not(.danger) {
  border-color: #d2dce8 !important;
  color: var(--kmi-slate-700) !important;
  background: #ffffff !important;
  box-shadow: 0 1px 2px rgba(17, 39, 70, 0.03) !important;
}
#workCompletionBody .btn:not(.danger):hover,
#workCompletionBody button.btn:not(.danger):hover {
  border-color: #b6c4d6 !important;
  color: var(--kmi-slate-950) !important;
  background: var(--kmi-slate-050) !important;
  box-shadow: 0 3px 9px rgba(17, 39, 70, 0.07) !important;
  filter: none !important;
}


/* PATCH 210: Compact work completion form, fixed employee fields, and linked electronic signatures. */
#workCompletionBody .work-completion-sheet{width:min(100%,980px);font-size:9.8px}
#workCompletionBody .work-completion-sheet{contain:layout paint;content-visibility:auto;contain-intrinsic-size:980px 980px}
#workCompletionBody .work-completion-table input,
#workCompletionBody .work-completion-table select{height:26px!important;min-height:26px!important;padding:2px 4px!important}
#workCompletionBody .work-completion-table textarea{height:28px!important;min-height:28px!important;padding:3px 5px!important;line-height:1.25!important;resize:none!important}
#workCompletionBody .work-completion-summary textarea{height:32px!important;min-height:32px!important;resize:vertical!important}
#workCompletionBody .work-completion-meta td{height:26px}
#workCompletionBody .work-completion-detail td{height:28px}
#workCompletionBody .work-completion-confirm td{height:34px}
#workCompletionBody .work-completion-table th{padding:2px 3px;line-height:1.2}
#workCompletionBody .work-completion-section-title{font-size:11px;padding:3px 7px;margin-top:4px}
#workCompletionBody .work-completion-title{font-size:15px;padding:4px 7px}
.work-completion-person-field{display:flex;align-items:stretch;width:100%;min-width:0;height:26px;overflow:hidden;background:#fff}
#workCompletionBody .work-completion-person-field>input[type="text"]{flex:1 1 auto;width:0!important;min-width:0!important;height:26px!important;min-height:26px!important;padding:2px 4px!important;background:#fff!important;color:#111!important;cursor:default!important;text-align:center!important;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}
.work-completion-person-field>input[type="hidden"]{display:none!important}
#workCompletionBody .work-completion-person-field>.btn{flex:0 0 38px;min-width:38px!important;width:38px!important;height:26px!important;min-height:26px!important;padding:0 2px!important;border-top:0!important;border-right:0!important;border-bottom:0!important;border-radius:0!important;font-size:8.5px!important;white-space:nowrap}
.work-completion-sign-date{display:grid;place-items:center;min-height:26px;color:#66758b;font-size:9px}
.work-completion-esign-status{display:inline-grid;place-items:center;min-width:72px;min-height:22px;padding:2px 6px;border:1px solid #d4dce7;border-radius:6px;background:#f7f9fc;color:#68778a;font-size:9px;font-weight:800;white-space:nowrap}
.work-completion-esign-status.is-signed{border-color:#b9d9c8;background:#eef8f2;color:#176b45}
.work-completion-esign-status.is-waiting{border-color:#ead7a9;background:#fff9eb;color:#8a6514}
.work-completion-esign-print{display:block;line-height:1.25;font-weight:800}.work-completion-esign-print small{font-size:7px;font-weight:500}
.work-completion-sign-requests{display:grid;gap:10px}.work-completion-sign-requests>p{margin:0 0 2px;color:#5b6a80;font-size:12px}.work-completion-sign-requests article{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px;border:1px solid #d8e1ec;border-radius:10px;background:#fff}.work-completion-sign-requests article>div{display:grid;gap:4px;min-width:0}.work-completion-sign-requests article b{color:#14243d}.work-completion-sign-requests article span{color:#66758b;font-size:11px}.work-completion-sign-requests article .btn{flex:0 0 auto}
@media(max-width:760px){#workCompletionBody .work-completion-sheet{min-width:760px;width:760px}.work-completion-person-field>.btn{flex-basis:38px;min-width:38px!important;width:38px!important}}


/* KMI PATCH 212 - WORK COMPLETION MANAGED FILTERS AND CENTERED INPUTS */
#workCompletionBody .work-completion-managed-field{display:flex;align-items:stretch;width:100%;min-width:0;height:26px;overflow:hidden;background:#fff}
#workCompletionBody .work-completion-managed-field>select{flex:1 1 auto;width:0!important;min-width:0!important;height:26px!important;min-height:26px!important;padding:2px 22px 2px 5px!important;text-align:center;text-align-last:center;background-color:#fff!important}
#workCompletionBody .work-completion-managed-field>.btn{flex:0 0 52px;min-width:52px!important;width:52px!important;height:26px!important;min-height:26px!important;padding:0 3px!important;border-top:0!important;border-right:0!important;border-bottom:0!important;border-radius:0!important;font-size:8.5px!important;white-space:nowrap}
#workCompletionBody .work-completion-table input.work-completion-manual-control,
#workCompletionBody .work-completion-table select{display:block;align-content:center;vertical-align:middle}
#workCompletionBody .work-completion-table textarea.work-completion-manual-textarea{height:auto!important;min-height:28px!important;padding:3px 5px!important;line-height:1.3!important;overflow:hidden!important;resize:none!important;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;box-sizing:border-box!important}
#workCompletionBody .work-completion-summary textarea.work-completion-manual-textarea{min-height:36px!important}
#workCompletionBody .work-completion-detail td{height:auto;min-height:28px}
#workCompletionBody .work-completion-summary td{height:auto;min-height:32px;vertical-align:middle}
.work-completion-option-manager .work-completion-option-add{display:flex;align-items:stretch;gap:8px;margin-top:6px}
.work-completion-option-manager .work-completion-option-add input{flex:1;min-width:0}
.work-completion-option-list{display:grid;gap:7px;margin-top:10px;max-height:350px;overflow:auto}
.work-completion-option-list>div{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 10px;border:1px solid #d8e1ec;border-radius:8px;background:#fff}
.work-completion-option-list>div>span{min-width:0;overflow-wrap:anywhere}
@media(max-width:760px){#workCompletionBody .work-completion-managed-field>.btn{flex-basis:48px;min-width:48px!important;width:48px!important;font-size:8px!important}}

/* PATCH 219: Stable work-completion editors. One visible editor only; left aligned and vertically centered. */
#workCompletionBody .work-completion-summary td{
  height:46px!important;
  min-height:46px!important;
  max-height:46px!important;
  padding:0!important;
  vertical-align:middle!important;
  overflow:hidden!important;
}
#workCompletionBody .work-completion-detail td{
  height:32px!important;
  min-height:32px!important;
  max-height:32px!important;
  padding:0!important;
  vertical-align:middle!important;
  overflow:hidden!important;
}
#workCompletionBody .work-completion-edit-wrap{
  display:flex!important;
  align-items:center!important;
  justify-content:flex-start!important;
  width:100%!important;
  height:100%!important;
  min-width:0!important;
  margin:0!important;
  box-sizing:border-box!important;
  overflow:hidden!important;
  background:#fff!important;
}
#workCompletionBody .work-completion-summary .work-completion-edit-wrap{
  min-height:46px!important;
  height:46px!important;
  padding:0 8px!important;
}
#workCompletionBody .work-completion-detail .work-completion-edit-wrap{
  min-height:32px!important;
  height:32px!important;
  padding:0 6px!important;
}
#workCompletionBody .work-completion-edit-value{
  display:block!important;
  width:100%!important;
  min-width:0!important;
  height:auto!important;
  min-height:16px!important;
  margin:0!important;
  padding:0!important;
  border:0!important;
  outline:0!important;
  background:transparent!important;
  color:#111!important;
  font:inherit!important;
  font-weight:500!important;
  line-height:16px!important;
  text-align:left!important;
  white-space:pre-wrap!important;
  overflow-wrap:anywhere!important;
  word-break:break-word!important;
  overflow-x:hidden!important;
  overflow-y:auto!important;
  box-sizing:border-box!important;
  scrollbar-width:thin;
}
#workCompletionBody .work-completion-summary .work-completion-edit-value{
  max-height:32px!important;
}
#workCompletionBody .work-completion-detail .work-completion-edit-value{
  max-height:16px!important;
}
#workCompletionBody .work-completion-detail input.work-completion-manual-control{
  display:block!important;
  width:100%!important;
  height:32px!important;
  min-height:32px!important;
  max-height:32px!important;
  margin:0!important;
  padding:0 6px!important;
  line-height:32px!important;
  text-align:left!important;
  box-sizing:border-box!important;
}
#workCompletionBody .work-completion-summary .work-completion-pre,
#workCompletionBody .work-completion-detail .work-completion-pre{
  min-height:100%!important;
  display:flex!important;
  align-items:center!important;
  justify-content:flex-start!important;
  text-align:left!important;
  padding:0 8px!important;
  white-space:pre-wrap!important;
  overflow-wrap:anywhere!important;
  word-break:break-word!important;
}


/* PATCH 221 - worklog list/register separation */
.worklog-register{padding:18px 4px 6px}
.worklog-register .section-title{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:18px}
.worklog-register .section-title h2{margin:0 0 5px;font-size:18px}
.worklog-register .section-title p{margin:0;color:var(--muted,#667085);font-size:13px}
.worklog-register-form{max-width:980px}
.worklog-register-form .form-actions{display:flex;justify-content:flex-end;gap:8px}
@media (max-width:760px){.worklog-register{padding:12px 0 4px}.worklog-register-form{grid-template-columns:1fr}.worklog-register-form .span2{grid-column:auto}}

/* PATCH 223 - 작업일보 목록 열 너비 및 줄바꿈 기준 */
.worklog-table-wrap {
  display: block;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  overflow-x: auto;
  overflow-y: visible;
  scrollbar-gutter: auto;
  overscroll-behavior-inline: contain;
  -webkit-overflow-scrolling: touch;
}

.worklog-list-table {
  width: 1322px;
  min-width: 100%;
  max-width: none;
  table-layout: fixed;
}

/* The common bulk selector is inserted at runtime. Reserve its own column so
   the worklog colgroup does not shift and hide the right-side manage buttons. */
.worklog-list-table col.kmi-select-col {
  width: 42px !important;
}

.worklog-list-table .worklog-col-date { width: 7%; }
.worklog-list-table .worklog-col-leader { width: 6%; }
.worklog-list-table .worklog-col-site { width: 9%; }
.worklog-list-table .worklog-col-equipment { width: 10%; }
.worklog-list-table .worklog-col-process { width: 6%; }
.worklog-list-table .worklog-col-duration { width: 7%; }
.worklog-list-table .worklog-col-content { width: 18%; }
.worklog-list-table .worklog-col-people { width: 10%; }
.worklog-list-table .worklog-col-status { width: 6%; }
.worklog-list-table .worklog-col-note { width: 9%; }
.worklog-list-table .worklog-col-manage { width: 12%; }

.worklog-list-table th,
.worklog-list-table td {
  box-sizing: border-box;
}

.worklog-list-table .worklog-nowrap,
.worklog-list-table .worklog-manage-cell {
  white-space: nowrap;
  word-break: keep-all;
}

.worklog-list-table .worklog-site-cell,
.worklog-list-table .worklog-note-cell {
  overflow: hidden;
  text-overflow: ellipsis;
}

.worklog-list-table .worklog-note-cell {
  white-space: normal;
  word-break: keep-all;
  overflow-wrap: anywhere;
  vertical-align: middle;
}

.worklog-list-table .worklog-note-text {
  display: -webkit-box;
  max-height: 4.5em;
  overflow: hidden;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
  line-clamp: 3;
  line-height: 1.5;
}

.worklog-list-table .worklog-equipment-cell b,
.worklog-list-table .worklog-equipment-cell small {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  word-break: keep-all;
}

.worklog-list-table .worklog-content-cell {
  text-align: left;
  white-space: normal;
  word-break: keep-all;
  overflow-wrap: anywhere;
  line-height: 1.5;
}

.worklog-list-table .worklog-people-cell {
  white-space: normal;
  word-break: keep-all;
  overflow-wrap: break-word;
}

#main .worklog-list-table .worklog-manage-cell {
  padding-right: 5px !important;
  padding-left: 5px !important;
}

#main .worklog-list-table .worklog-manage-cell .row-actions {
  display: flex !important;
  width: 100% !important;
  min-width: 0 !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 4px !important;
  flex-wrap: nowrap !important;
}

#main .worklog-list-table .worklog-manage-cell .row-actions > button {
  flex: 1 1 0 !important;
  width: auto !important;
  min-width: 0 !important;
  max-width: 46px !important;
  padding-right: 6px !important;
  padding-left: 6px !important;
  white-space: nowrap !important;
}

.worklog-list-table th:last-child,
.worklog-list-table td:last-child {
  position: sticky;
  right: 0;
  z-index: 2;
  background: #fff;
  box-shadow: none;
}

.worklog-list-table thead th:last-child {
  z-index: 3;
  background: #f5f7fb;
}

@media (max-width: 1180px) {
  .worklog-list-table {
    width: 1322px;
  }
}



/* PATCH 224: HR employment/career certificate issuance */
.hr-certificate-panel{overflow:hidden}
.hr-certificate-toolbar{grid-template-columns:minmax(280px,1fr) 190px auto auto;align-items:center}
.hr-certificate-company-line{display:flex;align-items:center;gap:10px;margin:0 0 14px;padding:10px 14px;border:1px solid #d8e1ed;border-radius:10px;background:#f8fafc;font-size:13px}
.hr-certificate-company-line span{color:#64748b}.hr-certificate-company-line b{color:#10233f}.hr-certificate-company-line em{margin-left:auto;font-style:normal;font-size:12px;color:#64748b}
.hr-certificate-table th,.hr-certificate-table td{vertical-align:middle}.hr-certificate-table td:nth-child(2){white-space:nowrap}.hr-certificate-table td:nth-child(7),.hr-certificate-table td:nth-child(8){text-align:left;white-space:normal;word-break:keep-all}
.hr-certificate-form textarea{min-height:74px}.hr-certificate-form label small{display:block;margin-top:4px;color:#75849a;font-size:11px}.hr-certificate-form-note{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid #dbe4ef;border-radius:10px;background:#f8fafc}.hr-certificate-form-note span{color:#64748b;font-size:12px}
.hr-certificate-stamp-setting{display:grid;grid-template-columns:minmax(180px,1fr) 150px auto;align-items:center;gap:16px;padding:14px;border:1px solid #d8e1ed;border-radius:12px;background:#f8fafc}.hr-certificate-stamp-setting small{display:block;margin-top:5px;color:#64748b}.hr-certificate-stamp-preview{height:96px;border:1px dashed #b8c5d5;border-radius:10px;background:#fff;display:grid;place-items:center;overflow:hidden;color:#7a8798;font-size:12px}.hr-certificate-stamp-preview img{max-width:88px;max-height:88px;object-fit:contain}
@media(max-width:1100px){.hr-certificate-toolbar{grid-template-columns:1fr 180px}.hr-certificate-toolbar .btn{width:100%}.hr-certificate-stamp-setting{grid-template-columns:1fr}.hr-certificate-stamp-preview{width:150px}}

/* PATCH 229: 기존 작업일보 기반 설비별 투입현황 */
.equipment-stats-toolbar{grid-template-columns:minmax(280px,1fr) auto;align-items:center}
.equipment-stats-toolbar>span{color:#64748b;font-size:13px;font-weight:700;white-space:nowrap}
.equipment-stats-table{min-width:1080px}
.equipment-stats-table th,.equipment-stats-table td{text-align:center;vertical-align:middle;word-break:keep-all}
.equipment-stats-table td:first-child{font-weight:700}
.worklog-duration-input{display:grid;grid-template-columns:minmax(70px,1fr) auto minmax(70px,1fr) auto;gap:7px;align-items:center}
.worklog-duration-input>span{color:#52647d;font-size:12px;font-weight:700}
.worklog-time-range{display:grid;grid-template-columns:minmax(110px,1fr) auto minmax(110px,1fr);gap:8px;align-items:center;width:100%}
.worklog-time-range>input{width:100%;min-width:0;margin:0!important}
.worklog-time-range>span{color:#52647d;font-size:13px;font-weight:800;text-align:center}
.worklog-people-action{grid-template-columns:minmax(0,1fr) 92px!important}
@media(max-width:720px){.worklog-time-range{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)}.worklog-people-action{grid-template-columns:minmax(0,1fr) 82px!important}}

/* PATCH 236: 구매 요청 상세 버튼 정렬 */
.purchase-detail > .modal-actions{
  grid-column:1 / -1 !important;
  display:flex !important;
  flex-direction:row !important;
  align-items:center !important;
  justify-content:flex-end !important;
  gap:8px !important;
  min-height:42px !important;
  margin-top:4px !important;
  padding:8px 0 0 !important;
  border:0 !important;
  background:transparent !important;
}

/* PATCH 237: 전체 모달 하단 버튼 가로 정렬 */
body #modal .modal-actions,
body .modal-overlay .modal-actions{
  display:flex !important;
  flex-direction:row !important;
  align-items:center !important;
  justify-content:flex-end !important;
  gap:8px !important;
  flex-wrap:wrap !important;
  width:100% !important;
}
body #modal .modal-actions > button,
body .modal-overlay .modal-actions > button{
  width:auto !important;
  flex:0 0 auto !important;
}

/* PATCH 239: 목록 선택 삭제 및 입고 엑셀 업로드 */
.kmi-select-col{width:42px!important;min-width:42px!important;text-align:center!important}
.kmi-select-col input{width:16px;height:16px;margin:0;accent-color:#e8a324}
.kmi-common-bulk-actions{display:flex;justify-content:flex-end;gap:8px;margin:0 0 10px}
.purchase-excel-import{display:grid;gap:14px}
.purchase-excel-import>label{display:grid;gap:7px;font-weight:700;color:#24364f}
.purchase-excel-import input[type=file]{min-height:42px;padding:8px;border:1px solid #ccd8e7;border-radius:9px;background:#fff}
.purchase-excel-preview{min-height:74px}
.purchase-excel-summary{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.purchase-excel-summary span{padding:8px 12px;border:1px solid #d8e1ed;border-radius:9px;background:#f8fafc;color:#64748b}
.purchase-excel-summary b{color:#10233f}
.purchase-excel-preview .table-wrap{max-height:340px}

/* PATCH 241: 통합 자료실 */
.nav-item .ico svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.nav-item[data-id="messenger"] .ico{display:grid;place-items:center}
.nav-item[data-id="messenger"] .messenger-menu-icon{width:19px;height:19px;overflow:visible;stroke-width:1.55}
.nav-item[data-id="messenger"] .messenger-menu-icon circle:not(.messenger-signal){fill:currentColor;stroke:none}
.nav-item[data-id="messenger"] .messenger-menu-icon .messenger-signal{fill:#f4a62a;stroke:#10233f;stroke-width:1.1}
.nav-item[data-id="messenger"].active .messenger-menu-icon .messenger-signal{fill:#ffc14f;stroke:#2564c1}
.integrated-library-metrics{grid-template-columns:repeat(4,minmax(0,1fr))}
.integrated-library-layout{display:grid;grid-template-columns:220px minmax(0,1fr);gap:16px;align-items:start}
.integrated-library-sidebar{position:sticky;top:12px;padding:12px;display:grid;gap:5px}
.integrated-library-sidebar h3{margin:14px 9px 4px;color:#718096;font-size:11px;letter-spacing:.08em}
.integrated-library-sidebar>button{width:100%;min-width:0;min-height:38px;display:flex;align-items:center;justify-content:space-between;gap:6px;border:0;border-radius:8px;padding:0 10px;background:transparent;color:#34455f;font-weight:700;text-align:left;cursor:pointer}
.integrated-library-department{display:grid;gap:3px}.integrated-library-department>button,.integrated-library-department-children>button{width:100%;min-width:0;min-height:38px;display:flex;align-items:center;justify-content:space-between;gap:6px;border:0;border-radius:8px;padding:0 10px;background:transparent;color:#34455f;font-weight:700;text-align:left;cursor:pointer}.integrated-library-department>button:hover,.integrated-library-department-children>button:hover{background:#f3f6fa}.integrated-library-department>button.active,.integrated-library-department-children>button.active{background:#fff4db;color:#8a5a00}.integrated-library-department-children{display:grid;gap:3px}.integrated-library-department.collapsed .integrated-library-department-children{display:none}.integrated-library-folder-toggle{display:inline-block;width:15px;margin-right:3px;color:#607089;font-style:normal;font-size:9px;text-align:center}.integrated-library-department button b{flex:0 0 26px;min-width:26px;padding:3px 5px;border-radius:999px;background:#edf2f7;color:#66758a;font-size:10px;text-align:center;white-space:nowrap}.integrated-library-department button[style*="--folder-depth"]{padding-left:calc(10px + var(--folder-depth)*12px)}
.integrated-library-sidebar>button:hover{background:#f3f6fa}.integrated-library-sidebar>button.active{background:#fff4db;color:#8a5a00}
.integrated-library-sidebar .integrated-library-folder-label{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.35}
.integrated-library-sidebar>button b{flex:0 0 26px;min-width:26px;padding:3px 5px;border-radius:999px;background:#edf2f7;color:#66758a;font-size:10px;text-align:center;white-space:nowrap}
.integrated-library-sidebar .integrated-library-folder-delete{display:inline-flex;flex:0 0 34px;width:34px;height:24px;align-items:center;justify-content:center;margin-left:0;padding:0;border:1px solid #efc3c3;border-radius:6px;background:#fff;color:#b43c3c;font-size:10px;line-height:1;white-space:nowrap;word-break:keep-all}
.integrated-library-sidebar .integrated-library-folder-delete:hover{background:#fff0f0;border-color:#dc8d8d}
.integrated-library-sidebar>button:has(.integrated-library-folder-delete)>b{margin-left:auto;margin-right:0}
.integrated-library-sidebar>button[style*="--folder-depth"]{padding-left:calc(10px + var(--folder-depth)*12px)}
.integrated-library-sidebar>small{padding:4px 10px;color:#8a96a7}
.integrated-library-sidebar .integrated-library-manage-folders{justify-content:center;margin-top:12px;border:1px solid #d3ddea;background:#fff}
.integrated-library-main{min-width:0}.integrated-library-main>.panel-head{margin-bottom:10px}
.integrated-library-tabs{margin:0 0 12px}.integrated-library-toolbar{grid-template-columns:minmax(260px,1fr) 180px}
.integrated-library-table{min-width:1180px}.integrated-library-table td{vertical-align:middle;text-align:center}.integrated-library-table td.left{text-align:left}
.integrated-library-file{display:flex;align-items:center;gap:10px;min-width:220px;text-align:left}.integrated-library-file>span:last-child{min-width:0}
.integrated-library-file b{display:block;max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#10233f}.integrated-library-file small{display:block;margin-top:3px;color:#7b8797;font-size:10px}
.integrated-library-file-icon{position:relative;flex:0 0 34px;width:34px;height:38px;border:1px solid #c8d4e2;border-radius:7px;background:#f4f7fb}
.integrated-library-file-icon:before{content:"";position:absolute;right:-1px;top:-1px;width:11px;height:11px;border-left:1px solid #c8d4e2;border-bottom:1px solid #c8d4e2;border-radius:0 6px 0 4px;background:#fff}
.integrated-library-file-icon i{position:absolute;left:8px;right:8px;bottom:9px;height:3px;border-radius:2px;background:#8292a8;box-shadow:0 -6px #8292a8}
.integrated-library-file-icon.image{background:#eef9f3;border-color:#abd7c0}.integrated-library-file-icon.image i{background:#2d9b67;box-shadow:0 -6px #2d9b67}
.integrated-library-file-icon.install{background:#fff4e6;border-color:#ebc38a}.integrated-library-file-icon.install i{background:#d48719;box-shadow:0 -6px #d48719}
.integrated-library-file-icon.archive{background:#f4efff;border-color:#cbbbe9}.integrated-library-file-icon.archive i{background:#7757b3;box-shadow:0 -6px #7757b3}
.integrated-library-file-icon.sheet{background:#eaf7ef;border-color:#add0ba}.integrated-library-file-icon.sheet i{background:#27804b;box-shadow:0 -6px #27804b}
.integrated-library-file-icon.document{background:#edf4ff;border-color:#b9cce8}.integrated-library-file-icon.document i{background:#3b6fa8;box-shadow:0 -6px #3b6fa8}
.integrated-library-folder-badge{display:inline-flex;padding:5px 9px;border-radius:999px;background:#f3f6fa;color:#52647d;font-weight:700;font-size:11px}
.integrated-library-description{display:block;max-width:320px;white-space:normal;word-break:keep-all}.integrated-library-tags{display:block;margin-top:4px;color:#2f6fa7}
.integrated-library-upload input[type=file]{padding:10px;border:1px dashed #aebdd0;border-radius:9px;background:#f8fafc}
.integrated-library-upload-progress{min-height:20px;display:flex;justify-content:space-between;gap:10px;color:#52647d}.danger-text{color:#ba3838}
.integrated-library-edit-file{display:flex;align-items:center;gap:12px;padding:12px;border:1px solid #dbe3ed;border-radius:10px;background:#f8fafc}.integrated-library-edit-file b,.integrated-library-edit-file small{display:block}.integrated-library-edit-file small{margin-top:4px;color:#77859a}
.integrated-library-folder-manager>p{margin:0 0 14px;color:#63738a}.integrated-library-folder-add{display:grid;grid-template-columns:1fr auto;gap:8px}.integrated-library-folder-create{display:grid;grid-template-columns:minmax(180px,1fr) minmax(180px,1fr) auto auto;gap:8px;align-items:end}.integrated-library-folder-create label{display:grid;gap:6px;color:#53657d;font-size:11px;font-weight:800}.integrated-library-folder-delete-selected:not(:disabled),#integratedLibraryDeleteFolder:not(:disabled){background:#fff3f3;border-color:#df9e9e;color:#ae3030}.integrated-library-folder-list{display:grid;gap:7px;margin-top:12px}.integrated-library-folder-list>div:not(.empty){display:flex;align-items:center;justify-content:space-between;padding:9px 11px 9px calc(11px + var(--folder-depth,0)*16px);border:1px solid #dbe3ed;border-radius:8px;background:#fff}
.integrated-library-image-preview{min-height:260px;max-height:65vh;display:grid;place-items:center;overflow:auto;background:#eef2f6;border-radius:10px}.integrated-library-image-preview img{max-width:100%;max-height:62vh;object-fit:contain}
@media(max-width:1100px){.integrated-library-layout{grid-template-columns:1fr}.integrated-library-sidebar{position:static;grid-template-columns:repeat(3,minmax(0,1fr))}.integrated-library-sidebar h3{grid-column:1/-1}.integrated-library-metrics{grid-template-columns:repeat(2,1fr)}}
@media(max-width:720px){.integrated-library-sidebar{grid-template-columns:repeat(2,minmax(0,1fr))}.integrated-library-metrics{grid-template-columns:1fr 1fr}.integrated-library-toolbar{grid-template-columns:1fr}.integrated-library-folder-create{grid-template-columns:1fr}}

/* PATCH 246: 교육일지 작성 · 전자서명 · 사진 8장 */
.training-journal-form{padding:18px;display:grid;gap:16px}
.training-journal-form-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-bottom:14px;border-bottom:1px solid #dbe3ed}
.training-journal-form-head h2{margin:0 0 4px;color:#10233f}.training-journal-form-head p{margin:0;color:#6c7b90}
.training-journal-section{padding:16px;border:1px solid #dbe3ed;border-radius:12px;background:#fff}.training-journal-section>h3,.training-journal-section .panel-head h3{margin:0;color:#183153}
.training-journal-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:14px;align-items:start}.training-journal-fields label{display:grid;gap:6px;color:#52647c;font-size:11px;font-weight:800;align-self:start}.training-journal-fields .span2{grid-column:1/-1}.training-journal-fields select,.training-journal-fields input{height:42px;min-height:42px}.training-journal-fields textarea{min-height:260px;line-height:1.65}
.training-journal-employees{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:12px}.training-journal-employees label{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;padding:9px 10px;border:1px solid #d7e0eb;border-radius:9px;background:#fff;cursor:pointer}.training-journal-employees label:has(input:checked){border-color:#e6a93b;background:#fff9ec}.training-journal-employees span b,.training-journal-employees span small{display:block}.training-journal-employees span small{margin-top:2px;color:#78869a;font-size:10px}.training-journal-employees em{font-style:normal;color:#9a6700;font-size:10px;font-weight:800}.training-journal-employees em.signed{color:#168052}
.training-journal-photo-section{outline:none}.training-journal-photo-section:focus{border-color:#e0a12e;box-shadow:0 0 0 3px rgba(224,161,46,.12)}.training-journal-photo-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:12px}.training-journal-photo-slot{position:relative;min-height:170px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:10px;border:1px dashed #b8c5d5;border-radius:10px;background:#f8fafc;text-align:center;overflow:hidden}.training-journal-photo-slot img{width:100%;height:125px;object-fit:contain;background:#fff;border-radius:6px}.training-journal-photo-slot span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#63738a;font-size:10px}.training-journal-photo-slot small{color:#8290a3;font-size:10px}.training-journal-photo-slot.filled{border-style:solid;background:#fff}.training-journal-sign-requests{display:grid;gap:10px}.training-journal-sign-requests>p{margin:0 0 4px;color:#64748b}.training-journal-sign-requests article{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px;border:1px solid #dbe3ee;border-radius:10px}.training-journal-sign-requests article div{display:grid;gap:4px}.training-journal-sign-requests article span{font-size:12px;color:#64748b}
.training-journal-photo-slot:nth-child(1),.training-journal-photo-slot:nth-child(5){position:relative}.training-journal-photo-slot:nth-child(1):before,.training-journal-photo-slot:nth-child(5):before{position:absolute;left:8px;top:8px;padding:3px 7px;border-radius:999px;background:#173f72;color:#fff;font-size:9px;font-weight:800;z-index:2}.training-journal-photo-slot:nth-child(1):before{content:'교육 사진 #1 · 4장 세트'}.training-journal-photo-slot:nth-child(5):before{content:'교육 사진 #2 · 4장 세트'}
.training-journal-photo-slot img{object-fit:cover!important;object-position:center!important}
.training-print-choice{grid-template-columns:minmax(0,1fr)!important;gap:16px!important}.training-print-choice>p,.training-print-choice>.print-document-number,.training-print-choice>.print-choice-buttons{grid-column:1/-1!important}.training-print-choice>.print-document-number{width:100%!important;margin:0!important}.training-print-choice>.print-document-number input{width:100%!important;min-width:0!important}.training-print-choice>.print-choice-buttons{display:flex!important;align-items:center!important;justify-content:flex-end!important;gap:8px!important;flex-wrap:nowrap!important}.training-print-choice>.print-choice-buttons .btn{white-space:nowrap!important}
@media(max-width:640px){.training-print-choice>.print-choice-buttons{flex-wrap:wrap!important}}
@media(max-width:1100px){.training-journal-employees,.training-journal-photo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.training-journal-form-head{align-items:flex-start;flex-direction:column}.training-journal-fields,.training-journal-employees,.training-journal-photo-grid{grid-template-columns:1fr}.training-journal-fields .span2{grid-column:auto}}

/* PATCH 225: 증명서 발급 직원 선택은 상단 단일 선택기로 통일 */
.hr-certificate-employee-choice{display:flex;align-items:center;gap:8px;min-height:42px;padding:4px 5px 4px 12px;border:1px solid #ccd8e7;border-radius:10px;background:#fff}
.hr-certificate-employee-choice>span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#10233f;font-weight:700}
.hr-certificate-employee-choice>.btn{flex:0 0 auto;height:34px}
.hr-certificate-option-manager .grid2{align-items:start}.hr-certificate-option-manager section{min-width:0;padding:14px;border:1px solid var(--line);border-radius:10px;background:#fff}.hr-certificate-option-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center}.hr-certificate-option-row input{width:100%;height:38px;border:1px solid #cfd8e3;border-radius:7px;padding:0 10px}.hr-certificate-option-manager>.modal-actions{margin-top:18px}
/* PATCH 276 - administrator account recovery and polished security audit */
.audit-panel>.panel-head{margin:0;padding:0 0 16px;border-bottom:1px solid #e0e7f0}
.audit-panel>.panel-head .panel-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.audit-toolbar{display:grid;grid-template-columns:150px 150px 180px 180px minmax(260px,1fr);gap:12px;align-items:end;margin:0;padding:16px 0;border-bottom:1px solid #e0e7f0}
.audit-toolbar label{display:grid;grid-template-rows:auto 42px;gap:7px;min-width:0;margin:0}
.audit-toolbar label>span{display:block;color:#52647c;font-size:11px;font-weight:800;line-height:1.2}
.audit-toolbar input,.audit-toolbar select{display:block;width:100%!important;height:42px!important;min-height:42px!important;margin:0!important;padding:0 12px!important;border:1px solid #cfd9e6!important;border-radius:9px!important;background:#fff!important;color:#14243c;box-sizing:border-box}
.audit-toolbar input:focus,.audit-toolbar select:focus{border-color:#3970d7!important;box-shadow:0 0 0 3px rgba(57,112,215,.12)!important;outline:none}
.audit-panel>.table-wrap{margin-top:14px;border:1px solid #dbe3ee;border-radius:10px}
.audit-table{min-width:1120px}
.audit-table th:nth-child(1){width:145px}.audit-table th:nth-child(2){width:130px}.audit-table th:nth-child(3){width:105px}.audit-table th:nth-child(4){width:140px}.audit-table th:nth-child(6){width:125px}.audit-table th:nth-child(7),.audit-table th:nth-child(8){width:80px}
.audit-table td.left{text-align:left;max-width:360px;white-space:normal;word-break:break-word}
.audit-panel .table-wrap{max-height:620px;overflow:auto}
.audit-panel .data-table thead{position:sticky;top:0;z-index:2}
@media(max-width:1150px){.audit-toolbar{grid-template-columns:repeat(4,minmax(0,1fr))}.audit-toolbar .audit-search{grid-column:1/-1}}
@media(max-width:900px){.audit-toolbar{grid-template-columns:1fr 1fr}.audit-toolbar .audit-search{grid-column:1/-1}.audit-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.audit-toolbar{grid-template-columns:1fr}.audit-toolbar .audit-search{grid-column:auto}.audit-metrics{grid-template-columns:1fr}}
/* PATCH 275 - employee account permission management */
.account-layout{display:grid;grid-template-columns:330px minmax(0,1fr);gap:18px;align-items:start}
.account-list-panel,.account-permission-panel{min-height:650px}
.account-user-list{display:grid;gap:7px;max-height:720px;overflow:auto;padding-right:4px}
.account-user-list>button{display:grid;grid-template-columns:38px minmax(0,1fr) auto;gap:10px;align-items:center;width:100%;padding:10px;border:1px solid #d8e1ed;border-radius:10px;background:#fff;color:#17263d;text-align:left}
.account-user-list>button:hover,.account-user-list>button.active{border-color:#3970d7;background:#eef4ff}
.account-user-list .avatar{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;background:#3269d3;color:#fff;font-weight:900}
.account-user-list span:nth-child(2){display:flex;flex-direction:column;min-width:0}.account-user-list b{font-size:13px}.account-user-list small{margin-top:3px;color:#718096;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.account-user-list em{font-style:normal}
.account-status-row{display:grid;grid-template-columns:180px 180px minmax(0,1fr);gap:12px;align-items:end;margin-bottom:14px;padding:13px;border:1px solid #dbe3ee;border-radius:10px;background:#f8fafc}
.account-status-row label{display:grid;gap:6px;font-size:12px;font-weight:800}.account-status-row>div{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.account-permission-wrap{max-height:620px;overflow:auto}
.account-permission-table{min-width:760px}.account-permission-table th,.account-permission-table td{text-align:center}.account-permission-table th:first-child{width:240px}.account-permission-table td:first-child{text-align:left}.account-permission-table input[type=checkbox]{width:18px;height:18px;accent-color:#3269d3}
.account-permission-note{display:flex;gap:12px;margin-top:14px;padding:12px 14px;border-radius:9px;background:#eef4fb;color:#51647c;font-size:12px}.account-permission-note b{color:#183354;white-space:nowrap}
.account-permission-head .panel-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.account-password-result{display:grid;gap:14px}.account-password-result>p,.account-password-result>small{margin:0}.account-password-result>div:not(.modal-actions){display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center}.account-password-result code{display:flex;align-items:center;min-height:44px;padding:0 14px;border:1px solid #cbd7e6;border-radius:9px;background:#f5f8fc;color:#17345d;font-size:18px;font-weight:900;letter-spacing:1px}
@media(max-width:1050px){.account-layout{grid-template-columns:1fr}.account-list-panel{min-height:0}.account-user-list{grid-template-columns:repeat(2,minmax(0,1fr));max-height:330px}.account-status-row{grid-template-columns:1fr 1fr}.account-status-row>div{grid-column:1/-1;justify-content:flex-start}}
@media(max-width:650px){.account-user-list{grid-template-columns:1fr}.account-status-row{grid-template-columns:1fr}}

/* PATCH 278 - completed groupware home dashboard */
.dashboard-welcome{position:relative;display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:18px;padding:24px 28px;border-radius:16px;overflow:hidden;background:linear-gradient(118deg,#102846 0%,#173c68 68%,#22558e 100%);box-shadow:0 12px 30px rgba(15,39,70,.14);color:#fff}
.dashboard-welcome:after{content:"";position:absolute;right:-75px;top:-120px;width:330px;height:330px;border:50px solid rgba(255,255,255,.045);border-radius:50%}
.dashboard-welcome>div{position:relative;z-index:1}.dashboard-welcome span{font-size:10px;font-weight:900;letter-spacing:.16em;color:#8fb8ea}.dashboard-welcome h1{margin:6px 0 7px;font-size:26px;letter-spacing:-.7px}.dashboard-welcome p{margin:0;color:#cad9eb;font-size:12px}
.dashboard-system-ok{min-width:170px;padding-left:18px;border-left:1px solid rgba(255,255,255,.2)}.dashboard-system-ok i{display:inline-block;width:8px;height:8px;margin-right:6px;border-radius:50%;background:#4fd69b;box-shadow:0 0 0 5px rgba(79,214,155,.12)}.dashboard-system-ok span,.dashboard-system-ok b{display:block}.dashboard-system-ok span{display:inline;font-size:9px;color:#a9c2df}.dashboard-system-ok b{margin-top:6px;font-size:13px}
.dashboard-kpis{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;margin-bottom:18px}.dashboard-kpis>button{position:relative;min-width:0;min-height:118px;padding:17px 17px 15px;border:1px solid #dbe3ed;border-radius:13px;background:#fff;text-align:left;color:#17283f;box-shadow:0 5px 16px rgba(21,45,76,.055);overflow:hidden}.dashboard-kpis>button:before{content:"";position:absolute;left:0;top:16px;bottom:16px;width:3px;border-radius:0 3px 3px 0;background:#e8a323}.dashboard-kpis>button:hover{transform:translateY(-1px);border-color:#bdcadb;box-shadow:0 9px 22px rgba(21,45,76,.1)}.dashboard-kpis span,.dashboard-kpis strong,.dashboard-kpis em{display:block}.dashboard-kpis span{font-size:11px;font-weight:800;color:#68788e}.dashboard-kpis strong{margin:9px 0 4px;font-size:25px;letter-spacing:-1px}.dashboard-kpis strong small{margin-left:3px;font-size:11px}.dashboard-kpis em{overflow:hidden;color:#8491a3;font-size:10px;font-style:normal;text-overflow:ellipsis;white-space:nowrap}
.dashboard-main-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(340px,.65fr);gap:16px}.dashboard-main-grid>.panel{min-width:0;padding:19px}.dashboard-main-grid .panel-head{margin-bottom:13px}.dashboard-main-grid .panel-head h2{margin:0 0 4px;font-size:15px}.dashboard-main-grid .panel-head span{font-size:10px}
.dashboard-schedule-list,.dashboard-alerts>div,.dashboard-activity>div,.dashboard-quick>div{display:grid;gap:8px}.dashboard-schedule-list>button{display:grid;grid-template-columns:42px minmax(0,1fr) minmax(120px,.55fr);gap:12px;align-items:center;width:100%;min-height:57px;padding:8px 11px;border:1px solid #e1e7ef;border-radius:9px;background:#fff;text-align:left;color:#263951}.dashboard-schedule-list>button:hover{border-color:#8eb0df;background:#f8fbff}.dashboard-schedule-list time{display:grid;place-items:center;width:34px;height:34px;border-radius:9px;background:#edf4fd;color:#2b67b5;font-size:11px;font-weight:900}.dashboard-schedule-list span b,.dashboard-schedule-list span small{display:block}.dashboard-schedule-list span small{margin-top:4px;color:#7b899b;font-size:10px}.dashboard-schedule-list em{overflow:hidden;color:#52647c;font-size:10px;font-style:normal;text-align:right;text-overflow:ellipsis;white-space:nowrap}
.dashboard-alerts>div>button{display:grid;grid-template-columns:9px minmax(0,1fr) auto;gap:11px;align-items:center;width:100%;min-height:56px;padding:9px 11px;border:1px solid #e1e7ef;border-radius:9px;background:#fff;text-align:left;color:#253a57}.dashboard-alerts button i{width:8px;height:8px;border-radius:50%;background:#3970d7}.dashboard-alerts button.orange i{background:#e6a12c}.dashboard-alerts button.red i{background:#d94b4b}.dashboard-alerts button span b,.dashboard-alerts button span small{display:block}.dashboard-alerts button span small{margin-top:4px;color:#7c8999;font-size:10px}.dashboard-alerts button em{font-size:10px;font-style:normal;font-weight:800;color:#4b70a1}
.dashboard-activity>div>button{display:grid;grid-template-columns:64px minmax(0,1fr) 76px;gap:10px;align-items:center;width:100%;min-height:50px;padding:8px 5px;border:0;border-bottom:1px solid #edf1f5;background:#fff;text-align:left;color:#263a55}.dashboard-activity>div>button:last-child{border-bottom:0}.dashboard-type{display:grid;place-items:center;height:24px;border-radius:12px;background:#edf4fd;color:#2d66ad;font-size:9px;font-weight:900}.dashboard-activity button span b,.dashboard-activity button span small{display:block}.dashboard-activity button span small{margin-top:3px;color:#8190a3;font-size:10px}.dashboard-activity time{text-align:right;color:#718095;font-size:9px}
.dashboard-quick>div{grid-template-columns:1fr 1fr}.dashboard-quick>div>button{display:grid;grid-template-columns:34px minmax(0,1fr) auto;gap:9px;align-items:center;min-height:59px;padding:9px;border:1px solid #e0e7f0;border-radius:10px;background:#fff;text-align:left;color:#263a55}.dashboard-quick>div>button:hover{border-color:#e4ad4f;background:#fffaf1}.dashboard-quick i{display:grid;place-items:center;width:32px;height:32px;border-radius:9px;background:#edf3fa}.dashboard-quick i:after{content:"";width:13px;height:13px;border:1.7px solid #456d9e;border-radius:3px}.dashboard-quick span b,.dashboard-quick span small{display:block}.dashboard-quick span small{margin-top:3px;color:#8190a3;font-size:9px}.dashboard-quick em{color:#d6901f;font-size:15px;font-style:normal}.dashboard-empty{display:grid;place-items:center;align-content:center;min-height:160px;padding:20px;border:1px dashed #ced8e5;border-radius:10px;background:#fafbfd;text-align:center;color:#748398}.dashboard-empty b,.dashboard-empty span{display:block}.dashboard-empty span{margin-top:6px;font-size:10px}.dashboard-empty.compact{min-height:90px}
.worksite-launch-dialog{display:grid;gap:15px}.worksite-launch-notice{display:grid;gap:5px;padding:13px 14px;border:1px solid #d8e3f1;border-radius:10px;background:#f4f8fd}.worksite-launch-notice b{color:#244a78;font-size:12px}.worksite-launch-notice span{color:#68788e;font-size:10px;line-height:1.6}.worksite-launch-dialog dl{display:grid;gap:9px;margin:0}.worksite-launch-dialog dl>div{display:grid;grid-template-columns:105px minmax(0,1fr);align-items:center;min-height:52px;border:1px solid #dce4ee;border-radius:9px;overflow:hidden}.worksite-launch-dialog dt{align-self:stretch;display:grid;place-items:center;margin:0;background:#f5f7fa;color:#52647b;font-size:11px;font-weight:800}.worksite-launch-dialog dd{display:flex;align-items:center;gap:7px;min-width:0;margin:0;padding:7px 9px}.worksite-launch-dialog dd>span{flex:1;min-width:0;overflow:hidden;color:#172b47;font-size:12px;font-weight:700;text-overflow:ellipsis;white-space:nowrap}
.dashboard-quick-manager{display:grid;gap:16px}.dashboard-quick-manager-head{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 15px;border:1px solid #d8e2ee;border-radius:10px;background:#f5f8fc}.dashboard-quick-manager-head div{display:grid;gap:4px}.dashboard-quick-manager-head b{color:#213b5d;font-size:13px}.dashboard-quick-manager-head span{color:#718198;font-size:10px}.dashboard-quick-manager-head em{flex:0 0 auto;padding:5px 9px;border-radius:14px;background:#e8f1fd;color:#2f67ab;font-size:10px;font-style:normal;font-weight:900}.dashboard-quick-selected{display:grid;gap:7px;max-height:310px;overflow:auto;padding-right:3px}.dashboard-quick-selected>div:not(.empty){display:grid;grid-template-columns:28px minmax(0,1fr) auto auto auto;gap:7px;align-items:center;min-height:54px;padding:8px 9px;border:1px solid #dce4ed;border-radius:9px;background:#fff}.dashboard-quick-selected i{display:grid;place-items:center;width:25px;height:25px;border-radius:7px;background:#edf3fb;color:#416c9f;font-size:10px;font-style:normal;font-weight:900}.dashboard-quick-selected span b,.dashboard-quick-selected span small{display:block}.dashboard-quick-selected span small{margin-top:3px;color:#8290a2;font-size:9px}.dashboard-quick-add{padding-top:3px;border-top:1px solid #e0e7ef}.dashboard-quick-add h3{margin:13px 0 9px;font-size:12px}.dashboard-quick-add>div{display:grid;grid-template-columns:1fr 1fr;gap:7px;max-height:230px;overflow:auto}.dashboard-quick-add button{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:50px;padding:8px 11px;border:1px solid #dfe6ef;border-radius:9px;background:#fff;color:#263a55;text-align:left}.dashboard-quick-add button:hover{border-color:#e3a43a;background:#fffaf1}.dashboard-quick-add button span b,.dashboard-quick-add button span small{display:block}.dashboard-quick-add button span small{margin-top:3px;color:#8491a2;font-size:9px}.dashboard-quick-add button em{color:#c47c0c;font-size:10px;font-style:normal;font-weight:900;white-space:nowrap}
@media(max-width:1350px){.dashboard-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:1050px){.dashboard-main-grid{grid-template-columns:1fr}}
@media(max-width:720px){.dashboard-welcome{align-items:flex-start;flex-direction:column}.dashboard-system-ok{padding:12px 0 0;border-left:0;border-top:1px solid rgba(255,255,255,.2)}.dashboard-kpis{grid-template-columns:1fr 1fr}.dashboard-schedule-list>button{grid-template-columns:38px minmax(0,1fr)}.dashboard-schedule-list em{grid-column:2;text-align:left}.dashboard-quick>div{grid-template-columns:1fr}}
@media(max-width:480px){.dashboard-kpis{grid-template-columns:1fr}.worksite-launch-dialog dl>div{grid-template-columns:1fr}.worksite-launch-dialog dt{padding:8px}.worksite-launch-dialog dd{flex-wrap:wrap}}
@media(max-width:620px){.dashboard-quick-selected>div:not(.empty){grid-template-columns:28px minmax(0,1fr) auto}.dashboard-quick-selected>div .btn{grid-row:2}.dashboard-quick-selected>div .btn[data-dashboard-quick-up]{grid-column:2}.dashboard-quick-add>div{grid-template-columns:1fr}}

/* PATCH 281 - global form, action and table alignment */
@media screen {
  #main .btn,
  #modal .btn,
  #main button:not(.tab):not(.nav-item),
  #modal button {
    box-sizing: border-box;
  }

  #main .btn,
  #modal .btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    min-height: 40px;
    margin: 0;
    line-height: 1.2;
    white-space: nowrap;
  }

  #main .toolbar {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px;
    margin: 0 0 14px;
  }

  #main .toolbar > input,
  #main .toolbar > select {
    min-height: 42px;
    margin: 0;
  }

  #main .panel-actions,
  #main .row-actions,
  #main .form-actions,
  #modal .modal-actions {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
  }

  #main .panel-actions,
  #main .form-actions,
  #modal .modal-actions {
    justify-content: flex-end;
  }

  #main .row-actions {
    justify-content: center;
  }

  #main table.data-table th,
  #main table.data-table td {
    vertical-align: middle;
    text-align: center;
  }

  #main table.data-table td.left,
  #main table.data-table th.left,
  #main table.data-table td[data-align="left"],
  #main table.data-table th[data-align="left"] {
    text-align: left;
  }

  #main table.data-table input[type="checkbox"] {
    display: block;
    margin: auto;
  }

  #main .kmi-common-bulk-actions {
    display: flex;
    justify-content: flex-end;
    align-items: center;
    gap: 8px;
    min-height: 42px;
    margin: 0 0 10px;
  }

  #main .form-grid > label,
  #modal .modal-form > label,
  #modal .approval-template-form > label {
    display: grid;
    grid-template-rows: auto minmax(42px, auto);
    align-content: start;
    gap: 7px;
    margin: 0;
  }

  #main .form-grid > label > input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),
  #main .form-grid > label > select,
  #modal .modal-form > label > input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),
  #modal .modal-form > label > select {
    width: 100%;
    height: 42px;
    min-height: 42px;
    margin: 0 !important;
  }

  #main .form-grid > label > textarea,
  #modal .modal-form > label > textarea {
    width: 100%;
    margin: 0 !important;
  }

  #main .kmi-input-action,
  #modal .kmi-input-action {
    width: 100%;
    min-width: 0;
    align-items: stretch;
    gap: 8px;
    margin-top: 0 !important;
  }

  #main .kmi-input-action > input,
  #modal .kmi-input-action > input {
    min-width: 0;
    margin: 0;
  }

  #main .kmi-input-action > .kmi-picker-trigger,
  #modal .kmi-input-action > .kmi-picker-trigger {
    flex: 0 0 auto;
    min-height: 40px;
    margin: 0;
  }

  /* 교육 등록 및 알림 기준 */
  #trainingForm {
    padding: 22px;
  }

  #trainingForm .training-form-head {
    align-items: center;
    gap: 18px;
    padding-bottom: 16px;
    margin-bottom: 18px;
    border-bottom: 1px solid #e1e7ef;
  }

  #trainingForm .training-form-grid {
    align-items: start;
    gap: 16px 14px;
  }

  #trainingForm .training-form-grid > label {
    display: grid;
    grid-template-rows: auto minmax(42px, auto);
    align-content: start;
    gap: 7px;
    margin: 0;
  }

  #trainingForm .training-form-grid input:not([type="checkbox"]):not([type="radio"]),
  #trainingForm .training-form-grid select {
    width: 100%;
    height: 42px;
    min-height: 42px;
    margin: 0;
  }

  #trainingForm .training-form-grid textarea {
    width: 100%;
    min-height: 92px;
    margin: 0;
  }

  #trainingForm .training-form-grid .check-label {
    display: flex;
    grid-template-rows: none;
    align-items: center;
    align-self: end;
    gap: 8px;
    min-height: 42px;
    padding: 0 12px;
    border: 1px solid #d8e1ed;
    border-radius: 9px;
    background: #f8fafc;
  }

  #trainingForm .training-form-grid .check-label input {
    margin: 0;
  }

  #trainingForm .training-required-field {
    display: grid;
    grid-template-rows: auto 42px;
    align-content: start;
    gap: 7px;
    margin: 0;
  }

  #trainingForm .training-required-control {
    display: flex;
    align-items: center;
    gap: 9px;
    min-height: 42px;
    padding: 0 12px;
    border: 1px solid #d8e1ed;
    border-radius: 9px;
    background: #f8fafc;
  }

  #trainingForm .training-required-control input {
    width: 17px;
    height: 17px;
    margin: 0;
  }

  #trainingForm .training-required-control b {
    font-size: 12px;
    line-height: 1;
  }

  #trainingForm .training-mode-switch {
    height: 42px;
  }

  #trainingForm .training-mode-switch label {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    min-width: 88px;
    height: 42px;
    padding: 0 13px;
    margin: 0;
    line-height: 1;
  }

  #trainingForm .training-mode-switch input {
    flex: 0 0 auto;
    width: 17px;
    height: 17px;
    margin: 0;
  }

  #trainingForm .training-mode-switch span {
    display: inline-flex;
    align-items: center;
    line-height: 1;
    white-space: nowrap;
  }

  #trainingForm .training-participants {
    margin-top: 24px;
    padding-top: 20px;
  }

  #trainingForm .training-participants .panel-head {
    align-items: center;
    gap: 16px;
  }

  #trainingForm .training-participants .panel-head > div:last-child {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
  }

  .training-alert-settings .panel-head {
    align-items: center;
    gap: 18px;
    padding-bottom: 14px;
    margin-bottom: 14px;
    border-bottom: 1px solid #e1e7ef;
  }

  .training-setting-grid {
    grid-template-columns: minmax(260px, 1.55fr) repeat(4, minmax(175px, 1fr)) auto;
    align-items: start;
    gap: 12px;
  }

  .training-setting-grid > label {
    min-width: 0;
    margin: 0;
  }

  .training-setting-grid input[type="text"],
  .training-setting-grid input:not([type]) {
    height: 42px;
    margin: 6px 0 0;
  }

  .training-setting-grid .toggle-row {
    min-height: 42px;
    height: 42px;
    margin: 18px 0 0;
    padding: 0 11px;
  }

  .training-setting-grid > .btn {
    height: 42px;
    margin-top: 18px;
  }

  /* 전자결재 결재선과 결재라인 설정 */
  .ap-line-row {
    grid-template-columns: 30px 92px minmax(190px, 1fr) 34px;
    align-items: center;
    gap: 8px;
    margin-bottom: 10px;
  }

  .ap-line-row > .kmi-input-action {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) 48px;
    width: 100% !important;
    height: 40px !important;
    gap: 0 !important;
  }

  .ap-line-row > .kmi-input-action > input,
  .ap-line-row > .kmi-input-action > .kmi-picker-trigger {
    height: 40px !important;
  }

  #approvalTemplateForm {
    gap: 16px;
  }

  #approvalTemplateForm .approval-template-head {
    min-height: 42px;
    gap: 12px;
  }

  #approvalTemplateForm #templateSteps {
    display: grid;
    gap: 9px;
  }

  #approvalTemplateForm .template-step {
    grid-template-columns: 30px 120px minmax(260px, 1fr) 36px 36px 36px;
    align-items: center;
    gap: 8px;
    width: 100%;
    margin: 0;
  }

  #approvalTemplateForm .template-step > .kmi-input-action {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 82px;
    gap: 8px;
    width: 100%;
  }

  #approvalTemplateForm .template-step select,
  #approvalTemplateForm .template-step input,
  #approvalTemplateForm .template-step button {
    height: 40px;
    min-height: 40px;
    margin: 0;
  }

  /* 자산 입출고 및 사진 영역 */
  .stock105-grid {
    gap: 18px !important;
  }

  .stock105-form .form-grid {
    align-items: start;
    gap: 14px;
  }

  .stock105-form .form-grid > label {
    display: grid;
    align-content: start;
    gap: 7px;
    margin: 0;
  }

  .stock105-form .form-grid input:not([type="checkbox"]),
  .stock105-form .form-grid select {
    min-height: 42px;
    margin: 0;
  }

  .stock105-form .kmi-input-action {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
  }

  .tool097-photo {
    display: grid;
    grid-template-columns: 1fr 1fr;
    align-items: center;
    gap: 10px;
  }

  .tool097-photo #tool097PhotoPreview {
    grid-column: 1 / -1;
    width: 100%;
    margin: 0;
  }

  .tool097-photo > .btn {
    width: 100%;
  }

  /* 케이블 관리 목록 */
  #c120Body > .toolbar {
    padding-bottom: 14px;
    border-bottom: 1px solid #dfe6ef;
  }

  #c120Body > .toolbar > input:first-child {
    flex: 1 1 320px;
    max-width: 520px;
  }

  #c120Body .kmi-common-bulk-actions {
    margin-top: 0;
  }

  #c120Body table.data-table th,
  #c120Body table.data-table td {
    text-align: center;
    vertical-align: middle;
  }

  #c120Body table.data-table td.c120-test-stage {
    height: 92px;
    padding-top: 12px;
    padding-bottom: 12px;
    text-align: center;
    vertical-align: middle;
  }

  #c120Body table.data-table td.c120-test-stage > b,
  #c120Body table.data-table td.c120-test-stage > small {
    display: block;
    width: 100%;
    margin: 0;
    text-align: center;
    line-height: 1.55;
  }

  #c120Body table.data-table td.c120-test-stage > small:first-of-type {
    margin-top: 4px;
  }

  #c120Body table.data-table .row-actions {
    justify-content: center;
    flex-wrap: nowrap;
  }

  #certBody .cert076-lv1-table td:last-child .btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    height: 40px;
    min-height: 40px;
    margin: 0 3px;
    padding-top: 0;
    padding-bottom: 0;
    vertical-align: middle;
    line-height: 1;
  }
}

@media screen and (max-width: 1400px) {
  .training-setting-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    align-items: end;
  }

  .training-setting-grid > label:first-child {
    grid-column: span 2;
  }

  .training-setting-grid .toggle-row,
  .training-setting-grid > .btn {
    margin-top: 0;
  }
}

@media screen and (max-width: 900px) {
  #trainingForm .training-form-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  #approvalTemplateForm .template-step {
    grid-template-columns: 30px 105px minmax(180px, 1fr) 34px;
  }

  #approvalTemplateForm .template-step [data-ts-up],
  #approvalTemplateForm .template-step [data-ts-down] {
    display: none;
  }
}

@media screen and (max-width: 720px) {
  #trainingForm .training-form-grid,
  .training-setting-grid {
    grid-template-columns: 1fr;
  }

  #trainingForm .training-form-grid .span2,
  .training-setting-grid > label:first-child {
    grid-column: auto;
  }

  #approvalTemplateForm .template-step {
    grid-template-columns: 30px 1fr 34px;
  }

  #approvalTemplateForm .template-step > select {
    grid-column: 2;
  }

  #approvalTemplateForm .template-step > .kmi-input-action {
    grid-column: 2;
  }
}

/* Keep summary labels and values on one visual center line after all legacy patches. */
main#main .metric,main#main .cards>.metric,main#main .cards.compact>.metric{display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;text-align:center!important}
main#main .metric>.label,main#main .metric>strong,main#main .metric>small{width:100%;margin-left:auto!important;margin-right:auto!important;text-align:center!important}

.account-create-toolbar{display:flex;align-items:center;gap:10px;margin:0 0 16px;padding:14px 16px;border:1px solid #d9e2ef;border-radius:14px;background:#fff;box-shadow:0 7px 20px rgba(20,42,74,.05)}

/* V20.7.37: 결재라인 수정창의 모든 입력·순서 컨트롤 기준선 통일 */
#modal #approvalTemplateForm > label:not(.toggle-row) {
  display: grid !important;
  grid-template-rows: 16px 42px !important;
  align-content: start !important;
  gap: 7px !important;
  margin: 0 !important;
}

#modal #approvalTemplateForm > label:not(.toggle-row) > input,
#modal #approvalTemplateForm > label:not(.toggle-row) > select {
  width: 100% !important;
  height: 42px !important;
  min-height: 42px !important;
  margin: 0 !important;
  box-sizing: border-box !important;
}

#modal #approvalTemplateForm .template-step {
  display: grid !important;
  grid-template-columns: 30px 120px minmax(260px, 1fr) 36px 36px 36px !important;
  align-items: center !important;
  column-gap: 8px !important;
  min-height: 40px !important;
}

#modal #approvalTemplateForm .template-step > span:first-child {
  display: grid !important;
  place-items: center !important;
  align-self: center !important;
  width: 30px !important;
  height: 30px !important;
  min-width: 30px !important;
  min-height: 30px !important;
  margin: 0 !important;
  padding: 0 !important;
}

#modal #approvalTemplateForm .template-step > select,
#modal #approvalTemplateForm .template-step > button,
#modal #approvalTemplateForm .template-step > .kmi-input-action,
#modal #approvalTemplateForm .template-step > .kmi-input-action > input,
#modal #approvalTemplateForm .template-step > .kmi-input-action > .kmi-picker-trigger {
  align-self: center !important;
  height: 40px !important;
  min-height: 40px !important;
  margin-top: 0 !important;
  margin-bottom: 0 !important;
  box-sizing: border-box !important;
}

#modal #approvalTemplateForm .template-step > .kmi-input-action {
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) 82px !important;
  gap: 8px !important;
  width: 100% !important;
  min-width: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
}

@media screen and (max-width: 900px) {
  #modal #approvalTemplateForm .template-step {
    grid-template-columns: 30px 105px minmax(180px, 1fr) 34px !important;
  }
}

@media screen and (max-width: 720px) {
  #modal #approvalTemplateForm .template-step {
    grid-template-columns: 30px minmax(0, 1fr) 34px !important;
  }
}
.account-create-toolbar>span{margin-left:auto;color:#64748b;font-size:13px}
.account-employee-source{display:grid;grid-template-columns:minmax(0,1fr);gap:7px;min-width:0}
.account-employee-source>span{display:block;white-space:nowrap;word-break:keep-all}
.account-employee-source>small{display:block;color:#718096;font-size:11px;font-weight:500;white-space:normal}
.account-employee-source>.kmi-input-action{display:grid!important;grid-template-columns:minmax(0,1fr) auto!important;width:100%;gap:8px}
.account-employee-source>.kmi-input-action>input{width:100%;min-width:0}
.account-employee-source>.kmi-input-action>.kmi-picker-trigger{position:static!important;min-width:92px;white-space:nowrap}
.account-continue-row{display:grid;gap:6px;padding:11px 13px;border:1px solid #dbe4ef;border-radius:10px;background:#f8fafc}
.account-continue-row>label{display:flex;align-items:center;gap:9px;margin:0;color:#34445b;font-size:12px;font-weight:800;cursor:pointer}
.account-continue-row input[type="checkbox"]{flex:0 0 auto;width:18px;height:18px;margin:0}
.account-continue-row>small{padding-left:27px;color:#718096;font-size:11px;line-height:1.45}
.account-bulk-filter{display:grid;grid-template-columns:minmax(0,1fr) 220px;gap:10px;margin-bottom:12px}
.account-bulk-filter input,.account-bulk-filter select{width:100%;height:42px;border:1px solid #cbd7e6;border-radius:10px;padding:0 12px;background:#fff}
.account-bulk-head{display:grid;grid-template-columns:1fr 1fr auto auto;gap:12px;align-items:end;margin-bottom:14px}
.account-bulk-head label{display:grid;gap:7px;font-size:13px;font-weight:700;color:#253956}
.account-bulk-list{max-height:52vh;overflow:auto;border:1px solid #dbe4ef;border-radius:12px}
.account-bulk-list>label{display:grid;grid-template-columns:auto minmax(150px,1fr) minmax(160px,auto);gap:12px;align-items:center;padding:12px 14px;border-bottom:1px solid #e8eef5;cursor:pointer}
.account-bulk-list>label:last-child{border-bottom:0}
.account-bulk-list>label:hover{background:#f7faff}
.account-bulk-list input{width:18px;height:18px}
.account-bulk-list span{display:grid;gap:3px}
.account-bulk-list small,.account-bulk-list em{color:#718096;font-size:12px;font-style:normal}
#accountCreateBulk .account-bulk-list>label.kmi-unified-employee-choice{display:grid!important;grid-template-columns:18px 112px minmax(0,1fr)!important;column-gap:12px!important;align-items:center!important;padding:10px 52px 10px 14px!important}
#accountCreateBulk .account-bulk-list>label.kmi-unified-employee-choice>input{grid-column:1}
#accountCreateBulk .account-bulk-list>label.kmi-unified-employee-choice>span{grid-column:2;min-width:0}
#accountCreateBulk .account-bulk-list>label.kmi-unified-employee-choice>span b,
#accountCreateBulk .account-bulk-list>label.kmi-unified-employee-choice>span small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#accountCreateBulk .account-bulk-list>label.kmi-unified-employee-choice>em{grid-column:3;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.account-create-summary{display:flex;gap:10px;margin-bottom:14px}
.account-create-summary>*{padding:8px 12px;border-radius:999px;background:#eef4ff;color:#174ea6}
.account-create-result code{font-size:14px;font-weight:800;color:#b45309;letter-spacing:.04em}
.account-create-result>p{margin:14px 0 0;color:#64748b;font-size:13px;line-height:1.6}
.account-create-errors{margin-top:12px;padding:10px 12px;border-radius:10px;background:#fff1f0;color:#b42318}
.account-create-errors p{margin:4px 0}
.kmi-required-password-overlay{position:fixed;inset:0;z-index:100000;display:grid;place-items:center;padding:20px;background:rgba(10,25,46,.72);backdrop-filter:blur(8px)}
.kmi-required-password-card{width:min(440px,100%);padding:34px;border-radius:22px;background:#fff;box-shadow:0 28px 80px rgba(0,0,0,.3)}
.kmi-required-password-mark{display:inline-grid;place-items:center;min-width:74px;height:42px;padding:0 12px;background:#163e59;color:#fff;font-size:22px;font-weight:900;font-style:italic;letter-spacing:-1px}
.kmi-required-password-card>small{display:block;margin:14px 0 8px;color:#c45716;font-size:11px;font-weight:800;letter-spacing:.13em}
.kmi-required-password-card h2{margin:0;color:#102641;font-size:25px}
.kmi-required-password-card>p{margin:10px 0 22px;color:#64748b;font-size:14px;line-height:1.65}
.kmi-required-password-card form,.kmi-required-password-card label{display:grid;gap:8px}
.kmi-required-password-card form{gap:15px}
.kmi-required-password-card label{color:#253956;font-size:13px;font-weight:700}
.kmi-required-password-card label span{color:#7b8797;font-size:11px;font-weight:400}
.kmi-required-password-card input{height:46px;padding:0 13px;border:1px solid #cbd7e6;border-radius:10px;font:inherit}
.kmi-required-password-card button{width:100%;height:48px;margin-top:3px}
.kmi-required-password-error{min-height:18px;color:#c4321c;font-size:13px;font-weight:700}

/* Messenger participant contact profile */
.messenger-member-open{width:100%;padding:5px;border:0;border-radius:10px;background:transparent;color:inherit;text-align:left;cursor:pointer}
.messenger-member-open:hover,.messenger-member-open:focus-visible{background:#edf4ff;outline:none}
.messenger-contact-card{display:grid;gap:16px}
.messenger-contact-profile{display:flex;align-items:center;gap:13px;padding:15px;border:1px solid #dbe5f1;border-radius:14px;background:#f7faff}
.messenger-contact-profile .messenger-avatar{flex:0 0 auto;width:52px;height:52px;border-radius:16px;font-size:16px}
.messenger-contact-profile h3{margin:0;color:#142d4c;font-size:18px}
.messenger-contact-profile p{margin:5px 0 0;color:#718096;font-size:12px}
.messenger-contact-list{overflow:hidden;border:1px solid #dbe5f1;border-radius:12px}
.messenger-contact-row{display:grid;grid-template-columns:100px minmax(0,1fr);align-items:center;gap:12px;padding:13px 15px;border-bottom:1px solid #e7edf4}
.messenger-contact-row:last-child{border-bottom:0}
.messenger-contact-row>span{color:#607087;font-size:12px;font-weight:800}
.messenger-contact-row>a,.messenger-contact-row>b{min-width:0;overflow-wrap:anywhere;color:#174f9c;font-size:13px}
.messenger-contact-row>em{color:#8b97a6;font-size:12px;font-style:normal}
.messenger-contact-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:8px}
.messenger-contact-actions .btn{margin:0}

@media screen and (max-width:720px){
 .account-create-toolbar{align-items:stretch;flex-direction:column}
 .account-create-toolbar>span{margin-left:0}
 .account-bulk-filter{grid-template-columns:1fr}
 .account-bulk-head{grid-template-columns:1fr 1fr}
 #accountCreateBulk .account-bulk-list>label.kmi-unified-employee-choice{grid-template-columns:18px minmax(0,1fr)!important}
 #accountCreateBulk .account-bulk-list>label.kmi-unified-employee-choice>span,
 #accountCreateBulk .account-bulk-list>label.kmi-unified-employee-choice>em{grid-column:2}
 .kmi-required-password-card{padding:25px 20px}
 .messenger-contact-row{grid-template-columns:72px minmax(0,1fr);padding:12px}
 .messenger-contact-actions{display:grid;grid-template-columns:1fr}
 .messenger-contact-actions .btn{width:100%;justify-content:center}
}

/* V20.7.14 mobile viewport and approval-line hardening */

/* V20.7.14 fixed calendar density and true weekly spanning bars. */
.schedule-calendar.connected-calendar{
  display:block;
  overflow:hidden;
  background:#dfe6ef;
}
.connected-calendar .calendar-week-row{
  position:relative;
  height:250px;
  overflow:hidden;
  background:#fff;
  border-bottom:1px solid #dfe6ef;
}
.connected-calendar .calendar-week-row:last-child{border-bottom:0}
.connected-calendar .calendar-week-days,
.connected-calendar .calendar-week-bars,
.connected-calendar .calendar-week-more{
  display:grid;
  grid-template-columns:repeat(7,minmax(0,1fr));
}
.connected-calendar .calendar-week-days{
  position:absolute;
  inset:0;
}
.connected-calendar .cal-day{
  min-height:0!important;
  height:250px;
  overflow:hidden;
  padding:8px 9px;
  border-right:1px solid #dfe6ef;
}
.connected-calendar .cal-day:last-child{border-right:0}
.connected-calendar .calendar-week-bars{
  position:absolute;
  z-index:2;
  top:34px;
  left:0;
  right:0;
  grid-template-rows:repeat(5,35px);
  row-gap:3px;
  pointer-events:none;
}
.connected-calendar .calendar-span-event{
  min-width:0;
  height:35px;
  width:auto;
  margin:0 3px;
  border:1px solid var(--event-color,#356fd1);
  border-left:4px solid var(--event-color,#356fd1);
  border-radius:7px;
  background:color-mix(in srgb,var(--event-color,#356fd1) 32%,#fff);
  padding-top:4px;
  padding-bottom:4px;
  pointer-events:auto;
  overflow:hidden;
}
.schedule-metrics{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))!important}
.schedule-rule-metric{appearance:none;text-align:left;cursor:pointer}
.schedule-rule-metric .label{display:flex;align-items:center;gap:7px}
.schedule-rule-metric .label i{width:11px;height:11px;border-radius:50%;flex:0 0 auto}
.schedule-rule-metric small{display:block;margin-top:5px;color:#718096}
.master-table-head.master-color-rule-grid,
.master-list.modern .master-row.master-color-rule-grid{
  display:grid!important;
  grid-template-columns:minmax(160px,1.1fr) minmax(190px,1.25fr) minmax(170px,.9fr) 96px!important;
  align-items:center!important;
  column-gap:20px!important;
}
.master-table-head.master-color-rule-grid>span,
.master-list.modern .master-row.master-color-rule-grid>*{
  min-width:0;
  margin:0!important;
}
.master-table-head.master-color-rule-grid>span{
  white-space:nowrap;
}
.master-table-head.master-color-rule-grid>span:last-child{
  text-align:center;
}
.master-list.modern .master-row.master-color-rule-grid .master-row-actions{
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  gap:8px!important;
  white-space:nowrap;
}
.connected-calendar .calendar-span-event b{
  font-size:clamp(9px,.72vw,11px);
}
.connected-calendar .calendar-span-event span{
  font-size:clamp(8px,.64vw,10px);
}
.connected-calendar .calendar-week-more{
  position:absolute;
  z-index:3;
  left:0;
  right:0;
  bottom:5px;
  pointer-events:none;
}
.connected-calendar .cal-more{
  margin:0 7px;
  height:22px;
  border:0;
  border-radius:6px;
  background:#eef4ff;
  color:#245fc7;
  font-size:10px;
  font-weight:800;
  cursor:pointer;
  pointer-events:auto;
}
@media(max-width:900px){
  .connected-calendar .calendar-week-row,
  .connected-calendar .cal-day{height:225px}
  .connected-calendar .calendar-week-bars{grid-template-rows:repeat(5,32px)}
  .connected-calendar .calendar-span-event{height:32px;margin:0 2px;padding-left:4px;padding-right:4px}
  .connected-calendar .calendar-span-event b{font-size:9px}
  .connected-calendar .calendar-span-event span{font-size:8px}
}
@media screen and (max-width:720px){
 html,body,.app-shell,.main-shell,.content,main#main{max-width:100%;overflow-x:hidden}
 main#main{min-width:0}
 main#main>*{min-width:0;max-width:100%;box-sizing:border-box}
 .modal-overlay{padding:8px}
 .modal-box{width:calc(100vw - 16px);max-width:calc(100vw - 16px);border-radius:12px}
 .modal-head{padding:0 14px}
 .modal-body{padding:14px;min-width:0;overflow-x:hidden}
 .modal-form,.modal-form>*,.form-grid,.form-grid>*,.grid2,.grid2>*{min-width:0;max-width:100%}
 input,select,textarea{max-width:100%;min-width:0;box-sizing:border-box}
 .table-wrap,.ap-table-wrap{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
 .ap-shell{max-width:100%;padding-left:8px;padding-right:8px}
 .ap-editor-grid>section,.approval-line-editor{min-width:0;padding:14px}
 .ap-card-head{align-items:flex-start;flex-direction:column;padding:15px}
 .ap-toolbar{width:100%;flex-wrap:wrap}
 .ap-toolbar input{width:100%;min-width:0}
 .ap-line-row{
   display:grid!important;
   grid-template-columns:30px minmax(0,1fr) 34px!important;
   grid-template-rows:auto auto;
   gap:7px!important;
   width:100%;
   min-width:0;
 }
 .ap-line-row>span{grid-column:1;grid-row:1/3;align-self:center}
 .ap-line-row>select{grid-column:2;grid-row:1;width:100%;min-width:0}
 .ap-line-row>input,
 .ap-line-row>.kmi-input-action{grid-column:2;grid-row:2;width:100%!important;min-width:0}
 .ap-line-row>button:last-child{grid-column:3;grid-row:1/3;align-self:center}
 .ap-line-row>.kmi-input-action{grid-template-columns:minmax(0,1fr) 48px!important}
 .modal-actions{flex-wrap:wrap}
}

/* Google Calendar import preview: keep ISO dates readable and give the title the remaining width. */
.google-calendar-import-wrap{
  max-height:520px;
  overflow:auto;
}
.google-calendar-import-table{
  width:100%;
  min-width:680px;
  table-layout:fixed;
}
.google-calendar-import-table .google-calendar-check-col{width:48px}
.google-calendar-import-table .google-calendar-date-col{width:112px}
.google-calendar-import-table .google-calendar-status-col{width:104px}
.google-calendar-import-table th:nth-child(2),
.google-calendar-import-table th:nth-child(3),
.google-calendar-import-table td:nth-child(2),
.google-calendar-import-table td:nth-child(3){
  white-space:nowrap!important;
  word-break:keep-all!important;
  overflow-wrap:normal!important;
  text-align:center!important;
}
.google-calendar-import-table th:first-child,
.google-calendar-import-table td:first-child,
.google-calendar-import-table th:last-child,
.google-calendar-import-table td:last-child{
  text-align:center!important;
}
.google-calendar-import-table td:nth-child(4){
  text-align:left!important;
  white-space:normal;
  word-break:keep-all;
}

/* Schedule list: prevent narrow columns from breaking dates and Korean labels vertically. */
.shared-schedule-list-wrap{overflow-x:auto}
.shared-schedule-list-table{width:100%;min-width:1500px;table-layout:fixed}
.shared-schedule-list-table .schedule-period-col{width:154px}
.shared-schedule-list-table .schedule-title-col{width:230px}
.shared-schedule-list-table .schedule-category-col{width:80px}
.shared-schedule-list-table .schedule-scope-col{width:92px}
.shared-schedule-list-table .schedule-owner-col{width:145px}
.shared-schedule-list-table .schedule-contact-col{width:150px}
.shared-schedule-list-table .schedule-location-col{width:112px}
.shared-schedule-list-table .schedule-display-col{width:112px}
.shared-schedule-list-table .schedule-status-col{width:88px}
.shared-schedule-list-table .schedule-note-col{width:auto}
.shared-schedule-list-table .schedule-actions-col{width:112px}
.shared-schedule-list-table th,
.shared-schedule-list-table td{word-break:keep-all}
.shared-schedule-list-table .schedule-note-cell{text-align:left}
.shared-schedule-list-table .schedule-note-cell.is-short{text-align:center}
.shared-schedule-list-table th:nth-child(1),
.shared-schedule-list-table td:nth-child(1),
.shared-schedule-list-table th:nth-child(3),
.shared-schedule-list-table td:nth-child(3),
.shared-schedule-list-table th:nth-child(4),
.shared-schedule-list-table td:nth-child(4),
.shared-schedule-list-table th:nth-child(5),
.shared-schedule-list-table td:nth-child(5),
.shared-schedule-list-table th:nth-child(6),
.shared-schedule-list-table td:nth-child(6),
.shared-schedule-list-table th:nth-child(7),
.shared-schedule-list-table td:nth-child(7),
.shared-schedule-list-table th:nth-child(8),
.shared-schedule-list-table td:nth-child(8),
.shared-schedule-list-table th:nth-child(9),
.shared-schedule-list-table td:nth-child(9),
.shared-schedule-list-table th:nth-child(11),
.shared-schedule-list-table td:nth-child(11){white-space:nowrap}
.shared-schedule-list-table td:nth-child(2),
.shared-schedule-list-table td:nth-child(10){overflow-wrap:break-word}
.schedule-list-count{margin-left:auto;color:var(--muted);font-weight:700;white-space:nowrap}
.schedule-list-pager{display:flex;align-items:center;justify-content:center;gap:12px;padding:18px 0 2px}
.schedule-list-pager span{min-width:76px;text-align:center;font-weight:800}

/* Calendar event details inspired by the familiar Google Calendar reading flow. */
.schedule-detail-title{display:flex;align-items:flex-start;margin-bottom:18px}
.schedule-detail-title h3{margin:0;font-size:20px;line-height:1.4;word-break:keep-all}
.schedule-detail dl{margin:0;display:grid;gap:0;border:1px solid var(--line);border-radius:14px;overflow:hidden}
.schedule-detail dl>div{display:grid;grid-template-columns:120px minmax(0,1fr);border-bottom:1px solid var(--line)}
.schedule-detail dl>div:last-child{border-bottom:0}
.schedule-detail dt,.schedule-detail dd{margin:0;padding:12px 14px}
.schedule-detail dt{font-weight:700;background:#f7f9fc}
.schedule-detail dd{white-space:pre-wrap;word-break:keep-all;overflow-wrap:anywhere}
.schedule-detail .modal-actions{margin-top:18px}
@media(max-width:640px){
  .schedule-detail dl>div{grid-template-columns:92px minmax(0,1fr)}
  .schedule-detail dt,.schedule-detail dd{padding:10px}
}

@media(max-width:720px){
  .schedule-panel{overflow:hidden}
  .calendar-week,
  .schedule-calendar.connected-calendar{width:auto;min-width:0;margin-left:4px;margin-right:4px}
  .calendar-week b{padding-left:0;padding-right:0;font-size:10px}
  .connected-calendar .cal-day{padding:7px 4px}
  .connected-calendar .cal-date{font-size:10px}
  .connected-calendar .calendar-span-event{margin-left:1px;margin-right:1px;border-left-width:2px}
  .connected-calendar .calendar-span-event b{font-size:clamp(7px,2.2vw,9px)}
  .connected-calendar .calendar-span-event span{display:none}
  .connected-calendar .cal-more{margin:0 2px;padding:0 1px;font-size:8px}
}

/* V20.7.62: consistent vertical scrolling for every page and dialog. */
html{
  min-height:100%;
  overflow-x:hidden;
  overflow-y:auto;
  scrollbar-gutter:stable;
}
body:not(.kmi-modal-open):not(.kmi-sidebar-open){
  min-height:100vh;
  min-height:100dvh;
  height:auto!important;
  overflow-x:hidden!important;
  overflow-y:auto!important;
  overscroll-behavior-y:auto;
}
body:not(.kmi-modal-open):not(.kmi-sidebar-open) #app,
body:not(.kmi-modal-open):not(.kmi-sidebar-open) .shell,
body:not(.kmi-modal-open):not(.kmi-sidebar-open) main#main{
  height:auto!important;
  max-height:none!important;
  overflow-y:visible!important;
}
.sidebar nav{
  min-height:0;
  overflow-x:hidden!important;
  overflow-y:auto!important;
  -webkit-overflow-scrolling:touch;
}
body .modal-overlay{
  align-items:center;
  overflow-x:hidden!important;
  overflow-y:auto!important;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
}
body .modal-overlay>.modal-box{
  max-height:calc(100vh - 32px)!important;
  max-height:calc(100dvh - 32px)!important;
  min-height:0!important;
  overflow:hidden!important;
}
body .modal-overlay>.modal-box>.modal-head{
  flex:0 0 auto;
}
body .modal-overlay>.modal-box>.modal-body{
  flex:1 1 auto;
  min-height:0!important;
  max-height:none!important;
  overflow-x:hidden;
  overflow-y:auto!important;
  overscroll-behavior:contain;
  scroll-padding-bottom:84px;
  -webkit-overflow-scrolling:touch;
}
.contact-picker-overlay,
.kmi-required-password-overlay{
  overflow-x:hidden!important;
  overflow-y:auto!important;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
}
.contact-picker-dialog,
.kmi-required-password-card{
  max-height:calc(100vh - 32px)!important;
  max-height:calc(100dvh - 32px)!important;
  overflow-y:auto!important;
  -webkit-overflow-scrolling:touch;
}
.table-wrap,
.ap-table-wrap,
.legacy-table-wrap,
.shared-schedule-list-wrap{
  overscroll-behavior-x:contain;
  overscroll-behavior-y:auto;
  -webkit-overflow-scrolling:touch;
}
@media(max-width:760px){
  body .modal-overlay{
    align-items:start;
    padding:8px!important;
  }
  body .modal-overlay>.modal-box{
    max-height:calc(100vh - 16px)!important;
    max-height:calc(100dvh - 16px)!important;
    margin:auto 0;
  }
  body .modal-overlay>.modal-box>.modal-body{
    padding-bottom:max(20px,env(safe-area-inset-bottom))!important;
  }
}

/* V20.7.22: use one page scroller on mobile and keep pinch zoom available
   from any non-control area. Horizontal data tables remain independently
   pannable, but they no longer capture vertical page scrolling. */
@media screen and (max-width:900px){
  html{
    min-height:100%;
    height:auto!important;
    overflow-x:hidden!important;
    overflow-y:auto!important;
    touch-action:pan-x pan-y pinch-zoom;
  }
  body:not(.kmi-modal-open):not(.kmi-sidebar-open){
    min-height:100dvh;
    height:auto!important;
    overflow-x:hidden!important;
    overflow-y:visible!important;
    touch-action:pan-x pan-y pinch-zoom;
    -webkit-overflow-scrolling:touch;
  }
  body:not(.kmi-modal-open):not(.kmi-sidebar-open) #app,
  body:not(.kmi-modal-open):not(.kmi-sidebar-open) .shell,
  body:not(.kmi-modal-open):not(.kmi-sidebar-open) main#main{
    height:auto!important;
    max-height:none!important;
    min-height:0;
    overflow-y:visible!important;
    overscroll-behavior-y:auto;
  }
  main#main,
  main#main .panel,
  main#main .card{
    touch-action:pan-x pan-y pinch-zoom;
  }
  .table-wrap,
  .ap-table-wrap,
  .shared-schedule-list-wrap,
  .google-calendar-import-wrap{
    overscroll-behavior:auto;
    touch-action:pan-x pan-y pinch-zoom;
  }
  input,textarea,select,button,a,[role="button"]{
    touch-action:manipulation;
  }
}

/* V20.7.55: compact monthly calendar while preserving five event lanes. */
.connected-calendar .calendar-week-row,
.connected-calendar .cal-day{height:176px}
.connected-calendar .calendar-week-bars{top:28px;grid-template-rows:repeat(5,24px);row-gap:2px}
.connected-calendar .calendar-span-event{height:24px;margin:0 2px;padding:2px 5px;border-radius:5px}
.connected-calendar .calendar-span-event b{font-size:clamp(8px,.64vw,10px);line-height:1.15}
.connected-calendar .calendar-span-event span{font-size:clamp(7px,.58vw,9px);line-height:1.15}
.connected-calendar .calendar-week-more{bottom:3px}
.connected-calendar .cal-more{height:19px;margin:0 5px;font-size:9px}
@media(max-width:900px){
  .connected-calendar .calendar-week-row,
  .connected-calendar .cal-day{height:168px}
  .connected-calendar .calendar-week-bars{top:27px;grid-template-rows:repeat(5,23px);row-gap:2px}
  .connected-calendar .calendar-span-event{height:23px;padding-top:2px;padding-bottom:2px}
  .connected-calendar .calendar-span-event b{font-size:8px}
  .connected-calendar .calendar-span-event span{font-size:7px}
  .connected-calendar .cal-more{height:18px}
}

/* V20.7.56: existing attachment removal, aligned with the groupware form style. */
.kmi-attachment-editor{display:grid;gap:6px;margin-top:7px}
.kmi-attachment-row{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:36px;padding:5px 7px 5px 11px;border:1px solid var(--line);border-radius:8px;background:#fff}
.kmi-attachment-row>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink);font-size:12px;font-weight:600}
.kmi-attachment-row .btn{flex:0 0 auto;min-height:27px;height:27px;padding:0 10px;border-radius:7px;font-size:11px}
.kmi-attachment-empty{display:block;padding:8px 10px;border:1px dashed var(--line);border-radius:8px;background:#f8fafc;color:var(--muted);font-size:12px}

/* V20.7.59: mobile calendar density and low-cost rendering. */
@media(max-width:720px){
  .connected-calendar .calendar-week-row,
  .connected-calendar .cal-day{height:90px}
  .connected-calendar .calendar-week-row{contain:layout paint}
  .connected-calendar .cal-day{padding:6px 5px}
  .connected-calendar .cal-date{font-size:11px;line-height:1}
  .connected-calendar .calendar-week-bars{top:20px;grid-template-rows:repeat(3,18px);row-gap:1px}
  .connected-calendar .calendar-span-event{height:18px;margin:0 1px;padding:1px 2px;border-left-width:2px;border-radius:4px}
  .connected-calendar .calendar-span-event b{font-size:6.8px;line-height:1.05}
  .connected-calendar .calendar-span-event span{font-size:6.5px;line-height:1.05}
  .connected-calendar .calendar-week-more{bottom:3px}
  .connected-calendar .cal-more{height:14px;margin:0 2px;padding:0 1px;font-size:7px;line-height:14px;white-space:nowrap;overflow:hidden;text-overflow:clip}
  .calendar-toolbar{gap:6px}
  .calendar-toolbar .btn{min-width:40px;padding-left:8px;padding-right:8px}
  .calendar-toolbar input[type="month"]{min-width:0;flex:1}
  .calendar-guide{padding:9px 10px;font-size:11px;line-height:1.45}
  .schedule-panel,.schedule-calendar,.calendar-week-row{box-shadow:none!important}
  .cal-event,.cal-more,.tab-btn,.nav-item{transition:none!important;animation:none!important}
}

/* V20.7.63: keep short business labels intact and support mobile landscape. */
.data-table .kmi-nowrap-cell,
.kmi-semantic-table .kmi-nowrap-cell{
  min-width:max-content;
  white-space:nowrap!important;
  word-break:keep-all!important;
  overflow-wrap:normal!important;
}
#workSiteBody .data-table{
  min-width:860px;
}
#workSiteBody .data-table th:nth-child(2),
#workSiteBody .data-table td:nth-child(2),
#workSiteBody .data-table th:nth-child(3),
#workSiteBody .data-table td:nth-child(3){
  white-space:nowrap!important;
  word-break:keep-all!important;
  overflow-wrap:normal!important;
}
@media screen and (orientation:landscape) and (max-height:600px) and (pointer:coarse){
  :root{--kmi-header:54px}
  .sidebar{
    width:min(260px,72vw);
    transform:translateX(-102%);
    transition:transform .16s ease;
  }
  .sidebar.open{transform:none}
  .shell{
    width:100%!important;
    margin-left:0!important;
  }
  #mobileMenu{
    display:inline-grid!important;
    flex:0 0 36px;
    margin-right:6px;
  }
  #kmiSidebarScrim{
    position:fixed;
    inset:0;
    z-index:35;
    display:block;
    visibility:hidden;
    opacity:0;
    background:rgba(5,18,36,.48);
    transition:opacity .16s ease,visibility .16s ease;
  }
  body.kmi-sidebar-open #kmiSidebarScrim{visibility:visible;opacity:1}
  .shell>header{padding:0 10px}
  main#main{padding:14px 12px 28px}
  .calendar-week,
  .schedule-calendar.connected-calendar{
    width:100%!important;
    min-width:0!important;
    margin-left:0!important;
    margin-right:0!important;
  }
  .calendar-week,
  .connected-calendar .calendar-week-days,
  .connected-calendar .calendar-week-bars,
  .connected-calendar .calendar-week-more{
    grid-template-columns:repeat(7,minmax(0,1fr))!important;
  }
  .calendar-week b{
    display:grid;
    place-items:center;
    min-width:0;
    margin:0!important;
    padding:5px 0!important;
    text-align:center!important;
  }
  .connected-calendar .cal-day{padding-left:4px!important;padding-right:4px!important}
  .schedule-panel{overflow:hidden}
  .table-wrap{touch-action:pan-x pan-y pinch-zoom}
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important}
}

/* V20.7.65: align mixed input/select controls in cable basic information. */
#c120Body .c121-basic-grid>label{
  display:grid!important;
  grid-template-rows:18px 36px!important;
  align-content:start!important;
  align-self:start!important;
  gap:5px!important;
  margin:0!important;
  line-height:18px!important;
}
#c120Body .c121-basic-grid>label>input:not([type=file]),
#c120Body .c121-basic-grid>label>select{
  display:block!important;
  align-self:start!important;
  width:100%!important;
  height:36px!important;
  min-height:36px!important;
  margin:0!important;
  box-sizing:border-box!important;
}
#c120Body .c121-basic-grid>label>select{
  padding-top:0!important;
  padding-bottom:0!important;
  color:#102744!important;
  line-height:normal!important;
  opacity:1!important;
}

/* V20.7.65: keep the training alert save button on the same baseline as toggles. */
.training-setting-grid>#trainingAlertSave{
  align-self:start!important;
  height:42px!important;
  min-height:42px!important;
  margin:18px 0 0!important;
}

@media screen and (max-width:1400px){
  .training-setting-grid>#trainingAlertSave{margin-top:0!important}
}

/* V20.7.89: dense building/area summary cards for grouped calendars only. */
main#main .schedule-source-metrics{
  grid-template-columns:repeat(auto-fit,minmax(112px,1fr))!important;
  gap:8px!important;
  margin-bottom:12px!important;
}
main#main .schedule-source-metrics>.metric{
  min-height:72px!important;
  height:72px!important;
  padding:8px 10px!important;
  border-radius:10px!important;
}
main#main .schedule-source-metrics>.metric .label{
  font-size:10px!important;
  line-height:1.2!important;
}
main#main .schedule-source-metrics>.metric strong{
  margin:4px 0 0!important;
  font-size:21px!important;
  line-height:1.1!important;
}
main#main .schedule-source-metrics>.metric>small{
  display:none!important;
}
@media screen and (max-width:767px){
  main#main .schedule-source-metrics{
    grid-template-columns:repeat(4,minmax(0,1fr))!important;
    gap:6px!important;
  }
  main#main .schedule-source-metrics>.metric{
    min-height:64px!important;
    height:64px!important;
    padding:6px!important;
  }
  main#main .schedule-source-metrics>.metric strong{font-size:18px!important}
}

/* V20.7.91: multi-select calendar source filter on the combined view. */
.calendar-multi-filter{
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:7px;
  margin:10px 0 12px;
}
.calendar-multi-filter>span{
  margin-right:2px;
  color:#52637a;
  font-size:11px;
  font-weight:750;
}
.calendar-multi-filter>button{
  display:inline-flex;
  align-items:center;
  gap:6px;
  min-height:32px;
  border:1px solid #d4deeb;
  border-radius:8px;
  padding:0 11px;
  background:#fff;
  color:#52637a;
  font-size:11px;
  font-weight:750;
  cursor:pointer;
}
.calendar-multi-filter>button>i{
  width:7px;
  height:7px;
  border-radius:50%;
  background:#a8b4c5;
}
.calendar-multi-filter>button.active{
  border-color:#9dbbf3;
  background:#eef5ff;
  color:#174ea6;
}
.calendar-multi-filter>button.active>i{background:#356fd1}
@media screen and (max-width:767px){
  .calendar-multi-filter{gap:6px;margin:8px 0 10px}
  .calendar-multi-filter>span{flex:0 0 100%}
  .calendar-multi-filter>button{flex:1 1 calc(50% - 6px);justify-content:center;padding:0 7px}
}

/* V20.7.92: keep short training values on the common centered table axis. */
main#main .training-list-table th,
main#main .training-list-table td{
  text-align:center!important;
  vertical-align:middle!important;
}
main#main .training-list-table .training-name-cell{
  padding-left:12px!important;
  padding-right:12px!important;
}
main#main .training-list-table .training-name-cell .link-btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  max-width:100%;
  margin:0 auto;
  text-align:center;
}
