/* ============================================================
   KTOP SAFE-MDS — Complete UI Redesign
   Aesthetic: Refined Industrial / Premium Safety System
   Font: DM Sans (display) + Noto Sans KR (Korean body)
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=DM+Sans:opsz,wght@9..40,300;9..40,400;9..40,500;9..40,600;9..40,700&family=DM+Mono:wght@400;500&family=Noto+Sans+KR:wght@400;500;700;900&display=swap');

/* ── Variables ─────────────────────────────────────────────── */
:root {
  --ink:       #0c1929;
  --ink2:      #1a2e44;
  --ink3:      #2c4560;
  --steel:     #3d6082;
  --blue:      #1a6fd4;
  --blue2:     #1258b0;
  --blue-pale: #e8f2ff;
  --blue-mid:  #c0d9f8;
  --teal:      #0d8c72;
  --teal-pale: #e4f5f0;
  --amber:     #d97706;
  --red:       #c0392b;
  --red-pale:  #fdf0ee;
  --bg:        #f0f4f8;
  --surface:   #ffffff;
  --border:    #d6e0ec;
  --border2:   #e8eef5;
  --muted:     #5f7a96;
  --muted2:    #8da5be;

  --radius-sm: 6px;
  --radius:    10px;
  --radius-lg: 16px;
  --radius-xl: 22px;

  --shadow-sm: 0 1px 3px rgba(12,25,41,.07), 0 1px 2px rgba(12,25,41,.04);
  --shadow:    0 4px 16px rgba(12,25,41,.09), 0 1px 4px rgba(12,25,41,.05);
  --shadow-lg: 0 12px 40px rgba(12,25,41,.13), 0 4px 12px rgba(12,25,41,.06);

  --sidebar-w: 256px;
  --header-h:  64px;

  --font-en: 'DM Sans', 'Noto Sans KR', sans-serif;
  --font-ko: 'Noto Sans KR', 'DM Sans', sans-serif;
  --font-mono: 'DM Mono', monospace;
}

/* ── Reset ─────────────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

html, body {
  width: 100%; min-height: 100%;
  font-family: var(--font-ko);
  font-size: 14px;
  background: var(--bg);
  color: var(--ink);
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
}

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

.hidden { display: none !important; }

/* ── Loading overlay ───────────────────────────────────────── */
#loading {
  position: fixed; inset: 0;
  background: rgba(12,25,41,.45);
  display: none;
  align-items: center; justify-content: center;
  z-index: 9999;
  backdrop-filter: blur(3px);
}

.loaderBox {
  display: flex; align-items: center; gap: 12px;
  background: var(--ink2);
  color: #fff;
  padding: 14px 22px;
  border-radius: var(--radius);
  font-weight: 600;
  font-size: 14px;
  box-shadow: var(--shadow-lg);
}

.spinner {
  width: 20px; height: 20px;
  border-radius: 50%;
  border: 2.5px solid rgba(255,255,255,.25);
  border-top-color: #fff;
  animation: spin .75s linear infinite;
  flex-shrink: 0;
}

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

/* ── Modal ─────────────────────────────────────────────────── */
.modal {
  position: fixed; inset: 0;
  background: rgba(12,25,41,.50);
  display: flex; align-items: center; justify-content: center;
  z-index: 100; padding: 20px;
  backdrop-filter: blur(4px);
}

.modalCard {
  width: min(420px, 100%);
  background: var(--surface);
  border-radius: var(--radius-lg);
  padding: 28px;
  box-shadow: var(--shadow-lg);
  display: flex; flex-direction: column; gap: 12px;
}

.modalCard h3 {
  font-family: var(--font-en);
  font-size: 20px; font-weight: 700;
  color: var(--ink);
  margin-bottom: 4px;
}

.btnRow { display: flex; gap: 8px; margin-top: 4px; }

/* ══════════════════════════════════════════════════════════════
   LOGIN SCREEN
══════════════════════════════════════════════════════════════ */
.loginScreen {
  min-height: 100vh;
  display: flex; align-items: center; justify-content: center;
  padding: 24px;
  background:
    radial-gradient(ellipse 80% 60% at 20% 30%, rgba(26,111,212,.12), transparent 55%),
    radial-gradient(ellipse 60% 50% at 80% 70%, rgba(13,140,114,.08), transparent 55%),
    linear-gradient(155deg, #e8f0f8 0%, #f0f4f8 50%, #e8eef5 100%);
}

.loginShell {
  width: min(1080px, 100%);
  min-height: 580px;
  background: var(--surface);
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-lg);
  display: grid;
  grid-template-columns: 1.2fr 0.8fr;
  overflow: hidden;
  border: 1px solid var(--border);
}

/* Left panel */
.loginLeft {
  background: linear-gradient(145deg, #0c1929 0%, #1a2e44 40%, #16395a 100%);
  color: #fff;
  padding: 48px 44px;
  display: flex; flex-direction: column; justify-content: space-between;
  position: relative;
  overflow: hidden;
}

.loginLeft::before {
  content: '';
  position: absolute; inset: 0;
  background:
    radial-gradient(circle at 85% 10%, rgba(26,111,212,.35), transparent 40%),
    radial-gradient(circle at 10% 85%, rgba(13,140,114,.20), transparent 40%);
  pointer-events: none;
}

.loginLeft > * { position: relative; }

.loginBrand {
  display: flex; align-items: center; gap: 14px;
}

..loginBrand img {
  width: 48px; height: 48px;
  object-fit: contain;
  background: transparent;
  border-radius: 0;
  padding: 0;
  border: 0;
  filter: drop-shadow(0 2px 8px rgba(0,0,0,.16));
}

.loginBrand h1 {
  font-family: var(--font-en);
  font-size: 22px; font-weight: 700;
  letter-spacing: -.3px;
  line-height: 1;
}

.loginBrand p {
  font-size: 11px; color: #a0bfd8; font-weight: 500;
  margin-top: 4px; letter-spacing: .5px;
}

.systemTitle { margin: auto 0; }

.systemTitle span {
  font-family: var(--font-en);
  font-size: 11px; font-weight: 600;
  letter-spacing: .12em;
  color: #5ba3d9;
  text-transform: uppercase;
}

.systemTitle h2 {
  font-family: var(--font-en);
  font-size: 38px; font-weight: 700;
  line-height: 1.15;
  letter-spacing: -1.2px;
  margin: 12px 0 14px;
}

.systemTitle p {
  font-size: 15px; color: #b0ccdf;
  font-weight: 400; line-height: 1.6;
}

.loginInfoGrid {
  display: grid; grid-template-columns: 1fr 1fr;
  gap: 8px; margin-top: 4px;
}

.loginInfoGrid div {
  border: 1px solid rgba(255,255,255,.10);
  background: rgba(255,255,255,.05);
  border-radius: var(--radius-sm);
  padding: 13px 14px;
  transition: background .2s;
}

.loginInfoGrid div:hover { background: rgba(255,255,255,.09); }

.loginInfoGrid b {
  display: block;
  font-family: var(--font-en);
  font-size: 20px; font-weight: 700;
  color: #5ba3d9;
  margin-bottom: 3px;
}

.loginInfoGrid span {
  font-size: 12px; font-weight: 600; color: #c0d8ec;
}

/* Right panel */
.loginRight {
  display: flex; align-items: center; justify-content: center;
  padding: 40px 36px;
  background: var(--surface);
}

.loginCard {
  width: 100%; max-width: 340px;
  display: flex; flex-direction: column; gap: 10px;
}

.loginCard h3 {
  font-family: var(--font-en);
  font-size: 24px; font-weight: 700;
  color: var(--ink); margin-bottom: 2px;
}

.loginCard p {
  font-size: 13px; color: var(--muted);
  margin-bottom: 10px;
}

/* ══════════════════════════════════════════════════════════════
   APP LAYOUT
══════════════════════════════════════════════════════════════ */
.appLayout {
  min-height: 100vh;
  display: flex;
}

/* ── Sidebar ───────────────────────────────────────────────── */
.sideNav {
  position: fixed; left: 0; top: 0; bottom: 0;
  width: var(--sidebar-w);
  background: linear-gradient(170deg, #0e1e30 0%, #162d45 60%, #102236 100%);
  z-index: 20;
  display: flex; flex-direction: column;
  border-right: 1px solid rgba(255,255,255,.06);
  box-shadow: 3px 0 20px rgba(12,25,41,.18);
}

.sideBrand {
  padding: 18px 10px 16px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-bottom: 1px solid rgba(255,255,255,.07);
  flex-shrink: 0;
}

.sideBrand img {
  width: 176px;
  max-width: 100%;
  height: auto;
  object-fit: contain;
  background: transparent;
  border-radius: 0;
  padding: 0;
  border: 0;
  filter: drop-shadow(0 10px 24px rgba(0,0,0,.18));
  flex-shrink: 0;
}

.sideBrand strong {
  display: none;
}

.sideBrand span {
  display: none;
}

.sideMenu {
  padding: 14px 10px;
  flex: 1; overflow-y: auto;
  scrollbar-width: none;
}

.sideMenu::-webkit-scrollbar { display: none; }

.navItem {
  display: flex; align-items: center; gap: 9px;
  width: 100%; height: 42px;
  border: none;
  background: transparent;
  border-radius: var(--radius);
  padding: 0 13px;
  font-weight: 600; font-size: 13.5px;
  color: #8dafc8;
  cursor: pointer;
  transition: all .18s;
  margin-bottom: 2px;
  text-align: left;
  position: relative;
}

.navItem::before {
  content: '';
  width: 6px; height: 6px;
  border-radius: 50%;
  background: #456a87;
  flex-shrink: 0;
  transition: all .18s;
}

.navItem:hover {
  background: rgba(255,255,255,.07);
  color: #cde3f5;
}

.navItem:hover::before { background: #7aadcf; }

.navItem.active {
  background: rgba(26,111,212,.18);
  color: #fff;
  font-weight: 700;
}

.navItem.active::before {
  background: #4a9de8;
  box-shadow: 0 0 6px rgba(74,157,232,.6);
}

/* ── Work area ─────────────────────────────────────────────── */
.workArea {
  margin-left: var(--sidebar-w);
  flex: 1;
  min-height: 100vh;
  display: flex; flex-direction: column;
}

/* Command strip */
.commandStrip {
  background: var(--ink);
  color: rgba(255,255,255,.6);
  font-size: 11.5px; font-weight: 500;
  padding: 7px 28px;
  display: flex; align-items: center; justify-content: space-between;
  letter-spacing: .3px;
}

.commandLabel {
  font-family: var(--font-en);
  font-weight: 700; font-size: 10px;
  letter-spacing: .12em;
  color: rgba(255,255,255,.35);
  text-transform: uppercase;
  margin-right: 10px;
}

.commandStrip strong {
  color: rgba(255,255,255,.70); font-weight: 600;
}

.commandBadges {
  display: flex; gap: 6px;
}

.commandBadges span {
  background: rgba(255,255,255,.08);
  border: 1px solid rgba(255,255,255,.10);
  border-radius: 4px;
  padding: 2px 8px;
  font-size: 10.5px;
  color: rgba(255,255,255,.45);
}

/* Header */
.workHeader {
  height: var(--header-h);
  background: var(--surface);
  border-bottom: 1px solid var(--border);
  display: flex; align-items: center; justify-content: space-between;
  padding: 0 28px;
  position: sticky; top: 0; z-index: 10;
  box-shadow: var(--shadow-sm);
  flex-shrink: 0;
}

.workHeader h2 {
  font-family: var(--font-en);
  font-size: 20px; font-weight: 700;
  color: var(--ink); letter-spacing: -.4px;
}

.workHeader p {
  font-size: 12.5px; color: var(--muted); font-weight: 400;
  margin-top: 2px;
}

.hamburger {
  display: none;
  border: none;
  background: var(--blue-pale);
  color: var(--blue);
  width: 38px; height: 38px;
  border-radius: var(--radius-sm);
  font-size: 18px; cursor: pointer;
  align-items: center; justify-content: center;
}

.userPanel {
  display: flex; align-items: center; gap: 8px;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 6px 12px 6px 14px;
}

.userPanel > span {
  font-weight: 600; font-size: 13px;
  color: var(--ink2);
}

/* Page sections */
.pageSection { padding: 24px 28px 40px; flex: 1; }

/* ── Dashboard ─────────────────────────────────────────────── */
.dashboardHero {
  background: linear-gradient(130deg, #0e1e30 0%, #1a3350 55%, #1a4570 100%);
  border-radius: var(--radius-lg);
  padding: 32px 36px;
  color: #fff;
  margin-bottom: 20px;
  position: relative; overflow: hidden;
  box-shadow: var(--shadow);
}

.dashboardHero::before {
  content: '';
  position: absolute;
  right: -60px; top: -60px;
  width: 320px; height: 320px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(26,111,212,.3), transparent 65%);
}

.dashboardHero::after {
  content: '';
  position: absolute;
  left: 40%; bottom: -40px;
  width: 200px; height: 200px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(13,140,114,.2), transparent 65%);
}

.dashboardHero > div { position: relative; }

.eyebrow {
  font-family: var(--font-en);
  font-size: 10.5px; font-weight: 700;
  letter-spacing: .14em;
  color: #6ab4f0;
  text-transform: uppercase;
  display: block; margin-bottom: 10px;
}

.dashboardHero h3 {
  font-family: var(--font-en);
  font-size: 26px; font-weight: 700;
  letter-spacing: -.6px; line-height: 1.25;
  margin-bottom: 8px;
}

.dashboardHero p {
  font-size: 14px; color: #b0cfe5; font-weight: 400; line-height: 1.6;
}

.summaryGrid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 12px;
}

.stat {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: 20px 22px;
  box-shadow: var(--shadow-sm);
  position: relative; overflow: hidden;
  transition: box-shadow .2s, transform .2s;
}

.stat:hover {
  box-shadow: var(--shadow);
  transform: translateY(-1px);
}

.stat::before {
  content: '';
  position: absolute; left: 0; top: 0; bottom: 0;
  width: 4px;
  background: var(--border);
  border-radius: var(--radius-lg) 0 0 var(--radius-lg);
}

.stat.on::before { background: var(--blue); }
.stat:nth-child(2)::before { background: var(--teal); }
.stat:nth-child(3)::before { background: var(--amber); }
.stat:nth-child(4)::before { background: var(--red); }

.stat b {
  display: block;
  font-family: var(--font-en);
  font-size: 30px; font-weight: 700;
  color: var(--ink); letter-spacing: -1px;
  line-height: 1;
}

.stat span {
  display: block;
  font-size: 12.5px; font-weight: 600;
  color: var(--muted); margin-top: 8px;
  letter-spacing: .2px;
}

/* ── Panel ─────────────────────────────────────────────────── */
.panel {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
  margin-bottom: 16px;
  overflow: hidden;
}

.panelHead {
  display: flex; align-items: center; justify-content: space-between;
  gap: 12px;
  padding: 14px 20px;
  background: var(--surface);
  border-bottom: 1px solid var(--border2);
}

.panelHead h3 {
  font-family: var(--font-en);
  font-size: 17px; font-weight: 700;
  color: var(--ink); letter-spacing: -.3px;
}

.headActions { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }

.chip {
  display: inline-flex; align-items: center; height: 24px;
  padding: 0 10px;
  border-radius: 100px;
  background: var(--blue-pale);
  color: var(--blue);
  border: 1px solid var(--blue-mid);
  font-size: 11px; font-weight: 700;
  letter-spacing: .3px;
}

/* ── Inputs & Buttons ─────────────────────────────────────── */
input, select {
  height: 38px;
  border: 1.5px solid var(--border);
  border-radius: var(--radius-sm);
  padding: 0 12px;
  font-size: 13.5px; font-weight: 500;
  background: var(--surface);
  color: var(--ink);
  min-width: 0;
  transition: border-color .15s, box-shadow .15s;
}

input:focus, select:focus {
  outline: none;
  border-color: var(--blue);
  box-shadow: 0 0 0 3px rgba(26,111,212,.12);
}

input::placeholder { color: var(--muted2); font-weight: 400; }

.btn {
  display: inline-flex; align-items: center; justify-content: center;
  height: 38px;
  border: 1.5px solid transparent;
  border-radius: var(--radius-sm);
  padding: 0 16px;
  font-size: 13.5px; font-weight: 600;
  cursor: pointer;
  transition: all .15s;
  white-space: nowrap;
  letter-spacing: -.1px;
}

.btn.primary {
  background: var(--blue);
  color: #fff; border-color: var(--blue);
}
.btn.primary:hover { background: var(--blue2); border-color: var(--blue2); }

.btn.success {
  background: var(--teal);
  color: #fff; border-color: var(--teal);
}
.btn.success:hover { background: #0a7562; }

.btn.gray {
  background: var(--steel);
  color: #fff; border-color: var(--steel);
}
.btn.gray:hover { background: #334d65; }

.btn.line {
  background: var(--surface);
  color: var(--blue);
  border-color: var(--blue-mid);
}
.btn.line:hover { background: var(--blue-pale); }

.btn.danger {
  background: var(--red-pale);
  color: var(--red);
  border-color: #f0c4bf;
}
.btn.danger:hover { background: #f5d0cc; }

.btn.small { height: 32px; padding: 0 12px; font-size: 12.5px; }

.btn.full { width: 100%; }

/* ── Filter / Search bars ─────────────────────────────────── */
.filterBar,
.inputCenterBar.unifiedToolbar {
  display: flex; flex-wrap: wrap; gap: 10px;
  padding: 14px 20px;
  align-items: flex-end;
  background: var(--bg);
  border-bottom: 1px solid var(--border2);
}

.filterBar label,
.inputCenterBar label {
  display: flex; flex-direction: column; gap: 4px;
}

.filterBar label span,
.inputCenterBar label span {
  font-size: 11px; font-weight: 700;
  color: var(--steel);
  letter-spacing: .3px; text-transform: uppercase;
}

.filterKeyword { flex: 1; min-width: 180px; }
.filterKeyword input { width: 100%; }

.unifiedSearch { flex: 1; min-width: 200px; }
.unifiedSearch input { width: 100%; }

.centerNotice {
  font-size: 12px; color: var(--muted);
  font-weight: 400; align-self: center;
  padding: 0 4px;
}

.searchGrid {
  display: grid;
  grid-template-columns: 1.4fr .45fr .35fr auto;
  gap: 10px; padding: 16px 20px;
}

.lawGrid {
  display: grid;
  grid-template-columns: 1fr .7fr auto;
  gap: 10px; padding: 16px 20px;
}

.uploadLine {
  display: flex; gap: 10px; padding: 16px 20px; align-items: center;
}

.uploadLine input[type=file] { flex: 1; }

.reflectGrid {
  display: grid;
  grid-template-columns: 1fr 1fr auto;
  gap: 10px; margin: 12px 20px;
}

.hint {
  font-size: 12px; color: var(--muted);
  font-weight: 400;
  padding: 10px 20px 16px;
  line-height: 1.6;
}

/* ── Excel input table ─────────────────────────────────────── */
.excelInputWrap {
  overflow: auto;
  margin: 0 20px 20px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
}

.excelInputTable {
  min-width: 3200px;
  width: 100%;
  border-collapse: collapse;
}

.excelInputTable .groupHead th {
  background: var(--blue);
  color: #fff;
  font-family: var(--font-en);
  font-size: 12px; font-weight: 700;
  letter-spacing: .3px;
  text-align: center;
  padding: 9px 10px;
  border: 1px solid rgba(255,255,255,.15);
}

.excelInputTable th {
  background: var(--ink2);
  color: rgba(255,255,255,.85);
  border: 1px solid rgba(255,255,255,.08);
  height: 36px;
  padding: 6px 8px;
  font-size: 11.5px; font-weight: 600;
  white-space: normal; line-height: 1.3;
  text-align: center;
}

.excelInputTable td {
  border: 1px solid var(--border2);
  padding: 0;
  background: var(--surface);
  transition: background .1s;
}

.excelInputTable tr:hover td { background: #f8fbff; }

.excelInputTable tr:nth-child(even) td { background: #fafcff; }
.excelInputTable tr:nth-child(even):hover td { background: #f3f8ff; }

.excelInputTable .rowNo {
  width: 48px; text-align: center;
  font-family: var(--font-mono);
  font-size: 12px; font-weight: 500;
  color: var(--muted2);
  background: #f5f8fc;
  border-right: 1px solid var(--border);
  padding: 0 6px;
}

.excelInputTable input {
  width: 100%; min-width: 110px;
  height: 34px;
  border: none; border-radius: 0;
  background: transparent;
  padding: 0 8px;
  font-size: 13px; font-weight: 500;
}

.excelInputTable input:focus {
  outline: 2px solid var(--blue);
  outline-offset: -2px;
  background: #fff;
  box-shadow: none;
}

.excelInputTable td:nth-child(3) input { min-width: 180px; }
.excelInputTable td:nth-child(6) input { min-width: 175px; }
.excelInputTable td:nth-child(16) input { min-width: 210px; }

/* ── Data table (read-only results) ────────────────────────── */
.tableWrap { overflow: auto; padding: 16px 20px; }

.dataTable {
  width: 100%; border-collapse: collapse;
  min-width: 820px; background: var(--surface);
}

.dataTable th {
  background: var(--ink2);
  color: rgba(255,255,255,.82);
  border: 1px solid rgba(255,255,255,.08);
  padding: 10px 10px;
  font-size: 12.5px; font-weight: 600;
  text-align: center; white-space: nowrap;
}

.dataTable td {
  border: 1px solid var(--border2);
  padding: 9px 10px;
  font-size: 13px; font-weight: 500;
  vertical-align: middle;
  color: var(--ink2);
}

.dataTable tr:hover td { background: var(--blue-pale); }
.dataTable tr:nth-child(even) td { background: #fafcff; }
.dataTable tr:nth-child(even):hover td { background: var(--blue-pale); }

/* ── Mini buttons ─────────────────────────────────────────── */
.miniBtn {
  height: 28px;
  border: 1.5px solid var(--border);
  background: var(--surface);
  color: var(--ink2);
  border-radius: var(--radius-sm);
  padding: 0 10px;
  font-size: 12px; font-weight: 600;
  cursor: pointer; margin: 1px;
  transition: all .15s;
}

.miniBtn:hover { background: var(--blue-pale); border-color: var(--blue-mid); color: var(--blue); }

.miniBtn.danger, .danger {
  border-color: #f0c4bf; color: var(--red); background: var(--red-pale);
}

.miniBtn.danger:hover { background: var(--red); color: #fff; border-color: var(--red); }

/* ── Upload status ─────────────────────────────────────────── */
.uploadStatus {
  margin: 0 20px 16px;
  padding: 12px 16px;
  border-radius: var(--radius-sm);
  font-size: 13px; font-weight: 600;
  background: var(--teal-pale);
  color: var(--teal);
  border: 1px solid #a8d9cf;
}

/* ── Detail box / badges ───────────────────────────────────── */
.summary {
  display: grid; grid-template-columns: repeat(3, 1fr);
  gap: 8px; margin: 14px 20px;
}

.badge {
  padding: 12px 14px;
  border: 1px solid var(--border);
  background: var(--bg);
  text-align: center;
  font-size: 13px; font-weight: 700;
  color: var(--ink2);
  border-radius: var(--radius-sm);
}

.badge.on {
  background: var(--blue-pale);
  color: var(--blue);
  border-color: var(--blue-mid);
}

.detailBox {
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  padding: 14px 16px;
  margin: 14px 20px;
  white-space: pre-line;
  line-height: 1.65;
  font-size: 13.5px; color: var(--ink2);
}

.warningNote {
  background: #fff8ed; border: 1px solid #fcdba0;
  color: #8a5a00;
  padding: 11px 14px; margin: 10px 20px;
  font-size: 12.5px; font-weight: 600;
  border-radius: var(--radius-sm);
}

.empty {
  margin: 16px 20px;
  padding: 32px 20px;
  text-align: center;
  background: var(--bg);
  border: 1.5px dashed var(--border);
  border-radius: var(--radius);
  color: var(--muted);
  font-size: 13.5px;
}

/* ══════════════════════════════════════════════════════════════
   ADMIN SECTION
══════════════════════════════════════════════════════════════ */
.adminHero {
  background: linear-gradient(130deg, #0e1e30 0%, #1a3350 55%, #163750 100%);
  border-radius: var(--radius-lg);
  padding: 28px 32px;
  color: #fff;
  margin-bottom: 18px;
  display: flex; align-items: center; justify-content: space-between; gap: 20px;
  box-shadow: var(--shadow);
  position: relative; overflow: hidden;
}

.adminHero::before {
  content: '';
  position: absolute; right: -30px; top: -30px;
  width: 220px; height: 220px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(26,111,212,.25), transparent 65%);
}

.adminHero > div:first-child { position: relative; }

.adminHero h3 {
  font-family: var(--font-en);
  font-size: 22px; font-weight: 700;
  letter-spacing: -.4px; margin-bottom: 6px;
}

.adminHero p { font-size: 13.5px; color: #a8c8e0; line-height: 1.55; }

.adminHeroCards {
  display: flex; gap: 12px; flex-shrink: 0; position: relative;
}

.adminHeroCards > div {
  background: rgba(255,255,255,.08);
  border: 1px solid rgba(255,255,255,.12);
  border-radius: var(--radius);
  padding: 14px 22px;
  text-align: center;
  min-width: 88px;
}

.adminHeroCards b {
  display: block;
  font-family: var(--font-en);
  font-size: 28px; font-weight: 700;
  color: #fff;
}

.adminHeroCards span {
  font-size: 11.5px; color: #90bfdb; font-weight: 500;
  margin-top: 3px; display: block;
}

.adminGrid {
  display: grid; grid-template-columns: 1fr 1fr; gap: 16px;
  margin-bottom: 16px;
}

.adminCreatePanel {}

.adminFormGrid {
  display: grid; grid-template-columns: 1fr 1fr; gap: 12px;
  padding: 18px 20px 20px;
}

.adminFormGrid label {
  display: flex; flex-direction: column; gap: 5px;
}

.adminFormGrid label span {
  font-size: 11px; font-weight: 700;
  color: var(--steel); letter-spacing: .3px;
  text-transform: uppercase;
}

.adminFormGrid input,
.adminFormGrid select { width: 100%; }

.adminFormActions {
  grid-column: 1 / -1;
  display: flex; gap: 8px; margin-top: 4px;
}

/* User cards */
.adminUserCards {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(380px, 1fr));
  gap: 14px; padding: 18px 20px;
}

.adminUserCard {
  border: 1.5px solid var(--border);
  border-radius: var(--radius);
  overflow: hidden;
  transition: box-shadow .2s;
}

.adminUserCard:hover { box-shadow: var(--shadow); }

.adminUserTop {
  display: flex; align-items: center; justify-content: space-between;
  padding: 13px 16px 11px;
  background: var(--bg);
  border-bottom: 1px solid var(--border2);
}

.adminUserTop strong {
  display: block; font-size: 15px; font-weight: 700; color: var(--ink);
}

.adminUserTop span {
  font-family: var(--font-mono);
  font-size: 12px; color: var(--muted); margin-top: 2px;
  display: block;
}

.roleBadge {
  font-size: 11px; font-weight: 700; letter-spacing: .3px;
  padding: 3px 10px; border-radius: 100px;
  font-style: normal;
}

.roleBadge.admin {
  background: rgba(26,111,212,.12);
  color: var(--blue);
  border: 1px solid var(--blue-mid);
}

.roleBadge.user {
  background: var(--bg);
  color: var(--muted);
  border: 1px solid var(--border);
}

.adminEditGrid {
  display: grid; grid-template-columns: 1fr 1fr; gap: 10px;
  padding: 14px 16px;
}

.adminEditGrid label {
  display: flex; flex-direction: column; gap: 4px;
}

.adminEditGrid label span {
  font-size: 10.5px; font-weight: 700;
  color: var(--steel); letter-spacing: .3px;
  text-transform: uppercase;
}

.adminEditGrid input,
.adminEditGrid select { width: 100%; height: 34px; font-size: 12.5px; }

.passwordResetField { grid-column: 1 / -1; }

.adminCardActions {
  display: flex; gap: 8px; padding: 12px 16px;
  border-top: 1px solid var(--border2);
  background: var(--bg);
}

/* Center stats cards */
.centerStatCards {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 12px; padding: 16px 20px;
}

.centerStatCard {
  border: 1.5px solid var(--border);
  border-radius: var(--radius);
  padding: 16px 18px;
  transition: box-shadow .2s, border-color .2s;
}

.centerStatCard:hover {
  box-shadow: var(--shadow);
  border-color: var(--blue-mid);
}

.centerStatCard strong {
  display: block;
  font-size: 14.5px; font-weight: 700;
  color: var(--ink); margin-bottom: 12px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--border2);
}

.centerStatNums {
  display: flex; flex-wrap: wrap; gap: 8px;
}

.centerStatNums span {
  font-size: 12px; color: var(--muted);
  font-weight: 500;
  background: var(--bg);
  border: 1px solid var(--border2);
  border-radius: var(--radius-sm);
  padding: 4px 10px;
  white-space: nowrap;
}

.centerStatNums b {
  font-family: var(--font-en);
  font-size: 15px; font-weight: 700;
  color: var(--ink2); margin-right: 3px;
}

/* Admin search */
.adminSearch {
  width: 220px; height: 34px; font-size: 13px;
}

/* ── Chemical search detail ─────────────────────────────────── */
#basicInfo .detailBox { margin-top: 0; }

/* ══════════════════════════════════════════════════════════════
   RESPONSIVE
══════════════════════════════════════════════════════════════ */
@media (max-width: 1100px) {
  .summaryGrid { grid-template-columns: repeat(2, 1fr); }
  .adminGrid { grid-template-columns: 1fr; }
  .loginShell { grid-template-columns: 1fr; }
  .loginLeft { display: none; }
}

@media (max-width: 900px) {
  :root { --sidebar-w: 260px; }

  .sideNav {
    transform: translateX(-100%);
    transition: transform .22s cubic-bezier(.4,0,.2,1);
  }

  .sideNav.open { transform: translateX(0); }

  .workArea { margin-left: 0; }

  .hamburger {
    display: inline-flex;
    margin-right: 10px;
  }

  .commandStrip { display: none; }

  .workHeader {
    padding: 0 16px;
    height: auto;
    min-height: var(--header-h);
    flex-wrap: wrap;
    gap: 8px;
    padding: 10px 16px;
  }

  .pageSection { padding: 16px; }

  .searchGrid,
  .lawGrid { grid-template-columns: 1fr; }

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

  .summaryGrid { grid-template-columns: 1fr 1fr; }

  .summary { grid-template-columns: 1fr; }

  .reflectGrid { grid-template-columns: 1fr; }

  .adminFormGrid { grid-template-columns: 1fr; }

  .adminUserCards { grid-template-columns: 1fr; padding: 12px; }

  .centerStatCards { grid-template-columns: 1fr; }
}

@media (max-width: 600px) {
  .summaryGrid { grid-template-columns: 1fr; }
  .adminHeroCards { display: none; }
  .userPanel { display: none; }
}


/* ══════════════════════════════════════════════════════════════
   CHEMICAL SEARCH — KTO 배너 + 카드형 결과  (v21)
══════════════════════════════════════════════════════════════ */

/* 배너 전체 래퍼 */
.chemSearchPanel { overflow: hidden; }

.ktoSearchBanner {
  background: linear-gradient(120deg, #0c1929 0%, #1a3350 50%, #0d3360 100%);
  padding: 32px 28px 28px;
  position: relative;
  overflow: hidden;
}

.ktoSearchBanner::before {
  content: '';
  position: absolute; right: -80px; top: -80px;
  width: 340px; height: 340px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(26,111,212,.30), transparent 65%);
  pointer-events: none;
}

.ktoSearchBanner::after {
  content: '';
  position: absolute; left: 30%; bottom: -60px;
  width: 220px; height: 220px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(13,140,114,.18), transparent 65%);
  pointer-events: none;
}

.ktoSearchBannerInner {
  position: relative;
  display: flex; flex-direction: column; gap: 22px;
  max-width: 860px; margin: 0 auto;
}

/* 로고 + 타이틀 */
.ktoSearchLogo {
  display: flex; align-items: center; gap: 14px;
}

.ktoSearchLogo img {
  width: 52px; height: 52px;
  object-fit: contain;
  background: rgba(255,255,255,.12);
  border-radius: var(--radius);
  padding: 7px;
  border: 1px solid rgba(255,255,255,.18);
  flex-shrink: 0;
}

.ktoSearchLogoText strong {
  display: block;
  font-family: var(--font-en);
  font-size: 22px; font-weight: 700;
  color: #fff; letter-spacing: -.3px;
  line-height: 1;
}

.ktoSearchLogoText span {
  display: block;
  font-size: 13px; color: #90c0e0; font-weight: 500;
  margin-top: 5px; letter-spacing: .3px;
}

/* 검색 바 */
.ktoSearchBar {
  display: flex; gap: 10px; align-items: center;
}

.ktoSearchBar input#keyword {
  flex: 1;
  height: 48px;
  border-radius: var(--radius);
  border: 2px solid rgba(255,255,255,.18);
  background: rgba(255,255,255,.10);
  color: #fff;
  font-size: 15px; font-weight: 500;
  padding: 0 16px;
  backdrop-filter: blur(6px);
  transition: border-color .2s, background .2s;
}

.ktoSearchBar input#keyword::placeholder { color: rgba(255,255,255,.40); }

.ktoSearchBar input#keyword:focus {
  outline: none;
  border-color: #4a9de8;
  background: rgba(255,255,255,.15);
  box-shadow: 0 0 0 3px rgba(74,157,232,.20);
}

.ktoSearchBar select {
  height: 48px;
  border-radius: var(--radius);
  border: 2px solid rgba(255,255,255,.18);
  background: rgba(255,255,255,.10);
  color: #e0edf8;
  font-size: 13.5px; font-weight: 600;
  padding: 0 12px;
  min-width: 90px;
  backdrop-filter: blur(6px);
}

.ktoSearchBar select:focus {
  outline: none;
  border-color: #4a9de8;
  box-shadow: 0 0 0 3px rgba(74,157,232,.20);
}

.ktoSearchBtn {
  height: 48px !important;
  padding: 0 22px !important;
  font-size: 15px !important;
  font-weight: 700 !important;
  border-radius: var(--radius) !important;
  display: inline-flex; align-items: center; gap: 7px;
  background: linear-gradient(135deg, #2167b1, #1554a0) !important;
  border-color: #2167b1 !important;
  box-shadow: 0 4px 14px rgba(26,111,212,.40) !important;
  flex-shrink: 0;
}

.ktoSearchBtn:hover {
  background: linear-gradient(135deg, #1a5fa8, #12478c) !important;
  box-shadow: 0 6px 18px rgba(26,111,212,.50) !important;
}

/* ── 검색 결과 카드 그리드 ── */
.chemCardGrid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 12px;
  padding: 16px 20px 20px;
}

.chemCard {
  border: 1.5px solid var(--border);
  border-radius: var(--radius);
  padding: 16px 18px;
  cursor: pointer;
  transition: all .18s;
  position: relative;
  overflow: hidden;
  background: var(--surface);
}

.chemCard::before {
  content: '';
  position: absolute; left: 0; top: 0; bottom: 0;
  width: 4px;
  background: var(--blue-mid);
  border-radius: var(--radius) 0 0 var(--radius);
  transition: background .18s;
}

.chemCard:hover {
  border-color: var(--blue-mid);
  box-shadow: var(--shadow);
  transform: translateY(-2px);
}

.chemCard:hover::before { background: var(--blue); }

.chemCard-name {
  font-size: 15px; font-weight: 700;
  color: var(--ink);
  margin-bottom: 6px;
  line-height: 1.3;
}

.chemCard-cas {
  font-family: var(--font-mono);
  font-size: 12px; color: var(--muted);
  background: var(--bg);
  border: 1px solid var(--border2);
  border-radius: 4px;
  padding: 2px 8px;
  display: inline-block;
  margin-bottom: 8px;
}

.chemCard-meta {
  font-size: 11.5px; color: var(--muted2);
  display: flex; gap: 8px; flex-wrap: wrap;
}

.chemCard-meta span {
  background: var(--bg);
  border: 1px solid var(--border2);
  border-radius: 4px;
  padding: 1px 7px;
}

.chemCard-select {
  display: block; width: 100%;
  margin-top: 12px; height: 32px;
  background: var(--blue-pale);
  border: 1px solid var(--blue-mid);
  border-radius: var(--radius-sm);
  color: var(--blue); font-size: 12.5px; font-weight: 700;
  cursor: pointer; transition: all .15s;
}

.chemCard-select:hover {
  background: var(--blue); color: #fff; border-color: var(--blue);
}

@media (max-width: 900px) {
  .ktoSearchBar { flex-direction: column; }
  .ktoSearchBar input#keyword,
  .ktoSearchBar select,
  .ktoSearchBtn { width: 100%; }
  .chemCardGrid { grid-template-columns: 1fr; }
}


/* ============================================================
   v24 patch — user style + search/detail stability fix
   ============================================================ */

#productList,
#productList .empty,
#productList.tableWrap { display:none !important; }

.chemSearchPanel{ overflow:hidden; padding:0 !important; }

.ktoSearchBannerInner{ max-width: 1120px; }

.ktoSearchTopFrame{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:18px;
  padding:14px 18px;
  border:2px solid rgba(255,255,255,.78);
  border-radius:28px;
  background:linear-gradient(90deg, rgba(255,255,255,.98) 0%, rgba(247,251,255,.96) 76%, rgba(28,104,191,.96) 76%, rgba(10,70,152,.98) 100%);
  box-shadow:0 10px 30px rgba(4,17,35,.18);
}

.ktoSearchMark{
  display:flex;
  align-items:center;
  gap:16px;
  min-width:0;
}

.ktoSearchEmblem{
  width:76px;
  height:76px;
  border-radius:50%;
  background:#fff;
  border:3px solid #0b57c2;
  display:flex;
  align-items:center;
  justify-content:center;
  flex-shrink:0;
  box-shadow:0 6px 16px rgba(12,25,41,.14);
}

.ktoSearchEmblem img{
  width:54px;
  height:54px;
  object-fit:contain;
  background:none;
  border:0;
  padding:0;
}

.ktoSearchText strong{
  display:block;
  font-size:clamp(24px, 2.8vw, 34px);
  line-height:1.05;
  color:#101928;
  letter-spacing:-1px;
}

.ktoSearchText span{
  display:block;
  margin-top:6px;
  font-size:clamp(14px, 1.4vw, 18px);
  font-weight:800;
  color:#0b57c2;
  letter-spacing:-.2px;
}

.ktoSearchIconBadge{
  width:120px;
  min-width:120px;
  height:92px;
  border-radius:24px;
  background:linear-gradient(145deg, #0d58bf, #073d8a);
  color:#fff;
  display:flex;
  align-items:center;
  justify-content:center;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.25), 0 10px 24px rgba(8,56,128,.28);
}

.ktoSearchBar{
  margin-top:18px;
  display:grid;
  grid-template-columns:minmax(260px,1fr) 110px 90px 130px;
  gap:10px;
}

.ktoSearchBar input#keyword,
.ktoSearchBar select{
  background:rgba(255,255,255,.12);
}

.chemResultGrid{
  display:grid !important;
  grid-template-columns:repeat(auto-fill,minmax(240px,1fr));
  gap:12px;
  padding:16px 20px 20px;
}

.chemCard{
  position:relative;
  display:block;
  width:100%;
  min-height:120px;
  text-align:left;
  border:1px solid var(--border);
  border-radius:14px;
  background:#fff;
  padding:16px 16px 14px;
  cursor:pointer;
  box-shadow:var(--shadow-sm);
  transition:.16s ease;
}

.chemCard:hover{
  border-color:var(--blue);
  box-shadow:var(--shadow);
  transform:translateY(-1px);
}

.chemNo{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:34px;
  height:24px;
  border-radius:999px;
  background:var(--blue-pale);
  color:var(--blue);
  font-family:var(--font-mono);
  font-size:12px;
  font-weight:700;
  margin-bottom:12px;
}

.chemCard strong{
  display:block;
  color:var(--ink);
  font-size:18px;
  font-weight:800;
  margin-bottom:8px;
}

.chemMeta{
  display:block;
  color:var(--ink2);
  font-family:var(--font-mono);
  font-size:13px;
  font-weight:700;
}

.chemSub{
  display:block;
  margin-top:5px;
  color:var(--muted);
  font-size:12px;
  font-weight:600;
}

.chemicalDetailShell{
  background:#fff;
  border:1px solid var(--border);
  border-radius:18px;
  overflow:hidden;
  box-shadow:var(--shadow);
  margin-bottom:18px;
}

.chemicalDetailShell.hidden{ display:none !important; }

.detailHero{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:16px;
  padding:24px 26px;
  color:#fff;
  background:linear-gradient(135deg,#0c1929 0%,#1a4570 100%);
}

.detailHero h3{
  margin:8px 0 4px;
  font-size:28px;
  font-weight:900;
  letter-spacing:-.8px;
}

.detailHero p{ margin:0; color:#c0d8ec; font-weight:600; }

.detailIdentity{
  display:grid;
  grid-template-columns:1.4fr .8fr .8fr;
  gap:10px;
  padding:18px 20px;
  background:#f7fafc;
  border-bottom:1px solid var(--border2);
}

.detailIdentity > div{
  border:1px solid var(--border);
  background:#fff;
  border-radius:12px;
  padding:14px 16px;
}

.detailIdentity span{
  display:block;
  color:var(--muted);
  font-size:12px;
  font-weight:800;
  margin-bottom:6px;
}

.detailIdentity strong,
.detailIdentity b{
  color:var(--ink);
  font-size:18px;
  font-weight:900;
}

.regulationSummary{
  display:grid;
  grid-template-columns:repeat(3,minmax(160px,1fr));
  gap:10px;
  padding:18px 20px;
}

.regBox{
  border:1px solid var(--border);
  border-radius:12px;
  padding:13px 14px;
  background:#f8fafc;
}

.regBox span{
  display:block;
  color:var(--muted);
  font-size:12px;
  font-weight:800;
}

.regBox b{
  display:block;
  margin-top:6px;
  font-size:18px;
  font-weight:900;
  color:#8091a3;
}

.regBox.on{ background:#e9f7ff; border-color:#9bc8f8; }
.regBox.on b{ color:var(--blue); }

.reflectCard{
  display:grid;
  grid-template-columns:1.1fr 1.2fr 1fr auto;
  gap:10px;
  align-items:center;
  margin:0 20px 18px;
  padding:14px;
  border:1px solid var(--border);
  border-radius:12px;
  background:#f7fafc;
}

.reflectCard strong{ display:block; color:var(--ink); font-weight:900; }
.reflectCard span{ display:block; color:var(--muted); font-size:12px; font-weight:600; margin-top:2px; }

.detailRules{ padding:0 20px 20px; }

.ruleTable{ border:1px solid var(--border); border-radius:12px; overflow:hidden; }
.ruleHead, .ruleRow{ display:grid; grid-template-columns:220px 1fr; }
.ruleHead{ background:var(--ink2); color:#fff; font-weight:900; }
.ruleHead > div{ padding:12px 14px; border-right:1px solid rgba(255,255,255,.12); }
.ruleRow{ border-top:1px solid var(--border2); }
.ruleTitle{ padding:16px 14px; background:#f3f7fb; font-weight:900; color:var(--ink2); border-right:1px solid var(--border2); }
.ruleBody{ padding:16px 16px; line-height:1.7; font-weight:700; color:var(--ink); min-height:58px; }
.detailLoading{ padding:18px 20px; color:var(--blue); font-weight:900; }

@media(max-width:900px){
  .ktoSearchTopFrame{ padding:14px; }
  .ktoSearchBar{ grid-template-columns:1fr; }
  .ktoSearchIconBadge{ width:92px; min-width:92px; height:76px; border-radius:20px; }
  .detailIdentity,
  .regulationSummary,
  .reflectCard,
  .ruleHead,
  .ruleRow{ grid-template-columns:1fr; }
  .ruleTitle{ border-right:0; border-bottom:1px solid var(--border2); }
}

@media(max-width:680px){
  .ktoSearchTopFrame{ flex-direction:column; align-items:stretch; background:linear-gradient(180deg, rgba(255,255,255,.98) 0%, rgba(248,251,255,.96) 68%, rgba(13,88,191,.95) 68%, rgba(7,61,138,.98) 100%); }
  .ktoSearchMark{ align-items:flex-start; }
  .ktoSearchIconBadge{ width:100%; min-width:0; height:72px; }
}


/* ============================================================
   V25 — 검색창 내부 검색 + 엑셀형 상세정보 복구
   ============================================================ */

#productList,
#productList .empty,
#productList.tableWrap { display:none !important; }

.chemSearchPanel{ padding:0 !important; border-radius:22px !important; overflow:hidden !important; }
.ktoSearchBanner{ padding:34px 28px !important; background:linear-gradient(135deg,#07192d 0%,#0f2f4f 100%) !important; }
.ktoSearchBannerInner{ max-width:1400px !important; margin:0 auto !important; }

.ktoMegaSearch{
  display:grid;
  grid-template-columns:auto minmax(320px,1fr) 210px;
  align-items:center;
  min-height:132px;
  border:3px solid #8ebeff;
  border-radius:34px;
  overflow:hidden;
  background:#fff;
  box-shadow:0 22px 52px rgba(0,24,62,.28);
}

.ktoMegaLeft{ display:flex; align-items:center; gap:18px; min-width:430px; padding:20px 28px 20px 24px; }
.ktoSearchEmblem{
  width:86px; height:86px; border-radius:50%; border:4px solid #1262c7; background:#fff;
  display:flex; align-items:center; justify-content:center; box-shadow:0 8px 22px rgba(18,98,199,.20); flex-shrink:0;
}
.ktoSearchEmblem img{ width:62px; height:62px; object-fit:contain; padding:0 !important; border:0 !important; background:transparent !important; }
.ktoMegaTitle strong{ display:block; font-size:38px; line-height:1.05; letter-spacing:-1.6px; color:#111827; font-weight:950; }
.ktoMegaTitle span{ display:block; margin-top:7px; color:#0052bf; font-size:20px; font-weight:950; letter-spacing:-.6px; }

.ktoMegaControls{ display:grid; grid-template-columns:minmax(220px,1fr) 116px 88px; gap:9px; padding:24px 20px; border-left:1px solid #e2e8f0; }
.ktoMegaControls input,.ktoMegaControls select{
  height:52px; border:1.5px solid #c8d7e8; border-radius:12px; background:#f8fbff;
  font-size:14px; font-weight:800; color:#0c1929;
}

.ktoMegaSearchBtn{
  align-self:stretch; width:100%; border:0; border-left:2px solid #0a3b86;
  background:linear-gradient(145deg,#1e6bd1,#07499e); color:#fff; cursor:pointer;
  display:flex; flex-direction:column; gap:8px; align-items:center; justify-content:center;
  font-weight:950; font-size:17px; transition:.15s ease;
}
.ktoMegaSearchBtn:hover{ filter:brightness(1.06); }

.chemResultGrid{ display:grid !important; grid-template-columns:repeat(auto-fill,minmax(245px,1fr)); gap:12px; padding:18px 20px 22px; }
.chemCard{
  position:relative; display:block; width:100%; min-height:126px; text-align:left;
  border:1.5px solid var(--border); border-radius:14px; background:#fff; padding:16px;
  cursor:pointer; box-shadow:var(--shadow-sm); transition:.16s ease;
}
.chemCard:hover{ border-color:var(--blue); box-shadow:var(--shadow); transform:translateY(-1px); }
.chemNo{
  display:inline-flex; align-items:center; justify-content:center; width:34px; height:24px; border-radius:999px;
  background:var(--blue-pale); color:var(--blue); font-family:var(--font-mono); font-size:12px; font-weight:700; margin-bottom:12px;
}
.chemCard strong{ display:block; color:var(--ink); font-size:18px; font-weight:900; margin-bottom:8px; }
.chemMeta{ display:block; color:var(--ink2); font-family:var(--font-mono); font-size:13px; font-weight:800; }
.chemSub{ display:block; margin-top:5px; color:var(--muted); font-size:12px; font-weight:700; }

/* 상세정보: 예전 엑셀 상세정보 느낌 */
.chemicalDetailShell{ background:#fff; border:1px solid var(--border); border-radius:18px; overflow:hidden; box-shadow:var(--shadow); margin-bottom:18px; }
.chemicalDetailShell.hidden{ display:none !important; }
.detailHeaderExcel{
  display:flex; justify-content:space-between; align-items:flex-start; gap:16px;
  padding:24px 28px; color:#fff; background:linear-gradient(135deg,#0c1929 0%,#1a4570 100%);
}
.detailHeaderExcel h3{ margin:8px 0 4px; font-size:30px; font-weight:950; letter-spacing:-.8px; }
.detailHeaderExcel p{ margin:0; color:#cde6ff; font-weight:800; }

.selectedTitle{
  background:#1a2e44; color:#fff; font-weight:950; padding:8px 10px; font-size:13px; border-top:1px solid #1a2e44;
}
.selectedMaterialTable,.regSummaryExcel,.detailRulesExcel{ padding:0 18px 18px; }
.selectedMaterialTable{ padding-top:18px; }

.excelDetailTable{ width:100%; border-collapse:collapse; table-layout:fixed; background:#fff; }
.excelDetailTable th{
  background:#e9f2fc; border:1px solid #cdd9e8; color:#0c1929; font-weight:950;
  text-align:center; padding:10px 8px; word-break:keep-all;
}
.excelDetailTable td{
  border:1px solid #dbe4ef; color:#0c1929; font-weight:800;
  padding:10px 12px; line-height:1.65; white-space:normal; word-break:keep-all;
}
.selectedMaterialInfo th{ width:13%; }

.regSummaryGrid{
  display:grid; grid-template-columns:repeat(6, minmax(120px,1fr));
  border-left:1px solid #dbe4ef; border-top:1px solid #dbe4ef;
}
.regLabel,.regValue{
  min-height:36px; display:flex; align-items:center; justify-content:center;
  border-right:1px solid #dbe4ef; border-bottom:1px solid #dbe4ef;
  font-weight:950; text-align:center; padding:7px 8px;
}
.regLabel{ background:#eef4fb; color:#0c1929; font-size:12px; }
.regValue{ background:#ccd6e1; color:#0c1929; font-size:14px; }
.regValue.on{ background:#1087c8; color:#fff; }
.lawDetailTable{ table-layout:fixed; }
.lawDetailTable thead th{ background:#d9ecff; }
.lawDetailTable th:first-child{ width:210px; }
.lawDetailTable tbody th{ background:#f4f8fc; font-size:13px; }
.lawDetailTable tbody td{ min-height:46px; vertical-align:middle; }
.lawDetailTable tbody tr:nth-child(even) td,.lawDetailTable tbody tr:nth-child(even) th{ background:#f9fbfe; }

.reflectCard{
  display:grid; grid-template-columns:1.15fr 1.2fr 1fr auto; gap:10px; align-items:center;
  margin:0 18px 20px; padding:14px; border:1px solid var(--border); border-radius:12px; background:#f7fafc;
}
.reflectCard strong{ display:block; color:var(--ink); font-weight:950; }
.reflectCard span{ display:block; color:var(--muted); font-size:12px; font-weight:700; margin-top:2px; }
.detailLoading{ padding:18px 20px; color:var(--blue); font-weight:950; }

@media(max-width:1100px){
  .ktoMegaSearch{ grid-template-columns:1fr; }
  .ktoMegaLeft{ min-width:0; }
  .ktoMegaControls{ border-left:0; border-top:1px solid #e2e8f0; }
  .ktoMegaSearchBtn{ min-height:86px; border-left:0; border-top:2px solid #0a3b86; flex-direction:row; }
  .regSummaryGrid{ grid-template-columns:repeat(2, minmax(120px,1fr)); }
  .reflectCard{ grid-template-columns:1fr; }
}
@media(max-width:700px){
  .ktoMegaLeft{ display:grid; justify-items:center; text-align:center; }
  .ktoMegaControls{ grid-template-columns:1fr; }
  .ktoMegaTitle strong{ font-size:30px; }
  .ktoMegaTitle span{ font-size:17px; }
  .selectedMaterialInfo tr,.selectedMaterialInfo th,.selectedMaterialInfo td{ display:block; width:100%; }
  .lawDetailTable th:first-child{ width:130px; }
}


/* ============================================================
   V27 — 상세보기 버튼 기준 상세정보 강제 표시
   ============================================================ */

.chemCard{
  display:flex !important;
  flex-direction:column !important;
}

.chemDetailBtn{
  margin-top:auto;
  height:32px;
  width:100%;
  border:1px solid #a9cdf8;
  border-radius:7px;
  background:#e9f4ff;
  color:#0052bf;
  font-weight:950;
  cursor:pointer;
}

.chemDetailBtn:hover{
  background:#d8ecff;
  border-color:#1262c7;
}

.chemicalDetailShell{
  background:#fff !important;
  border:1px solid var(--border) !important;
  border-radius:18px !important;
  overflow:hidden !important;
  box-shadow:var(--shadow) !important;
  margin-bottom:18px !important;
}

.chemicalDetailShell.hidden{
  display:none !important;
}

.selectedMaterialTable,
.regSummaryExcel,
.detailRulesExcel{
  display:block !important;
}

.selectedTitle{
  background:#1a2e44 !important;
  color:#fff !important;
  font-weight:950 !important;
  padding:8px 10px !important;
  font-size:13px !important;
  border-top:1px solid #1a2e44 !important;
}

.excelDetailTable{
  width:100% !important;
  border-collapse:collapse !important;
  table-layout:fixed !important;
  background:#fff !important;
}

.excelDetailTable th{
  background:#e9f2fc !important;
  border:1px solid #cdd9e8 !important;
  color:#0c1929 !important;
  font-weight:950 !important;
  text-align:center !important;
  padding:10px 8px !important;
}

.excelDetailTable td{
  border:1px solid #dbe4ef !important;
  color:#0c1929 !important;
  font-weight:800 !important;
  padding:10px 12px !important;
  line-height:1.65 !important;
  white-space:normal !important;
}

.regSummaryGrid{
  display:grid !important;
  grid-template-columns:repeat(6, minmax(120px,1fr)) !important;
  border-left:1px solid #dbe4ef !important;
  border-top:1px solid #dbe4ef !important;
}

.regLabel,
.regValue{
  min-height:36px !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  border-right:1px solid #dbe4ef !important;
  border-bottom:1px solid #dbe4ef !important;
  font-weight:950 !important;
  text-align:center !important;
  padding:7px 8px !important;
}

.regLabel{
  background:#eef4fb !important;
  color:#0c1929 !important;
  font-size:12px !important;
}

.regValue{
  background:#ccd6e1 !important;
  color:#0c1929 !important;
  font-size:14px !important;
}

.regValue.on{
  background:#1087c8 !important;
  color:#fff !important;
}

.lawDetailTable th:first-child{
  width:220px !important;
}

.lawDetailTable tbody th{
  background:#f4f8fc !important;
  font-size:13px !important;
}

.lawDetailTable tbody tr:nth-child(even) td,
.lawDetailTable tbody tr:nth-child(even) th{
  background:#f9fbfe !important;
}

@media(max-width:1100px){
  .regSummaryGrid{
    grid-template-columns:repeat(2, minmax(120px,1fr)) !important;
  }
}


/* ============================================================
   V28 — 센터명 가독성 / 초기화 / 삭제승인
   ============================================================ */

.excelInputTable th:nth-child(2),
.excelInputTable td:nth-child(2){
  min-width:112px !important;
  width:112px !important;
  white-space:normal !important;
  word-break:keep-all !important;
  line-height:1.35 !important;
}

.excelInputTable th:nth-child(1),
.excelInputTable td:nth-child(1){
  min-width:50px !important;
  width:50px !important;
}

.excelInputTable th:last-child,
.excelInputTable td:last-child{
  min-width:100px !important;
  width:100px !important;
  text-align:center !important;
  position:sticky;
  right:0;
  background:#fff;
  z-index:2;
}

.excelInputTable thead th:last-child{
  background:#163b63 !important;
  color:#fff !important;
  z-index:5;
}

.centerCell{
  font-weight:950 !important;
  color:#123a5f !important;
  background:#f3f8fd !important;
  white-space:normal !important;
  word-break:keep-all !important;
}

.btn.tiny{
  height:26px;
  min-width:54px;
  padding:0 8px;
  font-size:12px;
  border-radius:6px;
}

.pendingBadge{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:5px 7px;
  border-radius:999px;
  background:#fff7ed;
  color:#c2410c;
  border:1px solid #fed7aa;
  font-size:12px;
  font-weight:950;
  white-space:nowrap;
}

.deletePendingRow td{
  background:#fffaf0 !important;
}

.deleteRequestCards{
  display:grid;
  gap:10px;
}

.deleteRequestCard{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
  padding:14px;
  border:1px solid var(--border);
  border-radius:12px;
  background:#fff;
}

.deleteRequestCard strong{
  display:block;
  color:var(--ink);
  font-size:16px;
  margin-bottom:4px;
}

.deleteRequestCard span{
  color:var(--muted);
  font-size:12px;
  font-weight:800;
}

.deleteRequestActions{
  display:flex;
  gap:8px;
  flex-shrink:0;
}

@media(max-width:900px){
  .deleteRequestCard{
    display:grid;
  }
}


/* ============================================================
   V30 — 내부 페이지 중앙 워터마크 적용
   로그인 화면 제외, 기능 영향 없음
   ============================================================ */

.siteWatermark{
  position:fixed;
  left:calc(var(--sidebar-w, 260px) / 2);
  top:0;
  right:0;
  bottom:0;
  display:flex;
  align-items:center;
  justify-content:center;
  pointer-events:none;
  z-index:0;
  opacity:1;
}

.siteWatermark img{
  width:min(520px, 42vw);
  max-height:62vh;
  object-fit:contain;
  opacity:.075;
  filter:grayscale(6%);
  user-select:none;
}

/* 로그인 화면에서는 워터마크 숨김 */
body:not(.loggedIn) .siteWatermark,
body.loginMode .siteWatermark,
body:has(.loginScreen:not(.hidden)) .siteWatermark{
  display:none !important;
}

/* 실제 업무 화면은 워터마크 위로 올라오게 */
.appLayout,
.workArea,
.pageSection,
.panel,
.commandStrip,
.workHeader,
.sideNav{
  position:relative;
}

.workArea,
.pageSection,
.panel,
.commandStrip,
.workHeader,
.sideNav{
  z-index:1;
}

/* 배경이 너무 막혀 보이지 않도록 패널은 살짝 투명감 */
.pageSection > .panel,
.chemicalDetailShell,
.dashboardHero,
.adminHero{
  background:rgba(255,255,255,.96);
}

/* 표 영역은 가독성 때문에 흰색 유지 */
.tableWrap,
.excelInputWrap,
.excelInputTable,
.excelDetailTable{
  background:#fff;
}

@media(max-width:1000px){
  .siteWatermark{
    left:0;
  }
  .siteWatermark img{
    width:min(420px, 58vw);
    opacity:.055;
  }
}


/* ============================================================
   V31 — 중앙 워터마크 재배치 + 사고사망속보 API 티커
   ============================================================ */

/* 워터마크를 화면 정가운데에 확실하게 표시 */
.siteWatermark{
  position:fixed !important;
  left:var(--sidebar-w, 256px) !important;
  top:var(--header-h, 64px) !important;
  right:0 !important;
  bottom:0 !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  pointer-events:none !important;
  z-index:0 !important;
}

.siteWatermark img{
  width:min(620px, 46vw) !important;
  max-height:70vh !important;
  object-fit:contain !important;
  opacity:.135 !important;
  filter:grayscale(4%) saturate(.95) !important;
  user-select:none !important;
}

/* 로그인 화면에는 표시하지 않음 */
#loginScreen:not(.hidden) ~ #appLayout .siteWatermark,
#appLayout.hidden .siteWatermark{
  display:none !important;
}

/* 콘텐츠는 워터마크 위에 올라오되, 빈 공간에는 로고가 보이게 */
.workArea{
  position:relative !important;
  z-index:1 !important;
  background:transparent !important;
}

.pageSection{
  position:relative !important;
  z-index:1 !important;
}

.pageSection > .panel,
.dashboardHero,
.summaryCard,
.chemicalDetailShell{
  position:relative !important;
  z-index:2 !important;
}

/* 사고사망속보 바 — 공단 스타일과 구분되도록 브리핑 카드형으로 재설계 */
.disasterTicker{
  position:relative;
  z-index:3;
  margin:18px 24px 0;
  min-height:86px;
  display:grid;
  grid-template-columns:minmax(210px, 280px) 1fr auto;
  align-items:center;
  gap:16px;
  padding:14px 18px;
  background:linear-gradient(135deg, rgba(238,246,255,.96), rgba(255,255,255,.98));
  border:1px solid #c9dbef;
  border-radius:22px;
  box-shadow:0 10px 24px rgba(15, 54, 96, .08);
  overflow:hidden;
}
.disasterTicker::before{
  content:'';
  position:absolute;
  inset:0;
  background:linear-gradient(90deg, rgba(46,109,201,.07), transparent 36%, rgba(14,173,168,.05));
  pointer-events:none;
}
.tickerBadge{
  position:relative;
  z-index:1;
  display:flex;
  align-items:center;
  gap:14px;
  min-height:58px;
  padding:12px 16px;
  border-radius:18px;
  background:linear-gradient(135deg, #153f7b, #2e6dc9);
  color:#fff;
  box-shadow:0 10px 18px rgba(29, 74, 142, .20);
}
.tickerBadgeIcon{
  display:flex;
  align-items:center;
  justify-content:center;
  width:34px;
  height:34px;
  border-radius:12px;
  background:rgba(255,255,255,.18);
  font-size:17px;
  font-weight:900;
}
.tickerBadgeText{
  display:flex;
  flex-direction:column;
  gap:2px;
}
.tickerBadgeEyebrow{
  font-size:10px;
  font-weight:800;
  letter-spacing:.22em;
  opacity:.8;
}
.tickerBadge strong{
  font-size:24px;
  font-weight:950;
  letter-spacing:-.7px;
  line-height:1.05;
}
.tickerMain{
  position:relative;
  z-index:1;
  min-width:0;
}
.tickerScope{
  margin-bottom:7px;
  color:#517091;
  font-size:12px;
  font-weight:800;
  letter-spacing:.04em;
}
.tickerViewport{
  padding:12px 14px;
  border-radius:16px;
  background:rgba(255,255,255,.85);
  border:1px solid rgba(171, 198, 227, .7);
  overflow:hidden;
  white-space:nowrap;
}
.tickerTrack{
  display:inline-flex;
  align-items:center;
  gap:30px;
  min-width:max-content;
  animation:ktoTickerMove 88s linear infinite;
  color:#14293d;
  font-size:17px;
  font-weight:850;
  letter-spacing:-.22px;
}
.tickerTrack.paused{ animation-play-state:paused; }
.tickerItem{
  display:inline-flex;
  align-items:center;
  gap:8px;
}
.tickerItem b{
  color:#0b4da2;
  font-weight:950;
}
.tickerBody{
  color:#42576e;
  font-weight:760;
}
.tickerControls{
  position:relative;
  z-index:2;
  display:flex;
  gap:10px;
  align-items:center;
}
.tickerBtn{
  min-width:70px;
  height:42px;
  padding:0 14px;
  border-radius:14px;
  border:1px solid #c0d5ea;
  background:#fff;
  color:#23415f;
  font-size:14px;
  font-weight:900;
  cursor:pointer;
  box-shadow:0 8px 18px rgba(18, 47, 86, .10);
}
.tickerBtn:hover{
  background:#f3f8ff;
  border-color:#8eb8e7;
}
.tickerPauseBtn{
  min-width:92px;
}
.tickerTopBtn{
  min-width:58px;
}
@keyframes ktoTickerMove{
  0%{ transform:translateX(0); }
  100%{ transform:translateX(-50%); }
}
@media(max-width:1000px){
  .siteWatermark{
    left:0 !important;
  }
  .siteWatermark img{
    width:min(520px, 62vw) !important;
    opacity:.10 !important;
  }
  .disasterTicker{
    margin:12px 14px 0;
    grid-template-columns:1fr;
    gap:12px;
    padding:14px;
  }
  .tickerBadge{
    width:100%;
    justify-content:flex-start;
  }
  .tickerMain{
    width:100%;
  }
  .tickerControls{
    width:100%;
    justify-content:flex-end;
  }
  .tickerTrack{
    font-size:15px;
    gap:24px;
    animation-duration:96s;
  }
  .tickerBtn{
    min-width:64px;
    height:38px;
    font-size:13px;
  }
}


/* ============================================================
   V32 — 사고사망속보 전체 업종 기준
   ============================================================ */

.disasterTicker{
  grid-template-columns:auto auto 1fr auto !important;
}

.tickerScope{
  height:34px;
  padding:0 12px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border-radius:999px;
  background:#0f2f4f;
  color:#fff;
  font-size:13px;
  font-weight:950;
  white-space:nowrap;
}

@media(max-width:1000px){
  .disasterTicker{
    grid-template-columns:1fr auto !important;
  }
  .tickerScope{
    grid-column:1 / -1;
    width:max-content;
  }
}


/* ============================================================
   V33 — 사고사망속보 오버뷰 전용 + 느린 속도 + 이번 주 필터
   ============================================================ */

#dashboard.hidden #disasterTicker{
  display:none !important;
}

/* 속도 늦춤: 기존 58초 → 115초 */
.tickerTrack{
  animation-duration:115s !important;
}

.disasterTicker{
  margin:0 0 16px 0 !important;
}

.tickerScope{
  background:#102f4c !important;
  color:#dbeafe !important;
}


/* ============================================================
   V34 — 저장 유지 / 엑셀 규제컬럼 반영 / 중앙 로고 가시성 보강
   ============================================================ */

.siteWatermark{
  position:fixed !important;
  left:var(--sidebar-w, 256px) !important;
  top:var(--header-h, 64px) !important;
  right:0 !important;
  bottom:0 !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  pointer-events:none !important;
  z-index:1 !important;
}

.siteWatermark img{
  width:min(720px, 54vw) !important;
  max-height:76vh !important;
  object-fit:contain !important;
  opacity:.22 !important;
  filter:grayscale(2%) saturate(1.04) !important;
  user-select:none !important;
}

#loginScreen:not(.hidden) ~ #appLayout .siteWatermark,
#appLayout.hidden .siteWatermark{
  display:none !important;
}

.workArea{
  background:transparent !important;
}

.pageSection,
.workHeader,
.disasterTicker,
.panel,
.dashboardHero,
.summaryGrid,
.chemicalDetailShell{
  position:relative !important;
  z-index:3 !important;
}

.pageSection > .panel,
.chemicalDetailShell,
.summaryCard{
  background:rgba(255,255,255,.97) !important;
}

#msdsInputBody input[data-key]{
  min-width:100%;
}


/* ============================================================
   V35 — 왼쪽 여백 축소 / 사이드바 글자 안쪼개짐 / 월별 재해사례
   ============================================================ */

:root{
  --sidebar-w:190px !important;
}

/* 왼쪽 공간 과하게 비는 현상 축소 */
.sideNav{
  width:190px !important;
  min-width:190px !important;
  max-width:190px !important;
}

.workArea{
  margin-left:190px !important;
  width:calc(100% - 190px) !important;
  background:transparent !important;
}

/* 사이드바 제목이 KTOP / SAFE-MDS 로 쪼개져 보이는 것 방지 */
.brand{
  padding:18px 14px 16px !important;
  display:grid !important;
  grid-template-columns:40px 1fr !important;
  column-gap:10px !important;
  align-items:start !important;
}

.brand img,
.brandLogo{
  width:40px !important;
  height:40px !important;
  flex:0 0 40px !important;
}

.brand strong,
.brandTitle,
.sideBrandTitle{
  display:block !important;
  white-space:normal !important;
  word-break:keep-all !important;
  overflow-wrap:normal !important;
  line-height:1.16 !important;
  font-size:17px !important;
  letter-spacing:-.4px !important;
  max-width:118px !important;
}

.brand span,
.brandSub,
.sideBrandSub{
  display:block !important;
  white-space:normal !important;
  word-break:keep-all !important;
  overflow-wrap:normal !important;
  line-height:1.25 !important;
  font-size:11px !important;
  max-width:118px !important;
}

.sideNav a,
.navItem,
.sidebar button{
  white-space:normal !important;
  word-break:keep-all !important;
  overflow-wrap:normal !important;
  line-height:1.2 !important;
}

/* 중앙 로고가 빈 공간에서 보이도록 다시 보강 */
.siteWatermark{
  left:190px !important;
  z-index:1 !important;
}

.siteWatermark img{
  width:min(760px, 56vw) !important;
  opacity:.22 !important;
}

/* 티커는 대시보드/오버뷰에서만 */
#dashboard.hidden #disasterTicker{
  display:none !important;
}

/* 속도는 살짝 느리게 유지 */
.tickerTrack{
  animation-duration:115s !important;
}

@media(max-width:1000px){
  :root{ --sidebar-w:0px !important; }
  .sideNav{ width:0 !important; min-width:0 !important; max-width:0 !important; transform:translateX(-100%); }
  .workArea{ margin-left:0 !important; width:100% !important; }
  .siteWatermark{ left:0 !important; }
}


/* ============================================================
   V36 — 왼쪽 빈 공간 제거 + 재해사례 전체 조회 복구
   ============================================================ */

/* 현재 사이드바 영역이 비어 보이는 문제 때문에 업무영역을 왼쪽으로 붙입니다. */
:root{
  --sidebar-w:0px !important;
}

.sideNav{
  width:0 !important;
  min-width:0 !important;
  max-width:0 !important;
  overflow:hidden !important;
  transform:translateX(-100%) !important;
  border:0 !important;
  box-shadow:none !important;
}

.workArea{
  margin-left:0 !important;
  width:100% !important;
  max-width:100% !important;
}

.workHeader,
.pageSection,
.disasterTicker{
  margin-left:0 !important;
}

/* 워터마크도 실제 화면 중앙 기준으로 다시 잡음 */
.siteWatermark{
  left:0 !important;
  right:0 !important;
}

/* 사고사망속보는 전체 최신 재해사례 기준 */
.tickerScope{
  min-width:max-content;
}



/* ============================================================
   V37 — 왼쪽 메뉴바 복구 + 메뉴 옆 빈공간 제거
   ============================================================ */

/* 메뉴바는 살리고, 업무영역은 메뉴바 바로 옆에 붙임 */
:root{
  --sidebar-w:210px !important;
}

.sideNav{
  position:fixed !important;
  left:0 !important;
  top:0 !important;
  bottom:0 !important;
  width:210px !important;
  min-width:210px !important;
  max-width:210px !important;
  transform:none !important;
  overflow:visible !important;
  border-right:1px solid rgba(255,255,255,.08) !important;
  box-shadow:8px 0 24px rgba(15,23,42,.10) !important;
  z-index:50 !important;
}

.workArea{
  margin-left:210px !important;
  width:calc(100% - 210px) !important;
  max-width:calc(100% - 210px) !important;
}

/* 헤더/본문이 메뉴 오른쪽에 딱 붙도록 */
.workHeader,
.pageSection,
.disasterTicker{
  margin-left:0 !important;
}

/* 워터마크도 메뉴 제외한 실제 업무영역 중앙에 표시 */
.siteWatermark{
  left:210px !important;
  right:0 !important;
}

/* 사이드바 텍스트 쪼개짐 방지 */
.brand,
.sideBrand,
.sidebarBrand{
  box-sizing:border-box !important;
  width:100% !important;
}

.brand strong,
.brandTitle,
.sideBrandTitle,
.sideNav strong{
  white-space:normal !important;
  word-break:keep-all !important;
  overflow-wrap:normal !important;
  line-height:1.15 !important;
}

.sideNav a,
.navItem,
.sideNav button{
  white-space:normal !important;
  word-break:keep-all !important;
  overflow-wrap:normal !important;
}

/* 모바일에서만 메뉴 숨김 */
@media(max-width:900px){
  :root{ --sidebar-w:0px !important; }

  .sideNav{
    width:0 !important;
    min-width:0 !important;
    max-width:0 !important;
    transform:translateX(-100%) !important;
    overflow:hidden !important;
  }

  .workArea{
    margin-left:0 !important;
    width:100% !important;
    max-width:100% !important;
  }

  .siteWatermark{
    left:0 !important;
  }
}


/* ============================================================
   V38 — 사고사망 게시판 속보 티커
   ============================================================ */

.tickerScope{
  min-width:max-content !important;
}

.tickerItem b{
  color:#111827 !important;
}

.tickerTrack{
  animation-duration:115s !important;
}


/* ============================================================
   V39 — MSDS 통합관리 표 헤더 깨짐/정렬 보정
   ============================================================ */

/* 표 헤더와 셀 가운데 정렬 */
.excelInputTable th,
.excelInputTable td,
.tableWrap table th,
.tableWrap table td,
.msdsTable th,
.msdsTable td{
  text-align:center !important;
  vertical-align:middle !important;
}

/* 헤더 글자가 한 글자씩 세로로 깨지지 않게 처리 */
.excelInputTable th,
.tableWrap table th,
.msdsTable th{
  white-space:normal !important;
  word-break:keep-all !important;
  overflow-wrap:normal !important;
  line-height:1.25 !important;
  padding:10px 8px !important;
  min-width:86px !important;
}

/* 센터명 컬럼 폭 확보 */
.excelInputTable th:nth-child(2),
.excelInputTable td:nth-child(2),
.tableWrap table th:nth-child(2),
.tableWrap table td:nth-child(2){
  min-width:105px !important;
  width:105px !important;
}

/* 관리/PSM 쪽 마지막 컬럼 폭 확보 */
.excelInputTable th:last-child,
.excelInputTable td:last-child,
.tableWrap table th:last-child,
.tableWrap table td:last-child{
  min-width:100px !important;
  width:100px !important;
}

/* 입력칸 안의 글자도 가운데 정렬 */
.excelInputTable input,
.tableWrap table input{
  text-align:center !important;
}

/* 표는 가로 스크롤로 자연스럽게 보이게 */
.excelInputWrap,
.tableWrap{
  overflow:auto !important;
}



/* ============================================================
   V40 — 하단 목록 센터명 가운데 정렬 보정
   ============================================================ */

/* MSDS 목록/통합표의 센터명 데이터도 가운데 정렬 */
.centerCell,
td.centerCell,
.excelInputTable td.centerCell,
.tableWrap table td.centerCell,
.msdsTable td.centerCell{
  text-align:center !important;
  vertical-align:middle !important;
  justify-content:center !important;
  align-items:center !important;
}

/* 센터명 칸 내부 글자 줄바꿈도 자연스럽게 */
.centerCell{
  white-space:normal !important;
  word-break:keep-all !important;
  overflow-wrap:normal !important;
  line-height:1.35 !important;
  font-weight:900 !important;
}



/* ============================================================
   V42 — 상세정보 MSDS 목록 반영 효율 개선
   ============================================================ */

#reflectProduct{
  min-width:360px;
}

#reflectPercent{
  min-width:220px;
}

.detailBox{
  white-space:pre-line;
}



/* ============================================================
   V43 — MSDS 목록 반영 제품 선택 범위 보정
   ============================================================ */

#reflectProduct option{
  font-weight:700;
}



/* ============================================================
   V44 — 시스템관리자 목록반영 제품 표시 + PSM 고정 해제 강제보정
   ============================================================ */

/* 시스템관리자도 제품 선택이 가능하도록 JS/API에서 보정함 */

/* PSM/관리 컬럼이 가로 스크롤 중 오른쪽에 붙어있는 문제 강제 해제 */
.excelInputTable th,
.excelInputTable td,
.tableWrap table th,
.tableWrap table td,
.msdsTable th,
.msdsTable td,
.productTable th,
.productTable td{
  position:static !important;
  right:auto !important;
  left:auto !important;
  inset:auto !important;
  transform:none !important;
}

/* 기존 sticky 클래스/속성이 남아있어도 무조건 해제 */
.sticky,
.stickyCol,
.sticky-col,
.fixedCol,
.fixed-col,
.pinRight,
.pin-right,
.rightSticky,
.right-sticky,
.actionSticky,
.action-sticky,
.psmSticky,
.psm-sticky{
  position:static !important;
  right:auto !important;
  left:auto !important;
  z-index:auto !important;
  box-shadow:none !important;
}

/* 표 wrapper 내부에서 오른쪽 컬럼만 떠 보이지 않게 배경/색상 통일 */
.excelInputTable thead th,
.tableWrap table thead th,
.msdsTable thead th,
.productTable thead th{
  background:#163b63 !important;
  color:#fff !important;
  border-color:#284b6f !important;
  text-align:center !important;
  vertical-align:middle !important;
}

.excelInputTable thead tr:first-child th,
.tableWrap table thead tr:first-child th,
.msdsTable thead tr:first-child th,
.productTable thead tr:first-child th{
  background:#1f6fcf !important;
  color:#fff !important;
  border-color:#2b7edb !important;
}

.excelInputTable tbody td,
.tableWrap table tbody td,
.msdsTable tbody td,
.productTable tbody td{
  text-align:center !important;
  vertical-align:middle !important;
}

/* 가로 스크롤은 wrapper만 담당 */
.excelInputWrap,
.tableWrap,
.tableScroll,
.gridScroll{
  overflow-x:auto !important;
  overflow-y:auto !important;
}

/* 마지막 컬럼은 폭만 확보하고 절대 고정하지 않음 */
.excelInputTable th:last-child,
.excelInputTable td:last-child,
.tableWrap table th:last-child,
.tableWrap table td:last-child,
.msdsTable th:last-child,
.msdsTable td:last-child,
.productTable th:last-child,
.productTable td:last-child{
  min-width:92px !important;
  position:static !important;
  right:auto !important;
  z-index:auto !important;
}

/* PSM 제출대상으로 보이는 마지막 전 컬럼도 고정 해제 */
.excelInputTable th:nth-last-child(2),
.excelInputTable td:nth-last-child(2),
.tableWrap table th:nth-last-child(2),
.tableWrap table td:nth-last-child(2),
.msdsTable th:nth-last-child(2),
.msdsTable td:nth-last-child(2),
.productTable th:nth-last-child(2),
.productTable td:nth-last-child(2){
  min-width:96px !important;
  position:static !important;
  right:auto !important;
  z-index:auto !important;
}



/* ============================================================
   V48 — 업로드 양식 쉽게 받기
   ============================================================ */
.templateEasyBox{
  display:flex !important;
  align-items:center !important;
  justify-content:space-between !important;
  gap:12px !important;
  padding:12px 14px !important;
  margin:10px 0 12px !important;
  border:1px solid #BFD6F3 !important;
  border-radius:10px !important;
  background:#F4F9FF !important;
}
.templateEasyBox strong{
  display:block !important;
  color:#0B2A4A !important;
  font-weight:900 !important;
  margin-bottom:3px !important;
}
.templateEasyBox span{
  display:block !important;
  color:#47617D !important;
  font-size:13px !important;
  font-weight:700 !important;
}
.templateEasyBtns{
  display:flex !important;
  gap:8px !important;
  flex-wrap:wrap !important;
  justify-content:flex-end !important;
}
.templateDownloadBtn{
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  min-height:34px !important;
  padding:0 14px !important;
  border:1px solid #86B7EA !important;
  border-radius:8px !important;
  background:#EAF3FF !important;
  color:#0B5CAD !important;
  font-weight:900 !important;
  text-decoration:none !important;
}
.templateDownloadBtn.primary{
  background:#1F6FCF !important;
  color:#fff !important;
  border-color:#1F6FCF !important;
}
.templateDownloadBtn.primary:hover{
  background:#1559AB !important;
  border-color:#1559AB !important;
}


/* V50 — 관리자/제품 선택 오류 보정 */
#reflectProduct{
  min-width:520px !important;
}


/* ============================================================
   V57 — 법령검색 결과 카드형 개선
   ============================================================ */

.lawResultWrap{
  padding:16px !important;
  background:#fff !important;
}

.lawCardList{
  display:grid !important;
  grid-template-columns:repeat(auto-fit, minmax(360px, 1fr)) !important;
  gap:14px !important;
}

.lawCard{
  border:1px solid #cbdced !important;
  border-radius:14px !important;
  background:#fff !important;
  box-shadow:0 8px 20px rgba(15,47,79,.07) !important;
  padding:16px 18px !important;
  min-height:180px !important;
}

.lawCardTop{
  display:flex !important;
  align-items:center !important;
  gap:8px !important;
  margin-bottom:10px !important;
}

.lawNo{
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  width:28px !important;
  height:28px !important;
  border-radius:50% !important;
  background:#173b63 !important;
  color:#fff !important;
  font-weight:900 !important;
  font-size:13px !important;
}

.lawBadge{
  display:inline-flex !important;
  align-items:center !important;
  min-height:26px !important;
  padding:0 10px !important;
  border-radius:999px !important;
  background:#eaf3ff !important;
  border:1px solid #bfd6f3 !important;
  color:#0b5cad !important;
  font-weight:900 !important;
  font-size:12px !important;
}

.lawTitle{
  margin:0 0 10px !important;
  color:#06213d !important;
  font-size:17px !important;
  line-height:1.45 !important;
  font-weight:900 !important;
  word-break:keep-all !important;
}

.lawContent{
  color:#1f3449 !important;
  font-size:14px !important;
  line-height:1.75 !important;
  word-break:keep-all !important;
  white-space:normal !important;
}

.lawContent mark,
.lawTitle mark{
  background:#ffe08a !important;
  color:#061b31 !important;
  border-radius:4px !important;
  padding:0 3px !important;
  font-weight:900 !important;
}

.muted{
  color:#789 !important;
}

@media (max-width: 760px){
  .lawCardList{
    grid-template-columns:1fr !important;
  }
}


/* ============================================================
   V59 — MSDS 표/자동저장/대시보드 팝업 개선
   ============================================================ */
.stat{
  border:0;
  text-align:left;
  cursor:pointer;
  font-family:inherit;
}
.stat:hover{
  transform:translateY(-1px);
  box-shadow:0 10px 24px rgba(15,47,79,.12) !important;
}
.msdsTable td,
.msdsTable th{
  text-align:center !important;
  vertical-align:middle !important;
}
.msdsTable input{
  text-align:center !important;
}
.msdsTable .chemicalNoteCell input,
.oneLineInput{
  min-width:220px !important;
  white-space:nowrap !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
}
.msdsTable .regCell input,
.regInput{
  min-width:82px !important;
  text-align:center !important;
  font-weight:800 !important;
}
.uploadStatus.error{
  border-color:#ffb7b7 !important;
  background:#fff5f5 !important;
  color:#c32323 !important;
}
.modalOverlayV59{
  position:fixed !important;
  inset:0 !important;
  z-index:9999 !important;
  background:rgba(5,20,35,.48) !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  padding:24px !important;
}
.modalCardV59{
  width:min(1040px, 96vw) !important;
  max-height:84vh !important;
  overflow:hidden !important;
  background:#fff !important;
  border:1px solid #cbdced !important;
  border-radius:18px !important;
  box-shadow:0 24px 80px rgba(0,0,0,.24) !important;
}
.modalHeadV59{
  display:flex !important;
  align-items:center !important;
  justify-content:space-between !important;
  gap:16px !important;
  padding:18px 20px !important;
  background:#0f2f4f !important;
  color:#fff !important;
}
.modalHeadV59 strong{
  display:block !important;
  font-size:22px !important;
  font-weight:900 !important;
}
.modalHeadV59 span{
  display:block !important;
  margin-top:4px !important;
  color:#bcd8f4 !important;
  font-weight:700 !important;
}
.modalBodyV59{
  padding:18px !important;
  overflow:auto !important;
  max-height:calc(84vh - 76px) !important;
  background:#f4f8fc !important;
}
.popupProductGrid{
  display:grid !important;
  grid-template-columns:repeat(auto-fit, minmax(300px, 1fr)) !important;
  gap:12px !important;
}
.popupProductCard{
  background:#fff !important;
  border:1px solid #cbdced !important;
  border-radius:14px !important;
  padding:14px 16px !important;
  box-shadow:0 6px 18px rgba(15,47,79,.07) !important;
}
.popupProductTitle{
  font-size:16px !important;
  font-weight:900 !important;
  color:#06213d !important;
  margin-bottom:6px !important;
}
.popupProductMeta{
  color:#49627d !important;
  font-size:12px !important;
  font-weight:700 !important;
  margin-bottom:10px !important;
}
.popupChem{
  background:#f1f6fc !important;
  border:1px dashed #b9cfe4 !important;
  border-radius:10px !important;
  padding:8px !important;
  color:#0f2f4f !important;
  font-weight:800 !important;
  margin-bottom:10px !important;
}
.popupBadges{
  display:flex !important;
  flex-wrap:wrap !important;
  gap:6px !important;
}
.popupBadges span{
  display:inline-flex !important;
  align-items:center !important;
  min-height:24px !important;
  padding:0 8px !important;
  border-radius:999px !important;
  background:#eaf3ff !important;
  border:1px solid #bfd6f3 !important;
  color:#0b5cad !important;
  font-weight:900 !important;
  font-size:12px !important;
}


/* V61 Regulation + Risk Assessment */
.lawTopTabs{display:flex;gap:10px;margin-bottom:14px;flex-wrap:wrap}
.lawTopTab{border:1px solid #b9c9df;background:#eef4fb;color:#143b66;padding:11px 18px;border-radius:14px;font-weight:800;cursor:pointer}
.lawTopTab.active{background:linear-gradient(135deg,#0f4e9c,#1f7eea);color:#fff;border-color:#0f4e9c;box-shadow:0 12px 24px rgba(31,126,234,.18)}
.lawPane.hidden{display:none}
.regulationBannerPanel{padding:18px}
.regulationHero{display:flex;flex-direction:column;gap:16px}
.regulationHeroBadge{display:flex;align-items:center;gap:14px;padding:14px 20px;border-radius:999px;background:linear-gradient(135deg,#0c4ab3 0%,#1e69e7 40%,#0b3e92 100%);color:#fff;box-shadow:inset 0 2px 0 rgba(255,255,255,.25),0 10px 20px rgba(30,105,231,.18);width:max-content;max-width:100%}
.regulationHeroBadge img{width:52px;height:52px;border-radius:50%;background:#fff;padding:5px;object-fit:contain;box-shadow:0 2px 8px rgba(0,0,0,.18)}
.regulationHeroBadge span{font-size:28px;font-weight:900;letter-spacing:-.02em;white-space:nowrap}
.regulationHeroSearch{display:grid;grid-template-columns:minmax(280px,1fr) 220px 140px;gap:10px;align-items:center}
.regulationHeroSearch input,.regulationHeroSearch select{height:56px;border:1px solid #c8d6e8;border-radius:14px;padding:0 16px;font-size:16px;background:#fff}
.regulationSearchBtn{height:56px;border:none;border-radius:14px;background:linear-gradient(135deg,#0d4aa0,#287ff1);color:#fff;font-weight:800;cursor:pointer;box-shadow:0 8px 18px rgba(29,102,224,.18)}
.riskIntroText{margin-bottom:14px;color:#48627f;line-height:1.6}
.riskGuideBox{display:grid;grid-template-columns:1.2fr 1fr;gap:18px;align-items:start}
.riskGuideBox strong{display:block;margin-bottom:8px;font-size:18px;color:#0f3155}
.riskGuideBox p{margin:0;color:#48627f;line-height:1.7}
.riskGuideBox ul{margin:0;padding-left:18px;color:#48627f;line-height:1.8}
.riskFormGrid{display:grid;grid-template-columns:repeat(2,minmax(240px,1fr));gap:14px;margin-top:8px}
.riskFormGrid label{display:flex;flex-direction:column;gap:8px}
.riskFormGrid label>span{font-size:13px;font-weight:800;color:#2f4f73}
.riskFormGrid input,.riskFormGrid textarea{border:1px solid #c8d6e8;border-radius:12px;padding:12px 14px;font-size:14px;background:#fff}
.riskFormGrid .full{grid-column:1/-1}
.riskImagePreview{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px;margin-top:16px}
.riskImagePreview.empty{display:block;padding:18px;border:1px dashed #c6d4e6;border-radius:14px;color:#6a819c;background:#f8fbff}
.riskThumb{border:1px solid #d5e1ee;border-radius:14px;background:#fff;padding:10px;display:flex;flex-direction:column;gap:8px;box-shadow:0 4px 14px rgba(9,58,107,.05)}
.riskThumb img{width:100%;height:130px;object-fit:cover;border-radius:10px;background:#eef4fb}
.riskThumb span{font-size:12px;color:#506b88;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.riskActionRow{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:16px}
.riskSmallNotice{font-size:12px;color:#6b8198}
.riskClassBoard{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}
.riskClassCard{border:1px solid #d7e3f0;border-radius:16px;background:linear-gradient(180deg,#ffffff,#f7fbff);padding:14px;box-shadow:0 8px 18px rgba(8,65,120,.05)}
.riskClassCode{display:inline-flex;padding:4px 9px;border-radius:999px;background:#e9f2ff;color:#1654a5;font-weight:900;font-size:12px;margin-bottom:8px}
.riskClassName{font-size:15px;font-weight:800;color:#16385f;margin-bottom:6px;line-height:1.45}
.riskClassReason{font-size:13px;color:#5a7390;line-height:1.6}
.riskSummaryBox{margin-bottom:14px;border:1px solid #d7e3f0;border-radius:16px;background:#f8fbff;padding:16px 18px}
.riskSummaryBox strong{display:block;color:#143b66;margin-bottom:8px}
.riskSummaryBox p{margin:0;color:#48627f;line-height:1.7}
.riskTableWrap{overflow:auto;border:1px solid #d6e2ef;border-radius:16px}
.tableNote{font-size:12px;color:#7b8fa6}
.riskTable{width:100%;border-collapse:collapse;min-width:1100px;background:#fff}
.riskTable th{background:#eef4fb;color:#143b66;font-weight:900;font-size:13px;padding:12px;border-bottom:1px solid #d7e3f0;border-right:1px solid #d7e3f0;text-align:center}
.riskTable td{padding:12px 12px;border-bottom:1px solid #e5edf6;border-right:1px solid #e5edf6;vertical-align:top;line-height:1.65;color:#23384f;font-size:13px}
.riskCellTitle{font-weight:800;color:#12365a;margin-bottom:4px}
.riskCellSub{font-size:12px;color:#6e84a0}
.riskCounterCell{background:#fbfdff}
@media (max-width: 900px){
  .regulationHeroBadge span{font-size:22px;white-space:normal}
  .regulationHeroSearch{grid-template-columns:1fr}
  .riskGuideBox{grid-template-columns:1fr}
  .riskFormGrid{grid-template-columns:1fr}
}


/* ============================================================
   V63 — 위험성평가 화면 배치/간격 정돈
   ============================================================ */
#risk .panel{
  margin-bottom:18px !important;
}
#risk .panelHead{
  min-height:52px !important;
  padding:0 20px !important;
}
.riskInfoPanel{
  border-radius:18px !important;
  overflow:hidden !important;
}
.riskGuideBox{
  grid-template-columns:1fr 1.15fr !important;
  gap:24px !important;
  padding:6px 2px !important;
}
.riskGuideBox div,
.riskGuideBox ul{
  background:#f8fbff !important;
  border:1px solid #d8e5f2 !important;
  border-radius:16px !important;
  padding:18px 20px !important;
}
.riskGuideBox ul{
  list-style-position:inside !important;
}
.riskHeroPanel{
  padding-bottom:22px !important;
}
.riskIntroText{
  margin:4px 0 20px !important;
  padding:14px 16px !important;
  border:1px solid #d8e5f2 !important;
  border-radius:14px !important;
  background:#f8fbff !important;
  color:#36546f !important;
  font-size:14px !important;
}
.riskFormGrid{
  grid-template-columns:repeat(4, minmax(160px, 1fr)) !important;
  gap:16px !important;
  align-items:start !important;
}
.riskFormGrid label{
  min-width:0 !important;
}
.riskFormGrid .full{
  grid-column:1/-1 !important;
}
.riskFormGrid input,
.riskFormGrid textarea{
  min-height:46px !important;
  border-radius:14px !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.8) !important;
}
.riskFormGrid textarea{
  min-height:120px !important;
  resize:vertical !important;
  line-height:1.65 !important;
}
.riskImagePreview{
  margin-top:18px !important;
  padding:14px !important;
  border:1px dashed #c7d8ea !important;
  border-radius:16px !important;
  background:#fbfdff !important;
}
.riskImagePreview:not(.empty){
  display:grid !important;
}
.riskThumb{
  min-height:190px !important;
}
.riskThumb img{
  height:145px !important;
}
.riskActionRow{
  margin-top:18px !important;
  padding-top:14px !important;
  border-top:1px solid #e3edf7 !important;
}
#riskAnalyzeBtn{
  min-width:150px !important;
  height:46px !important;
  border-radius:12px !important;
  font-weight:900 !important;
}
.riskClassBoard{
  gap:14px !important;
}
.riskClassCard{
  min-height:116px !important;
}
.riskTableWrap{
  margin-top:4px !important;
}
.riskTable th{
  white-space:nowrap !important;
}
.riskTable td{
  min-width:130px !important;
}
.riskTable td:nth-child(3),
.riskTable td:nth-child(4){
  min-width:260px !important;
}
.lawTopTabs{
  display:none !important;
}
@media (max-width: 1200px){
  .riskFormGrid{
    grid-template-columns:repeat(2, minmax(220px, 1fr)) !important;
  }
}
@media (max-width: 760px){
  .riskFormGrid,
  .riskGuideBox{
    grid-template-columns:1fr !important;
  }
}

/* ============================================================
   V64 — 전체 버튼 UI 리프레시
   ============================================================ */
:root{
  --btn-radius-xl: 14px;
  --btn-shadow: 0 8px 20px rgba(15, 37, 64, .14);
  --btn-shadow-hover: 0 12px 26px rgba(15, 37, 64, .18);
}

button,
.btn,
.miniBtn,
.templateDownloadBtn,
.ktoMegaSearchBtn,
.regulationSearchBtn,
.chemDetailBtn,
.navItem,
.tickerControls button,
.hamburger{
  transition:
    transform .16s ease,
    box-shadow .2s ease,
    background .2s ease,
    border-color .2s ease,
    color .2s ease,
    filter .2s ease !important;
}

button:focus-visible,
.btn:focus-visible,
.miniBtn:focus-visible,
.templateDownloadBtn:focus-visible,
.ktoMegaSearchBtn:focus-visible,
.regulationSearchBtn:focus-visible,
.chemDetailBtn:focus-visible,
.navItem:focus-visible,
.tickerControls button:focus-visible,
.hamburger:focus-visible{
  outline:none !important;
  box-shadow:0 0 0 4px rgba(59,130,246,.18), var(--btn-shadow) !important;
}

.btn{
  height:42px !important;
  padding:0 16px !important;
  border-radius:var(--btn-radius-xl) !important;
  font-size:13.5px !important;
  font-weight:800 !important;
  letter-spacing:-.15px !important;
  box-shadow:var(--btn-shadow) !important;
}
.btn:hover{ transform:translateY(-1px); box-shadow:var(--btn-shadow-hover) !important; }
.btn:active{ transform:translateY(0); box-shadow:0 5px 14px rgba(15,37,64,.16) !important; }

.btn.primary{
  background:linear-gradient(135deg,#0f4ea2 0%, #1f7ef2 100%) !important;
  color:#fff !important;
  border-color:#0f58bf !important;
}
.btn.primary:hover{ filter:brightness(1.04); }

.btn.success{
  background:linear-gradient(135deg,#0a8d74 0%, #18b48a 100%) !important;
  color:#fff !important;
  border-color:#0c9a7b !important;
}
.btn.success:hover{ filter:brightness(1.04); }

.btn.gray{
  background:linear-gradient(135deg,#516c86 0%, #667f98 100%) !important;
  color:#fff !important;
  border-color:#556f88 !important;
}
.btn.gray:hover{ filter:brightness(1.03); }

.btn.line{
  background:linear-gradient(180deg,#ffffff 0%, #f4f8fd 100%) !important;
  color:#174c88 !important;
  border:1.5px solid #bfd1e7 !important;
  box-shadow:0 6px 16px rgba(18,52,88,.08) !important;
}
.btn.line:hover{
  background:linear-gradient(180deg,#fafdff 0%, #eaf3ff 100%) !important;
  border-color:#8fb2de !important;
  color:#0d4ca1 !important;
}

.btn.danger{
  background:linear-gradient(180deg,#fff6f4 0%, #ffe9e5 100%) !important;
  color:#d04d3a !important;
  border:1.5px solid #efc2bc !important;
  box-shadow:0 6px 16px rgba(168,75,52,.09) !important;
}
.btn.danger:hover{
  background:linear-gradient(180deg,#ffe8e2 0%, #ffd8d0 100%) !important;
  color:#b93a26 !important;
  border-color:#e7aaa0 !important;
}

.btn.small{ height:36px !important; padding:0 13px !important; font-size:12.5px !important; border-radius:12px !important; }
.btn.tiny{ height:30px !important; padding:0 10px !important; font-size:11.5px !important; border-radius:10px !important; }

.miniBtn{
  height:30px !important;
  border-radius:10px !important;
  padding:0 12px !important;
  font-size:12px !important;
  font-weight:800 !important;
  border:1.5px solid #c8d7ea !important;
  background:linear-gradient(180deg,#ffffff 0%, #f5f9ff 100%) !important;
  color:#224666 !important;
  box-shadow:0 4px 10px rgba(18,52,88,.06) !important;
}
.miniBtn:hover{ transform:translateY(-1px); background:#edf5ff !important; border-color:#8fb2de !important; color:#0d4ca1 !important; }
.miniBtn.danger, .danger{
  border-color:#edc0b9 !important;
  color:#c74633 !important;
  background:linear-gradient(180deg,#fff7f5 0%, #ffe8e3 100%) !important;
}
.miniBtn.danger:hover{ background:#ffd9d1 !important; color:#ae2d1b !important; }

.navItem{
  position:relative !important;
  min-height:46px !important;
  padding:0 16px 0 18px !important;
  border-radius:14px !important;
  background:linear-gradient(180deg, rgba(255,255,255,.03), rgba(255,255,255,.01)) !important;
  border:1px solid rgba(160,195,240,.08) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.05) !important;
}
.navItem::before{
  width:7px !important;
  height:7px !important;
  border-radius:50% !important;
  left:14px !important;
  background:#6fa7de !important;
  box-shadow:none !important;
}
.navItem:hover{
  transform:translateX(2px) !important;
  background:linear-gradient(135deg, rgba(30,80,146,.40), rgba(21,61,111,.55)) !important;
  border-color:rgba(135,178,230,.30) !important;
}
.navItem.active{
  background:linear-gradient(135deg,#123f7a 0%, #195fbb 100%) !important;
  border-color:#78abeb !important;
  box-shadow:0 10px 20px rgba(3,18,43,.22), inset 0 1px 0 rgba(255,255,255,.10) !important;
}
.navItem.active::before{ background:#79bbff !important; }

.ktoMegaSearchBtn,
.regulationSearchBtn,
.templateDownloadBtn.primary,
.chemDetailBtn{
  border-radius:16px !important;
  font-weight:900 !important;
  letter-spacing:-.15px !important;
  box-shadow:0 10px 22px rgba(15,76,161,.18) !important;
}
.ktoMegaSearchBtn:hover,
.regulationSearchBtn:hover,
.templateDownloadBtn.primary:hover,
.chemDetailBtn:hover{
  transform:translateY(-1px) !important;
  filter:brightness(1.04) !important;
}
.ktoMegaSearchBtn{
  background:linear-gradient(135deg,#0e4da0,#267df0) !important;
  border:1px solid #0c4eaa !important;
}
.regulationSearchBtn{
  min-width:128px !important;
  background:linear-gradient(135deg,#0d4aa0,#287ff1) !important;
  border:1px solid #0c4dab !important;
}
.chemDetailBtn{
  background:linear-gradient(180deg,#f7fbff 0%, #eaf3ff 100%) !important;
  border:1.5px solid #a7c4e6 !important;
  color:#0d4ca1 !important;
}
.chemDetailBtn:hover{ background:linear-gradient(180deg,#edf5ff 0%, #deedff 100%) !important; }
.templateDownloadBtn.primary{
  background:linear-gradient(135deg,#0f4ea2 0%, #1f7ef2 100%) !important;
  color:#fff !important;
  border:1px solid #0f58bf !important;
}

.hamburger,
.tickerControls button{
  border-radius:14px !important;
  background:linear-gradient(180deg,#ffffff 0%, #f5f9ff 100%) !important;
  border:1.5px solid #c9d8ea !important;
  box-shadow:0 8px 18px rgba(18,52,88,.10) !important;
}
.hamburger:hover,
.tickerControls button:hover{
  transform:translateY(-1px) !important;
  background:linear-gradient(180deg,#ffffff 0%, #ebf3ff 100%) !important;
  border-color:#8eb3df !important;
}

.panel .btnRow,
.cardActions,
.actionRow{
  gap:10px !important;
}


/* ============================================================
   V65 — 안전보건교육일지 + QR 참석 등록
   ============================================================ */
.eduModule .panelHead{
  gap:16px;
}
.eduModule .headActions{
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
}
.eduModule .headActions select,
.eduModule .headActions input{
  height:42px;
  border:1px solid #cbdbea;
  border-radius:12px;
  padding:0 12px;
  background:#fff;
  color:#173653;
  font-weight:700;
}
.eduModule .headActions input{min-width:240px;}
.eduHelpLine{
  padding:13px 16px;
  margin-bottom:16px;
  border:1px solid #d6e5f3;
  border-radius:14px;
  background:#f7fbff;
  color:#4e6a86;
  font-weight:700;
}
.eduList{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(300px,1fr));
  gap:14px;
}
.eduList.empty{
  display:block;
}
.eduListCard{
  text-align:left;
  border:1px solid #d2e0ef;
  border-radius:18px;
  background:linear-gradient(180deg,#fff,#f8fbff);
  padding:16px;
  box-shadow:0 8px 22px rgba(15,47,79,.08);
  cursor:pointer;
}
.eduListCard:hover{
  transform:translateY(-2px);
  box-shadow:0 14px 28px rgba(15,47,79,.12);
}
.eduListTop{
  display:flex;
  justify-content:space-between;
  gap:10px;
  align-items:flex-start;
}
.eduListTop strong{
  font-size:16px;
  font-weight:900;
  color:#0c2746;
  line-height:1.45;
}
.eduListTop span{
  flex:0 0 auto;
  padding:4px 8px;
  border-radius:999px;
  background:#eaf3ff;
  border:1px solid #c7dced;
  color:#10559f;
  font-size:12px;
  font-weight:900;
}
.eduListMeta{
  margin-top:10px;
  color:#526d88;
  font-size:13px;
  font-weight:700;
  line-height:1.6;
}
.eduListBottom{
  display:flex;
  justify-content:space-between;
  margin-top:12px;
  color:#174c88;
  font-size:12px;
  font-weight:900;
}
.eduWorkGrid{
  display:grid;
  grid-template-columns:minmax(420px, 520px) 1fr;
  gap:18px;
  align-items:start;
}
.eduFormPanel{
  background:#f8fbff;
  border:1px solid #d4e2f0;
  border-radius:18px;
  padding:16px;
}
.eduFormPanel h4{
  margin:8px 0 12px;
  font-size:16px;
  color:#0c2746;
  font-weight:900;
}
.eduGrid2,.eduGrid4{
  display:grid;
  gap:12px;
}
.eduGrid2{grid-template-columns:1fr 1fr;}
.eduGrid4{grid-template-columns:repeat(4,1fr); margin:12px 0;}
.eduFormPanel label,
.eduFull{
  display:flex;
  flex-direction:column;
  gap:7px;
  margin-bottom:12px;
}
.eduFormPanel label span{
  font-size:13px;
  font-weight:900;
  color:#264c70;
}
.eduFormPanel input,
.eduFormPanel select,
.eduFormPanel textarea{
  width:100%;
  border:1px solid #c9d9e9;
  border-radius:13px;
  padding:11px 12px;
  background:#fff;
  color:#102b46;
  font-family:inherit;
  font-size:14px;
  font-weight:700;
}
.eduFormPanel textarea{
  resize:vertical;
  line-height:1.65;
}
.eduInline{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:8px;
}
.eduPhotoPreview{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(150px,1fr));
  gap:10px;
  padding:12px;
  border:1px dashed #c6d8ea;
  border-radius:14px;
  background:#fff;
  margin:8px 0 14px;
}
.eduPhotoPreview.empty{
  display:block;
  color:#71869c;
  text-align:center;
  padding:18px;
}
.eduPhotoCard{
  border:1px solid #d8e5f2;
  border-radius:14px;
  background:#fff;
  padding:9px;
  display:flex;
  flex-direction:column;
  gap:7px;
}
.eduPhotoCard img{
  width:100%;
  height:105px;
  object-fit:cover;
  border-radius:10px;
  background:#f1f6fb;
}
.eduPhotoCard input{
  height:34px;
  font-size:12px;
}
.eduQrBox{
  border:1px solid #d6e4f3;
  background:#fff;
  border-radius:16px;
  padding:14px;
  margin-bottom:16px;
}
.eduQrGrid{
  display:grid;
  grid-template-columns:150px 1fr;
  gap:16px;
  align-items:center;
}
.eduQrGrid img{
  width:150px;
  height:150px;
  border:1px solid #c9d9e9;
  border-radius:14px;
  background:#fff;
  padding:8px;
}
.eduQrGrid b{
  display:block;
  font-size:17px;
  color:#0c2746;
  margin-bottom:6px;
}
.eduQrGrid p{
  margin:0 0 10px;
  color:#526d88;
  line-height:1.6;
  font-weight:700;
}
.eduQrUrl{
  width:100%;
  height:36px;
  border:1px solid #d3e1ef;
  border-radius:10px;
  padding:0 10px;
  color:#47627d;
  background:#f8fbff;
}
.eduQrActions{
  display:flex;
  gap:8px;
  margin-top:10px;
  flex-wrap:wrap;
}
.eduAttendeeActions{
  display:flex;
  gap:10px;
  align-items:center;
  margin-bottom:10px;
  flex-wrap:wrap;
}
.eduAutoNote{
  color:#6d8196;
  font-size:12px;
  font-weight:800;
}
.eduAttendeeList{
  overflow:auto;
  border:1px solid #d6e4f3;
  border-radius:16px;
  background:#fff;
}
.eduAttendeeList.empty{
  padding:18px;
  color:#71869c;
  text-align:center;
}
.eduAttendeeList table{
  width:100%;
  border-collapse:collapse;
  min-width:520px;
}
.eduAttendeeList th{
  background:#eef5fc;
  color:#153d66;
  padding:10px;
  border-bottom:1px solid #d6e4f3;
  font-size:13px;
}
.eduAttendeeList td{
  padding:10px;
  border-bottom:1px solid #edf3f9;
  text-align:center;
  font-size:13px;
  color:#23384f;
}
.eduAttendeeList img{
  max-width:90px;
  max-height:34px;
}
.eduPreviewPanel{
  overflow:auto;
}
.eduPreviewPages{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:18px;
}
.eduPrintPage{
  width:210mm;
  min-height:297mm;
  background:#fff;
  box-shadow:0 8px 30px rgba(15,47,79,.12);
  padding:7mm;
  color:#111;
}
.eduDocBrand{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:8px;
  margin-bottom:8px;
  color:#555;
}
.eduDocBrand img{
  width:34px;
  height:34px;
  object-fit:contain;
}
.eduDocBrand b{
  font-size:16px;
}
.eduDocBrand span{
  font-size:11px;
  color:#777;
}
.eduDocTable{
  width:100%;
  border-collapse:collapse;
  table-layout:fixed;
  font-size:12px;
}
.eduDocTable td{
  border:1px solid #555;
  padding:5px 6px;
  vertical-align:middle;
  line-height:1.45;
  word-break:keep-all;
}
.eduDocTable .label{
  background:#fafafa;
  font-weight:900;
  text-align:center;
}
.eduDocTitle{
  border:none!important;
  padding:0 0 10px!important;
}
.eduTitleFlex{
  display:grid;
  grid-template-columns:1fr 194px;
  gap:10px;
  align-items:start;
  font-size:27px;
  font-weight:900;
  text-align:center;
}
.eduApproval{
  border-collapse:collapse;
  width:194px;
  font-size:11px;
}
.eduApproval td{
  height:26px;
  border:1px solid #555;
  text-align:center;
  font-size:11px;
  font-weight:700;
}
.eduApproval tr:nth-child(2) td{
  height:36px;
}
.eduCatGrid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:7px 18px;
}
.eduCatGrid span{
  display:flex;
  gap:6px;
  align-items:center;
}
.eduCatGrid b{
  width:13px;
  height:13px;
  border:1px solid #222;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  font-size:10px;
}
.eduDocContent{
  min-height:205px;
  vertical-align:top!important;
}
.eduDocPhotoGrid{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin-top:8px;
}
.eduDocPhotoGrid div{
  width:180px;
  border:1px solid #bbb;
  position:relative;
}
.eduDocPhotoGrid img{
  width:100%;
  height:120px;
  object-fit:cover;
  display:block;
}
.eduDocPhotoGrid span{
  display:block;
  padding:4px;
  font-size:11px;
  background:#fff;
}
.eduAttendanceTitle{
  text-align:center;
  margin:26px 0 28px;
  font-size:20px;
}
.eduAttendanceTable{
  width:100%;
  border-collapse:collapse;
  table-layout:fixed;
  font-size:12px;
}
.eduAttendanceTable th,
.eduAttendanceTable td{
  border:1px solid #555;
  height:28px;
  padding:4px 6px;
  text-align:center;
}
.eduAttendanceTable th{
  background:#fafafa;
}
.eduAttendanceTable th:nth-child(1){width:42px;}
.eduAttendanceTable th:nth-child(2){width:150px;}
.eduAttendanceTable th:nth-child(3){width:120px;}
.eduAttendanceTable img{
  max-width:110px;
  max-height:34px;
}
@media (max-width:1300px){
  .eduWorkGrid{grid-template-columns:1fr;}
  .eduPreviewPanel{max-height:none;}
}
@media (max-width:800px){
  .eduGrid2,.eduGrid4{grid-template-columns:1fr;}
  .eduQrGrid{grid-template-columns:1fr;}
  .eduPrintPage{width:100%;min-height:auto;}
}
@media print{
  body.printingEducation *{visibility:hidden!important;}
  body.printingEducation #education,
  body.printingEducation #education *,
  body.printingEducation .eduPreviewPages,
  body.printingEducation .eduPreviewPages *{visibility:visible!important;}
  body.printingEducation .sidebar,
  body.printingEducation .commandStrip,
  body.printingEducation .workHeader,
  body.printingEducation .eduListPanel,
  body.printingEducation .eduFormPanel,
  body.printingEducation .panelHead,
  body.printingEducation .eduHelpLine{display:none!important;}
  body.printingEducation .appShell,
  body.printingEducation .workArea,
  body.printingEducation #education,
  body.printingEducation .eduModule,
  body.printingEducation .eduEditorPanel,
  body.printingEducation .eduWorkGrid,
  body.printingEducation .eduPreviewPanel{
    display:block!important;
    margin:0!important;
    padding:0!important;
    width:100%!important;
    max-width:none!important;
    background:#fff!important;
    box-shadow:none!important;
    border:none!important;
  }
  body.printingEducation .eduPreviewPages{
    display:block!important;
  }
  body.printingEducation .eduPrintPage{
    visibility:visible!important;
    box-shadow:none!important;
    width:210mm!important;
    min-height:297mm!important;
    padding:7mm!important;
    margin:0!important;
    page-break-after:always;
  }
  @page{size:A4 portrait;margin:0;}
}


/* ============================================================
   V66 — 교육일지 사진 크기 조절 / 버튼 통일 / 교육·위험성평가 센터범위
   ============================================================ */
.btn, button.btn, .miniBtn, .templateDownloadBtn, .ktoMegaSearchBtn, .regulationSearchBtn, .chemDetailBtn,
.tickerControls button, .hamburger, .eduListCard .btn, .eduQrActions .btn, a.btn{
  border-radius:14px !important;
  font-weight:900 !important;
  letter-spacing:-.2px !important;
}
.btn.line, .miniBtn, .tickerControls button, .hamburger, a.btn.line{
  background:linear-gradient(180deg,#ffffff 0%,#f3f8ff 100%) !important;
  border:1.5px solid #b8d0eb !important;
  color:#0f58bf !important;
  box-shadow:0 6px 16px rgba(15,88,191,.08) !important;
}
.btn.line:hover, .miniBtn:hover, .tickerControls button:hover, .hamburger:hover, a.btn.line:hover{
  background:#eaf4ff !important;
  border-color:#7fb0e7 !important;
  color:#084b9c !important;
  transform:translateY(-1px) !important;
}
.btn.primary{
  background:linear-gradient(135deg,#0f58bf,#1e7eea) !important;
  border:1px solid #0a55ba !important;
  box-shadow:0 8px 18px rgba(15,88,191,.18) !important;
}
.btn.success{
  background:linear-gradient(135deg,#0a8d74,#10b789) !important;
  border:1px solid #079273 !important;
}
.btn.gray{
  background:linear-gradient(135deg,#4f6780,#6d8298) !important;
  border:1px solid #526e88 !important;
}
.btn.danger, .miniBtn.danger{
  background:linear-gradient(180deg,#fff9f7,#ffe9e4) !important;
  border:1.5px solid #efbdb5 !important;
  color:#cf4632 !important;
  box-shadow:0 6px 14px rgba(207,70,50,.08) !important;
}
.eduAttendeeActions .btn.line.small,
#eduReloadAttendeesBtn{
  height:38px !important;
  padding:0 16px !important;
  border-radius:13px !important;
  background:#f7fbff !important;
  border:1.5px solid #b8d0eb !important;
  color:#0f58bf !important;
}
.eduPhotoCard{gap:9px !important;}
.eduPhotoSizeRow{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:8px;
}
.eduPhotoSizeRow label{
  display:flex !important;
  flex-direction:column !important;
  gap:5px !important;
  margin:0 !important;
  font-size:11px !important;
  font-weight:900 !important;
  color:#41617f !important;
}
.eduPhotoSizeRow input{
  height:34px !important;
  padding:0 8px !important;
  font-size:12px !important;
  border-radius:10px !important;
  text-align:center;
}
#eduSpecialTaskWrap.hidden{display:none !important;}
.riskFormGrid select,
#riskCenter{
  width:100%;
  min-height:46px;
  border:1px solid #c8d6e8;
  border-radius:14px;
  padding:0 12px;
  background:#fff;
  color:#102b46;
  font-weight:800;
}
.eduDocPhotoGrid div{overflow:hidden;}
.eduDocPhotoGrid img{object-fit:cover;}


/* ============================================================
   V67 — 교육일지 특별교육/결재/인쇄양식 보강
   ============================================================ */
.eduFormPanel select{
  height:auto!important;
  min-height:48px!important;
  line-height:1.45!important;
  white-space:normal!important;
  text-overflow:clip!important;
  padding-right:36px!important;
}
#eduSpecialTask{
  min-height:54px!important;
  font-size:13px!important;
  line-height:1.35!important;
}
#eduSpecialTaskWrap{
  grid-column:1 / -1!important;
}
.eduPhotoSizeBox{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:8px;
}
.eduPhotoSizeBox label{
  gap:4px!important;
  margin:0!important;
  font-size:11px!important;
  color:#3f6386!important;
  font-weight:900!important;
}
.eduPhotoSizeBox input{
  height:36px!important;
  text-align:center!important;
  font-size:13px!important;
}
.eduApprovalSetup{
  border:1px solid #d6e4f3;
  background:#fff;
  border-radius:16px;
  padding:14px;
  margin-bottom:16px;
}
.eduApprovalHelp{
  padding:12px 14px;
  background:#f7fbff;
  border:1px solid #d6e5f3;
  border-radius:12px;
  color:#496785;
  font-size:12.5px;
  font-weight:800;
  line-height:1.55;
  margin-bottom:12px;
}
.eduApprovalEditor{
  display:flex;
  flex-direction:column;
  gap:8px;
}
.eduApproverRow{
  display:grid;
  grid-template-columns:1.05fr 1fr 84px 86px 54px;
  gap:8px;
  align-items:end;
}
.eduApproverField{display:flex;flex-direction:column;gap:4px;margin:0;}
.eduApproverField span{font-size:11px;font-weight:900;color:#486582;}
.eduApproverRow input, .eduApproverRow select{
  height:40px!important;
  font-size:13px!important;
}
.eduApprovalStatus{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  height:32px;
  border:1px solid #d7e3f0;
  border-radius:999px;
  background:#f2f7fc;
  color:#617990;
  font-weight:900;
  font-size:12px;
}
.eduApprovalStatus.done{
  background:#e9fff8;
  border-color:#9fe0c9;
  color:#08785d;
}
.eduApprovalActions{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
  margin-top:12px;
}
.eduApprovalQrGrid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(130px,1fr));
  gap:12px;
}
.eduApprovalQrCard{
  border:1px solid #d8e5f2;
  border-radius:14px;
  background:#fff;
  padding:10px;
  text-align:center;
  display:flex;
  flex-direction:column;
  gap:7px;
  align-items:center;
}
.eduApprovalQrCard img{
  width:116px;
  height:116px;
  border:1px solid #d8e5f2;
  border-radius:12px;
  padding:6px;
  background:#fff;
}
.eduApprovalQrCard b{
  color:#0c2746;
  font-size:13px;
  font-weight:900;
}
.eduApprovalQrCard span{
  color:#55708a;
  font-size:12px;
  font-weight:800;
}
.eduDocTopBrand{
  margin-bottom:8px;
}
.eduDocKtoLogo{
  display:flex;
  justify-content:flex-end;
  align-items:center;
  gap:8px;
  color:#555;
  margin-bottom:6px;
}
.eduDocKtoLogo img{
  width:34px;
  height:34px;
  object-fit:contain;
}
.eduDocKtoLogo b{
  display:block;
  font-size:16px;
  color:#444;
  line-height:1.1;
}
.eduDocKtoLogo span{
  display:block;
  font-size:9px;
  color:#777;
  letter-spacing:.02em;
}
.eduDocBlueLine{
  height:5px;
  background:#008bd2;
  margin-top:4px;
}
.eduDocOrangeLine{
  height:5px;
  background:#f58b00;
  margin-top:2px;
}
.eduTitleFlex{
  grid-template-columns:1fr auto!important;
}
#eduApprovalPreview{
  width:auto;
  min-width:194px;
}
.eduApproval{
  width:auto!important;
  min-width:194px;
}
.eduApproval td{
  min-width:48px;
  padding:3px 5px!important;
  height:27px!important;
}
.eduApproval img{
  max-width:58px;
  max-height:30px;
  object-fit:contain;
}
.eduDocTable td[contenteditable="true"]{
  outline:none;
}
.eduDocTable td[contenteditable="true"]:focus,
.eduDocTable div[contenteditable="true"]:focus{
  box-shadow:inset 0 0 0 2px #1f7ef2;
  background:#f7fbff;
}
.eduDocPhotoGrid div{
  max-width:190mm;
}
.eduDocPhotoGrid img{
  width:100%!important;
  object-fit:contain!important;
  background:#fff;
}
@media (max-width:700px){
  .eduApproverRow{grid-template-columns:1fr;}
}


/* ============================================================
   V68 — 첫 화면 통합 안전보건관리 플랫폼화
   ============================================================ */
.integratedHomeHero{
  position:relative;
  display:grid;
  grid-template-columns:minmax(360px,1fr) 300px;
  gap:28px;
  align-items:center;
  min-height:230px;
  padding:34px 36px;
  margin:18px 0 18px;
  border:1px solid #ccdae8;
  border-radius:24px;
  background:
    radial-gradient(circle at 58% 45%, rgba(23,177,138,.18), transparent 24%),
    radial-gradient(circle at 92% 48%, rgba(58,148,235,.20), transparent 28%),
    linear-gradient(135deg,#ffffff 0%, #f6fbff 52%, #eaf5ff 100%);
  box-shadow:0 16px 38px rgba(15,47,79,.10);
  overflow:hidden;
}
.integratedHomeHero::after{
  content:"";
  position:absolute;
  right:-120px;
  bottom:-160px;
  width:430px;
  height:430px;
  border-radius:50%;
  border:54px solid rgba(31,126,242,.08);
}
.homeHeroText{
  position:relative;
  z-index:1;
}
.homeHeroText .eyebrow{
  display:inline-flex;
  align-items:center;
  height:28px;
  padding:0 12px;
  border-radius:999px;
  background:#eaf3ff;
  border:1px solid #c6dcef;
  color:#1e70ce;
  font-weight:900;
  font-size:12px;
  letter-spacing:.16em;
}
.homeHeroText h3{
  margin:18px 0 10px;
  font-size:36px;
  line-height:1.2;
  color:#071f3a;
  font-weight:1000;
  letter-spacing:-1px;
}
.homeHeroText p{
  max-width:720px;
  margin:0;
  color:#516d88;
  font-size:16px;
  line-height:1.65;
  font-weight:800;
}
.homeHeroActions{
  display:flex;
  gap:10px;
  flex-wrap:wrap;
  margin-top:24px;
}
.homeHeroLogo{
  position:relative;
  z-index:1;
  min-height:176px;
  border-radius:22px;
  border:1px solid rgba(255,255,255,.70);
  background:linear-gradient(150deg,#0f2f4f 0%, #164d81 58%, #0b8b80 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.16), 0 15px 30px rgba(15,47,79,.18);
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  color:#fff;
  text-align:center;
  padding:24px;
}
.homeHeroLogo img{
  width:68px;
  height:68px;
  border-radius:20px;
  background:#fff;
  padding:8px;
  object-fit:contain;
  margin-bottom:14px;
}
.homeHeroLogo strong{
  font-size:22px;
  font-weight:1000;
  letter-spacing:-.4px;
}
.homeHeroLogo span{
  margin-top:8px;
  font-size:12px;
  color:#c7ddf2;
  font-weight:800;
}
.homeModuleGrid{
  display:grid;
  grid-template-columns:repeat(3,minmax(220px,1fr));
  gap:14px;
  margin-bottom:18px;
}
.homeModuleCard{
  min-height:138px;
  padding:20px;
  border:1px solid #d1deec;
  border-radius:20px;
  background:linear-gradient(180deg,#ffffff 0%, #f8fbff 100%);
  box-shadow:0 8px 22px rgba(15,47,79,.08);
  text-align:left;
  cursor:pointer;
  position:relative;
  overflow:hidden;
}
.homeModuleCard::after{
  content:"";
  position:absolute;
  right:-42px;
  bottom:-42px;
  width:120px;
  height:120px;
  border-radius:50%;
  background:rgba(31,126,242,.08);
}
.homeModuleCard:hover{
  transform:translateY(-2px);
  border-color:#9dc2e8;
  box-shadow:0 14px 30px rgba(15,47,79,.13);
}
.homeModuleCard .moduleNo{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  height:28px;
  min-width:42px;
  padding:0 10px;
  border-radius:999px;
  background:#eaf3ff;
  color:#0d61bd;
  font-weight:1000;
  font-size:13px;
  margin-bottom:16px;
}
.homeModuleCard b{
  display:block;
  color:#071f3a;
  font-size:20px;
  font-weight:1000;
  margin-bottom:9px;
  letter-spacing:-.5px;
}
.homeModuleCard small{
  display:block;
  color:#56708b;
  line-height:1.55;
  font-size:13px;
  font-weight:800;
}
.homeModuleCard.msds{border-left:5px solid #0a8d74;}
.homeModuleCard.search{border-left:5px solid #1f7ef2;}
.homeModuleCard.law{border-left:5px solid #7c3aed;}
.homeModuleCard.risk{border-left:5px solid #f97316;}
.homeModuleCard.edu{border-left:5px solid #10b981;}
.homeModuleCard.admin{border-left:5px solid #ef4444;}
.homeSectionTitle{
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:16px;
  margin:22px 0 12px;
}
.homeSectionTitle span{
  display:block;
  color:#1f7ef2;
  font-size:12px;
  font-weight:1000;
  letter-spacing:.18em;
  margin-bottom:4px;
}
.homeSectionTitle h3{
  margin:0;
  color:#071f3a;
  font-size:22px;
  font-weight:1000;
}
.homeSectionTitle small{
  color:#617b96;
  font-size:13px;
  font-weight:800;
}
.integratedSummary.summaryGrid{
  grid-template-columns:repeat(4,minmax(170px,1fr));
}
.integratedSummary .stat{
  min-height:112px;
  display:grid;
  grid-template-columns:1fr auto;
  grid-template-areas:"label icon" "value value";
  align-items:center;
  gap:6px;
  padding:20px 22px;
  border-radius:20px;
}
.integratedSummary .stat em{
  grid-area:icon;
  min-width:44px;
  height:34px;
  padding:0 8px;
  border-radius:999px;
  background:#eef6ff;
  color:#0d61bd;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  font-style:normal;
  font-size:13px;
  font-weight:1000;
}
.integratedSummary .stat span{
  grid-area:label;
  color:#42617f;
  font-size:13px;
  font-weight:900;
}
.integratedSummary .stat b{
  grid-area:value;
  font-size:30px;
  line-height:1;
}
.integratedSummary .stat.on{
  background:linear-gradient(180deg,#ffffff 0%, #f8fbff 100%);
}
@media (max-width:1200px){
  .integratedHomeHero{grid-template-columns:1fr;}
  .homeHeroLogo{min-height:150px;}
  .homeModuleGrid{grid-template-columns:repeat(2,minmax(220px,1fr));}
  .integratedSummary.summaryGrid{grid-template-columns:repeat(2,minmax(170px,1fr));}
}
@media (max-width:720px){
  .integratedHomeHero{padding:24px 20px;}
  .homeHeroText h3{font-size:28px;}
  .homeModuleGrid{grid-template-columns:1fr;}
  .integratedSummary.summaryGrid{grid-template-columns:1fr;}
}


/* ============================================================
   V69 — 상단 커맨드바 통합 플랫폼 톤 정리
   ============================================================ */
.commandStrip{
  min-height:44px !important;
  padding:0 28px !important;
  background:
    linear-gradient(90deg,#081728 0%, #0d243a 42%, #123a57 100%) !important;
  border-bottom:1px solid rgba(255,255,255,.08) !important;
  color:#dcecff !important;
  box-shadow:0 6px 18px rgba(6,18,34,.10) !important;
}
.commandBrand{
  display:flex !important;
  align-items:center !important;
  gap:12px !important;
  min-width:0 !important;
}
.commandLabel{
  display:inline-flex !important;
  align-items:center !important;
  height:24px !important;
  padding:0 10px !important;
  margin:0 !important;
  border-radius:999px !important;
  background:rgba(255,255,255,.06) !important;
  border:1px solid rgba(255,255,255,.08) !important;
  color:#80b9f5 !important;
  font-size:10px !important;
  font-weight:900 !important;
  letter-spacing:.16em !important;
}
.commandStrip strong{
  color:#ffffff !important;
  font-size:13.5px !important;
  font-weight:900 !important;
  letter-spacing:-.15px !important;
  white-space:nowrap !important;
}
.commandStrip em{
  color:#9fb8d1 !important;
  font-size:11px !important;
  font-style:normal !important;
  font-weight:800 !important;
  white-space:nowrap !important;
}
.commandBadges{
  display:flex !important;
  align-items:center !important;
  gap:8px !important;
  flex-wrap:nowrap !important;
}
.commandBadges span{
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  height:26px !important;
  padding:0 10px !important;
  border-radius:9px !important;
  background:rgba(255,255,255,.075) !important;
  border:1px solid rgba(166,201,238,.20) !important;
  color:#c9dcf0 !important;
  font-size:11px !important;
  font-weight:900 !important;
  letter-spacing:-.1px !important;
}
.commandBadges span:nth-child(1){border-color:rgba(16,185,129,.35)!important;}
.commandBadges span:nth-child(2){border-color:rgba(124,58,237,.35)!important;}
.commandBadges span:nth-child(3){border-color:rgba(249,115,22,.35)!important;}
.commandBadges span:nth-child(4){border-color:rgba(59,130,246,.35)!important;}
@media (max-width:1000px){
  .commandStrip{
    min-height:auto !important;
    padding:8px 18px !important;
    gap:8px !important;
  }
  .commandBrand{
    flex-wrap:wrap !important;
    gap:7px 10px !important;
  }
  .commandStrip em{
    display:none !important;
  }
  .commandBadges{
    display:none !important;
  }
}


/* ============================================================
   V70 — MSDS 자료 보관함 + 위험성평가 점수/저장
   ============================================================ */
.msdsTabBar{
  display:flex;
  gap:10px;
  margin:0 0 14px;
  flex-wrap:wrap;
}
.msdsTab{
  height:44px;
  padding:0 18px;
  border-radius:16px;
  border:1.5px solid #bfd1e7;
  background:linear-gradient(180deg,#fff,#f4f8fd);
  color:#174c88;
  font-weight:900;
  box-shadow:0 6px 16px rgba(18,52,88,.08);
  cursor:pointer;
}
.msdsTab.active{
  background:linear-gradient(135deg,#0f4ea2,#1f7ef2);
  color:#fff;
  border-color:#0f58bf;
  box-shadow:0 10px 22px rgba(15,76,161,.18);
}
.msdsDocIntro{
  padding:16px 18px;
  border:1px solid #d6e5f3;
  border-radius:16px;
  background:#f8fbff;
  margin-bottom:16px;
  display:flex;
  flex-direction:column;
  gap:6px;
}
.msdsDocIntro strong{color:#0c2746;font-size:17px;font-weight:1000;}
.msdsDocIntro span{color:#526d88;font-weight:800;line-height:1.6;}
.msdsDocUploadBox{
  display:grid;
  grid-template-columns:1fr 1fr 1fr 160px;
  gap:12px;
  padding:16px;
  border:1px solid #d4e2f0;
  border-radius:18px;
  background:#fff;
  margin-bottom:16px;
}
.msdsDocUploadBox label{
  display:flex;
  flex-direction:column;
  gap:7px;
}
.msdsDocUploadBox label span{
  color:#264c70;
  font-weight:900;
  font-size:13px;
}
.msdsDocUploadBox input,.msdsDocUploadBox select{
  height:42px;
  border:1px solid #c9d9e9;
  border-radius:12px;
  padding:0 12px;
  font-weight:800;
  color:#102b46;
  background:#fff;
}
.msdsDocUploadBox .full{grid-column:1/-1;}
.msdsDocUploadBox button{align-self:end;}
.msdsDocFilter{
  display:flex;
  gap:10px;
  align-items:center;
  margin-bottom:14px;
}
.msdsDocFilter select,.msdsDocFilter input{
  height:42px;
  border:1px solid #c9d9e9;
  border-radius:12px;
  padding:0 12px;
  background:#fff;
  font-weight:800;
}
.msdsDocFilter input{flex:1;}
.msdsDocList{
  display:grid;
  gap:12px;
}
.msdsDocList.empty{
  display:block;
  padding:24px;
  border:1px dashed #c9d9e9;
  border-radius:16px;
  background:#f8fbff;
  color:#6b8299;
  text-align:center;
  font-weight:800;
}
.msdsDocCard{
  display:grid;
  grid-template-columns:70px 1fr auto;
  gap:14px;
  align-items:center;
  padding:14px;
  border:1px solid #d4e2f0;
  border-radius:18px;
  background:#fff;
  box-shadow:0 6px 16px rgba(18,52,88,.06);
}
.msdsDocIcon{
  width:58px;
  height:58px;
  border-radius:16px;
  background:linear-gradient(135deg,#0f4ea2,#1f7ef2);
  color:#fff;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:12px;
  font-weight:1000;
}
.msdsDocInfo b{
  display:block;
  color:#071f3a;
  font-size:16px;
  font-weight:1000;
  margin-bottom:5px;
}
.msdsDocInfo span,.msdsDocInfo small{
  display:block;
  color:#526d88;
  font-weight:800;
  line-height:1.55;
}
.msdsDocInfo p{
  margin:6px 0 0;
  color:#5d7186;
  font-size:13px;
}
.msdsDocActions{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
  justify-content:flex-end;
}
.riskSaveWarning{
  margin:0 0 14px;
  padding:12px 14px;
  border:1px solid #ffd2c7;
  border-radius:14px;
  background:#fff7f4;
  color:#c5533c;
  font-weight:900;
}
.riskScoreResult.empty{
  margin-top:14px;
  padding:18px;
  border:1px dashed #c9d9e9;
  border-radius:16px;
  background:#f8fbff;
  color:#6b8299;
  text-align:center;
  font-weight:800;
}
.riskScoreDecision{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:16px;
  border-radius:18px;
  margin:14px 0;
  border:1px solid #d6e4f3;
}
.riskScoreDecision strong{font-size:14px;color:#496785;}
.riskScoreDecision b{font-size:20px;font-weight:1000;}
.riskScoreDecision span{font-weight:900;color:#526d88;}
.riskScoreDecision.bad{background:#fff3f0;border-color:#ffc7ba;color:#bc3a24;}
.riskScoreDecision.warn{background:#fff9e8;border-color:#ffe2a1;color:#9a6500;}
.riskScoreDecision.good{background:#edfff8;border-color:#aee7d2;color:#08785d;}
.riskScoreTableWrap{
  overflow:auto;
  border:1px solid #d4e2f0;
  border-radius:18px;
  background:#fff;
}
.riskScoreTable{
  width:100%;
  min-width:850px;
  border-collapse:collapse;
}
.riskScoreTable th{
  background:#133653;
  color:#fff;
  padding:12px;
  font-size:13px;
}
.riskScoreTable td{
  border-bottom:1px solid #edf3f9;
  padding:10px;
  text-align:center;
  color:#173653;
  font-weight:800;
}
.riskScoreTable td:nth-child(2){text-align:left;}
.riskScoreTable select{
  height:36px;
  border:1px solid #c9d9e9;
  border-radius:10px;
  padding:0 8px;
  font-weight:900;
}
.riskBad{color:#bc3a24!important;font-weight:1000!important;}
.riskWarn{color:#9a6500!important;font-weight:1000!important;}
.riskGood{color:#08785d!important;font-weight:1000!important;}
.riskRecordList{
  display:grid;
  gap:10px;
}
.riskRecordList.empty{
  padding:20px;
  border:1px dashed #c9d9e9;
  border-radius:16px;
  background:#f8fbff;
  color:#6b8299;
  text-align:center;
  font-weight:800;
}
.riskRecordCard{
  display:grid;
  grid-template-columns:1fr auto auto;
  gap:12px;
  align-items:center;
  border:1px solid #d4e2f0;
  border-radius:16px;
  background:#fff;
  padding:14px;
}
.riskRecordCard b{display:block;color:#071f3a;font-size:15px;font-weight:1000;}
.riskRecordCard span{display:block;color:#526d88;font-size:12px;font-weight:800;margin-top:5px;}
.riskRecordCard em{
  font-style:normal;
  padding:7px 10px;
  border-radius:999px;
  font-weight:1000;
  font-size:12px;
}
.riskRecordCard em.bad{background:#fff3f0;color:#bc3a24;}
.riskRecordCard em.warn{background:#fff9e8;color:#9a6500;}
.riskRecordCard em.good{background:#edfff8;color:#08785d;}
@media (max-width:900px){
  .msdsDocUploadBox{grid-template-columns:1fr;}
  .msdsDocCard{grid-template-columns:1fr;}
  .msdsDocActions{justify-content:flex-start;}
  .riskRecordCard{grid-template-columns:1fr;}
}


/* ============================================================
   V71 — 위험성평가 빈도·강도법 / 체크리스트법 기준 반영
   ============================================================ */
.riskScoreMethodBar{
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
  padding:12px 14px;
  margin:0 0 12px;
  border:1px solid #d6e5f3;
  border-radius:16px;
  background:#f8fbff;
}
.riskMethodBtn{
  height:38px;
  padding:0 14px;
  border-radius:13px;
  border:1.5px solid #bfd1e7;
  background:#fff;
  color:#174c88;
  font-weight:900;
  cursor:pointer;
}
.riskMethodBtn.active{
  background:linear-gradient(135deg,#0f4ea2,#1f7ef2);
  color:#fff;
  border-color:#0f58bf;
}
.riskScoreMethodBar span{
  color:#526d88;
  font-size:13px;
  font-weight:800;
}
.riskCriteriaBoard{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:12px;
  margin:12px 0;
}
.riskCriteriaBoard.single{
  grid-template-columns:1fr;
}
.riskCriteriaCard{
  border:1px solid #cbdbea;
  border-radius:16px;
  overflow:hidden;
  background:#fff;
}
.riskCriteriaCard h4{
  margin:0;
  padding:12px 14px;
  background:#dfe8f4;
  color:#071f3a;
  font-size:15px;
  font-weight:1000;
  text-align:center;
}
.riskCriteriaCard table{
  width:100%;
  border-collapse:collapse;
}
.riskCriteriaCard th,
.riskCriteriaCard td{
  border:1px solid #cbd6e3;
  padding:8px 10px;
  text-align:center;
  font-size:13px;
  color:#102b46;
  font-weight:800;
}
.riskCriteriaCard th{
  background:#edf3fa;
}
.riskCriteriaCard td:last-child{
  text-align:left;
}
.riskScoreTable td span{
  color:#526d88;
  font-size:12px;
  font-weight:900;
}
.riskScoreTable select{
  min-width:130px;
}
@media (max-width:900px){
  .riskCriteriaBoard{grid-template-columns:1fr;}
}


/* ============================================================
   V72 — 위험성평가 저장 목록 전용 페이지
   ============================================================ */
.riskRecentHint{
  padding:12px 14px;
  margin-bottom:12px;
  border:1px solid #d6e5f3;
  border-radius:14px;
  background:#f8fbff;
  color:#526d88;
  font-size:13px;
  font-weight:800;
}
.riskRecordList.compact{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(360px,1fr));
  gap:10px;
}
.riskRecordList.compact .riskRecordCard{
  grid-template-columns:1fr auto;
}
.riskRecordList.compact .riskRecordCard button{
  grid-column:1 / -1;
  justify-self:start;
}
.riskArchiveHero{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:20px;
  padding:28px 32px!important;
  background:
    radial-gradient(circle at 72% 30%, rgba(31,126,242,.12), transparent 28%),
    linear-gradient(135deg,#ffffff 0%,#f7fbff 100%);
}
.riskArchiveHero .eyebrow{
  display:inline-flex;
  height:26px;
  align-items:center;
  padding:0 10px;
  border-radius:999px;
  background:#eaf3ff;
  border:1px solid #c7dcef;
  color:#0d61bd;
  font-size:11px;
  font-weight:1000;
  letter-spacing:.14em;
}
.riskArchiveHero h3{
  margin:14px 0 8px;
  color:#071f3a;
  font-size:30px;
  font-weight:1000;
}
.riskArchiveHero p{
  margin:0;
  color:#526d88;
  font-size:15px;
  font-weight:800;
  line-height:1.6;
}
.riskArchiveFilter{
  display:grid;
  grid-template-columns:180px 160px 170px 1fr auto;
  gap:10px;
  margin-bottom:14px;
}
.riskArchiveFilter select,
.riskArchiveFilter input{
  height:42px;
  border:1px solid #c9d9e9;
  border-radius:12px;
  padding:0 12px;
  background:#fff;
  color:#102b46;
  font-weight:800;
}
.riskArchiveSummary{
  display:grid;
  grid-template-columns:repeat(5,minmax(120px,1fr));
  gap:10px;
  margin-bottom:14px;
}
.riskArchiveSummary div{
  padding:16px;
  border:1px solid #d4e2f0;
  border-radius:16px;
  background:#fff;
  box-shadow:0 6px 16px rgba(18,52,88,.06);
}
.riskArchiveSummary b{
  display:block;
  color:#071f3a;
  font-size:24px;
  font-weight:1000;
}
.riskArchiveSummary span{
  display:block;
  color:#526d88;
  font-size:12px;
  font-weight:900;
  margin-top:6px;
}
.riskArchiveSummary .bad{border-left:4px solid #f05a3b;}
.riskArchiveSummary .good{border-left:4px solid #0c9b73;}
.riskArchiveList.empty{
  padding:28px;
  border:1px dashed #c9d9e9;
  border-radius:16px;
  background:#f8fbff;
  color:#6b8299;
  text-align:center;
  font-weight:800;
}
.riskArchiveList{
  overflow:auto;
  border:1px solid #d4e2f0;
  border-radius:18px;
  background:#fff;
}
.riskArchiveTable{
  width:100%;
  min-width:1040px;
  border-collapse:collapse;
}
.riskArchiveTable th{
  background:#133653;
  color:#fff;
  padding:12px 10px;
  font-size:13px;
}
.riskArchiveTable td{
  border-bottom:1px solid #edf3f9;
  padding:11px 10px;
  text-align:center;
  color:#173653;
  font-weight:800;
}
.riskArchiveTable td.left{
  text-align:left;
}
.riskArchiveTable td.left b{
  display:block;
  color:#071f3a;
}
.riskArchiveTable td.left small{
  display:block;
  color:#6d8196;
  margin-top:4px;
}
.riskDecisionPill{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:28px;
  padding:0 10px;
  border-radius:999px;
  font-size:12px;
  font-weight:1000;
  background:#edf7ff;
  color:#174c88;
}
.riskDecisionPill.bad{background:#fff3f0;color:#bc3a24;}
.riskDecisionPill.warn{background:#fff9e8;color:#9a6500;}
.riskDecisionPill.good{background:#edfff8;color:#08785d;}
.riskArchiveDetail{
  background:#fff;
  border:1px solid #d4e2f0;
  border-radius:18px;
  padding:18px;
}
.riskArchiveDetail.empty{
  padding:24px;
  color:#6b8299;
  text-align:center;
  font-weight:800;
}
.riskDetailHead{
  display:flex;
  justify-content:space-between;
  gap:18px;
  padding:18px;
  border-radius:18px;
  background:linear-gradient(135deg,#0f2f4f,#164d81);
  color:#fff;
  margin-bottom:14px;
}
.riskDetailHead span{
  color:#8fc5ff;
  font-size:12px;
  font-weight:1000;
  letter-spacing:.14em;
}
.riskDetailHead h3{
  margin:8px 0;
  font-size:24px;
  font-weight:1000;
}
.riskDetailHead p{
  margin:0;
  color:#d7e7f7;
  font-weight:800;
}
.riskDetailHead em{
  flex:0 0 auto;
  align-self:start;
  padding:8px 12px;
  border-radius:999px;
  background:#fff;
  font-style:normal;
  font-weight:1000;
}
.riskDetailHead em.bad{color:#bc3a24;}
.riskDetailHead em.warn{color:#9a6500;}
.riskDetailHead em.good{color:#08785d;}
.riskDetailMeta{
  padding:14px;
  background:#f8fbff;
  border:1px solid #d6e5f3;
  border-radius:14px;
  margin-bottom:16px;
}
.riskDetailMeta b{
  color:#0c2746;
}
.riskDetailMeta p{
  margin:8px 0 0;
  color:#526d88;
  line-height:1.6;
  font-weight:800;
}
.riskArchiveDetail h4{
  margin:18px 0 10px;
  color:#071f3a;
  font-size:17px;
  font-weight:1000;
}
.riskDetailChips{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
}
.riskDetailChips span{
  padding:7px 10px;
  border-radius:999px;
  background:#eaf3ff;
  color:#174c88;
  font-weight:900;
  font-size:12px;
}
.riskArchiveDetailTableWrap{
  overflow:auto;
  border:1px solid #d4e2f0;
  border-radius:16px;
}
.riskArchiveDetailTable{
  width:100%;
  min-width:900px;
  border-collapse:collapse;
}
.riskArchiveDetailTable th{
  background:#edf3fa;
  color:#133653;
  padding:10px;
  font-size:13px;
}
.riskArchiveDetailTable td{
  border-bottom:1px solid #edf3f9;
  padding:10px;
  color:#173653;
  font-size:13px;
  font-weight:800;
  line-height:1.55;
  vertical-align:top;
}
@media (max-width:980px){
  .riskArchiveHero{display:block;}
  .riskArchiveHero button{margin-top:16px;}
  .riskArchiveFilter{grid-template-columns:1fr;}
  .riskArchiveSummary{grid-template-columns:1fr 1fr;}
}
@media print{
  body.printingRiskArchive *{visibility:hidden!important;}
  body.printingRiskArchive #riskArchiveDetailPanel,
  body.printingRiskArchive #riskArchiveDetailPanel *{visibility:visible!important;}
  body.printingRiskArchive #riskArchiveDetailPanel{
    position:absolute!important;
    left:0!important;
    top:0!important;
    width:100%!important;
    margin:0!important;
    border:0!important;
    box-shadow:none!important;
  }
  body.printingRiskArchive .panelHead{display:none!important;}
}


/* ============================================================
   V73 — Mobile responsive fix + MSDS 보관함 탭 터치 보정
   ============================================================ */
html, body{
  max-width:100%;
  overflow-x:hidden!important;
}
button, .navItem, .msdsTab, .btn{
  -webkit-tap-highlight-color: transparent;
  touch-action: manipulation;
}

/* 로그인 화면 모바일 깨짐 방지 */
@media (max-width:820px){
  body{
    background:#0e1723!important;
  }
  .loginScreen{
    min-height:100dvh!important;
    padding:18px!important;
    align-items:center!important;
    justify-content:center!important;
    overflow:hidden!important;
  }
  .loginShell{
    width:100%!important;
    max-width:430px!important;
    min-height:auto!important;
    display:block!important;
    border-radius:24px!important;
    overflow:hidden!important;
  }
  .loginLeft{
    display:none!important;
  }
  .loginRight{
    width:100%!important;
    padding:28px 22px!important;
    min-height:auto!important;
    background:rgba(255,255,255,.04)!important;
  }
  .loginCard{
    width:100%!important;
    max-width:none!important;
    gap:14px!important;
  }
  .loginCard h2{
    font-size:28px!important;
    line-height:1.2!important;
    color:#eef6ff!important;
  }
  .loginCard p{
    color:#a9bbcf!important;
  }
  .loginCard input{
    width:100%!important;
    height:54px!important;
    font-size:16px!important;
    border-radius:14px!important;
    background:rgba(255,255,255,.08)!important;
    color:#fff!important;
  }
  .loginCard input::placeholder{
    color:#91a4ba!important;
  }
  .loginCard .btn{
    width:100%!important;
    height:54px!important;
    border-radius:16px!important;
    font-size:16px!important;
  }
}

/* 업무 화면 모바일: 왼쪽 메뉴는 햄버거 드로어로 열림 */
@media (max-width:820px){
  :root{
    --sidebar-w:0px!important;
    --header-h:auto!important;
  }
  .appLayout{
    display:block!important;
    min-height:100dvh!important;
  }
  .sideNav{
    position:fixed!important;
    left:0!important;
    top:0!important;
    bottom:0!important;
    width:270px!important;
    min-width:270px!important;
    max-width:270px!important;
    transform:translateX(-105%)!important;
    transition:transform .22s ease!important;
    overflow-y:auto!important;
    z-index:9999!important;
    box-shadow:20px 0 70px rgba(0,0,0,.35)!important;
  }
  .sideNav.open{
    transform:translateX(0)!important;
  }
  .sideNav.open::after{
    content:"";
    position:fixed;
    left:270px;
    top:0;
    width:100vw;
    height:100vh;
    background:rgba(4,13,25,.35);
  }
  .workArea{
    margin-left:0!important;
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
  }
  .hamburger{
    display:inline-flex!important;
    flex:0 0 42px!important;
    width:42px!important;
    height:42px!important;
    border-radius:14px!important;
    position:relative!important;
    z-index:2!important;
  }
  .commandStrip{
    display:none!important;
  }
  .workHeader{
    height:auto!important;
    min-height:64px!important;
    padding:12px 14px!important;
    display:grid!important;
    grid-template-columns:auto 1fr!important;
    align-items:center!important;
    gap:10px!important;
  }
  .workHeader > div:nth-child(2){
    min-width:0!important;
  }
  .workHeader h2{
    font-size:19px!important;
    line-height:1.25!important;
    word-break:keep-all!important;
  }
  .workHeader p{
    display:none!important;
  }
  .userPanel{
    grid-column:1 / -1!important;
    width:100%!important;
    justify-content:space-between!important;
    flex-wrap:wrap!important;
    gap:8px!important;
    padding:8px!important;
  }
  .userPanel .btn{
    height:36px!important;
    padding:0 10px!important;
    font-size:12px!important;
  }
  .pageSection{
    padding:14px 10px 30px!important;
    width:100%!important;
    overflow-x:hidden!important;
  }
  .panel{
    border-radius:16px!important;
    margin-bottom:12px!important;
  }
  .panelHead{
    padding:12px!important;
    align-items:flex-start!important;
    flex-direction:column!important;
  }
  .headActions{
    width:100%!important;
  }
  .headActions .btn{
    flex:1 1 auto!important;
  }
  input, select, textarea{
    max-width:100%!important;
    font-size:16px!important; /* 모바일 확대 방지 */
  }
  .btn{
    min-height:42px!important;
  }
}

/* 대시보드/모듈 모바일 정리 */
@media (max-width:820px){
  .disasterTicker{
    margin:0 0 12px!important;
    border-radius:16px!important;
    min-height:56px!important;
    padding:8px!important;
    gap:8px!important;
  }
  .tickerBadge{
    height:38px!important;
    padding:0 12px!important;
    font-size:14px!important;
  }
  .tickerScope{
    display:none!important;
  }
  .tickerViewport{
    min-width:0!important;
    font-size:14px!important;
  }
  .tickerControls{
    display:none!important;
  }
  .integratedHomeHero{
    grid-template-columns:1fr!important;
    min-height:auto!important;
    padding:22px 16px!important;
    margin:0 0 12px!important;
    border-radius:18px!important;
  }
  .homeHeroText h3{
    font-size:27px!important;
  }
  .homeHeroText p{
    font-size:14px!important;
  }
  .homeHeroActions{
    display:grid!important;
    grid-template-columns:1fr!important;
  }
  .homeHeroLogo{
    min-height:128px!important;
  }
  .homeModuleGrid{
    grid-template-columns:1fr!important;
  }
  .integratedSummary.summaryGrid,
  .summaryGrid{
    grid-template-columns:1fr 1fr!important;
    gap:10px!important;
  }
  .integratedSummary .stat{
    min-height:92px!important;
    padding:14px!important;
  }
  .integratedSummary .stat b{
    font-size:24px!important;
  }
}

/* MSDS 탭 및 보관함 모바일 클릭/표시 보정 */
@media (max-width:820px){
  .msdsTabBar{
    position:sticky!important;
    top:0!important;
    z-index:20!important;
    background:var(--bg)!important;
    padding:8px 0!important;
    display:grid!important;
    grid-template-columns:1fr 1fr!important;
    gap:8px!important;
  }
  .msdsTab{
    width:100%!important;
    height:46px!important;
    padding:0 8px!important;
    font-size:13px!important;
    border-radius:14px!important;
    position:relative!important;
    z-index:21!important;
  }
  .msdsDocUploadBox,
  .riskFormGrid,
  .eduWorkGrid,
  .eduGrid2,
  .eduGrid4{
    grid-template-columns:1fr!important;
  }
  .msdsDocFilter,
  .riskArchiveFilter{
    display:grid!important;
    grid-template-columns:1fr!important;
  }
  .msdsDocCard{
    grid-template-columns:1fr!important;
  }
  .msdsDocActions{
    display:grid!important;
    grid-template-columns:1fr 1fr!important;
    justify-content:stretch!important;
  }
  .msdsDocActions .btn{
    width:100%!important;
  }
}

/* 위험성평가/교육/아카이브 모바일 */
@media (max-width:820px){
  .riskGuideBox{
    grid-template-columns:1fr!important;
  }
  .riskScoreMethodBar{
    display:grid!important;
    grid-template-columns:1fr 1fr!important;
  }
  .riskScoreMethodBar span{
    grid-column:1 / -1!important;
  }
  .riskRecordList.compact,
  .riskArchiveSummary{
    grid-template-columns:1fr!important;
  }
  .riskArchiveHero{
    padding:22px 16px!important;
  }
  .riskArchiveHero h3{
    font-size:24px!important;
  }
  .riskArchiveList,
  .riskScoreTableWrap,
  .riskArchiveDetailTableWrap,
  .tableWrap,
  .eduAttendeeList{
    overflow-x:auto!important;
    -webkit-overflow-scrolling:touch!important;
  }
  .riskArchiveTable,
  .riskScoreTable,
  .riskArchiveDetailTable{
    min-width:900px!important;
  }
  .eduPrintPage{
    width:100%!important;
    min-width:760px!important;
  }
}


/* ============================================================
   V74 — 위험성평가 AI 분석 결과 직접 수정
   ============================================================ */
.riskEditToolbar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  flex-wrap:wrap;
  margin:12px 0;
  padding:12px 14px;
  border:1px solid #d6e5f3;
  border-radius:14px;
  background:#f8fbff;
}
.riskEditToolbar span{
  color:#526d88;
  font-size:13px;
  font-weight:800;
}
.riskSummaryBox.editable{
  padding:14px;
}
.riskSummaryEdit{
  margin-top:10px;
  width:100%;
  min-height:80px;
}
.riskTableWrap.editable{
  overflow:auto;
}
.riskEditableTable{
  min-width:1180px;
}
.riskEditableTable th:last-child,
.riskEditableTable td:last-child{
  width:72px;
  text-align:center;
}
.riskEditInput{
  width:100%;
  min-height:74px;
  border:1px solid #c9d9e9;
  border-radius:12px;
  background:#fff;
  padding:10px 11px;
  color:#102b46;
  font-family:inherit;
  font-size:13px;
  font-weight:800;
  line-height:1.55;
  resize:vertical;
  outline:none;
}
.riskEditInput:focus{
  border-color:#1f7ef2;
  box-shadow:0 0 0 3px rgba(31,126,242,.12);
  background:#f9fcff;
}
.riskInlineGrid{
  display:grid;
  grid-template-columns:82px 1fr;
  gap:6px;
  margin-top:7px;
}
.riskMiniInput{
  min-height:36px!important;
  height:36px!important;
  resize:none!important;
  padding:0 9px!important;
  font-size:12px!important;
}
.riskEditableTable td{
  vertical-align:top!important;
}
.riskEditableTable .btn.tiny{
  min-height:32px;
  padding:0 10px;
}
@media (max-width:820px){
  .riskEditableTable{
    min-width:980px;
  }
  .riskEditInput{
    min-height:88px;
    font-size:13px;
  }
}


/* ============================================================
   V75 — 모바일 로그인 가드 / 로그인 입력 글씨 보정
   ============================================================ */
body.authChecking #loginScreen,
body.authChecking #appLayout{
  display:none!important;
}
body.loggedOut #appLayout{
  display:none!important;
}
body.loggedOut #loginScreen{
  display:flex!important;
}
body.loggedIn #loginScreen{
  display:none!important;
}
body.loggedIn #appLayout{
  display:block!important;
}

/* 로그인 입력 글씨가 모바일에서 배경색과 겹쳐 안 보이는 문제 강제 보정 */
#loginScreen input,
#loginScreen textarea,
#loginScreen select{
  color:#0c2036!important;
  -webkit-text-fill-color:#0c2036!important;
  caret-color:#1f7ef2!important;
  background:#ffffff!important;
  border:1.5px solid #b8c9dd!important;
  opacity:1!important;
}
#loginScreen input::placeholder{
  color:#6d8299!important;
  -webkit-text-fill-color:#6d8299!important;
}
#loginScreen input:-webkit-autofill,
#loginScreen input:-webkit-autofill:hover,
#loginScreen input:-webkit-autofill:focus{
  -webkit-text-fill-color:#0c2036!important;
  box-shadow:0 0 0 1000px #ffffff inset!important;
}

/* 모바일 로그인 화면: 카드가 잘리지 않게 위에서부터 자연스럽게 스크롤 */
@media (max-width:820px){
  .loginScreen{
    min-height:100dvh!important;
    height:auto!important;
    overflow-y:auto!important;
    padding:18px 14px 28px!important;
    align-items:flex-start!important;
    background:
      radial-gradient(circle at 20% 8%, rgba(31,126,242,.22), transparent 36%),
      linear-gradient(160deg,#08111f 0%,#0f2135 58%,#102b3b 100%)!important;
  }
  .loginShell{
    margin:18px auto 0!important;
    max-width:430px!important;
    border-radius:26px!important;
    background:rgba(255,255,255,.98)!important;
    box-shadow:0 22px 70px rgba(0,0,0,.32)!important;
  }
  .loginRight{
    background:#ffffff!important;
    padding:26px 20px!important;
  }
  .loginCard{
    padding:0!important;
    background:transparent!important;
    box-shadow:none!important;
    border:0!important;
  }
  .loginCard h3{
    color:#071f3a!important;
    font-size:28px!important;
    line-height:1.2!important;
    font-weight:1000!important;
    margin-bottom:8px!important;
  }
  .loginCard p{
    color:#526d88!important;
    font-size:15px!important;
    font-weight:800!important;
    margin-bottom:14px!important;
  }
  .loginCard input{
    height:54px!important;
    font-size:16px!important;
    font-weight:900!important;
    border-radius:15px!important;
    padding:0 16px!important;
    color:#0c2036!important;
    -webkit-text-fill-color:#0c2036!important;
    background:#ffffff!important;
    border:1.5px solid #b8c9dd!important;
  }
  .loginCard .btn{
    height:54px!important;
    border-radius:16px!important;
    font-size:16px!important;
  }
  .loginCard .btn.primary{
    color:#fff!important;
    -webkit-text-fill-color:#fff!important;
  }
}

/* 로그인 후에만 업무 탭/대시보드가 표시되도록 보조 차단 */
body:not(.loggedIn) .sideNav,
body:not(.loggedIn) .workArea,
body:not(.loggedIn) .siteWatermark{
  display:none!important;
}

/* 모바일 앱 헤더 정리 */
@media (max-width:820px){
  body.loggedIn{
    background:#eef4f9!important;
  }
  .workHeader{
    position:sticky!important;
    top:0!important;
    z-index:3000!important;
    background:rgba(255,255,255,.97)!important;
    backdrop-filter:blur(10px)!important;
    border-bottom:1px solid #d8e4f0!important;
  }
  .workHeader h2{
    font-size:22px!important;
    font-weight:1000!important;
    color:#071f3a!important;
  }
  .userPanel{
    display:flex!important;
  }
}


/* V76 교육일지 사진/결재 안정화 */
.eduPhotoPreview::before{
  content:"사진은 저장 시 서버 업로드 제한에 맞게 자동 압축됩니다. 사진이 있는 교육일지는 저장 버튼을 눌러 저장해주세요.";
  display:block;
  grid-column:1/-1;
  padding:10px 12px;
  margin-bottom:6px;
  border:1px solid #d6e5f3;
  border-radius:12px;
  background:#f8fbff;
  color:#526d88;
  font-size:12px;
  font-weight:800;
}


/* ============================================================
   V77 — TBM 작업 전 안전점검회의 / 위험성평가 TBM
   ============================================================ */
.homeModuleCard.tbm{border-left:5px solid #0ea5e9;}
.tbmWorkGrid{
  display:grid;
  grid-template-columns:minmax(420px, 760px) 1fr;
  gap:18px;
}
.tbmFormPanel,.tbmPreviewPanel{
  min-width:0;
}
.tbmFormPanel h4{
  margin:18px 0 10px;
  color:#071f3a;
  font-size:17px;
  font-weight:1000;
}
.tbmList.empty{
  padding:26px;
  border:1px dashed #c9d9e9;
  border-radius:16px;
  background:#f8fbff;
  color:#6b8299;
  text-align:center;
  font-weight:800;
}
.tbmList{
  overflow:auto;
  border:1px solid #d4e2f0;
  border-radius:18px;
  background:#fff;
}
.tbmListTable{
  width:100%;
  min-width:980px;
  border-collapse:collapse;
}
.tbmListTable th{
  background:#133653;
  color:#fff;
  padding:12px;
  font-size:13px;
}
.tbmListTable td{
  border-bottom:1px solid #edf3f9;
  padding:11px;
  text-align:center;
  color:#173653;
  font-weight:800;
  vertical-align:middle;
}
.tbmListTable td.left{text-align:left;}
.tbmListTable small{
  display:block;
  color:#6d8196;
  margin-top:4px;
}
.tbmTypePill{
  display:inline-flex;
  min-height:28px;
  align-items:center;
  justify-content:center;
  padding:0 10px;
  border-radius:999px;
  background:#eaf3ff;
  color:#174c88;
  font-size:12px;
  font-weight:1000;
}
.tbmTypePill.risk{
  background:#fff3e8;
  color:#c45a12;
}
.tbmRiskOnly{
  margin-top:14px;
  padding:14px;
  border:1px solid #d6e5f3;
  border-radius:18px;
  background:#f8fbff;
}
.tbmContentEditor{
  display:grid;
  gap:8px;
}
.tbmContentRow{
  display:grid;
  grid-template-columns:36px 1fr auto;
  gap:8px;
  align-items:start;
}
.tbmContentRow span{
  width:32px;
  height:32px;
  border-radius:999px;
  background:#eaf3ff;
  color:#0f58bf;
  display:flex;
  align-items:center;
  justify-content:center;
  font-weight:1000;
}
.tbmContentRow textarea{
  width:100%;
  min-height:48px;
  border:1px solid #c9d9e9;
  border-radius:12px;
  padding:10px 12px;
  color:#102b46;
  font-family:inherit;
  font-weight:800;
  resize:vertical;
}
.tbmContentActions{
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
  margin:10px 0;
  padding:10px 12px;
  border:1px solid #d6e5f3;
  border-radius:14px;
  background:#f8fbff;
}
.tbmContentActions span{
  color:#526d88;
  font-weight:800;
  font-size:13px;
}
.tbmPrintPage{
  width:210mm;
  min-height:297mm;
  margin:0 auto;
  background:#fff;
  padding:14mm 12mm;
  border:1px solid #d9e3ef;
  box-shadow:0 12px 28px rgba(15,47,79,.10);
  color:#000;
}
.tbmDocTitle{
  text-align:center;
  margin:10mm 0 6mm;
  font-size:24px;
  font-weight:1000;
  letter-spacing:-.5px;
}
.tbmDocInfo{
  width:100%;
  border-collapse:collapse;
  margin-bottom:6mm;
  font-size:13px;
}
.tbmDocInfo th{
  width:34mm;
  background:#dcebf6;
  border:1px solid #8fa5b7;
  padding:6px;
  text-align:center;
}
.tbmDocInfo td{
  border:1px solid #8fa5b7;
  padding:6px;
  text-align:center;
  font-weight:900;
}
.tbmDocSectionTitle{
  display:inline-block;
  margin:4mm 0 2mm;
  padding:4px 10px;
  background:#2c6fa8;
  color:#fff;
  font-weight:1000;
  font-size:14px;
}
.tbmDocContents{
  border:1px solid #8fa5b7;
  padding:8px 10px;
  min-height:48mm;
}
.tbmDocContents div{
  display:flex;
  gap:8px;
  margin:5px 0;
  font-size:13px;
  line-height:1.5;
}
.tbmDocContents span{
  flex:0 0 auto;
}
.tbmDocContents p{
  margin:0;
}
.tbmDocPhotoGrid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:6mm;
  min-height:30mm;
  border:1px solid #8fa5b7;
  padding:6px;
}
.tbmDocPhotoGrid div{
  text-align:center;
  break-inside:avoid;
}
.tbmDocPhotoGrid img{
  width:100%;
  object-fit:cover;
  border:1px solid #999;
}
.tbmDocPhotoGrid span{
  display:block;
  font-size:11px;
  margin-top:3px;
}
.tbmDocAttendeeTable{
  width:100%;
  border-collapse:collapse;
  font-size:13px;
}
.tbmDocAttendeeTable th{
  background:#dcebf6;
  border:1px solid #8fa5b7;
  padding:6px;
}
.tbmDocAttendeeTable td{
  border:1px solid #8fa5b7;
  padding:5px;
  height:24px;
  text-align:center;
}
.tbmDocAttendeeTable img{
  max-width:62px;
  max-height:28px;
}
.tbmPreviewPanel{
  overflow:auto;
  max-height:calc(100vh - 150px);
  padding:8px;
  background:#eef4f9;
  border:1px solid #d6e5f3;
  border-radius:18px;
}
@media (max-width:1200px){
  .tbmWorkGrid{grid-template-columns:1fr;}
  .tbmPreviewPanel{max-height:none;}
}
@media (max-width:820px){
  .tbmListTable{min-width:900px;}
  .tbmContentRow{grid-template-columns:30px 1fr;}
  .tbmContentRow button{grid-column:2;}
  .tbmPrintPage{
    width:100%;
    min-height:auto;
    padding:16px;
    transform:none;
  }
  .tbmDocPhotoGrid{grid-template-columns:1fr;}
}
@media print{
  body.printingTbm *{visibility:hidden!important;}
  body.printingTbm #tbmPrintArea,
  body.printingTbm #tbmPrintArea *{visibility:visible!important;}
  body.printingTbm #tbmPrintArea{
    position:absolute!important;
    left:0!important;
    top:0!important;
    width:210mm!important;
    min-height:297mm!important;
    margin:0!important;
    box-shadow:none!important;
    border:0!important;
  }
}

/* V78 교육일지 저장 안정화 */
.eduApprovalSetup::after{
  content:"저장/QR 오류가 날 경우 첨부 사진 수를 줄이면 더 안정적으로 저장됩니다. V78부터 사진은 자동 압축 저장됩니다.";
  display:block;
  margin-top:10px;
  padding:10px 12px;
  border:1px solid #d6e5f3;
  border-radius:12px;
  background:#f8fbff;
  color:#526d88;
  font-size:12px;
  font-weight:800;
}


/* ============================================================
   V79 — 교육일지 결재란 서명 표시 강화
   ============================================================ */
.eduApproval td{
  vertical-align:middle!important;
}
.eduApprovalSignBox{
  min-height:34px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:2px;
}
.eduApprovalSignImg{
  max-width:72px!important;
  max-height:30px!important;
  object-fit:contain!important;
  display:block;
}
.eduApprovalSignBox small{
  display:block;
  color:#111;
  font-size:10px;
  font-weight:800;
  line-height:1.1;
}
.eduApprovalPendingText{
  display:block;
  color:#111;
  font-size:12px;
  font-weight:900;
}
@media print{
  .eduApprovalSignImg{
    max-width:24mm!important;
    max-height:9mm!important;
  }
  .eduApprovalSignBox small{
    font-size:9px!important;
  }
}


/* ============================================================
   V80 — 문서 삭제 승인 / 사고사망속보 끊김 보정
   ============================================================ */
.disasterTicker{
  grid-template-columns:auto auto minmax(0, 1fr) auto !important;
  overflow:hidden !important;
}
.tickerScope{
  flex:0 0 auto;
  white-space:nowrap;
  display:inline-flex;
  align-items:center;
  height:32px;
  padding:0 12px;
  border-radius:999px;
  background:#123653;
  color:#fff;
  font-size:13px;
  font-weight:900;
}
.tickerViewport{
  min-width:0 !important;
  overflow:hidden !important;
  white-space:nowrap !important;
  mask-image:linear-gradient(90deg, transparent 0, #000 18px, #000 calc(100% - 18px), transparent 100%);
  -webkit-mask-image:linear-gradient(90deg, transparent 0, #000 18px, #000 calc(100% - 18px), transparent 100%);
}
.tickerTrack{
  will-change:transform;
  gap:48px !important;
}
.tickerItem{
  flex:0 0 auto;
  max-width:none;
  white-space:nowrap;
  padding-right:22px;
}
.tickerItem b{
  display:inline-block;
  margin-right:8px;
}
.tableActionGroup{
  display:flex;
  gap:6px;
  justify-content:center;
  align-items:center;
  flex-wrap:wrap;
}
.eduListCard{
  cursor:pointer;
  position:relative;
}
.eduListActions{
  display:flex;
  gap:8px;
  justify-content:flex-end;
  margin-top:10px;
  flex-wrap:wrap;
}
.recordDeleteRequestList.empty{
  padding:24px;
  border:1px dashed #c9d9e9;
  border-radius:16px;
  background:#f8fbff;
  color:#6b8299;
  text-align:center;
  font-weight:800;
}
.recordDeleteRequestList{
  display:grid;
  gap:10px;
}
.recordDeleteCard{
  display:grid;
  grid-template-columns:1fr auto;
  gap:12px;
  align-items:center;
  padding:14px;
  border:1px solid #d4e2f0;
  border-radius:16px;
  background:#fff;
  box-shadow:0 6px 16px rgba(18,52,88,.06);
}
.recordDeleteCard strong{
  display:block;
  color:#071f3a;
  font-size:15px;
  font-weight:1000;
}
.recordDeleteCard span{
  display:block;
  margin-top:5px;
  color:#526d88;
  font-size:12px;
  font-weight:800;
}
.recordDeleteActions{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
}
@media(max-width:1000px){
  .disasterTicker{
    grid-template-columns:1fr auto !important;
  }
  .tickerBadge,
  .tickerScope{
    grid-column:auto;
  }
  .tickerViewport{
    grid-column:1 / -1;
  }
  .tickerScope{
    font-size:12px;
    height:28px;
    justify-self:start;
  }
  .recordDeleteCard{
    grid-template-columns:1fr;
  }
}

.tickerItem em{font-style:normal;color:#9aa9b8;margin:0 4px;font-weight:900;}

/* V81 MSDS 보관함 탭/엑셀추출/브랜드명 보정 */
#exportProductsExcelBtn{border-color:#1f7ef2!important;color:#0f58bf!important;font-weight:950!important;background:#f8fbff!important;}
#exportProductsExcelBtn:hover{background:#eaf3ff!important;box-shadow:0 8px 20px rgba(31,126,242,.12)!important;}
.msdsTab{cursor:pointer!important;}
.sideBrand h1,.loginBrand h1{line-height:1.08!important;letter-spacing:-.8px!important;}
.commandBrand strong{letter-spacing:-.4px;}


/* ============================================================
   V82 — 사고사망속보 가독성 최종 보정
   - 단어 끊김/겹침/줄림 방지
   - HTML 원문으로 인한 이상 공백 보정
   ============================================================ */
.disasterTicker{
  min-height:64px !important;
  grid-template-columns:max-content max-content minmax(0,1fr) max-content !important;
  column-gap:12px !important;
  row-gap:8px !important;
  padding:11px 16px !important;
  overflow:hidden !important;
}
.tickerBadge{
  flex:0 0 auto !important;
  white-space:nowrap !important;
}
.tickerScope{
  flex:0 0 auto !important;
  white-space:nowrap !important;
  max-width:210px !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
}
.tickerViewport{
  min-width:0 !important;
  width:100% !important;
  overflow:hidden !important;
  white-space:nowrap !important;
  position:relative !important;
  padding:2px 0 !important;
  -webkit-mask-image:linear-gradient(90deg, transparent 0, #000 28px, #000 calc(100% - 28px), transparent 100%) !important;
  mask-image:linear-gradient(90deg, transparent 0, #000 28px, #000 calc(100% - 28px), transparent 100%) !important;
}
.tickerTrack{
  display:inline-flex !important;
  align-items:center !important;
  gap:72px !important;
  min-width:max-content !important;
  white-space:nowrap !important;
  line-height:1.35 !important;
  font-size:18px !important;
  letter-spacing:-.25px !important;
  word-spacing:1px !important;
  animation:ktoTickerMove 78s linear infinite !important;
}
.tickerItem{
  flex:0 0 auto !important;
  display:inline-flex !important;
  align-items:center !important;
  gap:7px !important;
  white-space:nowrap !important;
  max-width:none !important;
  padding-right:24px !important;
}
.tickerItem b{
  color:#071f3a !important;
  font-weight:1000 !important;
  white-space:nowrap !important;
}
.tickerItem em{
  font-style:normal !important;
  color:#9aa9b8 !important;
  margin:0 2px !important;
  font-weight:900 !important;
  flex:0 0 auto !important;
}
.tickerBody{
  color:#102b46 !important;
  font-weight:900 !important;
  white-space:nowrap !important;
}
.tickerControls{
  flex:0 0 auto !important;
  white-space:nowrap !important;
}
@media(max-width:1000px){
  .disasterTicker{
    grid-template-columns:max-content 1fr max-content !important;
  }
  .tickerScope{
    display:none !important;
  }
  .tickerViewport{
    grid-column:1 / -1 !important;
    order:3 !important;
  }
  .tickerTrack{
    font-size:15px !important;
    gap:54px !important;
    animation-duration:88s !important;
  }
  .tickerBadge{
    min-width:0 !important;
    height:38px !important;
    font-size:16px !important;
    padding:0 16px !important;
  }
  .tickerControls button{
    width:38px !important;
    height:38px !important;
  }
}


/* ============================================================
   V83 — 사고사망속보 불필요문구 제거 및 띄어쓰기 가독성 보정
   ============================================================ */
.tickerTrack{
  font-size:17px !important;
  letter-spacing:-.12px !important;
  word-spacing:0 !important;
  gap:72px !important;
  animation-duration:94s !important;
}
.tickerItem{
  gap:8px !important;
}
.tickerItem b{
  color:#071f3a !important;
  font-weight:1000 !important;
}
.tickerBody{
  color:#34495f !important;
  font-weight:850 !important;
}
@media(max-width:1000px){
  .tickerTrack{
    font-size:15px !important;
    word-spacing:0 !important;
    gap:44px !important;
    animation-duration:102s !important;
  }
}


/* ============================================================
   V87 — 사고사망속보 일시정지 버튼 실제 정지 보정
   ============================================================ */
.tickerTrack.paused,
.tickerViewport.paused .tickerTrack{
  animation-play-state:paused !important;
  -webkit-animation-play-state:paused !important;
}
#tickerPauseBtn[aria-pressed="true"]{
  background:#1f5fb9 !important;
  color:#fff !important;
  border-color:#1f5fb9 !important;
  box-shadow:0 10px 18px rgba(31,95,185,.20) !important;
}
#tickerTopBtn{
  letter-spacing:.03em !important;
}


/* ============================================================
   V88 — 사고사망속보 일시정지 버튼 클릭 영역 강제 보정
   ============================================================ */
.disasterTicker{
  position:relative !important;
}
.tickerViewport{
  position:relative !important;
  z-index:1 !important;
  pointer-events:none !important;
}
.tickerTrack,
.tickerItem,
.tickerBody{
  pointer-events:none !important;
}
.tickerControls{
  position:relative !important;
  z-index:20 !important;
  pointer-events:auto !important;
}
.tickerControls button,
#tickerPauseBtn,
#tickerTopBtn{
  position:relative !important;
  z-index:30 !important;
  pointer-events:auto !important;
  cursor:pointer !important;
  user-select:none !important;
  touch-action:manipulation !important;
}
.disasterTicker.paused .tickerTrack,
.tickerTrack.paused,
.tickerViewport.paused .tickerTrack{
  animation-play-state:paused !important;
  -webkit-animation-play-state:paused !important;
}
#tickerPauseBtn.isPaused,
#tickerPauseBtn[aria-pressed="true"]{
  background:#1f5fb9 !important;
  color:#fff !important;
  border-color:#1f5fb9 !important;
  box-shadow:0 10px 18px rgba(31,95,185,.20) !important;
}
#tickerTopBtn{
  letter-spacing:.03em !important;
}


/* ============================================================
   V90 — 메인 브랜드 카드 문구 줄바꿈 보정
   ============================================================ */
.platformHeroCard h1,
.homeBrandCard h1,
.moduleBrandCard h1,
.safeMdsBrandCard h1,
.brandHeroCard h1,
.homeModuleBrand h1,
.heroBrandTitle{
  line-height:1.18 !important;
  word-break:keep-all !important;
  text-align:center !important;
}
.platformHeroCard h1 br,
.homeBrandCard h1 br,
.moduleBrandCard h1 br,
.safeMdsBrandCard h1 br,
.brandHeroCard h1 br,
.homeModuleBrand h1 br,
.heroBrandTitle br{
  display:block !important;
}
.homeModuleBrand,
.platformHeroCard,
.homeBrandCard,
.moduleBrandCard,
.safeMdsBrandCard,
.brandHeroCard{
  text-align:center !important;
}


/* ============================================================
   V91 — BR 텍스트 노출 복구 + 메인 카드만 자연 줄바꿈
   ============================================================ */
.integratedBrandCard h1,
.homeBrandTitle,
.platformCardTitle,
.homeModuleBrand h1,
.homeModuleBrand strong,
.heroBrandTitle{
  max-width:280px !important;
  margin-left:auto !important;
  margin-right:auto !important;
  text-align:center !important;
  line-height:1.18 !important;
  word-break:keep-all !important;
  white-space:normal !important;
}


/* ============================================================
   V92 — 홈 로고 카드에서만 '통합시스템' 아래 줄 고정
   ============================================================ */
.homeHeroLogo > strong{
  display:flex !important;
  flex-direction:column !important;
  align-items:center !important;
  justify-content:center !important;
  gap:2px !important;
  max-width:none !important;
  width:100% !important;
  margin:18px auto 8px !important;
  text-align:center !important;
  line-height:1.18 !important;
  word-break:keep-all !important;
  white-space:normal !important;
}
.homeHeroLogo > strong > span{
  display:block !important;
  white-space:nowrap !important;
}
.homeHeroLogo > strong > span:first-child{
  font-size:20px !important;
}
.homeHeroLogo > strong > span:last-child{
  font-size:20px !important;
}


/* ============================================================
   V93 — TBM/교육 사진 카드 정렬 및 박스 튀어나옴 보정
   ============================================================ */
.eduGrid2 > *,
.eduGrid4 > *,
.eduInline > *,
.tbmWorkGrid > *,
.eduWorkGrid > *,
.eduFormPanel label,
.tbmFormPanel label{
  min-width:0 !important;
}

.eduPhotoPreview{
  grid-template-columns:repeat(auto-fit, minmax(min(170px, 100%), 1fr)) !important;
  align-items:start !important;
  overflow:hidden !important;
  box-sizing:border-box !important;
}
.eduPhotoPreview > *{
  min-width:0 !important;
  box-sizing:border-box !important;
}
.eduPhotoCard{
  width:100% !important;
  min-width:0 !important;
  max-width:100% !important;
  overflow:hidden !important;
  box-sizing:border-box !important;
  align-self:start !important;
}
.eduPhotoCard img{
  display:block !important;
  width:100% !important;
}
.eduPhotoCard input,
.eduPhotoCard button,
.eduPhotoSizeBox,
.eduPhotoSizeBox label,
.eduPhotoSizeBox input{
  width:100% !important;
  min-width:0 !important;
  box-sizing:border-box !important;
}
.eduPhotoCard input{
  overflow:hidden !important;
  text-overflow:ellipsis !important;
  white-space:nowrap !important;
}
.eduPhotoSizeBox{
  align-items:start !important;
}
.eduPhotoSizeBox label{
  display:flex !important;
  flex-direction:column !important;
  justify-content:flex-start !important;
}

@media (max-width:820px){
  .eduPhotoPreview{
    grid-template-columns:1fr !important;
  }
  .eduPhotoCard{
    padding:10px !important;
  }
}


/* ============================================================
   V94 — TBM 작성 화면 레이아웃 정리
   - 작성폼/미리보기 상하 배치
   - 기본정보 입력칸 12컬럼 그리드 정렬
   - 시간/장소/담당자 배열 정돈
   ============================================================ */
.tbmWorkGrid{
  grid-template-columns:minmax(0, 1fr) !important;
  gap:18px !important;
}
.tbmFormPanel,
.tbmPreviewPanel{
  width:100% !important;
  max-width:none !important;
}
.tbmPreviewPanel{
  max-height:none !important;
}
.tbmFormPanel .eduGrid2{
  display:grid !important;
  grid-template-columns:repeat(12, minmax(0, 1fr)) !important;
  gap:16px 18px !important;
  align-items:end !important;
}
.tbmFormPanel .eduGrid2 > label{
  margin:0 !important;
  min-width:0 !important;
}
.tbmFormPanel .eduGrid2 > label:nth-child(1),
.tbmFormPanel .eduGrid2 > label:nth-child(2),
.tbmFormPanel .eduGrid2 > label:nth-child(3),
.tbmFormPanel .eduGrid2 > label:nth-child(4){
  grid-column:span 3 !important;
}
.tbmFormPanel .eduGrid2 > label:nth-child(5){
  grid-column:span 2 !important;
}
.tbmFormPanel .eduGrid2 > label:nth-child(6){
  grid-column:span 4 !important;
}
.tbmFormPanel .eduGrid2 > label:nth-child(7),
.tbmFormPanel .eduGrid2 > label:nth-child(8){
  grid-column:span 3 !important;
}
.tbmFormPanel .eduGrid2 input,
.tbmFormPanel .eduGrid2 select,
.tbmFormPanel .eduGrid2 .eduInline{
  width:100% !important;
  min-width:0 !important;
  box-sizing:border-box !important;
}
.tbmFormPanel .eduGrid2 .eduInline{
  display:grid !important;
  grid-template-columns:1fr 1fr !important;
  gap:10px !important;
}
.tbmFormPanel .eduFull{
  margin-top:14px !important;
}
.tbmFormPanel .eduPhotoBlock,
.tbmFormPanel .tbmRiskOnly,
.tbmFormPanel .eduQrBox,
.tbmFormPanel .eduAttendeeList{
  width:100% !important;
  box-sizing:border-box !important;
}
@media (max-width:1100px){
  .tbmFormPanel .eduGrid2 > label:nth-child(1),
  .tbmFormPanel .eduGrid2 > label:nth-child(2),
  .tbmFormPanel .eduGrid2 > label:nth-child(3),
  .tbmFormPanel .eduGrid2 > label:nth-child(4),
  .tbmFormPanel .eduGrid2 > label:nth-child(5),
  .tbmFormPanel .eduGrid2 > label:nth-child(6),
  .tbmFormPanel .eduGrid2 > label:nth-child(7),
  .tbmFormPanel .eduGrid2 > label:nth-child(8){
    grid-column:span 6 !important;
  }
}
@media (max-width:720px){
  .tbmFormPanel .eduGrid2{
    grid-template-columns:1fr !important;
  }
  .tbmFormPanel .eduGrid2 > label:nth-child(1),
  .tbmFormPanel .eduGrid2 > label:nth-child(2),
  .tbmFormPanel .eduGrid2 > label:nth-child(3),
  .tbmFormPanel .eduGrid2 > label:nth-child(4),
  .tbmFormPanel .eduGrid2 > label:nth-child(5),
  .tbmFormPanel .eduGrid2 > label:nth-child(6),
  .tbmFormPanel .eduGrid2 > label:nth-child(7),
  .tbmFormPanel .eduGrid2 > label:nth-child(8){
    grid-column:auto !important;
  }
  .tbmFormPanel .eduGrid2 .eduInline{
    grid-template-columns:1fr !important;
  }
}


/* ============================================================
   V95 — TBM 작성화면 좌우 배열 복구 및 정렬 정리
   - 왼쪽 작성폼 / 오른쪽 문서 미리보기
   - 오른쪽 빈공간 방치하지 않고 미리보기 배치
   - 입력폼은 12컬럼 기준으로 보기 좋게 정렬
   ============================================================ */
.tbmWorkGrid{
  display:grid !important;
  grid-template-columns:minmax(620px, 1fr) minmax(430px, 0.72fr) !important;
  gap:20px !important;
  align-items:start !important;
}
.tbmFormPanel{
  width:100% !important;
  max-width:none !important;
  min-width:0 !important;
}
.tbmPreviewPanel{
  width:100% !important;
  max-width:none !important;
  min-width:0 !important;
  max-height:calc(100vh - 150px) !important;
  overflow:auto !important;
  padding:12px !important;
  background:#eef4f9 !important;
  border:1px solid #d6e5f3 !important;
  border-radius:18px !important;
  position:sticky !important;
  top:92px !important;
}

/* 오른쪽 미리보기는 화면 안에 보기 좋게 축소 */
.tbmPreviewPanel .tbmPrintPage{
  transform:scale(.66) !important;
  transform-origin:top center !important;
  margin:0 auto !important;
  margin-bottom:calc(-297mm * .34) !important;
}

/* TBM 기본정보 입력 배열 */
.tbmFormPanel .eduGrid2{
  display:grid !important;
  grid-template-columns:repeat(12, minmax(0, 1fr)) !important;
  gap:14px 16px !important;
  align-items:end !important;
}
.tbmFormPanel .eduGrid2 > label{
  margin:0 !important;
  min-width:0 !important;
}
.tbmFormPanel .eduGrid2 > label:nth-child(1),
.tbmFormPanel .eduGrid2 > label:nth-child(2),
.tbmFormPanel .eduGrid2 > label:nth-child(3),
.tbmFormPanel .eduGrid2 > label:nth-child(4){
  grid-column:span 3 !important;
}
.tbmFormPanel .eduGrid2 > label:nth-child(5){
  grid-column:span 3 !important;
}
.tbmFormPanel .eduGrid2 > label:nth-child(6){
  grid-column:span 4 !important;
}
.tbmFormPanel .eduGrid2 > label:nth-child(7){
  grid-column:span 3 !important;
}
.tbmFormPanel .eduGrid2 > label:nth-child(8){
  grid-column:span 2 !important;
}
.tbmFormPanel .eduGrid2 input,
.tbmFormPanel .eduGrid2 select,
.tbmFormPanel .eduGrid2 .eduInline{
  width:100% !important;
  min-width:0 !important;
  box-sizing:border-box !important;
}
.tbmFormPanel .eduGrid2 .eduInline{
  display:grid !important;
  grid-template-columns:1fr 1fr !important;
  gap:10px !important;
}
.tbmFormPanel .eduFull{
  margin-top:14px !important;
}
.tbmFormPanel textarea,
.tbmFormPanel input,
.tbmFormPanel select{
  max-width:100% !important;
}

/* 사진 박스는 튀어나오지 않게 유지 */
.tbmFormPanel .eduPhotoPreview{
  grid-template-columns:repeat(auto-fit, minmax(165px, 210px)) !important;
  justify-content:start !important;
}
.tbmFormPanel .eduPhotoCard{
  max-width:210px !important;
}

/* 중간 화면: 좌우 유지하되 미리보기 조금 더 축소 */
@media (max-width:1450px){
  .tbmWorkGrid{
    grid-template-columns:minmax(560px, 1fr) minmax(360px, .58fr) !important;
  }
  .tbmPreviewPanel .tbmPrintPage{
    transform:scale(.55) !important;
    margin-bottom:calc(-297mm * .45) !important;
  }
}

/* 좁은 화면에서만 상하 배치 */
@media (max-width:1100px){
  .tbmWorkGrid{
    grid-template-columns:1fr !important;
  }
  .tbmPreviewPanel{
    position:relative !important;
    top:auto !important;
    max-height:none !important;
  }
  .tbmPreviewPanel .tbmPrintPage{
    transform:scale(.82) !important;
    transform-origin:top center !important;
    margin-bottom:calc(-297mm * .18) !important;
  }
  .tbmFormPanel .eduGrid2 > label:nth-child(1),
  .tbmFormPanel .eduGrid2 > label:nth-child(2),
  .tbmFormPanel .eduGrid2 > label:nth-child(3),
  .tbmFormPanel .eduGrid2 > label:nth-child(4),
  .tbmFormPanel .eduGrid2 > label:nth-child(5),
  .tbmFormPanel .eduGrid2 > label:nth-child(6),
  .tbmFormPanel .eduGrid2 > label:nth-child(7),
  .tbmFormPanel .eduGrid2 > label:nth-child(8){
    grid-column:span 6 !important;
  }
}
@media (max-width:720px){
  .tbmFormPanel .eduGrid2{
    grid-template-columns:1fr !important;
  }
  .tbmFormPanel .eduGrid2 > label:nth-child(1),
  .tbmFormPanel .eduGrid2 > label:nth-child(2),
  .tbmFormPanel .eduGrid2 > label:nth-child(3),
  .tbmFormPanel .eduGrid2 > label:nth-child(4),
  .tbmFormPanel .eduGrid2 > label:nth-child(5),
  .tbmFormPanel .eduGrid2 > label:nth-child(6),
  .tbmFormPanel .eduGrid2 > label:nth-child(7),
  .tbmFormPanel .eduGrid2 > label:nth-child(8){
    grid-column:auto !important;
  }
  .tbmFormPanel .eduGrid2 .eduInline{
    grid-template-columns:1fr !important;
  }
  .tbmPreviewPanel .tbmPrintPage{
    width:100% !important;
    transform:none !important;
    margin-bottom:0 !important;
  }
}


/* ============================================================
   V102 — V95 복귀 + 위험성평가 5가지 분석안 선택 UI
   ============================================================ */
.riskOptionPanel.hidden{display:none!important;}
.riskOptionNotice{
  padding:12px 14px;
  border:1px solid #cfe0f4;
  background:#f7fbff;
  border-radius:14px;
  color:#36506d;
  font-size:13px;
  font-weight:700;
  margin-bottom:12px;
}
.riskOptionTabs{
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:10px;
}
.riskOptionTab{
  appearance:none;
  border:1px solid #cfe0f4;
  background:#fff;
  border-radius:16px;
  padding:14px 12px;
  min-height:138px;
  text-align:left;
  cursor:pointer;
  box-shadow:0 8px 18px rgba(30,70,110,.06);
  transition:.16s ease;
}
.riskOptionTab:hover{
  transform:translateY(-1px);
  border-color:#8db9f0;
  box-shadow:0 12px 24px rgba(30,100,180,.12);
}
.riskOptionTab.active{
  border-color:#1f6ed4;
  background:linear-gradient(180deg,#f4f9ff,#ffffff);
  box-shadow:0 0 0 3px rgba(31,110,212,.12), 0 12px 24px rgba(30,100,180,.14);
}
.riskOptionTab b{
  display:block;
  color:#0b2b4d;
  font-size:15px;
  line-height:1.25;
  margin-bottom:8px;
}
.riskOptionTab span{
  display:inline-flex;
  padding:4px 8px;
  border-radius:999px;
  background:#eaf3ff;
  color:#1f6ed4;
  font-size:12px;
  font-weight:800;
  margin-bottom:8px;
}
.riskOptionTab small{
  display:block;
  color:#5f7590;
  font-size:12px;
  line-height:1.5;
  font-weight:650;
}
#riskReanalyzeBtn:disabled,
#riskAnalyzeBtn:disabled{
  opacity:.62;
  cursor:wait;
}
@media(max-width:1300px){
  .riskOptionTabs{grid-template-columns:repeat(3,minmax(0,1fr));}
}
@media(max-width:820px){
  .riskOptionTabs{grid-template-columns:1fr;}
  .riskOptionTab{min-height:auto;}
}


/* ============================================================
   V104 — 위험성평가 점수평가 방식 선택
   ============================================================ */
.riskScoreMethodPanel{
  margin:14px 0;
  padding:16px;
  border:1px solid #cfe0f4;
  background:linear-gradient(180deg,#f8fbff,#ffffff);
  border-radius:18px;
  box-shadow:0 8px 18px rgba(30,70,110,.05);
}
.riskScoreMethodPanel.hidden{display:none!important;}
.riskScoreMethodHead{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:12px;
  margin-bottom:12px;
}
.riskScoreMethodHead b{
  display:block;
  color:#0b2b4d;
  font-size:16px;
  font-weight:900;
  margin-bottom:4px;
}
.riskScoreMethodHead span:not(.chip){
  display:block;
  color:#607894;
  font-size:12px;
  line-height:1.5;
  font-weight:650;
}
.riskScoreMethodGrid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;
}
.riskMethodBtn{
  appearance:none;
  text-align:left;
  border:1px solid #cfe0f4;
  background:#fff;
  border-radius:16px;
  padding:16px 14px;
  min-height:132px;
  cursor:pointer;
  box-shadow:0 8px 18px rgba(30,70,110,.06);
  transition:.16s ease;
}
.riskMethodBtn:hover{
  transform:translateY(-1px);
  border-color:#8db9f0;
  box-shadow:0 12px 24px rgba(30,100,180,.12);
}
.riskMethodBtn.active{
  border-color:#1f6ed4;
  background:linear-gradient(180deg,#f4f9ff,#ffffff);
  box-shadow:0 0 0 3px rgba(31,110,212,.12), 0 12px 24px rgba(30,100,180,.14);
}
.riskMethodBtn strong{
  display:block;
  color:#0b2b4d;
  font-size:17px;
  font-weight:900;
  margin-bottom:6px;
}
.riskMethodBtn em{
  display:inline-flex;
  font-style:normal;
  padding:4px 8px;
  border-radius:999px;
  background:#eaf3ff;
  color:#1f6ed4;
  font-size:12px;
  font-weight:850;
  margin-bottom:8px;
}
.riskMethodBtn small{
  display:block;
  color:#607894;
  font-size:12px;
  line-height:1.55;
  font-weight:650;
}
@media(max-width:820px){
  .riskScoreMethodHead{display:block;}
  .riskScoreMethodHead .chip{margin-top:8px;}
  .riskScoreMethodGrid{grid-template-columns:1fr;}
}

/* V105 PDF 참고자료 반영 안내 */
.riskSmallNotice{
  color:#34506f;
  font-weight:700;
}


/* ============================================================
   V110 — TBM 인쇄/PDF 빈 페이지 수정
   106버전 기준 유지 + 기존 로고/주황·파랑 라인 스타일 미변경
   ============================================================ */
#tbmPrintOnlyWrap{
  display:none;
}

@media print{
  body.printingTbmOnly{
    margin:0!important;
    padding:0!important;
    background:#fff!important;
    overflow:visible!important;
  }

  body.printingTbmOnly *{
    visibility:hidden!important;
  }

  body.printingTbmOnly #tbmPrintOnlyWrap,
  body.printingTbmOnly #tbmPrintOnlyWrap *{
    visibility:visible!important;
  }

  body.printingTbmOnly #tbmPrintOnlyWrap{
    display:block!important;
    position:absolute!important;
    left:0!important;
    top:0!important;
    width:210mm!important;
    min-height:297mm!important;
    margin:0!important;
    padding:0!important;
    background:#fff!important;
    z-index:999999!important;
  }

  body.printingTbmOnly #tbmPrintOnlyPage{
    display:block!important;
    position:static!important;
    width:210mm!important;
    min-height:297mm!important;
    margin:0!important;
    padding:14mm 12mm!important;
    background:#fff!important;
    box-shadow:none!important;
    border:0!important;
    transform:none!important;
    overflow:visible!important;
  }

  /* 미리보기에서 축소 표시하던 TBM 문서를 인쇄 시에는 원본 크기로만 풀어줌.
     로고/상단 라인/표 디자인은 기존 설정값 그대로 사용. */
  body.printingTbmOnly #tbmPrintOnlyPage .eduDocTopBrand,
  body.printingTbmOnly #tbmPrintOnlyPage .eduDocKtoLogo,
  body.printingTbmOnly #tbmPrintOnlyPage .eduDocOrangeLine,
  body.printingTbmOnly #tbmPrintOnlyPage .eduDocBlueLine{
    visibility:visible!important;
  }

  @page{
    size:A4 portrait;
    margin:0;
  }
}


/* ============================================================
   V114 — TBM 인쇄/PDF 페이지 수 초과 수정
   - 실제 TBM 1페이지 문서가 Chrome 미리보기에서 2~4페이지로 잡히는 문제 방지
   - 로고/주황·파랑 선 디자인은 기존 설정 그대로 사용
   ============================================================ */
@media print{
  html,
  body{
    width:210mm!important;
    min-width:210mm!important;
    max-width:210mm!important;
    margin:0!important;
    padding:0!important;
    overflow:hidden!important;
  }

  body.printingTbmOnly{
    width:210mm!important;
    height:297mm!important;
    min-height:297mm!important;
    max-height:297mm!important;
    margin:0!important;
    padding:0!important;
    overflow:hidden!important;
    background:#fff!important;
  }

  body.printingTbmOnly *{
    box-sizing:border-box!important;
  }

  body.printingTbmOnly #tbmPrintOnlyWrap{
    display:block!important;
    visibility:visible!important;
    position:fixed!important;
    left:0!important;
    top:0!important;
    width:210mm!important;
    height:297mm!important;
    min-height:297mm!important;
    max-height:297mm!important;
    margin:0!important;
    padding:0!important;
    overflow:hidden!important;
    background:#fff!important;
    page-break-before:avoid!important;
    page-break-after:avoid!important;
    break-before:avoid!important;
    break-after:avoid!important;
    z-index:999999!important;
  }

  body.printingTbmOnly #tbmPrintOnlyPage{
    display:block!important;
    visibility:visible!important;
    position:relative!important;
    left:0!important;
    top:0!important;
    width:210mm!important;
    height:297mm!important;
    min-height:0!important;
    max-height:297mm!important;
    margin:0!important;
    padding:14mm 12mm!important;
    overflow:hidden!important;
    background:#fff!important;
    box-shadow:none!important;
    border:0!important;
    transform:none!important;
    page-break-before:avoid!important;
    page-break-after:avoid!important;
    page-break-inside:avoid!important;
    break-before:avoid!important;
    break-after:avoid!important;
    break-inside:avoid!important;
  }

  body.printingTbmOnly #tbmPrintOnlyPage *{
    max-width:100%!important;
    page-break-inside:avoid!important;
    break-inside:avoid!important;
  }

  body.printingTbmOnly #tbmPrintOnlyPage .tbmDocContents{
    max-height:63mm!important;
    overflow:hidden!important;
  }

  body.printingTbmOnly #tbmPrintOnlyPage .tbmDocPhotoGrid{
    max-height:48mm!important;
    overflow:hidden!important;
  }

  body.printingTbmOnly #tbmPrintOnlyPage .tbmDocAttendeeTable{
    max-height:38mm!important;
    overflow:hidden!important;
  }

  body.printingTbmOnly #tbmPrintOnlyPage + *{
    display:none!important;
  }

  @page{
    size:A4 portrait;
    margin:0;
  }
}


/* ============================================================
   V115 — 안전보건교육일지 결재자 서명 반영 보정
   ============================================================ */
.eduApprovalSignImg{
  width:auto!important;
  max-width:80px!important;
  max-height:34px!important;
  object-fit:contain!important;
}
@media print{
  .eduApprovalSignImg{
    max-width:25mm!important;
    max-height:10mm!important;
  }
}


/* ============================================================
   V116 — TBM 회의사진 잘림 방지
   ============================================================ */
.tbmDocPhotoGrid{
  align-items:start!important;
  overflow:visible!important;
}
.tbmDocPhotoItem{
  display:flex!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:center!important;
  background:#fff!important;
  border:1px solid #8fa5b7!important;
  padding:2mm!important;
  box-sizing:border-box!important;
  break-inside:avoid!important;
  page-break-inside:avoid!important;
}
.tbmDocPhotoItem img{
  display:block!important;
  width:100%!important;
  object-fit:contain!important;
  background:#fff!important;
  border:0!important;
}
.tbmDocPhotoItem span{
  flex:0 0 6mm!important;
  display:block!important;
  width:100%!important;
  overflow:hidden!important;
  white-space:nowrap!important;
  text-overflow:ellipsis!important;
  text-align:center!important;
  font-size:9px!important;
  line-height:6mm!important;
  color:#111!important;
}
@media print{
  body.printingTbmOnly #tbmPrintOnlyPage .tbmDocPhotoGrid{
    max-height:none!important;
    overflow:visible!important;
    align-items:start!important;
  }
  body.printingTbmOnly #tbmPrintOnlyPage .tbmDocPhotoItem{
    break-inside:avoid!important;
    page-break-inside:avoid!important;
  }
  body.printingTbmOnly #tbmPrintOnlyPage .tbmDocPhotoItem img{
    object-fit:contain!important;
  }
}


/* ============================================================
   V117 안전보건활동 / 아차사고 예방 신고서
   ============================================================ */
.activityWorkGrid{display:grid;grid-template-columns:minmax(420px,.78fr) minmax(520px,1fr);gap:16px;align-items:start}
.activityFormPanel,.activityPreviewPanel{background:#fff;border:1px solid #d7e6f5;border-radius:18px;padding:16px;box-shadow:0 10px 24px rgba(30,70,110,.06)}
.activityFormGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:10px}
.activityScoreGrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:10px 0}
.panelSubTitle{font-size:14px;font-weight:900;color:#0b2b4d;margin:16px 0 8px}
.activityPrintPage{width:210mm;min-height:297mm;background:#fff;color:#000;margin:0 auto;padding:12mm 10mm;box-sizing:border-box;box-shadow:0 12px 30px rgba(30,70,110,.12)}
.activityDocTable{width:100%;border-collapse:collapse;table-layout:fixed;font-size:11px}
.activityDocTable th,.activityDocTable td{border:1px solid #333;padding:5px 6px;vertical-align:middle;word-break:keep-all;overflow-wrap:anywhere}
.activityDocTitle{text-align:center;font-size:22px;font-weight:900;text-decoration:underline;height:22mm}
.activityDocSection{background:#74a6d4;color:#000;text-align:center;font-weight:900;font-size:12px}
.activityDocApprovalLabel{width:11mm;text-align:center;font-weight:900}
.activityApprovalMini{width:100%;height:100%;border-collapse:collapse;table-layout:fixed}
.activityApprovalMini th,.activityApprovalMini td{border:1px solid #333!important;text-align:center!important;padding:3px!important;height:12mm;font-size:10px}
.activityApprovalMini img{max-width:22mm;max-height:10mm;object-fit:contain}
#activityDocPhotoBefore,#activityDocPhotoAfter{height:70mm;text-align:center;vertical-align:middle}
#activityDocPhotoBefore img,#activityDocPhotoAfter img{max-width:100%;max-height:65mm;object-fit:contain;display:block;margin:0 auto}
#activityDocPhotoBefore small,#activityDocPhotoAfter small{display:block;font-size:9px;margin-top:2px}
#activityPrintOnlyWrap{display:none}
@media(max-width:1200px){.activityWorkGrid{grid-template-columns:1fr}.activityPreviewPanel{overflow:auto}.activityPrintPage{transform:scale(.78);transform-origin:top left;margin-bottom:calc(-297mm * .22)}}
@media(max-width:760px){.activityFormGrid,.activityScoreGrid{grid-template-columns:1fr}.activityPrintPage{transform:scale(.52);margin-bottom:calc(-297mm * .48)}}
@media print{
  body.printingActivityOnly *{visibility:hidden!important}
  body.printingActivityOnly #activityPrintOnlyWrap,body.printingActivityOnly #activityPrintOnlyWrap *{visibility:visible!important}
  body.printingActivityOnly #activityPrintOnlyWrap{display:block!important;position:absolute!important;left:0!important;top:0!important;width:210mm!important;min-height:297mm!important;background:#fff!important;z-index:999999!important}
  body.printingActivityOnly #activityPrintOnlyPage{display:block!important;width:210mm!important;min-height:297mm!important;margin:0!important;padding:12mm 10mm!important;box-shadow:none!important;transform:none!important;background:#fff!important}
  @page{size:A4 portrait;margin:0}
}


/* ============================================================
   V118 — 안전보건활동 작성폼 배열 정리
   - 오른쪽 신고서 미리보기는 그대로 유지
   - 왼쪽 입력폼만 카드형 섹션/정렬 개선
   ============================================================ */
.activityFormPanel{
  padding:18px!important;
  background:linear-gradient(180deg,#ffffff,#f8fbff)!important;
}

.activityInputCard{
  border:1px solid #d5e5f6;
  background:#fff;
  border-radius:18px;
  padding:16px;
  margin:0 0 14px;
  box-shadow:0 8px 18px rgba(30,70,110,.045);
}

.activityInputTitle{
  display:flex;
  align-items:center;
  gap:8px;
  margin:0 0 12px;
  color:#0b2b4d;
  font-size:15px;
  font-weight:900;
  letter-spacing:-.02em;
}

.activityInputTitle::before{
  content:"";
  display:block;
  width:8px;
  height:8px;
  border-radius:999px;
  background:#1f7edb;
  box-shadow:0 0 0 4px rgba(31,126,219,.12);
}

.activityFormGrid.activityFormGrid2{
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  gap:12px 14px!important;
  margin:0!important;
}

.activityTextGrid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px 14px;
  margin-top:12px;
}

.activityFormPanel label{
  display:block;
  margin:0!important;
}

.activityFormPanel label > span{
  display:block;
  margin:0 0 6px;
  color:#173b63;
  font-size:12px;
  font-weight:900;
}

.activityFormPanel input,
.activityFormPanel select,
.activityFormPanel textarea{
  width:100%!important;
  box-sizing:border-box!important;
  border:1px solid #c9daec!important;
  border-radius:14px!important;
  background:#fff!important;
  color:#0b1f33!important;
  font-size:14px!important;
  font-weight:700!important;
  outline:none!important;
  box-shadow:0 2px 0 rgba(20,70,120,.02)!important;
}

.activityFormPanel input,
.activityFormPanel select{
  height:44px!important;
  padding:0 14px!important;
}

.activityFormPanel textarea{
  min-height:98px!important;
  padding:12px 14px!important;
  line-height:1.45!important;
  resize:vertical!important;
}

.activityFormPanel input:focus,
.activityFormPanel select:focus,
.activityFormPanel textarea:focus{
  border-color:#1f7edb!important;
  box-shadow:0 0 0 4px rgba(31,126,219,.12)!important;
}

.activityScoreGrid{
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
  gap:12px!important;
  margin:0!important;
}

.activityScoreGrid input{
  text-align:center!important;
  font-size:16px!important;
  font-weight:900!important;
}

.activityFormPanel .panelSubTitle{
  margin:18px 0 10px!important;
  padding-left:10px;
  border-left:4px solid #1f7edb;
  color:#0b2b4d;
  font-size:15px;
  font-weight:900;
}

#activityPhotos{
  height:auto!important;
  padding:10px!important;
  background:#f9fcff!important;
}

.activityFormPanel .eduPhotoPreview,
.activityFormPanel .eduApprovalQrBox{
  background:#f8fbff!important;
  border-radius:18px!important;
}

@media(max-width:1180px){
  .activityFormGrid.activityFormGrid2,
  .activityTextGrid{
    grid-template-columns:1fr!important;
  }
}

@media(max-width:760px){
  .activityInputCard{
    padding:14px;
    border-radius:16px;
  }
  .activityScoreGrid{
    grid-template-columns:1fr!important;
  }
}

/* V119 결재 QR 권한 직책 설정 */
.adminEditGrid select[id^="u_job_position_"],
#adminNewJobPosition{
  border-color:#b9d6f4!important;
}


/* ============================================================
   V124 전사 안전활동률 통계
   ============================================================ */
.safetyRatePanel{
  background:linear-gradient(135deg,#ffffff 0%,#f5fbff 58%,#eaf5ff 100%);
  border:1px solid #cfe0f2;
  border-radius:24px;
  padding:24px;
  box-shadow:0 18px 45px rgba(25,70,120,.08);
  margin:0 0 22px;
}
.safetyRateHead{
  display:flex;
  justify-content:space-between;
  gap:18px;
  align-items:flex-start;
  margin-bottom:18px;
}
.safetyRateHead h3{
  margin:6px 0 8px;
  font-size:28px;
  letter-spacing:-.04em;
  color:#0b1f33;
}
.safetyRateHead p{
  margin:0;
  color:#4d6380;
  font-weight:700;
}
.safetyRateFormula{
  min-width:280px;
  background:#0b2f55;
  color:#fff;
  border-radius:18px;
  padding:16px 18px;
  box-shadow:0 14px 28px rgba(9,44,82,.18);
}
.safetyRateFormula b{display:block;font-size:15px;margin-bottom:8px;color:#bfdbfe}
.safetyRateFormula span{font-weight:900;font-size:14px;line-height:1.45}
.safetyRateSummary{
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:12px;
  margin-bottom:18px;
}
.safetyRateSummary>div{
  background:#fff;
  border:1px solid #d7e7f7;
  border-radius:18px;
  padding:16px;
  box-shadow:0 8px 18px rgba(25,70,120,.05);
}
.safetyRateSummary b{display:block;font-size:24px;color:#0b2f55;margin-bottom:4px}
.safetyRateSummary span{font-size:12px;font-weight:900;color:#5f7894}
.safetyRateChart{
  background:#fff;
  border:1px solid #d7e7f7;
  border-radius:20px;
  padding:16px;
  margin-bottom:16px;
}
.safetyRateBarRow{
  display:grid;
  grid-template-columns:42px 180px 1fr 96px;
  gap:12px;
  align-items:center;
  padding:8px 0;
  border-bottom:1px dashed #e2edf7;
}
.safetyRateBarRow:last-child{border-bottom:0}
.safetyRateBarRow .rank{
  width:32px;height:32px;border-radius:12px;background:#1f7edb;color:#fff;
  display:flex;align-items:center;justify-content:center;font-weight:900;
}
.safetyRateBarRow .name{font-weight:900;color:#102a44}
.safetyRateBarRow .bar{
  height:18px;background:#eef5fc;border-radius:999px;overflow:hidden;border:1px solid #d8e7f4;
}
.safetyRateBarRow .bar span{
  display:block;height:100%;border-radius:999px;
  background:linear-gradient(90deg,#1f7edb,#14b8a6);
}
.safetyRateBarRow .value{text-align:right;font-weight:900;color:#0b2f55}

.safetyRateBarRow.scoreHidden{
  grid-template-columns:42px 180px 1fr;
}

.safetyRateTableWrap{
  overflow:auto;
  border:1px solid #d7e7f7;
  border-radius:18px;
  background:#fff;
}
.safetyRateTable,.safetyRateSettingsTable{
  width:100%;
  border-collapse:collapse;
  table-layout:auto;
  font-size:13px;
}
.safetyRateTable th,.safetyRateTable td,
.safetyRateSettingsTable th,.safetyRateSettingsTable td{
  border-bottom:1px solid #e1edf8;
  padding:11px 10px;
  text-align:center;
}
.safetyRateTable th,.safetyRateSettingsTable th{
  background:#0b2f55;
  color:#fff;
  font-weight:900;
}
.safetyRateTable td.left,.safetyRateSettingsTable td.left{text-align:left}
.safetyRateSettingsList{
  overflow:auto;
}
.safetyRateSettingsTable input[type="number"]{
  width:100px;
  height:36px;
  border:1px solid #c8d9ea;
  border-radius:10px;
  text-align:center;
  font-weight:900;
}
.safetyRateSettingsTable input[type="checkbox"]{
  width:22px;height:22px;
}
@media(max-width:1100px){
  .safetyRateHead{flex-direction:column}
  .safetyRateSummary{grid-template-columns:repeat(2,minmax(0,1fr))}
  .safetyRateBarRow{grid-template-columns:36px 120px 1fr 80px}
}
@media(max-width:720px){
  .safetyRatePanel{padding:16px;border-radius:18px}
  .safetyRateSummary{grid-template-columns:1fr}
  .safetyRateBarRow{grid-template-columns:34px 1fr;gap:8px}
  .safetyRateBarRow.scoreHidden{grid-template-columns:34px 1fr}
  .safetyRateBarRow .bar{grid-column:1/3}
  .safetyRateBarRow .value{text-align:left}
}

/* V125 safety rate display cleanup */
.safetyRateHead{justify-content:flex-start;}

/* V126 QR mail / validity */
.qrMailBox{display:flex;gap:8px;margin-top:10px;align-items:center;flex-wrap:wrap}
.qrMailBox input{flex:1;min-width:180px;height:36px;border:1px solid #c8d9ea;border-radius:10px;padding:0 10px;font-weight:700}
.qrValidText{margin:8px 0 0!important;color:#386081!important;font-size:12px!important;font-weight:900!important}
.eduApprovalQrCard .qrMailBox{width:100%}.eduApprovalQrCard .qrMailBox input{min-width:0;width:100%}


/* ============================================================
   V129 — QR URL 표시 및 메일 입력창 크기 개선
   ============================================================ */
.qrShareBox{
  width:100%;
  margin-top:10px;
  padding:10px;
  border:1px solid #d7e6f5;
  border-radius:14px;
  background:#f8fbff;
  box-sizing:border-box;
}
.qrUrlLabel,
.qrMailLabel{
  display:block;
  font-size:11px;
  font-weight:900;
  color:#2a5f9e;
  margin:0 0 5px;
}
.qrMailLabel{
  margin-top:8px;
}
.qrUrlRow,
.qrMailRow{
  display:flex;
  gap:6px;
  align-items:center;
  width:100%;
}
.qrUrlInput,
.qrMailInput{
  flex:1 1 auto!important;
  min-width:0!important;
  height:34px!important;
  border:1px solid #bfd5ec!important;
  border-radius:10px!important;
  padding:0 9px!important;
  background:#fff!important;
  color:#0b1f33!important;
  font-size:12px!important;
  font-weight:700!important;
  box-sizing:border-box!important;
}
.qrUrlInput{
  font-size:11px!important;
  color:#31516f!important;
}
.qrMailBtn{
  flex:0 0 auto!important;
  white-space:nowrap!important;
  min-width:72px!important;
}
.eduApprovalQrGrid{
  grid-template-columns:repeat(auto-fit,minmax(230px,1fr))!important;
}
.eduApprovalQrCard{
  min-width:0!important;
  width:100%!important;
  box-sizing:border-box!important;
}
.eduApprovalQrCard img{
  max-width:160px!important;
  width:100%!important;
  height:auto!important;
}
@media(max-width:760px){
  .qrUrlRow,
  .qrMailRow{
    flex-direction:column;
    align-items:stretch;
  }
  .qrMailBtn,
  .qrUrlRow .btn{
    width:100%;
  }
  .eduApprovalQrGrid{
    grid-template-columns:1fr!important;
  }
}


/* ============================================================
   V131 — 모바일 문서 미리보기/카메라 분석 보정
   ============================================================ */
.mobileCameraBox{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  align-items:center;
  width:100%;
}
.mobileCameraBox input[type="file"]:not(.hidden){
  flex:1 1 260px;
  min-width:0;
}
.mobileCameraBox small{
  flex:1 1 100%;
  color:#5c7289;
  font-size:12px;
  font-weight:700;
}
.mobileCameraBtn{
  display:none;
}
.riskThumb .btn.tiny{
  margin:6px;
  width:calc(100% - 12px);
}
@media(max-width:900px){
  .mobileCameraBtn{
    display:inline-flex;
  }
  .eduPreviewPanel,
  .activityPreviewPanel{
    overflow-x:auto!important;
    -webkit-overflow-scrolling:touch!important;
    padding:10px!important;
  }
  .eduPreviewPages{
    width:100%!important;
    overflow-x:auto!important;
    -webkit-overflow-scrolling:touch!important;
    align-items:flex-start!important;
  }
  .eduPrintPage,
  .eduAttendancePage,
  .activityPrintPage{
    transform:none!important;
    width:100%!important;
    min-width:0!important;
    max-width:100%!important;
    min-height:auto!important;
    margin:0 auto 12px!important;
    padding:10px!important;
    box-sizing:border-box!important;
    overflow:hidden!important;
  }
  .eduDocTable,
  .activityDocTable,
  .eduAttendanceTable{
    width:100%!important;
    table-layout:fixed!important;
    font-size:10px!important;
  }
  .eduDocTable td,
  .eduDocTable th,
  .activityDocTable td,
  .activityDocTable th,
  .eduAttendanceTable td,
  .eduAttendanceTable th{
    padding:3px!important;
    word-break:break-word!important;
    overflow-wrap:anywhere!important;
    font-size:10px!important;
  }
  .eduDocTitle{
    font-size:18px!important;
  }
  .eduTitleFlex{
    gap:6px!important;
  }
  .eduApproval{
    max-width:42vw!important;
    font-size:9px!important;
  }
  .eduDocTopBrand,
  .activityPrintPage .eduDocTopBrand{
    margin-bottom:8px!important;
  }
  .eduDocKtoLogo{
    transform:scale(.8);
    transform-origin:right center;
  }
  .eduDocContent{
    min-height:120px!important;
  }
  .eduDocPhotoGrid img{
    height:auto!important;
    max-height:120px!important;
    object-fit:contain!important;
  }
  .eduAttendanceTitle{
    font-size:18px!important;
    margin:16px 0!important;
  }
}
@media(max-width:480px){
  .eduPrintPage,
  .eduAttendancePage,
  .activityPrintPage{
    padding:8px!important;
  }
  .eduDocTable,
  .activityDocTable,
  .eduAttendanceTable{
    font-size:9px!important;
  }
  .eduDocTable td,
  .eduDocTable th,
  .activityDocTable td,
  .activityDocTable th,
  .eduAttendanceTable td,
  .eduAttendanceTable th{
    font-size:9px!important;
    padding:2px!important;
  }
  .eduDocTitle{
    font-size:16px!important;
  }
  .eduCatGrid{
    grid-template-columns:1fr!important;
    gap:3px!important;
  }
}


/* V133: V131 디자인 유지 + 헤더 로고 크기 강제 보정 */
.sideBrand img{
  width:38px!important;
  height:38px!important;
  max-width:38px!important;
  max-height:38px!important;
  object-fit:contain!important;
  flex:0 0 38px!important;
}
.commandBrand img{
  width:34px!important;
  height:34px!important;
  max-width:34px!important;
  max-height:34px!important;
  object-fit:contain!important;
}

/* V135 작업중지요청 게시판 */
.homeModuleCard.stop{border-left:5px solid #ef4444}
.workStopGrid{display:grid;grid-template-columns:minmax(420px,1fr) minmax(420px,0.9fr);gap:18px;padding:18px}
.workStopFormPanel,.workStopPreviewPanel{background:#f7fbff;border:1px solid #d6e7f6;border-radius:24px;padding:18px}
.workStopInputCard{background:#fff;border:1px solid #d6e7f6;border-radius:20px;padding:16px;margin-bottom:14px}
.workStopFormGrid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.workStopInputCard label.full{display:block}
.workStopInputCard textarea{min-height:96px;resize:vertical}
.workStopPrintPage{width:760px;min-height:920px;margin:0 auto;background:#fff;padding:28px;box-sizing:border-box;color:#000}
.workStopDocTitle{text-align:center;font-size:28px;font-weight:500;letter-spacing:.18em;margin:28px 0 30px}
.workStopDocTable{width:100%;border-collapse:collapse;font-size:16px}
.workStopDocTable th,.workStopDocTable td{border:1.5px solid #000;padding:14px;vertical-align:middle}
.workStopDocTable th{width:110px;text-align:center;font-weight:900;background:#fff}
.workStopDocTable tr.tall th,.workStopDocTable tr.tall td{height:120px}
.signatureDocBox{display:flex;align-items:center;gap:14px;min-height:70px}
.signatureDocBox img{max-height:62px;max-width:180px;object-fit:contain}
.signedBadge{display:inline-flex;padding:3px 8px;border-radius:999px;background:#dcfce7;color:#15803d;font-weight:900}
.workStopQrCard{max-width:280px}
@media(max-width:1100px){.workStopGrid{grid-template-columns:1fr}.workStopPrintPage{width:100%;min-height:auto}.workStopFormGrid{grid-template-columns:1fr}}
@media(max-width:640px){.workStopGrid{padding:10px}.workStopFormPanel,.workStopPreviewPanel{padding:10px;border-radius:18px}.workStopPrintPage{padding:12px}.workStopDocTitle{font-size:20px;margin:18px 0}.workStopDocTable{font-size:12px}.workStopDocTable th,.workStopDocTable td{padding:8px}.workStopDocTable tr.tall th,.workStopDocTable tr.tall td{height:90px}}
/* V341 removed broad workStop print rule */


/* V136 작업중지요청 모바일/배열/문서선/카메라 보정 */
.workStopGrid{
  grid-template-columns:minmax(520px, 0.95fr) minmax(520px, 1.05fr)!important;
  align-items:start!important;
}
.workStopFormPanel,
.workStopPreviewPanel{
  min-width:0!important;
  box-sizing:border-box!important;
}
.workStopInputCard{
  width:100%!important;
  box-sizing:border-box!important;
}
.workStopFormGrid{
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  gap:14px 18px!important;
  align-items:end!important;
}
.workStopFormGrid label,
.workStopInputCard label.full{
  display:flex!important;
  flex-direction:column!important;
  gap:7px!important;
  min-width:0!important;
}
.workStopFormGrid input,
.workStopFormGrid select,
.workStopInputCard textarea,
.workStopInputCard input{
  width:100%!important;
  min-width:0!important;
  box-sizing:border-box!important;
}
.workStopInputCard textarea{
  min-height:110px!important;
  line-height:1.45!important;
}
.workStopInputCard .activityInputTitle{
  margin-bottom:12px!important;
}
.workStopPrintPage{
  max-width:100%!important;
  overflow:hidden!important;
}
.workStopPrintPage .eduDocTopBrand{
  display:block!important;
  margin-bottom:20px!important;
}
.workStopPrintPage .eduDocKtoLogo{
  display:flex!important;
  justify-content:flex-end!important;
  align-items:center!important;
  gap:7px!important;
  margin-bottom:8px!important;
}
.workStopPrintPage .eduDocKtoLogo img{
  width:30px!important;
  height:30px!important;
  object-fit:contain!important;
}
.workStopPrintPage .eduDocLines{
  display:block!important;
  width:100%!important;
  height:8px!important;
  position:relative!important;
  margin-top:8px!important;
}
.workStopPrintPage .eduDocLines span{
  display:block!important;
  width:100%!important;
  height:4px!important;
}
.workStopPrintPage .eduDocLines span:first-child{background:#0b9bd8!important;}
.workStopPrintPage .eduDocLines span:last-child{background:#f28c00!important;margin-top:2px!important;}
.workStopDocTable{
  table-layout:fixed!important;
}
.workStopDocTable td{
  word-break:break-word!important;
  overflow-wrap:anywhere!important;
  white-space:pre-wrap!important;
}
.activityPhotoPreview .activityPhotoThumb,
#workStopPhotoPreview .activityPhotoThumb{
  width:160px!important;
  max-width:100%!important;
}
#workStopPhotoPreview{
  margin-top:12px!important;
}
#workStopPhotoPreview img{
  width:100%!important;
  height:120px!important;
  object-fit:cover!important;
  border-radius:12px!important;
}
#workStopPhotoPreview .btn.tiny{
  margin-top:6px!important;
  width:100%!important;
}
@media(max-width:1100px){
  .workStopGrid{
    grid-template-columns:1fr!important;
  }
}
@media(max-width:760px){
  #workStop .panelHead .rowActions{
    display:grid!important;
    grid-template-columns:1fr 1fr!important;
    gap:8px!important;
    width:100%!important;
  }
  #workStop .panelHead .rowActions .btn{
    width:100%!important;
    min-width:0!important;
    padding-left:8px!important;
    padding-right:8px!important;
  }
  .workStopGrid{
    padding:10px!important;
    gap:12px!important;
  }
  .workStopFormPanel,
  .workStopPreviewPanel{
    padding:10px!important;
    border-radius:18px!important;
    overflow:hidden!important;
  }
  .workStopFormGrid{
    grid-template-columns:1fr!important;
    gap:12px!important;
  }
  .workStopInputCard{
    padding:12px!important;
    border-radius:16px!important;
  }
  .workStopInputCard textarea{
    min-height:120px!important;
    font-size:15px!important;
  }
  .workStopPreviewPanel{
    overflow-x:auto!important;
    -webkit-overflow-scrolling:touch!important;
  }
  .workStopPrintPage{
    width:100%!important;
    min-width:0!important;
    padding:12px!important;
    min-height:auto!important;
    transform:none!important;
  }
  .workStopDocTitle{
    font-size:19px!important;
    letter-spacing:.08em!important;
    margin:18px 0!important;
  }
  .workStopDocTable{
    width:100%!important;
    font-size:12px!important;
  }
  .workStopDocTable th{
    width:84px!important;
    font-size:12px!important;
  }
  .workStopDocTable th,
  .workStopDocTable td{
    padding:8px!important;
  }
  .workStopDocTable tr.tall th,
  .workStopDocTable tr.tall td{
    height:92px!important;
  }
  .mobileCameraBtn{
    display:inline-flex!important;
  }
}
@media(max-width:420px){
  #workStop .panelHead .rowActions{
    grid-template-columns:1fr!important;
  }
  .workStopDocTable th{
    width:72px!important;
  }
  .workStopDocTable{
    font-size:11px!important;
  }
}
@media print{
  #workStopPrintOnlyWrap .workStopPrintPage .eduDocLines,
  #workStopPrintOnlyWrap .workStopPrintPage .eduDocLines span{
    -webkit-print-color-adjust:exact!important;
    print-color-adjust:exact!important;
  }
}

/* V137 작업중지요청 바로 작성 QR / 양식 순서 보정 */
.workStopPublicQrPanel{
  margin:16px;
  padding:18px;
  display:grid;
  grid-template-columns:1fr 180px;
  gap:16px;
  align-items:center;
  background:linear-gradient(135deg,#f7fbff,#eef7ff);
  border:1px dashed #b8d4f0;
  border-radius:22px;
}
.workStopPublicQrPanel h4{
  margin:0 0 8px;
  font-size:18px;
  font-weight:1000;
  color:#0b2a4a;
}
.workStopPublicQrPanel p{
  margin:0 0 12px;
  color:#49627a;
  font-weight:800;
}
.workStopPublicQrImg{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:8px;
  font-weight:900;
  color:#0b4f9f;
}
.workStopPublicQrImg img{
  width:150px;
  height:150px;
  border:10px solid #fff;
  border-radius:16px;
  box-shadow:0 10px 24px rgba(15,35,60,.12);
}
@media(max-width:700px){
  .workStopPublicQrPanel{grid-template-columns:1fr;margin:10px;padding:14px}
  .workStopPublicQrImg{align-items:flex-start}
}

/* V138 작업중지요청 게시판 QR/GPT 분석 보정 */
.workStopPublicQrImg .empty{
  padding:14px;
  border:1px dashed #b8d4f0;
  border-radius:14px;
  background:#fff;
  color:#4b6580;
  font-weight:900;
  text-align:center;
}
.workStopPublicQrPanel .qrUrlRow{
  display:flex;
  gap:8px;
  align-items:center;
}
.workStopPublicQrPanel .qrUrlInput{
  flex:1 1 auto;
}
@media(max-width:700px){
  .workStopPublicQrPanel .qrUrlRow{
    flex-direction:column;
    align-items:stretch;
  }
}

/* V139 작업중지요청 센터선택/목록/모바일서명 보정 */
.workStopListGrid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(320px,1fr));
  gap:12px;
  padding:14px 18px 18px;
}
.workStopListCard{
  cursor:pointer;
  background:#fff;
  border:1px solid #d6e7f6;
  border-radius:18px;
  padding:14px;
  box-shadow:0 8px 20px rgba(15,35,60,.045);
  transition:.15s;
}
.workStopListCard:hover{
  transform:translateY(-1px);
  box-shadow:0 14px 28px rgba(15,35,60,.08);
  border-color:#8ec5ff;
}
.workStopListTop{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  margin-bottom:8px;
}
.workStopListTop b{
  font-size:14px;
  color:#0b2a4a;
}
.workStopListTitle{
  font-size:16px;
  font-weight:1000;
  color:#10233d;
  margin-bottom:8px;
}
.workStopListCard p{
  margin:0 0 10px;
  color:#34465a;
  line-height:1.5;
  font-weight:700;
}
.workStopListMeta{
  display:flex;
  gap:6px;
  flex-wrap:wrap;
}
.workStopListMeta span{
  padding:4px 8px;
  border-radius:999px;
  background:#f1f7fd;
  border:1px solid #d6e7f6;
  color:#49627a;
  font-size:12px;
  font-weight:900;
}
#workStopCenterFilter,
#workStopCenter{
  min-height:38px!important;
  width:100%!important;
}
@media(max-width:640px){
  .workStopListGrid{grid-template-columns:1fr;padding:10px}
}

/* V143 작업중지요청 삭제 버튼 */
.workStopListCard{position:relative;overflow:hidden}
.workStopDeleteMini{
  position:absolute;
  top:12px;
  right:12px;
  z-index:2;
  min-width:54px;
  height:30px;
  border:1px solid #fecaca;
  border-radius:999px;
  background:#fff1f2;
  color:#dc2626;
  font-size:12px;
  font-weight:1000;
  cursor:pointer;
}
.workStopCardBody{cursor:pointer;padding-right:62px}
.workStopDeleteMini:hover{background:#fee2e2}
@media(max-width:640px){
  .workStopCardBody{padding-right:0;padding-top:26px}
}


/* V144 생성 로딩 이미지 반영 */
.loadingOverlay{
  position:fixed!important;
  inset:0!important;
  z-index:99999!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  background:rgba(7,18,35,.42)!important;
  backdrop-filter:blur(5px)!important;
  -webkit-backdrop-filter:blur(5px)!important;
}
.loadingOverlay.hidden{
  display:none!important;
}
.loadingCard{
  width:min(280px, calc(100vw - 48px))!important;
  min-height:230px!important;
  padding:26px 24px 24px!important;
  box-sizing:border-box!important;
  display:flex!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:center!important;
  gap:12px!important;
  background:rgba(255,255,255,.94)!important;
  border:1px solid rgba(206,226,245,.95)!important;
  border-radius:28px!important;
  box-shadow:0 24px 70px rgba(6,22,45,.28)!important;
}
.loadingSpinnerImg{
  width:118px!important;
  height:118px!important;
  object-fit:contain!important;
  display:block!important;
  animation:ktoSpinV144 1.15s linear infinite!important;
  filter:drop-shadow(0 10px 24px rgba(18,89,150,.22))!important;
}
.loadingText{
  font-size:19px!important;
  font-weight:1000!important;
  letter-spacing:-.04em!important;
  color:#0b2a4a!important;
  text-align:center!important;
}
.loadingSubText{
  font-size:13px!important;
  font-weight:800!important;
  color:#6b7f93!important;
  text-align:center!important;
}
body.isLoading{
  cursor:progress!important;
}
@keyframes ktoSpinV144{
  from{transform:rotate(0deg)}
  to{transform:rotate(360deg)}
}
@media(max-width:520px){
  .loadingCard{
    width:230px!important;
    min-height:210px!important;
    border-radius:24px!important;
    padding:22px 18px!important;
  }
  .loadingSpinnerImg{
    width:104px!important;
    height:104px!important;
  }
  .loadingText{
    font-size:17px!important;
  }
}
@media (prefers-reduced-motion: reduce){
  .loadingSpinnerImg{
    animation:ktoPulseV144 1.4s ease-in-out infinite!important;
  }
  @keyframes ktoPulseV144{
    0%,100%{opacity:.72;transform:scale(.98)}
    50%{opacity:1;transform:scale(1.03)}
  }
}


/* V145 로딩 스피너 표시 오류 수정: 이미지가 작게 보이는 문제 방지 */
.loadingOverlay{
  position:fixed!important;
  inset:0!important;
  z-index:99999!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  background:rgba(7,18,35,.42)!important;
  backdrop-filter:blur(5px)!important;
  -webkit-backdrop-filter:blur(5px)!important;
}
.loadingOverlay.hidden{
  display:none!important;
}
.loadingCard{
  width:min(286px, calc(100vw - 48px))!important;
  min-height:236px!important;
  padding:28px 24px 24px!important;
  box-sizing:border-box!important;
  display:flex!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:center!important;
  gap:12px!important;
  background:rgba(255,255,255,.96)!important;
  border:1px solid rgba(206,226,245,.95)!important;
  border-radius:28px!important;
  box-shadow:0 24px 70px rgba(6,22,45,.28)!important;
}
.loadingSpinnerImg{
  display:none!important;
}
.loadingSpinnerWrap{
  width:124px!important;
  height:124px!important;
  position:relative!important;
  display:block!important;
  border-radius:50%!important;
  animation:ktoSpinV145 1.08s linear infinite!important;
  filter:drop-shadow(0 10px 24px rgba(18,89,150,.24))!important;
}
.loadingSpinnerWrap::before{
  content:""!important;
  position:absolute!important;
  inset:0!important;
  border-radius:50%!important;
  background:
    conic-gradient(
      from 0deg,
      #f28c2f 0deg 32deg,
      transparent 32deg 40deg,
      #f28c2f 40deg 70deg,
      transparent 70deg 82deg,
      #128ed0 82deg 118deg,
      transparent 118deg 130deg,
      #148ed2 130deg 166deg,
      transparent 166deg 178deg,
      #1f99d2 178deg 214deg,
      transparent 214deg 228deg,
      #e9f2f5 228deg 266deg,
      transparent 266deg 278deg,
      #d7a57c 278deg 314deg,
      transparent 314deg 326deg,
      #f7c297 326deg 360deg
    )!important;
}
.loadingSpinnerWrap::after{
  content:""!important;
  position:absolute!important;
  inset:15px!important;
  border-radius:50%!important;
  background:rgba(255,255,255,.96)!important;
  box-shadow:
    inset 0 0 0 7px rgba(255,255,255,.92),
    inset 10px 0 22px rgba(38,148,204,.22),
    inset -10px 0 22px rgba(244,142,55,.18)!important;
}
.loadingSpinnerCore{
  position:absolute!important;
  inset:31px!important;
  border-radius:50%!important;
  background:rgba(255,255,255,.98)!important;
  z-index:2!important;
}
.loadingText{
  font-size:19px!important;
  font-weight:1000!important;
  letter-spacing:-.04em!important;
  color:#0b2a4a!important;
  text-align:center!important;
}
.loadingSubText{
  font-size:13px!important;
  font-weight:800!important;
  color:#6b7f93!important;
  text-align:center!important;
}
@keyframes ktoSpinV145{
  from{transform:rotate(0deg)}
  to{transform:rotate(360deg)}
}
@media(max-width:520px){
  .loadingCard{
    width:236px!important;
    min-height:218px!important;
    border-radius:24px!important;
    padding:22px 18px!important;
  }
  .loadingSpinnerWrap{
    width:108px!important;
    height:108px!important;
  }
  .loadingText{
    font-size:17px!important;
  }
}


/* V146 로딩 스피너 전면 수정: 박스 안 이미지 제거, 원형 아크 스피너 적용 */
.loadingOverlay{
  position:fixed!important;
  inset:0!important;
  z-index:99999!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  background:rgba(8,18,33,.38)!important;
  backdrop-filter:blur(6px)!important;
  -webkit-backdrop-filter:blur(6px)!important;
}
.loadingOverlay.hidden{display:none!important;}
.loadingOverlay .loadingCard{
  width:min(286px, calc(100vw - 48px))!important;
  min-height:218px!important;
  padding:26px 22px 22px!important;
  box-sizing:border-box!important;
  display:flex!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:center!important;
  gap:12px!important;
  border-radius:28px!important;
  background:rgba(255,255,255,.95)!important;
  border:1px solid rgba(211,225,240,.95)!important;
  box-shadow:0 18px 54px rgba(7,21,44,.24)!important;
}
.loadingOverlay .loadingSpinnerImg,
.loadingOverlay img,
.loadingOverlay .loadingSpinnerWrap,
.loadingOverlay .loadingSpinnerCore{display:none!important;}
.loadingSpinnerCanvas{
  width:132px!important;
  height:132px!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
}
.loadingSpinnerSvg{
  width:132px!important;
  height:132px!important;
  overflow:visible!important;
  animation:loadingWheelSpin 1.65s linear infinite!important;
  filter:drop-shadow(0 10px 26px rgba(12,76,141,.14));
}
.loadingSpinnerSvg .arc{
  fill:none!important;
  stroke-linecap:round!important;
  transform-origin:60px 60px!important;
}
.loadingSpinnerSvg .arcOuter{
  stroke:#5f97ff!important;
  stroke-width:7!important;
  stroke-dasharray:138 160!important;
  transform:rotate(-22deg)!important;
  animation:loadingArcOuter 1.8s ease-in-out infinite;
}
.loadingSpinnerSvg .arcMid{
  stroke:#61c8ff!important;
  stroke-width:8!important;
  stroke-dasharray:112 120!important;
  transform:rotate(42deg)!important;
  animation:loadingArcMid 1.5s ease-in-out infinite reverse;
}
.loadingSpinnerSvg .arcInner{
  stroke:#0b67c4!important;
  stroke-width:5!important;
  stroke-dasharray:54 80!important;
  transform:rotate(-70deg)!important;
  animation:loadingArcInner 1.25s ease-in-out infinite;
}
body.isLoading{cursor:progress!important;}
@keyframes loadingWheelSpin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}
@keyframes loadingArcOuter{0%,100%{stroke-dasharray:138 160;opacity:.95}50%{stroke-dasharray:160 138;opacity:.78}}
@keyframes loadingArcMid{0%,100%{stroke-dasharray:112 120;opacity:.94}50%{stroke-dasharray:130 102;opacity:.72}}
@keyframes loadingArcInner{0%,100%{stroke-dasharray:54 80;opacity:.95}50%{stroke-dasharray:68 66;opacity:.68}}
@media (max-width:520px){
  .loadingOverlay .loadingCard{
    width:236px!important;
    min-height:204px!important;
    padding:22px 18px!important;
    border-radius:24px!important;
  }
  .loadingSpinnerCanvas,.loadingSpinnerSvg{width:112px!important;height:112px!important;}
  .loadingText{font-size:17px!important;}
}


/* V147 사용자 제공 스피너 적용: 투명 PNG 회전 */
.loadingOverlay{
  position:fixed!important;
  inset:0!important;
  z-index:99999!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  background:rgba(7,18,35,.40)!important;
  backdrop-filter:blur(6px)!important;
  -webkit-backdrop-filter:blur(6px)!important;
}
.loadingOverlay.hidden{display:none!important;}
.loadingOverlay .loadingCard{
  width:min(260px, calc(100vw - 40px))!important;
  min-height:228px!important;
  padding:24px 22px 22px!important;
  box-sizing:border-box!important;
  display:flex!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:center!important;
  gap:10px!important;
  border-radius:28px!important;
  background:rgba(255,255,255,.94)!important;
  border:1px solid rgba(216,228,241,.95)!important;
  box-shadow:0 22px 68px rgba(7,21,44,.26)!important;
}
.loadingOverlay .loadingSpinnerCanvas,
.loadingOverlay .loadingSpinnerSvg,
.loadingOverlay .loadingSpinnerWrap,
.loadingOverlay .loadingSpinnerCore{display:none!important;}
.loadingOverlay img.loadingSpinnerImg,
.loadingOverlay .loadingCard img.loadingSpinnerImg,
.loadingSpinnerImg{
  display:block!important;
  width:118px!important;
  height:118px!important;
  object-fit:contain!important;
  background:transparent!important;
  box-shadow:none!important;
  border:none!important;
  animation:userSpinnerRotate 1.18s linear infinite!important;
  transform-origin:center center!important;
  filter:drop-shadow(0 10px 24px rgba(17,86,150,.16))!important;
}
.loadingText{
  margin-top:2px!important;
  font-size:18px!important;
  line-height:1.2!important;
  font-weight:900!important;
  color:#0f3157!important;
  letter-spacing:-.03em!important;
  text-align:center!important;
}
.loadingSubText{
  font-size:14px!important;
  line-height:1.4!important;
  font-weight:700!important;
  color:#5e7995!important;
  text-align:center!important;
}
body.isLoading{cursor:progress!important;}
@keyframes userSpinnerRotate{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}
@media (max-width:520px){
  .loadingOverlay .loadingCard{
    width:258px!important;
    min-height:228px!important;
    padding:22px 18px 20px!important;
  }
  .loadingOverlay img.loadingSpinnerImg,.loadingSpinnerImg{
    width:112px!important;
    height:112px!important;
  }
}

/* V148 안전 대화형 챗봇 */
.safetyBotWidget{
  position:fixed;
  left:18px;
  bottom:18px;
  z-index:8500;
  pointer-events:none;
}
.safetyBotLauncher{
  pointer-events:auto;
  display:flex;
  align-items:center;
  gap:10px;
  max-width:310px;
  border:1px solid rgba(179,209,236,.9);
  background:rgba(255,255,255,.94);
  box-shadow:0 18px 44px rgba(6,22,45,.18);
  border-radius:22px;
  padding:10px 12px;
  cursor:pointer;
  text-align:left;
}
.safetyBotLauncher img{
  width:58px;
  height:58px;
  object-fit:contain;
  flex:0 0 auto;
}
.safetyBotLauncher span{
  display:flex;
  flex-direction:column;
  gap:3px;
}
.safetyBotLauncher b{
  color:#0b2a4a;
  font-size:15px;
  font-weight:1000;
}
.safetyBotLauncher em{
  color:#59748e;
  font-size:12px;
  line-height:1.25;
  font-style:normal;
  font-weight:800;
}
.safetyBotPanel{
  pointer-events:auto;
  position:absolute;
  left:0;
  bottom:86px;
  width:380px;
  max-width:calc(100vw - 36px);
  height:min(640px, calc(100vh - 130px));
  display:flex;
  flex-direction:column;
  border:1px solid rgba(183,213,240,.95);
  border-radius:24px;
  background:rgba(255,255,255,.98);
  box-shadow:0 24px 80px rgba(7,21,44,.24);
  overflow:hidden;
}
.safetyBotPanel.hidden{display:none;}
.safetyBotHead{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:10px;
  padding:14px;
  background:linear-gradient(135deg,#0f2f4f,#145ea8);
  color:#fff;
}
.safetyBotTitle{
  display:flex;
  align-items:center;
  gap:10px;
}
.safetyBotTitle img{
  width:48px;
  height:48px;
  object-fit:contain;
}
.safetyBotTitle b{
  display:block;
  font-size:17px;
  font-weight:1000;
}
.safetyBotTitle span{
  display:block;
  font-size:12px;
  color:#dceeff;
  font-weight:800;
}
.safetyBotClose{
  width:34px;
  height:34px;
  border:0;
  border-radius:50%;
  background:rgba(255,255,255,.16);
  color:#fff;
  font-size:24px;
  cursor:pointer;
}
.safetyBotQuick{
  display:flex;
  gap:7px;
  flex-wrap:wrap;
  padding:12px;
  border-bottom:1px solid #d9e8f6;
  background:#f5faff;
}
.safetyBotQuick button{
  border:1px solid #c8ddf1;
  background:#fff;
  color:#135394;
  border-radius:999px;
  padding:7px 10px;
  font-size:12px;
  font-weight:900;
  cursor:pointer;
}
.safetyBotQuick button:hover{
  background:#eaf4ff;
}
.safetyBotMessages{
  flex:1;
  overflow:auto;
  padding:14px;
  display:flex;
  flex-direction:column;
  gap:10px;
  background:#fbfdff;
}
.safetyBotMsg{
  max-width:86%;
  padding:10px 12px;
  border-radius:16px;
  line-height:1.55;
  font-size:13px;
  font-weight:700;
  white-space:normal;
}
.safetyBotMsg.bot{
  align-self:flex-start;
  background:#eef6ff;
  color:#12385f;
  border:1px solid #d4e7f8;
  border-top-left-radius:6px;
}
.safetyBotMsg.user{
  align-self:flex-end;
  background:#1467d8;
  color:#fff;
  border-top-right-radius:6px;
}
.safetyBotUpload{
  padding:10px 12px;
  border-top:1px solid #d9e8f6;
  background:#f7fbff;
  display:grid;
  gap:8px;
}
.safetyBotUpload.hidden{display:none;}
.safetyBotUpload input[type=file]{
  width:100%;
}
.safetyBotUpload button{
  border:0;
  border-radius:12px;
  background:#0f766e;
  color:#fff;
  height:38px;
  font-weight:900;
}
#safetyBotFilePreview{
  color:#5f7893;
  font-size:12px;
  font-weight:800;
}
.safetyBotInputRow{
  display:grid;
  grid-template-columns:1fr 72px;
  gap:8px;
  padding:12px;
  border-top:1px solid #d9e8f6;
  background:#fff;
}
.safetyBotInputRow input{
  height:42px;
  border:1px solid #cbddec;
  border-radius:14px;
  padding:0 12px;
  font-weight:800;
  min-width:0;
}
.safetyBotInputRow button{
  height:42px;
  border:0;
  border-radius:14px;
  background:#0b63ce;
  color:#fff;
  font-weight:1000;
  cursor:pointer;
}
@media(max-width:760px){
  .safetyBotWidget{
    left:10px;
    bottom:10px;
  }
  .safetyBotLauncher{
    max-width:245px;
    padding:8px 10px;
  }
  .safetyBotLauncher img{
    width:50px;
    height:50px;
  }
  .safetyBotLauncher em{
    display:none;
  }
  .safetyBotPanel{
    width:calc(100vw - 20px);
    height:min(620px, calc(100vh - 108px));
    bottom:74px;
  }
}
@media print{
  .safetyBotWidget{display:none!important;}
}

/* V149 챗봇 개선: 말풍선 제거 / 검색결과 선택형 */
.safetyBotLauncher.iconOnly{
  width:78px!important;
  height:78px!important;
  max-width:78px!important;
  padding:5px!important;
  border-radius:24px!important;
  justify-content:center!important;
  background:rgba(255,255,255,.82)!important;
}
.safetyBotLauncher.iconOnly img{
  width:68px!important;
  height:68px!important;
}
.safetyBotLauncher.iconOnly span{
  display:none!important;
}
.safetyBotWidget{
  left:16px!important;
  bottom:16px!important;
}
.safetyBotPanel{
  left:0!important;
  bottom:92px!important;
  width:390px!important;
  max-width:calc(100vw - 32px)!important;
}
.safetyBotChemChoices{
  display:grid;
  gap:7px;
}
.safetyBotChemChoices button{
  width:100%;
  text-align:left;
  border:1px solid #cfe2f5;
  background:#fff;
  border-radius:14px;
  padding:10px;
  cursor:pointer;
}
.safetyBotChemChoices button:hover{
  background:#eef7ff;
  border-color:#86bdf2;
}
.safetyBotChemChoices b{
  display:block;
  color:#0b2a4a;
  font-size:13px;
  font-weight:1000;
  margin-bottom:3px;
}
.safetyBotChemChoices span{
  color:#5d7893;
  font-size:12px;
  font-weight:800;
}
.safetyBotMsg.bot{
  user-select:text;
}
@media(max-width:760px){
  .safetyBotLauncher.iconOnly{
    width:66px!important;
    height:66px!important;
    border-radius:22px!important;
  }
  .safetyBotLauncher.iconOnly img{
    width:58px!important;
    height:58px!important;
  }
  .safetyBotPanel{
    bottom:76px!important;
    width:calc(100vw - 20px)!important;
  }
}

/* V150 챗봇 말풍선 위쪽 배치 + PDF 법령 학습 반영 */
.safetyBotLauncher.bubbleTop{
  width:86px!important;
  height:86px!important;
  max-width:86px!important;
  padding:6px!important;
  border-radius:24px!important;
  justify-content:center!important;
  background:rgba(255,255,255,.88)!important;
  position:relative!important;
}
.safetyBotLauncher.bubbleTop img{
  width:74px!important;
  height:74px!important;
  object-fit:contain!important;
}
.safetyBotBubbleText{
  position:absolute!important;
  left:0!important;
  bottom:94px!important;
  width:242px!important;
  padding:12px 14px!important;
  border-radius:18px!important;
  background:rgba(255,255,255,.96)!important;
  border:1px solid #c8ddf1!important;
  box-shadow:0 16px 38px rgba(6,22,45,.16)!important;
  display:flex!important;
  flex-direction:column!important;
  gap:4px!important;
  text-align:left!important;
  pointer-events:none!important;
}
.safetyBotBubbleText::after{
  content:""!important;
  position:absolute!important;
  left:28px!important;
  bottom:-8px!important;
  width:14px!important;
  height:14px!important;
  background:rgba(255,255,255,.96)!important;
  border-right:1px solid #c8ddf1!important;
  border-bottom:1px solid #c8ddf1!important;
  transform:rotate(45deg)!important;
}
.safetyBotBubbleText b{
  color:#0b2a4a!important;
  font-size:15px!important;
  font-weight:1000!important;
}
.safetyBotBubbleText em{
  color:#59748e!important;
  font-size:12px!important;
  line-height:1.25!important;
  font-style:normal!important;
  font-weight:800!important;
}
.safetyBotPanel:not(.hidden) + *{}
.safetyBotWidget .safetyBotPanel:not(.hidden) ~ .safetyBotLauncher .safetyBotBubbleText,
.safetyBotPanel:not(.hidden) ~ .safetyBotLauncher .safetyBotBubbleText{
  display:none!important;
}
@media(max-width:760px){
  .safetyBotLauncher.bubbleTop{
    width:68px!important;
    height:68px!important;
    border-radius:22px!important;
  }
  .safetyBotLauncher.bubbleTop img{
    width:60px!important;
    height:60px!important;
  }
  .safetyBotBubbleText{
    width:210px!important;
    bottom:76px!important;
    padding:10px 12px!important;
  }
  .safetyBotBubbleText b{
    font-size:14px!important;
  }
}

.safetyBotWidget.opened .safetyBotBubbleText{
  display:none!important;
}

/* V152 챗봇 로그인 숨김 / 초기화 / 인트로 액션 */
.safetyBotWidget.loginHidden{
  display:none!important;
}
.safetyBotHeadActions{
  display:flex;
  align-items:center;
  gap:7px;
}
.safetyBotResetBtn{
  height:32px;
  padding:0 10px;
  border:1px solid rgba(255,255,255,.28);
  border-radius:999px;
  background:rgba(255,255,255,.16);
  color:#fff;
  font-size:12px;
  font-weight:900;
  cursor:pointer;
}
.safetyBotResetBtn:hover{
  background:rgba(255,255,255,.24);
}
.safetyBotIntro{
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:12px;
  min-height:210px;
  padding:18px 8px;
}
.safetyBotIntroRobot{
  width:118px;
  height:118px;
  object-fit:contain;
  animation:safetyBotFloatV152 1.9s ease-in-out infinite;
  filter:drop-shadow(0 16px 26px rgba(8,32,60,.18));
}
.safetyBotIntroBubble{
  position:relative;
  max-width:260px;
  padding:13px 16px;
  border-radius:18px;
  background:#eef6ff;
  border:1px solid #cfe2f5;
  text-align:center;
  box-shadow:0 10px 24px rgba(6,22,45,.06);
}
.safetyBotIntroBubble::before{
  content:"";
  position:absolute;
  top:-7px;
  left:50%;
  width:14px;
  height:14px;
  background:#eef6ff;
  border-left:1px solid #cfe2f5;
  border-top:1px solid #cfe2f5;
  transform:translateX(-50%) rotate(45deg);
}
.safetyBotIntroBubble b{
  display:block;
  color:#0b2a4a;
  font-size:14px;
  font-weight:1000;
  margin-bottom:4px;
}
.safetyBotIntroBubble span{
  display:block;
  color:#41617f;
  font-size:13px;
  font-weight:800;
}
@keyframes safetyBotFloatV152{
  0%,100%{transform:translateY(0) rotate(-1deg)}
  50%{transform:translateY(-8px) rotate(2deg)}
}

/* 로그인 화면 항목 텍스트 깨짐 방지 */
.loginFeatureCard span,
.loginFeatureCard b{
  word-break:keep-all;
}




/* V154 로그인 화면 원상복구: 기존 로그인 디자인 유지, 06 AI 챗봇 카드만 자연스럽게 추가 */
#loginScreen .loginFeatureCard,
#loginScreen .loginFeatureCard span,
#loginScreen .loginFeatureCard b{
  word-break:keep-all;
}
#loginScreen .loginFeatureGrid{
  align-items:stretch;
}
@media(max-width:980px){
  #loginScreen .loginFeatureGrid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}

/* V154 추가 보정: 로그인 기존 loginInfoGrid 안에 06 AI 챗봇 카드 배치 */
.loginInfoGrid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px;
}
.loginInfoGrid > div{
  min-width:0;
}
.loginInfoGrid > div span{
  word-break:keep-all;
}

/* V155 챗봇 사진 전송 안정화 */
#safetyBotFilePreview{
  word-break:keep-all;
}

/* V156 MSDS 엑셀 업로드/추출 보정 */
.excelInputTable input[data-key="department"],
.excelInputTable input[data-key="use_frequency"]{
  background:#ffffff;
}

/* V157 사용부서 업로드 인식 보강 */
.msdsTable td[data-col="department"],
.msdsTable input[data-key="department"]{
  min-width:120px;
}

/* V158 사용부서 실제 열 보정 */
.msdsTable input[data-key="department"]{
  min-width:120px;
}

/* V159 사용부서 직접입력/조회 보정 */
#msdsInputBody input[data-key="department"]{
  min-width:120px;
  background:#fff;
}
.msdsTable input[data-key="department"]::placeholder{
  color:#9aaec2;
}


/* V161 전사/전체는 센터명이 아니므로 빈 입력행에는 표시하지 않음 */
.excelInputTable input[data-key="center"]::placeholder,
.msdsTable input[data-key="center"]::placeholder{
  color:#9eb0c3;
}


/* V162 챗봇 로봇 이미지 강제 교체 */
.safetyBotLauncher img,
.safetyBotTitle img,
.safetyBotIntroRobot{
  content:url("assets/partner_bot_v162.png")!important;
}


/* V163 챗봇 인트로 로봇 크기 확대 */
.safetyBotIntroRobot{
  width:150px!important;
  height:150px!important;
}
.safetyBotIntro{
  gap:14px!important;
}
.safetyBotLauncher img{
  width:70px!important;
  height:70px!important;
}
.safetyBotTitle img{
  width:50px!important;
  height:50px!important;
}
@media(max-width:760px){
  .safetyBotIntroRobot{
    width:132px!important;
    height:132px!important;
  }
}


/* V164 최종 보정: 전사/전체는 절대 빈 입력행 센터명으로 표시하지 않음 */
#msdsInputBody tr .centerCell:empty::after{
  content:"";
}
#msdsInputBody tr .centerCell{
  min-width:100px;
}

/* V164 챗봇 인트로 로봇 확실히 확대 */
.safetyBotIntroRobot{
  width:210px!important;
  height:210px!important;
  max-width:210px!important;
  max-height:210px!important;
  object-fit:contain!important;
  transform-origin:center center!important;
}
.safetyBotIntro{
  min-height:290px!important;
  gap:8px!important;
  padding-top:8px!important;
}
.safetyBotIntroBubble{
  margin-top:-8px!important;
}
@media(max-width:760px){
  .safetyBotIntroRobot{
    width:175px!important;
    height:175px!important;
    max-width:175px!important;
    max-height:175px!important;
  }
  .safetyBotIntro{
    min-height:260px!important;
  }
}


/* V165 챗봇 인트로 로봇 더 크게 + 상단 여백 확보 */
.safetyBotIntro{
  min-height:360px!important;
  padding-top:28px!important;
  padding-bottom:18px!important;
  gap:18px!important;
  overflow:visible!important;
}
.safetyBotIntroRobot{
  width:220px!important;
  height:220px!important;
  max-width:none!important;
  max-height:none!important;
  object-fit:contain!important;
  object-position:center top!important;
  animation:safetyBotFloatV165 1.9s ease-in-out infinite!important;
  transform-origin:center center!important;
}
.safetyBotIntroBubble{
  margin-top:10px!important;
}
@keyframes safetyBotFloatV165{
  0%,100%{transform:translateY(3px) scale(1.62) rotate(-1deg)}
  50%{transform:translateY(-7px) scale(1.62) rotate(2deg)}
}
@media(max-width:760px){
  .safetyBotIntro{
    min-height:320px!important;
    padding-top:22px!important;
    gap:14px!important;
  }
  .safetyBotIntroRobot{
    width:195px!important;
    height:195px!important;
    animation:safetyBotFloatV165Mobile 1.9s ease-in-out infinite!important;
  }
  .safetyBotIntroBubble{
    margin-top:6px!important;
  }
  @keyframes safetyBotFloatV165Mobile{
    0%,100%{transform:translateY(2px) scale(1.48) rotate(-1deg)}
    50%{transform:translateY(-6px) scale(1.48) rotate(2deg)}
  }
}


/* V166 실제 수정: 챗봇 말풍선 닫기 + 재발급 버튼 안정화 */
.safetyBotWidget.bubbleClosed .safetyBotBubbleText{display:none!important;}
.safetyBotBubbleText{pointer-events:auto!important;padding-right:38px!important;}
.safetyBotBubbleClose{
  position:absolute!important;
  right:9px!important;
  top:8px!important;
  width:22px!important;
  height:22px!important;
  border:0!important;
  border-radius:999px!important;
  background:#e8f0f8!important;
  color:#49657f!important;
  font-size:16px!important;
  line-height:22px!important;
  font-weight:1000!important;
  cursor:pointer!important;
  z-index:3!important;
}
.safetyBotBubbleClose:hover{background:#d7e6f5!important;color:#0b2a4a!important;}
.eduQrActions{display:flex;gap:8px;flex-wrap:wrap;align-items:center;}
#eduReissueQrBtn,#eduReissueApprovalQrBtn{font-weight:900;}


/* V166-2 말풍선 X 버튼만 보정: 기존 챗봇 구조/로봇 위치 유지 */
.safetyBotLauncher.bubbleTop{position:relative!important; overflow:visible!important;}
.safetyBotLauncher.bubbleTop > img{display:block!important; position:static!important; transform:none!important;}
.safetyBotBubbleText{position:absolute!important; pointer-events:auto!important; padding-right:42px!important; z-index:2!important;}
.safetyBotBubbleClose{
  display:flex!important; align-items:center!important; justify-content:center!important;
  position:absolute!important; right:9px!important; top:8px!important;
  width:22px!important; height:22px!important; border-radius:999px!important;
  background:#e8f0f8!important; color:#49657f!important;
  font-size:16px!important; line-height:1!important; font-weight:1000!important;
  cursor:pointer!important; z-index:4!important; user-select:none!important;
}
.safetyBotBubbleClose:hover{background:#d7e6f5!important;color:#0b2a4a!important;}
.safetyBotWidget.bubbleClosed .safetyBotBubbleText{display:none!important;}

/* V167 chatbot guide answer */
.safetyBotGuideBlock{line-height:1.55;font-size:13px;color:#173250;}
.safetyBotGuideBlock b{display:block;margin-bottom:6px;font-size:14px;color:#0b2d54;}
.safetyBotGuideBlock p{margin:6px 0;}
.safetyBotGuideBlock ol{margin:8px 0 8px 18px;padding:0;}
.safetyBotGuideBlock li{margin:4px 0;}
.safetyBotGuideBtns{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px;}
.safetyBotGuideBtns button{border:1px solid #b9d7ff;background:#f3f8ff;color:#075ab8;border-radius:999px;padding:7px 10px;font-weight:800;font-size:12px;cursor:pointer;}
.safetyBotGuideBtns button:hover{background:#e5f0ff;}

/* V180 교육일지 모바일 직접서명 / 직책 선택 */
.eduApproverTitleSelect{height:40px;border:1px solid #c8def4;border-radius:14px;padding:0 12px;background:#fff;color:#12304f;font-weight:800;min-width:130px;}
.eduApproverRow .btn.success.tiny{white-space:nowrap;}


/* V181 교육일지 결재란 직책 선택형 + 캐시 갱신 */
.eduApproverTitleSelect{
  width:100%;
  height:40px!important;
  border:1px solid #7fb0e8!important;
  border-radius:14px!important;
  padding:0 34px 0 12px!important;
  background:#fff linear-gradient(45deg, transparent 50%, #1d65c8 50%), linear-gradient(135deg, #1d65c8 50%, transparent 50%)!important;
  background-position:calc(100% - 18px) 17px, calc(100% - 12px) 17px!important;
  background-size:6px 6px, 6px 6px!important;
  background-repeat:no-repeat!important;
  color:#12304f!important;
  font-weight:900!important;
  appearance:none;
  -webkit-appearance:none;
}
.eduApproverRow.roleSelectMode{grid-template-columns:1.05fr 1fr 84px 86px 54px;}
.eduSignSpacer{display:block;min-width:1px;}
@media(max-width:720px){
  .eduApproverRow.roleSelectMode{grid-template-columns:1fr 1fr;align-items:end;}
  .eduApproverRow.roleSelectMode .eduApprovalStatus,
  .eduApproverRow.roleSelectMode .btn,
  .eduApproverRow.roleSelectMode .eduSignSpacer{width:100%;}
}


/* V183: 교육일지 PC/모바일 직접 서명 모달 */
.eduDirectSignOverlayV183{position:fixed;inset:0;z-index:99999;background:rgba(5,18,33,.56);display:flex;align-items:center;justify-content:center;padding:18px}
.eduDirectSignCardV183{width:min(560px,100%);background:#fff;border:1px solid #cfe0f3;border-radius:22px;box-shadow:0 22px 60px rgba(6,30,60,.28);overflow:hidden}
.eduDirectSignHeadV183{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:18px 20px;background:#073761;color:#fff}
.eduDirectSignHeadV183 b{font-size:20px;font-weight:1000}.eduDirectSignHeadV183 p{margin:6px 0 0;color:#dcecff;font-weight:800;line-height:1.4}.eduDirectSignCloseV183{width:38px;height:38px;border:0;border-radius:50%;background:rgba(255,255,255,.16);color:#fff;font-size:28px;line-height:1;cursor:pointer}
.eduDirectSignBodyV183{padding:18px 20px}.eduDirectSignBodyV183 canvas{width:100%;height:230px;border:2px dashed #9fbadd;border-radius:16px;background:#fff;touch-action:none;display:block}.eduDirectSignHelpV183{margin-top:10px;color:#52708f;font-weight:800;font-size:13px;line-height:1.45}
.eduDirectSignActionsV183{display:flex;gap:10px;justify-content:flex-end;padding:0 20px 20px}.eduDirectSignActionsV183 .btn{min-width:120px}
@media(max-width:640px){.eduDirectSignOverlayV183{align-items:flex-end;padding:12px}.eduDirectSignCardV183{border-radius:22px 22px 16px 16px}.eduDirectSignBodyV183 canvas{height:210px}.eduDirectSignActionsV183{flex-direction:column}.eduDirectSignActionsV183 .btn{width:100%}}

/* V185 delete pending / hazard classification select */
.deletePendingIcon{
  display:inline-flex;
  align-items:center;
  gap:5px;
  padding:5px 10px;
  border-radius:999px;
  background:#fff7ed;
  color:#b45309;
  border:1px solid #fdba74;
  font-size:12px;
  font-weight:950;
  white-space:nowrap;
}
.deletePendingIcon::before{content:'⏳';font-size:12px;}
.eduListCard.deletePendingRow{
  border-color:#fdba74 !important;
  background:linear-gradient(180deg,#fffaf0,#ffffff) !important;
}
.riskHazardClassSelect{
  width:100%;
  min-height:34px;
  border:1px solid #cfe0f2;
  border-radius:10px;
  background:#fff;
  color:#0f2742;
  font-weight:900;
  font-size:12px;
  padding:6px 8px;
  margin-bottom:6px;
}

/* V186 삭제 승인 대기 별도 페이지 */
.standaloneDeleteApprovalPanel{margin-top:18px;}
.deleteApprovalHero .adminHeroCards div{min-width:110px;}
.standaloneRecordDeleteCard{align-items:center;gap:16px;}
.recordDeleteInfo{display:flex;flex-direction:column;gap:6px;min-width:0;}
.recordDeleteInfo strong{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.recordDeleteActions{display:flex;gap:8px;align-items:center;justify-content:flex-end;flex-wrap:wrap;}
@media(max-width:720px){
  .standaloneRecordDeleteCard{align-items:flex-start;}
  .recordDeleteActions{justify-content:flex-start;width:100%;}
}


/* v191 My Page */
.myPageHero{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:16px;
}
.myPageGrid{
  display:grid;
  grid-template-columns:1.1fr .9fr;
  gap:18px;
}
.myInfoList{
  display:grid;
  gap:10px;
}
.myInfoList div{
  display:flex;
  justify-content:space-between;
  align-items:center;
  padding:13px 15px;
  border:1px solid #d9e7f5;
  border-radius:14px;
  background:#f8fbff;
}
.myInfoList b{
  color:#0f2f4f;
}
.myInfoList span{
  font-weight:800;
  color:#183651;
}
.myPasswordBox{
  display:grid;
  gap:12px;
}
.myPasswordBox label{
  display:grid;
  gap:6px;
  font-weight:800;
  color:#123251;
}
.myPasswordBox input{
  border:1px solid #c7dcef;
  border-radius:14px;
  padding:13px 14px;
  font-weight:700;
}
.myDocCountGrid{
  display:grid;
  grid-template-columns:repeat(5,minmax(120px,1fr));
  gap:12px;
}
.myDocCountCard{
  border:1px solid #d5e6f7;
  border-radius:18px;
  background:#f7fbff;
  padding:18px;
  display:grid;
  gap:8px;
}
.myDocCountCard b{
  color:#0f2f4f;
}
.myDocCountCard strong{
  font-size:32px;
  color:#1768d8;
}
.myDocCountCard span{
  color:#6d8196;
  font-size:12px;
  font-weight:800;
}
@media(max-width:900px){
  .myPageGrid{grid-template-columns:1fr;}
  .myDocCountGrid{grid-template-columns:repeat(2,minmax(120px,1fr));}
  .myPageHero{align-items:flex-start;flex-direction:column;}
}


/* v201 My Page Signature History */
.myPageSignPanel{margin-top:18px;}
.mySignSummaryGrid{
  display:grid;
  grid-template-columns:repeat(5,minmax(120px,1fr));
  gap:12px;
  margin-bottom:14px;
}
.mySignSummaryCard{
  border:1px solid #d5e6f7;
  border-radius:16px;
  background:#f7fbff;
  padding:14px;
  display:grid;
  gap:6px;
}
.mySignSummaryCard b{
  color:#0f2f4f;
  font-size:13px;
}
.mySignSummaryCard strong{
  color:#1768d8;
  font-size:26px;
}
.mySignList{
  display:grid;
  gap:10px;
}
.mySignItem{
  border:1px solid #dbe8f6;
  border-radius:16px;
  background:#fff;
  padding:14px 16px;
  display:flex;
  justify-content:space-between;
  gap:12px;
  align-items:center;
}
.mySignItem b{
  display:inline-block;
  color:#1768d8;
  font-size:12px;
  margin-bottom:5px;
}
.mySignItem strong{
  display:block;
  color:#10233d;
  font-size:15px;
  line-height:1.4;
}
.mySignItem p{
  margin:5px 0 0;
  color:#6a7f96;
  font-size:12px;
  font-weight:800;
}
.mySignMeta{
  display:flex;
  align-items:flex-end;
  flex-direction:column;
  gap:6px;
  white-space:nowrap;
}
.mySignMeta span{
  border:1px solid #cfe0f2;
  background:#f1f7ff;
  border-radius:999px;
  padding:5px 10px;
  font-size:12px;
  font-weight:900;
  color:#123251;
}
.mySignMeta em{
  font-style:normal;
  border-radius:999px;
  padding:5px 10px;
  background:#e7fff1;
  color:#078342;
  font-weight:900;
  font-size:12px;
}
@media(max-width:900px){
  .mySignSummaryGrid{grid-template-columns:repeat(2,minmax(120px,1fr));}
  .mySignItem{align-items:flex-start;flex-direction:column;}
  .mySignMeta{align-items:flex-start;flex-direction:row;flex-wrap:wrap;}
}

/* V202 Occasional Risk Assessment */
.occasionalRiskHero{display:flex;align-items:center;justify-content:space-between;gap:16px}
.ocRiskFormGrid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:14px 0}
.ocRiskFormGrid label{display:grid;gap:6px;font-weight:900;color:#123251}
.ocRiskFormGrid label.full{grid-column:1/-1}
.ocRiskFormGrid input,.ocRiskFormGrid select{border:1px solid #c7dcef;border-radius:14px;padding:12px;font-weight:800}
.ocRiskNotice,.ocRiskPlanHint{border:1px solid #d4e3f3;background:#f7fbff;border-radius:14px;padding:13px;margin:12px 0;color:#244463;font-weight:800}
.ocRiskTableWrap{overflow:auto;border:1px solid #d4e3f3;border-radius:16px;background:#fff}
.ocRiskTable{border-collapse:collapse;min-width:1800px;width:100%;font-size:12px}
.ocRiskTable th{background:#eaf3fc;color:#123251;border:1px solid #d4e3f3;padding:9px;text-align:center}
.ocRiskTable td{border:1px solid #d4e3f3;padding:7px;vertical-align:top}
.ocRiskTable textarea{width:100%;min-height:58px;resize:vertical;border:1px solid #d6e5f5;border-radius:10px;padding:7px;font-weight:700;box-sizing:border-box}
.ocRiskTable input,.ocRiskTable select{width:100%;box-sizing:border-box;border:1px solid #d6e5f5;border-radius:10px;padding:7px;font-weight:700}
.ocRiskTable td:nth-child(1){text-align:center;font-weight:900}
.ocRiskPlanList{display:grid;gap:12px;margin-top:12px}
.ocRiskPlanCard{border:1px solid #d4e3f3;background:#fff;border-radius:18px;padding:14px;box-shadow:0 6px 18px rgba(15,47,79,.06)}
.ocRiskPlanHead{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px}
.ocRiskPlanHead b{color:#10233d}
.ocRiskPlanHead span{border-radius:999px;padding:5px 10px;font-size:12px;font-weight:900}
.ocRiskPlanHead .done{background:#e7fff1;color:#078342}
.ocRiskPlanHead .wait{background:#fff7e5;color:#a26300}
.ocRiskPlanGrid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.ocRiskPlanGrid label{display:grid;gap:6px;font-weight:900;color:#123251}
.ocRiskPlanGrid textarea{min-height:80px;border:1px solid #d6e5f5;border-radius:12px;padding:9px}
.planPhoto{min-height:90px;border:1px dashed #bdd5ec;border-radius:12px;display:flex;align-items:center;justify-content:center;color:#6d8196;background:#f8fbff;font-weight:900;overflow:hidden}
.planPhoto img{max-width:100%;max-height:140px;display:block}
.ocRiskQrArea{display:grid;grid-template-columns:330px 1fr;gap:14px;align-items:start}
.ocRiskPrintPanel{margin-top:18px;border:1px solid #d4e3f3;border-radius:16px;background:#fff;padding:16px}
@media(max-width:900px){
  .occasionalRiskHero{flex-direction:column;align-items:flex-start}
  .ocRiskFormGrid{grid-template-columns:1fr}
  .ocRiskPlanGrid{grid-template-columns:1fr}
  .ocRiskQrArea{grid-template-columns:1fr}
}


/* V203 Occasional Risk Photo Thumbnail Fix */
#ocRiskPhotoPreview{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(140px,1fr));
  gap:12px;
  align-items:start;
  max-height:360px;
  overflow:auto;
  padding:12px;
}
#ocRiskPhotoPreview.empty{
  display:block;
  max-height:none;
  overflow:visible;
}
#ocRiskPhotoPreview > div{
  border:1px solid #d4e3f3;
  border-radius:14px;
  background:#fff;
  padding:8px;
  display:grid;
  gap:8px;
}
#ocRiskPhotoPreview img{
  width:100%;
  height:120px;
  object-fit:cover;
  border-radius:10px;
  cursor:pointer;
  border:1px solid #e1edf8;
}
#ocRiskPhotoPreview img:hover{
  outline:3px solid rgba(23,114,232,.18);
}
.ocRiskPhotoViewer{
  position:fixed;
  inset:0;
  z-index:99999;
  background:rgba(5,18,32,.78);
  display:flex;
  align-items:center;
  justify-content:center;
  padding:22px;
}
.ocRiskPhotoViewer.hidden{display:none;}
.ocRiskPhotoViewer img{
  max-width:92vw;
  max-height:88vh;
  object-fit:contain;
  background:#fff;
  border-radius:18px;
  box-shadow:0 20px 60px rgba(0,0,0,.35);
}
.ocRiskPhotoViewer button{
  position:absolute;
  top:18px;
  right:18px;
  border:0;
  border-radius:999px;
  background:#fff;
  color:#10233d;
  font-weight:900;
  font-size:22px;
  width:44px;
  height:44px;
  cursor:pointer;
}
@media(max-width:700px){
  #ocRiskPhotoPreview{grid-template-columns:repeat(2,minmax(120px,1fr));max-height:300px;}
  #ocRiskPhotoPreview img{height:110px;}
}

/* V207 Occasional Risk Left Input / Right Report Preview */
.ocRiskSplitLayout{
  display:grid;
  grid-template-columns:minmax(720px,1.05fr) minmax(520px,.95fr);
  gap:16px;
  align-items:start;
}
.ocRiskInputSide{
  min-width:0;
}
.ocRiskPreviewSide{
  position:sticky;
  top:78px;
  max-height:calc(100vh - 100px);
  overflow:auto;
  border:1px solid #d4e3f3;
  border-radius:18px;
  background:#fff;
  padding:12px;
}
.ocRiskLivePreview.empty{
  border:1px dashed #bdd5ec;
  border-radius:14px;
  padding:20px;
  color:#6d8196;
  font-weight:900;
  text-align:center;
}
.ocRiskLivePreview{
  background:#fff;
  color:#000;
}
.ocRiskLivePreview .or-doc{
  min-width:900px;
  transform-origin:top left;
}
.ocRiskLivePreview table{
  border-collapse:collapse;
  width:100%;
  table-layout:fixed;
}
.ocRiskLivePreview td,.ocRiskLivePreview th{
  border:1px solid #000;
  padding:4px;
  font-size:10px;
  text-align:center;
  vertical-align:middle;
  word-break:keep-all;
}
.ocRiskLivePreview th{background:#d9d9d9;}
.ocRiskLivePreview .or-title td{
  background:#d9e2f3;
  font-weight:900;
  font-size:13px;
}
.ocRiskLivePreview .or-label{
  background:#d9e2f3;
  font-weight:900;
}
.ocRiskLivePreview .or-brand{
  text-align:right;
  font-weight:900;
  font-size:13px;
}
.ocRiskLivePreview .or-line-orange{height:4px;background:#ff8500;}
.ocRiskLivePreview .or-line-blue{height:3px;background:#0076bd;margin-bottom:6px;}
.ocRiskLivePreview .or-alert{
  margin:8px 0;
  border:1px solid #d40000;
  color:#d40000;
  font-weight:900;
  padding:7px;
}
.ocRiskLivePreview .or-safe{
  margin:8px 0;
  border:1px solid #078342;
  color:#078342;
  font-weight:900;
  padding:7px;
}
.ocRiskLivePreview .or-report-page{
  margin-top:18px;
  padding-top:10px;
  border-top:3px solid #111;
}
.ocRiskLivePreview .or-plan-grid{
  display:grid;
  grid-template-columns:2fr 1.1fr;
  gap:8px;
}
.ocRiskLivePreview .or-photo td{height:140px;}
.ocRiskLivePreview .or-photo img{max-width:100%;max-height:130px;object-fit:contain;}
.ocRiskLivePreview .or-attend td{height:20px;}
@media(max-width:1300px){
  .ocRiskSplitLayout{grid-template-columns:1fr;}
  .ocRiskPreviewSide{position:relative;top:auto;max-height:600px;}
}

/* V210 Exact Occasional Risk Report Preview */
.ocRiskLivePreview .or-doc{
  min-width:980px;
}
.ocRiskLivePreview .or-brand{
  text-align:right;
  font-weight:900;
  font-size:15px;
}
.ocRiskLivePreview .or-brand small{font-size:9px;}
.ocRiskLivePreview .or-title td{
  background:#d9e2f3;
  font-weight:900;
  font-size:15px;
}
.ocRiskLivePreview .or-main-table{
  margin-top:14px;
}
.ocRiskLivePreview .or-main-table th{
  background:#d9d9d9;
  font-size:11px;
}
.ocRiskLivePreview .or-main-table td{
  height:44px;
  font-size:10px;
}
.ocRiskLivePreview .or-plan-page{
  margin-top:22px;
  padding-top:12px;
  border-top:4px solid #111;
}
.ocRiskLivePreview .or-plan-top th,
.ocRiskLivePreview .or-plan-top td{
  font-size:9px;
}
.ocRiskLivePreview .or-plan-bottom{
  display:grid;
  grid-template-columns:2fr 1.1fr;
  gap:8px;
  margin-top:8px;
}
.ocRiskLivePreview .or-photo-cell{
  height:150px;
  font-size:14px;
  font-weight:900;
}
.ocRiskLivePreview .or-photo-cell img{
  max-width:100%;
  max-height:145px;
  object-fit:contain;
}
.ocRiskLivePreview .or-attend-table td{
  height:20px;
}
.ocRiskLivePreview .red{color:red;}

/* V211 TRUE left input / right report preview */
.ocRiskWorkLayoutV211{
  display:grid;
  grid-template-columns:minmax(760px,1fr) minmax(620px,.9fr);
  gap:18px;
  align-items:start;
}
.ocRiskLeftV211{
  min-width:0;
  display:grid;
  gap:12px;
}
.ocRiskRightV211{
  position:sticky;
  top:76px;
  max-height:calc(100vh - 95px);
  overflow:auto;
  border:1px solid #cfe0f2;
  border-radius:18px;
  background:#fff;
  padding:14px;
  box-shadow:0 8px 22px rgba(15,47,79,.08);
}
.ocRiskRightV211 .panelSubTitle{
  margin-top:0;
}
.ocRiskRightV211 .ocRiskLivePreview{
  min-height:520px;
}
.ocRiskWorkLayoutV211 .ocRiskFormGrid{
  grid-template-columns:repeat(2,minmax(0,1fr));
}
.ocRiskWorkLayoutV211 .ocRiskTableWrap{
  max-height:420px;
  overflow:auto;
}
.ocRiskWorkLayoutV211 .ocRiskPlanList{
  max-height:420px;
  overflow:auto;
  padding-right:4px;
}
@media(max-width:1400px){
  .ocRiskWorkLayoutV211{grid-template-columns:1fr;}
  .ocRiskRightV211{position:relative;top:auto;max-height:720px;}
}

/* V212 remove stray bottom print panel and fix plan list flow */
#ocRiskPrintArea,
.ocRiskPrintPanel{
  display:none !important;
}
.needPlanText{
  margin:6px 0 0;
  color:#d40000 !important;
  font-weight:900 !important;
}
.ocRiskLivePreview .or-plan-page{
  display:none;
}
.ocRiskLivePreview .or-doc > .or-alert{
  display:block;
}
.ocRiskTable input[readonly]{
  background:#f3f8fd;
  color:#0f2f4f;
  font-weight:900;
}

/* V213 Occasional Risk logo and wrapping fix */
.ocRiskLivePreview .or-logo-wrap{
  display:flex;
  justify-content:flex-end;
  align-items:center;
  gap:8px;
  height:46px;
  margin-bottom:3px;
}
.ocRiskLivePreview .or-logo-wrap img{
  width:42px;
  height:42px;
  object-fit:contain;
}
.ocRiskLivePreview .or-logo-wrap b{
  display:block;
  font-size:18px;
  line-height:1.05;
  font-weight:900;
  color:#222;
}
.ocRiskLivePreview .or-logo-wrap span{
  display:block;
  font-size:9px;
  color:#555;
  line-height:1.1;
  font-weight:700;
}
.ocRiskLivePreview .txt,
.ocRiskLivePreview .action-cell,
.ocRiskLivePreview .reduce-cell{
  text-align:left !important;
  white-space:pre-wrap;
  word-break:break-all;
  line-height:1.45;
}
.ocRiskLivePreview td,
.ocRiskLivePreview th{
  overflow:visible;
  white-space:normal;
}
.ocRiskLivePreview .or-main-table td{
  height:auto !important;
  min-height:38px;
}

/* V214 separate execution plan page */
.ocRiskPlanPageV214{
  border:1px solid #cfe0f2;
  border-radius:18px;
  background:#fff;
  margin-top:16px;
  padding:16px;
  box-shadow:0 8px 22px rgba(15,47,79,.08);
}
.ocRiskPlanLayoutV214{
  display:grid;
  grid-template-columns:minmax(680px,1fr) minmax(560px,.9fr);
  gap:18px;
  align-items:start;
}
.ocRiskPlanPageV214 .ocRiskRightV211{
  position:sticky;
  top:76px;
}
#ocRiskPlanPageList{
  max-height:calc(100vh - 260px);
  overflow:auto;
  padding-right:4px;
}
#ocRiskPlanPreviewV214 .or-main-table,
#ocRiskPlanPreviewV214 .or-alert,
#ocRiskPlanPreviewV214 .or-safe{
  display:none;
}
.needPlanText{
  margin:6px 0 0;
  color:#d40000 !important;
  font-weight:900 !important;
}
#ocRiskPrintArea,.ocRiskPrintPanel{
  display:none !important;
}
.ocRiskLivePreview .or-plan-page:first-child{
  border-top:0;
  margin-top:0;
  padding-top:0;
}
.ocRiskLivePreview .inCellPhoto{
  max-width:90px;
  max-height:60px;
  object-fit:contain;
  display:block;
  margin:0 auto 4px;
}
@media(max-width:1300px){
  .ocRiskPlanLayoutV214{grid-template-columns:1fr;}
  .ocRiskPlanPageV214 .ocRiskRightV211{position:relative;top:auto;}
}

/* V215: fully separate execution plan from assessment editor */
#occasionalRiskEditorPanel .editorOnlyPlanBlockV215,
#occasionalRiskEditorPanel .editorOnlyQrBlockV215{
  display:none !important;
}
.ocRiskPlanPageV214{
  border:1px solid #cfe0f2;
  border-radius:18px;
  background:#fff;
  margin-top:16px;
  padding:16px;
  box-shadow:0 8px 22px rgba(15,47,79,.08);
}
.ocRiskPlanLayoutV214{
  display:grid;
  grid-template-columns:minmax(680px,1fr) minmax(560px,.9fr);
  gap:18px;
  align-items:start;
}
.ocRiskPlanPageV214 .ocRiskRightV211{
  position:sticky;
  top:76px;
}
#ocRiskPlanPageList{
  max-height:calc(100vh - 260px);
  overflow:auto;
  padding-right:4px;
}
#ocRiskPlanPreviewV214 .or-main-table,
#ocRiskPlanPreviewV214 .or-alert,
#ocRiskPlanPreviewV214 .or-safe{
  display:none;
}
.needPlanText{
  margin:6px 0 0;
  color:#d40000 !important;
  font-weight:900 !important;
}
#ocRiskPrintArea,.ocRiskPrintPanel{
  display:none !important;
}
.ocRiskLivePreview .or-plan-page:first-child{
  border-top:0;
  margin-top:0;
  padding-top:0;
}
.ocRiskLivePreview .inCellPhoto{
  max-width:90px;
  max-height:60px;
  object-fit:contain;
  display:block;
  margin:0 auto 4px;
}
@media(max-width:1300px){
  .ocRiskPlanLayoutV214{grid-template-columns:1fr;}
  .ocRiskPlanPageV214 .ocRiskRightV211{position:relative;top:auto;}
}

/* V216: plan click and report column width fix */
.ocRiskLivePreview .or-main-table th:nth-child(5),
.ocRiskLivePreview .or-main-table td:nth-child(5),
.ocRiskLivePreview .or-main-table th:nth-child(9),
.ocRiskLivePreview .or-main-table td:nth-child(9){
  min-width:170px;
}
.ocRiskLivePreview .or-main-table th:nth-child(11),
.ocRiskLivePreview .or-main-table td:nth-child(11),
.ocRiskLivePreview .or-main-table th:nth-child(12),
.ocRiskLivePreview .or-main-table td:nth-child(12){
  width:48px;
  font-size:9px;
}
.ocRiskLivePreview .or-plan-top th:nth-child(5),
.ocRiskLivePreview .or-plan-top td:nth-child(5),
.ocRiskLivePreview .or-plan-top th:nth-child(9),
.ocRiskLivePreview .or-plan-top td:nth-child(9){
  min-width:160px;
}
.ocRiskLivePreview .or-plan-top th:nth-child(11),
.ocRiskLivePreview .or-plan-top td:nth-child(11),
.ocRiskLivePreview .or-plan-top th:nth-child(12),
.ocRiskLivePreview .or-plan-top td:nth-child(12){
  width:45px;
  font-size:8.5px;
}

/* V217: execution plan page visible fix */
#occasionalRiskEditorPanel.planModeV217 > .panelHead,
#occasionalRiskEditorPanel.planModeV217 > input,
#occasionalRiskEditorPanel.planModeV217 > .ocRiskWorkLayoutV211,
#occasionalRiskEditorPanel.planModeV217 > .editorOnlyPlanBlockV215,
#occasionalRiskEditorPanel.planModeV217 > .editorOnlyQrBlockV215,
#occasionalRiskEditorPanel.planModeV217 > .ocRiskPrintPanel{
  display:none !important;
}
#occasionalRiskEditorPanel.planModeV217 #ocRiskPlanPageV214{
  display:block !important;
}
#occasionalRiskEditorPanel.planModeV217{
  display:block !important;
}

/* V218 execution plan preview + fixed column widths */
#ocRiskPlanPreviewV214 .or-plan-page{
  display:block !important;
  border-top:0 !important;
  margin-top:0 !important;
  padding-top:0 !important;
}
#ocRiskPlanPreviewV214 .or-main-table,
#ocRiskPlanPreviewV214 .or-alert,
#ocRiskPlanPreviewV214 .or-safe{
  display:none !important;
}
.ocRiskLivePreview .or-main-table,
.ocRiskLivePreview .or-plan-top{
  table-layout:fixed !important;
}
.ocRiskLivePreview .or-main-table td,
.ocRiskLivePreview .or-main-table th,
.ocRiskLivePreview .or-plan-top td,
.ocRiskLivePreview .or-plan-top th{
  overflow:visible;
  white-space:normal;
  word-break:keep-all;
}
.ocRiskLivePreview .txt,
.ocRiskLivePreview .action-cell,
.ocRiskLivePreview .reduce-cell{
  text-align:left !important;
  word-break:break-all !important;
  white-space:pre-wrap !important;
  line-height:1.45 !important;
}
.ocRiskLivePreview .or-main-table th:nth-child(11),
.ocRiskLivePreview .or-main-table td:nth-child(11),
.ocRiskLivePreview .or-main-table th:nth-child(12),
.ocRiskLivePreview .or-main-table td:nth-child(12),
.ocRiskLivePreview .or-plan-top th:nth-child(11),
.ocRiskLivePreview .or-plan-top td:nth-child(11),
.ocRiskLivePreview .or-plan-top th:nth-child(12),
.ocRiskLivePreview .or-plan-top td:nth-child(12){
  width:42px !important;
  max-width:42px !important;
  font-size:8.5px !important;
}
.ocRiskLivePreview .or-main-table th:nth-child(5),
.ocRiskLivePreview .or-main-table td:nth-child(5),
.ocRiskLivePreview .or-main-table th:nth-child(9),
.ocRiskLivePreview .or-main-table td:nth-child(9),
.ocRiskLivePreview .or-plan-top th:nth-child(5),
.ocRiskLivePreview .or-plan-top td:nth-child(5),
.ocRiskLivePreview .or-plan-top th:nth-child(9),
.ocRiskLivePreview .or-plan-top td:nth-child(9){
  min-width:180px !important;
}

/* V219 execution plan preview / print separation fix */
#ocRiskPlanPreviewV214{
  background:#fff !important;
}
#ocRiskPlanPreviewV214.empty{
  display:block;
}
#ocRiskPlanPreviewV214 .planPreviewInnerV219{
  display:block !important;
  min-width:980px;
  background:#fff;
}
#ocRiskPlanPreviewV214 .or-plan-page{
  display:block !important;
  visibility:visible !important;
  opacity:1 !important;
  border-top:0 !important;
  margin-top:0 !important;
  padding-top:0 !important;
}
#ocRiskPlanPreviewV214 .or-main-table,
#ocRiskPlanPreviewV214 .or-alert,
#ocRiskPlanPreviewV214 .or-safe{
  display:none !important;
}
.ocRiskLivePreview .or-main-table,
.ocRiskLivePreview .or-plan-top,
.ocRiskLivePreview .or-title,
.ocRiskLivePreview .or-photo-table,
.ocRiskLivePreview .or-attend-table{
  table-layout:fixed !important;
  width:100% !important;
}
.ocRiskLivePreview td,
.ocRiskLivePreview th{
  overflow:visible !important;
  white-space:normal !important;
  word-break:keep-all !important;
}
.ocRiskLivePreview .txt,
.ocRiskLivePreview .action-cell,
.ocRiskLivePreview .reduce-cell{
  text-align:left !important;
  word-break:break-all !important;
  white-space:pre-wrap !important;
  line-height:1.34 !important;
}
.ocRiskLivePreview .or-plan-top th,
.ocRiskLivePreview .or-plan-top td{
  font-size:8.5px !important;
  line-height:1.22 !important;
  padding:2px !important;
}
.ocRiskLivePreview .or-plan-bottom{
  display:grid !important;
  grid-template-columns:62% 36% !important;
  gap:2% !important;
}
.ocRiskLivePreview .or-photo-cell{
  height:170px !important;
}
.ocRiskLivePreview .or-photo-cell img{
  max-height:165px !important;
}

/* V220 HWP button separation + date column width fix */
.rowActions .btn.line.small{
  background:#fff;
}
.ocRiskLivePreview .or-main-table col:nth-child(10),
.ocRiskLivePreview .or-main-table col:nth-child(11),
.ocRiskLivePreview .or-main-table col:nth-child(12){
  width:4% !important;
}
.ocRiskLivePreview .or-plan-top col:nth-child(10),
.ocRiskLivePreview .or-plan-top col:nth-child(11),
.ocRiskLivePreview .or-plan-top col:nth-child(12){
  width:4.5% !important;
}
.ocRiskLivePreview .or-main-table th:nth-child(10),
.ocRiskLivePreview .or-main-table td:nth-child(10),
.ocRiskLivePreview .or-main-table th:nth-child(11),
.ocRiskLivePreview .or-main-table td:nth-child(11),
.ocRiskLivePreview .or-main-table th:nth-child(12),
.ocRiskLivePreview .or-main-table td:nth-child(12),
.ocRiskLivePreview .or-plan-top th:nth-child(10),
.ocRiskLivePreview .or-plan-top td:nth-child(10),
.ocRiskLivePreview .or-plan-top th:nth-child(11),
.ocRiskLivePreview .or-plan-top td:nth-child(11),
.ocRiskLivePreview .or-plan-top th:nth-child(12),
.ocRiskLivePreview .or-plan-top td:nth-child(12){
  font-size:8.4px !important;
  line-height:1.15 !important;
  padding:2px !important;
  word-break:keep-all !important;
}
.ocRiskLivePreview .or-main-table th:nth-child(8),
.ocRiskLivePreview .or-main-table td:nth-child(8),
.ocRiskLivePreview .or-main-table th:nth-child(9),
.ocRiskLivePreview .or-main-table td:nth-child(9),
.ocRiskLivePreview .or-plan-top th:nth-child(5),
.ocRiskLivePreview .or-plan-top td:nth-child(5),
.ocRiskLivePreview .or-plan-top th:nth-child(9),
.ocRiskLivePreview .or-plan-top td:nth-child(9){
  min-width:180px !important;
}

/* V221 occasional risk center select clipping + center scope */
.ocRiskFormGrid select,
.ocRiskFormGrid input{
  min-height:46px !important;
  height:46px !important;
  line-height:20px !important;
  padding:0 14px !important;
  font-size:14px !important;
  box-sizing:border-box !important;
  vertical-align:middle !important;
}
.ocRiskFormGrid select{
  padding-right:34px !important;
  white-space:nowrap !important;
  text-overflow:ellipsis !important;
  overflow:hidden !important;
}
#ocRiskCenter,
#ocRiskCenterFilter{
  min-width:220px !important;
}
#ocRiskCenter:disabled,
#ocRiskCenterFilter:disabled{
  background:#f4f8fc !important;
  color:#0f2f4f !important;
  opacity:1 !important;
  cursor:not-allowed !important;
}
.ocRiskWorkLayoutV211 .ocRiskFormGrid{
  grid-template-columns:repeat(2,minmax(260px,1fr)) !important;
}

/* V222: per execution-plan QR */
.planQrToolsV222{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
  margin:10px 0 8px;
}
.planQrBoxV222{
  border:1px dashed #c8ddf2;
  border-radius:12px;
  padding:10px;
  margin:6px 0 10px;
  background:#f8fbff;
}
.planQrBoxV222 .approvalQrCard{
  max-width:220px;
}
.planQrBoxV222 .approvalQrCard img{
  width:150px;
  height:150px;
}
.planQrBoxV222 .empty.small{
  min-height:54px;
  display:flex;
  align-items:center;
  justify-content:center;
  color:#6d829b;
  font-size:13px;
}
/* 실행계획서 화면에서는 항목별 QR만 사용 */
#ocRiskPlanPageV214 .headActions button[onclick="issueOccasionalRiskAttendQr()"],
#ocRiskPlanPageV214 .headActions button[onclick="sendOccasionalRiskQrMail()"]{
  display:none !important;
}
.or-title td{
  vertical-align:middle !important;
}

/* V223: fix execution plan card target rendering and per-card QR only */
#ocRiskPlanPageV214 .ocRiskPlanCard{
  display:block !important;
  margin-bottom:14px;
}
#ocRiskPlanPageV214 .ocRiskPlanCard .planQrToolsV222 button{
  min-width:130px;
}
#ocRiskPlanPageV214 .ocRiskQrArea{
  display:none !important;
}
#ocRiskPlanPageList.empty{
  display:block;
}
#ocRiskPlanPageList:not(.empty){
  border:0;
  padding:0;
}

/* V224 missing QR functions fix */
#ocRiskPlanPageList:not(.empty){
  display:block !important;
  min-height:0 !important;
}
#ocRiskPlanPageList .ocRiskPlanCard{
  display:block !important;
}
.planQrToolsV222{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
  margin:10px 0 8px;
}
.planQrBoxV222{
  border:1px dashed #c8ddf2;
  border-radius:12px;
  padding:10px;
  margin:6px 0 10px;
  background:#f8fbff;
}
.planQrBoxV222 .approvalQrCard img{
  width:150px;
  height:150px;
}

/* V225: 실행계획서 상단표 빈 회색 헤더칸 병합 */
.or-plan-top th[rowspan="2"]{
  vertical-align:middle !important;
}
.ocRiskLivePreview .or-plan-top th[rowspan="2"]{
  vertical-align:middle !important;
}

/* V226 occasional risk fixes */
.needPlanText.done{
  color:#07905f !important;
  font-weight:900 !important;
}

/* V230: 참석자 명단 실제 서명 이미지 출력 */
.orSignImgV230{
  max-width:86px;
  max-height:28px;
  object-fit:contain;
  display:block;
  margin:0 auto;
}
.or-attend-table td{
  vertical-align:middle !important;
}

/* V235: 위험성 자동계산 표시 */
#ocRiskRows input[data-k="risk"][readonly]{
  background:#f4f8ff;
  font-weight:900;
  color:#073763;
}

/* V236: 수시위험성평가 모바일 화면 짤림 방지 + 카메라 촬영 대응 */
@media (max-width: 768px){
  #occasionalRiskEditorPanel,
  #ocRiskPlanPageV214{
    overflow-x:hidden !important;
  }

  #occasionalRiskEditorPanel .sectionHead,
  #ocRiskPlanPageV214 .sectionHead{
    display:block !important;
  }

  #occasionalRiskEditorPanel .headActions,
  #ocRiskPlanPageV214 .headActions{
    display:grid !important;
    grid-template-columns:1fr 1fr !important;
    gap:10px !important;
    width:100% !important;
    margin-top:12px !important;
  }

  #occasionalRiskEditorPanel .headActions .btn,
  #ocRiskPlanPageV214 .headActions .btn{
    width:100% !important;
    min-width:0 !important;
    padding:13px 8px !important;
    font-size:15px !important;
    white-space:nowrap !important;
  }

  .ocRiskWorkLayoutV211{
    display:block !important;
    grid-template-columns:1fr !important;
    width:100% !important;
    max-width:100% !important;
    overflow-x:hidden !important;
  }

  .ocRiskLeftV211,
  .ocRiskRightV211{
    width:100% !important;
    max-width:100% !important;
    min-width:0 !important;
    overflow-x:hidden !important;
  }

  .ocRiskFormGrid{
    display:grid !important;
    grid-template-columns:1fr !important;
    gap:12px !important;
    width:100% !important;
    max-width:100% !important;
  }

  .ocRiskFormGrid label,
  .ocRiskFormGrid label.full{
    grid-column:1 / -1 !important;
    width:100% !important;
    max-width:100% !important;
    min-width:0 !important;
  }

  .ocRiskFormGrid input,
  .ocRiskFormGrid select,
  .ocRiskFormGrid textarea{
    width:100% !important;
    max-width:100% !important;
    min-width:0 !important;
    box-sizing:border-box !important;
  }

  #ocRiskImages{
    font-size:14px !important;
    white-space:normal !important;
  }

  #ocRiskPhotoPreview,
  .eduPhotoPreview{
    width:100% !important;
    max-width:100% !important;
    min-width:0 !important;
    overflow-x:auto !important;
  }

  .ocRiskNotice{
    width:100% !important;
    max-width:100% !important;
    overflow-wrap:break-word !important;
    word-break:keep-all !important;
    line-height:1.5 !important;
  }

  .ocRiskTableWrap{
    width:100% !important;
    max-width:100% !important;
    overflow-x:auto !important;
    -webkit-overflow-scrolling:touch !important;
  }

  .ocRiskTable{
    min-width:980px !important;
  }

  .ocRiskLivePreview,
  #ocRiskPlanPreviewV214{
    width:100% !important;
    max-width:100% !important;
    overflow-x:auto !important;
    -webkit-overflow-scrolling:touch !important;
  }

  .ocRiskLivePreview .or-doc,
  #ocRiskPlanPreviewV214 .planPreviewInnerV219{
    min-width:980px !important;
  }

  .ocRiskPlanGrid{
    display:grid !important;
    grid-template-columns:1fr !important;
    gap:12px !important;
  }

  .ocRiskPlanGrid label{
    width:100% !important;
    min-width:0 !important;
  }

  .ocRiskPlanGrid input,
  .ocRiskPlanGrid textarea{
    width:100% !important;
    max-width:100% !important;
    box-sizing:border-box !important;
  }

  .ocRiskPlanCard{
    width:100% !important;
    max-width:100% !important;
    overflow-x:hidden !important;
  }

  .planQrToolsV222{
    display:grid !important;
    grid-template-columns:1fr !important;
  }

  .planQrToolsV222 .btn{
    width:100% !important;
  }

  .chatbotWidget,
  .chatbotBubble,
  #chatbotWidget,
  #safetyBotWidget{
    max-width:92vw !important;
  }
}

@media (max-width: 480px){
  #occasionalRiskEditorPanel .headActions,
  #ocRiskPlanPageV214 .headActions{
    grid-template-columns:1fr 1fr !important;
  }

  #occasionalRiskEditorPanel .headActions .btn,
  #ocRiskPlanPageV214 .headActions .btn{
    font-size:14px !important;
    padding:12px 6px !important;
  }
}

/* V237: 사진 선택과 모바일 카메라 촬영 버튼 분리 */
.ocRiskPhotoInputRowV237{
  display:flex;
  gap:10px;
  align-items:stretch;
  flex-wrap:wrap;
  width:100%;
}
.ocRiskFilePickV237{
  flex:1 1 260px;
  border:1px solid #c8d8eb;
  border-radius:14px;
  padding:10px 12px;
  background:#fff;
  display:flex;
  align-items:center;
  gap:10px;
  min-height:52px;
}
.ocRiskFilePickV237 b{
  white-space:nowrap;
  color:#10233f;
}
.ocRiskFilePickV237 input{
  flex:1;
  min-width:0;
}
.ocRiskCameraBtnV237{
  flex:0 0 auto;
  min-height:52px;
}
.hiddenFileInputV237{
  position:absolute !important;
  left:-9999px !important;
  width:1px !important;
  height:1px !important;
  opacity:0 !important;
  pointer-events:none !important;
}
@media (max-width:768px){
  .ocRiskPhotoInputRowV237{
    display:grid !important;
    grid-template-columns:1fr !important;
  }
  .ocRiskFilePickV237{
    width:100% !important;
    flex-direction:column !important;
    align-items:flex-start !important;
  }
  .ocRiskFilePickV237 input{
    width:100% !important;
  }
  .ocRiskCameraBtnV237{
    width:100% !important;
  }
}

/* V239 MSDS PDF preview + GPT regulation analysis */
.msdsDocDetailPanel{margin-top:18px;border:1px solid #cfe0f3;border-radius:18px;background:#fff;box-shadow:0 6px 18px rgba(15,35,65,.06);padding:14px;}
.msdsDocWorkspace{display:grid;grid-template-columns:minmax(420px,1fr) minmax(420px,1fr);gap:16px;align-items:start;}
.msdsDocPreviewBox,.msdsDocAnalysisBox{border:1px solid #cfe0f3;border-radius:16px;background:#f8fbff;padding:12px;min-height:620px;}
.msdsDocPreviewHead{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px;}
#msdsDocPreviewFrame{width:100%;height:580px;border:1px solid #d8e5f4;border-radius:12px;background:#fff;}
.msdsAnalysisNotice{padding:12px;border:1px solid #bee3c8;background:#f0fff4;border-radius:12px;color:#0b6935;font-weight:800;margin-bottom:12px;}
.msdsRegSummaryGrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:8px 0 14px;}
.msdsRegSummaryGrid div{border:1px solid #d7e3f1;border-radius:10px;background:#fff;display:flex;justify-content:space-between;align-items:center;padding:8px 10px;gap:8px;}
.msdsRegSummaryGrid.mini{grid-template-columns:repeat(3,minmax(0,1fr));font-size:12px;}
.msdsRegBadge{display:inline-flex;align-items:center;justify-content:center;min-width:46px;border-radius:999px;padding:4px 8px;font-weight:900;}
.msdsRegBadge.on{background:#128dcc;color:#fff;}.msdsRegBadge.off{background:#e8eef5;color:#334155;}
.msdsComponentTableWrap{overflow-x:auto;margin-bottom:14px;}.msdsComponentTable,.msdsDetailRows{width:100%;border-collapse:collapse;background:#fff;}
.msdsComponentTable th,.msdsComponentTable td,.msdsDetailRows th,.msdsDetailRows td{border:1px solid #d3dfed;padding:8px;text-align:left;vertical-align:top;}
.msdsComponentTable th,.msdsDetailRows th{background:#eaf3ff;color:#10233f;}
.msdsChemRegList{display:grid;gap:12px;}.msdsChemRegCard{border:1px solid #cfe0f3;border-radius:14px;background:#fff;padding:12px;}
.msdsChemRegHead{display:flex;justify-content:space-between;gap:8px;align-items:center;margin-bottom:8px;}.msdsChemRegHead b{font-size:16px;color:#10233f;}.msdsChemRegHead span{color:#58708c;font-weight:800;}
.msdsDocActions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end;}
@media(max-width:980px){.msdsDocWorkspace{grid-template-columns:1fr}.msdsDocPreviewBox,.msdsDocAnalysisBox{min-height:0}#msdsDocPreviewFrame{height:520px}.msdsRegSummaryGrid{grid-template-columns:1fr}.msdsRegSummaryGrid.mini{grid-template-columns:1fr}.msdsDocActions{justify-content:flex-start}}

/* V241: MSDS PDF 브라우저 추출 정보 */
.msdsAnalysisMetaV241{
  margin:8px 0 12px;
  padding:10px 12px;
  border:1px solid #cfe0f4;
  background:#f7fbff;
  color:#27496d;
  border-radius:12px;
  font-weight:700;
}

/* V242: MSDS 분석 결과 제품 목록 반영 */
.msdsReflectPanelV242{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
  margin:14px 0;
  padding:14px;
  border:1px solid #cfe0f4;
  border-radius:16px;
  background:#f7fbff;
}
.msdsReflectPanelV242 h4{margin:0 0 6px}
.msdsReflectPanelV242 p{margin:0;color:#526b89;font-weight:700}
.msdsReflectWarnV242{
  margin:10px 0;
  padding:10px 12px;
  border:1px solid #ffd59a;
  background:#fff9ed;
  color:#8a4a00;
  border-radius:12px;
  font-weight:800;
}
.msdsReflectProductCardV242{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:10px 12px;
  border:1px solid #d5e3f5;
  border-radius:14px;
  margin:8px 0;
  background:#fff;
}
.msdsReflectProductCardV242 span{
  display:block;
  color:#526b89;
  font-size:12px;
  margin-top:3px;
}
#msdsComponentsEditV242 input[data-msds-content]{
  width:100%;
  min-width:120px;
  border:1px solid #c8d8eb;
  border-radius:10px;
  padding:8px 10px;
  font-weight:800;
}
.badge.muted{
  display:inline-block;
  padding:4px 8px;
  border-radius:999px;
  background:#eef3f8;
  color:#6b7d92;
  font-weight:900;
}
@media(max-width:768px){
  .msdsReflectPanelV242,.msdsReflectProductCardV242{
    display:block;
  }
  .msdsReflectPanelV242 .btn,.msdsReflectProductCardV242 .btn{
    width:100%;
    margin-top:10px;
  }
}

/* V245: 위험성평가 저장 기능 제거 및 도우미 안내 */
[data-tab="riskArchive"]{
  display:none !important;
}
.riskHelperNoticeV245{
  margin:10px 0 14px;
  padding:12px 14px;
  border:1px solid #cfe0f4;
  background:#f7fbff;
  color:#27496d;
  border-radius:14px;
  font-weight:800;
  line-height:1.55;
}
.riskSaveWarning{
  display:none !important;
}
.riskRecentPanel{
  display:none !important;
}

/* V246: MSDS 구성성분 표 칸 깨짐 방지 */
.msdsComponentTableWrap{
  overflow-x:auto !important;
  -webkit-overflow-scrolling:touch;
  width:100%;
}
.msdsComponentTable{
  min-width:820px !important;
  table-layout:fixed !important;
}
#msdsComponentsEditV242 th:nth-child(1),
#msdsComponentsEditV242 td:nth-child(1){width:18%;}
#msdsComponentsEditV242 th:nth-child(2),
#msdsComponentsEditV242 td:nth-child(2){width:31%;}
#msdsComponentsEditV242 th:nth-child(3),
#msdsComponentsEditV242 td:nth-child(3){width:12%; white-space:nowrap;}
#msdsComponentsEditV242 th:nth-child(4),
#msdsComponentsEditV242 td:nth-child(4){width:20%; white-space:nowrap;}
#msdsComponentsEditV242 th:nth-child(5),
#msdsComponentsEditV242 td:nth-child(5){width:9%; text-align:center; white-space:nowrap;}
#msdsComponentsEditV242 th:nth-child(6),
#msdsComponentsEditV242 td:nth-child(6){width:10%; text-align:center; white-space:nowrap;}
#msdsComponentsEditV242 th,
#msdsComponentsEditV242 td{
  word-break:keep-all !important;
  overflow-wrap:anywhere !important;
  line-height:1.35 !important;
}
#msdsComponentsEditV242 input[data-msds-content]{
  min-width:130px !important;
  width:100% !important;
  box-sizing:border-box !important;
}
#msdsComponentsEditV242 .badge{
  white-space:nowrap !important;
}
@media(max-width:980px){
  .msdsComponentTable{
    min-width:860px !important;
  }
}

/* V247 관리자 저장공간 현황 */
.adminStoragePanelV247{
  margin-bottom:16px;
}
.storageStatsV247{
  display:block;
}
.storageCardsV247{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:14px;
}
.storageCardV247{
  border:1px solid #d4e3f5;
  background:#f8fbff;
  border-radius:18px;
  padding:16px;
  box-shadow:0 8px 20px rgba(15,45,80,.06);
}
.storageCardHeadV247{
  display:flex;
  justify-content:space-between;
  gap:12px;
  align-items:center;
  margin-bottom:10px;
  color:#526b89;
  font-weight:800;
}
.storageCardHeadV247 b{
  color:#10233f;
  font-size:15px;
}
.storageCardV247 strong{
  display:block;
  color:#10233f;
  font-size:28px;
  line-height:1.2;
}
.storageCardV247 strong em{
  color:#6d7f95;
  font-size:15px;
  font-style:normal;
}
.storageBarV247{
  height:12px;
  background:#e7f0fa;
  border:1px solid #cbdff2;
  border-radius:999px;
  overflow:hidden;
  margin:12px 0 8px;
}
.storageBarV247 span{
  display:block;
  height:100%;
  border-radius:999px;
  background:linear-gradient(90deg,#1f7de2,#13b6a8);
}
.storageCardV247 p{
  margin:0;
  color:#526b89;
  font-weight:800;
}
.storageUnavailableV247{
  margin:12px 0 8px;
  padding:10px 12px;
  border:1px dashed #cbdff2;
  border-radius:12px;
  color:#6d7f95;
  font-weight:800;
  background:#fff;
}
.storageDetailGridV247{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:14px;
  margin-top:14px;
}
.storageDetailGridV247>div{
  border:1px solid #d4e3f5;
  border-radius:16px;
  overflow:hidden;
  background:#fff;
}
.storageDetailGridV247 h4{
  margin:0;
  padding:12px 14px;
  background:#eaf3ff;
  color:#10233f;
}
.storageDetailGridV247 table{
  width:100%;
  border-collapse:collapse;
}
.storageDetailGridV247 th,
.storageDetailGridV247 td{
  border-top:1px solid #edf3fa;
  padding:10px 12px;
  text-align:left;
  font-size:13px;
}
.storageDetailGridV247 th{
  color:#27496d;
  width:55%;
}
.storageDetailGridV247 td{
  color:#10233f;
  font-weight:800;
}
.storageNoteV247{
  margin-top:12px;
  padding:12px 14px;
  border:1px solid #cfe0f4;
  background:#f7fbff;
  color:#27496d;
  border-radius:14px;
  font-weight:800;
}
@media(max-width:900px){
  .storageCardsV247,
  .storageDetailGridV247{
    grid-template-columns:1fr;
  }
  .storageCardV247 strong{
    font-size:23px;
  }
}

/* V248 관리자 첨부파일 정리 */
.adminOrphanPanelV248{
  margin-bottom:16px;
}
.cleanupFilesBoxV248{
  margin-top:12px;
}
.cleanupSummaryV248{
  display:flex;
  align-items:center;
  gap:12px;
  flex-wrap:wrap;
  padding:12px 14px;
  border:1px solid #d4e3f5;
  background:#f8fbff;
  border-radius:14px;
  color:#27496d;
  font-weight:800;
}
.cleanupSummaryV248 b{
  color:#10233f;
}
.cleanupSummaryV248 small{
  color:#6d7f95;
}
.cleanupSelectAllV248{
  margin:10px 0;
  padding:10px 12px;
  border:1px solid #edf3fa;
  border-radius:12px;
  background:#fff;
  font-weight:900;
}
.cleanupFileListV248{
  display:grid;
  gap:8px;
  max-height:420px;
  overflow:auto;
  padding-right:4px;
}
.cleanupFileItemV248{
  display:flex;
  gap:10px;
  align-items:flex-start;
  border:1px solid #d4e3f5;
  border-radius:14px;
  padding:10px 12px;
  background:#fff;
}
.cleanupFileItemV248 input{
  margin-top:4px;
}
.cleanupFileItemV248 b{
  display:block;
  color:#10233f;
  word-break:break-all;
  font-size:13px;
}
.cleanupFileItemV248 span{
  display:block;
  color:#6d7f95;
  font-size:12px;
  margin-top:3px;
}
@media(max-width:768px){
  .adminOrphanPanelV248 .headActions{
    display:grid;
    grid-template-columns:1fr;
    width:100%;
  }
  .adminOrphanPanelV248 .headActions .btn{
    width:100%;
  }
}

/* V252: 클라우드 Pro 사용현황 기준 반영 */
.cloudPlanCardV252{
  margin-bottom:14px;
  padding:14px 16px;
  border:1px solid #b8d4f1;
  border-radius:18px;
  background:linear-gradient(135deg,#f2f8ff,#ffffff);
  color:#10233f;
  box-shadow:0 8px 20px rgba(15,45,80,.06);
}
.cloudPlanCardV252 b{
  display:block;
  font-size:17px;
  margin-bottom:6px;
}
.cloudPlanCardV252 span{
  display:block;
  color:#526b89;
  font-weight:900;
  line-height:1.5;
}
.storageStatsV247 .storageCardsV247{
  grid-template-columns:repeat(3,minmax(0,1fr));
}
@media(max-width:1100px){
  .storageStatsV247 .storageCardsV247{
    grid-template-columns:1fr;
  }
}



/* V264: PC 화면에서는 모바일 카메라 촬영 버튼 숨김 */
.ocRiskCameraBtnV237{
  display:none !important;
}
@media(max-width:900px){
  .ocRiskCameraBtnV237{
    display:inline-flex !important;
  }
}
@media(min-width:901px){
  #occasionalRiskEditorPanel .ocRiskPhotoInputRowV237 small,
  #occasionalRiskEditorPanel small{
    word-break:keep-all;
  }
}

/* V265: 모바일 가로 짤림/브리핑 배너 보정 */
@media(max-width:900px){
  html, body{
    max-width:100vw !important;
    overflow-x:hidden !important;
  }
  .appShell,
  .mainContent,
  .pageSection,
  .panel,
  .dashboardCard,
  .occasionalRiskEditorPanel,
  #occasionalRiskEditorPanel,
  #tbmEditorPanel,
  #risk .panel{
    max-width:100vw !important;
    box-sizing:border-box !important;
    overflow-x:hidden !important;
  }

  /* 안전 이슈 브리핑: 모바일에서 카드 밖으로 밀리지 않게 2단 구조 */
  .disasterTicker{
    width:100% !important;
    max-width:calc(100vw - 24px) !important;
    margin-left:auto !important;
    margin-right:auto !important;
    padding:10px !important;
    display:grid !important;
    grid-template-columns:1fr auto !important;
    gap:8px !important;
    align-items:center !important;
    overflow:hidden !important;
  }
  .tickerBadge{
    min-width:0 !important;
    padding:10px 12px !important;
    gap:10px !important;
    border-radius:16px !important;
  }
  .tickerBadgeIcon{
    width:30px !important;
    height:30px !important;
    flex:0 0 30px !important;
  }
  .tickerBadgeText{
    min-width:0 !important;
  }
  .tickerBadgeEyebrow{
    font-size:9px !important;
    letter-spacing:.16em !important;
    white-space:nowrap !important;
  }
  .tickerBadge strong{
    font-size:20px !important;
    line-height:1.1 !important;
    white-space:nowrap !important;
  }
  .tickerMain{
    grid-column:1 / -1 !important;
    width:100% !important;
    min-width:0 !important;
    overflow:hidden !important;
  }
  .tickerViewport{
    width:100% !important;
    min-width:0 !important;
    overflow:hidden !important;
  }
  .tickerTrack{
    min-width:0 !important;
    white-space:nowrap !important;
  }
  .tickerControls{
    flex:0 0 auto !important;
    justify-self:end !important;
    min-width:0 !important;
    display:flex !important;
    gap:6px !important;
  }
  .tickerBtn{
    width:34px !important;
    height:34px !important;
    min-width:34px !important;
    padding:0 !important;
    font-size:0 !important;
    border-radius:14px !important;
  }
  .tickerPauseBtn::after{
    content:'Ⅱ';
    font-size:15px;
    font-weight:900;
  }
  .tickerTopBtn::after{
    content:'⌃';
    font-size:17px;
    font-weight:900;
  }

  /* 수시위험성평가 입력폼: 모바일에서는 TBM처럼 완전 1열 */
  #occasionalRiskEditorPanel{
    padding-left:10px !important;
    padding-right:10px !important;
  }
  #occasionalRiskEditorPanel .panelHead{
    display:block !important;
  }
  #occasionalRiskEditorPanel .headActions{
    display:grid !important;
    grid-template-columns:1fr 1fr !important;
    gap:8px !important;
    width:100% !important;
    margin-top:12px !important;
  }
  #occasionalRiskEditorPanel .headActions .btn{
    width:100% !important;
    min-width:0 !important;
    padding:12px 6px !important;
    font-size:14px !important;
    white-space:nowrap !important;
  }
  #occasionalRiskEditorPanel .ocRiskFormGrid{
    display:grid !important;
    grid-template-columns:1fr !important;
    gap:12px !important;
    width:100% !important;
    max-width:100% !important;
  }
  #occasionalRiskEditorPanel .ocRiskFormGrid label,
  #occasionalRiskEditorPanel .ocRiskFormGrid label.full{
    grid-column:1 / -1 !important;
    width:100% !important;
    min-width:0 !important;
  }
  #occasionalRiskEditorPanel .ocRiskFormGrid input,
  #occasionalRiskEditorPanel .ocRiskFormGrid select,
  #occasionalRiskEditorPanel .ocRiskFormGrid textarea{
    width:100% !important;
    max-width:100% !important;
    min-width:0 !important;
    box-sizing:border-box !important;
  }
  #occasionalRiskEditorPanel .ocRiskPhotoInputRowV237{
    display:grid !important;
    grid-template-columns:1fr !important;
    gap:8px !important;
    width:100% !important;
    max-width:100% !important;
  }
  #occasionalRiskEditorPanel .ocRiskFilePickV237{
    width:100% !important;
    max-width:100% !important;
    min-width:0 !important;
    box-sizing:border-box !important;
    display:grid !important;
    grid-template-columns:1fr !important;
    gap:8px !important;
  }
  #occasionalRiskEditorPanel .ocRiskFilePickV237 input[type="file"]{
    width:100% !important;
    max-width:100% !important;
    min-width:0 !important;
    font-size:14px !important;
  }
  #occasionalRiskEditorPanel .ocRiskCameraBtnV237{
    width:100% !important;
    max-width:100% !important;
    justify-content:center !important;
    min-width:0 !important;
  }
  #occasionalRiskEditorPanel .eduPhotoPreview,
  #ocRiskPhotoPreview{
    width:100% !important;
    max-width:100% !important;
    box-sizing:border-box !important;
    overflow-x:hidden !important;
  }
  #occasionalRiskEditorPanel .ocRiskNotice{
    width:100% !important;
    max-width:100% !important;
    box-sizing:border-box !important;
    word-break:keep-all !important;
    overflow-wrap:anywhere !important;
  }

  /* 모바일에서도 표 영역만 내부 가로스크롤 */
  #occasionalRiskEditorPanel .ocRiskTableWrap,
  #occasionalRiskEditorPanel .reportPreviewBox,
  #ocRiskPreviewWrap{
    max-width:100% !important;
    overflow-x:auto !important;
    -webkit-overflow-scrolling:touch !important;
  }
}

@media(max-width:420px){
  .tickerBadge strong{
    font-size:18px !important;
  }
  #occasionalRiskEditorPanel .headActions{
    grid-template-columns:1fr !important;
  }
}

/* V266: QR 메일 다중 수신자 입력 */
.qrMailRow{
  align-items:stretch;
}
.qrMailMultiInputV266{
  min-height:44px;
  resize:vertical;
  line-height:1.45;
  font-family:inherit;
}
.qrMailInput.qrMailMultiInputV266{
  flex:1 1 260px;
  width:100%;
}
@media(max-width:760px){
  .qrMailMultiInputV266{
    min-height:70px;
  }
}

/* V268: 페이지 상단 제목/설명 글자 짤림 방지 및 실명 예시 제거 */
.pageHero,
.pageHeader,
.sectionHero,
.contentHero,
.riskHero,
.occasionalRiskHero,
.myPageHero,
.panelHero{
  min-height:auto !important;
  height:auto !important;
  overflow:visible !important;
}

.pageHero *,
.pageHeader *,
.sectionHero *,
.contentHero *,
.riskHero *,
.occasionalRiskHero *,
.myPageHero *,
.panelHero *{
  line-height:1.45 !important;
  overflow:visible !important;
}

.pageSection > .sectionTitle,
.pageSection > .pageTitle,
.pageSection > .panelHead,
.mainContent > .pageHeader,
#occasionalRisk .pageHeader,
#mypage .pageHeader{
  min-height:auto !important;
  height:auto !important;
  padding-top:14px !important;
  padding-bottom:14px !important;
  overflow:visible !important;
}

.pageSection h1,
.pageSection h2,
.pageSection h3,
.mainContent h1,
.mainContent h2,
.mainContent h3{
  line-height:1.35 !important;
  padding-top:2px !important;
  padding-bottom:2px !important;
  overflow:visible !important;
}

.pageSection p,
.mainContent p,
.panelHead p{
  line-height:1.55 !important;
  overflow:visible !important;
}

@media(max-width:900px){
  .pageSection > .sectionTitle,
  .pageSection > .pageTitle,
  .pageSection > .panelHead,
  .mainContent > .pageHeader,
  #occasionalRisk .pageHeader,
  #mypage .pageHeader{
    padding-top:16px !important;
    padding-bottom:16px !important;
  }
  .pageSection h1,
  .pageSection h2,
  .pageSection h3,
  .mainContent h1,
  .mainContent h2,
  .mainContent h3{
    line-height:1.4 !important;
  }
}

/* V269: 로그인 화면 회원가입 제거 */
#showRegisterBtn,
#registerOpenBtn,
#registerTabBtn,
#registerPanel,
#registerForm,
.authRegister,
.registerBox,
.registerPanel,
[data-auth="register"],
button[onclick*="showAuth('register')"],
button[onclick*='showAuth("register")']{
  display:none !important;
}

/* V270 로그인 로고 흰 배경 제거 */
.loginBrand img{background:transparent !important;border:0 !important;padding:0 !important;border-radius:0 !important;filter:drop-shadow(0 2px 8px rgba(0,0,0,.16));}


/* V271 — 홈카드 보강 + 브랜드/속보 UI 정리 */
.homeModuleCard.occasional{border-left:5px solid #2563eb;}
.homeModuleCard.activity{border-left:5px solid #14b8a6;}
.homeModuleCard.stop{border-left:5px solid #ef4444;}

.commandLabel{white-space:nowrap;}

.disasterTicker{
  grid-template-columns:minmax(240px,280px) minmax(0,1fr) auto !important;
  align-items:center !important;
}
.tickerMain{min-width:0 !important;}
.tickerViewport{min-width:0 !important;}
.tickerControls{
  display:flex !important;
  align-items:center !important;
  justify-content:flex-end !important;
  gap:10px !important;
  flex-wrap:nowrap !important;
  min-width:max-content !important;
}
.tickerControls button,
#tickerPauseBtn,
#tickerTopBtn{
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  visibility:visible !important;
  opacity:1 !important;
}
@media(max-width:1180px){
  .disasterTicker{grid-template-columns:1fr !important;}
  .tickerScope{width:max-content !important;}
  .tickerControls{width:100% !important; justify-content:flex-end !important;}
}


/* V275: enlarge sidebar wordmark logo */
.sideBrand{
  padding: 20px 12px 18px !important;
  min-height: 106px !important;
}
.sideBrand img{
  width: 152px !important;
  height: auto !important;
  max-width: 88% !important;
  max-height: none !important;
  object-fit: contain !important;
  flex: 0 0 auto !important;
}


/* V276: crisp sidebar logo using icon + live text */
.sideBrand.sideBrandWordmark{
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  gap:12px !important;
  padding:18px 12px 16px !important;
  min-height:106px !important;
}
.sideBrand.sideBrandWordmark .sideBrandSymbol{
  width:64px !important;
  max-width:none !important;
  height:auto !important;
  flex:0 0 auto !important;
  filter:drop-shadow(0 8px 18px rgba(0,0,0,.16)) !important;
}
.sideBrand.sideBrandWordmark .sideBrandText{
  display:flex !important;
  flex-direction:column !important;
  align-items:flex-start !important;
  justify-content:center !important;
  min-width:0 !important;
}
.sideBrand.sideBrandWordmark strong{
  display:block !important;
  margin:0 !important;
  color:#f7fbff !important;
  font-size:19px !important;
  line-height:.92 !important;
  font-weight:900 !important;
  letter-spacing:-.5px !important;
  text-shadow:none !important;
  white-space:normal !important;
}
.sideBrand.sideBrandWordmark span{
  display:block !important;
  margin-top:4px !important;
  color:rgba(226,238,255,.92) !important;
  font-size:10px !important;
  line-height:1.15 !important;
  letter-spacing:.28px !important;
  white-space:nowrap !important;
}


/* V278 Bulk PDF Export */
.bulkPdfHeroV278{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
}
.bulkPdfFilterGridV278{
  display:grid;
  grid-template-columns:1.1fr 1.2fr 1fr 1fr auto auto;
  gap:10px;
  align-items:end;
}
.bulkPdfFilterGridV278 label span{
  display:block;
  font-weight:800;
  color:#0f2338;
  margin-bottom:6px;
}
.bulkPdfFilterGridV278 select,
.bulkPdfFilterGridV278 input{
  width:100%;
  min-height:42px;
  border:1px solid #c9d8ea;
  border-radius:12px;
  padding:0 12px;
  font-weight:700;
}
.bulkPdfTargetListV278{
  margin-top:14px;
  border:1px solid #d8e6f5;
  border-radius:16px;
  overflow:hidden;
  background:#fff;
}
.bulkPdfTargetListV278.empty{
  padding:24px;
  text-align:center;
  color:#60758d;
  background:#f7fbff;
}
.bulkPdfSummaryV278{
  padding:12px 14px;
  background:#eef6ff;
  border-bottom:1px solid #d8e6f5;
  color:#0f3b68;
}
.bulkPdfItemV278{
  display:grid;
  grid-template-columns:32px 36px minmax(0,1fr) 220px;
  gap:10px;
  align-items:center;
  padding:12px 14px;
  border-bottom:1px solid #edf3fa;
  cursor:pointer;
}
.bulkPdfItemV278:last-child{border-bottom:0}
.bulkPdfItemV278 strong{
  color:#0f2338;
  font-weight:900;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.bulkPdfItemV278 em{
  color:#60758d;
  font-style:normal;
  text-align:right;
  font-size:12px;
}
.bulkPdfNoV278{
  width:28px;height:28px;border-radius:10px;
  display:inline-flex;align-items:center;justify-content:center;
  background:#eaf4ff;color:#1267c7;font-weight:900;
}
@media(max-width:1100px){
  .bulkPdfFilterGridV278{grid-template-columns:1fr 1fr}
  .bulkPdfItemV278{grid-template-columns:28px 34px minmax(0,1fr)}
  .bulkPdfItemV278 em{grid-column:3;text-align:left}
}
@media(max-width:700px){
  .bulkPdfFilterGridV278{grid-template-columns:1fr}
  .bulkPdfHeroV278{display:block}
}


/* V280 Dashboard Monthly Safety Video */
.dashboardVideoPanelV280{
  margin:16px 0;
  background:linear-gradient(135deg,#ffffff,#f4f9ff);
  border:1px solid #cfe1f4;
  border-radius:22px;
  padding:22px 24px;
  box-shadow:0 12px 26px rgba(15,35,56,.08);
}
.dashboardVideoHeadV280{
  display:flex;
  justify-content:space-between;
  align-items:flex-end;
  gap:18px;
  margin-bottom:16px;
}
.dashboardVideoHeadV280 h3{
  margin:6px 0 8px;
  font-size:26px;
  color:#0f2338;
}
.dashboardVideoHeadV280 p{
  margin:0;
  color:#58708a;
  font-weight:700;
}
.dashboardVideoAdminV280{
  display:grid;
  grid-template-columns:180px 230px auto;
  gap:8px;
  align-items:center;
}
.dashboardVideoAdminV280 input[type="text"],
.dashboardVideoAdminV280 input:not([type]){
  min-height:40px;
}
.dashboardVideoAdminV280 input{
  border:1px solid #c9d8ea;
  border-radius:12px;
  padding:9px 12px;
  background:#fff;
}
.dashboardVideoBoxV280{
  display:grid;
  grid-template-columns:minmax(320px, 720px) minmax(220px, 1fr);
  gap:18px;
  align-items:center;
}
.dashboardVideoBoxV280.empty{
  display:block;
  padding:34px;
  text-align:center;
  background:#f7fbff;
  color:#60758d;
  border:1px dashed #c9d8ea;
  border-radius:18px;
  font-weight:800;
}
.dashboardVideoPlayerWrapV280{
  background:#0f2338;
  border-radius:18px;
  overflow:hidden;
  box-shadow:0 12px 24px rgba(15,35,56,.18);
}
.dashboardVideoPlayerV280{
  width:100%;
  display:block;
  aspect-ratio:16/9;
  background:#0f2338;
}
.dashboardVideoInfoV280{
  padding:18px;
  border-radius:18px;
  background:#fff;
  border:1px solid #d8e6f5;
}
.dashboardVideoInfoV280 b{
  display:block;
  font-size:22px;
  line-height:1.35;
  color:#0f2338;
  margin-bottom:10px;
}
.dashboardVideoInfoV280 span{
  display:block;
  color:#60758d;
  font-size:13px;
  line-height:1.5;
  word-break:break-all;
}
@media(max-width:1100px){
  .dashboardVideoHeadV280{display:block}
  .dashboardVideoAdminV280{margin-top:14px;grid-template-columns:1fr}
  .dashboardVideoBoxV280{grid-template-columns:1fr}
}
@media(max-width:700px){
  .dashboardVideoPanelV280{padding:16px}
  .dashboardVideoHeadV280 h3{font-size:22px}
}


/* V281 Dashboard video display/admin management */
.dashboardVideoHeadV280{
  margin-bottom:12px;
}
.dashboardVideoBoxV280{
  display:block !important;
}
.dashboardVideoMessageV281{
  margin-bottom:16px;
  padding:18px 20px;
  border:1px solid #d8e6f5;
  border-radius:18px;
  background:#fff;
}
.dashboardVideoMessageV281 b{
  display:block;
  font-size:24px;
  line-height:1.35;
  color:#0f2338;
  margin-bottom:10px;
}
.dashboardVideoMessageV281 p{
  margin:0 0 10px;
  color:#354b63;
  font-weight:700;
  line-height:1.65;
  white-space:normal;
}
.dashboardVideoMessageV281 span{
  display:block;
  color:#60758d;
  font-size:13px;
  word-break:break-all;
}
.adminVideoGridV281{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:12px;
}
.adminVideoGridV281 label{
  display:block;
}
.adminVideoGridV281 label.full{
  grid-column:1 / -1;
}
.adminVideoGridV281 label span{
  display:block;
  font-weight:900;
  color:#0f2338;
  margin-bottom:7px;
}
.adminVideoGridV281 input,
.adminVideoGridV281 textarea{
  width:100%;
  border:1px solid #c9d8ea;
  border-radius:14px;
  padding:12px 14px;
  background:#fff;
  font-family:inherit;
  font-weight:700;
  box-sizing:border-box;
}
.adminVideoGridV281 textarea{
  resize:vertical;
  line-height:1.55;
}
.adminVideoActionsV281{
  grid-column:1 / -1;
  display:flex;
  align-items:center;
  gap:12px;
  flex-wrap:wrap;
}
@media(max-width:800px){
  .adminVideoGridV281{
    grid-template-columns:1fr;
  }
}


/* V282: 월간 영상은 좌측 영상 + 우측 내용 배치, 영상 크기 유지 */
.dashboardVideoBoxV280{
  display:grid !important;
  grid-template-columns:minmax(360px, 620px) minmax(280px, 1fr) !important;
  gap:18px !important;
  align-items:stretch !important;
}
.dashboardVideoPlayerWrapV280{
  width:100% !important;
  max-width:620px !important;
  align-self:start !important;
}
.dashboardVideoPlayerV280{
  width:100% !important;
  aspect-ratio:16/9 !important;
  max-height:360px !important;
  object-fit:contain !important;
}
.dashboardVideoMessageV281{
  margin-bottom:0 !important;
  height:100% !important;
  min-height:220px !important;
  display:flex !important;
  flex-direction:column !important;
  justify-content:center !important;
}
.dashboardVideoMessageV281 b{
  font-size:22px !important;
}
.dashboardVideoMessageV281 p{
  font-size:15px !important;
}
@media(max-width:1100px){
  .dashboardVideoBoxV280{
    grid-template-columns:1fr !important;
  }
  .dashboardVideoPlayerWrapV280{
    max-width:100% !important;
  }
  .dashboardVideoMessageV281{
    min-height:auto !important;
  }
}


/* V283: 사용자 계정 관리 전용 페이지 */
.accountsHeroV283{
  margin-bottom:16px;
}
.accountsLayoutV283{
  display:grid;
  grid-template-columns:minmax(320px, 460px) minmax(0, 1fr);
  gap:16px;
  align-items:start;
}
#accounts .adminCreatePanel{
  position:sticky;
  top:16px;
}
#accounts .panel:has(#userList){
  min-width:0;
}
#accounts #userList{
  max-height:none;
}
#accounts .adminUserCards{
  display:grid;
  grid-template-columns:repeat(auto-fill, minmax(360px, 1fr));
  gap:14px;
}
#accounts .adminUserCard{
  min-width:0;
}
@media(max-width:1100px){
  .accountsLayoutV283{
    grid-template-columns:1fr;
  }
  #accounts .adminCreatePanel{
    position:static;
  }
  #accounts .adminUserCards{
    grid-template-columns:1fr;
  }
}


/* V284 Education materials common storage */
.eduModeTabsV284{
  display:flex;
  gap:10px;
  margin:0 0 14px;
  flex-wrap:wrap;
}
.eduModeTabV284{
  border:1px solid #b9d3ef;
  background:#fff;
  color:#15539d;
  border-radius:18px;
  padding:14px 22px;
  font-weight:900;
  cursor:pointer;
  box-shadow:0 8px 18px rgba(15,35,56,.06);
}
.eduModeTabV284.active{
  background:#176dd5;
  color:#fff;
  border-color:#176dd5;
  box-shadow:0 12px 24px rgba(23,109,213,.22);
}
.eduMaterialUploadV284{
  display:grid;
  grid-template-columns:1fr 1.3fr 1fr auto;
  gap:10px;
  align-items:end;
  padding:16px;
  background:#f7fbff;
  border:1px solid #d8e6f5;
  border-radius:18px;
  margin-bottom:12px;
}
.eduMaterialUploadV284 label span{
  display:block;
  font-weight:900;
  color:#0f2338;
  margin-bottom:7px;
}
.eduMaterialUploadV284 input{
  width:100%;
  border:1px solid #c9d8ea;
  border-radius:12px;
  padding:11px 12px;
  background:#fff;
  box-sizing:border-box;
}
.eduMaterialListV284{
  display:grid;
  gap:10px;
  margin-top:12px;
}
.eduMaterialListV284.empty{
  padding:28px;
  text-align:center;
  color:#60758d;
  background:#f7fbff;
  border:1px dashed #c9d8ea;
  border-radius:18px;
  font-weight:800;
}
.eduMaterialItemV284{
  display:grid;
  grid-template-columns:64px minmax(0,1fr) auto;
  gap:14px;
  align-items:center;
  padding:16px;
  border:1px solid #d8e6f5;
  border-radius:18px;
  background:#fff;
  box-shadow:0 8px 18px rgba(15,35,56,.05);
}
.eduMaterialIconV284{
  width:54px;height:54px;border-radius:16px;
  display:flex;align-items:center;justify-content:center;
  background:#176dd5;color:#fff;font-weight:900;font-size:14px;
}
.eduMaterialInfoV284 strong{
  display:block;
  color:#0f2338;
  font-size:18px;
  margin-bottom:6px;
}
.eduMaterialInfoV284 span{
  color:#60758d;
  font-size:13px;
  font-weight:700;
}
.eduMaterialInfoV284 p{
  margin:7px 0 0;
  color:#455d76;
  font-weight:700;
}
.eduMaterialActionsV284{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
  justify-content:flex-end;
}
@media(max-width:1100px){
  .eduMaterialUploadV284{grid-template-columns:1fr}
}
@media(max-width:900px){
  .eduMaterialItemV284{grid-template-columns:52px minmax(0,1fr)}
  .eduMaterialActionsV284{grid-column:1 / -1;justify-content:flex-start}
}


/* V285 MSDS multiple upload */
.msdsDocUploadHintV285{
  grid-column:1 / -1;
  padding:10px 12px;
  border-radius:12px;
  background:#f0f7ff;
  color:#42617f;
  font-weight:800;
  border:1px solid #d8e6f5;
}


/* V287: MSDS 보관함 좌측 목록 + 우측 미리보기/AI분석 */
.msdsDocSideLayoutV287{
  display:grid;
  grid-template-columns:minmax(420px, 0.92fr) minmax(560px, 1.08fr);
  gap:14px;
  align-items:start;
  margin-top:12px;
}
.msdsDocSideLayoutV287:has(.msdsDocDetailPanel.hidden){
  grid-template-columns:1fr;
}
.msdsDocSideLayoutV287 .msdsDocList{
  min-width:0;
}
.msdsDocSideLayoutV287 .msdsDocDetailPanel{
  margin-top:0 !important;
  position:sticky;
  top:14px;
  max-height:calc(100vh - 130px);
  overflow:auto;
}
.msdsDocSideLayoutV287 .msdsDocWorkspace{
  display:grid;
  grid-template-columns:1fr;
  gap:12px;
}
.msdsDocSideLayoutV287 .msdsDocPreviewBox,
.msdsDocSideLayoutV287 .msdsDocAnalysisBox{
  min-width:0;
}
.msdsDocSideLayoutV287 #msdsDocPreviewFrame{
  min-height:460px;
  height:52vh;
}
.msdsDocSideLayoutV287 .msdsDocActions{
  gap:8px;
}
.msdsDocSideLayoutV287 .msdsDocActions .btn{
  white-space:nowrap;
}
@media(max-width:1320px){
  .msdsDocSideLayoutV287{
    grid-template-columns:1fr;
  }
  .msdsDocSideLayoutV287 .msdsDocDetailPanel{
    position:static;
    max-height:none;
  }
}


/* V294: 일괄 PDF 현재 화면 출력 전용 */
#bulkPdfPrintOnlyV294{
  display:none;
}
@media print{
  @page{size:A4 portrait;margin:8mm}
  body.printingBulkPdfV294 *{
    visibility:hidden!important;
  }
  body.printingBulkPdfV294 #bulkPdfPrintOnlyV294,
  body.printingBulkPdfV294 #bulkPdfPrintOnlyV294 *{
    visibility:visible!important;
  }
  body.printingBulkPdfV294{
    background:#fff!important;
  }
  body.printingBulkPdfV294 #bulkPdfPrintOnlyV294{
    display:block!important;
    position:absolute!important;
    left:0!important;
    top:0!important;
    width:100%!important;
    background:#fff!important;
    color:#111!important;
    z-index:999999!important;
  }
  body.printingBulkPdfV294 #bulkPdfPrintOnlyV294 .bulkPrintCoverV278{
    padding:22mm 14mm 14mm!important;
    page-break-after:always!important;
    background:#fff!important;
    color:#111!important;
  }
  body.printingBulkPdfV294 #bulkPdfPrintOnlyV294 .bulkPrintCoverV278 h1{
    font-size:26px!important;
    margin:0 0 10px!important;
    color:#111!important;
  }
  body.printingBulkPdfV294 #bulkPdfPrintOnlyV294 .bulkPrintCoverV278 p{
    font-size:13px!important;
    color:#333!important;
    margin:4px 0!important;
  }
  body.printingBulkPdfV294 #bulkPdfPrintOnlyV294 .bulkPrintDocV278{
    page-break-after:always!important;
    padding:0!important;
    margin:0!important;
    background:#fff!important;
    color:#111!important;
    box-shadow:none!important;
    border:0!important;
  }
  body.printingBulkPdfV294 #bulkPdfPrintOnlyV294 .bulkPrintDocV278:last-child{
    page-break-after:auto!important;
  }
  body.printingBulkPdfV294 #bulkPdfPrintOnlyV294 .bulkPrintLabelV278{
    font-size:12px!important;
    font-weight:900!important;
    color:#111!important;
    margin:0 0 5mm!important;
    padding:0 0 4px!important;
    border-bottom:2px solid #111!important;
    background:#fff!important;
  }
  body.printingBulkPdfV294 #bulkPdfPrintOnlyV294 .eduPreviewPages{
    display:block!important;
    background:#fff!important;
    margin:0!important;
    padding:0!important;
  }
  body.printingBulkPdfV294 #bulkPdfPrintOnlyV294 .eduPrintPage{
    visibility:visible!important;
    width:210mm!important;
    min-height:297mm!important;
    background:#fff!important;
    color:#111!important;
    box-shadow:none!important;
    padding:7mm!important;
    margin:0 auto!important;
    page-break-after:always!important;
    overflow:hidden!important;
  }
  body.printingBulkPdfV294 #bulkPdfPrintOnlyV294 .eduPrintPage:last-child{
    page-break-after:auto!important;
  }
  body.printingBulkPdfV294 #bulkPdfPrintOnlyV294 .eduDocPhotoGrid div{
    width:180px!important;
    max-width:180px!important;
  }
  body.printingBulkPdfV294 #bulkPdfPrintOnlyV294 .eduDocPhotoGrid img{
    width:100%!important;
    height:120px!important;
    object-fit:cover!important;
  }
  body.printingBulkPdfV294 #bulkPdfPrintOnlyV294 .eduApproval img,
  body.printingBulkPdfV294 #bulkPdfPrintOnlyV294 .eduAttendanceTable img,
  body.printingBulkPdfV294 #bulkPdfPrintOnlyV294 img[src^="data:image"]{
    max-width:110px!important;
    max-height:38px!important;
    object-fit:contain!important;
  }
  body.printingBulkPdfV294 #bulkPdfPrintOnlyV294 button,
  body.printingBulkPdfV294 #bulkPdfPrintOnlyV294 .btn,
  body.printingBulkPdfV294 #bulkPdfPrintOnlyV294 input,
  body.printingBulkPdfV294 #bulkPdfPrintOnlyV294 select,
  body.printingBulkPdfV294 #bulkPdfPrintOnlyV294 textarea{
    display:none!important;
  }
}


/* V295: 안전보건교육일지 개별 인쇄 시 화면 전용 탭 숨김 */
@media print{
  body.printingEducation .eduModeTabsV284,
  body.printingEducation .eduModeTabsV284 *,
  body.printingEducation #eduLogTabV284,
  body.printingEducation #eduMaterialTabV284,
  body.printingEducation #eduMaterialWrapV284{
    display:none!important;
    visibility:hidden!important;
  }
}


/* V295: 일괄 PDF 출력 시에도 교육 탭 숨김 */
@media print{
  body.printingBulkPdfV294 #bulkPdfPrintOnlyV294 .eduModeTabsV284,
  body.printingBulkPdfV294 #bulkPdfPrintOnlyV294 .eduModeTabsV284 *,
  body.printingBulkPdfV294 #bulkPdfPrintOnlyV294 #eduMaterialWrapV284{
    display:none!important;
    visibility:hidden!important;
  }
}


/* V296 Center Weather Dashboard */
.centerWeatherPanelV296{
  margin:16px 0;
  background:linear-gradient(135deg,#ffffff,#f5faff);
  border:1px solid #cfe1f4;
  border-radius:22px;
  padding:20px 22px;
  box-shadow:0 12px 26px rgba(15,35,56,.07);
}
.centerWeatherHeadV296{
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:16px;
  margin-bottom:14px;
}
.centerWeatherHeadV296 h3{
  margin:6px 0 6px;
  color:#0f2338;
  font-size:24px;
}
.centerWeatherHeadV296 p{
  margin:0;
  color:#58708a;
  font-weight:800;
}
.centerWeatherGridV296{
  display:grid;
  grid-template-columns:repeat(3,minmax(220px,1fr));
  gap:12px;
}
.centerWeatherGridV296.empty{
  display:block;
  padding:28px;
  text-align:center;
  background:#f7fbff;
  border:1px dashed #c9d8ea;
  border-radius:18px;
  color:#60758d;
  font-weight:900;
}
.centerWeatherCardV296{
  background:#fff;
  border:1px solid #d8e6f5;
  border-radius:18px;
  padding:16px;
  box-shadow:0 8px 18px rgba(15,35,56,.05);
}
.centerWeatherCardV296.warn{
  background:#fff;
  border-color:#d8e6f5;
}
.centerWeatherTitleV296 b{
  display:block;
  color:#0f2338;
  font-size:17px;
  line-height:1.3;
  margin-bottom:4px;
}
.centerWeatherTitleV296 span{
  color:#60758d;
  font-size:13px;
  font-weight:900;
}
.centerWeatherValuesV296{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:8px;
  margin-top:12px;
}
.centerWeatherValuesV296 div{
  border-radius:14px;
  background:#eef6ff;
  padding:11px 10px;
}
.centerWeatherValuesV296 em{
  display:block;
  font-style:normal;
  color:#4e6a88;
  font-size:12px;
  font-weight:900;
  margin-bottom:5px;
}
.centerWeatherValuesV296 strong{
  display:block;
  color:#1267c7;
  font-size:22px;
  line-height:1.1;
  font-weight:950;
}
@media(max-width:1200px){
  .centerWeatherGridV296{grid-template-columns:repeat(2,minmax(220px,1fr));}
}
@media(max-width:720px){
  .centerWeatherHeadV296{display:block;}
  .centerWeatherHeadV296 .btn{margin-top:12px;}
  .centerWeatherGridV296{grid-template-columns:1fr;}
}


/* V298 Weather API notice */
.centerWeatherNoticeV298{
  grid-column:1 / -1;
  padding:12px 14px;
  border-radius:14px;
  background:#fff7ed;
  border:1px solid #fed7aa;
  color:#9a3412;
  font-weight:900;
  line-height:1.45;
}


/* V299 Weather: 현재기온/3시간기온/기준시각 표시 */
.weatherValuesV299{
  grid-template-columns:1.25fr .75fr!important;
}
.weatherTempWideV299 strong{
  font-size:20px!important;
}
.weatherTempWideV299 small{
  display:block;
  margin-top:4px;
  color:#6b7f95;
  font-weight:900;
  font-size:11px;
}
.weatherTimeWideV299{
  grid-column:1 / -1;
}
.weatherTimeWideV299 strong{
  font-size:15px!important;
  color:#0f477f!important;
  word-break:break-all;
}
@media(max-width:720px){
  .weatherValuesV299{
    grid-template-columns:1fr!important;
  }
  .weatherTimeWideV299{
    grid-column:auto;
  }
}


/* V300 KMA weather source label */
.centerWeatherPanelV296 .eyebrow::after{
  content:" · KMA";
}

/* V302 KMA weather icon badge */
.weatherTitleV302{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;}
.weatherIconBadgeV302{min-width:74px;padding:8px 10px;border-radius:16px;background:linear-gradient(135deg,#fff7df,#eef7ff);border:1px solid #d8e6f5;display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:0 6px 14px rgba(15,35,56,.05);}
.weatherIconBadgeV302 strong{display:block;font-size:28px;line-height:1;margin-bottom:5px;}
.weatherIconBadgeV302 em{display:block;font-style:normal;color:#31506f;font-size:12px;font-weight:950;white-space:nowrap;}
@media(max-width:720px){.weatherIconBadgeV302{min-width:64px;padding:7px 8px}.weatherIconBadgeV302 strong{font-size:24px}}


/* V304 Heat illness warning badge */
.heatWarningBadgeV304{
  margin-top:12px;
  margin-bottom:10px;
  border-radius:14px;
  padding:10px 12px;
  border:1px solid #f4d59a;
  background:#fff8e6;
  color:#8a4b00;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  box-shadow:0 6px 14px rgba(138,75,0,.06);
}
.heatWarningBadgeV304::before{
  content:"🌡️";
  font-size:20px;
  flex:0 0 auto;
}
.heatWarningBadgeV304 b{
  font-size:14px;
  font-weight:950;
  line-height:1.3;
  flex:1;
}
.heatWarningBadgeV304 span{
  font-size:12px;
  font-weight:900;
  line-height:1.3;
  color:inherit;
  opacity:.9;
  text-align:right;
}
.heatWarningBadgeV304.caution{
  background:#fff8e6;
  border-color:#f4d59a;
  color:#8a4b00;
}
.heatWarningBadgeV304.warn{
  background:#fff4dc;
  border-color:#f0b95d;
  color:#9a4a00;
}
.heatWarningBadgeV304.alert{
  background:#fff0e8;
  border-color:#ff9b73;
  color:#b83212;
}
.heatWarningBadgeV304.danger{
  background:#fff1f2;
  border-color:#fb7185;
  color:#be123c;
}
@media(max-width:720px){
  .heatWarningBadgeV304{
    display:block;
  }
  .heatWarningBadgeV304 span{
    display:block;
    text-align:left;
    margin-top:4px;
  }
}


/* V305 Weather humidity and estimated heat index */
.weatherValuesV305{
  grid-template-columns:1fr 1fr!important;
}
.weatherValuesV305 > div strong{
  font-size:20px;
}
.weatherValuesV305 > div small{
  display:block;
  margin-top:4px;
  color:#6b7f95;
  font-weight:900;
  font-size:11px;
}
.weatherHeatIndexV305{
  background:#fff7ed!important;
  border:1px solid #fed7aa;
}
.weatherHeatIndexV305 strong{
  color:#c2410c!important;
}
.weatherTimeWideV299{
  grid-column:1 / -1;
}
@media(max-width:720px){
  .weatherValuesV305{
    grid-template-columns:1fr!important;
  }
}


/* V306 Heat table apparent temperature */
.weatherHeatIndexV305 em{
  letter-spacing:-.03em;
}
.weatherHeatIndexV305 strong{
  font-size:19px!important;
}


/* V309: 통합 홈 중복 기능 카드만 제거/숨김 */
.homeModuleGrid{
  display:none!important;
}


/* V310 Chatbot help update */
.safetyBotIntroBubble small{
  display:block;
  margin-top:6px;
  color:#4f6f92;
  font-weight:800;
  line-height:1.35;
}
.safetyBotQuick{
  gap:7px;
}
.safetyBotQuick button{
  white-space:nowrap;
}
.safetyBotGuideBlock ol li{
  margin-bottom:7px;
}


/* V312 activity risk formula */
.activityRiskFormulaV312{
  margin-top:10px;
  padding:10px 12px;
  border-radius:14px;
  background:#eef6ff;
  border:1px solid #c9ddf5;
  color:#0d3d70;
  font-weight:900;
  text-align:center;
}
.activityRiskFormulaV312 b{
  margin-left:8px;
  font-size:16px;
  color:#0b63ce;
}#activityRiskScore[readonly]{
  background:#f5f8fc;
  cursor:not-allowed;
}


/* V313 TBM QR reissue validity note */
.qrReissueNoteV313{
  display:inline-block;
  margin-top:4px;
  color:#b45309;
  font-weight:900;
}


/* V318 Law search AI voice reading */
.lawVoiceToolbarV318{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:12px 14px;
  margin-bottom:14px;
  border:1px solid #cfe0f3;
  border-radius:16px;
  background:#f4f9ff;
}
.lawVoiceToolbarV318 b{
  display:block;
  color:#0f3158;
  font-weight:950;
}
.lawVoiceToolbarV318 span{
  display:block;
  margin-top:3px;
  color:#55708f;
  font-size:13px;
  font-weight:800;
}
.lawCardTop{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
}
.lawVoiceBtnV318{
  border:1px solid #bfd5ee;
  background:#fff;
  color:#145fbd;
  border-radius:999px;
  padding:8px 12px;
  font-weight:950;
  cursor:pointer;
  box-shadow:0 5px 12px rgba(15,49,88,.05);
  white-space:nowrap;
}
.lawVoiceBtnV318:hover{
  background:#eef6ff;
}
.lawVoiceBtnV318.active{
  background:#145fbd;
  color:#fff;
  border-color:#145fbd;
}
.lawVoiceBtnV318.active::before{
  content:"▶ ";
}
@media(max-width:720px){
  .lawVoiceToolbarV318{
    display:block;
  }
  .lawVoiceToolbarV318 button{
    margin-top:10px;
    width:100%;
  }
  .lawCardTop{
    align-items:flex-start;
  }
  .lawVoiceBtnV318{
    padding:7px 10px;
    font-size:12px;
  }
}


/* V319 Law voice language selection */
.lawVoiceControlsV319{
  display:flex;
  align-items:center;
  gap:8px;
  flex-shrink:0;
}
.lawVoiceLangSelectV319{
  display:flex;
  align-items:center;
  gap:8px;
  font-weight:950;
  color:#0f3158;
  white-space:nowrap;
}
.lawVoiceLangSelectV319 span{
  font-size:13px;
}
.lawVoiceLangSelectV319 select{
  min-width:150px;
  border:1px solid #bfd5ee;
  border-radius:12px;
  padding:8px 10px;
  color:#0f3158;
  font-weight:900;
  background:#fff;
}
.lawVoiceBtnV318.loading{
  opacity:.75;
  cursor:wait;
}
@media(max-width:720px){
  .lawVoiceControlsV319{
    display:block;
    margin-top:10px;
  }
  .lawVoiceLangSelectV319{
    display:block;
  }
  .lawVoiceLangSelectV319 select{
    width:100%;
    margin-top:6px;
  }
}


/* V320 Law result expand modal */
.lawExpandRowV320{
  margin-top:14px;
  display:flex;
  justify-content:flex-end;
}
.lawExpandBtnV320{
  border:1px solid #bfd5ee;
  background:#f4f9ff;
  color:#145fbd;
  border-radius:999px;
  padding:8px 14px;
  font-weight:950;
  cursor:pointer;
}
.lawExpandBtnV320:hover{
  background:#eaf3ff;
}
.lawDetailModalV320{
  position:fixed;
  inset:0;
  z-index:9999;
  background:rgba(6,22,38,.48);
  display:flex;
  align-items:center;
  justify-content:center;
  padding:24px;
}
.lawDetailModalV320.hidden{
  display:none!important;
}
.lawDetailPanelV320{
  width:min(880px, 96vw);
  max-height:86vh;
  background:#fff;
  border:1px solid #cfe0f3;
  border-radius:22px;
  box-shadow:0 24px 60px rgba(6,22,38,.22);
  overflow:hidden;
  display:flex;
  flex-direction:column;
}
.lawDetailHeadV320{
  padding:20px 22px 16px;
  border-bottom:1px solid #e2eefb;
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:14px;
  background:linear-gradient(180deg,#f8fbff,#fff);
}
.lawDetailHeadV320 h3{
  margin:10px 0 0;
  font-size:22px;
  color:#061626;
  line-height:1.35;
}
.lawDetailCloseV320{
  border:1px solid #bfd5ee;
  background:#fff;
  color:#145fbd;
  border-radius:12px;
  padding:9px 13px;
  font-weight:950;
  cursor:pointer;
}
.lawDetailContentV320{
  padding:22px;
  overflow:auto;
  font-size:16px;
  line-height:1.9;
  color:#142235;
  white-space:normal;
}
.lawDetailContentV320 mark{
  background:#ffe36a;
  border-radius:4px;
  padding:0 2px;
}
.lawDetailFootV320{
  padding:14px 18px;
  border-top:1px solid #e2eefb;
  background:#f8fbff;
  display:flex;
  justify-content:flex-end;
  gap:8px;
}
@media(max-width:720px){
  .lawDetailModalV320{
    padding:12px;
    align-items:flex-end;
  }
  .lawDetailPanelV320{
    width:100%;
    max-height:88vh;
    border-radius:20px 20px 0 0;
  }
  .lawDetailHeadV320{
    padding:16px;
  }
  .lawDetailHeadV320 h3{
    font-size:18px;
  }
  .lawDetailContentV320{
    padding:16px;
    font-size:15px;
  }
  .lawDetailFootV320{
    display:grid;
    grid-template-columns:1fr 1fr;
  }
}


/* V321 Law media external links */
.lawCardActionBtnsV321{
  display:flex;
  align-items:center;
  gap:8px;
  flex-shrink:0;
}
.lawOpenLinkBtnV321{
  border:1px solid #9ed1bd;
  background:#f0fdf7;
  color:#047857;
  border-radius:999px;
  padding:8px 12px;
  font-weight:950;
  text-decoration:none;
  white-space:nowrap;
}
.lawOpenLinkBtnV321:hover{
  background:#dcfce7;
}
.lawExpandLinkV321{
  text-decoration:none;
  background:#f0fdf7;
  color:#047857;
  border-color:#9ed1bd;
}
@media(max-width:720px){
  .lawCardActionBtnsV321{
    display:grid;
    grid-template-columns:1fr;
    gap:6px;
  }
  .lawOpenLinkBtnV321,
  .lawVoiceBtnV318{
    text-align:center;
  }
}


/* V322 extracted URL material button emphasis */
.lawOpenLinkBtnV321::before,
.lawExpandLinkV321::before{
  content:"🔗 ";
}


/* V325 MSDS reflect product manual selection */
.msdsProductSelectPanelV325{
  margin:12px 0;
  padding:14px;
  border:1px solid #cfe0f3;
  border-radius:16px;
  background:#f8fbff;
  display:grid;
  grid-template-columns:1fr auto;
  gap:10px;
  align-items:end;
}
.msdsProductSelectPanelV325 label{
  display:grid;
  gap:6px;
  font-weight:950;
  color:#0f3158;
}
.msdsProductSelectPanelV325 select{
  width:100%;
  min-height:42px;
  border:1px solid #bfd5ee;
  border-radius:12px;
  padding:9px 11px;
  font-weight:850;
  color:#0f3158;
  background:#fff;
}
.msdsReflectProductListV325{
  display:grid;
  gap:8px;
}
@media(max-width:720px){
  .msdsProductSelectPanelV325{
    grid-template-columns:1fr;
  }
}


/* V326 MSDS product select flow fix */
.msdsReflectBoxPulseV326{
  animation: msdsReflectPulseV326 1.6s ease-in-out 1;
}
@keyframes msdsReflectPulseV326{
  0%{box-shadow:0 0 0 0 rgba(20,95,189,.0);}
  25%{box-shadow:0 0 0 5px rgba(20,95,189,.18);}
  70%{box-shadow:0 0 0 9px rgba(20,95,189,.08);}
  100%{box-shadow:0 0 0 0 rgba(20,95,189,.0);}
}


/* V327 chemical search product select reload */
#reflectProduct option[value=""]{
  color:#6b7f99;
}


/* V329 Occasional risk after-score inputs */
.ocAfterScoreBoxV329{
  grid-column:1 / -1;
  border:1px solid #cfe0f3;
  border-radius:14px;
  background:#f8fbff;
  padding:10px 12px;
}
.ocAfterScoreBoxV329>b{
  display:block;
  color:#0f3158;
  font-weight:950;
  margin-bottom:8px;
}
.ocAfterScoreBoxV329>div{
  display:grid;
  grid-template-columns:repeat(3, minmax(0,1fr));
  gap:8px;
}
.ocAfterScoreBoxV329 label{
  display:grid;
  gap:5px;
}
.ocAfterScoreBoxV329 span{
  font-size:12px;
  color:#46617e;
  font-weight:900;
}
.ocAfterScoreBoxV329 input{
  width:100%;
  border:1px solid #bfd5ee;
  border-radius:10px;
  padding:8px 9px;
  font-weight:900;
  color:#0f3158;
  background:#fff;
}
.ocAfterScoreBoxV329 input[readonly]{
  background:#eef6ff;
}
@media(max-width:720px){
  .ocAfterScoreBoxV329>div{grid-template-columns:1fr;}
}


/* V330 Occasional risk improvement-after score input and print layout */
.ocAfterScoreBoxV330,
.ocAfterScoreBoxV329{
  grid-column:1 / -1;
  border:1px solid #cfe0f3;
  border-radius:14px;
  background:#f8fbff;
  padding:10px 12px;
}
.ocAfterScoreBoxV330>b,
.ocAfterScoreBoxV329>b{
  display:block;
  color:#0f3158;
  font-weight:950;
  margin-bottom:8px;
}
.ocAfterScoreBoxV330>div,
.ocAfterScoreBoxV329>div{
  display:grid;
  grid-template-columns:repeat(3, minmax(0,1fr));
  gap:8px;
}
.ocAfterScoreBoxV330 label,
.ocAfterScoreBoxV329 label{
  display:grid;
  gap:5px;
}
.ocAfterScoreBoxV330 span,
.ocAfterScoreBoxV329 span{
  font-size:12px;
  color:#46617e;
  font-weight:900;
}
.ocAfterScoreBoxV330 input,
.ocAfterScoreBoxV329 input{
  width:100%;
  border:1px solid #bfd5ee;
  border-radius:10px;
  padding:8px 9px;
  font-weight:900;
  color:#0f3158;
  background:#fff;
}
.ocAfterScoreBoxV330 input[readonly],
.ocAfterScoreBoxV329 input[readonly]{
  background:#eef6ff;
}
@media(max-width:720px){
  .ocAfterScoreBoxV330>div,
  .ocAfterScoreBoxV329>div{grid-template-columns:1fr;}
}


/* V331 occasional risk photo score table: before/after scores in one row */
.or-photo-table{
  table-layout:fixed;
}
.or-photo-table th,
.or-photo-table td{
  word-break:keep-all;
}
.or-photo-table .or-photo-cell{
  height:170px;
}


/* V332 occasional risk: keep photo table width inside left area, do not push attendee list */
.or-photo-table{
  width:100%;
  table-layout:fixed;
}
.orPhotoHalfV332{
  width:50%;
}
.orPhotoScoreWrapV332{
  padding:0!important;
}
.orPhotoScoreInnerV332{
  width:100%;
  border-collapse:collapse;
  table-layout:fixed;
  margin:0;
}
.orPhotoScoreInnerV332 th,
.orPhotoScoreInnerV332 td{
  border:1px solid #000;
  text-align:center;
  vertical-align:middle;
  padding:4px 2px;
  font-size:10px;
  line-height:1.15;
}
.orPhotoScoreInnerV332 th{
  background:#d9d9d9;
  font-weight:900;
}
.orPhotoScoreInnerV332 td{
  background:#fff;
}
.or-photo-cell{
  width:50%;
  height:170px;
  text-align:center;
  vertical-align:middle;
}
.or-photo-cell img{
  max-width:96%;
  max-height:160px;
  object-fit:contain;
}


/* V333 occasional execution plan print/preview size adjustment */
.ocRiskLivePreview .or-doc{
  width:1120px;
  min-width:1120px;
  max-width:1120px;
  margin:0 auto;
  background:#fff;
}
#ocRiskPlanPreviewV214 .or-doc{
  transform-origin:top left;
}
.ocRiskLivePreview .or-title td{
  padding:6px 5px;
  font-size:14px;
  line-height:1.25;
}
.ocRiskLivePreview .or-plan-top th,
.ocRiskLivePreview .or-plan-top td{
  font-size:8.5px;
  padding:3px 2px;
  line-height:1.2;
}
.ocRiskLivePreview .or-plan-bottom{
  grid-template-columns:1.75fr 1fr;
  gap:16px;
  align-items:start;
}
.ocRiskLivePreview .or-plan-bottom h3{
  font-size:14px;
  margin:8px 0 6px;
}
.ocRiskLivePreview .or-photo-table{
  width:100%;
  table-layout:fixed;
}
.ocRiskLivePreview .orPhotoHalfV332{
  width:50%;
  font-size:10px;
  padding:4px 2px;
}
.ocRiskLivePreview .orPhotoScoreInnerV332 th,
.ocRiskLivePreview .orPhotoScoreInnerV332 td{
  font-size:8.5px;
  padding:3px 1px;
  line-height:1.1;
}
.ocRiskLivePreview .or-photo-cell{
  height:190px;
  font-size:13px;
}
.ocRiskLivePreview .or-photo-cell img{
  max-width:96%;
  max-height:180px;
  object-fit:contain;
}
.ocRiskLivePreview .or-attend-table{
  width:100%;
  table-layout:fixed;
}
.ocRiskLivePreview .or-attend-table th,
.ocRiskLivePreview .or-attend-table td{
  font-size:9px;
  height:22px;
  padding:2px;
}
.ocRiskLivePreview .or-attend-table img{
  max-height:20px;
  max-width:70px;
  object-fit:contain;
}


/* V334 Occasional risk QR large view and attendee refresh */
.planQrActionsV334{
  display:flex;
  gap:6px;
  flex-wrap:wrap;
  justify-content:flex-start;
  margin:6px 0;
}
.ocQrBigModalV334{
  position:fixed;
  inset:0;
  z-index:99999;
  background:rgba(6,22,38,.48);
  display:flex;
  align-items:center;
  justify-content:center;
  padding:24px;
}
.ocQrBigModalV334.hidden{
  display:none!important;
}
.ocQrBigPanelV334{
  width:min(560px, 94vw);
  background:#fff;
  border:1px solid #cfe0f3;
  border-radius:24px;
  box-shadow:0 24px 70px rgba(6,22,38,.25);
  overflow:hidden;
}
.ocQrBigHeadV334{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:12px;
  padding:18px 20px;
  border-bottom:1px solid #e2eefb;
  background:linear-gradient(180deg,#f8fbff,#fff);
}
.ocQrBigHeadV334 b{
  display:block;
  color:#061626;
  font-size:20px;
  font-weight:950;
}
.ocQrBigHeadV334 span{
  display:block;
  margin-top:5px;
  color:#46617e;
  font-weight:800;
}
.ocQrBigHeadV334 button{
  border:1px solid #bfd5ee;
  background:#fff;
  color:#145fbd;
  border-radius:12px;
  padding:9px 13px;
  font-weight:950;
  cursor:pointer;
}
.ocQrBigBodyV334{
  padding:24px;
  display:grid;
  gap:14px;
  justify-items:center;
}
.ocQrBigBodyV334 img{
  width:min(420px, 78vw);
  height:min(420px, 78vw);
  object-fit:contain;
  border:1px solid #d8e6f5;
  border-radius:20px;
  padding:12px;
  background:#fff;
}
.ocQrBigBodyV334 input{
  width:100%;
  border:1px solid #bfd5ee;
  border-radius:12px;
  padding:11px 12px;
  color:#0f3158;
  font-weight:800;
}
.ocQrBigFootV334{
  padding:14px 18px;
  border-top:1px solid #e2eefb;
  display:flex;
  justify-content:flex-end;
  gap:8px;
  background:#f8fbff;
}
@media(max-width:720px){
  .ocQrBigModalV334{
    padding:12px;
  }
  .ocQrBigPanelV334{
    border-radius:20px;
  }
  .ocQrBigFootV334{
    display:grid;
    grid-template-columns:1fr 1fr;
  }
}
@media print{
  .ocQrBigModalV334{
    display:none!important;
  }
}


/* V335 force QR/action buttons visible in occasional plan cards */
.planQrToolsV222{
  display:flex!important;
  gap:8px!important;
  flex-wrap:wrap!important;
  align-items:center!important;
  margin:10px 0!important;
}
.planQrToolsV222 .btn,
.planQrActionsVisibleV335 .btn{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  min-height:34px!important;
}
.qrBigBtnV335{
  border-color:#14a37f!important;
  color:#08745e!important;
  background:#f0fffb!important;
  font-weight:950!important;
}
.planQrCardV222{
  display:grid!important;
  gap:8px!important;
  justify-items:start!important;
  align-items:start!important;
}
.planQrCardV222 img{
  width:150px!important;
  height:150px!important;
}
.planQrActionsVisibleV335{
  display:flex!important;
  gap:6px!important;
  flex-wrap:wrap!important;
  margin-top:4px!important;
}


/* V336 clean occasional execution plan QR placement */
.ocRiskPlanQrControlV336{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
  align-items:center;
  margin:8px 0 10px;
}
.ocPlanQrSectionCardV336{
  display:grid;
  grid-template-columns:190px minmax(0,1fr);
  gap:14px;
  align-items:center;
  width:100%;
}
.ocPlanQrSectionCardV336 img{
  width:180px;
  height:180px;
  object-fit:contain;
  border:1px solid #d8e6f5;
  border-radius:14px;
  padding:8px;
  background:#fff;
}
.ocPlanQrSectionCardV336 b{
  display:block;
  color:#0f3158;
  font-weight:950;
  font-size:15px;
  margin-bottom:6px;
}
.ocPlanQrSectionCardV336 p{
  margin:0 0 10px;
  color:#46617e;
  font-weight:800;
  line-height:1.35;
}
.ocPlanQrSectionCardV336 .qrUrlInput{
  width:100%;
  max-width:520px;
}
.ocRiskPlanPageV214 .planQrToolsV222,
.ocRiskPlanPageV214 .planQrBoxV222{
  display:none!important;
}
#ocRiskPlanQrBox{
  display:block!important;
}
@media(max-width:720px){
  .ocPlanQrSectionCardV336{
    grid-template-columns:1fr;
    justify-items:start;
  }
}


/* V337 force generated plan QR to render directly under attendee section */
#ocRiskPlanQrBox{
  min-height:140px;
  display:block!important;
}
#ocRiskPlanQrBox .empty{
  display:flex;
  min-height:120px;
  align-items:center;
  justify-content:center;
  border:1px dashed #bfd5ee;
  border-radius:14px;
  background:#f8fbff;
  color:#6b7f99;
  font-weight:850;
}
.ocPlanQrSectionCardV336{
  border:1px dashed #bfd5ee;
  border-radius:16px;
  padding:14px;
  background:#f8fbff;
}


/* V338: force occasional execution plan QR box to appear under the attendee section */
.ocRiskPlanQrBoxForceV338,
#ocRiskPlanQrBox{
  display:block!important;
  visibility:visible!important;
  opacity:1!important;
  width:100%!important;
  min-height:150px!important;
  margin:10px 0 14px!important;
  border:1px dashed #bfd5ee!important;
  border-radius:16px!important;
  background:#f8fbff!important;
  padding:14px!important;
  box-sizing:border-box!important;
}
#ocRiskPlanQrBox.hidden{
  display:block!important;
}
#ocRiskPlanQrBox .empty{
  min-height:120px!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  color:#6b7f99!important;
  font-weight:900!important;
  background:#fff!important;
  border:1px dashed #d8e6f5!important;
  border-radius:12px!important;
}
#ocRiskPlanQrBox .ocPlanQrSectionCardV336{
  display:grid!important;
  grid-template-columns:220px minmax(0,1fr)!important;
  gap:16px!important;
  align-items:center!important;
  border:0!important;
  padding:0!important;
  background:transparent!important;
}
#ocRiskPlanQrBox .ocPlanQrSectionCardV336 img{
  width:220px!important;
  height:220px!important;
  object-fit:contain!important;
  border:1px solid #d8e6f5!important;
  border-radius:16px!important;
  padding:10px!important;
  background:#fff!important;
}
@media(max-width:720px){
  #ocRiskPlanQrBox .ocPlanQrSectionCardV336{
    grid-template-columns:1fr!important;
  }
}


/* V339: per execution-plan QR and attendee management */
.ocRiskPlanQrListV339{
  display:grid;
  gap:12px;
  margin-top:8px;
}
.ocPlanQrItemV339{
  border:1px solid #cfe0f3;
  border-radius:16px;
  background:#fff;
  overflow:hidden;
  box-shadow:0 8px 22px rgba(20,95,189,.06);
}
.ocPlanQrItemHeadV339{
  display:flex;
  justify-content:space-between;
  gap:12px;
  align-items:flex-start;
  padding:12px 14px;
  border-bottom:1px solid #e2eefb;
  background:#f8fbff;
}
.ocPlanQrItemHeadV339 b{
  display:block;
  color:#0f3158;
  font-size:15px;
  font-weight:950;
}
.ocPlanQrItemHeadV339 span{
  display:block;
  margin-top:4px;
  color:#46617e;
  font-size:12px;
  font-weight:800;
}
.ocPlanQrItemActionsV339{
  display:flex;
  flex-wrap:wrap;
  gap:6px;
  justify-content:flex-end;
}
.ocPlanQrItemBodyV339{
  display:grid;
  grid-template-columns:240px minmax(0,1fr);
  gap:12px;
  padding:14px;
}
.ocPlanQrBoxV339{
  border:1px dashed #bfd5ee;
  border-radius:14px;
  background:#f8fbff;
  padding:12px;
  min-height:210px;
  display:grid;
  gap:8px;
  place-items:center;
}
.ocPlanQrBoxV339 img{
  width:180px;
  height:180px;
  object-fit:contain;
  border:1px solid #d8e6f5;
  border-radius:12px;
  padding:8px;
  background:#fff;
}
.ocPlanQrBoxV339 .qrUrlInput{
  width:100%;
  font-size:11px;
}
.ocPlanQrBoxV339 .empty,
.ocRiskPlanQrListV339>.empty{
  color:#6b7f99;
  font-weight:900;
  text-align:center;
  padding:18px;
}
.ocPlanAttendeeBoxV339{
  min-width:0;
}
.ocPlanAttendeeBoxV339>b{
  display:block;
  margin-bottom:8px;
  color:#0f3158;
  font-weight:950;
}
.ocPlanAttendeeBoxV339 table{
  width:100%;
  border-collapse:collapse;
  table-layout:fixed;
  background:#fff;
}
.ocPlanAttendeeBoxV339 th,
.ocPlanAttendeeBoxV339 td{
  border:1px solid #cfe0f3;
  padding:7px 6px;
  font-size:12px;
  text-align:center;
}
.ocPlanAttendeeBoxV339 th{
  background:#eef6ff;
  color:#0f3158;
  font-weight:950;
}
.ocPlanAttendeeBoxV339 .emptyCell{
  color:#6b7f99;
  font-weight:800;
  padding:16px;
}
@media(max-width:900px){
  .ocPlanQrItemHeadV339,
  .ocPlanQrItemBodyV339{
    grid-template-columns:1fr;
    display:grid;
  }
  .ocPlanQrItemActionsV339{
    justify-content:flex-start;
  }
}
@media print{
  .ocRiskPlanQrListV339,
  .ocPlanQrItemV339{
    display:none!important;
  }
}


/* V340 scoped print rules: prevent occasional-risk print CSS from breaking Education/TBM/OSH/Stop prints */
@media print{
  body.ocRiskPrintModeV340{
    -webkit-print-color-adjust:exact;
    print-color-adjust:exact;
  }
  body.ocRiskPrintModeV340 *{
    visibility:hidden;
  }
  body.ocRiskPrintModeV340 #ocRiskPlanPreviewV214,
  body.ocRiskPrintModeV340 #ocRiskPlanPreviewV214 *{
    visibility:visible;
  }
  body.ocRiskPrintModeV340 #ocRiskPlanPreviewV214{
    position:absolute;
    left:0;
    top:0;
    width:100%;
    padding:0!important;
    margin:0!important;
    border:0!important;
    box-shadow:none!important;
    overflow:visible!important;
  }
  body.ocRiskPrintModeV340 #ocRiskPlanPreviewV214 .or-doc{
    width:281mm!important;
    min-width:281mm!important;
    max-width:281mm!important;
    margin:0 auto!important;
    transform:none!important;
  }
  body.ocRiskPrintModeV340 #ocRiskPlanPreviewV214 .or-plan-page{
    page-break-after:always;
    break-after:page;
    margin:0!important;
    padding:0!important;
    border-top:0!important;
  }
  body.ocRiskPrintModeV340 #ocRiskPlanPreviewV214 .or-logo-wrap{
    height:34px!important;
    margin-bottom:2px!important;
  }
  body.ocRiskPrintModeV340 #ocRiskPlanPreviewV214 .or-logo-wrap img{
    width:34px!important;
    height:34px!important;
  }
  body.ocRiskPrintModeV340 #ocRiskPlanPreviewV214 .or-title td{
    font-size:12px!important;
    padding:4px 3px!important;
  }
  body.ocRiskPrintModeV340 #ocRiskPlanPreviewV214 .or-plan-top th,
  body.ocRiskPrintModeV340 #ocRiskPlanPreviewV214 .or-plan-top td{
    font-size:7.2px!important;
    padding:2px 1px!important;
    line-height:1.1!important;
  }
  body.ocRiskPrintModeV340 #ocRiskPlanPreviewV214 .or-plan-bottom{
    display:grid!important;
    grid-template-columns:1.75fr 1fr!important;
    gap:12px!important;
    margin-top:8px!important;
  }
  body.ocRiskPrintModeV340 #ocRiskPlanPreviewV214 .or-plan-bottom h3{
    font-size:12px!important;
    margin:5px 0 4px!important;
  }
  body.ocRiskPrintModeV340 #ocRiskPlanPreviewV214 .or-photo-table{
    width:100%!important;
    table-layout:fixed!important;
  }
  body.ocRiskPrintModeV340 #ocRiskPlanPreviewV214 .orPhotoScoreInnerV332 th,
  body.ocRiskPrintModeV340 #ocRiskPlanPreviewV214 .orPhotoScoreInnerV332 td{
    font-size:7px!important;
    padding:2px 0!important;
    line-height:1.05!important;
  }
  body.ocRiskPrintModeV340 #ocRiskPlanPreviewV214 .or-photo-cell{
    height:56mm!important;
    font-size:11px!important;
  }
  body.ocRiskPrintModeV340 #ocRiskPlanPreviewV214 .or-photo-cell img{
    max-height:53mm!important;
    max-width:96%!important;
    object-fit:contain!important;
  }
  body.ocRiskPrintModeV340 #ocRiskPlanPreviewV214 .or-attend-table th,
  body.ocRiskPrintModeV340 #ocRiskPlanPreviewV214 .or-attend-table td{
    font-size:7.5px!important;
    height:7mm!important;
    padding:1px!important;
  }
  body.ocRiskPrintModeV340 #ocRiskPlanPreviewV214 .or-attend-table img{
    max-height:6mm!important;
    max-width:22mm!important;
    object-fit:contain!important;
  }
}

/* A4 portrait print restoration for regular documents */
@media print{
  body:not(.ocRiskPrintModeV340) .eduDoc,
  body:not(.ocRiskPrintModeV340) .tbmDoc,
  body:not(.ocRiskPrintModeV340) .oshDoc,
  body:not(.ocRiskPrintModeV340) .stopDoc,
  body:not(.ocRiskPrintModeV340) .printDoc,
  body:not(.ocRiskPrintModeV340) .printArea{
    break-inside:avoid;
    page-break-inside:avoid;
  }
}


/* V341 workStop print clone cleanup: never show print-only clone on normal screen */
#workStopPrintOnlyWrap{
  display:none!important;
}

/* V341 scoped workStop print rules: only apply while printWorkStopRequest sets body.workStopPrintModeV341 */
@media print{
  body.workStopPrintModeV341 *{
    visibility:hidden!important;
  }
  body.workStopPrintModeV341 #workStopPrintOnlyWrap,
  body.workStopPrintModeV341 #workStopPrintOnlyWrap *{
    visibility:visible!important;
  }
  body.workStopPrintModeV341 #workStopPrintOnlyWrap{
    display:block!important;
    position:absolute!important;
    left:0!important;
    top:0!important;
    width:100%!important;
    margin:0!important;
    padding:0!important;
    background:#fff!important;
  }
  body.workStopPrintModeV341 #workStopPrintOnlyPage{
    width:190mm!important;
    min-height:260mm!important;
    margin:0 auto!important;
    box-shadow:none!important;
    background:#fff!important;
  }
}


/* V342 remove extra blank print pages for activity/workStop */
#activityPrintOnlyWrap,
#workStopPrintOnlyWrap{
  display:none!important;
}

@media print{
  body.printingActivityOnly,
  body.workStopPrintModeV341{
    margin:0!important;
    padding:0!important;
    background:#fff!important;
    min-height:0!important;
    height:auto!important;
    overflow:visible!important;
  }

  body.printingActivityOnly #activityPrintOnlyWrap{
    display:block!important;
    visibility:visible!important;
    position:absolute!important;
    left:0!important;
    top:0!important;
    width:210mm!important;
    height:auto!important;
    min-height:0!important;
    max-height:none!important;
    margin:0!important;
    padding:0!important;
    background:#fff!important;
    overflow:visible!important;
    page-break-after:auto!important;
    break-after:auto!important;
  }
  body.printingActivityOnly #activityPrintOnlyPage{
    display:block!important;
    visibility:visible!important;
    width:210mm!important;
    min-height:0!important;
    height:auto!important;
    max-height:296mm!important;
    margin:0!important;
    padding:10mm 9mm!important;
    box-shadow:none!important;
    transform:none!important;
    background:#fff!important;
    overflow:hidden!important;
    page-break-after:auto!important;
    break-after:auto!important;
    page-break-inside:avoid!important;
    break-inside:avoid!important;
  }
  body.printingActivityOnly #activityPrintOnlyPage::after,
  body.printingActivityOnly #activityPrintOnlyWrap::after{
    content:none!important;
    display:none!important;
  }

  body.workStopPrintModeV341 #workStopPrintOnlyWrap{
    display:block!important;
    visibility:visible!important;
    position:absolute!important;
    left:0!important;
    top:0!important;
    width:210mm!important;
    height:auto!important;
    min-height:0!important;
    margin:0!important;
    padding:0!important;
    background:#fff!important;
    overflow:visible!important;
    page-break-after:auto!important;
    break-after:auto!important;
  }
  body.workStopPrintModeV341 #workStopPrintOnlyPage{
    display:block!important;
    visibility:visible!important;
    width:190mm!important;
    min-height:0!important;
    height:auto!important;
    max-height:286mm!important;
    margin:0 auto!important;
    padding:0!important;
    box-shadow:none!important;
    background:#fff!important;
    overflow:hidden!important;
    page-break-after:auto!important;
    break-after:auto!important;
    page-break-inside:avoid!important;
    break-inside:avoid!important;
  }
  body.workStopPrintModeV341 #workStopPrintOnlyPage::after,
  body.workStopPrintModeV341 #workStopPrintOnlyWrap::after{
    content:none!important;
    display:none!important;
  }
}

/* V342 ensure print-only wrappers never remain visible after print */
body:not(.printingActivityOnly) #activityPrintOnlyWrap,
body:not(.workStopPrintModeV341) #workStopPrintOnlyWrap{
  display:none!important;
  height:0!important;
  min-height:0!important;
  overflow:hidden!important;
}


/* V343 iframe print isolation for activity/workStop */
.printIframeV343{
  position:fixed!important;
  right:0!important;
  bottom:0!important;
  width:0!important;
  height:0!important;
  border:0!important;
  opacity:0!important;
  pointer-events:none!important;
}
#activityPrintOnlyWrap,
#workStopPrintOnlyWrap{
  display:none!important;
  height:0!important;
  min-height:0!important;
  overflow:hidden!important;
}
@media print{
  body:not(.printingActivityOnly) #activityPrintOnlyWrap,
  body:not(.workStopPrintModeV341) #workStopPrintOnlyWrap{
    display:none!important;
  }
}


/* V344 iframe print visibility fix: iframe content must not inherit legacy print-hide modes */
.printIframeV343{
  position:fixed!important;
  left:-10000px!important;
  top:0!important;
  width:210mm!important;
  height:297mm!important;
  border:0!important;
  opacity:.01!important;
  pointer-events:none!important;
}


/* V345 Education material public QR */
.eduMatQrBtnV345{border-color:#14a37f!important;color:#08745e!important;background:#f0fffb!important;font-weight:950!important}
.eduMaterialQrModalV345{position:fixed;inset:0;z-index:99999;background:rgba(6,22,38,.48);display:flex;align-items:center;justify-content:center;padding:22px}.eduMaterialQrModalV345.hidden{display:none!important}.eduMaterialQrPanelV345{width:min(540px,94vw);background:#fff;border:1px solid #cfe0f3;border-radius:24px;box-shadow:0 24px 70px rgba(6,22,38,.25);overflow:hidden}.eduMaterialQrHeadV345{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;padding:18px 20px;border-bottom:1px solid #e2eefb;background:linear-gradient(180deg,#f8fbff,#fff)}.eduMaterialQrHeadV345 b{display:block;color:#061626;font-size:20px;font-weight:950}.eduMaterialQrHeadV345 span{display:block;margin-top:5px;color:#46617e;font-weight:800}.eduMaterialQrHeadV345 button{border:1px solid #bfd5ee;background:#fff;color:#145fbd;border-radius:12px;padding:9px 13px;font-weight:950;cursor:pointer}.eduMaterialQrBodyV345{padding:24px;display:grid;gap:14px;justify-items:center}.eduMaterialQrBodyV345 img{width:min(360px,78vw);height:min(360px,78vw);object-fit:contain;border:1px solid #d8e6f5;border-radius:20px;padding:12px;background:#fff}.eduMaterialQrBodyV345 input{width:100%;border:1px solid #bfd5ee;border-radius:12px;padding:11px 12px;color:#0f3158;font-weight:800}.eduMaterialQrFootV345{padding:14px 18px;border-top:1px solid #e2eefb;display:flex;justify-content:flex-end;gap:8px;background:#f8fbff}@media(max-width:720px){.eduMaterialQrFootV345{display:grid;grid-template-columns:1fr 1fr}}


/* V346 activity after-photo and after-risk inputs */
.activityPhotoSplitV346{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:14px;
  margin-top:8px;
}
.activityPhotoSlotV346{
  border:1px solid #cfe0f3;
  border-radius:14px;
  padding:12px;
  background:#f8fbff;
  display:grid;
  gap:8px;
}
.activityPhotoSlotV346>b{
  color:#0f3158;
  font-weight:950;
}
.activityPhotoSlotV346 input[type=file]{
  width:100%;
}
.activityPhotoSlotV346 .eduPhotoPreview{
  min-height:120px;
}
.activityDocTable #activityDocAfterPossibility,
.activityDocTable #activityDocAfterSeverity,
.activityDocTable #activityDocAfterRiskScore{
  font-weight:900;
  color:#145fbd;
}
@media(max-width:800px){
  .activityPhotoSplitV346{
    grid-template-columns:1fr;
  }
}


/* V347 compact header: hide only text labels when width is tight, keep functions/buttons alive */
@media (max-width: 1180px){
  .commandStrip{
    padding:6px 10px!important;
    gap:8px!important;
    overflow:hidden!important;
  }
  .commandBrand{
    min-width:0!important;
    display:flex!important;
    align-items:center!important;
    gap:8px!important;
    white-space:nowrap!important;
    overflow:hidden!important;
  }
  .commandBrand strong,
  .commandBrand em{
    display:none!important;
  }
  .commandLabel{
    margin-right:0!important;
    font-size:9px!important;
    max-width:130px!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
    white-space:nowrap!important;
  }
  .commandBadges{
    flex:0 0 auto!important;
    gap:4px!important;
    overflow:hidden!important;
    max-width:calc(100vw - var(--sidebar-w) - 180px)!important;
  }
  .commandBadges span{
    width:30px!important;
    height:26px!important;
    padding:0!important;
    display:inline-flex!important;
    align-items:center!important;
    justify-content:center!important;
    border-radius:8px!important;
    font-size:0!important;
    overflow:hidden!important;
    white-space:nowrap!important;
  }
  .commandBadges span::first-letter{
    font-size:0!important;
  }
  .commandBadges span::after{
    content:attr(data-short);
    font-size:10px!important;
    font-weight:800!important;
    color:rgba(255,255,255,.66)!important;
  }
  .commandBadges span:nth-child(1)::after{content:"MS";}
  .commandBadges span:nth-child(2)::after{content:"법";}
  .commandBadges span:nth-child(3)::after{content:"위";}
  .commandBadges span:nth-child(4)::after{content:"수";}
  .commandBadges span:nth-child(5)::after{content:"교";}
  .commandBadges span:nth-child(6)::after{content:"TB";}
  .commandBadges span:nth-child(7)::after{content:"활";}
  .commandBadges span:nth-child(8)::after{content:"중";}
}
@media (max-width: 980px){
  .commandBadges span{
    width:24px!important;
  }
  .commandLabel{
    max-width:92px!important;
  }
}
@media (max-width: 760px){
  .commandBadges{
    display:none!important;
  }
  .commandLabel{
    display:none!important;
  }
}


/* V348 document archive */
.docArchiveLayoutV348{
  display:grid;
  grid-template-columns:280px minmax(0,1fr);
  gap:16px;
  margin-top:14px;
}
.docArchiveBoardsV348,
.docArchiveMainV348{
  border:1px solid #cfe0f3;
  border-radius:18px;
  background:#fff;
  overflow:hidden;
}
.docArchiveBoardHeadV348{
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:12px 14px;
  background:#f4f9ff;
  border-bottom:1px solid #dceaf8;
}
.docArchiveBoardHeadV348 b,
.docArchiveCurrentV348 b{
  color:#0f3158;
  font-weight:950;
}
.docBoardListV348{
  padding:10px;
  display:grid;
  gap:8px;
  max-height:620px;
  overflow:auto;
}
.docBoardListV348.empty,
.docFileListV348.empty{
  color:#6b7f99;
  font-weight:850;
  text-align:center;
  padding:24px;
}
.docBoardItemV348{
  width:100%;
  border:1px solid #d5e5f6;
  border-radius:14px;
  background:#fff;
  padding:12px;
  text-align:left;
  cursor:pointer;
  display:grid;
  gap:4px;
}
.docBoardItemV348 strong{
  color:#0f3158;
  font-weight:950;
}
.docBoardItemV348 span{
  color:#607895;
  font-size:12px;
  font-weight:800;
}
.docBoardItemV348.active{
  border-color:#1a6fd4;
  background:#eef6ff;
  box-shadow:0 8px 20px rgba(26,111,212,.12);
}
.docArchiveCurrentV348{
  display:flex;
  justify-content:space-between;
  gap:12px;
  align-items:center;
  padding:16px;
  border-bottom:1px solid #dceaf8;
  background:#f8fbff;
}
.docArchiveCurrentV348 p{
  margin:4px 0 0;
  color:#607895;
  font-size:13px;
  font-weight:750;
}
.docArchiveSearchV348{
  margin:12px 16px 0;
}
.docFileListV348{
  padding:16px;
  display:grid;
  gap:10px;
}
.docFileCardV348{
  display:grid;
  grid-template-columns:60px minmax(0,1fr) auto;
  gap:14px;
  align-items:center;
  border:1px solid #cfe0f3;
  border-radius:16px;
  padding:14px;
  background:#fff;
}
.docFileIconV348{
  width:52px;
  height:52px;
  border-radius:16px;
  background:#1a6fd4;
  color:#fff;
  display:flex;
  align-items:center;
  justify-content:center;
  font-weight:950;
  font-size:12px;
}
.docFileMetaV348{
  min-width:0;
}
.docFileMetaV348 b{
  display:block;
  color:#0f3158;
  font-weight:950;
  font-size:15px;
}
.docFileMetaV348 span{
  display:block;
  margin-top:4px;
  color:#607895;
  font-size:12px;
  font-weight:750;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.docFileMetaV348 p{
  margin:6px 0 0;
  color:#243b53;
  font-size:13px;
}
.docFileActionsV348{
  display:flex;
  flex-wrap:wrap;
  gap:6px;
  justify-content:flex-end;
}
.docArchiveModalV348{
  max-width:520px;
}
.docArchiveModalV348 label{
  display:grid;
  gap:6px;
  margin:10px 0;
}
.docArchiveModalV348 label span{
  font-weight:850;
  color:#0f3158;
}
.docArchiveModalV348 textarea{
  min-height:90px;
  resize:vertical;
}
@media(max-width:900px){
  .docArchiveLayoutV348{
    grid-template-columns:1fr;
  }
  .docFileCardV348{
    grid-template-columns:52px minmax(0,1fr);
  }
  .docFileActionsV348{
    grid-column:1 / -1;
    justify-content:flex-start;
  }
}
@media (max-width:1180px){
  .commandBadges span:nth-child(9)::after{content:"서";}
}


/* V349 document archive admin-only */
.adminOnlyV349.hidden{
  display:none!important;
}


/* V352 chatbot center-specific MSDS search */
.safetyBotCenterMsdsV352 p{
  margin:6px 0 10px;
  color:#49637e;
  font-size:13px;
  font-weight:700;
}
.safetyBotCenterBtnsV352{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:7px;
  margin:10px 0;
}
.safetyBotCenterBtnsV352 button{
  border:1px solid #bcd5f3;
  border-radius:12px;
  background:#fff;
  color:#145fbd;
  font-weight:900;
  padding:8px 10px;
  cursor:pointer;
  text-align:center;
}
.safetyBotCenterBtnsV352 button:hover{
  background:#eef6ff;
  border-color:#1a6fd4;
}
.safetyBotCenterMsdsV352 small{
  display:block;
  color:#607895;
  font-weight:700;
  line-height:1.45;
}


/* V364 no app.js touch: MSDS QR visible + Bulk PDF spacing */
#bulkPdf{padding-top:14px !important}
#bulkPdf .bulkPdfHeroV278,
#bulkPdf > .panel:first-child,
#bulkPdf .panel:first-child{padding:22px 18px 18px !important}
#bulkPdf .bulkPdfHeroV278 .eyebrow,
#bulkPdf .eyebrow,
#bulkPdf .sectionKicker{display:block !important;margin:0 0 12px !important;line-height:1.3 !important;letter-spacing:.12em !important}
#bulkPdf .bulkPdfHeroV278 h2,
#bulkPdf .panelHead h2,
#bulkPdf h2{margin:0 0 10px !important;line-height:1.35 !important}
#bulkPdf .bulkPdfHeroV278 p,
#bulkPdf .panelHead p,
#bulkPdf h2 + p{margin:0 !important;line-height:1.55 !important}
#bulkPdf .bulkPdfFilterGridV278{padding:18px 12px 0 !important;gap:14px !important;align-items:end !important;box-sizing:border-box !important}
#bulkPdf .bulkPdfFilterGridV278 label{margin:0 !important;min-width:0 !important}
#bulkPdf .bulkPdfFilterGridV278 label span{display:block !important;margin-bottom:8px !important;line-height:1.25 !important}
#bulkPdf .bulkPdfFilterGridV278 select,
#bulkPdf .bulkPdfFilterGridV278 input{min-height:42px !important}
#bulkPdf .bulkPdfFilterGridV278 .btn{min-height:42px !important}
#bulkPdf .bulkPdfFilterGridV278 + .eduHelpLine,
#bulkPdf .eduHelpLine{margin:14px 12px 0 !important;line-height:1.5 !important}
#bulkPdf #bulkPdfTargetList{margin:14px 12px 18px !important}
.msdsPublicQrInlineBoxV364{margin-top:12px;padding:12px 14px;border:1px solid #b9dbca;border-radius:16px;background:linear-gradient(135deg,#effdf5,#f7fbff);display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.msdsPublicQrInlineBoxV364 .btn{min-width:220px}
.msdsPublicQrInlineBoxV364 span{color:#49637e;font-weight:800;font-size:13px;line-height:1.45}
.msdsPublicQrModalV364{max-width:920px;width:min(920px,calc(100vw - 28px))}
.msdsPublicQrDescV364{margin:0 0 14px;color:#49637e;font-weight:750;line-height:1.45}
.msdsPublicQrGridV364{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;max-height:70vh;overflow:auto;padding:4px}
.msdsPublicQrCardV364{border:1px solid #cfe0f3;border-radius:18px;background:#f8fbff;padding:16px;display:grid;justify-items:center;gap:8px}
.msdsPublicQrCardV364 img{width:180px;height:180px;border:10px solid #fff;border-radius:18px;box-shadow:0 8px 18px rgba(15,49,88,.12)}
.msdsPublicQrCardV364 b{color:#0f3158;font-size:17px;font-weight:950;text-align:center}
.msdsPublicQrCardV364 span{color:#607895;font-weight:800;font-size:12px}
.msdsPublicQrActionsV364{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin-top:4px}
button[onclick*="resetSafetyBot"],button[onclick*="safetyBotReset"],.safetyBotResetBtn,#safetyBotResetBtn{min-width:60px!important;width:auto!important;height:36px!important;padding:0 12px!important;white-space:nowrap!important;word-break:keep-all!important;line-height:1.1!important;font-size:13px!important}
@media(max-width:700px){
  #bulkPdf .bulkPdfHeroV278,#bulkPdf > .panel:first-child,#bulkPdf .panel:first-child{padding:18px 14px 16px !important}
  #bulkPdf .bulkPdfFilterGridV278{padding:16px 10px 0 !important}
  #bulkPdf .bulkPdfFilterGridV278 + .eduHelpLine,#bulkPdf .eduHelpLine,#bulkPdf #bulkPdfTargetList{margin-left:10px !important;margin-right:10px !important}
}


/* V365: command badges hide + mypage spacing + admin video file spacing */
.commandStrip .commandBadges{
  display:none !important;
}
.commandStrip{
  justify-content:flex-start !important;
}

#mypage .myPageHero{
  padding:20px 18px !important;
  align-items:center !important;
  gap:14px !important;
}
#mypage .myPageHero > div{
  min-width:0;
}
#mypage .myPageHero .eyebrow{
  display:block !important;
  margin:0 0 10px !important;
  line-height:1.2 !important;
}
#mypage .myPageHero h3{
  margin:0 0 10px !important;
  line-height:1.35 !important;
}
#mypage .myPageHero p{
  margin:0 !important;
  line-height:1.55 !important;
}

.adminVideoPanelV281 .panelHead{
  padding-bottom:14px !important;
}
.adminVideoGridV281{
  gap:14px !important;
  align-items:start !important;
}
.adminVideoGridV281 label{
  display:grid !important;
  gap:8px !important;
}
.adminVideoGridV281 label span{
  margin:0 !important;
  line-height:1.3 !important;
}
.adminVideoGridV281 label.full{
  margin-top:2px !important;
}
.adminVideoGridV281 input[type="file"]{
  min-height:44px !important;
  padding:10px 12px !important;
}
.adminVideoActionsV281{
  margin-top:2px !important;
}
.adminVideoActionsV281 .eduHelpLine{
  line-height:1.5 !important;
}

@media(max-width:900px){
  #mypage .myPageHero{
    padding:18px 16px !important;
    align-items:flex-start !important;
  }
}


/* V366: modal close button polish for document archive + MSDS public QR */
.modalHead{
  display:flex !important;
  align-items:center !important;
  justify-content:space-between !important;
  gap:12px !important;
  margin-bottom:2px !important;
}
.modalHead h3{
  margin:0 !important;
  line-height:1.35 !important;
}
.modalHead > button{
  flex:0 0 auto !important;
  width:36px !important;
  height:36px !important;
  border:1px solid #bfd5ee !important;
  border-radius:12px !important;
  background:linear-gradient(180deg,#f8fbff,#edf5ff) !important;
  color:#145fbd !important;
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  font-size:22px !important;
  font-weight:900 !important;
  line-height:1 !important;
  cursor:pointer !important;
  box-shadow:0 6px 14px rgba(15,49,88,.08) !important;
  transition:background .15s ease,border-color .15s ease,transform .15s ease,box-shadow .15s ease !important;
}
.modalHead > button:hover{
  background:linear-gradient(180deg,#eef6ff,#e0efff) !important;
  border-color:#1a6fd4 !important;
  transform:translateY(-1px) !important;
  box-shadow:0 10px 18px rgba(20,95,189,.16) !important;
}
.modalHead > button:active{
  transform:translateY(0) !important;
}
.modalHead > button:focus-visible{
  outline:2px solid rgba(26,111,212,.22) !important;
  outline-offset:2px !important;
}
@media(max-width:640px){
  .modalHead > button{
    width:34px !important;
    height:34px !important;
    border-radius:10px !important;
    font-size:20px !important;
  }
}


/* V367: crisper KTO logo presentation on sidebar + login */
.loginBrand{
  gap:18px !important;
  align-items:center !important;
}
.loginBrand img{
  width:84px !important;
  height:auto !important;
  max-width:none !important;
  object-fit:contain !important;
  image-rendering:auto !important;
  filter:drop-shadow(0 6px 14px rgba(0,0,0,.16)) !important;
  transform:translateZ(0);
}
.loginBrand h1{
  font-size:30px !important;
  line-height:1.04 !important;
  letter-spacing:-.6px !important;
  font-weight:900 !important;
  text-rendering:optimizeLegibility;
  -webkit-font-smoothing:antialiased;
}
.loginBrand p{
  font-size:14px !important;
  margin-top:6px !important;
  letter-spacing:.02em !important;
  color:#c2d8ea !important;
  font-weight:700 !important;
}
.sideBrand.sideBrandWordmark{
  gap:14px !important;
  padding:20px 12px 18px !important;
  min-height:110px !important;
}
.sideBrand.sideBrandWordmark .sideBrandSymbol{
  width:68px !important;
  height:auto !important;
  max-width:none !important;
  object-fit:contain !important;
  image-rendering:auto !important;
  filter:drop-shadow(0 8px 18px rgba(0,0,0,.18)) !important;
  transform:translateZ(0);
}
.sideBrand.sideBrandWordmark .sideBrandText{
  text-rendering:optimizeLegibility;
  -webkit-font-smoothing:antialiased;
}
.sideBrand.sideBrandWordmark strong{
  font-size:22px !important;
  line-height:.92 !important;
  letter-spacing:-.6px !important;
  font-weight:950 !important;
}
.sideBrand.sideBrandWordmark span{
  font-size:11.5px !important;
  line-height:1.18 !important;
  letter-spacing:.01em !important;
  color:#d6e7f5 !important;
  font-weight:800 !important;
}
@media (max-width: 900px){
  .loginBrand img{width:72px !important;}
  .loginBrand h1{font-size:26px !important;}
  .loginBrand p{font-size:13px !important;}
}
