﻿:root {
  --green: #2f8f4e;
  --green-dark: #1f6d3a;
  --blue: #2d7fb8;
  --blue-dark: #235e88;
  --red: #d74a4a;
  --ink: #1d2a32;
  --muted: #66747d;
  --line: #dfe7e5;
  --soft: #f4f8f6;
  --white: #fff;
  --shadow: 0 18px 50px rgba(34, 67, 53, .09);
  --radius: 18px;
}
* { box-sizing: border-box; }
html { color-scheme: light; }
body { margin: 0; font-family: "Pretendard", "Noto Sans KR", "Malgun Gothic", Arial, sans-serif; color: var(--ink); background: #f6f8f7; line-height: 1.6; }
a { color: inherit; text-decoration: none; }
button, input, select, textarea { font: inherit; }
button, .btn { cursor: pointer; }
.skip-link { position: absolute; left: -9999px; top: 0; background: #000; color: #fff; padding: 10px; z-index: 999; }
.skip-link:focus { left: 10px; }
.sr-only { position: absolute!important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.site-header { position: sticky; top: 0; z-index: 50; background: rgba(255,255,255,.96); border-bottom: 1px solid var(--line); backdrop-filter: blur(12px); }
.header-inner { max-width: 1240px; margin: 0 auto; min-height: 76px; padding: 0 24px; display: flex; align-items: center; gap: 24px; }
.brand { display: flex; align-items: center; gap: 12px; min-width: 230px; }
.brand img { width: 74px; height: 46px; object-fit: contain; }
.brand span { display: flex; flex-direction: column; line-height: 1.25; }
.brand strong { font-size: 18px; }
.brand small { color: var(--muted); font-size: 12px; margin-top: 3px; }
.main-nav { display: flex; align-items: center; gap: 4px; flex: 1; }
.main-nav a, .main-nav .nav-group-button { padding: 12px 14px; border-radius: 10px; color: #39464d; font-weight: 700; }
.main-nav a:hover, .main-nav a.active, .nav-group.active > .nav-group-button, .nav-group.open > .nav-group-button, .nav-group-button:hover { color: var(--green-dark); background: #eaf5ed; }
.nav-group { position: relative; display: inline-flex; align-items: center; }
.nav-group-button { border: 0; background: transparent; min-height: 44px; }
.nav-group.open::after { content: ""; position: absolute; top: 100%; left: 0; right: 0; height: 10px; z-index: 79; }
.nav-submenu { display: none; position: absolute; top: calc(100% + 8px); left: 0; min-width: 158px; padding: 8px; border: 1px solid var(--line); border-radius: 14px; background: #fff; box-shadow: var(--shadow); z-index: 80; }
.nav-group.open .nav-submenu { display: block; }
.nav-submenu a { display: block; padding: 10px 12px; white-space: nowrap; }
.user-box { display: flex; align-items: center; gap: 10px; font-size: 14px; white-space: nowrap; }
.user-box a { color: var(--muted); text-decoration: underline; }
.nav-toggle { display: none; border: 1px solid var(--line); background: #fff; border-radius: 9px; padding: 8px 11px; }
.page-shell { max-width: 1240px; margin: 0 auto; padding: 34px 24px 72px; min-height: calc(100vh - 150px); }
.site-footer { border-top: 1px solid var(--line); background: #fff; padding: 28px 24px; color: var(--muted); text-align: center; font-size: 13px; }
.footer-note { margin-top: 5px; font-size: 12px; }
.hero-panel { padding: 34px 38px; border-radius: 24px; background: linear-gradient(130deg, #e8f6ec 0%, #f6fbf8 55%, #e7f2fa 100%); border: 1px solid #d9ebe0; display: flex; justify-content: space-between; align-items: center; gap: 30px; margin-bottom: 24px; }
.hero-panel h1 { font-size: clamp(24px, 3vw, 36px); line-height: 1.35; margin: 4px 0 8px; }
.hero-panel p { margin: 0; color: var(--muted); }
.eyebrow, .panel-kicker { display: block; margin: 0 0 4px; color: var(--green-dark); font-weight: 800; letter-spacing: .08em; font-size: 12px; }
.dashboard-grid { display: grid; grid-template-columns: 1.25fr 1fr; gap: 22px; }
.dashboard-wide { grid-row: span 2; }
.dashboard-status-panel { grid-column: 1 / -1; overflow: hidden; }
.status-panel-actions { display: flex; gap: 12px; flex-wrap: wrap; justify-content: flex-end; }
.status-overview-wrap { overflow-x: auto; padding: 0 20px 22px; }
.status-overview-table { width: 100%; min-width: 860px; border-collapse: separate; border-spacing: 0; table-layout: fixed; }
.status-overview-table th { padding: 13px 10px; background: #f5f8f6; border-bottom: 1px solid var(--line); color: var(--muted); font-size: 13px; text-align: center; }
.status-overview-table td { padding: 17px 10px; border-bottom: 1px solid #edf1ef; text-align: center; vertical-align: middle; }
.status-overview-table td strong { display: block; color: var(--green-dark); font-size: 30px; line-height: 1.15; }
.status-overview-table td small { display: block; margin-top: 4px; color: var(--muted); font-size: 12px; }
.status-overview-table td.reason { width: 32%; color: #445159; font-size: 13px; text-align: left; line-height: 1.55; word-break: keep-all; }
.status-overview-table th:nth-child(5), .status-overview-table td:nth-child(5) { width: 30%; }
.status-overview-table th:nth-child(1), .status-overview-table th:nth-child(2), .status-overview-table th:nth-child(3), .status-overview-table th:nth-child(4), .status-overview-table th:nth-child(6), .status-overview-table th:nth-child(7) { width: 10.5%; }
.panel { background: #fff; border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow); }
.panel-head { display: flex; justify-content: space-between; align-items: center; gap: 20px; padding: 24px 26px 18px; border-bottom: 1px solid var(--line); }
.panel-head h2 { margin: 0; font-size: 21px; }
.more-link { color: var(--green-dark); font-weight: 700; font-size: 14px; }
.schedule-list { padding: 8px 20px 22px; }
.schedule-list.large { padding: 10px 26px 30px; }
.schedule-row { display: grid; grid-template-columns: 125px 1fr 22px; align-items: center; gap: 14px; padding: 17px 8px; border-bottom: 1px solid #edf1ef; }
.schedule-row:hover { background: #f7fbf8; }
.schedule-time { color: var(--blue-dark); font-weight: 800; font-size: 14px; }
.schedule-main { display: flex; flex-direction: column; }
.schedule-main strong { font-size: 16px; }
.schedule-main small { color: var(--muted); margin-top: 3px; }
.chevron { color: #9aaba3; font-size: 24px; }
.empty-state { padding: 48px 20px; text-align: center; color: var(--muted); }
.empty-state a { color: var(--green-dark); font-weight: 700; }
.compact-list { list-style: none; margin: 0; padding: 6px 24px 22px; }
.compact-list li { border-bottom: 1px solid #edf1ef; }
.compact-list li:last-child { border-bottom: 0; }
.compact-list a { display: flex; justify-content: space-between; gap: 20px; padding: 14px 2px; }
.compact-list span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.compact-list time { color: var(--muted); font-size: 13px; }
.empty-line { padding: 30px 0; color: var(--muted); text-align: center; }
.quick-links { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; margin-top: 22px; }
.quick-links a { padding: 20px; border: 1px solid var(--line); border-radius: 14px; background: #fff; transition: transform .15s ease, border-color .15s ease; }
.quick-links a:hover { transform: translateY(-2px); border-color: #a8cfb4; }
.quick-links strong, .quick-links span { display: block; }
.quick-links span { color: var(--muted); font-size: 13px; margin-top: 4px; }
.page-head { display: flex; justify-content: space-between; align-items: end; gap: 28px; margin: 8px 0 24px; }
.page-head.compact { align-items: center; }
.page-head h1 { margin: 2px 0 4px; font-size: 34px; line-height: 1.2; }
.page-head p { margin: 0; color: var(--muted); }
.btn { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: 10px 17px; border-radius: 10px; border: 1px solid transparent; font-weight: 800; transition: .15s ease; }
.btn:hover { transform: translateY(-1px); }
.btn.primary { background: var(--green); color: #fff; }
.btn.primary:hover { background: var(--green-dark); }
.btn.dark { background: var(--ink); color: #fff; }
.btn.ghost { background: #fff; border-color: var(--line); color: var(--ink); }
.btn.danger { color: var(--red); border-color: #f0c4c4; }
.btn.full { width: 100%; }
button:disabled { opacity: .55; cursor: wait; }
.toolbar { display: flex; justify-content: space-between; gap: 20px; align-items: center; margin-bottom: 16px; }
.view-tabs { display: inline-flex; gap: 4px; padding: 4px; border: 1px solid var(--line); border-radius: 12px; background: #fff; }
.view-tabs a { padding: 8px 15px; border-radius: 8px; font-weight: 700; color: var(--muted); }
.view-tabs a.active { background: var(--green); color: #fff; }
.date-nav { display: flex; align-items: center; gap: 7px; }
.icon-btn, .today-btn { display: inline-flex; align-items: center; justify-content: center; height: 40px; border: 1px solid var(--line); background: #fff; border-radius: 9px; }
.icon-btn { width: 40px; font-size: 25px; }
.today-btn { padding: 0 14px; font-weight: 700; }
.calendar-panel { overflow: hidden; }
.calendar-title { padding: 20px 24px; border-bottom: 1px solid var(--line); }
.calendar-title h2 { margin: 0; font-size: 23px; }
.week-grid { display: grid; grid-template-columns: repeat(7, 1fr); min-height: 520px; }
.week-day { border-right: 1px solid var(--line); padding: 12px; min-width: 0; }
.week-day:last-child { border-right: 0; }
.week-day.today { background: #f2faf4; }
.week-date { display: flex; flex-direction: column; align-items: center; padding: 8px; }
.week-date span { color: var(--muted); font-size: 13px; }
.week-date strong { font-size: 23px; }
.mini-schedules { display: flex; flex-direction: column; gap: 6px; }
.mini-schedules a { display: block; padding: 7px 8px; border-radius: 8px; background: #edf7f0; font-size: 12px; overflow: hidden; }
.mini-schedules a:hover { background: #dff1e4; }
.mini-schedules time { display: block; color: var(--green-dark); font-weight: 800; white-space: nowrap; }
.mini-schedules span { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mini-schedules .none { padding: 10px 0; text-align: center; color: #a0aaa5; font-size: 12px; }
.month-grid { display: grid; grid-template-columns: repeat(7, 1fr); }
.month-grid.weekdays { background: #f4f7f5; border-bottom: 1px solid var(--line); }
.month-grid.weekdays span { padding: 10px; text-align: center; color: var(--muted); font-weight: 700; font-size: 13px; }
.month-day { min-height: 138px; padding: 9px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); min-width: 0; }
.month-day:nth-child(7n) { border-right: 0; }
.month-day.muted { background: #fafbfa; color: #aeb6b2; }
.month-day.today { box-shadow: inset 0 0 0 2px var(--green); }
.day-number { display: inline-flex; width: 30px; height: 30px; align-items: center; justify-content: center; border-radius: 50%; font-weight: 800; margin-bottom: 5px; }
.today .day-number { background: var(--green); color: #fff; }
.more-count { background: transparent!important; color: var(--blue-dark); font-weight: 700; }
.year-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; padding: 24px; }
.year-card { padding: 24px; border: 1px solid var(--line); border-radius: 14px; background: #fbfdfc; }
.year-card span, .year-card strong, .year-card small { display: block; }
.year-card span { font-weight: 800; }
.year-card strong { font-size: 34px; color: var(--green-dark); margin-top: 14px; }
.year-card small { color: var(--muted); }
.form-layout { max-width: 880px; margin: 0 auto; }
.form-panel { padding: 30px; }
.form-grid { display: grid; gap: 18px; }
.form-grid.two { grid-template-columns: 1fr 1fr; }
.form-grid.three { grid-template-columns: 1fr 1fr 1fr; }
.field { margin-bottom: 18px; }
.field label { display: block; margin-bottom: 7px; font-weight: 800; }
.field label span { color: var(--red); }
.field input[type="text"], .field input[type="password"], .field input[type="date"], .field input[type="time"], .field input[type="search"], .field select, .field textarea, .board-search input { width: 100%; border: 1px solid #cfdad5; border-radius: 10px; background: #fff; padding: 11px 12px; color: var(--ink); outline: none; }
.field input:focus, .field select:focus, .field textarea:focus, .board-search input:focus { border-color: var(--green); box-shadow: 0 0 0 3px rgba(47,143,78,.12); }
.field textarea { resize: vertical; }
.checkbox-field { padding: 10px 0 0; }
.checkbox-field label { font-weight: 700; }
.field-help { margin: 6px 0 0; color: var(--muted); font-size: 12px; }
.date-fields { margin-bottom: 0; }
.date-range-help { margin: -6px 0 16px; }

.upload-status { margin-top: 6px; color: var(--green-dark); font-size: 13px; font-weight: 700; }
.current-file { margin-top: 10px; padding: 10px 12px; background: var(--soft); border-radius: 8px; font-size: 13px; }
.current-file label { display: inline; margin-left: 10px; font-weight: 500; }
.form-actions { display: flex; justify-content: flex-end; gap: 9px; padding-top: 12px; }
.alert { padding: 13px 15px; border-radius: 9px; margin-bottom: 18px; }
.alert.error { background: #fff0f0; border: 1px solid #f2caca; color: #9f2929; }
.board-panel { overflow: hidden; }
.board-search { display: flex; gap: 8px; padding: 20px 24px; border-bottom: 1px solid var(--line); }
.board-search input { max-width: 430px; }
.board-table-wrap { overflow-x: auto; }
.board-table { width: 100%; border-collapse: collapse; }
.board-table th { background: #f5f8f6; color: var(--muted); font-size: 13px; }
.board-table th, .board-table td { padding: 15px 14px; border-bottom: 1px solid #edf1ef; text-align: center; }
.board-table td.title { text-align: left; }
.board-table td.title a { font-weight: 700; }
.board-table .num { width: 80px; }
.board-table .author { width: 120px; }
.board-table .date { width: 120px; }
.board-table .file { width: 70px; }
.empty-cell { padding: 50px!important; color: var(--muted); }
.post-view { overflow: hidden; }
.post-header { padding: 30px; border-bottom: 1px solid var(--line); }
.post-header h2 { margin: 0 0 12px; font-size: 28px; }
.post-meta { display: flex; flex-wrap: wrap; gap: 18px; color: var(--muted); font-size: 13px; }
.post-content { min-height: 280px; padding: 34px 30px; white-space: normal; }
.attachment-box { margin: 0 30px 20px; padding: 15px; border-radius: 10px; background: var(--soft); display: flex; gap: 16px; }
.attachment-box a { color: var(--blue-dark); font-weight: 800; text-decoration: underline; }
.post-view .form-actions { padding: 20px 30px 28px; border-top: 1px solid var(--line); }
.login-page { min-height: 100vh; background: radial-gradient(circle at 15% 10%, #e4f5e9 0, transparent 35%), radial-gradient(circle at 85% 85%, #e4f0f8 0, transparent 35%), #f7faf8; }
.login-shell { min-height: 100vh; display: grid; place-items: center; padding: 24px; }
.login-card { width: min(430px, 100%); padding: 38px; background: rgba(255,255,255,.96); border: 1px solid var(--line); border-radius: 24px; box-shadow: var(--shadow); }
.login-brand { text-align: center; margin-bottom: 24px; }
.login-brand img { width: 145px; height: 84px; object-fit: contain; }
.login-brand p { margin: 4px 0 0; font-weight: 800; color: var(--green-dark); }
.login-brand h1 { margin: 4px 0 0; font-size: 27px; }
.login-card label { display: block; margin: 13px 0 6px; font-weight: 800; }
.login-card input { width: 100%; padding: 12px; border: 1px solid #cfdad5; border-radius: 10px; }
.password-wrap { position: relative; }
.password-wrap input { padding-right: 60px; }
.text-button { border: 0; background: transparent; color: var(--blue-dark); font-weight: 800; cursor: pointer; }
.password-wrap .text-button { position: absolute; right: 8px; top: 50%; transform: translateY(-50%); }
.login-card .btn { margin-top: 20px; }
.login-help { text-align: center; color: var(--muted); font-size: 12px; margin: 16px 0 0; }
@media (max-width: 980px) {
  .header-inner { flex-wrap: wrap; min-height: 70px; padding-top: 10px; padding-bottom: 10px; }
  .brand { flex: 1; }
  .nav-toggle { display: block; }
  .main-nav { display: none; order: 4; width: 100%; flex-direction: column; align-items: stretch; padding: 8px 0; }
  .main-nav.open { display: flex; }
  .nav-group { display: flex; flex-direction: column; align-items: stretch; width: 100%; }
  .nav-group.open::after { display: none; }
  .nav-group-button { width: 100%; text-align: left; }
  .nav-submenu { position: static; min-width: 0; margin: 4px 0 6px 14px; padding: 6px; border-radius: 12px; box-shadow: none; background: #f7fbf8; }
  .nav-group.open .nav-submenu { display: block; }
  .user-box { order: 3; }
  .dashboard-grid { grid-template-columns: 1fr; }
  .dashboard-wide { grid-row: auto; }
  .quick-links { grid-template-columns: repeat(2, 1fr); }
  .week-grid { grid-template-columns: 1fr; min-height: auto; }
  .week-day { border-right: 0; border-bottom: 1px solid var(--line); display: grid; grid-template-columns: 90px 1fr; }
  .month-day { min-height: 112px; }
  .year-grid { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 700px) {
  .page-shell { padding: 22px 14px 50px; }
  .brand img { width: 58px; }
  .brand span { display: none; }
  .user-box span { display: none; }
  .hero-panel, .page-head, .toolbar { align-items: stretch; flex-direction: column; }
  .hero-panel { padding: 26px 22px; }
  .hero-panel .btn, .page-head .btn { width: 100%; }
  .status-panel-actions { justify-content: flex-start; }
  .status-overview-wrap { padding: 0 14px 18px; }
  .status-overview-table { min-width: 760px; }
  .status-overview-table td strong { font-size: 25px; }
  .quick-links { grid-template-columns: 1fr 1fr; }
  .schedule-row { grid-template-columns: 95px 1fr 16px; }
  .form-grid.two, .form-grid.three { grid-template-columns: 1fr; gap: 0; }
  .form-panel { padding: 20px; }
  .month-grid.weekdays span { padding: 8px 2px; font-size: 11px; }
  .month-day { min-height: 88px; padding: 4px; }
  .month-day .mini-schedules time { display: none; }
  .month-day .mini-schedules a { padding: 4px; }
  .day-number { width: 25px; height: 25px; font-size: 12px; }
  .year-grid { grid-template-columns: repeat(2, 1fr); padding: 14px; }
  .board-table .num, .board-table .author, .board-table .file { display: none; }
  .board-table th, .board-table td { padding: 13px 10px; }
  .post-header, .post-content { padding: 24px 20px; }
  .attachment-box { margin: 0 20px 18px; flex-direction: column; gap: 4px; }
  .form-actions { flex-wrap: wrap; }
}
.alert.success { background: #effaf3; border: 1px solid #bfe2ca; color: #216b3a; }
.upload-status.error-text { color: #a12626; }
.system-check-table td:first-child { width: 34%; font-weight: 700; }
.system-ok { color: #23733c; font-weight: 700; }
.system-error { color: #a12626; font-weight: 700; }

/* 직원 계정 관리 */
.user-search { display: grid; grid-template-columns: minmax(260px, 1fr) 150px 150px auto; gap: 12px; align-items: end; padding: 20px 24px; border-bottom: 1px solid var(--line); }
.user-search .field { margin-bottom: 0; }
.user-search .search-actions { display: flex; gap: 7px; padding-bottom: 1px; }
.user-table th:last-child, .user-table td:last-child { min-width: 175px; }
.user-table th:nth-child(3), .user-table td:nth-child(3) { min-width: 92px; }
.user-table th:nth-child(4), .user-table td:nth-child(4) { min-width: 122px; }
.user-actions { white-space: nowrap; }
.inline-form { display: inline-block; margin-left: 5px; }
.btn.small { min-height: 34px; padding: 6px 11px; font-size: 13px; }
.btn.danger { background: #fff1f1; border: 1px solid #efc2c2; color: #a12626; }
.btn.danger:hover { background: #ffe3e3; }
.role-badge, .status-badge, .self-badge { display: inline-flex; align-items: center; justify-content: center; border-radius: 999px; padding: 3px 9px; font-size: 12px; font-weight: 800; }
.role-badge.admin { background: #e8f0fb; color: #255f93; }
.role-badge.staff { background: #edf7f0; color: #26713e; }
.status-badge.enabled { background: #edf8f0; color: #26713e; }
.status-badge.disabled { background: #f2f3f3; color: #6c7470; }
.self-badge { margin-left: 7px; background: #fff4d9; color: #8b6415; }
.table-summary { padding: 13px 24px; color: var(--muted); text-align: right; font-size: 13px; background: #fbfcfb; }
.checkbox-card { display: flex; flex-direction: column; justify-content: center; min-height: 96px; padding: 14px 16px; border: 1px solid #dfe7e5; border-radius: 10px; background: #fafcfb; }
.checkbox-card label { margin: 0; }
.password-change-panel { max-width: 620px; margin: 0 auto; }
.field input[readonly] { background: #f1f4f2; color: #66747d; }
@media (max-width: 900px) {
  .user-search { grid-template-columns: 1fr 1fr; }
  .user-search .search-grow { grid-column: 1 / -1; }
  .user-search .search-actions { grid-column: 1 / -1; }
}
@media (max-width: 700px) {
  .user-search { grid-template-columns: 1fr; }
  .user-search .search-grow, .user-search .search-actions { grid-column: auto; }
  .user-search .search-actions .btn { flex: 1; }
  .user-table th:nth-child(5), .user-table td:nth-child(5), .user-table th:nth-child(7), .user-table td:nth-child(7) { display: none; }
  .user-actions { white-space: normal; }
}

/* 일정 조회 - 상단 최소화형 */
.schedule-search-panel { margin: 0 0 12px; overflow: hidden; }
.schedule-search-panel > summary { list-style: none; }
.schedule-search-panel > summary::-webkit-details-marker { display: none; }
.schedule-search-summary { display: flex; align-items: center; gap: 11px; min-height: 58px; padding: 10px 16px; cursor: pointer; user-select: none; background: linear-gradient(135deg, #fbfdfc 0%, #f5faf7 100%); }
.schedule-search-summary:hover { background: #f3f9f5; }
.schedule-search-summary:focus-visible { outline: 3px solid rgba(35,115,60,.2); outline-offset: -3px; }
.schedule-search-summary-icon { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 34px; width: 34px; height: 34px; border-radius: 10px; background: #e8f4eb; color: var(--green-dark); font-size: 23px; font-weight: 900; line-height: 1; }
.schedule-search-summary-text { min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.schedule-search-summary-text strong { color: var(--text); font-size: 16px; }
.schedule-search-summary-text small { color: var(--muted); font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.schedule-search-summary-action { margin-left: auto; color: var(--green-dark); font-size: 12px; font-weight: 800; }
.schedule-search-summary-arrow { display: inline-flex; align-items: center; justify-content: center; width: 25px; height: 25px; color: var(--muted); font-size: 21px; transition: transform .2s ease; }
.schedule-search-panel[open] .schedule-search-summary { border-bottom: 1px solid var(--line); }
.schedule-search-panel[open] .schedule-search-summary-action::before { content: "검색 닫기"; }
.schedule-search-panel[open] .schedule-search-summary-action { font-size: 0; }
.schedule-search-panel[open] .schedule-search-summary-action::before { font-size: 12px; }
.schedule-search-panel[open] .schedule-search-summary-arrow { transform: rotate(180deg); }
.schedule-search-body { background: #fff; }
.schedule-search-form { display: grid; grid-template-columns: minmax(220px, 1.35fr) minmax(140px, .75fr) minmax(140px, .75fr) minmax(135px, .7fr) minmax(125px, .65fr) auto; gap: 10px; align-items: end; padding: 14px 16px 16px; }
.schedule-search-form .field { margin-bottom: 0; }
.schedule-search-form label { margin-bottom: 4px; font-size: 12px; }
.schedule-search-form input, .schedule-search-form select { min-height: 39px; padding-top: 8px; padding-bottom: 8px; }
.schedule-search-actions { display: flex; gap: 6px; padding-bottom: 1px; }
.schedule-search-actions .btn { min-height: 39px; padding: 8px 13px; }
.schedule-search-error { margin: 0 16px 16px; }
.schedule-results-panel { margin-bottom: 18px; overflow: hidden; }
.schedule-results-head { display: flex; justify-content: space-between; align-items: center; gap: 20px; padding: 20px 24px 16px; border-bottom: 1px solid var(--line); }
.schedule-results-head h2 { margin: 0; font-size: 21px; }
.schedule-results-head strong { display: inline-flex; align-items: center; justify-content: center; min-width: 58px; padding: 5px 12px; border-radius: 999px; background: #eaf5ed; color: var(--green-dark); }
.schedule-search-list { width: 100%; }
.schedule-search-row { display: grid; grid-template-columns: 174px 125px minmax(260px, 1fr) 110px 95px 22px; gap: 12px; align-items: center; padding: 14px 20px; border-bottom: 1px solid #edf1ef; }
.schedule-search-row:last-child { border-bottom: 0; }
a.schedule-search-row:hover { background: #f7fbf8; }
.schedule-search-header { background: #f5f8f6; color: var(--muted); font-size: 12px; font-weight: 800; padding-top: 10px; padding-bottom: 10px; }
.schedule-search-main { min-width: 0; display: flex; flex-direction: column; }
.schedule-search-main strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.schedule-search-main small { margin-top: 2px; color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.search-date, .search-time { font-size: 13px; font-weight: 800; }
.search-date { line-height: 1.35; }
.search-time { color: var(--blue-dark); }
.search-category, .search-author { color: var(--muted); font-size: 13px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
@media (max-width: 1100px) {
  .schedule-search-form { grid-template-columns: 1fr 1fr 1fr; }
  .schedule-search-form .search-grow { grid-column: 1 / -1; }
  .schedule-search-actions { grid-column: 1 / -1; }
  .schedule-search-row { grid-template-columns: 154px 115px minmax(220px, 1fr) 100px 85px 18px; gap: 9px; padding-left: 14px; padding-right: 14px; }
}
@media (max-width: 760px) {
  .schedule-search-summary { min-height: 54px; padding: 9px 13px; }
  .schedule-search-summary-icon { flex-basis: 32px; width: 32px; height: 32px; }
  .schedule-search-summary-action { display: none; }
  .schedule-search-form { grid-template-columns: 1fr 1fr; padding: 13px; }
  .schedule-search-form .search-grow { grid-column: 1 / -1; }
  .schedule-search-actions { grid-column: 1 / -1; }
  .schedule-search-actions .btn { flex: 1; }
  .schedule-search-error { margin: 0 13px 13px; }
  .schedule-search-row { grid-template-columns: 92px 102px minmax(0, 1fr) 16px; }
  .schedule-search-header span:nth-child(4), .schedule-search-header span:nth-child(5),
  .schedule-search-row .search-category, .schedule-search-row .search-author { display: none; }
}
@media (max-width: 520px) {
  .schedule-search-summary-text small { max-width: 220px; }
  .schedule-search-form { grid-template-columns: 1fr; }
  .schedule-search-form .search-grow, .schedule-search-actions { grid-column: auto; }
  .schedule-search-row { grid-template-columns: 84px minmax(0, 1fr) 16px; }
  .schedule-search-header span:nth-child(2), .schedule-search-row .search-time { display: none; }
}


/* 이용자등록 */
.client-search {
  display: grid;
  grid-template-columns: minmax(330px, 1.55fr) minmax(175px, .68fr) minmax(135px, .5fr) auto;
  gap: 10px;
  align-items: center;
  padding: 12px 16px;
  border-bottom: 1px solid var(--line);
  background: #fbfcfb;
}
.client-search .field {
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
  margin-bottom: 0;
}
.client-search .field label {
  flex: 0 0 auto;
  margin: 0;
  font-size: 13px;
  line-height: 1;
  white-space: nowrap;
}
.client-search .field input, .client-search .field select {
  min-width: 0;
  min-height: 38px;
  padding-top: 8px;
  padding-bottom: 8px;
}
.client-search .search-grow input { min-width: 0; }
.client-search .search-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 7px;
  min-width: 0;
  padding-bottom: 0;
}
.client-search .search-actions .btn { min-height: 38px; padding: 8px 12px; white-space: nowrap; }
.client-table th:last-child, .client-table td:last-child { min-width: 150px; }
.client-table td.title strong { display: block; }
.table-subtext { display: block; margin-top: 3px; color: var(--muted); font-size: 12px; }
.client-status { display: inline-flex; align-items: center; justify-content: center; border-radius: 999px; padding: 3px 9px; font-size: 12px; font-weight: 800; }
.client-status.active { background: #edf8f0; color: #26713e; }
.client-status.waiting { background: #fff5df; color: #956111; }
.client-status.ended { background: #eef3ff; color: #2856a3; }
.client-status.stopped { background: #f2f3f3; color: #6c7470; }

@media (max-width: 960px) {
  .client-search { grid-template-columns: 1fr 1fr; padding: 14px 16px; }
  .client-search .search-grow { grid-column: 1 / -1; }
  .client-search .search-actions { grid-column: 1 / -1; justify-content: flex-start; }
}
@media (max-width: 620px) {
  .client-search { grid-template-columns: 1fr; padding: 13px; }
  .client-search .search-grow, .client-search .search-actions { grid-column: auto; }
  .client-search .field { align-items: stretch; flex-direction: column; gap: 5px; }
  .client-search .field label { line-height: 1.2; }
  .client-search .search-actions .btn { flex: 1; }
  .client-table th:nth-child(1), .client-table td:nth-child(1), .client-table th:nth-child(4), .client-table td:nth-child(4), .client-table th:nth-child(5), .client-table td:nth-child(5), .client-table th:nth-child(6), .client-table td:nth-child(6), .client-table th:nth-child(8), .client-table td:nth-child(8) { display: none; }
}

/* 이용자등록 목록 정렬 */
.client-list-note {
  padding: 10px 16px;
  border-bottom: 1px solid var(--line);
  background: #fff;
  color: var(--muted);
  font-size: 13px;
}
.client-list-note strong { color: var(--green-dark); }
.sort-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 3px;
  min-height: 28px;
  color: var(--muted);
  font-weight: 800;
  text-decoration: none;
  white-space: nowrap;
}
.sort-link:hover { color: var(--green-dark); text-decoration: underline; }
.sort-link.active { color: var(--green-dark); }
.sort-link span { min-width: 12px; font-size: 11px; line-height: 1; }
@media (max-width: 620px) {
  .client-list-note { padding: 9px 13px; }
  .sort-link { min-height: 24px; font-size: 12px; }
}


/* 출석체크 */
.attendance-toolbar-panel { margin-bottom: 14px; overflow: hidden; }
.attendance-search {
  display: grid;
  grid-template-columns: minmax(170px, .55fr) minmax(330px, 1.35fr) minmax(170px, .55fr) auto;
  gap: 10px;
  align-items: center;
  padding: 12px 16px;
  background: #fbfcfb;
}
.attendance-search .field { display: flex; align-items: center; gap: 8px; min-width: 0; margin-bottom: 0; }
.attendance-search .field label { flex: 0 0 auto; margin: 0; font-size: 13px; line-height: 1; white-space: nowrap; }
.attendance-search .field input, .attendance-search .field select { min-width: 0; min-height: 38px; padding-top: 8px; padding-bottom: 8px; }
.attendance-search .search-grow input { min-width: 0; }
.attendance-search .search-actions { display: flex; align-items: center; justify-content: flex-end; gap: 7px; min-width: 0; }
.attendance-search .search-actions .btn { min-height: 38px; padding: 8px 12px; white-space: nowrap; }
.attendance-save-form { margin: 0; }
.attendance-panel { overflow: hidden; }
.attendance-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 20px 24px 16px; border-bottom: 1px solid var(--line); }
.attendance-head h2 { margin: 2px 0 0; font-size: 22px; }
.attendance-head-actions { display: flex; align-items: center; justify-content: flex-end; gap: 7px; flex-wrap: wrap; }
.attendance-table th:nth-child(1), .attendance-table td:nth-child(1) { width: 120px; }
.attendance-table th:nth-child(3), .attendance-table td:nth-child(3) { width: 135px; }
.attendance-table th:nth-child(4), .attendance-table td:nth-child(4), .attendance-table th:nth-child(5), .attendance-table td:nth-child(5) { width: 120px; }
.attendance-table th:nth-child(6), .attendance-table td:nth-child(6) { width: 180px; }
.attendance-table th:nth-child(7), .attendance-table td:nth-child(7) { width: 170px; }
.attendance-table select, .attendance-table input[type="time"], .attendance-table input[type="text"] { width: 100%; min-height: 36px; padding: 7px 9px; border: 1px solid #d9e3df; border-radius: 8px; background: #fff; font: inherit; }
.attendance-status-select { font-weight: 700; }
.attendance-summary { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 8px; padding: 13px 24px; color: var(--muted); background: #fbfcfb; border-top: 1px solid var(--line); font-size: 13px; }
.attendance-summary > span:first-child strong { color: var(--green-dark); }
.attendance-badge { display: inline-flex; align-items: center; gap: 3px; border-radius: 999px; padding: 4px 9px; font-size: 12px; font-weight: 800; }
.attendance-badge.present { background: #edf8f0; color: #26713e; }
.attendance-badge.absent { background: #fff1f1; color: #a12626; }
.attendance-badge.late { background: #fff5df; color: #956111; }
.attendance-badge.leave { background: #eef3ff; color: #2856a3; }
.attendance-badge.early { background: #f2ecfb; color: #6540a0; }
.attendance-badge.blank { background: #f2f3f3; color: #6c7470; }
@media (max-width: 980px) {
  .attendance-search { grid-template-columns: 1fr 1fr; padding: 14px 16px; }
  .attendance-search .search-grow { grid-column: 1 / -1; }
  .attendance-search .search-actions { grid-column: 1 / -1; justify-content: flex-start; }
  .attendance-head { align-items: flex-start; flex-direction: column; }
  .attendance-head-actions { justify-content: flex-start; }
}
@media (max-width: 720px) {
  .attendance-search { grid-template-columns: 1fr; padding: 13px; }
  .attendance-search .search-grow, .attendance-search .search-actions { grid-column: auto; }
  .attendance-search .field { align-items: stretch; flex-direction: column; gap: 5px; }
  .attendance-search .field label { line-height: 1.2; }
  .attendance-search .search-actions .btn, .attendance-head-actions .btn { flex: 1; }
  .attendance-head { padding: 18px 18px 14px; }
  .attendance-table th:nth-child(1), .attendance-table td:nth-child(1), .attendance-table th:nth-child(4), .attendance-table td:nth-child(4), .attendance-table th:nth-child(5), .attendance-table td:nth-child(5) { display: none; }
  .attendance-table th:nth-child(3), .attendance-table td:nth-child(3) { width: 120px; }
  .attendance-summary { justify-content: flex-start; padding: 12px 18px; }
}


.attendance-bulk-actions {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  padding: 12px 14px;
  margin: 14px 0 16px;
  border: 1px solid #dfe8df;
  border-radius: 16px;
  background: #f7fbf7;
}

.attendance-bulk-actions label {
  margin: 0;
  font-weight: 800;
  color: #1f3b2c;
  white-space: nowrap;
}

.attendance-bulk-actions select {
  min-width: 130px;
}

.attendance-bulk-actions .bulk-help {
  font-size: 13px;
  color: #647067;
}

@media (max-width: 720px) {
  .attendance-bulk-actions {
    align-items: stretch;
  }

  .attendance-bulk-actions label,
  .attendance-bulk-actions select,
  .attendance-bulk-actions .btn,
  .attendance-bulk-actions .bulk-help {
    width: 100%;
  }
}


/* 급식실적 */
.meal-toolbar-panel { margin-bottom: 14px; overflow: hidden; }
.meal-search {
  display: grid;
  grid-template-columns: minmax(160px, .5fr) minmax(145px, .45fr) minmax(310px, 1.25fr) minmax(160px, .55fr) auto;
  gap: 10px;
  align-items: center;
  padding: 12px 16px;
  background: #fbfcfb;
}
.meal-search .field { display: flex; align-items: center; gap: 8px; min-width: 0; margin-bottom: 0; }
.meal-search .field label { flex: 0 0 auto; margin: 0; font-size: 13px; line-height: 1; white-space: nowrap; }
.meal-search .field input, .meal-search .field select { min-width: 0; min-height: 38px; padding-top: 8px; padding-bottom: 8px; }
.meal-search .search-grow input { min-width: 0; }
.meal-search .search-actions { display: flex; align-items: center; justify-content: flex-end; gap: 7px; min-width: 0; }
.meal-search .search-actions .btn { min-height: 38px; padding: 8px 12px; white-space: nowrap; }
.meal-save-form { margin: 0; }
.meal-panel { overflow: hidden; }
.meal-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 20px 24px 16px; border-bottom: 1px solid var(--line); }
.meal-head h2 { margin: 2px 0 0; font-size: 22px; }
.meal-head-actions { display: flex; align-items: center; justify-content: flex-end; gap: 7px; flex-wrap: wrap; }
.meal-table th:nth-child(1), .meal-table td:nth-child(1) { width: 120px; }
.meal-table th:nth-child(3), .meal-table td:nth-child(3) { width: 110px; }
.meal-table th:nth-child(4), .meal-table td:nth-child(4) { width: 145px; }
.meal-table select, .meal-table input[type="text"] { width: 100%; min-height: 36px; padding: 7px 9px; border: 1px solid #d9e3df; border-radius: 8px; background: #fff; font: inherit; }
.meal-status-select { font-weight: 700; }
.meal-summary { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 8px; padding: 13px 24px; color: var(--muted); background: #fbfcfb; border-top: 1px solid var(--line); font-size: 13px; }
.meal-summary > span:first-child strong { color: var(--green-dark); }
.meal-badge { display: inline-flex; align-items: center; gap: 3px; border-radius: 999px; padding: 4px 9px; font-size: 12px; font-weight: 800; }
.meal-badge.used { background: #edf8f0; color: #26713e; }
.meal-badge.unused { background: #fff1f1; color: #a12626; }
.meal-badge.lunchbox { background: #fff5df; color: #956111; }
.meal-badge.outside { background: #eef3ff; color: #2856a3; }
.meal-badge.other { background: #f2ecfb; color: #6540a0; }
.meal-badge.blank { background: #f2f3f3; color: #6c7470; }
.meal-bulk-actions {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  padding: 12px 14px;
  margin: 14px 0 16px;
  border: 1px solid #dfe8df;
  border-radius: 16px;
  background: #f7fbf7;
}
.meal-bulk-actions label { margin: 0; font-weight: 800; color: #1f3b2c; white-space: nowrap; }
.meal-bulk-actions select { min-width: 130px; }
.meal-bulk-actions .bulk-help { font-size: 13px; color: #647067; }
@media (max-width: 1080px) {
  .meal-search { grid-template-columns: 1fr 1fr; padding: 14px 16px; }
  .meal-search .search-grow { grid-column: 1 / -1; }
  .meal-search .search-actions { grid-column: 1 / -1; justify-content: flex-start; }
  .meal-head { align-items: flex-start; flex-direction: column; }
  .meal-head-actions { justify-content: flex-start; }
}
@media (max-width: 720px) {
  .meal-search { grid-template-columns: 1fr; padding: 13px; }
  .meal-search .search-grow, .meal-search .search-actions { grid-column: auto; }
  .meal-search .field { align-items: stretch; flex-direction: column; gap: 5px; }
  .meal-search .field label { line-height: 1.2; }
  .meal-search .search-actions .btn, .meal-head-actions .btn { flex: 1; }
  .meal-head { padding: 18px 18px 14px; }
  .meal-table th:nth-child(1), .meal-table td:nth-child(1), .meal-table th:nth-child(3), .meal-table td:nth-child(3) { display: none; }
  .meal-table th:nth-child(4), .meal-table td:nth-child(4) { width: 130px; }
  .meal-summary { justify-content: flex-start; padding: 12px 18px; }
  .meal-bulk-actions { align-items: stretch; }
  .meal-bulk-actions label, .meal-bulk-actions select, .meal-bulk-actions .btn, .meal-bulk-actions .bulk-help { width: 100%; }
}


/* 사업등록 */
.program-toolbar-panel,
.operation-toolbar-panel { padding: 16px; }
.program-search,
.operation-search { display:flex; gap:12px; align-items:end; flex-wrap:wrap; }
.program-search .field,
.operation-search .field { min-width:160px; }
.program-search .search-grow { flex:1 1 320px; }
.program-panel .panel-head { align-items:flex-start; }
.program-table th,
.program-table td { text-align:center; vertical-align:middle; }
.program-table td.text-left { text-align:left; min-width:220px; }
.program-table td.number,
.program-table th.number { text-align:right; font-variant-numeric:tabular-nums; }
.program-table tfoot th { background:#f6faf8; font-weight:800; }
.program-table small { display:block; margin-top:4px; color:#64748b; font-size:.78rem; }
.program-form-grid { display:grid; gap:18px; }
.program-class-line { display:grid; grid-template-columns:minmax(0, 1fr); gap:12px; align-items:stretch; }
.program-class-group { margin:0; padding:14px 14px 0; border:1px solid #d8ece3; border-radius:16px; background:#fbfdfc; min-width:0; }
.program-class-group legend { padding:0 7px; color:#176b43; font-size:13px; font-weight:900; letter-spacing:.02em; }
.program-class-fields { display:grid; grid-template-columns:82px minmax(0, 1fr); gap:10px; align-items:end; }
.program-class-fields .field { margin-bottom:14px; }
.program-class-fields .field label { margin-bottom:5px; font-size:12px; color:#64748b; }
.program-class-fields input { min-width:0; }
.program-meta-line { display:grid; grid-template-columns:minmax(150px, 220px) 1fr; gap:12px; align-items:end; }
.program-status-field { margin-bottom:0; }
.program-form-grid .full { grid-column:1 / -1; margin-bottom:0; }
.program-example-panel { margin-top:16px; }
.example-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
.example-grid > div { border:1px solid #d8ece3; background:#f8fcfa; border-radius:16px; padding:14px; }
.example-grid strong { display:block; color:#147344; margin-bottom:6px; }
.example-grid span { color:#334155; }
.danger-panel { border-color:#fecaca; background:#fffafa; }
.btn.danger { background:#dc2626; color:#fff; border-color:#dc2626; }
.text-button.danger { color:#dc2626; }
.program-table th:last-child,
.program-table td.program-manage-actions { width:112px; min-width:112px; }
.program-manage-actions { text-align:center; white-space:nowrap; }
.program-action-row { display:inline-flex; align-items:center; justify-content:center; gap:8px; flex-wrap:nowrap; }
.program-delete-form { display:inline-flex; align-items:center; margin:0; padding:0; }
.program-action-link { display:inline-flex; align-items:center; justify-content:center; min-width:38px; height:30px; padding:0 9px; border:1px solid #d7e6df; border-radius:999px; background:#fff; color:#176b43; font-size:13px; font-weight:900; line-height:1; text-decoration:none; cursor:pointer; white-space:nowrap; box-sizing:border-box; }
.program-action-link:hover { background:#f2fbf6; border-color:#b7dfc9; color:#0f7a44; text-decoration:none; }
.program-action-link.delete { border-color:#fecaca; color:#dc2626; background:#fffafa; }
.program-action-link.delete:hover { background:#fef2f2; border-color:#fca5a5; color:#b91c1c; }

/* 운영일지 */
.operation-print-sheet {
  max-width:1120px;
  margin:0 auto;
  background:linear-gradient(180deg,#ffffff 0%,#fbfefc 100%);
  border:1px solid #d9ebe2;
  border-radius:26px;
  padding:30px;
  box-shadow:0 18px 44px rgba(15, 52, 35, .08);
  color:#1e293b;
  font-size:14px;
  line-height:1.55;
}
.operation-title {
  position:relative;
  overflow:hidden;
  display:grid;
  grid-template-columns:minmax(0, 1fr) auto;
  align-items:start;
  gap:18px;
  text-align:left;
  border:1px solid #cfe6da;
  border-radius:22px;
  padding:24px 24px 20px;
  margin-bottom:22px;
  background:radial-gradient(circle at top left, rgba(34, 197, 94, .14), transparent 32%), linear-gradient(135deg,#f4fbf7 0%,#ffffff 72%);
}
.operation-title:before {
  content:"";
  position:absolute;
  left:50%;
  bottom:0;
  width:180px;
  height:4px;
  transform:translateX(-50%);
  border-radius:999px 999px 0 0;
  background:linear-gradient(90deg,#2f9d62,#1f7a4d);
}
.operation-title-text { min-width:0; text-align:center; align-self:center; }
.operation-title h1 { margin:0; font-size:2rem; line-height:1.2; letter-spacing:-.04em; color:#123524; font-weight:900; }
.operation-title p { display:inline-flex; align-items:center; justify-content:center; margin:12px 0 0; padding:6px 16px; border-radius:999px; background:#eaf7ef; color:#176b43; font-size:.98rem; font-weight:900; }
.operation-approval-box { position:static; justify-self:end; z-index:2; display:flex; align-items:stretch; background:#fff; border-radius:12px; box-shadow:0 8px 18px rgba(15, 52, 35, .10); overflow:hidden; }
.operation-approval-box > span { display:flex; align-items:center; justify-content:center; width:34px; min-height:82px; border:1px solid #9bb7a9; border-right:0; background:#f6fbf8; color:#173b29; font-weight:900; writing-mode:vertical-rl; letter-spacing:.12em; }
.operation-approval-box table { border-collapse:collapse; width:168px; min-height:82px; table-layout:fixed; }
.operation-approval-box th,
.operation-approval-box td { border:1px solid #9bb7a9; text-align:center; vertical-align:middle; }
.operation-approval-box th { height:28px; background:#eef8f3; color:#173b29; font-size:.88rem; font-weight:900; }
.operation-approval-box td { height:52px; background:#fff; }
.operation-section {
  margin-top:18px;
  padding:18px;
  border:1px solid #e1eee8;
  border-radius:20px;
  background:#fff;
  box-shadow:0 8px 20px rgba(15, 40, 25, .045);
}
.operation-section h2 { display:flex; align-items:center; gap:8px; margin:0 0 12px; font-size:1.08rem; line-height:1.3; color:#17452d; font-weight:900; letter-spacing:-.02em; }
.operation-section h2:before { content:""; display:inline-block; width:8px; height:22px; border-radius:999px; background:#2f9d62; box-shadow:0 0 0 4px #edf8f1; }
.operation-table { width:100%; border-collapse:separate; border-spacing:0; overflow:hidden; border:1px solid #d6e4dd; border-radius:16px; background:#fff; table-layout:auto; }
.operation-table th,
.operation-table td { border:0; border-right:1px solid #d6e4dd; border-bottom:1px solid #d6e4dd; padding:10px 11px; text-align:center; vertical-align:middle; font-size:.93rem; line-height:1.45; word-break:keep-all; }
.operation-table th:last-child,
.operation-table td:last-child { border-right:0; }
.operation-table tbody tr:last-child td,
.operation-table tfoot tr:last-child th { border-bottom:0; }
.operation-table th { background:linear-gradient(180deg,#eef8f3 0%,#e6f3ec 100%); color:#173b29; font-weight:900; white-space:nowrap; }
.operation-table tbody tr:nth-child(even) td { background:#fbfdfc; }
.operation-table tbody tr:hover td { background:#f6fbf8; }
.operation-table td.reason { text-align:left; min-width:210px; color:#334155; }
.operation-table td.staff-hr-detail { text-align:left; min-width:220px; color:#334155; line-height:1.5; }
.operation-table.staff-overview-table th:nth-child(1),
.operation-table.staff-overview-table th:nth-child(2),
.operation-table.staff-overview-table th:nth-child(3),
.operation-table.staff-overview-table th:nth-child(4) { width:8.5%; }
.operation-table.staff-overview-table th:nth-child(5),
.operation-table.staff-overview-table td:nth-child(5) { width:34%; }
.operation-table.staff-overview-table th:nth-child(6),
.operation-table.staff-overview-table td:nth-child(6) { width:32%; }

.operation-table td.text-left { text-align:left; color:#334155; }
.operation-table td strong { font-size:1.15rem; color:#125a36; font-weight:900; font-variant-numeric:tabular-nums; }
/* 합계행은 본문 마지막 행과 맞닿는 위쪽 선을 항상 표시한다. */
.operation-table tfoot tr:first-child > th,
.operation-table tfoot tr:first-child > td { border-top:1px solid #d6e4dd; }
.operation-table tfoot th { background:#f0f8f3; color:#0f5132; font-size:.98rem; font-weight:900; }
.operation-table .empty-line { padding:18px 12px; color:#64748b; background:#fbfdfc; }
.operation-print-sheet .program-table td.text-left { min-width:0; }
.operation-print-sheet .program-table th:last-child { width:auto; min-width:0; }
.operation-sign {
  display:flex;
  justify-content:space-between;
  gap:20px;
  margin-top:22px;
  padding:18px 20px;
  border:1px dashed #b9d8c9;
  border-radius:16px;
  background:#f8fcfa;
  color:#334155;
  font-size:.98rem;
  font-weight:800;
}

@media (max-width: 980px) {
  .program-class-line { grid-template-columns:1fr; }
  .program-meta-line { grid-template-columns:1fr; }
}
@media (max-width: 860px) {
  .example-grid { grid-template-columns:1fr; }
  .program-class-fields { grid-template-columns:78px minmax(0, 1fr); }
  .program-search,
  .operation-search { display:grid; grid-template-columns:1fr; }
}
@media (max-width: 520px) {
  .program-class-fields { grid-template-columns:1fr; gap:0; }
  .program-class-group { padding:13px 12px 0; }
}
@media (max-width: 720px) {
  .operation-title { grid-template-columns:1fr; padding:20px 16px 18px; text-align:center; }
  .operation-approval-box { justify-self:center; margin:0 auto; max-width:210px; }
}

@media print {
  @page { size:A4 portrait; margin:10mm; }
  body { background:#fff !important; color:#111827; }
  .site-header, .print-hide, .user-box, .skip-link, .site-footer { display:none !important; }
  .page-shell { max-width:none; margin:0; padding:0; }
  .operation-print-sheet { max-width:none; border:0; box-shadow:none; border-radius:0; padding:0; background:#fff; font-size:9.4pt; line-height:1.35; }
  .operation-title { display:block; position:relative; min-height:76px; margin:0 0 10px; padding:4mm 42mm 5mm 0; border:0; border-radius:0; background:#fff; }
  .operation-title:before { display:none; }
  .operation-title-text { text-align:center; align-self:auto; padding-top:2mm; }
  .operation-title h1 { font-size:19pt; letter-spacing:-.02em; color:#000; }
  .operation-title p { margin-top:5px; padding:0; background:transparent; color:#000; font-size:10.5pt; }
  .operation-approval-box { position:absolute; top:0; right:0; justify-self:auto; border-radius:0; box-shadow:none; background:#fff; }
  .operation-approval-box > span { width:24px; min-height:auto; height:70px; border-color:#111; background:#fff; color:#000; font-size:8.5pt; }
  .operation-approval-box table { width:132px; min-height:auto; height:70px; }
  .operation-approval-box th, .operation-approval-box td { border-color:#111; color:#000; width:44px; }
  .operation-approval-box th { height:24px; background:#fff !important; font-size:8pt; }
  .operation-approval-box td { height:46px; }
  .operation-section { margin-top:9px; padding:0; border:0; border-radius:0; box-shadow:none; background:#fff; break-inside:avoid; page-break-inside:avoid; }
  .operation-section h2 { margin:0 0 5px; font-size:11.2pt; color:#000; }
  .operation-section h2:before { width:5px; height:14px; box-shadow:none; background:#000; }
  .operation-table { border:1px solid #333; border-radius:0; }
  .operation-table th, .operation-table td { border-color:#555; padding:4.5px 5px; font-size:8.8pt; line-height:1.28; }
  .operation-table th { background:#f1f5f9 !important; color:#000; }
  .operation-table td strong { color:#000; font-size:10pt; }
  .operation-table td.reason { min-width:0; }
  .operation-table td.staff-hr-detail { min-width:0; }
  /* 인쇄할 때 합계 위의 경계선이 누락되지 않도록 강제로 출력 */
  .operation-table tfoot tr:first-child > th,
  .operation-table tfoot tr:first-child > td { border-top:1px solid #333 !important; }
  .operation-table tfoot th { background:#e5e7eb !important; color:#000; font-size:9.2pt; }
  .operation-table tbody tr:nth-child(even) td, .operation-table tbody tr:hover td { background:#fff; }
  .operation-sign { margin-top:12px; padding:8px 10px; border:1px solid #333; border-radius:0; background:#fff; color:#000; font-size:9.5pt; }
  a { color:#000; text-decoration:none; }
}


/* 메뉴가 많을 때 줄바꿈 허용 */
@media (min-width: 981px) {
  .main-nav { flex-wrap: wrap; row-gap: 4px; }
  .main-nav a, .main-nav .nav-group-button { padding: 10px 10px; font-size: 14px; }
}

/* 사업등록와 사업실적 분리 */
.status-pill { display:inline-flex; align-items:center; justify-content:center; min-width:46px; border-radius:999px; padding:4px 10px; font-size:12px; font-weight:800; }
.status-pill.active { background:#edf8f0; color:#26713e; }
.status-pill.inactive { background:#f2f3f3; color:#6c7470; }
.program-result-form { margin:0; }
.program-result-table th:nth-child(4),
.program-result-table th:nth-child(5),
.program-result-table th:nth-child(6),
.program-result-table td:nth-child(4),
.program-result-table td:nth-child(5),
.program-result-table td:nth-child(6) { width:86px; }
.program-result-table .count-input { width:72px; min-height:36px; padding:7px 8px; border:1px solid #d9e3df; border-radius:8px; background:#fff; font:inherit; text-align:right; font-weight:700; }
.program-result-table .detail-content-input { width:100%; min-width:180px; min-height:48px; padding:7px 9px; border:1px solid #d9e3df; border-radius:8px; background:#fff; font:inherit; resize:vertical; }
.program-result-table .count-input:focus,
.program-result-table .detail-content-input:focus { outline:2px solid rgba(44, 143, 92, .18); border-color:#6bb48a; }
.program-toolbar-panel .program-search .search-actions { display:flex; align-items:center; gap:7px; flex-wrap:wrap; }
@media (max-width: 720px) {
  .program-result-table th:nth-child(2), .program-result-table td:nth-child(2) { display:none; }
  .program-result-table .count-input { width:100%; min-width:58px; }
}

/* 사업실적 전체/개별 지정 */
.program-bulk-actions {
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:9px;
  padding:14px 24px;
  background:#fbfcfb;
  border-bottom:1px solid var(--line);
}
.program-bulk-actions .bulk-title { font-weight:900; color:#1f3b2c; white-space:nowrap; }
.program-bulk-actions .bulk-help { font-size:13px; color:#647067; }
.program-bulk-actions .bulk-help strong { color:var(--green-dark); }
.program-result-table th:nth-child(7),
.program-result-table td:nth-child(7) { width:150px; }
.program-row-actions { white-space:nowrap; }
.program-row-actions .btn { margin:2px; }
.btn.mini { min-height:32px; padding:6px 10px; font-size:12px; border-radius:9px; }
.btn.danger-soft { color:#b91c1c; border-color:#fecaca; background:#fffafa; }
.btn.danger-soft:hover { background:#fee2e2; }
@media (max-width: 720px) {
  .program-bulk-actions { align-items:stretch; padding:12px 18px; }
  .program-bulk-actions .bulk-title, .program-bulk-actions .bulk-help, .program-bulk-actions .btn { width:100%; }
  .program-result-table th:nth-child(7), .program-result-table td:nth-child(7) { width:auto; }
  .program-row-actions { white-space:normal; }
  .program-row-actions .btn { width:100%; margin:2px 0; }
}

/* 사업등록 정렬·검색 보강 */
.program-search-enhanced {
  display:grid;
  grid-template-columns:minmax(240px, 1.7fr) minmax(140px, .8fr) minmax(110px, .65fr) auto;
  gap:10px;
  align-items:end;
}
.program-search-enhanced .field { min-width:0; }
.program-search-enhanced .field input,
.program-search-enhanced .field select { width:100%; }
.program-search-enhanced .search-actions { display:flex; gap:7px; align-items:center; justify-content:flex-end; flex-wrap:nowrap; }
.program-search-help { margin-top:10px; color:#64748b; font-size:13px; line-height:1.45; }
.program-search-help strong { color:#176b43; }
.program-table .sort-link { display:inline-flex; align-items:center; justify-content:center; gap:3px; color:#173b29; text-decoration:none; font-weight:900; }
.program-table .sort-link span { min-width:14px; color:#198754; font-size:12px; }
.program-table .sort-link:hover { color:#0f7a44; text-decoration:underline; text-underline-offset:3px; }
.program-table .sort-link.active { color:#0f7a44; }
@media (max-width: 1080px) {
  .program-search-enhanced { grid-template-columns:repeat(3, minmax(0, 1fr)); }
  .program-search-enhanced .search-grow { grid-column:1 / -1; }
  .program-search-enhanced .search-actions { justify-content:flex-start; }
}
@media (max-width: 720px) {
  .program-search-enhanced { grid-template-columns:1fr; }
  .program-search-enhanced .search-actions { flex-direction:column; align-items:stretch; }
  .program-search-enhanced .search-actions .btn { width:100%; }
  .program-table th:last-child,
  .program-table td.program-manage-actions { width:96px; min-width:96px; }
  .program-action-row { gap:5px; }
  .program-action-link { min-width:34px; height:28px; padding:0 7px; font-size:12px; }
}

/* 사업등록 리스트 왼쪽 정렬 */
.program-master-table th,
.program-master-table td { text-align:left; }
.program-master-table .sort-link { justify-content:flex-start; }
.program-master-table th:last-child,
.program-master-table td.program-manage-actions { text-align:center; }
.program-master-table td.program-manage-actions .program-action-row { justify-content:center; }
.program-master-table td.empty-line { text-align:center; }

/* Meal menu management */
.meal-menu-form { margin: 0; }
.meal-menu-table th:nth-child(1), .meal-menu-table td:nth-child(1) { width: 120px; text-align: center; }
.meal-menu-table th:nth-child(3), .meal-menu-table td:nth-child(3) { width: 260px; }
.meal-menu-table textarea,
.meal-menu-table input[type="text"] { width: 100%; min-height: 38px; padding: 8px 10px; border: 1px solid #d9e3df; border-radius: 8px; background: #fff; font: inherit; }
.meal-menu-table textarea { resize: vertical; line-height: 1.45; }
.meal-menu-log-table td.text-left { text-align: left; }
@media (max-width: 720px) {
  .meal-menu-table th:nth-child(1), .meal-menu-table td:nth-child(1) { width: 82px; }
  .meal-menu-table th:nth-child(3), .meal-menu-table td:nth-child(3) { width: auto; }
}

/* 사업실적 검색·정렬 */
.program-result-search .field { min-width:140px; }
.program-result-search .field input[type="search"] { width:100%; }
.program-result-search .search-grow { flex:1 1 260px; }
@media (max-width: 960px) {
  .program-result-search { display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); }
  .program-result-search .search-grow, .program-result-search .search-actions { grid-column:1 / -1; }
}
@media (max-width: 560px) {
  .program-result-search { grid-template-columns:1fr; }
}

/* 인사 - 출장관리 */
.page-actions { display: flex; align-items: center; justify-content: flex-end; gap: 8px; flex-wrap: wrap; }
.trip-search {
  display: grid;
  grid-template-columns: minmax(260px, 1fr) auto;
  gap: 12px;
  align-items: end;
  padding: 20px 24px;
  border-bottom: 1px solid var(--line);
}
.trip-search .field { margin-bottom: 0; }
.trip-search .search-actions { display: flex; align-items: center; justify-content: flex-end; gap: 7px; flex-wrap: wrap; }
.trip-table th:nth-child(1), .trip-table td:nth-child(1) { width: 115px; }
.trip-table th:nth-child(2), .trip-table td:nth-child(2) { width: 105px; }
.trip-table th:nth-child(6), .trip-table td:nth-child(6) { width: 70px; }
.trip-table th:nth-child(7), .trip-table td:nth-child(7) { width: 230px; }
.trip-linked-actions { display: flex; align-items: center; justify-content: center; gap: 6px; flex-wrap: wrap; min-width: 210px; }
.trip-linked-actions .btn { margin: 0; }
.form-section-title { margin: 22px 0 12px; font-size: 18px; }
.linked-doc-box {
  margin: 20px 0 4px;
  padding: 18px;
  border: 1px solid #dce8e1;
  border-radius: 16px;
  background: #fbfdfb;
}
.linked-doc-head h3 { margin: 0 0 6px; font-size: 18px; color: #173b29; }
.linked-doc-head p { margin: 0 0 14px; color: var(--muted); font-size: 13px; line-height: 1.5; }
.linked-doc-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.linked-doc-card { padding: 15px; border: 1px solid #dfe8e3; border-radius: 14px; background: #fff; }
.linked-doc-title { margin-bottom: 8px; font-weight: 900; color: #172b1f; }
.linked-doc-status { display: inline-flex; align-items: center; min-height: 26px; margin: 0 0 8px; padding: 4px 10px; border-radius: 999px; font-size: 12px; font-weight: 900; }
.linked-doc-status.done { color: #0f6f3f; background: #e9f7ef; }
.linked-doc-status.waiting { color: #8a5b00; background: #fff7df; }
.linked-doc-desc { min-height: 40px; margin: 0 0 12px; color: #5f6f66; font-size: 13px; line-height: 1.55; }
@media (max-width: 720px) { .linked-doc-grid { grid-template-columns: 1fr; } }
.linked-doc-print-note { margin-top: 8px; color: #176b43; font-size: 12px; font-weight: 800; }
.linked-doc-count { display: inline-flex; align-items: center; min-height: 26px; padding: 4px 8px; border-radius: 999px; background: #eef7f1; color: #176b43; font-size: 12px; font-weight: 900; }
.linked-doc-existing-list { display: grid; gap: 6px; margin: 8px 0 12px; padding: 8px; border: 1px solid #eef2ef; border-radius: 10px; background: #f8fbf9; }
.linked-doc-row { display: flex; align-items: center; justify-content: space-between; gap: 8px; font-size: 12px; color: #425048; }
.linked-doc-row span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.btn.tiny { min-height: 24px; padding: 4px 8px; font-size: 11px; border-radius: 8px; }

.trip-page-label { margin-bottom: 8px; color: #666; font-size: 12px; font-weight: 800; }
.trip-content-expanded { min-height: 160px; }

.trip-expense-grid {
  display: grid;
  grid-template-columns: 92px minmax(180px, 1.4fr) minmax(120px, .8fr) minmax(100px, .8fr);
  gap: 8px;
  align-items: center;
  margin-bottom: 18px;
}
.trip-expense-grid .trip-expense-head {
  padding: 10px;
  border-radius: 8px;
  background: #f5f8f6;
  color: var(--muted);
  font-weight: 800;
  text-align: center;
  font-size: 13px;
}
.trip-expense-grid label { margin: 0; font-weight: 800; text-align: center; }
.trip-expense-grid input { width: 100%; border: 1px solid #cfdad5; border-radius: 10px; background: #fff; padding: 10px 11px; color: var(--ink); outline: none; }
.trip-expense-grid input:focus { border-color: var(--green); box-shadow: 0 0 0 3px rgba(47,143,78,.12); }
.print-only { display: none; }
.trip-print-card {
  position: relative;
  width: 190mm;
  min-height: 260mm;
  margin: 0 auto 28px;
  padding: 16mm 12mm;
  background: #fff;
  color: #111;
  font-family: 'Malgun Gothic', '맑은 고딕', sans-serif;
  font-size: 14px;
}
.trip-print-card h1 { margin: 0; text-align: center; font-size: 30px; letter-spacing: 4px; }
.trip-print-card h2 { margin: 22px 0 8px; font-size: 16px; }
.trip-subtitle { margin: 4px 0 20px; text-align: center; font-size: 16px; }
.approval-box { position: absolute; top: 13mm; right: 12mm; display: flex; align-items: stretch; gap: 0; }
.approval-box > span { display: flex; align-items: center; justify-content: center; width: 24px; border: 1px solid #111; border-right: 0; font-weight: 800; }
.approval-box table { border-collapse: collapse; width: 132px; height: 70px; }
.approval-box th, .approval-box td { border: 1px solid #111; width: 44px; text-align: center; }
.approval-box th { height: 24px; font-weight: 800; }
.trip-form-table, .trip-expense-print { width: 100%; border-collapse: collapse; margin-top: 12px; }
.trip-form-table th, .trip-form-table td, .trip-expense-print th, .trip-expense-print td { border: 1px solid #111; padding: 9px 10px; vertical-align: top; }
.trip-form-table th { width: 120px; text-align: center; background: #fafafa; }
.trip-content-cell { min-height: 120px; line-height: 1.65; }
.trip-expense-print th { text-align: center; background: #fafafa; }
.trip-expense-print td { height: 42px; text-align: center; }
.receiver-box { float: right; min-width: 160px; }
.trip-declaration { margin: 28px 0 16px; text-align: center; }
.trip-sign-date { margin-top: 26px; text-align: center; }
.trip-sign-name { margin-top: 22px; text-align: right; padding-right: 36px; }
.trip-receiver { margin-top: 46px; }
@media (max-width: 900px) {
  .trip-search { grid-template-columns: 1fr; }
  .trip-search .search-actions { justify-content: flex-start; }
  .trip-expense-grid { grid-template-columns: 72px 1fr; }
  .trip-expense-grid .trip-expense-head { display: none; }
  .trip-expense-grid label { text-align: left; }
}
@media (max-width: 700px) {
  .page-actions .btn, .trip-search .search-actions .btn { flex: 1; }
  .trip-table th:nth-child(4), .trip-table td:nth-child(4), .trip-table th:nth-child(5), .trip-table td:nth-child(5), .trip-table th:nth-child(6), .trip-table td:nth-child(6) { display: none; }
}
@media print {
  body { background: #fff; }
  .site-header, .no-print, .page-head, .alert, .user-box, .skip-link, footer { display: none !important; }
  .page-shell { padding: 0 !important; max-width: none !important; }
  .print-only { display: block !important; }
  .trip-print-card { width: auto; min-height: auto; margin: 0; padding: 12mm; box-shadow: none; }
  .trip-follow-page { break-before: page; page-break-before: always; }
  .trip-print-page { break-inside: auto; page-break-inside: auto; }
  @page { size: A4 portrait; margin: 10mm; }
}

/* 인사 - 출장대장 */
.trip-ledger-search {
  grid-template-columns: 150px minmax(260px, 1fr) auto;
}
.trip-ledger-panel {
  overflow: hidden;
}
.ledger-title h1 {
  margin: 0 0 14px;
  text-align: center;
  font-size: 24px;
  letter-spacing: 1px;
}
.ledger-table-wrap {
  overflow-x: auto;
}
.trip-ledger-table {
  min-width: 1180px;
  font-size: 13px;
}
.trip-ledger-table th,
.trip-ledger-table td {
  text-align: left;
  vertical-align: top;
  word-break: keep-all;
}
.trip-ledger-table th {
  text-align: center;
}
.trip-ledger-table .center {
  text-align: center;
}
.trip-ledger-table th:nth-child(1), .trip-ledger-table td:nth-child(1) { width: 46px; }
.trip-ledger-table th:nth-child(2), .trip-ledger-table td:nth-child(2) { width: 96px; }
.trip-ledger-table th:nth-child(3), .trip-ledger-table td:nth-child(3) { width: 90px; }
.trip-ledger-table th:nth-child(4), .trip-ledger-table td:nth-child(4) { width: 150px; }
.trip-ledger-table th:nth-child(5), .trip-ledger-table td:nth-child(5) { width: 135px; }
.trip-ledger-table th:nth-child(6), .trip-ledger-table td:nth-child(6) { width: 130px; }
.trip-ledger-table th:nth-child(7), .trip-ledger-table td:nth-child(7) { width: 190px; }
.trip-ledger-table th:nth-child(8), .trip-ledger-table td:nth-child(8) { width: 110px; }
.trip-ledger-table th:nth-child(9), .trip-ledger-table td:nth-child(9) { width: 90px; }
.trip-ledger-table th:nth-child(10), .trip-ledger-table td:nth-child(10) { width: 150px; }
.trip-ledger-table th:nth-child(11), .trip-ledger-table td:nth-child(11) { width: 160px; }
.ledger-subtext {
  margin-top: 4px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.45;
}
.ledger-doc-link {
  display: inline-block;
  margin: 2px 0;
  font-weight: 800;
  color: var(--green-dark);
}
@media (max-width: 900px) {
  .trip-ledger-search { grid-template-columns: 1fr; }
}
@media print {
  .trip-ledger-panel { box-shadow: none; border: 0; }
  .trip-ledger-table { min-width: 0; width: 100%; font-size: 8px; }
  .trip-ledger-table th, .trip-ledger-table td { padding: 4px 3px; }
  .ledger-subtext { font-size: 7px; }
  .ledger-doc-link { color: #111; font-weight: 400; text-decoration: none; }
}

/* 인사 - 초과근무관리 */
.overtime-table th:nth-child(1), .overtime-table td:nth-child(1) { width: 120px; }
.overtime-table th:nth-child(2), .overtime-table td:nth-child(2) { width: 100px; }
.overtime-table th:nth-child(3), .overtime-table td:nth-child(3) { width: 120px; }
.overtime-table th:nth-child(4), .overtime-table td:nth-child(4) { width: 120px; }
.overtime-table th:nth-child(5), .overtime-table td:nth-child(5) { width: 80px; text-align: center; }
.overtime-table th:nth-child(7), .overtime-table td:nth-child(7) { width: 210px; }
.overtime-time-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.overtime-print-card h1 { letter-spacing: 1px; }
.overtime-form-table th { width: 74px; }
.overtime-form-table td { min-width: 60px; }
.overtime-ledger-table { min-width: 1080px; }
.overtime-ledger-table th:nth-child(1), .overtime-ledger-table td:nth-child(1) { width: 45px; }
.overtime-ledger-table th:nth-child(2), .overtime-ledger-table td:nth-child(2) { width: 105px; }
.overtime-ledger-table th:nth-child(3), .overtime-ledger-table td:nth-child(3) { width: 90px; }
.overtime-ledger-table th:nth-child(4), .overtime-ledger-table td:nth-child(4) { width: 105px; }
.overtime-ledger-table th:nth-child(5), .overtime-ledger-table td:nth-child(5) { width: 65px; }
.overtime-ledger-table th:nth-child(6), .overtime-ledger-table td:nth-child(6) { width: 65px; }
.overtime-ledger-table th:nth-child(7), .overtime-ledger-table td:nth-child(7) { width: 70px; }
.overtime-ledger-table th:nth-child(8), .overtime-ledger-table td:nth-child(8) { width: 230px; }
.overtime-ledger-table th:nth-child(9), .overtime-ledger-table td:nth-child(9) { width: 105px; }
.overtime-ledger-table th:nth-child(10), .overtime-ledger-table td:nth-child(10) { width: 145px; }
.overtime-ledger-table th:nth-child(11), .overtime-ledger-table td:nth-child(11) { width: 160px; }
@media (max-width: 700px) {
  .overtime-table th:nth-child(3), .overtime-table td:nth-child(3), .overtime-table th:nth-child(4), .overtime-table td:nth-child(4), .overtime-table th:nth-child(5), .overtime-table td:nth-child(5) { display: none; }
  .overtime-time-grid { grid-template-columns: 1fr; }
}
@media print {
  .overtime-ledger-table { min-width: 0; width: 100%; font-size: 8px; }
  .overtime-ledger-table th, .overtime-ledger-table td { padding: 4px 3px; }
  .overtime-form-table th, .overtime-form-table td { padding: 8px 6px; }
}

/* 인사 - 휴가관리 */
.vacation-table th:nth-child(1), .vacation-table td:nth-child(1) { width: 120px; }
.vacation-table th:nth-child(2), .vacation-table td:nth-child(2) { width: 100px; }
.vacation-table th:nth-child(3), .vacation-table td:nth-child(3) { width: 110px; }
.vacation-table th:nth-child(4), .vacation-table td:nth-child(4) { width: 130px; }
.vacation-table th:nth-child(7), .vacation-table td:nth-child(7) { width: 90px; text-align: center; }
.vacation-table th:nth-child(8), .vacation-table td:nth-child(8) { width: 110px; }
.vacation-staff-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.vacation-days-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.vacation-print-card h1 { letter-spacing: 2px; margin-bottom: 40px; }
.vacation-form-table th { width: 98px; }
.vacation-ledger-search { grid-template-columns: 190px 145px 145px minmax(220px, 1fr) auto; }
.vacation-ledger-search.all { grid-template-columns: 145px 145px minmax(260px, 1fr) auto; }
.vacation-ledger-panel { overflow: hidden; padding: 22px; }
.vacation-ledger-panel .ledger-title { margin-bottom: 14px; text-align: center; }
.vacation-ledger-panel .ledger-title p { margin: 4px 0 0; color: var(--muted); }
.vacation-ledger-head { width: 100%; border-collapse: collapse; margin-bottom: 12px; }
.vacation-ledger-head th, .vacation-ledger-head td { border: 1px solid var(--line); padding: 10px 12px; }
.vacation-ledger-head th { width: 86px; background: #f5f8f6; text-align: center; }
.vacation-person-ledger-table { min-width: 940px; }
.vacation-all-ledger-table { min-width: 1120px; }
.vacation-person-ledger-table th:nth-child(1), .vacation-person-ledger-table td:nth-child(1),
.vacation-all-ledger-table th:nth-child(1), .vacation-all-ledger-table td:nth-child(1) { width: 46px; }
.vacation-person-ledger-table th:nth-child(5), .vacation-person-ledger-table td:nth-child(5),
.vacation-person-ledger-table th:nth-child(6), .vacation-person-ledger-table td:nth-child(6),
.vacation-person-ledger-table th:nth-child(7), .vacation-person-ledger-table td:nth-child(7),
.vacation-all-ledger-table th:nth-child(8), .vacation-all-ledger-table td:nth-child(8),
.vacation-all-ledger-table th:nth-child(9), .vacation-all-ledger-table td:nth-child(9),
.vacation-all-ledger-table th:nth-child(10), .vacation-all-ledger-table td:nth-child(10) { width: 95px; }
.ledger-footer-print { margin-top: 18px; text-align: right; font-weight: 700; }
@media (max-width: 980px) {
  .vacation-ledger-search, .vacation-ledger-search.all { grid-template-columns: 1fr; }
  .vacation-staff-grid, .vacation-days-grid { grid-template-columns: 1fr; }
}
@media (max-width: 700px) {
  .vacation-table th:nth-child(4), .vacation-table td:nth-child(4), .vacation-table th:nth-child(5), .vacation-table td:nth-child(5), .vacation-table th:nth-child(6), .vacation-table td:nth-child(6) { display: none; }
}
@media print {
  .vacation-ledger-panel { box-shadow: none; border: 0; padding: 0; }
  .vacation-ledger-head th, .vacation-ledger-head td { border-color: #111; padding: 5px 6px; }
  .vacation-person-ledger-table, .vacation-all-ledger-table { min-width: 0; width: 100%; font-size: 8px; }
  .vacation-person-ledger-table th, .vacation-person-ledger-table td,
  .vacation-all-ledger-table th, .vacation-all-ledger-table td { padding: 4px 3px; }
  .vacation-form-table th, .vacation-form-table td { padding: 8px 6px; }
}

/* 하위 사업실적 */
.program-sub-panel .muted {
  margin-top: -8px;
  color: var(--muted);
  line-height: 1.6;
}
.program-sub-form {
  margin-top: 18px;
  padding: 18px;
  border: 1px solid var(--border);
  border-radius: 18px;
  background: #fbfdff;
}
.program-sub-form-grid {
  display: grid;
  grid-template-columns: minmax(220px, 1.5fr) minmax(160px, .6fr);
  gap: 14px;
}
.program-sub-form-grid .full {
  grid-column: 1 / -1;
}
.program-sub-list-wrap {
  margin-top: 18px;
}
.program-sub-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 46px;
  padding: 6px 10px;
  border-radius: 999px;
  background: #eef7ff;
  color: #1769aa;
  font-weight: 700;
}
.program-child-result-row td {
  background: #fbfdff;
}
.program-sub-label {
  margin-bottom: 4px;
  color: #1769aa;
  font-weight: 700;
}
.program-sub-detail {
  color: var(--text);
  line-height: 1.55;
}
@media (max-width: 720px) {
  .program-sub-form-grid {
    grid-template-columns: 1fr;
  }
}

.program-code-badge{display:inline-flex;align-items:center;justify-content:center;min-width:42px;padding:2px 7px;border-radius:999px;background:#eef2ff;border:1px solid #c7d2fe;font-size:12px;font-weight:800;color:#1e3a8a;line-height:1.3;vertical-align:middle}
.program-sub-label .program-code-badge{margin-right:4px}

/* 초과근무 인쇄 - 일자 요일 줄바꿈 방지 */
@media print {
  .overtime-form-table tr:first-child th {
    width: 56px;
    padding-left: 4px;
    padding-right: 4px;
    white-space: nowrap;
  }
  .overtime-form-table tr:first-child td {
    padding-left: 5px;
    padding-right: 5px;
    white-space: nowrap;
    vertical-align: middle;
  }
  .overtime-form-table tr:first-child td:first-of-type {
    width: 150px;
    min-width: 150px;
    font-size: 12px;
  }
  .overtime-form-table tr:first-child td:nth-of-type(2),
  .overtime-form-table tr:first-child td:nth-of-type(3),
  .overtime-form-table tr:first-child td:nth-of-type(4) {
    width: 52px;
    min-width: 52px;
    text-align: center;
  }
}


/* 초과근무대장·출장대장·휴가대장 A4 가로 인쇄 */
@page ledger-landscape {
  size: A4 landscape;
  margin: 8mm;
}
@media print {
  .landscape-ledger-page {
    page: ledger-landscape;
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    overflow: visible !important;
  }
  .landscape-ledger-page .ledger-title h1 {
    margin: 0 0 5mm !important;
    font-size: 17pt !important;
    line-height: 1.2 !important;
    letter-spacing: 0 !important;
  }

  .landscape-ledger-page .ledger-title p {
    margin: 0 0 4mm !important;
    color: #111 !important;
    font-size: 9pt !important;
  }
  .landscape-ledger-page .vacation-ledger-head {
    width: 100% !important;
    margin: 0 0 4mm !important;
    table-layout: fixed !important;
    border-collapse: collapse !important;
    font-size: 8.5pt !important;
  }
  .landscape-ledger-page .vacation-ledger-head tr {
    break-inside: avoid;
    page-break-inside: avoid;
  }
  .landscape-ledger-page .vacation-ledger-head th,
  .landscape-ledger-page .vacation-ledger-head td {
    padding: 2mm 1.5mm !important;
    border-color: #222 !important;
    color: #111 !important;
    background: #fff !important;
    white-space: normal !important;
    word-break: keep-all !important;
  }
  .landscape-ledger-page .vacation-ledger-head th {
    width: 12% !important;
    font-weight: 700 !important;
  }
  .landscape-ledger-page .ledger-table-wrap {
    width: 100% !important;
    overflow: visible !important;
  }
  .landscape-ledger-page .trip-ledger-table,
  .landscape-ledger-page .overtime-ledger-table,
  .landscape-ledger-page .vacation-person-ledger-table,
  .landscape-ledger-page .vacation-all-ledger-table {
    width: 100% !important;
    min-width: 0 !important;
    table-layout: fixed !important;
    border-collapse: collapse !important;
    font-size: 7.5pt !important;
  }
  .landscape-ledger-page .trip-ledger-table thead,
  .landscape-ledger-page .overtime-ledger-table thead,
  .landscape-ledger-page .vacation-person-ledger-table thead,
  .landscape-ledger-page .vacation-all-ledger-table thead {
    display: table-header-group;
  }
  .landscape-ledger-page .trip-ledger-table tr,
  .landscape-ledger-page .overtime-ledger-table tr,
  .landscape-ledger-page .vacation-person-ledger-table tr,
  .landscape-ledger-page .vacation-all-ledger-table tr {
    break-inside: avoid;
    page-break-inside: avoid;
  }
  .landscape-ledger-page .trip-ledger-table th,
  .landscape-ledger-page .trip-ledger-table td,
  .landscape-ledger-page .overtime-ledger-table th,
  .landscape-ledger-page .overtime-ledger-table td,
  .landscape-ledger-page .vacation-person-ledger-table th,
  .landscape-ledger-page .vacation-person-ledger-table td,
  .landscape-ledger-page .vacation-all-ledger-table th,
  .landscape-ledger-page .vacation-all-ledger-table td {
    padding: 2.2mm 1mm !important;
    border-color: #222 !important;
    line-height: 1.25 !important;
    white-space: normal !important;
    word-break: break-word !important;
    overflow-wrap: anywhere !important;
  }
  .landscape-ledger-page .ledger-subtext {
    margin-top: 1mm !important;
    font-size: 6.5pt !important;
    line-height: 1.25 !important;
    color: #111 !important;
  }
  .landscape-ledger-page .ledger-doc-link {
    color: #111 !important;
    font-weight: 400 !important;
    text-decoration: none !important;
  }
}


/* 업무 메뉴: 업무실적 담당자 지정 및 업무일지 */
.work-result-table .work-staff-select {
  width:100%;
  min-width:130px;
  min-height:36px;
  padding:7px 9px;
  border:1px solid #d9e3df;
  border-radius:8px;
  background:#fff;
  font:inherit;
}
.work-result-table .work-staff-select:focus {
  outline:2px solid rgba(44,143,92,.18);
  border-color:#6bb48a;
}
.work-result-table th:nth-child(2),
.work-result-table td:nth-child(2) { width:150px; }
.work-result-table th:nth-child(4),
.work-result-table td:nth-child(4) { width:auto; }
.work-result-table th:nth-child(5),
.work-result-table th:nth-child(6),
.work-result-table th:nth-child(7),
.work-result-table td:nth-child(5),
.work-result-table td:nth-child(6),
.work-result-table td:nth-child(7) { width:86px; }
.work-result-table th:nth-child(8),
.work-result-table td:nth-child(8) { width:150px; }

.work-log-search {
  display:grid;
  grid-template-columns:minmax(180px,.7fr) minmax(220px,1fr) auto;
  gap:12px;
  align-items:end;
}
.work-log-search .field select { width:100%; }
.work-log-sheet .work-summary-table th,
.work-log-sheet .work-summary-table td { width:20%; }
.work-log-detail-table th:nth-child(1),
.work-log-detail-table td:nth-child(1) { width:13%; }
.work-log-detail-table th:nth-child(2),
.work-log-detail-table td:nth-child(2) { width:15%; }
.work-log-detail-table th:nth-child(3),
.work-log-detail-table td:nth-child(3) { width:22%; }
.work-log-detail-table th:nth-child(4),
.work-log-detail-table td:nth-child(4) { width:auto; }
.work-log-detail-table th:nth-child(5),
.work-log-detail-table th:nth-child(6),
.work-log-detail-table th:nth-child(7),
.work-log-detail-table td:nth-child(5),
.work-log-detail-table td:nth-child(6),
.work-log-detail-table td:nth-child(7) { width:7%; }
.work-log-detail-table small { color:#64748b; }

@media (max-width: 720px) {
  .work-result-table th:nth-child(2),
  .work-result-table td:nth-child(2) { display:table-cell; width:auto; }
  .work-result-table th:nth-child(3),
  .work-result-table td:nth-child(3) { display:none; }
  .work-result-table th:nth-child(8),
  .work-result-table td:nth-child(8) { width:auto; }
  .work-log-search { grid-template-columns:1fr; }
}
@media print {
  .work-log-sheet { width:100%; max-width:none; }
  .work-log-detail-table th,
  .work-log-detail-table td { font-size:8pt; padding:4px; }
}

/* 업무 2단계 분류·담당자 연결·업무영역별 통계 */
.work-class-two-level { grid-template-columns:repeat(2, minmax(0, 1fr)); }
.work-task-meta-line { grid-template-columns:minmax(260px, 1fr) minmax(150px, 220px); align-items:start; }
.work-task-meta-line select { width:100%; }
.work-task-meta-line small { display:block; margin-top:6px; color:#64748b; font-size:12px; line-height:1.45; }
.work-task-search { grid-template-columns:minmax(240px,1.5fr) minmax(145px,.75fr) minmax(165px,.85fr) minmax(110px,.55fr) auto; }
.work-master-table th:nth-child(1), .work-master-table td:nth-child(1) { width:44px; }
.work-master-table th:nth-child(2), .work-master-table td:nth-child(2) { width:145px; }
.work-master-table th:nth-child(3), .work-master-table td:nth-child(3) { width:175px; }
.work-master-table th:nth-child(4), .work-master-table td:nth-child(4) { width:260px; }
.work-master-table th:nth-child(6), .work-master-table td:nth-child(6) { width:82px; text-align:center; }
.work-master-table th:nth-child(7), .work-master-table td:nth-child(7) { width:100px; }

.work-result-search { display:grid; grid-template-columns:minmax(140px,.55fr) minmax(220px,1.2fr) minmax(135px,.62fr) minmax(150px,.7fr) minmax(145px,.68fr) auto; gap:10px; align-items:end; }
.work-result-search .search-actions { display:flex; gap:7px; justify-content:flex-end; flex-wrap:wrap; }
.work-area-summary { margin:18px 0 20px; padding:18px; border:1px solid #d8ece3; border-radius:16px; background:linear-gradient(180deg,#fbfefc 0%,#f4faf6 100%); }
.work-area-summary-head { display:flex; align-items:flex-end; justify-content:space-between; gap:18px; margin-bottom:12px; }
.work-area-summary-head h3 { margin:2px 0 0; font-size:1.15rem; color:#173b29; }
.work-area-summary-head p { margin:0; color:#64748b; font-size:13px; line-height:1.45; text-align:right; }
.work-area-summary-table th, .work-area-summary-table td { text-align:center; }
.work-area-summary-table th:first-child, .work-area-summary-table td:first-child { text-align:left; width:auto; }
.work-area-summary-table td strong { color:#125a36; }

.work-result-table th:nth-child(1), .work-result-table td:nth-child(1) { width:135px; }
.work-result-table th:nth-child(2), .work-result-table td:nth-child(2) { width:165px; }
.work-result-table th:nth-child(3), .work-result-table td:nth-child(3) { width:155px; }
.work-result-table th:nth-child(4), .work-result-table td:nth-child(4) { width:210px; }
.work-result-table th:nth-child(5), .work-result-table td:nth-child(5) { width:auto; min-width:210px; }
.work-result-table th:nth-child(6), .work-result-table td:nth-child(6),
.work-result-table th:nth-child(7), .work-result-table td:nth-child(7),
.work-result-table th:nth-child(8), .work-result-table td:nth-child(8) { width:76px; }
.work-result-table th:nth-child(9), .work-result-table td:nth-child(9) { width:145px; }

.work-area-log-summary-table th, .work-area-log-summary-table td { width:16%; }
.work-area-log-summary-table th:first-child, .work-area-log-summary-table td:first-child { width:36%; }
.work-log-detail-table th:nth-child(1), .work-log-detail-table td:nth-child(1) { width:11%; }
.work-log-detail-table th:nth-child(2), .work-log-detail-table td:nth-child(2) { width:13%; }
.work-log-detail-table th:nth-child(3), .work-log-detail-table td:nth-child(3) { width:15%; }
.work-log-detail-table th:nth-child(4), .work-log-detail-table td:nth-child(4) { width:18%; }
.work-log-detail-table th:nth-child(5), .work-log-detail-table td:nth-child(5) { width:auto; }
.work-log-detail-table th:nth-child(6), .work-log-detail-table td:nth-child(6),
.work-log-detail-table th:nth-child(7), .work-log-detail-table td:nth-child(7),
.work-log-detail-table th:nth-child(8), .work-log-detail-table td:nth-child(8) { width:6%; }

@media (max-width: 1120px) {
  .work-class-two-level { grid-template-columns:1fr; }
  .work-task-search { grid-template-columns:repeat(2, minmax(0,1fr)); }
  .work-task-search .search-grow, .work-task-search .search-actions { grid-column:1 / -1; }
  .work-result-search { grid-template-columns:repeat(2, minmax(0,1fr)); }
  .work-result-search .search-grow, .work-result-search .search-actions { grid-column:1 / -1; }
}
@media (max-width: 720px) {
  .work-task-meta-line, .work-task-search, .work-result-search { grid-template-columns:1fr; }
  .work-task-search .search-grow, .work-task-search .search-actions,
  .work-result-search .search-grow, .work-result-search .search-actions { grid-column:auto; }
  .work-area-summary { padding:14px 12px; }
  .work-area-summary-head { display:block; }
  .work-area-summary-head p { margin-top:7px; text-align:left; }
  .work-result-table th:nth-child(3), .work-result-table td:nth-child(3) { display:table-cell; width:auto; }
  .work-result-table th:nth-child(4), .work-result-table td:nth-child(4) { display:none; }
  .work-result-table th:nth-child(9), .work-result-table td:nth-child(9) { width:auto; }
}
@media print {
  .work-area-log-summary-table th, .work-area-log-summary-table td { font-size:8.5pt; padding:4px; }
  .work-log-detail-table th, .work-log-detail-table td { font-size:7.5pt; padding:3.5px; }
}

/* 업무실적합계 */
.work-summary-search .field { margin-bottom:0; flex:1 1 150px; }
.work-summary-search .field:nth-child(4),
.work-summary-search .field:nth-child(5) { flex-basis:190px; }
.work-summary-search .search-actions { display:flex; gap:7px; flex-wrap:wrap; align-items:center; }
.work-total-overview-table th,
.work-total-overview-table td { width:16.66%; }
.work-summary-area-table th:first-child,
.work-summary-area-table td:first-child { width:38%; }
.work-summary-detail-table th:nth-child(1),
.work-summary-detail-table td:nth-child(1) { width:20%; }
.work-summary-detail-table th:nth-child(2),
.work-summary-detail-table td:nth-child(2) { width:30%; }
.work-summary-staff-table th:first-child,
.work-summary-staff-table td:first-child { width:38%; }
.work-summary-staff-table small { color:#64748b; }
@media (max-width:860px) {
  .work-summary-search .field { width:100%; }
  .work-summary-search .search-actions { width:100%; }
}
@media print {
  .work-summary-detail-section { break-inside:auto; page-break-inside:auto; }
  .work-summary-sheet thead { display:table-header-group; }
  .work-summary-sheet tfoot { display:table-footer-group; }
  .work-summary-sheet tr { break-inside:avoid; page-break-inside:avoid; }
  .work-summary-sheet .operation-table th,
  .work-summary-sheet .operation-table td { font-size:8pt; padding:4px; }
}

/* 업무실적 화면 글자크기 통일 */
.work-result-page-head .attendance-head-actions .btn,
.work-result-toolbar-panel .btn,
.work-result-panel .btn {
  font-size:13px;
  line-height:1.4;
}
.work-result-page-head .attendance-head-actions .btn,
.work-result-toolbar-panel .btn,
.work-result-panel .attendance-head-actions .btn {
  min-height:40px;
  padding:8px 13px;
}
.work-result-toolbar-panel,
.work-result-panel {
  font-size:13px;
  line-height:1.45;
}
.work-result-search .field label,
.work-result-search .field input,
.work-result-search .field select,
.work-result-search .search-actions .btn {
  font-size:13px;
  line-height:1.4;
}
.work-result-search .field label {
  font-weight:800;
}
.work-result-panel .attendance-head h2 {
  font-size:20px;
  line-height:1.35;
}
.work-result-panel .panel-kicker {
  font-size:12px;
}
.work-result-form .program-bulk-actions,
.work-result-form .program-bulk-actions .bulk-title,
.work-result-form .program-bulk-actions .bulk-help,
.work-result-form .program-bulk-actions .btn {
  font-size:13px;
  line-height:1.45;
}
.work-result-form .program-bulk-actions .btn {
  min-height:36px;
  padding:7px 11px;
}
.work-result-table,
.work-result-table th,
.work-result-table td,
.work-result-table .sort-link,
.work-result-table .work-staff-select,
.work-result-table .detail-content-input,
.work-result-table .count-input,
.work-result-table .program-row-actions .btn {
  font-size:13px;
  line-height:1.45;
}
.work-result-table th,
.work-result-table td {
  padding:12px 10px;
}
.work-result-table .sort-link {
  min-height:24px;
}
.work-result-table .work-staff-select,
.work-result-table .detail-content-input,
.work-result-table .count-input {
  font-size:13px;
}
.work-result-table .program-row-actions .btn {
  min-height:32px;
  padding:6px 9px;
}
.work-result-form .attendance-summary,
.work-result-form .attendance-summary span,
.work-result-form .attendance-summary strong,
.work-result-form .attendance-summary .btn {
  font-size:13px;
  line-height:1.45;
}
@media (max-width:720px) {
  .work-result-page-head .attendance-head-actions .btn,
  .work-result-toolbar-panel .btn,
  .work-result-panel .btn {
    font-size:13px;
  }
  .work-result-table th,
  .work-result-table td {
    padding:10px 8px;
  }
}


/* 기관일정 */
.institution-schedule-toolbar-panel { padding:16px; }
.institution-schedule-form { margin:0; }
.institution-schedule-panel { overflow:hidden; }
.institution-schedule-fields { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; }
.institution-schedule-field { display:flex; flex-direction:column; min-width:0; padding:16px; border:1px solid #d8e9e0; border-radius:16px; background:#fbfdfc; }
.institution-schedule-field label { display:flex; flex-direction:column; gap:4px; margin-bottom:10px; }
.institution-schedule-field label strong { color:#176b43; font-size:1rem; font-weight:900; }
.institution-schedule-field label span { color:#64748b; font-size:.82rem; line-height:1.4; }
.institution-schedule-field textarea { width:100%; min-height:150px; padding:12px 13px; border:1px solid #cfdad5; border-radius:10px; background:#fff; color:var(--ink); line-height:1.55; resize:vertical; outline:none; }
.institution-schedule-field textarea:focus { border-color:var(--green); box-shadow:0 0 0 3px rgba(47,143,78,.12); }
.institution-schedule-summary { margin-top:16px; }
.institution-schedule-log-table { table-layout:fixed; }
.institution-schedule-log-table th,
.institution-schedule-log-table td { width:33.333%; }
.institution-schedule-log-table td { min-height:72px; vertical-align:top; white-space:normal; word-break:break-word; }

@media (max-width:900px) {
  .institution-schedule-fields { grid-template-columns:1fr; }
  .institution-schedule-field textarea { min-height:120px; }
}

@media print {
  .institution-schedule-log-table { table-layout:fixed; }
  .institution-schedule-log-table th,
  .institution-schedule-log-table td { width:33.333%; }
  .institution-schedule-log-table td { min-height:42px; vertical-align:top; white-space:normal; word-break:break-word; }
}

/* 출장 첨부파일 수정 화면: 기존 파일과 새 파일 선택을 명확히 구분 */
.attachment-upload-box { border: 1px solid var(--line); border-radius: 10px; padding: 12px; background: #fff; }
.attachment-field .current-file { margin-top: 0; display: flex; align-items: center; flex-wrap: wrap; gap: 7px; }
.attachment-field .current-file strong { color: var(--ink); }
.attachment-field .empty-current-file { color: var(--muted); }
.attachment-field .attachment-remove { display: inline-flex; align-items: center; gap: 5px; margin-left: 2px; }
.attachment-new-file { display: flex; align-items: center; flex-wrap: wrap; gap: 9px; margin-top: 10px; }
.attachment-file-input { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0, 0, 0, 0) !important; white-space: nowrap !important; border: 0 !important; }
.attachment-file-button { cursor: pointer; margin: 0; }
.attachment-file-name { min-width: 220px; color: var(--muted); font-size: 13px; line-height: 1.5; word-break: break-all; }
.attachment-file-name.has-file { color: var(--ink); font-weight: 700; }
.attachment-help { margin: 8px 0 0; color: var(--muted); font-size: 12px; line-height: 1.55; }
@media (max-width: 640px) { .attachment-file-name { min-width: 0; width: 100%; } }


/* ============================================================
   결재란 표준 디자인
   - 제공된 이미지와 동일한 2행 4열 표 구조
   - 왼쪽 결/재 통합칸, 담당/팀장/원장 제목칸과 서명칸
   ============================================================ */
.document-approval-box {
  width:270px;
  height:76px;
  margin:0;
  border-collapse:collapse;
  border-spacing:0;
  table-layout:fixed;
  background:#fff;
  color:#111;
  box-shadow:none;
  border-radius:0;
  overflow:visible;
  font-family:'Malgun Gothic','맑은 고딕',sans-serif;
  line-height:1;
  flex:0 0 auto;
}
.document-approval-box th,
.document-approval-box td {
  padding:0;
  border:1px solid #9aa4b2;
  background:#fff;
  color:#111;
  text-align:center;
  vertical-align:middle;
  box-sizing:border-box;
}
.document-approval-box th {
  height:31px;
  font-size:13px;
  line-height:31px;
  font-weight:800;
  white-space:nowrap;
}
.document-approval-box td {
  height:45px;
  font-size:12px;
}
.document-approval-box .document-approval-label {
  width:48px;
  height:76px;
  font-size:13px;
  line-height:1;
  font-weight:800;
  white-space:normal;
}
.document-approval-box .document-approval-label span {
  display:block;
  width:100%;
  line-height:1;
}
.document-approval-box .document-approval-label span + span {
  margin-top:20px;
}
.document-approval-box th:not(.document-approval-label),
.document-approval-box td {
  width:74px;
}
.operation-title .document-approval-box {
  position:static;
  justify-self:end;
  z-index:2;
}
.trip-print-card > .document-approval-box {
  position:absolute;
  top:13mm;
  right:12mm;
  z-index:2;
}
@media (max-width:720px) {
  .operation-title .document-approval-box {
    justify-self:center;
    margin:0 auto;
  }
}
@media print {
  .document-approval-box {
    width:56mm;
    height:20mm;
    margin:0;
    background:#fff !important;
    color:#000 !important;
    break-inside:avoid;
    page-break-inside:avoid;
  }
  .document-approval-box th,
  .document-approval-box td {
    border-color:#7f8996;
    background:#fff !important;
    color:#000 !important;
  }
  .document-approval-box th {
    height:8mm;
    font-size:9pt;
    line-height:8mm;
  }
  .document-approval-box td {
    height:12mm;
  }
  .document-approval-box .document-approval-label {
    width:10mm;
    height:20mm;
    font-size:9pt;
  }
  .document-approval-box .document-approval-label span + span {
    margin-top:5mm;
  }
  .document-approval-box th:not(.document-approval-label),
  .document-approval-box td {
    width:15.333mm;
  }
  .operation-title .document-approval-box {
    position:absolute;
    top:0;
    right:0;
    justify-self:auto;
  }
  .trip-print-card > .document-approval-box {
    position:absolute;
    top:13mm;
    right:12mm;
  }
}


/* ============================================================
   2026-07-16 출석부·급식 월현황 인쇄 / 결재란 사각형 선 정렬
   ============================================================ */
.document-approval-box {
  width:270px !important;
  height:76px !important;
  border:1px solid #7f8996 !important;
  border-collapse:separate !important;
  border-spacing:0 !important;
  table-layout:fixed !important;
  box-sizing:border-box !important;
  overflow:hidden !important;
  background:#fff !important;
}
.document-approval-box tr:first-child { height:30px !important; }
.document-approval-box tr:last-child { height:44px !important; }
.document-approval-box th,
.document-approval-box td {
  height:auto !important;
  padding:0 !important;
  border:0 !important;
  box-sizing:border-box !important;
  background:#fff !important;
  text-align:center !important;
  vertical-align:middle !important;
}
.document-approval-box .document-approval-label {
  width:48px !important;
  height:74px !important;
  border:0 !important;
}
.document-approval-box tr:first-child > th:not(.document-approval-label) {
  width:73.333px !important;
  border-left:1px solid #7f8996 !important;
  border-bottom:1px solid #7f8996 !important;
  line-height:30px !important;
}
.document-approval-box tr:last-child > td {
  width:73.333px !important;
  border-left:1px solid #7f8996 !important;
}
.document-approval-box .document-approval-label span + span { margin-top:20px !important; }

.monthly-record-toolbar { margin-bottom:18px; }
.monthly-record-search { display:grid; grid-template-columns:160px minmax(240px,1fr) 145px auto; gap:12px; align-items:end; }
.meal-month-search { grid-template-columns:150px 130px minmax(220px,1fr) 135px auto; }
.monthly-record-sheet { padding:24px; border:1px solid var(--line); border-radius:18px; background:#fff; box-shadow:var(--shadow); }
.record-title-row { display:grid; grid-template-columns:270px minmax(0,1fr) 270px; align-items:start; gap:10px; margin-bottom:12px; }
.record-title-text { text-align:center; }
.record-title-text h1 { margin:0; font-size:26px; letter-spacing:.06em; }
.record-title-text p { margin:4px 0 0; color:var(--muted); font-weight:700; }
.record-month-nav { display:flex; justify-content:flex-end; gap:8px; margin-bottom:12px; }
.monthly-record-table-wrap { overflow-x:auto; }
.monthly-record-table { width:100%; min-width:1320px; border-collapse:collapse; table-layout:fixed; font-size:10px; background:#fff; }
.monthly-record-table th,
.monthly-record-table td { border:1px solid #8b96a3; padding:3px 2px; height:27px; text-align:center; vertical-align:middle; line-height:1.15; }
.monthly-record-table th { background:#f3f6f8; font-weight:800; }
.monthly-record-table .record-no { width:32px; }
.monthly-record-table .record-code { width:58px; }
.monthly-record-table .record-name { width:72px; }
.monthly-record-table .record-group { width:48px; }
.monthly-record-table .record-day { width:28px; }
.monthly-record-table .record-day span,
.monthly-record-table .record-day small { display:block; line-height:1.05; }
.monthly-record-table .record-day small { margin-top:2px; font-size:8px; font-weight:700; }
.monthly-record-table .record-total { width:34px; }
.monthly-record-table .record-client-name { font-weight:800; white-space:nowrap; }
.monthly-record-table .sunday { background:#fff2f2; color:#a82121; }
.monthly-record-table .saturday { background:#f1f6ff; color:#245d9c; }
.monthly-record-table tfoot th,
.monthly-record-table tfoot td { background:#e9eef2; font-weight:800; }
.record-legend { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:12px; margin-top:10px; color:#4b5563; font-size:12px; font-weight:700; }
@media (max-width:900px) {
  .monthly-record-search, .meal-month-search { grid-template-columns:1fr; }
  .record-title-row { grid-template-columns:1fr; }
  .record-title-spacer { display:none; }
  .record-title-row .document-approval-box { justify-self:center; }
}
@page monthly-landscape { size:A4 landscape; margin:7mm; }
@media print {
  .landscape-record-sheet { page:monthly-landscape; width:100% !important; max-width:none !important; margin:0 !important; padding:0 !important; border:0 !important; border-radius:0 !important; box-shadow:none !important; overflow:visible !important; }
  .record-title-row { grid-template-columns:56mm minmax(0,1fr) 56mm; gap:2mm; margin:0 0 3mm; align-items:start; }
  .record-title-text h1 { font-size:16pt; letter-spacing:.02em; }
  .record-title-text p { margin-top:1mm; color:#000; font-size:9pt; }
  .monthly-record-table-wrap { overflow:visible !important; }
  .monthly-record-table { min-width:0 !important; width:100% !important; table-layout:fixed !important; font-size:5.7pt !important; }
  .monthly-record-table th,
  .monthly-record-table td { border-color:#555 !important; height:5.6mm !important; padding:.35mm .2mm !important; line-height:1.05 !important; }
  .monthly-record-table th { background:#f1f1f1 !important; color:#000 !important; }
  .monthly-record-table .record-no { width:6mm !important; }
  .monthly-record-table .record-code { width:10mm !important; }
  .monthly-record-table .record-name { width:13mm !important; }
  .monthly-record-table .record-group { width:8mm !important; }
  .monthly-record-table .record-day { width:auto !important; }
  .monthly-record-table .record-total { width:6.5mm !important; }
  .monthly-record-table .record-day small { font-size:4.8pt !important; }
  .monthly-record-table .sunday,
  .monthly-record-table .saturday { background:#fff !important; color:#000 !important; }
  .monthly-record-table thead { display:table-header-group; }
  .monthly-record-table tfoot { display:table-row-group; }
  .monthly-record-table tr { break-inside:avoid; page-break-inside:avoid; }
  .record-legend { margin-top:2mm; gap:5mm; color:#000; font-size:7pt; }
  .document-approval-box {
    width:56mm !important;
    height:20mm !important;
    border:0.25mm solid #555 !important;
  }
  .document-approval-box tr:first-child { height:8mm !important; }
  .document-approval-box tr:last-child { height:11.5mm !important; }
  .document-approval-box .document-approval-label { width:10mm !important; height:19.5mm !important; }
  .document-approval-box tr:first-child > th:not(.document-approval-label),
  .document-approval-box tr:last-child > td { width:15.166mm !important; border-left:0.25mm solid #555 !important; }
  .document-approval-box tr:first-child > th:not(.document-approval-label) { border-bottom:0.25mm solid #555 !important; line-height:8mm !important; }
  .document-approval-box .document-approval-label span + span { margin-top:5mm !important; }
}

/* ============================================================
   2026-07-16 급식 등록현황 월 달력 인쇄
   ============================================================ */
.meal-menu-calendar-toolbar { margin-bottom:18px; }
.meal-menu-calendar-search { display:flex; gap:12px; align-items:end; }
.meal-menu-calendar-search .field { width:180px; }
.meal-menu-calendar-sheet {
  padding:24px;
  border:1px solid var(--line);
  border-radius:18px;
  background:#fff;
  box-shadow:var(--shadow);
}
.meal-menu-calendar-title-row { margin-bottom:12px; }
.meal-menu-calendar {
  width:100%;
  border-collapse:collapse;
  table-layout:fixed;
  background:#fff;
}
.meal-menu-calendar th,
.meal-menu-calendar td {
  border:1px solid #7f8996;
  box-sizing:border-box;
}
.meal-menu-calendar th {
  height:36px;
  padding:7px 4px;
  background:#f3f6f8;
  text-align:center;
  font-size:13px;
  font-weight:800;
}
.meal-menu-calendar td {
  height:145px;
  padding:7px;
  vertical-align:top;
}
.meal-menu-calendar .sunday { color:#b42318; background:#fff4f2; }
.meal-menu-calendar .saturday { color:#175cd3; background:#eff8ff; }
.meal-menu-calendar .calendar-empty { background:#f8fafc; }
.calendar-day-head {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:6px;
  margin-bottom:6px;
  padding-bottom:5px;
  border-bottom:1px solid #e5e7eb;
}
.calendar-day-number { font-size:16px; font-weight:900; }
.calendar-edit-link { font-size:11px; font-weight:700; color:var(--brand); text-decoration:none; }
.calendar-meal-list { display:flex; flex-direction:column; gap:4px; }
.calendar-meal-row {
  display:grid;
  grid-template-columns:31px minmax(0,1fr);
  gap:4px;
  align-items:start;
  font-size:11px;
  line-height:1.25;
}
.calendar-meal-row strong {
  display:block;
  border-radius:4px;
  background:#edf2f7;
  padding:2px 3px;
  text-align:center;
  font-size:10px;
  white-space:nowrap;
}
.calendar-meal-row span {
  min-width:0;
  overflow-wrap:anywhere;
  white-space:pre-line;
}
.calendar-meal-row small {
  grid-column:2;
  display:block;
  color:#667085;
  font-size:9px;
  overflow-wrap:anywhere;
}
.calendar-no-menu {
  padding-top:22px;
  color:#98a2b3;
  text-align:center;
  font-size:11px;
  font-weight:700;
}
.meal-menu-calendar-summary {
  display:flex;
  flex-wrap:wrap;
  justify-content:flex-end;
  gap:14px;
  margin-top:10px;
  color:#475467;
  font-size:12px;
}
@media (max-width:900px) {
  .meal-menu-calendar-search { align-items:stretch; flex-direction:column; }
  .meal-menu-calendar-search .field { width:100%; }
  .meal-menu-calendar-sheet { overflow-x:auto; }
  .meal-menu-calendar { min-width:980px; }
}
@page meal-menu-calendar-landscape { size:A4 landscape; margin:7mm; }
@media print {
  .meal-menu-calendar-sheet {
    page:meal-menu-calendar-landscape;
    width:100% !important;
    max-width:none !important;
    margin:0 !important;
    padding:0 !important;
    border:0 !important;
    border-radius:0 !important;
    box-shadow:none !important;
    overflow:visible !important;
  }
  .meal-menu-calendar-title-row {
    grid-template-columns:56mm minmax(0,1fr) 56mm !important;
    gap:2mm !important;
    margin:0 0 3mm !important;
  }
  .meal-menu-calendar {
    width:100% !important;
    min-width:0 !important;
    table-layout:fixed !important;
    page-break-inside:avoid;
  }
  .meal-menu-calendar th,
  .meal-menu-calendar td {
    border:0.25mm solid #555 !important;
    color:#000 !important;
  }
  .meal-menu-calendar th {
    height:7mm !important;
    padding:1mm !important;
    background:#f1f1f1 !important;
    font-size:8pt !important;
  }
  .meal-menu-calendar td {
    height:25mm !important;
    padding:1.1mm !important;
    background:#fff !important;
  }
  .meal-menu-calendar .calendar-empty,
  .meal-menu-calendar .sunday,
  .meal-menu-calendar .saturday {
    background:#fff !important;
    color:#000 !important;
  }
  .calendar-day-head {
    margin-bottom:1mm !important;
    padding-bottom:.7mm !important;
    border-bottom:0.2mm solid #aaa !important;
  }
  .calendar-day-number { font-size:9pt !important; }
  .calendar-meal-list { gap:.7mm !important; }
  .calendar-meal-row {
    grid-template-columns:8mm minmax(0,1fr) !important;
    gap:.8mm !important;
    font-size:6.4pt !important;
    line-height:1.12 !important;
  }
  .calendar-meal-row strong {
    padding:.3mm .4mm !important;
    border:0.2mm solid #aaa !important;
    border-radius:0 !important;
    background:#fff !important;
    font-size:6pt !important;
  }
  .calendar-meal-row small { font-size:5.5pt !important; color:#000 !important; }
  .calendar-meal-row span { max-height:5.8mm; overflow:hidden; }
  .calendar-no-menu { padding-top:7mm !important; color:#777 !important; font-size:6pt !important; }
  .meal-menu-calendar-summary { margin-top:2mm !important; gap:5mm !important; color:#000 !important; font-size:7pt !important; }
}

/* ============================================================
   2026-07-16 공통 결재란 최종 고정형 GRID
   - 한 개의 외곽 사각형과 공유 격자선으로 선 깨짐·어긋남 방지
   - 왼쪽 통합칸: 결 / 한 줄 여백 / 재
   - 오른쪽: 담당·팀장·원장 / 하단 서명 빈칸
   ============================================================ */
.document-approval-box {
  display:grid !important;
  grid-template-columns:48px repeat(3, minmax(0, 1fr)) !important;
  grid-template-rows:30px 46px !important;
  width:270px !important;
  height:76px !important;
  margin:0 !important;
  padding:0 !important;
  border:1px solid #8f99a8 !important;
  border-collapse:initial !important;
  border-spacing:0 !important;
  box-sizing:border-box !important;
  overflow:hidden !important;
  background:#fff !important;
  color:#111 !important;
  border-radius:0 !important;
  box-shadow:none !important;
  font-family:'Malgun Gothic','맑은 고딕',sans-serif !important;
  line-height:1 !important;
  flex:0 0 auto !important;
  break-inside:avoid !important;
  page-break-inside:avoid !important;
}
.document-approval-box > div {
  min-width:0 !important;
  min-height:0 !important;
  margin:0 !important;
  padding:0 !important;
  border:0 !important;
  box-sizing:border-box !important;
  background:#fff !important;
  color:#111 !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  text-align:center !important;
  vertical-align:middle !important;
}
.document-approval-box .document-approval-label {
  grid-column:1 !important;
  grid-row:1 / 3 !important;
  width:auto !important;
  height:auto !important;
  border-right:1px solid #8f99a8 !important;
  flex-direction:column !important;
  gap:18px !important;
  font-size:13px !important;
  font-weight:800 !important;
  line-height:1 !important;
  white-space:normal !important;
}
.document-approval-box .document-approval-label span {
  display:block !important;
  width:auto !important;
  margin:0 !important;
  padding:0 !important;
  line-height:1 !important;
}
.document-approval-box .document-approval-label span + span {
  margin-top:0 !important;
}
.document-approval-box .document-approval-head {
  grid-row:1 !important;
  border-bottom:1px solid #8f99a8 !important;
  font-size:13px !important;
  font-weight:800 !important;
  line-height:30px !important;
  white-space:nowrap !important;
}
.document-approval-box .document-approval-sign {
  grid-row:2 !important;
  font-size:12px !important;
}
.document-approval-box .approval-staff { grid-column:2 !important; }
.document-approval-box .approval-team { grid-column:3 !important; border-left:1px solid #8f99a8 !important; }
.document-approval-box .approval-director { grid-column:4 !important; border-left:1px solid #8f99a8 !important; }

/* 대장 제목도 모든 화면과 인쇄에서 같은 3단 정렬을 사용 */
.ledger-title-row {
  display:grid;
  grid-template-columns:270px minmax(0, 1fr) 270px;
  align-items:start;
  gap:10px;
  margin:0 0 14px;
}
.ledger-title-row .ledger-title { text-align:center; }
.ledger-title-row .document-approval-box { justify-self:end; }

@media (max-width:900px) {
  .ledger-title-row { grid-template-columns:1fr; }
  .ledger-title-row .ledger-title-spacer { display:none; }
  .ledger-title-row .document-approval-box { justify-self:center; }
}

@media print {
  .document-approval-box {
    grid-template-columns:10mm repeat(3, minmax(0, 1fr)) !important;
    grid-template-rows:8mm 12mm !important;
    width:56mm !important;
    height:20mm !important;
    border:0.25mm solid #444 !important;
    background:#fff !important;
    color:#000 !important;
    print-color-adjust:exact;
    -webkit-print-color-adjust:exact;
  }
  .document-approval-box > div {
    background:#fff !important;
    color:#000 !important;
  }
  .document-approval-box .document-approval-label {
    border-right:0.25mm solid #444 !important;
    gap:5mm !important;
    font-size:9pt !important;
  }
  .document-approval-box .document-approval-head {
    border-bottom:0.25mm solid #444 !important;
    font-size:9pt !important;
    line-height:8mm !important;
  }
  .document-approval-box .approval-team,
  .document-approval-box .approval-director {
    border-left:0.25mm solid #444 !important;
  }
  .ledger-title-row {
    grid-template-columns:56mm minmax(0, 1fr) 56mm !important;
    gap:2mm !important;
    margin:0 0 3mm !important;
    align-items:start !important;
  }
}


/* ============================================================
   2026-07-16 출석부·급식 월현황·급식 등록현황 인쇄 제목 정렬
   - 제목은 인쇄용지의 정확한 가로 중앙
   - 결재란은 우측 상단 고정
   ============================================================ */
@media print {
  .record-title-row.print-centered-title-row {
    display:block !important;
    position:relative !important;
    min-height:20mm !important;
    width:100% !important;
    margin:0 0 3mm !important;
  }
  .record-title-row.print-centered-title-row .record-title-spacer {
    display:none !important;
  }
  .record-title-row.print-centered-title-row .record-title-text {
    position:absolute !important;
    top:0 !important;
    left:50% !important;
    width:110mm !important;
    max-width:110mm !important;
    margin:0 !important;
    padding:0 !important;
    transform:translateX(-50%) !important;
    text-align:center !important;
    z-index:1 !important;
  }
  .record-title-row.print-centered-title-row .record-title-text h1,
  .record-title-row.print-centered-title-row .record-title-text p {
    text-align:center !important;
  }
  .record-title-row.print-centered-title-row .document-approval-box {
    position:absolute !important;
    top:0 !important;
    right:0 !important;
    left:auto !important;
    margin:0 !important;
    transform:none !important;
    justify-self:auto !important;
    z-index:2 !important;
  }
}


/* ============================================================
   2026-07-16 모든 인쇄물 A4 세로/가로 선택
   - 공통 인쇄버튼 앞에 방향 선택 표시
   - 선택값은 화면과 인쇄 미리보기에 동일하게 적용
   ============================================================ */
.print-orientation-control {
  display:inline-flex;
  align-items:center;
  gap:7px;
  min-height:40px;
  padding:0 10px;
  border:1px solid #cbd5e1;
  border-radius:10px;
  background:#fff;
  color:#334155;
  font-size:13px;
  font-weight:700;
  white-space:nowrap;
  box-sizing:border-box;
}
.print-orientation-caption {
  line-height:1;
}
.print-orientation-select {
  min-width:88px;
  height:30px;
  padding:0 27px 0 8px;
  border:1px solid #94a3b8;
  border-radius:7px;
  background:#fff;
  color:#0f172a;
  font:inherit;
  font-weight:600;
  cursor:pointer;
}
.print-orientation-select:focus {
  outline:2px solid rgba(37,99,235,.28);
  outline-offset:1px;
  border-color:#2563eb;
}

@media (max-width:720px) {
  .print-orientation-control {
    width:100%;
    justify-content:space-between;
  }
  .print-orientation-select {
    flex:1 1 auto;
  }
}

@media print {
  .print-orientation-control {
    display:none !important;
  }

  /* 가로용 표를 세로로 선택한 경우에도 잘리지 않도록 글자와 여백을 자동 축소 */
  html[data-print-orientation="portrait"] .landscape-ledger-page table,
  html[data-print-orientation="portrait"] .landscape-record-sheet table,
  html[data-print-orientation="portrait"] .meal-menu-calendar-sheet table,
  html[data-print-orientation="portrait"] .work-log-print table,
  html[data-print-orientation="portrait"] .work-summary-print table {
    width:100% !important;
    table-layout:fixed !important;
    font-size:7pt !important;
  }
  html[data-print-orientation="portrait"] .landscape-ledger-page th,
  html[data-print-orientation="portrait"] .landscape-ledger-page td,
  html[data-print-orientation="portrait"] .landscape-record-sheet th,
  html[data-print-orientation="portrait"] .landscape-record-sheet td,
  html[data-print-orientation="portrait"] .meal-menu-calendar-sheet th,
  html[data-print-orientation="portrait"] .meal-menu-calendar-sheet td {
    padding:1mm .55mm !important;
    line-height:1.15 !important;
    overflow-wrap:anywhere !important;
    word-break:break-all !important;
  }
  html[data-print-orientation="portrait"] .meal-menu-calendar-sheet .meal-calendar-day {
    min-height:25mm !important;
  }
  html[data-print-orientation="portrait"] .meal-menu-calendar-sheet .meal-calendar-menu,
  html[data-print-orientation="portrait"] .meal-menu-calendar-sheet .meal-calendar-empty {
    font-size:6.5pt !important;
    line-height:1.12 !important;
  }

  /* 세로 선택 시 중앙 제목과 우측 결재란이 겹치지 않도록 제목 폭만 축소 */
  html[data-print-orientation="portrait"] .record-title-row.print-centered-title-row .record-title-text {
    width:70mm !important;
    max-width:70mm !important;
  }
  html[data-print-orientation="portrait"] .record-title-row.print-centered-title-row .record-title-text h1 {
    font-size:15pt !important;
    line-height:1.2 !important;
  }
  html[data-print-orientation="portrait"] .record-title-row.print-centered-title-row .record-title-text p {
    font-size:8pt !important;
  }
}


/* ============================================================
   2026-07-16 사업등록현황·업무등록현황 인쇄
   - 현재 조회·정렬 결과를 결재란과 함께 출력
   - 화면에서는 기존 등록 관리표 유지, 인쇄물은 관리버튼 제외
   ============================================================ */
.registration-status-print {
  width:100%;
  max-width:none;
  margin:0;
  padding:24px;
  border:1px solid var(--line);
  border-radius:18px;
  background:#fff;
  box-shadow:var(--shadow);
  box-sizing:border-box;
}
.registration-status-title-row { margin-bottom:14px; }
.registration-print-meta {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  margin:0 0 10px;
  color:#475569;
  font-size:12px;
  font-weight:700;
}
.registration-status-table {
  width:100%;
  border-collapse:collapse;
  table-layout:fixed;
  background:#fff;
  color:#111;
  font-size:12px;
}
.registration-status-table th,
.registration-status-table td {
  border:1px solid #8f99a8;
  padding:8px 7px;
  text-align:center;
  vertical-align:middle;
  line-height:1.35;
  overflow-wrap:anywhere;
  word-break:keep-all;
}
.registration-status-table th {
  background:#f3f6f8;
  font-weight:800;
}
.registration-status-table .registration-text-left { text-align:left; }
.registration-status-table .registration-empty { height:70px; color:#64748b; }
.registration-status-table .registration-col-no { width:6%; }
.registration-status-table .registration-col-area { width:22%; }
.program-registration-status-table .registration-col-detail { width:62%; }
.registration-status-table .registration-col-status { width:10%; }
.work-registration-status-table .registration-col-area { width:17%; }
.work-registration-status-table .registration-col-task { width:19%; }
.work-registration-status-table .registration-col-staff { width:14%; }
.work-registration-status-table .registration-col-detail { width:35%; }
.work-registration-status-table .registration-col-status { width:9%; }
.registration-print-footer {
  margin-top:8px;
  color:#64748b;
  font-size:11px;
  text-align:right;
}

@media print {
  .registration-status-print {
    page:monthly-landscape;
    width:100% !important;
    max-width:none !important;
    margin:0 !important;
    padding:0 !important;
    border:0 !important;
    border-radius:0 !important;
    box-shadow:none !important;
    overflow:visible !important;
  }
  .registration-status-title-row {
    margin-bottom:3mm !important;
  }
  .registration-print-meta {
    margin:0 0 2mm !important;
    color:#000 !important;
    font-size:8pt !important;
  }
  .registration-status-table {
    width:100% !important;
    table-layout:fixed !important;
    font-size:8pt !important;
  }
  .registration-status-table thead { display:table-header-group; }
  .registration-status-table tr {
    break-inside:avoid;
    page-break-inside:avoid;
  }
  .registration-status-table th,
  .registration-status-table td {
    border:0.25mm solid #555 !important;
    padding:1.5mm 1.2mm !important;
    color:#000 !important;
    line-height:1.25 !important;
  }
  .registration-status-table th {
    background:#f1f1f1 !important;
    print-color-adjust:exact;
    -webkit-print-color-adjust:exact;
  }
  .registration-status-table .registration-empty { height:24mm !important; }
  .registration-print-footer {
    margin-top:2mm !important;
    color:#000 !important;
    font-size:7pt !important;
  }

  html[data-print-orientation="portrait"] .registration-status-table {
    font-size:7pt !important;
  }
  html[data-print-orientation="portrait"] .registration-status-table th,
  html[data-print-orientation="portrait"] .registration-status-table td {
    padding:1mm .7mm !important;
    line-height:1.18 !important;
    word-break:break-all !important;
  }
}

/* ============================================================
   2026-07-16 모든 인쇄 문서 페이지 번호
   - 여러 장 출력 시 각 장 하단 중앙에 현재번호 / 전체번호 표시
   - Chrome·Edge의 CSS Paged Media margin box 사용
   - 세로·가로 및 이름 있는 @page에도 공통 적용
   ============================================================ */
@media print {
  @page {
    @bottom-center {
      content: counter(page) " / " counter(pages);
      font-family: "Malgun Gothic", "Apple SD Gothic Neo", Arial, sans-serif;
      font-size: 8pt;
      font-weight: 600;
      line-height: 1;
      color: #475569;
      vertical-align: middle;
    }
  }
}


/* 업무등록 담당자 일괄 수정 */
.work-bulk-panel { padding:20px 22px; }
.work-bulk-head { align-items:flex-start; gap:16px; }
.work-bulk-head p { margin:5px 0 0; color:#64748b; font-size:13px; line-height:1.5; }
.work-bulk-count { flex:0 0 auto; display:inline-flex; align-items:center; gap:4px; padding:7px 11px; border:1px solid #dbe7e0; border-radius:999px; background:#f8fbf9; color:#52645b; font-size:13px; font-weight:800; }
.work-bulk-count strong { color:#0f7a44; font-size:15px; }
.work-bulk-form { display:grid; grid-template-columns:minmax(240px, 380px) minmax(0, 1fr); gap:12px 16px; align-items:end; margin-top:16px; }
.work-bulk-staff-field select { width:100%; min-height:42px; }
.work-bulk-actions { display:flex; align-items:center; gap:8px; flex-wrap:wrap; padding-bottom:1px; }
.work-bulk-help { margin-top:10px; color:#64748b; font-size:12px; line-height:1.5; }
.work-select-col { width:44px; min-width:44px; text-align:center !important; }
.work-task-checkbox { width:17px; height:17px; margin:0; accent-color:#15803d; cursor:pointer; vertical-align:middle; }
@media (max-width:900px) {
  .work-bulk-form { grid-template-columns:1fr; }
  .work-bulk-actions { align-items:stretch; }
}
@media (max-width:620px) {
  .work-bulk-panel { padding:17px 16px; }
  .work-bulk-head { flex-direction:column; }
  .work-bulk-actions { flex-direction:column; }
  .work-bulk-actions .btn { width:100%; }
}


/* 업무등록 목록 담당자 개별 지정·저장 */
.work-row-staff-cell { min-width:250px; }
.work-row-staff-form { display:flex; align-items:center; justify-content:center; gap:6px; margin:0; }
.work-row-staff-form select { flex:1 1 auto; min-width:145px; max-width:190px; min-height:35px; padding:6px 30px 6px 9px; border:1px solid #cbd5e1; border-radius:8px; background:#fff; color:#1f2937; font-size:13px; }
.work-row-staff-save { flex:0 0 auto; min-height:35px; padding:7px 10px; font-size:12px; line-height:1; white-space:nowrap; }
.work-row-staff-form:focus-within select { border-color:#15803d; box-shadow:0 0 0 2px rgba(21,128,61,.10); outline:none; }
@media (max-width:900px) {
  .work-row-staff-cell { min-width:225px; }
  .work-row-staff-form { align-items:stretch; flex-direction:column; }
  .work-row-staff-form select { width:100%; max-width:none; }
  .work-row-staff-save { width:100%; }
}
@media print {
  .work-row-staff-form { display:none !important; }
}

/* 모든 인쇄표의 합계행 상단선 보강 */
@media print {
  table tfoot tr:first-child > th,
  table tfoot tr:first-child > td { border-top:1px solid #333 !important; }
}


/* 초과근무 신청·보고 근무시간 합계 */
.overtime-total-row > th,
.overtime-total-row > td { border-top:2px solid #7a8f84 !important; background:#f1f7f3; font-weight:800; }
.overtime-total-row > th { color:#215e3c; text-align:center; }
.overtime-total-row > td strong { color:#0f5132; font-size:1.04em; }
@media print {
  .overtime-total-row > th,
  .overtime-total-row > td { border-top:1px solid #222 !important; background:#e9ecea !important; color:#000 !important; }
  .overtime-total-row > td strong { color:#000 !important; }
}

/* ============================================================
   2026-07-16 초과근무 신청·보고 화면 압축형 카드 배치
   - 날짜·시간 6칸 가로 배치
   - 내용·비고 2칸 배치
   - 목록 내용 한 줄 말줄임 및 합계 카드화
   ============================================================ */
.overtime-content-summary { max-width:320px; }
.overtime-content-summary strong {
  display:block;
  max-width:100%;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  line-height:1.35;
}
.overtime-summary-cards {
  display:grid;
  grid-template-columns:repeat(4, minmax(0, 1fr));
  gap:10px;
  padding:14px 18px 18px;
  border-top:1px solid #edf1ef;
  background:#fbfdfc;
}
.overtime-summary-card {
  min-width:0;
  padding:12px 14px;
  border:1px solid #dfe9e3;
  border-radius:12px;
  background:#fff;
  box-shadow:0 5px 16px rgba(34,67,53,.05);
}
.overtime-summary-card span {
  display:block;
  margin-bottom:3px;
  color:#64748b;
  font-size:12px;
  font-weight:800;
}
.overtime-summary-card strong {
  display:block;
  color:#26362d;
  font-size:20px;
  line-height:1.25;
  white-space:nowrap;
}
.overtime-summary-card strong small {
  margin-left:3px;
  color:#64748b;
  font-size:12px;
}
.overtime-summary-card.accent { border-color:#cce4d4; background:#f1f9f4; }
.overtime-summary-card.accent strong { color:#176c3b; }
.overtime-summary-card.accent-blue { border-color:#cddfeb; background:#f2f8fc; }
.overtime-summary-card.accent-blue strong { color:#235e88; }

.overtime-compact-layout { max-width:1180px; }
.overtime-compact-form { padding:24px 26px 22px; overflow:hidden; }
.overtime-form-heading {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  padding-bottom:16px;
  border-bottom:1px solid #e4ebe7;
}
.overtime-form-heading h2 { margin:2px 0 0; font-size:22px; line-height:1.25; }
.overtime-form-kicker {
  display:block;
  color:#2f7f4c;
  font-size:11px;
  font-weight:900;
  letter-spacing:.1em;
}
.overtime-form-state {
  flex:0 0 auto;
  display:inline-flex;
  align-items:center;
  min-height:32px;
  padding:6px 12px;
  border:1px solid #cce4d4;
  border-radius:999px;
  background:#eff8f2;
  color:#176c3b;
  font-size:12px;
  font-weight:900;
}
.overtime-form-state.report { border-color:#cddfeb; background:#f1f7fb; color:#235e88; }
.overtime-linked-request {
  margin-top:14px;
  padding:10px 13px;
  border:1px solid #dbe8e1;
  border-radius:10px;
  background:#f7faf8;
  color:#64748b;
  font-size:13px;
}
.overtime-linked-request strong { margin-left:7px; color:#26362d; }
.overtime-input-section {
  margin-top:15px;
  padding:14px 16px 1px;
  border:1px solid #e0e9e4;
  border-radius:14px;
  background:#fbfdfc;
}
.overtime-input-section h3 {
  margin:0 0 10px;
  color:#3f5147;
  font-size:14px;
  line-height:1.3;
}
.overtime-schedule-grid {
  display:grid;
  grid-template-columns:repeat(6, minmax(0, 1fr));
  gap:10px;
}
.overtime-text-grid {
  display:grid;
  grid-template-columns:minmax(0, 1.45fr) minmax(0, .9fr);
  gap:12px;
}
.overtime-compact-form .field { min-width:0; margin-bottom:13px; }
.overtime-compact-form .field label { margin-bottom:5px; color:#4b5b52; font-size:12px; }
.overtime-compact-form .field input[type="text"],
.overtime-compact-form .field input[type="date"],
.overtime-compact-form .field input[type="time"],
.overtime-compact-form .field textarea {
  min-height:40px;
  padding:9px 10px;
  border-radius:9px;
  font-size:14px;
}
.overtime-compact-form .field textarea { min-height:88px; line-height:1.45; }
.overtime-hours-input { position:relative; }
.overtime-hours-input input { padding-right:42px !important; font-weight:900; color:#176c3b; }
.overtime-hours-input span {
  position:absolute;
  top:50%;
  right:11px;
  transform:translateY(-50%);
  color:#718078;
  font-size:12px;
  font-weight:800;
  pointer-events:none;
}
.overtime-form-bottom {
  display:grid;
  grid-template-columns:minmax(210px, 300px) minmax(0, 1fr);
  align-items:end;
  gap:16px;
  margin-top:14px;
  padding-top:15px;
  border-top:1px solid #e4ebe7;
}
.overtime-person-field { margin-bottom:0 !important; }
.overtime-form-actions {
  justify-content:flex-end;
  align-items:center;
  flex-wrap:wrap;
  padding-top:0;
}

@media (max-width:1100px) {
  .overtime-schedule-grid { grid-template-columns:repeat(3, minmax(0, 1fr)); }
}
@media (max-width:820px) {
  .overtime-summary-cards { grid-template-columns:repeat(2, minmax(0,1fr)); }
  .overtime-text-grid { grid-template-columns:1fr; gap:0; }
  .overtime-form-bottom { grid-template-columns:1fr; }
  .overtime-form-actions { justify-content:flex-start; }
  .overtime-person-field { max-width:none; }
}
@media (max-width:700px) {
  .overtime-compact-form { padding:19px 16px 17px; }
  .overtime-form-heading { align-items:flex-start; }
  .overtime-schedule-grid { grid-template-columns:repeat(2, minmax(0, 1fr)); }
  .overtime-input-section { padding:13px 12px 1px; }
  .overtime-linked-request strong { display:block; margin:3px 0 0; }
  .overtime-content-summary { max-width:180px; }
}
@media (max-width:480px) {
  .overtime-summary-cards { grid-template-columns:1fr 1fr; padding:12px; }
  .overtime-summary-card { padding:10px; }
  .overtime-summary-card strong { font-size:17px; }
  .overtime-schedule-grid { grid-template-columns:1fr; }
  .overtime-form-state { display:none; }
  .overtime-form-actions { display:grid; grid-template-columns:1fr 1fr; width:100%; }
  .overtime-form-actions .btn { width:100%; text-align:center; }
}

/* ============================================================
   2026-07-16 초과근무 신청·보고 목록 글자 및 행간 축소
   - 입력 화면은 유지하고 상단 목록만 조금 더 촘촘하게 표시
   ============================================================ */
.overtime-list-panel .overtime-table {
  font-size:12.5px;
}
.overtime-list-panel .overtime-table th {
  padding:10px 8px;
  font-size:11.5px;
  line-height:1.25;
  white-space:nowrap;
}
.overtime-list-panel .overtime-table td {
  padding:9px 8px;
  font-size:12px;
  line-height:1.3;
  vertical-align:middle;
}
.overtime-list-panel .overtime-table td strong {
  font-size:12px;
}
.overtime-list-panel .overtime-table .trip-linked-actions {
  gap:5px;
  white-space:nowrap;
}
.overtime-list-panel .overtime-table .trip-linked-actions .btn {
  min-height:28px;
  padding:5px 7px;
  border-radius:7px;
  font-size:10.5px;
  line-height:1.15;
}
.overtime-list-panel .overtime-total-row > th,
.overtime-list-panel .overtime-total-row > td {
  padding-top:9px;
  padding-bottom:9px;
  font-size:11.5px;
}
.overtime-list-panel .overtime-total-row > td strong {
  font-size:12px;
}
@media (max-width:900px) {
  .overtime-list-panel .overtime-table { min-width:820px; }
  .overtime-list-panel .overtime-table th { padding:9px 6px; font-size:11px; }
  .overtime-list-panel .overtime-table td { padding:8px 6px; font-size:11.5px; }
  .overtime-list-panel .overtime-table td strong { font-size:11.5px; }
}

/* ============================================================
   2026-07-16 전체 화면 목록 글자 크기 통일
   - 게시판·이용자·출석·급식·사업·업무·인사 목록을 같은 크기로 정리
   - 입력 서식과 인쇄물은 변경하지 않고 화면 목록에만 적용
   ============================================================ */
@media screen {
  /* 모든 일반 목록표 */
  .board-table {
    font-size:12px;
    line-height:1.35;
  }
  .board-table th {
    padding:9px 8px;
    font-size:11.5px;
    line-height:1.25;
    white-space:nowrap;
  }
  .board-table td {
    padding:9px 8px;
    font-size:12px;
    line-height:1.35;
    vertical-align:middle;
  }
  .board-table td strong,
  .board-table td.title a,
  .board-table td.title strong {
    font-size:12px;
    line-height:1.3;
  }
  .board-table .table-subtext,
  .board-table small,
  .board-table .ledger-subtext {
    font-size:10.5px;
    line-height:1.3;
  }
  .board-table .status-pill,
  .board-table .role-badge,
  .board-table .status-badge,
  .board-table .self-badge,
  .board-table .client-status {
    padding:3px 7px;
    font-size:10.5px;
  }
  .board-table .btn.small,
  .board-table .btn.mini,
  .board-table .trip-linked-actions .btn,
  .board-table .program-row-actions .btn,
  .board-table .user-actions .btn,
  .board-table .ledger-doc-link {
    min-height:28px;
    padding:5px 8px;
    border-radius:7px;
    font-size:10.5px;
    line-height:1.15;
  }

  /* 목록 보조문구와 검색결과 */
  .table-summary,
  .client-list-note,
  .program-search-help,
  .bulk-help,
  .attendance-bulk-actions .bulk-help,
  .program-bulk-actions .bulk-help {
    font-size:11.5px;
    line-height:1.35;
  }
  .table-summary { padding:10px 18px; }
  .client-list-note { padding:8px 14px; }

  /* 일정 및 게시판형 목록 */
  .schedule-list { padding-top:5px; padding-bottom:16px; }
  .schedule-list.large { padding-top:7px; padding-bottom:20px; }
  .schedule-row {
    padding:12px 7px;
    gap:11px;
  }
  .schedule-time { font-size:12px; }
  .schedule-main strong { font-size:13.5px; line-height:1.3; }
  .schedule-main small { font-size:11.5px; line-height:1.35; }
  .compact-list a {
    padding:10px 2px;
    font-size:12.5px;
    line-height:1.35;
  }
  .compact-list time { font-size:11.5px; }

  /* 일정 검색결과 목록 */
  .schedule-search-row {
    padding-top:10px;
    padding-bottom:10px;
    font-size:12px;
    line-height:1.3;
  }
  .schedule-search-header { font-size:11px; }
  .schedule-search-main strong { font-size:12px; }
  .schedule-search-main small { font-size:10.5px; }
  .search-date,
  .search-time,
  .search-category,
  .search-author { font-size:11.5px; }

  /* 사업등록·업무등록 출력현황 화면표 */
  .registration-status-table { font-size:11.5px; }
  .registration-status-table th,
  .registration-status-table td {
    padding:6px 6px;
    line-height:1.3;
  }

  /* 대시보드의 표 제목·설명은 목록 크기에 맞추고 큰 인원수는 유지 */
  .status-overview-table th { padding:10px 8px; font-size:11.5px; }
  .status-overview-table td { padding:13px 8px; }
  .status-overview-table td.reason { font-size:12px; line-height:1.4; }
  .status-overview-table td small { font-size:10.5px; }
}

@media screen and (max-width:700px) {
  .board-table th { padding:8px 6px; font-size:11px; }
  .board-table td { padding:8px 6px; font-size:11.5px; }
  .board-table td strong,
  .board-table td.title a,
  .board-table td.title strong { font-size:11.5px; }
  .schedule-row { padding-top:10px; padding-bottom:10px; }
}


/* ============================================================
   2026-07-16 전체 인쇄물 컬러 디자인 통일
   - 울산무거복지센터 녹색을 중심으로 제목·표머리·합계·결재란 정리
   - 문서 가독성을 해치지 않는 연한 보조색과 교차행 배경 적용
   - Chrome·Edge 인쇄에서 배경색을 최대한 유지
   ============================================================ */
@media print {
  :root {
    --print-green:#2d6f4b;
    --print-green-dark:#174f36;
    --print-green-soft:#eaf4ed;
    --print-green-pale:#f5faf7;
    --print-blue:#2f6f98;
    --print-blue-soft:#edf5fa;
    --print-gold-soft:#fff4d8;
    --print-line:#6f8278;
    --print-ink:#183029;
  }

  html,
  body,
  body *,
  body *::before,
  body *::after {
    -webkit-print-color-adjust:exact !important;
    print-color-adjust:exact !important;
  }

  body {
    background:#fff !important;
    color:var(--print-ink) !important;
  }

  /* 문서 제목 */
  .operation-title h1,
  .record-title-text h1,
  .ledger-title h1,
  .trip-print-card > h1,
  .registration-status-print .record-title-text h1 {
    color:var(--print-green-dark) !important;
    font-weight:900 !important;
  }
  .operation-title p,
  .record-title-text p,
  .ledger-title p,
  .trip-subtitle,
  .registration-print-meta {
    color:var(--print-blue) !important;
  }
  .operation-title,
  .record-title-row.print-centered-title-row,
  .ledger-title-row {
    border-bottom:0.65mm solid #c8dfd1 !important;
    padding-bottom:1.4mm !important;
  }

  /* 운영일지·업무일지·업무실적합계의 구역 제목 */
  .operation-section h2 {
    margin-bottom:1.4mm !important;
    padding:.75mm 1.6mm !important;
    border-left:1.1mm solid var(--print-green) !important;
    border-bottom:0.25mm solid #bdd7c7 !important;
    border-radius:1mm !important;
    background:linear-gradient(90deg, var(--print-green-soft) 0%, #f8fbf9 72%, var(--print-blue-soft) 100%) !important;
    color:var(--print-green-dark) !important;
  }
  .operation-section h2::before {
    display:none !important;
  }

  /* 일반 현황표·대장·월별표의 표머리 */
  .operation-table thead th,
  .monthly-record-table thead th,
  .meal-menu-calendar thead th,
  .registration-status-table thead th,
  .trip-ledger-table thead th,
  .vacation-ledger-head th,
  .trip-expense-print thead th {
    border-color:var(--print-line) !important;
    background:var(--print-green) !important;
    color:#fff !important;
    font-weight:900 !important;
  }

  /* 서식형 문서의 좌측 항목명 */
  .trip-form-table th,
  .vacation-form-table th,
  .overtime-form-table th,
  .trip-expense-print tbody th {
    border-color:var(--print-line) !important;
    background:var(--print-green-soft) !important;
    color:var(--print-green-dark) !important;
    font-weight:900 !important;
  }
  .trip-form-table td,
  .trip-expense-print td {
    border-color:var(--print-line) !important;
    color:#172b25 !important;
  }

  /* 교차행과 강조 수치 */
  .operation-table tbody tr:nth-child(even) > td,
  .monthly-record-table tbody tr:nth-child(even) > td,
  .registration-status-table tbody tr:nth-child(even) > td,
  .trip-ledger-table tbody tr:nth-child(even) > td {
    background:var(--print-green-pale) !important;
  }
  .operation-table td strong,
  .monthly-record-table td strong,
  .trip-ledger-table td strong,
  .registration-status-table td strong {
    color:var(--print-green-dark) !important;
  }

  /* 합계행 */
  table tfoot tr:first-child > th,
  table tfoot tr:first-child > td,
  .operation-table tfoot th,
  .monthly-record-table tfoot th,
  .monthly-record-table tfoot td,
  .overtime-total-row > th,
  .overtime-total-row > td {
    border-top:0.7mm solid var(--print-green-dark) !important;
    background:var(--print-gold-soft) !important;
    color:var(--print-green-dark) !important;
    font-weight:900 !important;
  }
  .overtime-total-row > td strong {
    color:var(--print-green-dark) !important;
  }

  /* 출석부·급식 월현황의 토요일·일요일 */
  .monthly-record-table thead th.sunday,
  .meal-menu-calendar thead th.sunday {
    background:#b94b4b !important;
    color:#fff !important;
  }
  .monthly-record-table thead th.saturday,
  .meal-menu-calendar thead th.saturday {
    background:#3f72a8 !important;
    color:#fff !important;
  }
  .monthly-record-table tbody td.sunday,
  .meal-menu-calendar td.sunday {
    background:#fff3f1 !important;
    color:#8f2f2f !important;
  }
  .monthly-record-table tbody td.saturday,
  .meal-menu-calendar td.saturday {
    background:#f0f6ff !important;
    color:#275d93 !important;
  }

  /* 급식 등록현황 달력 */
  .meal-menu-calendar .calendar-empty {
    background:#f3f6f4 !important;
  }
  .calendar-day-head {
    border-bottom-color:#b7cec0 !important;
  }
  .calendar-day-number {
    color:var(--print-green-dark) !important;
  }
  .calendar-meal-row strong {
    border-color:#9fbbaa !important;
    background:var(--print-green-soft) !important;
    color:var(--print-green-dark) !important;
  }
  .calendar-meal-row small {
    color:#4f6a5d !important;
  }

  /* 결재란 */
  .document-approval-box {
    border-color:var(--print-green-dark) !important;
    background:#fff !important;
  }
  .document-approval-box > div {
    color:var(--print-ink) !important;
  }
  .document-approval-box .document-approval-label {
    border-right-color:var(--print-green-dark) !important;
    background:var(--print-green) !important;
    color:#fff !important;
  }
  .document-approval-box .document-approval-head {
    border-bottom-color:var(--print-green-dark) !important;
    background:var(--print-green-soft) !important;
    color:var(--print-green-dark) !important;
  }
  .document-approval-box .document-approval-sign {
    background:#fff !important;
  }
  .document-approval-box .approval-team,
  .document-approval-box .approval-director {
    border-left-color:var(--print-green-dark) !important;
  }

  /* 신청서·보고서 페이지의 얇은 상단 색상선 */
  .trip-print-card {
    box-shadow:inset 0 1.2mm 0 var(--print-green) !important;
  }
  .trip-print-card h2 {
    padding:.7mm 1.4mm !important;
    border-left:1mm solid var(--print-blue) !important;
    background:var(--print-blue-soft) !important;
    color:#245979 !important;
  }

  /* 문서 하단 안내 */
  .record-legend,
  .meal-menu-calendar-summary,
  .registration-print-footer,
  .ledger-footer-print,
  .trip-receiver,
  .trip-sign-date,
  .trip-sign-name {
    color:#365f4a !important;
  }

  @page {
    @bottom-center {
      color:#174f36;
      font-weight:700;
    }
  }
}


/* ============================================================
   2026-07-16 인쇄 제목·결재란 비율 정렬
   - 결재란 출력: 제목을 왼쪽 2/3 영역의 중앙, 결재란을 오른쪽 1/3에 배치
   - 결재란 미출력: 제목을 문서 전체 너비의 중앙에 배치
   - 공통 인쇄버튼에 결재란 출력 체크를 제공
   ============================================================ */
.print-approval-control {
  display:inline-flex;
  align-items:center;
  gap:7px;
  min-height:40px;
  padding:0 11px;
  border:1px solid #cbd5e1;
  border-radius:10px;
  background:#fff;
  color:#334155;
  font-size:13px;
  font-weight:700;
  white-space:nowrap;
  box-sizing:border-box;
  cursor:pointer;
}
.print-approval-checkbox {
  width:17px;
  height:17px;
  margin:0;
  accent-color:#2d6f4b;
  cursor:pointer;
}
.print-approval-caption { line-height:1; }

@media (max-width:720px) {
  .print-approval-control {
    width:100%;
    justify-content:center;
  }
}

@media print {
  .print-approval-control { display:none !important; }

  html[data-print-approval="hide"] .document-approval-box {
    display:none !important;
  }

  /* 출석부·급식현황·등록현황의 제목 */
  html[data-print-approval="show"] .record-title-row.print-centered-title-row {
    display:grid !important;
    grid-template-columns:minmax(0, 2fr) minmax(0, 1fr) !important;
    grid-template-rows:auto !important;
    align-items:start !important;
    position:relative !important;
    width:100% !important;
    min-height:20mm !important;
    gap:0 !important;
    margin:0 0 3mm !important;
  }
  html[data-print-approval="show"] .record-title-row.print-centered-title-row .record-title-spacer {
    display:none !important;
  }
  html[data-print-approval="show"] .record-title-row.print-centered-title-row .record-title-text {
    position:static !important;
    grid-column:1 !important;
    grid-row:1 !important;
    width:100% !important;
    max-width:none !important;
    margin:0 !important;
    padding:1.5mm 2mm 0 0 !important;
    transform:none !important;
    text-align:center !important;
    align-self:start !important;
    justify-self:stretch !important;
    box-sizing:border-box !important;
    z-index:auto !important;
  }
  html[data-print-approval="show"] .record-title-row.print-centered-title-row .document-approval-box {
    position:static !important;
    grid-column:2 !important;
    grid-row:1 !important;
    justify-self:end !important;
    align-self:start !important;
    margin:0 !important;
    transform:none !important;
    z-index:auto !important;
  }

  html[data-print-approval="hide"] .record-title-row.print-centered-title-row {
    display:block !important;
    position:relative !important;
    width:100% !important;
    min-height:auto !important;
    margin:0 0 3mm !important;
  }
  html[data-print-approval="hide"] .record-title-row.print-centered-title-row .record-title-spacer {
    display:none !important;
  }
  html[data-print-approval="hide"] .record-title-row.print-centered-title-row .record-title-text {
    position:static !important;
    width:100% !important;
    max-width:none !important;
    margin:0 !important;
    padding:1.5mm 0 0 !important;
    transform:none !important;
    text-align:center !important;
  }

  /* 초과근무·출장·휴가 대장의 제목 */
  html[data-print-approval="show"] .ledger-title-row {
    display:grid !important;
    grid-template-columns:minmax(0, 2fr) minmax(0, 1fr) !important;
    align-items:start !important;
    gap:0 !important;
    width:100% !important;
    min-height:20mm !important;
    margin:0 0 3mm !important;
  }
  html[data-print-approval="show"] .ledger-title-row .ledger-title-spacer {
    display:none !important;
  }
  html[data-print-approval="show"] .ledger-title-row .ledger-title {
    grid-column:1 !important;
    width:100% !important;
    padding:1.5mm 2mm 0 0 !important;
    text-align:center !important;
    box-sizing:border-box !important;
  }
  html[data-print-approval="show"] .ledger-title-row .document-approval-box {
    position:static !important;
    grid-column:2 !important;
    justify-self:end !important;
    align-self:start !important;
  }
  html[data-print-approval="hide"] .ledger-title-row {
    display:block !important;
    width:100% !important;
    min-height:auto !important;
    margin:0 0 3mm !important;
  }
  html[data-print-approval="hide"] .ledger-title-row .ledger-title-spacer {
    display:none !important;
  }
  html[data-print-approval="hide"] .ledger-title-row .ledger-title {
    width:100% !important;
    padding:1.5mm 0 0 !important;
    text-align:center !important;
  }

  /* 운영일지·업무일지·업무실적합계의 제목 */
  html[data-print-approval="show"] .operation-title {
    display:grid !important;
    grid-template-columns:minmax(0, 2fr) minmax(0, 1fr) !important;
    align-items:start !important;
    gap:0 !important;
    min-height:20mm !important;
    padding:4mm 0 5mm !important;
  }
  html[data-print-approval="show"] .operation-title .operation-title-text {
    position:static !important;
    grid-column:1 !important;
    width:100% !important;
    padding:1.5mm 2mm 0 0 !important;
    text-align:center !important;
    box-sizing:border-box !important;
  }
  html[data-print-approval="show"] .operation-title .document-approval-box {
    position:static !important;
    grid-column:2 !important;
    justify-self:end !important;
    align-self:start !important;
  }
  html[data-print-approval="hide"] .operation-title {
    display:block !important;
    min-height:auto !important;
    padding:4mm 0 5mm !important;
  }
  html[data-print-approval="hide"] .operation-title .operation-title-text {
    position:static !important;
    width:100% !important;
    padding:1.5mm 0 0 !important;
    text-align:center !important;
  }

  /* 신청서·보고서의 제목 */
  html[data-print-approval="show"] .trip-print-card > h1,
  html[data-print-approval="show"] .trip-print-card > .trip-subtitle {
    width:66.666% !important;
    max-width:66.666% !important;
    margin-left:0 !important;
    margin-right:auto !important;
    padding-right:2mm !important;
    text-align:center !important;
    box-sizing:border-box !important;
  }
  html[data-print-approval="show"] .trip-print-card > .document-approval-box {
    display:grid !important;
    position:absolute !important;
    top:13mm !important;
    right:12mm !important;
  }
  html[data-print-approval="hide"] .trip-print-card > h1,
  html[data-print-approval="hide"] .trip-print-card > .trip-subtitle {
    width:100% !important;
    max-width:none !important;
    margin-left:0 !important;
    margin-right:0 !important;
    padding-right:0 !important;
    text-align:center !important;
  }
}
