﻿html {
  font-size: 14px;
}

@media (min-width: 768px) {
  html {
    font-size: 16px;
  }
}

.btn:focus, .btn:active:focus, .btn-link.nav-link:focus, .form-control:focus, .form-check-input:focus {
  box-shadow: 0 0 0 0.1rem white, 0 0 0 0.25rem #258cfb;
}

html {
  position: relative;
  min-height: 100%;
}

body {
  margin-bottom: 60px;
}

.form-floating > .form-control-plaintext::placeholder, .form-floating > .form-control::placeholder {
  color: var(--bs-secondary-color);
  text-align: end;
}

.form-floating > .form-control-plaintext:focus::placeholder, .form-floating > .form-control:focus::placeholder {
  text-align: start;
}
/* 생산 업무 화면: 왼쪽 메뉴와 오른쪽 작업 영역 */
body { margin: 0; background: #f5f7fb; color: #243247; }
.app-sidebar { position: fixed; inset: 0 auto 0 0; width: 248px; padding: 30px 18px; background: #172b45; color: #fff; overflow-y: auto; display: flex; flex-direction: column; }
.app-brand { color: #fff; font-size: 21px; font-weight: 700; text-decoration: none; padding: 0 12px 30px; display: block; }
.app-brand:hover { color: #fff; }
.app-brand span { display: block; color: #9eb3ce; font-size: 11px; letter-spacing: 2px; margin-top: 9px; }
.menu-label { margin: 24px 12px 10px; font-size: 12px; color: #a6bad3; }
.app-menu { list-style: none; padding: 0; margin: 0; }
.app-menu a, .menu-pending { display: flex; justify-content: space-between; align-items: center; gap: 8px; padding: 13px 12px; border-radius: 8px; font-size: 14px; }
.app-menu a { color: #dce8f6; text-decoration: none; }
.app-menu a:hover { background: #284260; }
.app-menu a.active { background: #3068b3; color: #fff; font-weight: 600; }
.menu-pending { color: #b5c5d9; }
.menu-pending small { font-size: 10px; white-space: nowrap; background: #2c405a; border-radius: 4px; padding: 3px 5px; }
.sidebar-note { margin-top: auto; padding: 40px 12px 0; color: #a6bad3; font-size: 12px; }
.app-workspace { margin-left: 248px; min-width: 0; }
.workspace-header { background: #fff; border-bottom: 1px solid #e0e6ef; padding: 21px 36px; display: flex; justify-content: space-between; gap: 16px; font-size: 14px; }
.workspace-content { padding: 36px; max-width: 1500px; }
h1 { font-size: 28px; font-weight: 700; }
.table > :not(caption) > * > * { padding: 16px; }
.table thead th { background: #edf2f8; color: #52647b; font-size: 13px; white-space: nowrap; }
.card { border-color: #e0e6ef; border-radius: 12px; padding: 28px; }
.skip-link:focus { position: fixed; top: 0; left: 0; z-index: 1100; padding: 12px; background: white; }
@media (max-width: 767.98px) {
  .app-sidebar { position: static; width: 100%; padding: 18px; }
  .app-brand { padding: 0 0 16px; }
  .menu-toggle { align-self: flex-start; }
  .app-workspace { margin-left: 0; }
  .workspace-header { padding: 16px 20px; }
  .workspace-content { padding: 24px 16px; }
  .card { padding: 20px; }
}
.eyebrow { font-size: 11px; font-weight: 700; letter-spacing: 1.5px; color: #526f94; margin-bottom: 10px; }
.metric-grid { display: grid; grid-template-columns: repeat(4,1fr); gap: 18px; }
.metric { background: white; padding: 24px; border: 1px solid #e0e6ef; border-radius: 12px; }
.metric > span { font-size: 13px; color: #64748b; }
.metric strong { display: block; font-size: 36px; margin-top: 14px; }
.metric small { font-size: 14px; font-weight: 400; }
.empty-panel { padding: 48px 24px; text-align: center; background: white; border: 1px dashed #bccbdf; border-radius: 12px; }
.model-summary { display: flex; flex-wrap: wrap; gap: 24px; }
.model-summary div { min-width: 140px; padding-top: 16px; }
.model-summary span { display:block; font-size: 13px; color: #64748b; }
.model-summary strong { display: block; margin-top: 8px; }
.job-progress { display: block; width: 90px; height: 6px; margin-top: 8px; accent-color: #3068b3; }
.process-list { display: grid; gap: 10px; }
.process-card { background: white; border: 1px solid #dce4ee; border-radius: 9px; }
.process-card summary { display: flex; align-items: center; gap: 14px; padding: 16px 20px; cursor: pointer; }
.process-card summary::after { content: '+'; color: #64748b; }
.process-card[open] summary::after { content: '−'; }
.process-number { background: #edf2f8; color: #526f94; border-radius: 6px; padding: 4px 8px; min-width: 30px; text-align: center; font-size: 12px; }
.work-entry { border-top: 1px solid #e0e6ef; padding: 16px 0; }
.work-entry strong { display:block; font-size: 14px; margin-bottom: 8px; }
.preserve-lines { white-space: pre-wrap; overflow-wrap: anywhere; }
@media(max-width:900px) { .metric-grid { grid-template-columns: repeat(2,1fr); } }
@media print { .app-sidebar, .workspace-header, .btn, form { display: none !important; } .app-workspace { margin: 0; } .workspace-content { padding: 0; } .metric-grid { grid-template-columns: repeat(4,1fr); } }
.journal-table { min-width: 1020px; } .journal-table th:nth-child(1) { width: 21%; } .journal-table th:nth-child(2) { width: 30%; } .journal-table th:nth-child(3) { width: 16%; } .journal-table th:nth-child(4) { width: 10%; } .journal-table th:nth-child(5) { width: 17%; }
.work-suggestions { max-height: 220px; overflow-y: auto; border: 1px solid #9fb5d2; border-radius: 6px; background: white; margin-bottom: 8px; min-width: 260px; } .work-option { padding: 9px 12px; cursor: pointer; font-size: 13px; } .work-option:hover, .work-option[aria-selected="true"] { background: #e4efff; color: #154b91; }

.worker-chips { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:8px; }
.worker-chip { display:inline-flex; align-items:center; gap:5px; background:#e6effa; padding:4px 8px; border-radius:16px; white-space:nowrap; }
.worker-chip button { border:0; background:transparent; color:#24578f; }
.worker-suggestions { max-height:200px; overflow-y:auto; background:white; border:1px solid #a4b8d1; border-radius:6px; min-width:240px; }

/* 근무자별 주간 / 월간 스케줄 */
.schedule-scroll { overflow:auto; max-height:75vh; border:1px solid #d8e2ee; border-radius:10px; background:#fff; }
.schedule-table { border-collapse:separate; border-spacing:0; width:100%; font-size:13px; }
.schedule-table th,.schedule-table td { border-right:1px solid #d8e2ee; border-bottom:1px solid #d8e2ee; vertical-align:top; }
.schedule-table thead th { position:sticky; top:0; z-index:2; background:#edf3f9; padding:12px; white-space:nowrap; }
.schedule-table .schedule-worker { position:sticky; left:0; z-index:1; background:#f5f8fc; min-width:130px; padding:14px; }
.schedule-table thead .schedule-worker { z-index:3; }
.schedule-table .schedule-total { min-width:140px; padding:12px; background:#f5f8fc; }
.schedule-total span { display:block; }
.schedule-total hr { margin:8px 0; }
.schedule-cell { display:flex; flex-direction:column; gap:7px; min-height:142px; min-width:148px; padding:12px; color:#203954; text-decoration:none; }
.schedule-cell:hover,.schedule-cell:focus-visible { background:#e6f1ff; outline:2px solid #377bd2; outline-offset:-2px; }
.schedule-table .schedule-saturday { background:#e9f2fc; }
.schedule-table .schedule-sunday { background:#ddebf9; }
.schedule-table .schedule-today { box-shadow:inset 0 0 0 2px #377bd2; }
.schedule-leave { background:#fff0d8; color:#845109; border-radius:6px; padding:3px 6px; align-self:flex-start; }
.schedule-overtime { color:#155fc4; }
.schedule-confirmed { color:#247440; }
.schedule-planned { color:#727c88; }
.schedule-notes { max-width:200px; overflow-wrap:anywhere; }
.schedule-month .schedule-cell { min-width:62px; min-height:114px; padding:8px 5px; align-items:center; }
.schedule-month thead th { padding:8px 5px; text-align:center; }
.schedule-month thead th span { display:block; }
.schedule-month .schedule-worker { min-width:125px; }

/* 생산 현황: 넓은 화면에서 독립적으로 쌓이는 좌우 두 열 */
.production-dashboard-grid { display:grid; grid-template-columns:minmax(0, 1fr); gap:24px; align-items:start; }
.production-dashboard-column { display:flex; flex-direction:column; gap:24px; min-width:0; }
.production-dashboard-column > .card { margin:0 !important; min-width:0; }
.production-dashboard-column .metric-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
.production-dashboard-column .metric { padding:18px; }
.production-dashboard-column .metric strong { font-size:30px; margin-top:8px; }
.dashboard-equipment .table-responsive { max-height:540px; overflow:auto; }
.dashboard-equipment .table { min-width:720px; }
.production-dashboard-column progress { min-width:0; }
@media (min-width:1200px) {
  .production-dashboard-grid { grid-template-columns:minmax(0,1fr) minmax(0,1fr); }
}
@media print {
  .production-dashboard-grid { display:block; }
  .production-dashboard-column { display:block; }
  .production-dashboard-column > * { margin-bottom:16px !important; }
  .dashboard-equipment .table-responsive { max-height:none; overflow:visible; }
  .dashboard-equipment .table { min-width:0; }
}

/* 생산계획 달력 */
.production-calendar { overflow:auto; border:1px solid #dce4ee; border-radius:9px; max-height:460px; background:white; }
.pc-head,.pc-row { display:flex; min-width:max-content; border-bottom:1px solid #e0e6ef; }
.pc-head { position:sticky; top:0; z-index:3; background:#f0f5fb; }
.pc-label { position:sticky; left:0; z-index:2; width:200px; flex:0 0 200px; padding:12px; background:#f3f7fc; border-right:1px solid #dce4ee; font-size:13px; white-space:normal; }
.pc-head .pc-label { z-index:4; }
.pc-label small { display:block; color:#687d94; font-size:11px; margin-top:5px; }
.pc-days,.pc-track { display:grid; grid-template-columns:repeat(var(--days),42px); }
.pc-date { width:42px; text-align:center; padding:7px 0; font-size:12px; border-right:1px solid #e0e6ef; }
.pc-date small { display:block; color:#68809c; font-size:10px; }
.pc-track { position:relative; min-height:64px; }
.pc-cell { grid-row:1; border-right:1px solid #e7edf5; }
.pc-weekend { background:#e4eef9; }
.pc-today { box-shadow:inset 0 -3px #2563eb; color:#1d4ed8; font-weight:700; }
.pc-bar { grid-row:1; align-self:center; z-index:1; margin:7px 2px; border-radius:6px; padding:6px 9px; background:#d9e9ff; border:1px solid #96b9ed; color:#174f99; text-decoration:none; min-width:0; font-size:12px; overflow:hidden; }
.pc-bar span,.pc-bar small { display:block; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.pc-bar:hover { filter:brightness(.96); outline:2px solid currentColor; }
.pc-color-1 { background:#d9f1e8; border-color:#8ccbb4; color:#25694e; }
.pc-color-2 { background:#eee5fc; border-color:#c6a9e7; color:#714ba5; }
.pc-color-3 { background:#fff0d5; border-color:#e5c17e; color:#8b601e; }
.pc-color-4 { background:#d8f0f6; border-color:#8fcbd7; color:#286978; }
.pc-color-5 { background:#ffe7e5; border-color:#e3a9a4; color:#924f49; }
.capacity-results { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; }
.capacity-results > div { background:#f0f6fd; border-radius:8px; padding:14px; }
.capacity-results span { display:block; font-size:12px; color:#587087; margin-bottom:6px; }
.capacity-results strong { font-size:20px; }
.capacity-warning-list { display:flex; flex-wrap:wrap; gap:8px; max-height:180px; overflow:auto; }
.capacity-warning-list > span { background:#fff3db; color:#815e1e; padding:6px 10px; border-radius:6px; font-size:12px; }
.dashboard-heading h1 { font-size:24px; margin-bottom:4px; }
.dashboard-calendar .production-calendar { max-height:280px; }
@media(max-width:767.98px) { .capacity-results { grid-template-columns:repeat(2,minmax(0,1fr)); } .pc-label { width:150px; flex-basis:150px; } }
/* 한 달이 데스크톱 폭에 들어오도록 날짜 칸을 유연하게 배치 */
.pc-head,.pc-row { min-width:904px; }
.pc-label { width:160px; flex-basis:160px; }
.pc-days,.pc-track { flex:1; min-width:0; grid-template-columns:repeat(var(--days),minmax(24px,1fr)); }
.pc-date { width:auto; }
@media(max-width:767.98px) { .pc-label { width:150px; flex-basis:150px; } }

/* Sign-in screen: no operational menus before authentication. */
.login-page .app-workspace { margin-left: 0; }
.login-page .workspace-content { max-width: 560px; margin: 40px auto; padding: 24px; }
.login-page .workspace-header { justify-content: center; }
.login-page .workspace-header > span:last-child { display: none; }
.login-page .workspace-content .card { width: 100%; }

.sidebar-clock { margin: -12px 12px 22px; color: #b9cbe1; font-size: 13px; }
.sidebar-clock time { display: block; margin-top: 4px; color: #fff; font-size: 23px; font-weight: 600; letter-spacing: 1px; font-variant-numeric: tabular-nums; }
@media (max-width: 767.98px) { .sidebar-clock { margin: 0 0 16px; } }

/* Light production workspace, inspired by the supplied dashboard reference. */
:root { --workspace-blue:#2463eb; --workspace-ink:#26334d; --workspace-border:#e8edf5; }
body { background:#f6f8fc; color:var(--workspace-ink); font-family:"Segoe UI","Malgun Gothic",sans-serif; }
.app-sidebar { width:230px; background:#182b45; color:#e4edf9; border-right:1px solid #263c58; padding:26px 16px; z-index:20; }
.app-brand,.app-brand:hover { color:#fff; font-size:20px; letter-spacing:-.6px; }
.app-brand span { color:#a8c3e4; font-size:10px; letter-spacing:2px; }
.sidebar-clock { border:1px solid #3b5270; border-radius:12px; background:#213954; padding:12px; margin:0 0 16px; color:#c0d2e9; font-size:12px; }
.sidebar-clock time { color:#fff; font-size:22px; }
.menu-label { color:#a9bdd7; font-size:10px; letter-spacing:.6px; margin:18px 10px 7px; font-weight:600; }
.app-menu a { color:#dce7f6; font-size:13px; padding:10px 11px; margin:2px 0; justify-content:flex-start; border-radius:8px; transition:background .15s; }
.app-menu a::before { content:""; width:12px; height:12px; border:1.5px solid currentColor; border-radius:3px; opacity:.65; flex-shrink:0; margin-right:3px; }
.app-menu a:hover { color:#fff; background:#294461; }
.app-menu a.active { background:#2b64b3; color:#fff; box-shadow:inset 3px 0 #8ec5ff; }
.app-menu a.active::before { background:#d9ebff; border-color:#d9ebff; opacity:1; }
.app-menu li:empty { display:none; }
.sidebar-note { color:#a9bdd7; font-size:11px; padding:24px 10px 0; }
.app-sidebar .btn-outline-light { color:#e4edf9; border-color:#526985; background:transparent; font-size:12px; }
.app-sidebar .btn-outline-light:hover { color:#fff; background:#294461; }
.app-sidebar a:focus-visible,.app-sidebar button:focus-visible { outline:2px solid #9bcaff; outline-offset:3px; }
.app-sidebar nav > p:has(.btn) { margin:12px 0; }
.app-workspace { margin-left:230px; }
.workspace-header { min-height:70px; padding:13px 28px; align-items:center; border-color:var(--workspace-border); }
.workspace-breadcrumb { font-size:10px; letter-spacing:1px; color:#9aa6b8; display:flex; align-items:center; gap:14px; }
.workspace-breadcrumb strong { color:#50617d; font-size:13px; letter-spacing:0; font-weight:500; }
.workspace-profile { display:flex; align-items:center; gap:10px; font-size:12px; }
.workspace-profile small { display:block; color:#98a2b3; font-size:10px; margin-top:2px; }
.profile-avatar { display:grid; place-items:center; width:34px; height:34px; border-radius:50%; background:#e9efff; color:#456dc2; font-weight:700; }
.workspace-content { max-width:1800px; padding:24px 28px; }
h1 { font-size:25px; letter-spacing:-.7px; }
h2.h5 { font-size:16px; font-weight:650; }
.card { border:1px solid var(--workspace-border); border-radius:14px; box-shadow:0 2px 5px #24345b03; padding:22px; }
.btn { border-radius:7px; font-size:13px; }
.btn-primary { background:#2463eb; border-color:#2463eb; box-shadow:0 3px 8px #2463eb15; }
.form-control,.form-select { border-color:#e0e6ef; border-radius:7px; font-size:13px; min-height:38px; }
label { font-size:12px; color:#67758d; margin-bottom:5px; }
.table thead th { background:#f7f9fd; color:#8190a7; font-weight:600; font-size:11px; }
.table > :not(caption) > * > * { padding:12px; border-color:#edf1f6; }
.table tbody { font-size:13px; }
.dashboard-welcome { padding:24px 26px; background:linear-gradient(110deg,#eaf2ff 0%,#f0f5ff 60%,#e9f7f5 100%); border:1px solid #dfebfa; border-radius:15px; margin-bottom:18px!important; min-height:118px; align-items:center!important; }
.dashboard-welcome .eyebrow { display:block; color:#6a8ab5; font-size:9px; margin-bottom:8px; }
.dashboard-welcome h1 { margin-bottom:8px; }
.dashboard-filters { box-shadow:none; }
.metric-grid { grid-template-columns:repeat(4,minmax(0,1fr)); gap:14px; margin-bottom:20px; }
.metric { padding:19px 21px; border-radius:12px; border:1px solid #e0ecfa; background:linear-gradient(120deg,#eef7ff,#f9fcff); position:relative; }
.metric:nth-child(2) { background:linear-gradient(120deg,#ecf9f2,#f9fdfb); border-color:#dbefe5; }
.metric:nth-child(3) { background:linear-gradient(120deg,#fff7e7,#fffdf8); border-color:#f5e9cd; }
.metric:nth-child(4) { background:linear-gradient(120deg,#f4efff,#fdfaff); border-color:#e9e0f8; }
.metric > span { font-size:11px; font-weight:600; color:#657992; }
.metric strong { font-size:29px; color:#263d62; margin-top:8px; }
.metric small { font-size:12px; color:#92a0b2; }
.production-dashboard-grid { grid-template-columns:minmax(0,1.8fr) minmax(290px,1fr); gap:20px; }
.production-dashboard-column { gap:20px; }
.production-dashboard-column .card { margin-bottom:0!important; }
.production-dashboard-column .card p { font-size:12px; line-height:1.7; }
.production-dashboard-column .card small { font-size:11px; }
.dashboard-calendar { background:#fff; }
.dashboard-calendar h2 { font-size:15px; }
.dashboard-calendar a { font-size:12px; }
.model-summary { gap:14px; }
.model-summary div { min-width:100px; padding-top:8px; }
.model-summary span { font-size:11px; }
.empty-panel { background:#fafcff; border-color:#e0e9f5; padding:32px 18px; }
.mini-calendar { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:5px; text-align:center; }
.mini-weekday { font-size:10px; color:#9aa6b8; padding:7px 0; }
.mini-day { width:30px; height:30px; display:grid; place-items:center; justify-self:center; text-decoration:none; color:#607088; font-size:12px; border-radius:50%; }
.mini-day:hover { background:#edf3ff; color:#2463eb; }
.mini-day.today { box-shadow:inset 0 0 0 1px #93b8f7; }
.mini-day.selected { background:#2463eb; color:#fff; box-shadow:0 3px 8px #2463eb30; }
.login-page .app-workspace { margin-left:0; }
@media(max-width:1100px) { .production-dashboard-grid { grid-template-columns:minmax(0,1fr); } }
@media(max-width:767.98px) {
 .app-sidebar { width:100%; position:static; padding:16px; }
 .app-workspace { margin-left:0; }
 .workspace-content { padding:18px 14px; }
 .workspace-header { padding:12px 16px; }
 .workspace-breadcrumb { gap:7px; }
 .sidebar-clock { display:inline-flex; align-items:center; gap:14px; padding:8px 12px; margin-bottom:10px; }
 .sidebar-clock time { margin:0; font-size:18px; }
 .dashboard-welcome { padding:18px; min-height:100px; }
 .metric-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
 .metric { padding:15px; }
 .workspace-profile { font-size:11px; }
}
@media print { .app-workspace { margin-left:0; } }

/* Semantic menu icons retain the link text and follow the active menu color. */
.app-menu a::before { content:none; }
.menu-icon { width:19px; height:19px; flex:0 0 19px; opacity:.9; }
.app-menu a { gap:11px; }
.app-menu a.active .menu-icon,.app-menu a:hover .menu-icon { opacity:1; }
.sidebar-clock [data-clock-time] { font-size:21px; letter-spacing:.3px; white-space:nowrap; }
.sidebar-clock [data-clock-time24] { margin-top:5px; font-size:12px; font-weight:400; letter-spacing:.4px; color:#c0d2e9; }
@media (max-width:767.98px) {
 .sidebar-clock { display:block; width:fit-content; }
}
.report-equipment-options { max-height:260px; overflow:auto; border:1px solid #dce4ef; border-radius:8px; padding:12px; }
.report-equipment-option { display:block; padding:6px; }
.report-equipment-option[hidden] { display:none; }
.report-comparison { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; }
.report-photo-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.report-photo-grid img { width:100%; height:220px; object-fit:contain; background:#f0f3f8; border-radius:6px; }
.report-photo-grid figure { margin:0; }
.report-heading { color:#17669b; border-bottom:2px solid #4479bb; padding-bottom:16px; }
.report-metadata { display:grid; grid-template-columns:140px 1fr 140px 1fr; border-top:1px solid #b6c4d9; border-left:1px solid #b6c4d9; }
.report-metadata dt,.report-metadata dd { padding:10px; margin:0; border-right:1px solid #b6c4d9; border-bottom:1px solid #b6c4d9; overflow-wrap:anywhere; }
.report-metadata dt { background:#edf2fa; }
.change-report .report-comparison h2,.report-section-heading { background:#4775b6; color:white; font-size:18px; padding:10px; text-align:center; margin-top:16px; }
.change-report .report-comparison section > p { padding:10px; }
.report-subtitle { padding:10px; background:#e4ebf6; font-size:14px; }
.report-sample-image { width:100%; height:auto; }
@media(max-width:767.98px){.report-comparison { grid-template-columns:1fr; }.report-metadata { grid-template-columns:110px 1fr; }.report-photo-grid img { height:170px; }}
@media print {.report-toolbar { display:none!important; }.change-report { border:0; padding:0; box-shadow:none; }.report-comparison { grid-template-columns:repeat(2,minmax(0,1fr)); }.report-metadata { grid-template-columns:100px 1fr 100px 1fr; font-size:11px; }.report-photo-grid img { height:180px; break-inside:avoid; }.report-heading { font-size:22px; }.report-section-heading { break-after:avoid; } .change-report { print-color-adjust:exact; }}
.report-paste-zone { border:2px dashed #9cb7dc; border-radius:10px; padding:22px 14px; background:#f5f9ff; text-align:center; cursor:pointer; }
.report-paste-zone strong,.report-paste-zone span,.report-paste-zone small { display:block; }
.report-paste-zone span { margin:8px 0; color:#2463eb; }
.report-paste-zone small { color:#60738e; }
.report-paste-zone:focus { outline:3px solid #2463eb; outline-offset:2px; background:#eaf3ff; }
/* Readable screen typography and separated equipment selection controls. */
@media screen {
  body { font-size: 17px; }
  .app-menu a, .menu-pending { font-size: 15px; }
  .menu-label, .sidebar-note, .app-brand span { font-size: 12px; }
  .workspace-breadcrumb, .workspace-profile small { font-size: 12px; }
  .workspace-breadcrumb strong, .workspace-profile { font-size: 15px; }
  .btn, .form-control, .form-select { font-size: 15px; }
  label, .app-sidebar .btn-outline-light { font-size: 14px; }
  .table thead th { font-size: 14px; }
  .table tbody { font-size: 16px; }
  .table > :not(caption) > * > * { padding: 14px; }
  h2.h5 { font-size: 18px; }
  .metric > span, .model-summary span { font-size: 14px; }
  .metric small, .production-dashboard-column .card small { font-size: 13px; }
  .production-dashboard-column .card p { font-size: 14px; }
  .dashboard-calendar h2 { font-size: 17px; }
  .dashboard-calendar a, .work-option, .schedule-table, .pc-label { font-size: 14px; }
  .pc-date, .pc-bar { font-size: 14px; }
  .pc-date small, .pc-label small { font-size: 12px; }
  .equipment-selection { display: inline-flex; align-items: center; gap: 22px; white-space: nowrap; }
  .equipment-selection input[type="checkbox"] { width: 20px; height: 20px; margin: 0; flex: 0 0 20px; cursor: pointer; }
}
@media screen {
  .shipment-table { min-width: 900px; text-align: center; }
  .shipment-table thead th { font-size: 16px; color: #334155; text-align: center; }
  .shipment-table tbody { font-size: 18px; }
  .shipment-table td, .shipment-table th { vertical-align: middle; }
  .shipment-table tbody td { padding: 12px 16px; }
  .shipment-table td[rowspan] { font-weight: 600; }
  .shipment-table a { font-weight: 600; white-space: nowrap; }
  .shipment-status { font-size: 16px; font-weight: 600; white-space: nowrap; }
  .shipment-table tfoot { font-size: 18px; background: #f7f9fd; }
}
/* Clear boundaries for shipment rows and merged cells. */
.shipment-table { border: 2px solid #718096; }
.shipment-table > :not(caption) > * > * { border: 1px solid #94a3b8; }
.shipment-table thead th { border-bottom: 2px solid #718096; background: #eaf0f7; }
.shipment-table tfoot th, .shipment-table tfoot td { border-top: 2px solid #718096; }

.shipment-model-counts { display:grid; grid-template-columns:repeat(auto-fit,minmax(165px,1fr)); gap:12px; }
.shipment-model-count { border:1px solid #bccbde; border-radius:8px; padding:16px; background:#f8faff; }
.shipment-model-count > span { display:block; color:#334155; font-size:16px; font-weight:600; overflow-wrap:anywhere; }
.shipment-model-count strong { display:block; margin-top:8px; font-size:26px; color:#163d71; }
.shipment-model-count small { font-size:16px; font-weight:400; }
.shipment-model-total { background:#e8f0ff; border-color:#739ad8; }
a.shipment-model-count { text-decoration:none; }
a.shipment-model-count:hover { background:#edf3ff; border-color:#2563eb; }
a.shipment-model-count.is-selected { border:2px solid #2563eb; padding:15px; background:#e8f0ff; }
a.shipment-model-count:focus-visible { outline:3px solid #2563eb; outline-offset:3px; }
.report-list-table { table-layout:fixed; min-width:1000px; border:1px solid #94a3b8; }
.report-list-table > :not(caption) > * > * { border:1px solid #b4c0ce; vertical-align:middle; padding:14px; text-align:center; }
.report-list-table thead th { color:#334155; background:#eaf0f7; font-size:15px; }
.report-list-table tbody td { font-size:16px; }
.report-list-table td:nth-child(2), .report-list-table td:nth-child(5) { white-space:nowrap; }
.report-list-table td:nth-child(3) { text-align:left; overflow-wrap:anywhere; }
.report-list-table td:nth-child(4), .report-list-table td:nth-child(6) { word-break:keep-all; overflow-wrap:anywhere; }
.report-list-table tbody tr:hover { background:#f2f6fc; }
.model-summary-more > summary { cursor:pointer; color:#2458a0; font-weight:600; padding:10px 14px; border:1px solid #bccbde; border-radius:8px; list-style:none; text-align:center; }
.model-summary-more > summary::-webkit-details-marker { display:none; }
.model-summary-arrow { display:inline-block; margin-left:8px; }
.model-summary-more[open] .model-summary-arrow { transform:rotate(180deg); }
.shipment-table .shipment-row-number { min-width:64px; font-weight:600; color:#475569; background:#f3f6fa; font-variant-numeric:tabular-nums; }
.model-autocomplete { position:absolute; left:8px; right:8px; z-index:30; max-height:260px; overflow-y:auto; background:#fff; border:1px solid #8aa6cc; border-radius:6px; box-shadow:0 6px 16px #17365b26; }
.model-autocomplete [role="option"] { padding:10px 14px; font-size:16px; cursor:pointer; }
.model-autocomplete [role="option"]:hover, .model-autocomplete [aria-selected="true"] { background:#e6efff; color:#174c9b; }
.shipment-chart-legend { display:flex; gap:18px; flex-wrap:wrap; color:#475569; font-size:14px; }
.shipment-chart-legend i { display:inline-block; width:12px; height:12px; border-radius:3px; margin-right:6px; }
.shipment-chart-legend .completed,.shipment-chart-bar.completed { background:#2563eb; }
.shipment-chart-legend .waiting,.shipment-chart-bar.waiting { background:#d97706; }
.shipment-chart-row { display:grid; grid-template-columns:170px minmax(0,1fr); gap:18px; align-items:center; border-bottom:1px solid #dbe3ed; padding:16px 0; }
.shipment-chart-model { overflow-wrap:anywhere; }
.shipment-chart-series { display:grid; gap:10px; }
.shipment-chart-link { display:grid; grid-template-columns:80px minmax(0,1fr) 95px; align-items:center; gap:12px; color:#334155; text-decoration:none; font-size:15px; }
.shipment-chart-link > strong { text-align:right; font-variant-numeric:tabular-nums; }
.shipment-chart-track { display:block; height:18px; border-radius:4px; background:#edf1f6; overflow:hidden; }
.shipment-chart-bar { display:block; height:100%; border-radius:4px; }
.shipment-chart-link:hover { color:#174c9b; text-decoration:underline; }
.shipment-chart-link:focus-visible { outline:3px solid #2563eb; outline-offset:4px; }
@media(max-width:600px){.shipment-chart-row { grid-template-columns:1fr; gap:10px; }.shipment-chart-link { grid-template-columns:68px minmax(0,1fr) 80px; gap:8px; font-size:14px; }}
.shipment-donut-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
.shipment-donut-card { display:flex; align-items:center; gap:20px; padding:20px; border:1px solid #c5d2e3; border-radius:12px; background:#fafcff; min-width:0; }
.shipment-donut-card.is-selected { border:2px solid #2563eb; padding:19px; background:#eef4ff; }
.shipment-donut { width:164px; height:164px; flex:0 0 164px; border-radius:50%; display:grid; place-items:center; text-decoration:none; color:#163d71; }
.shipment-donut:hover { box-shadow:0 0 0 4px #dbeafe; }
.shipment-donut:focus-visible { outline:3px solid #1d4ed8; outline-offset:4px; }
.shipment-donut-center { width:124px; height:124px; border-radius:50%; background:#fff; display:flex; flex-direction:column; justify-content:center; align-items:center; text-align:center; padding:8px; }
.shipment-donut-center > span { font-size:14px; font-weight:600; overflow-wrap:anywhere; }
.shipment-donut-center strong { font-size:28px; font-variant-numeric:tabular-nums; }
.shipment-donut-center small { font-size:14px; }
.shipment-donut-legend { list-style:none; padding:0; margin:0; flex:1; min-width:0; }
.shipment-donut-legend li { display:flex; justify-content:space-between; gap:10px; flex-wrap:wrap; padding:7px 0; border-bottom:1px solid #e2e8f0; font-size:14px; }
.donut-key { display:flex; align-items:center; gap:7px; overflow-wrap:anywhere; }
.donut-key i { width:10px; height:10px; border-radius:3px; flex:0 0 10px; }
.shipment-donut-legend small { color:#64748b; }
@media(max-width:1100px){.shipment-donut-grid { grid-template-columns:1fr; }}
@media(max-width:460px){.shipment-donut-card { flex-direction:column; }.shipment-donut-legend { width:100%; }}
.selected-shipment-chart { max-width:760px; }
.selected-shipment-chart > summary { padding:10px 12px; cursor:pointer; color:#2458a0; font-weight:600; border:1px solid #bccbde; border-radius:8px; }
/* Compact shipment rows while preserving readable type. */
.shipment-table tbody td { padding:6px 10px; line-height:1.4; }
.shipment-fab-cell { display:inline-flex; align-items:center; justify-content:center; gap:10px; }
.shipment-table a.shipment-fab-edit { font-size:13px; font-weight:400; white-space:nowrap; padding:2px 4px; color:#52647b; }
.shipment-table a.shipment-fab-edit:focus-visible { outline:2px solid #2563eb; outline-offset:2px; }
.shipment-serial-actions { display:inline-flex; align-items:center; gap:12px; white-space:nowrap; }
/* Compact workforce schedule; keep daily entries and both totals visible. */
.schedule-cell { min-height:76px; padding:8px 10px; gap:4px; }
.schedule-month .schedule-cell { min-height:68px; padding:6px 5px; }
.schedule-table .schedule-worker { padding:8px 10px; }
.schedule-table .schedule-total { min-width:190px; padding:6px 8px; }
.schedule-table .schedule-hours-summary { width:100%; border-collapse:collapse; font-size:13px; }
.schedule-table .schedule-hours-summary th,.schedule-table .schedule-hours-summary td { position:static; padding:3px 5px; text-align:right; white-space:nowrap; border:0; background:transparent; line-height:1.4; }
.schedule-table .schedule-hours-summary th:first-child { text-align:left; }
.schedule-table .schedule-hours-summary tbody tr:last-child { border-top:1px solid #cbd5e1; }
.value-date { color:#174da6; font-weight:600; white-space:nowrap; }
.value-missing,.state-waiting { color:#854600!important; background:#fff1d6; border:1px solid #e4c58d; }
.state-complete { color:#09603d!important; background:#e5f5eb; border:1px solid #a9d6ba; }
.state-making { color:#174da6!important; background:#eaf1ff; border:1px solid #b4c9ed; }
.value-missing,.state-waiting,.state-complete,.state-making { display:inline-block; padding:2px 7px; border-radius:5px; font-weight:600; white-space:nowrap; }
.worker-month-calendar { table-layout:fixed; min-width:980px; }
.worker-month-calendar th { text-align:center; }
.worker-month-calendar td { height:150px; vertical-align:top; padding:12px; }
.worker-month-calendar .calendar-weekend { background:#f1f5fb; }
.worker-month-calendar .calendar-outside { background:#e9edf3; }
.worker-month-calendar .calendar-today { outline:2px solid #2563eb; outline-offset:-2px; }
.calendar-day-link { display:block; }
#attendance-editor { width:min(900px,95vw); max-height:90vh; border:1px solid #b7c7df; border-radius:14px; padding:24px; color:#19314f; }
#attendance-editor::backdrop { background:rgba(15,30,50,.45); }
#attendance-editor .card { border:0; padding:0; }
.dashboard-summary-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(155px,1fr)); gap:12px; }
.dashboard-summary { padding:18px; text-decoration:none; color:#203c62; min-height:108px; }
.dashboard-summary strong { display:block; font-size:27px; margin-top:10px; }
a.dashboard-summary:hover { background:#eef4ff; border-color:#769bdb; }
.production-header { display:flex; justify-content:space-between; gap:24px; flex-wrap:wrap; }
.production-header-title { flex:0 1 310px; }
.production-header-search { margin-left:auto; flex:1 1 650px; max-width:900px; }
.production-filter-fields { display:grid; grid-template-columns:minmax(120px,1fr) minmax(140px,1fr) minmax(155px,1fr) auto; gap:10px; align-items:end; }
.production-filter-actions { display:flex; gap:6px; white-space:nowrap; }
@media(max-width:767px) { .production-header-search { width:100%; max-width:none; } .production-filter-fields { grid-template-columns:repeat(2,minmax(0,1fr)); } }
.production-overview-pair { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:18px; align-items:stretch; }
.production-overview-pair>.card { min-width:0; }
.production-month-grid { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); border-top:1px solid #c7d3e5; border-left:1px solid #c7d3e5; }
.production-month-heading { text-align:center; background:#edf3fb; padding:6px 0; font-size:13px; font-weight:600; border-right:1px solid #c7d3e5; border-bottom:1px solid #c7d3e5; }
.production-month-day { min-height:64px; padding:5px; border-right:1px solid #c7d3e5; border-bottom:1px solid #c7d3e5; overflow:hidden; }
.production-month-day>strong { display:block; font-size:13px; }
.production-month-day.weekend { background:#f4f7fc; }
.production-month-day.outside { background:#edf0f5; }
.production-month-day.today { outline:2px solid #2563eb; outline-offset:-2px; }
.production-month-plan,.production-month-memo { display:block; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; font-size:11px; margin-top:3px; padding:1px 3px; border-radius:3px; }
.production-month-plan { background:#e5efff; color:#184ca4; }
.production-month-memo { background:#fff0d5; color:#794600; }
.production-expanded-schedule summary { cursor:pointer; }
@media(max-width:1000px) { .production-overview-pair { grid-template-columns:1fr; } }
.status-page-header { display:grid; grid-template-columns:minmax(240px,.8fr) minmax(0,1.5fr); align-items:center; gap:24px; margin-bottom:20px; padding:20px; background:#f0f5fc; border:1px solid #dce6f3; border-radius:14px; }
.status-page-title,.status-page-query { min-width:0; }
.status-page-title>div { flex-wrap:wrap; gap:10px; }
.status-page-title h1 { font-size:24px; }
.status-page-title p { margin-bottom:0; }
.status-page-query form { margin-bottom:0!important; }
.status-page-query .row { align-items:end; }
.status-page-query .row>[class*="col-md"] { flex:1 1 130px; width:auto; }
.status-two-columns { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; align-items:start; margin-bottom:18px; }
.status-two-columns>* { min-width:0; margin-top:0!important; margin-bottom:0!important; }
.status-two-columns .table { font-size:15px; }
.status-summary-pair .dashboard-summary-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
.shipment-total-three { display:grid!important; grid-template-columns:repeat(3,minmax(0,1fr))!important; }
.shipment-total-four { display:grid!important; grid-template-columns:repeat(4,minmax(0,1fr))!important; }
@media(max-width:800px){.shipment-total-four{grid-template-columns:repeat(2,minmax(0,1fr))!important;}}
@media(max-width:540px){.shipment-total-four{grid-template-columns:1fr!important;}}
.status-two-columns .shipment-model-counts { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); }
.status-two-columns .shipment-model-count { min-width:0; }
@media(max-width:1050px) { .status-page-header { grid-template-columns:1fr; } .status-two-columns { grid-template-columns:1fr; } }
@media(max-width:540px) { .shipment-total-three { grid-template-columns:1fr!important; } }
/* Consistent hierarchy for overview screens: title, primary comparison, supporting detail. */
.production-header,.status-page-header { background:#fff; border:1px solid #d7e0ed; border-top:3px solid #315e9a; box-shadow:none; padding:20px 22px; }
.production-header h1,.status-page-title h1 { font-size:25px; letter-spacing:-.6px; color:#193452; }
.production-overview-pair { gap:18px; }
.production-overview-pair h2 { font-size:18px; font-weight:700; }
.production-overview-pair .table th { background:#f1f5fa; color:#37506d; }
.production-overview-pair .table tbody th { background:#fff; color:#243d59; }
.production-overview-pair .table td,.production-overview-pair .table th { padding:13px 12px; border-color:#d6dfeb; }
.production-quantity { text-align:right; font-size:22px; font-weight:700; font-variant-numeric:tabular-nums; }
.production-quantity small { font-size:12px; font-weight:400; }
.quantity-zero { color:#8491a2; font-size:18px; font-weight:400; }
.quantity-making { color:#215cad; }
.quantity-waiting { color:#986015; }
.quantity-complete { color:#19704c; }
.dashboard-help { font-size:13px; color:#5d6d80; }
.dashboard-help summary { cursor:pointer; width:fit-content; }
.dashboard-help p { margin:8px 0 0; }
.dashboard-progress { margin-bottom:18px; }
.dashboard-progress>summary { cursor:pointer; margin-bottom:0; }
.dashboard-progress[open]>summary { margin-bottom:14px; }
.dashboard-equipment { margin-bottom:18px; }
.dashboard-summary { border-top:3px solid #cad9ed; }
.dashboard-summary span { font-size:14px; font-weight:600; color:#47607b; }
.dashboard-summary strong { font-variant-numeric:tabular-nums; }
.status-two-columns>.card { box-shadow:none; }
/* Production overview: restrained operational dashboard. */
.production-overview-page { --overview-ink:#20374f; --overview-muted:#65778b; }
.production-overview-page .production-header { padding:8px 0 23px; border:0; border-radius:0; background:transparent; box-shadow:none; gap:22px; }
.production-overview-page .production-header h1 { font-size:30px; font-weight:750; letter-spacing:-1px; margin-bottom:7px; }
.overview-subtitle { color:#65778b; font-size:14px; margin:0; }
.production-overview-page .production-header-title { flex-basis:285px; }
.production-overview-page .production-header-search { max-width:860px; }
.production-overview-page .production-filter-fields label { font-size:12px; font-weight:600; color:#586d84; margin-bottom:6px; }
.production-overview-page .production-filter-fields .form-control,.production-overview-page .production-filter-fields .form-select { background:#fff; border-color:#cad6e4; min-height:40px; font-size:14px; }
.production-overview-page .card { border:1px solid #dce4ee; border-radius:12px; box-shadow:0 3px 12px #1c355508; padding:22px!important; }
.production-overview-page .production-overview-pair { grid-template-columns:minmax(0,1.08fr) minmax(0,1fr); gap:20px; }
.overview-panel-heading { display:flex; align-items:center; justify-content:space-between; gap:14px; margin-bottom:18px; }
.overview-section-label { display:block; font-size:11px; color:#72839a; letter-spacing:.5px; font-weight:650; margin-bottom:5px; }
.overview-panel-heading h2 { color:#20374f; font-size:19px; font-weight:700; margin:0; }
.overview-count-pill { padding:5px 10px; border-radius:6px; background:#edf3fa; color:#4c6888; font-size:12px; white-space:nowrap; }
.production-overview-page .overview-model-panel .table { margin-bottom:0; border-color:transparent; }
.production-overview-page .overview-model-panel .table th,.production-overview-page .overview-model-panel .table td { border-width:0 0 1px; border-color:#e2e8f1; padding:15px 10px; }
.production-overview-page .overview-model-panel .table thead th { font-size:12px; background:#f4f7fb; color:#53677e; white-space:nowrap; }
.production-overview-page .overview-model-panel .table thead th:not(:first-child) { text-align:right; }
.overview-model-name { display:block; font-size:15px; letter-spacing:.1px; }
.overview-model-total { display:block; font-size:11px; font-weight:400; color:#7e8da0; margin-top:3px; }
.status-dot { display:inline-block; width:6px; height:6px; border-radius:50%; margin-right:5px; vertical-align:middle; }
.status-dot.making { background:#377be5; }.status-dot.waiting { background:#d99b35; }.status-dot.complete { background:#299975; }
.production-overview-page .production-quantity { font-size:25px; }.production-overview-page .quantity-zero { font-size:20px; color:#a0adbb; }
.production-overview-page .production-month-grid { border:0; gap:4px; }
.production-overview-page .production-month-heading { background:transparent; border:0; color:#7e8da0; padding:5px 0 9px; font-size:12px; }
.production-overview-page .production-month-day { border:1px solid #e6ebf2; border-radius:6px; min-height:65px; background:#fff; padding:6px; }
.production-overview-page .production-month-day.weekend { background:#f6f8fc; }
.production-overview-page .production-month-day.outside { background:transparent; border-color:transparent; }
.production-overview-page .production-month-day.today { outline:0; border-color:#377be5; background:#edf4ff; box-shadow:inset 0 0 0 1px #377be5; }
.production-overview-page .production-month-day.today>strong { color:#2468c6; }
.production-overview-page .production-expanded-schedule,.production-overview-page .dashboard-progress { padding:14px 20px!important; box-shadow:none; }
.production-overview-page summary { font-size:14px!important; }
.overview-text-link { font-size:13px; text-decoration:none; white-space:nowrap; }
.overview-equipment-table { margin-bottom:10px; }
.overview-equipment-table th { font-size:12px; color:#6c7e93; background:#f5f8fc; border-bottom:1px solid #dbe4ee; }
.overview-equipment-table td { font-size:14px; padding:13px 10px; vertical-align:middle; border-bottom-color:#e8edf4; }
.overview-equipment-table a { font-weight:600; text-decoration:none; }
.overview-muted { color:#718297; font-size:12px; }
.overview-empty { min-height:110px; display:flex; flex-direction:column; justify-content:center; align-items:center; gap:8px; background:#f7f9fc; border-radius:8px; }
.overview-empty strong { font-size:15px; }.overview-empty span { color:#718297; font-size:13px; }
@media(max-width:1100px){.production-overview-page .production-overview-pair {grid-template-columns:1fr;} }
@media(max-width:600px){.production-overview-page .card {padding:15px!important;} .production-overview-page .production-header h1 {font-size:25px;} }

/* Shared spacing for lists; calendar grids retain their date-cell sizing. */
.table:not(.worker-month-calendar) > :not(caption) > * > * {
    padding:10px 12px;
    vertical-align:middle;
    line-height:1.45;
}
.table:not(.worker-month-calendar) thead th { font-size:14px; }
.table:not(.worker-month-calendar) tbody { font-size:16px; }
.table:not(.worker-month-calendar) td { overflow-wrap:break-word; }
.equipment-location-fields { display:grid; grid-template-columns:minmax(0,1fr) 7.5em; gap:6px; align-items:center; }
.equipment-location-fields > * { min-width:0; }
.test-record-table { min-width:1550px; }
.model-name { font-size:19px; font-weight:700; line-height:1.4; }
.shipment-notes { text-align:left; font-size:15px; }
.shipment-notes > div { white-space:pre-wrap; overflow-wrap:anywhere; max-height:110px; overflow:auto; line-height:1.5; }
a[data-stock-colored],span[data-stock-colored] { display:inline-block; background:var(--stock-color); color:var(--stock-ink)!important; border:1px solid var(--stock-color); border-radius:6px; padding:3px 8px; font-weight:700; }
a[data-stock-colored]:hover { text-decoration:underline; outline:2px solid #7388a1; outline-offset:2px; }
td[data-stock-colored] .equipment-location-fields > div > input { background:var(--stock-color); color:var(--stock-ink); border-color:var(--stock-color); font-weight:600; }
.stock-color-item strong { min-width:105px; }
.stock-color-item input[type="color"] { width:46px; min-width:46px; height:34px; padding:3px; cursor:pointer; }
.test-table-search { background:#e3edfa; border:1px solid #a7bdd8; border-bottom:3px solid #6888b0; border-radius:8px; padding:14px 16px; }
.test-table-search label { min-width:240px; color:#294d79; font-weight:600; }
.test-table-search .form-control { background:#fff; border-color:#8ca7ca; }
.test-record-table thead th { min-width:140px; white-space:nowrap; }
.test-record-table .form-control,.test-record-table .form-select { min-width:125px; font-size:14px; }
.equipment-location-fields .list-group { min-width:240px; }
/* Clearly separate search controls from editable equipment and dashboard results. */
.equipment-management-table,.shipment-balanced-table { table-layout:fixed; width:100%; min-width:1280px; }
.equipment-management-table > :not(caption) > * > *,
.shipment-balanced-table > :not(caption) > * > * { padding:9px 12px; vertical-align:middle; line-height:1.45; }
.equipment-management-table thead th,.shipment-balanced-table thead th { font-size:15px; }
.equipment-management-table tbody,.shipment-balanced-table tbody { font-size:17px; }
.equipment-management-table tbody td.model-name,
.shipment-balanced-table tbody td.model-name { font-size:22px; font-weight:700; line-height:1.4; }
.equipment-management-table .form-control,.equipment-management-table .form-select { width:100%; min-width:0; font-size:16px; }
.equipment-management-table .equipment-selection > a,
.shipment-balanced-table .shipment-serial-actions > a:first-child,
.shipment-balanced-table tbody td > a:not(.shipment-fab-edit) { font-size:19px; font-weight:700; }
.equipment-management-table .badge,.shipment-balanced-table .shipment-status { font-size:15px; }
.equipment-management-table th,.equipment-management-table td { overflow-wrap:anywhere; }
.equipment-management-table .equipment-selection { gap:16px; }
.equipment-management-table th:last-child,.equipment-management-table td:last-child { text-align:center; }
.shipment-balanced-table .shipment-row-number { min-width:0; }
.shipment-balanced-table thead .btn { padding:2px 5px; font-size:12px; }
.shipment-balanced-table thead .d-inline-flex { margin-left:5px!important; }
.shipment-balanced-table .shipment-serial-actions { display:flex; flex-wrap:wrap; justify-content:center; align-items:center; gap:5px 10px; }
.shipment-balanced-table td { overflow-wrap:anywhere; }
.table thead .equipment-column-filters > th {
    background:#e3edfa;
    border-top:1px solid #a7bdd8;
    border-bottom:3px solid #6888b0;
    padding-top:14px;
    padding-bottom:16px;
    box-shadow:none;
}
.equipment-column-filters .form-control,
.equipment-column-filters .form-select {
    background-color:#fff;
    border-color:#8ca7ca;
}
.status-page-query,
.production-overview-page .production-header-search {
    background:#e3edfa;
    border:1px solid #a7bdd8;
    border-bottom:3px solid #6888b0;
    border-radius:10px;
    padding:16px;
}
.status-page-query::before,
.production-overview-page .production-header-search::before {
    content:"검색 조건";
    display:block;
    margin-bottom:10px;
    color:#294d79;
    font-size:13px;
    font-weight:700;
}
.status-page-query .form-control,
.status-page-query .form-select,
.production-overview-page .production-header-search .form-control,
.production-overview-page .production-header-search .form-select {
    background-color:#fff;
    border-color:#8ca7ca;
}

.work-finder { position:fixed; inset:auto 20px 20px auto; margin:0; z-index:1050; width:min(960px,94vw); max-height:85vh; overflow:auto; border:2px solid #8ca7ca; border-radius:12px; padding:24px; box-shadow:0 8px 32px #142d4d40; }
.work-finder::backdrop { background:rgba(15,30,50,.45); }
.finder-results { max-height:55vh; overflow:auto; }
.finder-item { display:grid; grid-template-columns:minmax(180px,1.2fr) minmax(140px,.9fr) minmax(180px,1.5fr) auto; align-items:center; gap:14px; min-width:700px; padding:9px 12px; border-bottom:1px solid #9aacc5; }
.finder-item > strong,.finder-item > div,.finder-item > p { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.finder-item > button { white-space:nowrap; padding:5px 12px; }
.finder-item p { margin:0; }

.shipment-alert-open { position:fixed; bottom:20px; right:24px; z-index:1040; box-shadow:0 3px 12px #0003; }

.floating-dialog-handle { cursor:move; touch-action:none; user-select:none; flex:1; padding:6px 0; }

.shipment-alert-summary { display:flex; align-items:flex-start; gap:24px; }
.shipment-alert-summary h2 { flex:0 0 230px; }
.shipment-alert-total { display:block; font-size:32px; margin-top:10px; color:#174b8c; }
.shipment-alert-models { flex:1; min-width:0; max-height:60vh; overflow:auto; }
.shipment-alert-model { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:8px 20px; padding:14px 16px; margin-bottom:10px; background:#edf3fb; border:1px solid #9fb6d4; border-left:4px solid #326cc1; border-radius:6px; }
.shipment-alert-model strong { font-size:22px; }
.shipment-alert-model strong span { margin-left:12px; color:#174b8c; }
.shipment-alert-model > span { font-size:18px; }
@media(max-width:650px){.shipment-alert-summary{flex-direction:column;gap:12px}.shipment-alert-summary h2{flex:auto}.shipment-alert-models{width:100%}}

.shipment-alert-model.has-model-color { background:var(--alert-model-color); border-color:var(--alert-model-color); color:var(--alert-model-ink); }
.shipment-alert-model.has-model-color strong span { color:inherit; }

.shipment-alert-model-plain { background:transparent; border:0; border-bottom:1px solid #bac6d5; border-radius:0; padding:8px 0; margin:0; }
.shipment-alert-model-plain strong span,.shipment-alert-summary .shipment-alert-total { color:inherit; }
.shipment-alert-model-label { display:inline-block; padding:4px 10px; border-radius:6px; font-size:19px; }
.shipment-alert-model-label.has-model-color { background:var(--alert-model-color); color:var(--alert-model-ink); }
.shipment-alert-detail td { vertical-align:middle; }

.shipment-alert-destination-summary { padding:12px 0; border-bottom:1px solid #bac6d5; margin-bottom:12px; }
.shipment-alert-destination-summary h3 { font-size:22px; font-weight:700; margin:0 0 8px; }
.shipment-alert-destination-summary p { font-size:30px; font-weight:700; line-height:1.5; margin:0; overflow-wrap:break-word; }
.shipment-alert-destination-summary p > strong { font-size:36px; font-weight:800; white-space:nowrap; }

#shipment-alert { width:min(780px,94vw); padding:18px; }
.shipment-alert-detail > :not(caption) > * > * { padding:7px 10px; }
.menu-with-notice { position:relative; padding-right:42px; }
.app-menu .menu-notice-badge { position:absolute; right:4px; top:50%; transform:translateY(-50%); min-width:26px; height:26px; padding:2px 6px; display:flex; align-items:center; justify-content:center; border-radius:13px; background:#dc3545; color:#fff; font-size:13px; font-weight:700; }
.app-menu .menu-notice-badge[hidden] { display:none; }

.compact-color-settings { padding:10px 14px; }
.compact-color-settings > summary { cursor:pointer; font-size:16px; font-weight:600; }
.compact-color-settings > summary span { margin-left:12px; font-weight:400; }
.color-settings-body { margin-top:12px; max-height:320px; overflow:auto; }
.compact-color-settings .stock-color-item { padding:5px 7px!important; gap:5px!important; }
.compact-color-settings .stock-color-item strong { font-size:14px; min-width:90px; }
.compact-color-settings input[type="color"] { width:34px; min-width:34px; height:28px; padding:2px; }
.compact-color-settings .stock-color-item .btn { padding:3px 7px; font-size:13px; }

.stock-color-list { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; }
.compact-color-settings .stock-color-item { display:grid!important; grid-template-columns:minmax(0,1fr) 34px auto auto; align-items:center; }
.compact-color-settings .stock-color-item strong { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.compact-color-settings .stock-color-item [role="status"] { grid-column:1 / -1; }
.compact-color-settings .stock-color-item [role="status"]:empty { display:none; }
@media(max-width:1100px){.stock-color-list{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(max-width:650px){.stock-color-list{grid-template-columns:minmax(0,1fr);}}

.content-zoom-controls { display:flex; align-items:center; gap:6px; margin-left:auto; white-space:nowrap; font-size:13px; }
.content-zoom-controls button { background:#fff; border:1px solid #9aabc1; border-radius:5px; padding:4px 9px; min-width:30px; color:#253c59; }
.content-zoom-controls button:disabled { opacity:.4; }
.content-zoom-controls output { min-width:44px; text-align:center; }
.workspace-header { flex-wrap:wrap; }
@media print { #main-content { zoom:1!important; } }
/* Keep screen zoom and account controls available while scrolling. */
.workspace-header { position:sticky; top:0; z-index:1030; box-shadow:0 2px 6px #18324d0d; }
.menu-section-toggle { display:flex; align-items:center; justify-content:space-between; width:100%; padding:6px 0; border:0; background:transparent; color:inherit; font:inherit; text-align:left; cursor:pointer; }
.menu-section-toggle::after { content:'▾'; font-size:14px; }
.menu-section-toggle[aria-expanded="false"]::after { content:'▸'; }
.menu-section-toggle:focus-visible { outline:2px solid #a7c8ff; outline-offset:3px; }

/* Keep column labels visible inside long dashboard lists, including horizontal scrolling. */
#main-content .status-table-scroll { max-height:var(--list-height,65vh); overflow:auto; position:relative; scrollbar-gutter:stable; border:1px solid #9baec7; border-radius:6px; }
.status-table-scroll table { margin-bottom:0; }
.status-table-scroll thead { position:sticky; top:0; z-index:5; background:#e8eff8; box-shadow:0 2px 0 #8299b9; }
.status-table-scroll thead th,.status-table-scroll thead td { background:#e8eff8; }
.status-table-scroll:focus-visible { outline:2px solid #2563eb; outline-offset:2px; }
@media print { #main-content .status-table-scroll { max-height:none; overflow:visible; } .status-table-scroll thead { position:static; } }

.partial-date-fields { display:grid; grid-template-columns:minmax(95px,1.2fr) minmax(90px,1fr) minmax(90px,1fr); gap:5px; }
.partial-date-fields .form-control,.partial-date-fields .form-select { min-width:0; }
.production-filter-fields { grid-template-columns:minmax(120px,1fr) minmax(140px,1fr) minmax(295px,1.7fr) auto; }
@media(max-width:1100px){.production-filter-fields{grid-template-columns:repeat(2,minmax(0,1fr));}.production-filter-field:has([data-partial-date]){grid-column:1 / -1;}}

.date-range-fields { display:grid; grid-template-columns:minmax(140px,1fr) auto minmax(140px,1fr); gap:6px; align-items:center; }
.date-range-fields input { min-width:0; }
@media(max-width:1100px){.production-filter-field:has(.date-range-fields){grid-column:1 / -1;}}

.date-range-fields > label { display:block; margin:0; font-size:13px; }
.date-range-fields > span { align-self:end; padding-bottom:9px; }
.holiday-name { display:block; color:#b42332!important; font-size:12px; font-weight:700; white-space:normal; line-height:1.3; margin-top:3px; }
/* Holidays take precedence over weekend fill; today's outline remains visible. */
.pc-date.calendar-holiday,.pc-cell.calendar-holiday,
.production-month-day.calendar-holiday,
.worker-month-calendar td.calendar-holiday,
.schedule-table .calendar-holiday { background-color:#fbd6db!important; border-color:#dca1aa; }
.pc-date.calendar-holiday,.pc-date.calendar-holiday>a,
.production-month-day.calendar-holiday>strong,
.schedule-table th.calendar-holiday { color:#9f1830; font-weight:700; }
.calendar-holiday .holiday-name { color:#941a2e!important; }
.pc-rest-connector { grid-row:1; align-self:center; z-index:1; border-top:2px dashed #72839a; height:0; margin:0; pointer-events:auto; }
.state-not-started { display:inline-block; padding:3px 8px; border:1px solid #adb8c7; border-radius:4px; background:#edf0f5; color:#42526b; font-weight:600; white-space:nowrap; }

/* Month schedules span dates within each week; each plan gets its own lane. */
.production-month-weekdays,.production-month-week { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); }
.production-month-week { margin-bottom:4px; isolation:isolate; }
.production-month-week .production-month-day { margin-right:3px; min-height:0; z-index:0; }
.production-month-week .production-month-day .holiday-name { font-size:11px; }
.production-month-notes { z-index:1; min-width:0; padding:46px 5px 3px; pointer-events:none; }
.production-month-schedule { align-self:center; z-index:2; min-width:0; margin:0 2px; }
.month-work-bar { display:block; padding:3px 6px; border:1px solid #9fbdea; border-radius:4px; background:#e5efff; color:#184ca4; font-size:12px; font-weight:600; line-height:18px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; text-decoration:none; }
.month-work-bar.pc-color-1 { background:#d9f1e8; border-color:#8ccbb4; color:#25694e; }
.month-work-bar.pc-color-2 { background:#eee5fc; border-color:#c6a9e7; color:#714ba5; }
.month-work-bar.pc-color-3 { background:#fff0d5; border-color:#e5c17e; color:#8b601e; }
.month-work-bar.pc-color-4 { background:#d8f0f6; border-color:#8fcbd7; color:#286978; }
.month-work-bar.pc-color-5 { background:#ffe7e5; border-color:#e3a9a4; color:#924f49; }
.month-rest-line { height:0; border-top:2px dashed #72839a; margin:0; }
.production-month-schedule:focus-visible { outline:2px solid #2563eb; outline-offset:2px; }
.test-sort-buttons { display:inline-flex; gap:3px; margin-left:6px; vertical-align:middle; white-space:nowrap; }
.test-sort-buttons .btn { padding:1px 4px; font-size:11px; line-height:19px; }
.test-record-table thead tr:first-child th { white-space:nowrap; }
.shipment-status-columns { grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; }
.shipment-status-columns>.card { padding:18px; }
.shipment-status-columns .shipment-model-counts { gap:10px; }
.shipment-status-columns .shipment-model-count { padding:12px; }
.shipment-status-columns a.shipment-model-count.is-selected { padding:11px; }
@media(max-width:800px) { .shipment-status-columns { grid-template-columns:1fr; } }
.production-overview-page td.production-quantity.quantity-not-started{color:#13713b;background:#e5f5eb;font-size:29px;font-weight:800;box-shadow:inset 0 -3px #28a05a}
.production-overview-page td.production-quantity.quantity-making{color:#1455ad;background:#e7f0ff;font-size:29px;font-weight:800;box-shadow:inset 0 -3px #397be2}
.production-overview-page td.quantity-not-started small,.production-overview-page td.quantity-making small{color:inherit;font-weight:700}
.production-expanded-schedule,#production-forecast{border:2px solid #88abe0!important;background:#f4f8ff!important}
.overview-expand-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;cursor:pointer;padding:6px 4px;list-style:none;color:#174b91}
.overview-expand-heading::-webkit-details-marker{display:none}
.overview-expand-heading strong{display:block;font-size:20px;font-weight:800}
.overview-expand-heading small{display:block;margin-top:5px;color:#536783;font-size:14px;font-weight:400}
.overview-expand-action{flex-shrink:0;border-radius:6px;background:#245fcc;color:#fff;padding:10px 16px;font-size:15px;font-weight:700}
.overview-expand-heading:hover .overview-expand-action{background:#164aa9}
.overview-expand-heading:focus-visible{outline:3px solid #245fcc;outline-offset:5px;border-radius:4px}
.overview-expand-heading .collapse-label{display:none}
 details[open]>.overview-expand-heading .expand-label{display:none}
 details[open]>.overview-expand-heading .collapse-label{display:inline}
@media(max-width:600px){.overview-expand-heading{flex-wrap:wrap}.overview-expand-heading strong{font-size:18px}.overview-expand-action{padding:8px 12px}}
/* Shipment lists must fit both in-page dialogs and independent windows. */
#shipment-equipment-panel{container-type:inline-size;min-width:0}
#shipment-equipment-panel .table-responsive{max-width:100%;overflow-x:auto}
/* Detached windows keep column labels visible within each scrollable table. */
.mes-separate-window .table-responsive{max-height:max(180px,calc(100dvh - 340px));overflow:auto;overscroll-behavior:contain}
.mes-separate-window .table-responsive>table{margin-bottom:0}
.mes-separate-window .table-responsive thead{position:sticky;top:0;z-index:6;background:#e8eff8;box-shadow:0 2px 0 #8299b9}
.mes-separate-window .table-responsive thead th,.mes-separate-window .table-responsive thead td{background:#e8eff8}
@media print{.mes-separate-window .table-responsive{max-height:none;overflow:visible}.mes-separate-window .table-responsive thead{position:static}}
#shipment-equipment-panel .shipment-balanced-table{table-layout:auto;width:100%;min-width:1080px}
#shipment-equipment-panel .shipment-balanced-table col{width:auto!important}
#shipment-equipment-panel .shipment-balanced-table>:not(caption)>*>*{padding:7px 9px;line-height:1.35}
#shipment-equipment-panel .shipment-balanced-table thead th{font-size:clamp(12px,1.1cqw,14px);white-space:nowrap;vertical-align:middle}
#shipment-equipment-panel .shipment-balanced-table thead th>.d-inline-flex{display:flex!important;justify-content:center;margin:4px 0 0!important;gap:4px!important}
#shipment-equipment-panel .shipment-balanced-table thead .btn{font-size:11px;padding:1px 4px;line-height:18px}
#shipment-equipment-panel .shipment-balanced-table tbody{font-size:clamp(13px,1.2cqw,16px)}
#shipment-equipment-panel .shipment-balanced-table td.model-name{font-size:clamp(15px,1.4cqw,18px);white-space:nowrap;overflow-wrap:normal;min-width:108px}
#shipment-equipment-panel .shipment-balanced-table .shipment-serial-actions>a:first-child,#shipment-equipment-panel .shipment-balanced-table tbody td>a:not(.shipment-fab-edit){font-size:clamp(15px,1.35cqw,18px);white-space:nowrap}
#shipment-equipment-panel .shipment-balanced-table .shipment-serial-actions{display:flex;flex-direction:column;gap:3px}
#shipment-equipment-panel .shipment-balanced-table .shipment-status{font-size:13px;white-space:nowrap}
#shipment-equipment-panel .shipment-balanced-table .shipment-notes{min-width:140px;max-width:240px;white-space:normal;overflow-wrap:anywhere}
/* Scale the shipment table with its actual popup width, including detached windows. */
#shipment-equipment-panel .shipment-balanced-table{min-width:0;width:100%;font-size:clamp(10px,1.25cqw,21px)}
#shipment-equipment-panel .shipment-balanced-table>:not(caption)>*>*{padding:clamp(3px,.6cqw,12px) clamp(3px,.65cqw,13px)}
#shipment-equipment-panel .shipment-balanced-table thead th{font-size:clamp(9px,1.1cqw,18px)}
#shipment-equipment-panel .shipment-balanced-table tbody{font-size:clamp(10px,1.25cqw,21px)}
#shipment-equipment-panel .shipment-balanced-table td.model-name{min-width:0;font-size:clamp(11px,1.5cqw,25px)}
#shipment-equipment-panel .shipment-balanced-table .shipment-serial-actions>a:first-child,#shipment-equipment-panel .shipment-balanced-table tbody td>a:not(.shipment-fab-edit){font-size:clamp(11px,1.45cqw,24px)}
#shipment-equipment-panel .shipment-balanced-table a.shipment-fab-edit{font-size:clamp(9px,1cqw,16px);padding:1px 2px}
#shipment-equipment-panel .shipment-balanced-table .shipment-status{font-size:clamp(9px,1.1cqw,18px);padding:clamp(2px,.25cqw,5px) clamp(3px,.45cqw,8px)}
#shipment-equipment-panel .shipment-balanced-table .value-missing,#shipment-equipment-panel .shipment-balanced-table .value-date{font-size:inherit;padding:clamp(2px,.3cqw,6px)}
#shipment-equipment-panel .shipment-balanced-table thead .btn{font-size:clamp(8px,.85cqw,14px);padding:1px clamp(2px,.3cqw,5px);line-height:1.4}
#shipment-equipment-panel .shipment-balanced-table thead th>.d-inline-flex{gap:clamp(2px,.3cqw,5px)!important;margin-top:clamp(2px,.3cqw,5px)!important}
#shipment-equipment-panel .shipment-balanced-table .shipment-notes{min-width:clamp(55px,10cqw,180px);max-width:clamp(90px,18cqw,300px)}
#shipment-equipment-panel .shipment-balanced-table .small{font-size:.8em}
/* Completed shipment distribution: all categories remain visible in the legend. */
.shipment-status-columns{grid-template-columns:repeat(2,minmax(0,1fr))}
.shipment-quantity-chart{min-width:0}.shipment-quantity-chart h3{font-weight:700;color:#193e65}
.shipment-quantity-chart .shipment-donut-card{height:calc(100% - 28px);align-items:center}
.shipment-quantity-chart .shipment-donut-legend{max-height:260px;overflow:auto;padding-right:6px}
.shipment-quantity-value{white-space:nowrap;font-variant-numeric:tabular-nums}
@media(max-width:800px){.shipment-status-columns{grid-template-columns:1fr}}
/* Larger completed-shipment rings and centered model labels. */
.shipment-quantity-chart{container-type:inline-size}
.shipment-quantity-chart .shipment-donut{width:230px;height:230px;flex:0 0 230px}
.shipment-quantity-chart .shipment-donut-center{width:172px;height:172px}
.shipment-quantity-chart .shipment-donut-center strong{font-size:34px}
.shipment-quantity-chart .shipment-donut-legend li{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:14px;min-height:38px}
.shipment-quantity-chart[data-shipment-chart="모델별"] .donut-key{display:grid;grid-template-columns:12px minmax(0,1fr);align-items:center;gap:8px}
.shipment-quantity-chart[data-shipment-chart="모델별"] .donut-key a{text-align:center;font-weight:600}
@container(max-width:520px){.shipment-quantity-chart .shipment-donut-card{flex-direction:column}.shipment-quantity-chart .shipment-donut-legend{width:100%;flex:auto}}
