/* 버전 태그: 헤더(masthead) 최상단 우측. 바탕 투명, 테두리 = 글자색.
   헤더 안에 있으므로 스크롤하면 헤더와 함께 위로 사라짐 */
.version-tag {
  position: absolute;
  top: 10px;
  right: 12px;
  z-index: 10;

  font-family: 'Courier New', Courier, monospace;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.5px;
  text-transform: none;

  color: #ffffff;
  background: transparent;
  border: 1px solid currentColor;
  border-radius: 4px;
  padding: 3px 8px;
}
@media (max-width: 767px) {
  .version-tag { top: 6px; right: 8px; }
}
  
  :root{
  --navy:#3B4953; --navy-2:#5A7863;
  --paper:#EBF4DD; --paper-2:#F7FAF2;
  --gold:#90AB8B; --gold-soft:#D5E3CB;
  --income:#5A7863; --income-row:#E3EED8; --income-tone:#E3EED8; --expense:#3B4953;
  --ink:#3B4953; --ink-soft:#4E6A57; --line:#CFDDC3;
}
  *{box-sizing:border-box;}
  html,body{margin:0;padding:0;}
body, button, input, select, textarea, table { font-family:'Pretendard',sans-serif; }
body { background-color:var(--paper); color:var(--ink); }
  .wrap{max-width:1600px;margin:0 auto;padding:0 24px 80px;}
  header.masthead{
    max-width:none;width:100%;margin:0;
    background:linear-gradient(180deg, var(--navy) 0%, var(--navy-2) 100%);
    color:var(--paper-2); padding:28px 24px 16px; position:relative;
  }
  header.masthead::after{ display:none; }
  .masthead-inner{max-width:1600px;margin:0 auto;}
  .org{font-size:17px;letter-spacing:.02em;color:var(--gold-soft);font-weight:500;margin:0 0 10px;}
  h1.title{font-family:'Pretendard',sans-serif;font-weight:800;font-size:clamp(24px,4vw,36px);line-height:1.25;margin:0 0 20px;max-width:none;}
  .budget-orphan-row td{color:var(--expense);font-weight:700;}
  .tabs-sticky{
    position: -webkit-sticky;
    position: sticky;
    top: 0;
    z-index: 1000;
    max-width: none;
    width: 100%;
    margin: 0;
    background: var(--navy);
    border-bottom: 4px solid var(--gold);
    box-shadow: 0 4px 12px rgba(59,73,83,.12);
  }
  .tabs-inner{
    max-width:1600px;margin:0 auto;padding:0 16px;
    display:flex;align-items:center;gap:12px;
    min-height:44px;
  }
  nav.tabs{
    display:flex;gap:2px;margin:0;
    overflow-x:auto;-webkit-overflow-scrolling:touch;
    flex-wrap:nowrap;scrollbar-width:none;
    flex:1 1 auto;min-width:0;
    align-self:stretch;
    align-items:flex-end;
  }
  nav.tabs::-webkit-scrollbar{display:none;}
  .tab-btn{
    background:rgba(247,250,242,.08); border:none; color:var(--paper);
    font-family:'Pretendard',sans-serif; font-size:16px; font-weight:500;
    padding:12px 18px; cursor:pointer; border-radius:6px 6px 0 0;
    flex:0 0 auto; white-space:nowrap;
  }
  .tab-btn.active{background:var(--paper); color:var(--navy); font-weight:700;}
  .tabs-inner{
    display:flex;align-items:center;gap:10px;
    min-height:44px;
  }
#app-date {
  font-weight: 500;
   flex:0 0 auto;
    display:flex;
    align-items:center;
    align-self:center;
    font-variant-numeric:tabular-nums;
    font-weight:700;
    font-size:21px !important; /* 기본 14px의 1.5배 */
    letter-spacing:0.04em;
    color:var(--gold-soft);
    white-space:nowrap;
    padding:0 4px;
    line-height:1;
    font-family:'Pretendard',sans-serif;
}
  .app-clock{
    flex:0 0 auto;
    display:flex;
    align-items:center;
    align-self:center;
    font-variant-numeric:tabular-nums;
    font-weight:700;
    font-size:21px !important; /* 기본 14px의 1.5배 */
    letter-spacing:0.04em;
    color:var(--gold-soft);
    white-space:nowrap;
    padding:0 4px;
    line-height:1;
    font-family:'Pretendard',sans-serif;
  }
  @media (max-width:767px){
   #app-date, .app-clock{display:none !important;}
  }
  .type-budget-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0 0 14px;}
  .type-budget-summary-item{padding:12px;background:var(--paper-2);border:1px solid var(--line);text-align:center;}
  .type-budget-summary-label{display:block;color:var(--ink-soft);font-size:13px;margin-bottom:6px;}
  .type-budget-summary-values{font-weight:700;line-height:1.6;}
  .hierarchy-summary-difference{font-weight:700;}
  .hierarchy-summary-difference.mismatch{color:var(--expense);}
  @media(max-width:600px){.type-budget-summary{grid-template-columns:1fr;}}



  .view{display:none;}
  .view.active{display:block;}

  .stats{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line);margin-top:32px;}
  .stat{background:var(--paper-2);padding:22px 20px;}
  .stat .label{font-size:18px;color:var(--ink-soft);margin:0 0 8px;}
  .stat .value{font-family:'Pretendard',sans-serif;font-weight:700;font-size:clamp(19px,2.4vw,25px);margin:8px}
  .stat .value.income{color:var(--income);} .stat .value.expense{color:var(--expense);}
  .stat .sub{font-size:12px;color:var(--ink-soft);margin-top:6px;}
  .balance-check{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;align-items:end;}
  .balance-check .field{min-width:0;}
  .balance-check-result{grid-column:1/-1;padding:14px 16px;background:var(--paper);color:var(--ink);font-size:14px;font-weight:700;}
  .balance-check-result.match{background:var(--paper);color:var(--income);}
  .balance-check-result.mismatch{background:#b42318;border:1px solid #7a271a;border-left:6px solid #7a271a;color:#fff;}
  .balance-check-result.unset{background:var(--paper-2);color:var(--ink-soft);}
  .staff-table-scroll{overflow-x:auto;border:1px solid var(--line);background:var(--paper-2);}
  .staff-table{width:100%;min-width:560px;border-collapse:collapse;font-size:14px;}
  .staff-table th{background:var(--navy);color:var(--paper-2);font-weight:700;text-align:center;padding:10px 8px;}
  .staff-table td{padding:6px 8px;vertical-align:middle;border-bottom:1px solid var(--line);}
  .staff-table td+td{border-left:1px solid var(--line);}
  .staff-table tbody tr:hover{background:var(--paper);}
  .staff-table input[type=text]{width:100%;box-sizing:border-box;border:1px solid var(--line);padding:7px 8px;font:inherit;background:var(--paper-2);}
  .staff-table .staff-name-cell{font-weight:700;white-space:nowrap;}
  .staff-table .staff-actions{white-space:nowrap;text-align:center;}
  .staff-table .btn-primary{padding:6px 12px;font-size:13px;}
  @media (max-width:760px){.balance-check{grid-template-columns:1fr;}}

  section{margin-top:56px;}
  .sec-head{display:flex;align-items:baseline;gap:12px;border-bottom:2px solid var(--navy);padding-bottom:10px;margin-bottom:22px;}
  .sec-num{font-family:'Pretendard',sans-serif;font-weight:700;color:var(--ink-soft);font-size:15px;}
  h2{font-family:'Pretendard',sans-serif;font-weight:700;font-size:21px;margin:0;}
  p.sec-desc{color:var(--ink-soft);font-size:14px;margin:0 0 20px;max-width:64ch;}

  .card{background:var(--paper-2);border:1px solid var(--line);padding:24px;}
  .chart-box{position:relative;height:300px;}
  .chart-box.tall{height:400px;}
  .two-col{display:grid;grid-template-columns:1.3fr 1fr;gap:20px;}
  @media (max-width:760px){ .two-col{grid-template-columns:1fr;} .stats{grid-template-columns:1fr;} .form-grid{grid-template-columns:1fr !important;} .form-grid > .field,.form-grid > .field.span2,.form-grid > .field.span3{grid-column:1 / -1 !important;min-width:0;} }

  table{width:100%;border-collapse:collapse;font-size:14px;}
  .table-scroll{max-height:880px;overflow-y:auto;overflow-x:auto;position:relative;}
  thead th,.table-scroll thead th,.hierarchy-table th{
    background:var(--navy);color:var(--paper-2);font-weight:700;text-align:center;
    border-top:1px solid var(--navy-2);border-bottom:3px solid var(--navy-2);
  }
  .table-scroll thead th{position:sticky;top:0;z-index:2;box-shadow:0 2px 5px rgba(59,73,83,.14);}
  .transaction-table-scroll{overflow-x:auto;}
  .entry-table-container{position:relative;}
 
  .transaction-table{width:100%;min-width:0;table-layout:fixed;}
  .transaction-table th,.transaction-table td{overflow-wrap:anywhere;vertical-align:middle;}
  .transaction-table th{white-space:normal;word-break:keep-all;}
  .transaction-table td:first-child{white-space:nowrap;}
  /* 결의 내역: 창이 좁아지면 결제일 줄바꿈 */
  .entry-table td:first-child,
  .entry-table td.col-date{
    white-space:normal;
    word-break:keep-all;
    overflow-wrap:anywhere;
    line-height:1.35;
  }
  @media (max-width:900px){
    .entry-table td:first-child,
    .entry-table td.col-date{
      word-break:break-all;
    }
  }
  .entry-table{min-width:0;width:100%;}
  .income-row{background:var(--income-tone);}
  .expense-row{background:var(--paper-2);}
  .entry-table .col-date{width:8%;}
  .entry-table .col-type{width:4.5%;}
  .entry-table .col-description{width:11%;}
  .entry-table .col-mok{width:8%;}
  .entry-table .col-payee{width:7%;}
  .entry-table .col-spender{width:6%;}
  .entry-table .col-amount{width:8%;}
  .entry-table .col-status{width:4.5%;}
  .entry-table .col-mgmt{width:8%;}
  .entry-table .col-approval{width:9%;}
  .entry-table .col-actions{width:12%;}
  .entry-table .col-mgmt,
  .entry-table .col-approval,
  .entry-table th:nth-child(1),
  .entry-table th:nth-child(10),
  .entry-table td:nth-child(1),
  .entry-table td:nth-child(10){
    text-align:center;
    word-break:break-all;
  }
  .entry-table td.col-actions-cell .action-row{
    flex-wrap:wrap;
    gap:4px;
  }
  .entry-table td.col-actions-cell .action-row button{
    padding:4px 8px;
    font-size:13px;
    white-space:nowrap;
  }
  /* 창이 좁아지면 추가 작업 버튼을 세로로 */
  @media (max-width:1100px){
    .entry-table td.col-actions-cell .action-row{
      flex-direction:column;
      align-items:stretch;
      flex-wrap:nowrap;
    }
    .entry-table td.col-actions-cell .action-row button{
      width:100%;
    }
  }
  .entry-table th,
  .entry-table td{
    padding:7px 6px;
  }
  .transaction-table .col-date{width:15%;}
  .transaction-table .col-type{width:6%;}
  .transaction-table .col-description{width:13%;}
  .transaction-table .col-mok{width:10%;}
  .transaction-table .col-payee{width:9%;}
  .transaction-table .col-spender{width:9%;}
  .transaction-table .col-amount{width:11%;}
  .transaction-table .col-status{width:14%;}
  .transaction-table .col-actions{width:12%;}
  .transaction-table td.num{white-space:nowrap;}
  .entry-table td:nth-child(9){word-break:break-all;}
  .entry-table td.col-actions-cell,
  .entry-table th.col-actions-head{
    text-align:center; vertical-align:middle;
  }
  .entry-table td.col-actions-cell .action-row{
    justify-content:center;
  }
  tfoot tr{background:var(--gold-soft);color:var(--navy);font-weight:700;}
  tfoot th,tfoot td{border-top:2px solid var(--navy-2);vertical-align:middle;}
  .report-total-row{background:var(--gold-soft);color:var(--navy);font-weight:700;}
  .hierarchy-total-row{font-weight:700;background:var(--gold-soft);color:var(--navy);}
  .hierarchy-total-label{text-align:center;font-weight:700;}
  .hierarchy-total-value{text-align:right;font-weight:700;white-space:nowrap;}
  .hierarchy-total-message{text-align:center;font-weight:700;}
  .hierarchy-total-mismatch td{background:#f8e1df;color:var(--expense);font-weight:700;}
  .status-approved,.status-confirmed{background:var(--income-row);color:var(--navy);}
  .report-transaction-table{min-width:0;width:100%;table-layout:fixed;}
  .report-transaction-table th,.report-transaction-table td{overflow-wrap:anywhere;word-break:keep-all;white-space:normal;}
  .report-transaction-table .col-date{width:11%;}
  .report-transaction-table .col-description{width:16%;}
  .report-transaction-table .col-mok{width:11%;}
  .report-transaction-table .col-payee{width:12%;}
  .report-transaction-table .col-amount{width:10%;}
  .report-transaction-table td:last-child,
  .report-transaction-table th:last-child{width:12%;white-space:normal;overflow-wrap:anywhere;word-break:break-all;}
  .report-transaction-table tbody tr.report-row-clickable{cursor:pointer;}
  .report-transaction-table tbody tr.report-row-clickable:hover{background:var(--gold-soft);}

/* 보고서 탭 스타일 예시 */
.report-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 15px;
}
.report-tab-btn {
  padding: 8px 14px;
  border: 1px solid var(--navy-2, #1b263b);
  background: #fff;
  border-radius: 4px;
  cursor: pointer;
  font-weight: bold;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.report-tab-btn:hover, .report-tab-btn.active {
  background: var(--navy, #0d1b2a);
  color: #fff;
}
.report-tab-btn.is-closed {
  border-style: dashed;
}
.badge-closed {
  background: #e0e0e0;
  color: #424242;
  padding: 2px 6px;
  border-radius: 4px;
  font-size: 0.85em;
  font-weight: 700;
  white-space: nowrap;
}
.report-tab-btn.active .badge-closed,
.report-tab-btn:hover .badge-closed {
  background: rgba(255,255,255,.22);
  color: inherit;
}

/* 중요 액션 확인 모달 (승인·마감·삭제) */
.app-confirm-dialog{
  border:1px solid var(--line);
  border-radius:10px;
  padding:0;
  max-width:min(420px,92vw);
  background:var(--paper-2);
  color:var(--ink);
  box-shadow:0 12px 40px rgba(59,73,83,.22);
}
.app-confirm-dialog::backdrop{background:rgba(59,73,83,.45);}
.app-confirm-panel{padding:20px 20px 16px;}
.app-confirm-panel h2{margin:0 0 10px;font-size:18px;color:var(--navy);}
.app-confirm-message{
  margin:0 0 18px;font-size:15px;line-height:1.55;color:var(--ink);
  white-space:pre-wrap;word-break:keep-all;
}
.app-confirm-actions{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end;}
.app-confirm-actions .btn-primary,
.app-confirm-actions .btn-revert{min-height:44px;min-width:96px;}
#app-confirm-ok.btn-danger-confirm{
  background:var(--expense);color:var(--paper-2);
}
@media (hover:hover){
  #app-confirm-ok.btn-danger-confirm:hover{
    background:var(--paper-2);color:var(--expense);box-shadow:inset 0 0 0 1px var(--expense);
  }
}
@media (max-width:600px){
  .app-confirm-actions{flex-direction:column-reverse;}
  .app-confirm-actions .btn-primary,
  .app-confirm-actions .btn-revert{width:100%;}
}

  @media (max-width:600px){
    .transaction-table th,.transaction-table td{padding:6px 3px;font-size:12px;}
    .transaction-table td.num{font-size:11px;white-space:normal;}
    .entry-table .col-date{width:12%;}
    .entry-table .col-type{width:5%;}
    .entry-table .col-description{width:12%;}
    .entry-table .col-mok{width:9%;}
    .entry-table .col-payee{width:8%;}
    .entry-table .col-spender{width:8%;}
    .entry-table .col-amount{width:10%;}
    .entry-table .col-status{width:8%;}
    .entry-table .col-mgmt{width:8%;}
    .entry-table .col-approval{width:9%;}
    .entry-table .col-actions{width:12%;}
  }
  th,td{text-align:center;padding:9px 10px;border-bottom:1px solid var(--line);vertical-align:top;}
  th+th,td+td{border-left:1px solid var(--line);}
  thead th+th{border-left-color:rgba(247,250,242,.35);}
  th{color:var(--ink-soft);font-weight:500;font-size:14px;text-align:center;}
  .field label{font-size:14px;color:var(--ink-soft);}
  .date-entry-control{position:relative;display:flex;gap:8px;align-items:stretch;width:100%;min-width:0;}
  .date-entry-control input[type="text"]{flex:1 1 auto;min-width:0;}
  /* 달력 input: 버튼 위에 투명 오버레이로 모바일에서도 네이티브 피커 동작 */
  .date-entry-control .date-picker-native{
    -webkit-appearance:none;appearance:none;
    position:absolute;right:0;top:0;bottom:0;left:auto;
    width:64px;min-width:0;max-width:64px;height:100%;
    opacity:0.011;border:0;padding:0;margin:0;background:transparent;
    font-size:16px;z-index:2;cursor:pointer;box-sizing:border-box;
  }
  .date-picker-button{flex:0 0 64px;width:64px;border:1px solid var(--line);background:var(--paper-2);color:var(--navy);padding:0 8px;font:inherit;font-size:14px;line-height:1.2;cursor:pointer;position:relative;z-index:1;white-space:nowrap;}
  td.num, th.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;}
  th.num{text-align:center;}
  tr:last-child td{border-bottom:none;}
  .bar-track{background:var(--paper);height:8px;overflow:hidden;margin-top:6px;}
  .bar-fill{height:100%;background:var(--expense);}

  .filter-row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px;}
  .filter-btn{border:1px solid var(--line);background:var(--paper-2);padding:7px 14px;font-size:13px;font-family:'Pretendard',sans-serif;color:var(--ink-soft);cursor:pointer;}
  .filter-btn.active{background:var(--navy);border-color:var(--navy);color:var(--paper-2);}
  .tag{display:inline-block;font-size:11px;padding:2px 7px;background:var(--paper);color:var(--navy);border:1px solid var(--gold-soft);margin-top:3px;}
  .table-scroll .tag{font-size:14px;}
  .count-note{font-size:14px;color:var(--ink-soft);margin-top:10px;}

  .notice{
    background:var(--paper); border:1px solid var(--gold-soft); color:var(--navy);
    font-size:14px; padding:12px 16px; margin-bottom:20px;
  }

.year-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 4px;}
.year-bar label{color:var(--gold-soft);font-size:14px;}
#year-select{padding:7px 12px;font-size:14px;font-weight:700;background:var(--paper-2);color:var(--navy);border:none;border-radius:6px;cursor:pointer;}
#fy-range{font-size:14px;color:var(--paper);}
.auth-bar{display:flex;align-items:center;gap:10px;justify-content:flex-end;margin-top:0;}
.auth-bar span{font-size:12.5px;color:var(--paper);}
.btn-auth{background:var(--paper-2);color:var(--navy);border:0;border-radius:4px;padding:8px 12px;font-weight:700;cursor:pointer;}
.auth-gate{max-width:560px;margin:56px auto;padding:28px;background:var(--paper-2);border:1px solid var(--line);text-align:center;}
.auth-gate h2{margin-bottom:12px;}
.auth-gate p{color:var(--ink-soft);line-height:1.7;}
.auth-gate code{overflow-wrap:anywhere;}
.hidden{display:none!important;}

  /* form */
  .form-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px;margin-bottom:18px;}
  .field{display:flex;flex-direction:column;gap:5px;}
  .field.span2{grid-column:span 2;}
    label{font-size:14px;color:var(--ink);}
  select{border:1px solid var(--line);padding:9px 10px;font-size:14px;background:var(--paper-2);font-family:'Pretendard',sans-serif;}
  input[type=text], input[type=date], input[type=number]{
    border:1px solid var(--line); padding:9px 10px; font-size:14px;
    font-family:'Pretendard',sans-serif; background:var(--paper-2);
  }
  .hierarchy-toolbar{display:flex;justify-content:flex-end;margin:0 0 10px;}
  .hierarchy-table-scroll{max-height:65vh;overflow:auto;border:1px solid var(--line);background:var(--paper-2);}
  .hierarchy-table{width:100%;min-width:760px;border-collapse:collapse;}
  .hierarchy-table th{position:sticky;top:0;z-index:1;background:var(--navy);padding:10px;text-align:center;font-size:14px;}
  .hierarchy-table td{padding:6px 8px;vertical-align:middle;}
  .hierarchy-table .del-btn{font-size:14px;}
  .hierarchy-table tbody tr:hover{background:var(--paper);}
  .hierarchy-table select,.hierarchy-table input{box-sizing:border-box;width:100%;min-width:0;}
  .hierarchy-table .hierarchy-category-type{
    appearance:none;-webkit-appearance:none;padding:9px 26px 9px 7px;text-align-last:center;
    background-image:linear-gradient(45deg,transparent 50%,var(--ink-soft) 50%),linear-gradient(135deg,var(--ink-soft) 50%,transparent 50%);
    background-position:calc(100% - 13px) 50%,calc(100% - 8px) 50%;
    background-size:5px 5px;background-repeat:no-repeat;
  }
  .hierarchy-table tbody td:not(:nth-child(5)) input,.hierarchy-table tbody td:not(:nth-child(5)) select{text-align:center;}
  .hierarchy-table .hierarchy-item-budget{text-align:right;}
  .budget-report-table{min-width:900px;}
  .hierarchy-table .hierarchy-row-delete{white-space:nowrap;}
  .hierarchy-save-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:14px;}
  input:focus{outline:2px solid var(--navy); outline-offset:-1px;}
  .gubun-toggle{
    display:flex; border:1px solid var(--line); overflow:hidden;
    width:100%; min-width:160px; box-sizing:border-box;
  }
  .gubun-toggle button{
    flex:1 1 50%; width:50%; min-width:0; border:none; padding:9px 10px;
    background:var(--paper-2); cursor:pointer; box-sizing:border-box;
    font-family:'Pretendard',sans-serif; font-size:14px; font-weight:500; color:var(--ink-soft);
  }
  .gubun-toggle button.on-income.selected{background:var(--income-tone);color:var(--navy);font-weight:700;}
  .gubun-toggle button.on-expense.selected{background:var(--expense); color:var(--paper-2);font-weight:700;}

  .btn-primary{
    background:var(--navy); color:var(--paper-2); border:none; padding:11px 22px;
    font-family:'Pretendard',sans-serif; font-size:14.5px; font-weight:700; cursor:pointer;
  }
  .btn-primary:hover{background:var(--navy-2);}
  .btn-primary.btn-soft{
    background:var(--gold-soft); color:var(--navy); border:1px solid var(--line);
  }
  .btn-primary.btn-soft:hover{background:var(--gold); color:var(--paper-2);}
  .btn-text{background:none;border:none;color:var(--ink-soft);text-decoration:underline;cursor:pointer;font-size:13px;padding:0;}
  .del-btn{background:none;border:1px solid var(--line);color:var(--expense);font-size:14px;padding:4px 9px;cursor:pointer;}
  .del-btn:hover{background:var(--paper);}
  .locked-note{font-size:14px;color:var(--ink-soft);}

  .status-badge{display:inline-block;font-size:14px;padding:2px 8px;border-radius:2px;font-weight:700;}
  .management-number{display:block;margin-top:4px;color:var(--ink-soft);font-size:11px;line-height:1.35;}
  .status-paid{background:var(--income-row);color:var(--navy);}
  .status-input-complete{background:var(--paper-2);color:var(--navy-2);}
  .status-submitted{background:var(--paper);color:var(--navy);}
  .status-rejected{background:#f8e1df;color:var(--expense);}

  .action-row{display:flex;gap:6px;flex-wrap:wrap;}
  .btn-approve{background:var(--income);color:var(--paper-2);border:none;font-size:14px;padding:5px 10px;cursor:pointer;}
  .btn-reject{background:none;border:1px solid var(--expense);color:var(--expense);font-size:14px;padding:4px 9px;cursor:pointer;}
  .btn-revert{background:none;border:1px solid var(--line);color:var(--ink-soft);font-size:14px;padding:4px 9px;cursor:pointer;}

  .pending-box{border:1px solid var(--line);background:var(--paper-2);margin-bottom:22px;}
  .pending-section .sec-head{margin-bottom:0;}
  .pending-count{background:var(--gold);color:var(--paper-2);border-radius:10px;font-size:12px;padding:1px 9px;margin-left:8px;}
  .pending-empty{padding:18px;color:var(--ink-soft);font-size:14px;}
  .pending-transaction-table{table-layout:fixed;}
  .pending-transaction-table th{text-align:center;}
  .pending-transaction-table tbody td:not(.num){text-align:center;}
  .pending-transaction-table .action-row{justify-content:center;}
  .pending-transaction-table .col-date{width:12%;}
  .pending-transaction-table .col-type{width:8%;}
  .pending-transaction-table .col-description{width:20%;}
  .pending-transaction-table .col-mok{width:14%;}
  .pending-transaction-table .col-payee{width:14%;}
  .pending-transaction-table .col-amount{width:12%;}
  .pending-transaction-table .col-actions{width:20%;}
  .workflow-stage{padding:16px;border-bottom:1px solid var(--line);}
  .workflow-stage:last-child{border-bottom:0;}
  .workflow-stage h3{font-size:16px;margin:0 0 12px;}
  .workflow-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px;}
  .workflow-select{text-align:center!important;width:44px;}
  .workflow-index{text-align:center!important;width:7%;}
.workflow-summary{margin:12px 0 0;padding:10px 14px;background:var(--paper);color:var(--navy);font-weight:700;font-size:14px;}
.workflow-summary.warn{background:#f8e1df;color:var(--expense);}
  .submitted-group-row:hover{background:var(--paper);}
  .submitted-group-detail td{border-bottom:1px solid var(--line);}
  #save-status.status-error{display:inline-block;margin:8px 0 0;padding:8px 12px;background:#b42318;border:1px solid #7a271a;border-left:5px solid #7a271a;color:#fff;font-weight:700;}
  dialog.payment-report-dialog{width:min(900px,calc(100% - 32px));max-height:90vh;padding:0;border:1px solid var(--line);color:var(--ink);}
  dialog.payment-report-dialog::backdrop{background:rgba(59,73,83,.55);}
  .payment-dialog-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;background:var(--navy);color:var(--paper-2);}
  .payment-dialog-header h2{font-size:18px;}
  .payment-dialog-body{padding:24px;overflow:auto;max-height:65vh;}
  .payment-dialog-actions{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap;padding:14px 20px;border-top:1px solid var(--line);}
  .payment-report-sheet{box-sizing:border-box;width:100%;max-width:794px;margin:0 auto;padding:30px;background:#fff;color:#182b40;font-family:'Pretendard',sans-serif;font-size:12px;}
  .payment-report-document{width:100%;table-layout:fixed;border-collapse:collapse;border:1px solid #26394d;font-size:12px;}
  .payment-report-document th,.payment-report-document td{border:1px solid #26394d;padding:7px 6px;vertical-align:middle;font-size:12px;line-height:1.5;}
  .payment-report-document th{background:#f2f5f8;color:#26394d;font-weight:700;text-align:center;white-space:nowrap;}
  .payment-report-management-cell{padding:0!important;background:#f2f5f8;}
  .payment-report-management{display:flex;justify-content:space-between;gap:12px;padding:8px 12px;font-size:12px;}
  .payment-report-management strong{white-space:nowrap;}
  .payment-report-header{display:grid;grid-template-columns:minmax(0,1fr) 180px;gap:14px;align-items:center;page-break-inside:avoid;break-inside:avoid;}
  .payment-report-sheet h1{font-size:22px;line-height:1.35;margin:4px 0;text-align:center;}
  .payment-approval-grid{display:grid;grid-template-columns:1fr 1fr;border:1px solid #26394d;min-height:76px;}
  .payment-approval-cell{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:7px 4px;border-left:1px solid #26394d;text-align:center;}
  .payment-approval-cell:first-child{border-left:0;}
  .payment-approval-cell span{font-size:12px;}
  .payment-approval-signature{width:100%;height:42px;}
  .payment-approval-stamp{position:absolute;top:24px;left:50%;width:max-content;max-width:140px;transform:translateX(-50%) rotate(-9deg);border:3px double #b42318;color:#b42318;padding:5px 8px;font-weight:800;font-size:12px;line-height:1.4;text-align:center;background:rgba(255,255,255,.82);}
  .payment-approval-stamp small{font-size:10px;}
    .approved-status {
    color: #2E7D32;
    font-weight: bold;
  }
  .payment-report-title-cell{padding:10px 12px!important;}
  .payment-report-section-title{text-align:center;font-weight:700;letter-spacing:.18em;background:#e9eef4;}
  .payment-report-document .report-seq{width:7%;}
  .payment-report-document .report-date{width:16%;white-space:nowrap;}
      .payment-report-document .report-amount{width:14%;white-space:nowrap;}
  .payment-report-document .report-note{width:13%;}
  .payment-report-document .report-row td{text-align:center;overflow-wrap:anywhere;}
  .payment-report-document .report-row td.report-amount,.payment-report-document .report-total-amount{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;}
  .payment-report-document tfoot td{font-weight:700;background:var(--gold-soft);}
  .payment-report-document .report-total-label{text-align:center!important;}
  .payment-report-receipts{margin-top:12px;page-break-inside:avoid;break-inside:avoid;}
  .payment-report-receipts strong{display:block;margin-bottom:6px;}
  .payment-report-receipt-box{min-height:125px;border:1px solid #26394d;padding:8px;display:flex;flex-wrap:wrap;gap:10px;align-items:flex-start;}
  .payment-report-receipt-box.is-empty{align-items:center;justify-content:center;color:#64748b;font-size:12px;}
  .payment-report-receipt-item{margin:0;flex:1 1 45%;max-width:100%;text-align:center;page-break-inside:avoid;break-inside:avoid;}
  .payment-report-receipt-item img{max-width:100%;max-height:420px;object-fit:contain;border:1px solid #cbd5e1;}
  .payment-report-receipt-item figcaption,.payment-report-receipt-pdf{margin-top:4px;font-size:11px;color:#475569;}
  .payment-report-note{margin:9px 0 0;color:#64748b;font-size:12px;line-height:1.5;}
  .payment-report-sheet .report-row{page-break-inside:avoid;break-inside:avoid;}
  @media(max-width:650px){
    .payment-report-sheet{padding:16px;}
    .payment-report-header{grid-template-columns:minmax(0,1fr) 150px;gap:8px;}
    .payment-report-sheet h1{font-size:18px;}
    .payment-report-document th,.payment-report-document td{padding:5px 3px;font-size:11px;overflow-wrap:anywhere;}
  }

  #save-status{font-size:14px;color:var(--ink-soft);margin-left:14px;}
  #budget-save-status{font-size:14px;}

  footer{margin-top:60px;padding-top:22px;border-top:1px solid var(--line);font-size:13px;color:var(--ink-soft);display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;}
  @media (max-width:600px){.hierarchy-table-scroll{max-height:70vh;}}
  .usage-fill{height:100%;width:0;background:var(--paper);transition:width .4s,background .4s;}
.usage-fill.warn{background:#f2c14e;}
.usage-fill.danger{background:#e5484d;}
  #quota-countdown{margin:16px 0;padding:14px 16px;background:var(--paper);border-left:5px solid var(--navy);color:var(--navy);font-weight:700;line-height:1.7;}
#quota-countdown .quota-time{display:block;font-size:26px;font-variant-numeric:tabular-nums;margin:4px 0;}
#quota-countdown small{font-weight:400;color:var(--ink-soft);}
#auth-gate-message{white-space:pre-line;}
/* 로그인 상태/오류 알림 텍스트 숨김 */
#auth-status {
  display: none !important;
}
  
/* 차트를 감싸는 기존 박스 클래스 스타일 적용 */
.chart-box {
  position: relative;
  width: 100%;
  height: 380px; /* PC 기본 높이 */
}

/* 세로로 긴 차트 박스 (tall) 전용 높이 */
.chart-box.tall {
  height: 420px;
}

/* 모바일 화면에서는 차트 높이를 줄여서 범례와 한 화면에 오도록 조정 */
@media (max-width: 767px) {
  .chart-box,
  .chart-box.tall {
    height: 280px; /* 모바일 높이 통일 */
  }
}
/* 상태 열: 반려됨을 제외하고 음영 제거 */
.status-paid,
.status-input-complete,
.status-submitted,
.status-approved,
.status-confirmed{background:none;}




/* 💡 모바일 화면(768px 미만) 완벽 대응 대응 */
html {
  width: 100%;
}

body {
  width: 100%;
  max-width: 100%;
  /* sticky 동작을 깨뜨리지 않으면서 가로 스크롤을 방지하는 현대적 속성 */
  overflow-x: clip; 
}

@media (max-width: 767px) {
  header.masthead{padding:28px 16px 20px;}
  .wrap{padding:0 14px 64px;}
  .tabs-inner{padding:0 8px;}
  .tab-btn{padding:12px 14px;font-size:13.5px;}

  .card, .sec-head, form, section {
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
  }
  .row > [class*="col-"],
  .grid-2,
  .two-col,
  .form-row {
    display: block !important;
    width: 100% !important;
    max-width: 100% !important;
    flex: 0 0 100% !important;
  }
  .form-control, .form-select, .btn, input, select {
    box-sizing: border-box !important;
  }
  .date-entry-control{display:flex !important;align-items:stretch !important;width:100% !important;}
  .date-entry-control input[type="text"]{width:auto !important;flex:1 1 auto !important;min-width:0 !important;}
  .date-entry-control .date-picker-button{width:64px !important;flex:0 0 64px !important;}
  .date-entry-control .date-picker-native{width:64px !important;max-width:64px !important;padding:0 !important;border:0 !important;}

  /* 보고서 표: 가로 스크롤만, 글자 세로 깨짐 방지 */
  .report-transaction-table{
    min-width:640px !important;
    display:table !important;
    white-space:normal !important;
  }
  .report-transaction-table thead{display:table-header-group !important;}
  .report-transaction-table tr{display:table-row !important;}
  .report-transaction-table th,.report-transaction-table td{
    display:table-cell !important;
    white-space:normal !important;
  }
  .report-transaction-table td:last-child{white-space:normal !important;word-break:break-all;}

  /* 결의 내역: 토스뱅크형 카드 목록 (횡스크롤 없음) */
  #view-entry .entry-table-container,
  #view-entry .transaction-table-scroll{
    overflow-x:visible !important;
  }
  #view-entry .entry-table{
    min-width:0 !important;
    width:100% !important;
    display:block !important;
    border:none !important;
  }
  #view-entry .entry-table colgroup,
  #view-entry .entry-table thead{display:none !important;}
  #view-entry .entry-table tbody{display:block !important;}
  #view-entry .entry-table tr{
    display:block !important;
    background:var(--paper-2);
    border:1px solid var(--line);
    border-radius:14px;
    margin:0 0 10px;
    padding:12px 14px;
    box-shadow:0 1px 3px rgba(59,73,83,.06);
  }
  #view-entry .entry-table td{
    display:none !important;
    border:none !important;
    padding:0 !important;
    white-space:normal !important;
    text-align:left !important;
  }
  /* 2결제일 4내용 5목 7담당자 8금액 9상태 11추가작업 (1결의번호·10승인번호는 모바일 카드에서 숨김) */
  #view-entry .entry-table td:nth-child(2),
  #view-entry .entry-table td:nth-child(4),
  #view-entry .entry-table td:nth-child(5),
  #view-entry .entry-table td:nth-child(7),
  #view-entry .entry-table td:nth-child(8),
  #view-entry .entry-table td:nth-child(9),
  #view-entry .entry-table td:nth-child(11){
    display:block !important;
  }
  #view-entry .entry-table td:nth-child(2){
    font-size:12px;color:var(--ink-soft);margin-bottom:4px;
  }
  #view-entry .entry-table td:nth-child(4){
    font-size:16px;font-weight:700;margin-bottom:2px;
  }
  #view-entry .entry-table td:nth-child(5){
    font-size:13px;color:var(--ink-soft);margin-bottom:6px;
  }
  #view-entry .entry-table td:nth-child(7){
    font-size:13px;color:var(--ink-soft);margin-bottom:4px;
  }
  #view-entry .entry-table td:nth-child(7)::before{content:'담당 ';font-weight:500;}
  #view-entry .entry-table td:nth-child(8){
    font-size:18px;font-weight:800;margin:4px 0 8px;
  }
  #view-entry .entry-table td:nth-child(9){margin-bottom:8px;}
  #view-entry .entry-table td:nth-child(11){
    border-top:1px solid var(--line) !important;
    padding-top:8px !important;
  }
  #view-entry .entry-table td.col-actions-cell .action-row{
    justify-content:flex-start;gap:8px;flex-wrap:wrap;
  }

  /* 입력 내역·지급 대기 워크플로 표도 카드형 */
  #view-entry .pending-transaction-table,
  #view-entry .submitted-groups-table{
    min-width:0 !important;width:100% !important;display:block !important;
  }
  #view-entry .pending-transaction-table thead,
  #view-entry .submitted-groups-table thead{display:none !important;}
  #view-entry .pending-transaction-table tbody,
  #view-entry .submitted-groups-table tbody{display:block !important;}
  #view-entry .pending-transaction-table tr,
  #view-entry .submitted-groups-table tr{
    display:block !important;
    background:var(--paper-2);
    border:1px solid var(--line);
    border-radius:14px;
    margin:0 0 10px;
    padding:12px 14px;
  }
  #view-entry .pending-transaction-table td,
  #view-entry .submitted-groups-table td{
    display:block !important;
    border:none !important;
    white-space:normal !important;
    text-align:left !important;
    padding:2px 0 !important;
  }
  /* 지급 대기: 모바일에서는 묶음 요약만 표시하고 세부내역 행은 숨김 */
  #view-entry .pending-transaction-table tr.submitted-group-detail,
  #view-entry .submitted-groups-table tr.submitted-group-detail,
  #view-entry .pending-transaction-table tr.submitted-group-detail.hidden{
    display:none !important;
  }
  #view-entry .pending-transaction-table tr.submitted-group-row{cursor:default !important;}
  .detail-hint{display:none;}
  /* 워크플로 버튼: 크기 통일, 한 줄에 균등 배치 */
  .workflow-actions{flex-wrap:nowrap !important;gap:8px !important;}
  .workflow-actions button{
    flex:1 1 0 !important;min-width:0;height:44px;padding:0 6px !important;
    font-size:14.5px !important;font-weight:700;line-height:1.2;
    display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;
  }
} 

/* 단기예치 '예치 등록' 버튼: 가로로 긴 한 줄 버튼 */
.btn-wide{grid-column:1 / -1;display:block;width:100%;min-height:44px;white-space:nowrap;text-align:center;}
/* 차트 카드 제목 */
.chart-title{font-size:15px;font-weight:700;color:var(--navy);margin:0 0 10px;}

/* 모바일: 단기예치 입력칸을 2열로 (예치일|원금, 만기일|메모), 등록 버튼은 한 줄 전체 */
@media (max-width:760px){
  #deposit-box .form-grid{grid-template-columns:1fr 1fr !important;gap:10px;}
  #deposit-box .form-grid > .field{grid-column:auto !important;min-width:0;}
  #deposit-box .form-grid input{width:100%;min-width:0;}
  #deposit-box .form-grid > .btn-wide{grid-column:1 / -1 !important;}
}

/* 영수증 증빙 첨부 버튼 */
.receipt-pick-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:10px 20px;font-size:1rem;font-weight:600;line-height:1.2;border:1.5px solid var(--navy);border-radius:10px;background:var(--paper-2);color:var(--navy);cursor:pointer;}
.receipt-pick-btn .ico{font-size:1.4em;line-height:1;}
.receipt-del-btn{min-height:44px;padding:10px 18px;font-size:1rem;font-weight:600;border-radius:10px;cursor:pointer;}
@media (max-width:767px){
  .receipt-pick-btn{display:flex;width:100%;min-height:56px;font-size:1.1rem;margin-top:10px;}
  .receipt-pick-btn .ico{font-size:1.6em;}
  .receipt-del-btn{min-height:48px;font-size:1.05rem;}
}

/* 사용자 탭: 담당자 추가 / 정렬 */
.staff-add-grid{display:grid;grid-template-columns:130px minmax(0,1fr) auto;gap:12px;align-items:end;}
.staff-add-grid > .field{min-width:0;}
.staff-add-grid select,.staff-add-grid input[type="text"]{width:100%;min-width:0;}
.staff-add-grid .btn-primary{white-space:nowrap;}
.staff-toolbar{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;margin-top:16px;}
.staff-toolbar label{font-size:.9em;font-weight:600;}
.staff-toolbar select{max-width:100%;min-width:0;}

/* 사용자 탭: 우리은행 다계좌이체 */
.transfer-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:12px;}
.transfer-grid > *{min-width:0;}
.transfer-grid select,.transfer-grid input[type="text"]{width:100%;min-width:0;}
.transfer-bulk{display:flex;gap:8px;align-items:flex-end;}
.transfer-bulk .field{flex:1 1 0;min-width:0;}
.transfer-bulk .btn-primary{flex:none;white-space:nowrap;}
.transfer-table input[type="text"]{width:100%;min-width:90px;text-align:right;}
.transfer-table td.num,.transfer-table th.num{text-align:right;}
.transfer-summary{margin-top:12px;font-weight:600;}
.transfer-actions{margin-top:12px;display:flex;flex-wrap:wrap;gap:8px;align-items:center;}
@media (max-width:480px){
  .staff-add-grid{grid-template-columns:minmax(0,1fr) auto;}
  .staff-add-grid .field:first-child{grid-column:1 / -1;}
  .transfer-grid{grid-template-columns:minmax(0,1fr);}
}

/* 모바일: 이체 목록을 가로 스크롤 없이 한 줄 카드로 (선택 | 이름·구분/계좌 | 금액) */
@media (max-width:600px){
  #transfer-section .card{padding:16px;}
  #transfer-section .staff-table-scroll{overflow-x:hidden;}
  .transfer-table{min-width:0;display:block;}
  .transfer-table thead{display:none;}
  .transfer-table tbody{display:block;}
  .transfer-table tr{
    display:grid;
    grid-template-columns:32px auto minmax(0,1fr) 112px;
    grid-template-areas:"chk name group amt" "chk acct acct amt";
    align-items:center;
    column-gap:8px;row-gap:2px;
    padding:8px;
    border-bottom:1px solid var(--line);
  }
  .transfer-table td,.transfer-table td+td{border:0;padding:0;text-align:left;}
  .transfer-table td:nth-child(1){grid-area:chk;text-align:center;}
  .transfer-table td:nth-child(2){grid-area:group;font-size:12px;color:var(--ink-soft);}
  .transfer-table td:nth-child(3){grid-area:name;}
  .transfer-table td:nth-child(4){grid-area:acct;font-size:13px;color:var(--ink-soft);word-break:break-all;}
  .transfer-table td:nth-child(5){grid-area:amt;}
  .transfer-table input[type="checkbox"]{width:22px;height:22px;}
  .transfer-table input[type="text"]{min-width:0;padding:9px 8px;}
}

/* 모바일: 담당자 목록을 카드형으로 (이름·구분 / 은행·계좌번호 / 저장·삭제) */
@media (max-width:600px){
  #view-staff .card{padding:16px;}
  #staff-name-list.staff-table-scroll{overflow-x:visible;border:0;background:transparent;}
  #staff-name-list .staff-table{min-width:0;display:block;}
  #staff-name-list .staff-table thead{display:none;}
  #staff-name-list .staff-table tbody{display:block;}
  #staff-name-list .staff-table tr{
    display:grid;
    grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);
    grid-template-areas:"name group" "bank acct" "save del";
    gap:8px;
    margin-bottom:10px;
    padding:12px;
    background:var(--paper);
    border:1px solid var(--line);
  }
  #staff-name-list .staff-table td,
  #staff-name-list .staff-table td+td{display:block;border:0;padding:0;min-width:0;text-align:left;}
  #staff-name-list .staff-table td:nth-child(1){grid-area:group;}
  #staff-name-list .staff-table td:nth-child(2){grid-area:name;align-self:center;font-size:16px;}
  #staff-name-list .staff-table td:nth-child(3){grid-area:bank;}
  #staff-name-list .staff-table td:nth-child(4){grid-area:acct;}
  #staff-name-list .staff-table td:nth-child(5){grid-area:save;}
  #staff-name-list .staff-table td:nth-child(6){grid-area:del;}
  #staff-name-list .staff-table select{width:100%;min-width:0;min-height:44px;}
  #staff-name-list .staff-table input[type="text"]{min-width:0;min-height:44px;padding:10px 8px;}
  #staff-name-list .staff-table .btn-primary,
  #staff-name-list .staff-table .del-btn{width:100%;min-height:44px;font-size:15px;padding:8px 12px;}
}

/* 월별 누적 보고서: 모바일 카드형 (PC에서는 기존 표 그대로) */
.mbr{display:none;}
@media (max-width:767px){
  #monthly-budget-scroll{display:none !important;}
  .mbr.is-ready{display:block;}
  #report-section.card{padding:14px;}
}
.mbr-toolbar{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 12px;}
.mbr-chip{min-height:38px;padding:6px 12px;font-size:14px;font-weight:600;color:var(--ink);background:var(--paper-2);border:1.5px solid var(--line);border-radius:999px;cursor:pointer;}
.mbr-chip.is-on{background:var(--navy);color:var(--paper-2);border-color:var(--navy);}
.mbr-chip-plain{margin-left:auto;background:transparent;}
.mbr-chip:disabled{opacity:.45;cursor:default;}
.mbr-type{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 10px;margin:16px 0 8px;padding:6px 2px;border-bottom:2px solid var(--navy);font-size:16px;color:var(--navy);}
.mbr-type small{font-size:12px;font-weight:600;color:var(--ink-soft);}
.mbr-gwan{margin-bottom:8px;border:1px solid var(--line);background:var(--paper-2);}
.mbr-gwan > summary{display:block;position:relative;padding:12px 34px 12px 12px;cursor:pointer;list-style:none;}
.mbr-gwan > summary::-webkit-details-marker{display:none;}
.mbr-gwan > summary::after{content:"▾";position:absolute;right:12px;top:12px;color:var(--ink-soft);transition:transform .15s;}
.mbr-gwan[open] > summary::after{transform:rotate(180deg);}
.mbr-mok-top{display:flex;justify-content:space-between;align-items:baseline;gap:8px;}
.mbr-name{font-weight:700;font-size:15px;min-width:0;overflow-wrap:anywhere;}
.mbr-pct{font-weight:700;font-size:14px;white-space:nowrap;color:var(--ink-soft);}
.mbr-pct.warn{color:#9A6B12;}
.mbr-pct.over{color:#B5483A;}
.mbr-bar{height:8px;margin:7px 0;background:var(--line);border-radius:4px;overflow:hidden;}
.mbr-bar i{display:block;height:100%;background:var(--income);border-radius:4px;}
.mbr-bar i.warn{background:#C9962B;}
.mbr-bar i.over{background:#B5483A;}
.mbr-nums2{display:flex;flex-wrap:wrap;gap:2px 12px;font-size:13px;color:var(--ink-soft);}
.mbr-nums2 b{color:var(--ink);}
.mbr-count{margin-left:auto;}
.mbr-body{padding:0 10px 10px;border-top:1px solid var(--line);background:var(--paper);}
.mbr-mok{padding:10px 2px;border-bottom:1px dashed var(--line);}
.mbr-mok:last-child{border-bottom:0;}
.mbr-path{font-size:12px;color:var(--ink-soft);margin-top:1px;}
.mbr-nums3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;font-size:13px;font-weight:700;}
.mbr-nums3 span{min-width:0;overflow-wrap:anywhere;}
.mbr-nums3 em{display:block;font-style:normal;font-weight:500;font-size:11px;color:var(--ink-soft);}
.mbr-nums3 .neg{color:#B5483A;}
.mbr-detail{margin-top:6px;font-size:12px;color:var(--ink-soft);overflow-wrap:anywhere;}
.mbr-total{display:flex;flex-direction:column;gap:2px;margin-top:14px;padding:12px;background:var(--navy);color:var(--paper-2);font-size:13px;}
.mbr-total b{font-size:14px;}
.mbr-empty{padding:18px 8px;text-align:center;color:var(--ink-soft);}
.mbr-unit{margin:10px 2px 0;font-size:12px;color:var(--ink-soft);}

/* 월별 누적 보고서 안으로 옮긴 총 수입·총 지출·현재 잔액 */
#report-totals.stats{margin-top:12px;margin-bottom:16px;}
.report-tabs-empty{margin:0;color:var(--ink-soft);font-size:14px;}

/* 자주 쓰는 지출 템플릿 */
.quick-template-container{margin-bottom:12px;}
.qt-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;}
.qt-title{font-size:13px;font-weight:700;}
.qt-buttons{display:contents;}
.qt-btn{min-height:36px;padding:6px 12px;font-size:14px;font-weight:600;color:var(--ink);background:var(--paper-2);border:1.5px solid var(--line);border-radius:999px;cursor:pointer;}
.qt-btn:hover{border-color:var(--navy);}
.qt-empty{font-size:13px;color:var(--ink-soft);}
.qt-editor{margin-top:10px;padding:12px;background:var(--paper-2);border:1px solid var(--line);}
.qt-note{margin:0 0 10px;font-size:13px;color:var(--ink-soft);}
.qt-item{margin-bottom:10px;padding:10px;background:var(--paper);border:1px solid var(--line);}
.qt-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;}
.qt-grid > *{min-width:0;}
.qt-grid .span2{grid-column:1 / -1;}
.qt-grid label{display:block;margin:0 0 3px;font-size:12px;color:var(--ink-soft);}
.qt-grid input,.qt-grid select{width:100%;min-width:0;}
.qt-item-foot{display:flex;justify-content:flex-end;margin-top:8px;}
.qt-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin-top:6px;}
.qt-spacer{flex:1;}
@media (max-width:600px){
  .qt-grid{grid-template-columns:minmax(0,1fr);}
  .qt-btn{min-height:40px;}
}

/* 모바일: 총 수입·총 지출·현재 잔액을 한 줄 3칸으로 (세로로 길어지지 않게) */
@media (max-width:760px){
  #report-totals.stats{grid-template-columns:repeat(3,minmax(0,1fr));}
  #report-totals .stat{padding:10px 6px;text-align:center;}
  #report-totals .stat .label{font-size:15px;margin-bottom:4px;}
  #report-totals .stat .value{font-size:28px;overflow-wrap:anywhere;}
  #report-totals .stat .sub{font-size:10px;margin-top:4px;}
}

/* =====================================================================
   v2.12 화면 통일 규칙 (아래 규칙이 위의 개별 규칙보다 우선합니다)
   ===================================================================== */
:root{
  --fs-base:14px;        /* 제목을 뺀 모든 글자 = 새 내역 입력의 '수입/지출' 버튼 글자 크기 */
  --th-height:44px;      /* 모든 표 제목 행 높이 */
}

/* 1) 글자 크기: 제목(h1~h4, 섹션 번호, 머리말 기관명, 차트 제목)과 PDF 지급 보고서 서식은 제외 */
body *:not(h1):not(h2):not(h3):not(h4):not(h1 *):not(h2 *):not(h3 *):not(h4 *):not(.sec-num):not(.org):not(.title):not(.chart-title):not(.app-clock):not(.payment-report-sheet):not(.payment-report-sheet *):not(canvas):not(svg):not(svg *){
  font-size:var(--fs-ctl,var(--fs-base)) !important;
}
/* 터치 기기·모바일의 입력칸은 16px (아이폰이 입력 시 화면을 확대하지 않도록) */
@media (pointer:coarse),(max-width:767px){
  input,select,textarea{--fs-ctl:16px;}
}

/* 2) 표 제목 행 높이 통일 (지급 보고서 서식 표는 제외) */
table:not(.payment-report-document) thead th{
  height:var(--th-height) !important;
  padding:0 10px !important;
  line-height:1.3 !important;
  vertical-align:middle !important;
  white-space:nowrap !important;
  word-break:keep-all !important;
  box-sizing:border-box;
}

/* 3) 표에 테두리를 붙이는 카드 (결의 내역 · 새 내역 입력) */
.card.flush{padding:0;}
.entry-table-card .table-scroll{max-height:880px;}

/* 새 내역 입력: 칸 사이를 선으로 나눈 표형 폼 → 바깥 테두리에 밀착 */
.entry-form-grid{gap:1px;background:var(--line);margin:0;}
.entry-form-grid > .field{background:var(--paper-2);padding:12px 14px;min-width:0;}
.entry-form-footer{padding:16px 18px;border-top:1px solid var(--line);}
.entry-form-footer #btn-add{margin-top:14px;}
.entry-form-footer #btn-new-entry{margin-top:14px;margin-left:8px;}

/* 4) 자주 쓰는 지출 템플릿: 제목 줄 오른쪽 정렬 */
.quick-template-container{margin-bottom:0;}
.sec-head.sec-head-entry{flex-wrap:wrap;align-items:center;row-gap:8px;}
.sec-head-entry .qt-bar{margin-left:auto;flex:1 1 320px;justify-content:flex-end;}
.quick-template-container .qt-editor{margin:0 0 16px;}

/* 모바일: 결의 내역은 카드 목록이므로 바깥 박스 없이 카드만 보이게 */
@media (max-width:767px){
  .entry-table-card{border:none;background:transparent;}
  .entry-table-card .table-scroll{max-height:none;}
  .sec-head-entry .qt-bar{justify-content:flex-start;flex-basis:100%;}
}

/* 5) 모든 표: 표가 바깥 테두리에 여백 없이 맞닿도록 */
.table-scroll{border:1px solid var(--line);background:var(--paper-2);}
.card.flush .table-scroll,
.pending-box .table-scroll{border:none;}
.card-toolbar{padding:12px 14px;border-bottom:1px solid var(--line);}
.card-toolbar .filter-row{margin-bottom:0;}
.card-toolbar .filter-row + .filter-row{margin-top:8px;}
.card-toolbar .filter-row:empty{display:none;}
.card-toolbar .filter-row:empty + .filter-row{margin-top:0;}
#fund-summary table{max-width:none !important;}
#fund-summary .count-note{margin:0;padding:10px 14px;border-top:1px solid var(--line);}
#fund-compare table{border:1px solid var(--line);}
@media (max-width:767px){
  .entry-table-card .card-toolbar{padding:0 0 12px;border-bottom:none;}
}
.two-col > .card.flush{align-self:start;}

/* 6) 예산 관·항·목 분류 표 — 엑셀처럼 셀 사이 공백 없이 */
.hierarchy-table{border-collapse:collapse;}
.hierarchy-table th:first-child{width:112px;}
.hierarchy-table th:last-child{width:76px;}
.hierarchy-table tbody td{padding:0;border:1px solid var(--line);}
.hierarchy-table tbody td input,
.hierarchy-table tbody td select{
  display:block;width:100%;height:40px;margin:0;border:none;border-radius:0;
  background:transparent;box-shadow:none;padding:0 10px;font-size:var(--fs-base);color:var(--ink);
}
.hierarchy-table tbody td input:focus,
.hierarchy-table tbody td select:focus{
  outline:2px solid var(--navy-2);outline-offset:-2px;background:var(--paper-2);
}
.hierarchy-table .hierarchy-item-budget{text-align:right;padding-right:12px;}
.hierarchy-table .hierarchy-category-type{
  padding:0 30px 0 12px;text-align:left;text-align-last:left;cursor:pointer;
  background-position:calc(100% - 15px) 50%,calc(100% - 10px) 50%;
}
.hierarchy-table tbody td:first-child select{text-align:left;text-align-last:left;}
.hierarchy-table .hierarchy-row-delete{display:block;width:100%;height:40px;margin:0;padding:0;}
.hierarchy-total-message{white-space:nowrap;}
/* 합계 행 글자: 머리글용 연한 th 색이 남아 있던 부분 */
tfoot th,tfoot td,.report-total-row th,.report-total-row td,.hierarchy-total-row th,.hierarchy-total-row td{color:var(--navy);font-weight:700;}

/* 7) 수입 예산 합계 행(tbody 안)을 지출 예산 합계 행(tfoot)과 동일한 테두리·높이로 */
.hierarchy-table tbody tr.hierarchy-total-row:hover{background:var(--gold-soft);}
.hierarchy-table tbody tr.hierarchy-total-row td,
.hierarchy-table tfoot tr.hierarchy-total-row td{
  height:44px;padding:9px 10px;box-sizing:border-box;vertical-align:middle;
  border-top:2px solid var(--navy-2);border-bottom:1px solid var(--line);
  border-left:1px solid var(--line);border-right:0;
}
.hierarchy-table tbody tr.hierarchy-total-row td:first-child,
.hierarchy-table tfoot tr.hierarchy-total-row td:first-child{border-left:0;}

/* 8) 모든 버튼: 마우스를 올리면 색 반전 (모양이 밀리지 않도록 inset 선 사용) */
button{transition:background-color .12s,color .12s,box-shadow .12s;}
@media (hover:hover){
  .filter-btn:hover:not(:disabled),
  .mbr-chip:hover:not(:disabled),
  .qt-btn:hover:not(:disabled),
  .date-picker-button:hover:not(:disabled),
  .receipt-pick-btn:hover:not(:disabled),
  .btn-primary.btn-soft:hover:not(:disabled),
  .del-btn:hover:not(:disabled),
  .btn-reject:hover:not(:disabled),
  .report-tab-btn:hover:not(:disabled):not(.active){
    background:var(--navy);color:var(--paper-2);border-color:var(--navy);
  }
  .btn-reject:hover:not(:disabled),.del-btn:hover:not(:disabled){background:var(--expense);border-color:var(--expense);}
  .btn-revert:hover:not(:disabled){background:var(--ink-soft);color:var(--paper-2);border-color:var(--ink-soft);}
  /* 선택된(active) 버튼은 반대로 밝게 */
  .filter-btn.active:hover:not(:disabled),
  .mbr-chip.is-on:hover:not(:disabled),
  .report-tab-btn.active:hover:not(:disabled){
    background:var(--paper-2);color:var(--navy);border-color:var(--navy);box-shadow:inset 0 0 0 1px var(--navy);
  }
  .btn-primary:not(.btn-soft):hover:not(:disabled){
    background:var(--paper-2);color:var(--navy);box-shadow:inset 0 0 0 1px var(--navy);
  }
  .btn-approve:hover:not(:disabled){
    background:var(--paper-2);color:var(--income);box-shadow:inset 0 0 0 1px var(--income);
  }
  .btn-auth:hover:not(:disabled){
    background:var(--navy);color:var(--paper-2);box-shadow:inset 0 0 0 1px var(--paper-2);
  }
  .btn-text:hover:not(:disabled){
    background:var(--ink-soft);color:var(--paper-2);box-shadow:0 0 0 3px var(--ink-soft);
  }
  .hierarchy-table .hierarchy-row-delete:hover:not(:disabled){box-shadow:none;}
  .tab-btn:not(.active):hover{background:var(--paper);color:var(--navy);}
  .tab-btn.active:hover{background:rgba(247,250,242,.08);color:var(--paper);}
}
.receipt-del-btn{background:var(--paper-2);color:var(--expense);border:1.5px solid var(--expense);cursor:pointer;}
@media (hover:hover){.receipt-del-btn:hover{background:var(--expense);color:var(--paper-2);}}

/* 9) 수입/지출 토글: hover는 '선택됨'과 구별되는 중간 톤, 선택된 버튼은 hover해도 그대로 */
@media (hover:hover){
  .gubun-toggle button:not(.selected):hover:not(:disabled){background:var(--gold);color:var(--navy);font-weight:700;}
}

/* 10) 새 내역 입력 항목 제목: 진한 녹색 + 굵게 (시인성) */
:root{--green-dark:#2B4A37;}
.entry-form-grid .field > label,
.entry-form-footer .form-label{color:var(--green-dark);font-weight:700;}

/* 11) 보고서 탭 새로고침 / 집계 재계산: 번호 붙은 버튼 */
.report-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px;}
.btn-compact{padding:8px 14px;font-size:14px;display:inline-flex;align-items:center;gap:8px;white-space:nowrap;}
.btn-step{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;
  background:var(--paper-2);color:var(--navy);font-size:12px;font-weight:700;line-height:1;}
.btn-primary.btn-soft .btn-step{background:var(--navy);color:var(--paper-2);}
.report-actions-hint{flex:1 1 240px;font-size:13px;color:var(--ink-soft);}
@media (hover:hover){
  .btn-primary:not(.btn-soft):hover:not(:disabled) .btn-step{background:var(--navy);color:var(--paper-2);}
  .btn-primary.btn-soft:hover:not(:disabled) .btn-step{background:var(--paper-2);color:var(--navy);}
}

/* 입력 내역: 행 클릭 수정 · 담당자 버튼 */
.pending-transaction-table tr.input-row-clickable{cursor:pointer;}
.pending-transaction-table tr.input-row-clickable:hover td{background:rgba(180,140,40,.08);}
.pending-transaction-table tr.input-row-clickable:focus-visible{outline:2px solid #b48c28;outline-offset:-2px;}
.pending-transaction-table tr.input-row-editing td{background:rgba(180,140,40,.18);}
.spender-picker{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:6px 0 10px;}
.spender-picker-label{font-size:12px;color:#64748b;margin-right:2px;}
.spender-chip{border:1px solid #cbd5e1;background:#fff;color:#26394d;border-radius:999px;padding:4px 12px;font-size:13px;cursor:pointer;font-family:inherit;}
.spender-chip small{color:#64748b;margin-left:2px;}
.spender-chip:hover{border-color:#b48c28;}
.spender-chip.active{background:#26394d;border-color:#26394d;color:#fff;}
.spender-chip.active small{color:#e2e8f0;}

/* 영수증 증빙 첨부: 점선 상자 안에 모든 요소를 가운데 정렬 */
.receipt-field{margin:10px 0 14px;}
.receipt-drop-zone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:18px 16px;border:2px dashed var(--navy);border-radius:12px;background:var(--paper);text-align:center;}
.receipt-drop-zone .receipt-hint{margin:0;font-size:.92rem;color:#64748b;line-height:1.5;}
.receipt-drop-zone .receipt-pick-btn{width:auto;margin:0;}
.receipt-preview{width:100%;display:flex;justify-content:center;}
.receipt-preview-row{display:flex;flex-direction:column;align-items:center;gap:10px;max-width:100%;width:fit-content;margin:0 auto;}
.receipt-preview-row img{display:block;max-width:100%;max-height:220px;object-fit:contain;border:1px solid #cbd5e1;border-radius:8px;background:#fff;}

/* 모바일 카드형 표: 지급 대기 항목에 열 이름 표시 */
@media (max-width:767px){
  #view-entry .pending-transaction-table td[data-label]::before{content:attr(data-label) " · ";color:#64748b;font-size:12px;font-weight:400;}
}

/* 수입 색 통일: 수입 버튼 '눌렀을 때' 색(--income-tone)을 hover와 모든 표의 수입 행에 동일하게 사용 */
@media (hover:hover){
  .gubun-toggle button.on-income:not(.selected):hover:not(:disabled){background:var(--income-tone);color:var(--navy);font-weight:700;}
}
tr.income-row{background:var(--income-tone);}
@media (max-width:767px){
  #view-entry .entry-table tr.income-row,
  #view-entry .pending-transaction-table tr.income-row,
  #view-entry .submitted-groups-table tr.income-row{background:var(--income-tone);}
}
.status-approved,.status-confirmed,.status-paid{background:var(--income-tone);}

/* 승인 취소: 되돌리기 위험을 알리는 테라코타(번트 오렌지) 톤 */
button.btn-unapprove{background:#FBEDE5;border:1px solid #B5502A;color:#9A3F1D;font-weight:700;}
@media (hover:hover){
  button.btn-unapprove:hover:not(:disabled){background:#B5502A;border-color:#B5502A;color:#fff;}
}


/* ---------- 기부금영수증 탭 ---------- */
.don-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 20px;margin-bottom:18px;}
.don-grid .field small{display:block;margin-top:4px;color:var(--ink-soft);font-size:12px;}
.don-grid input[type=file],.don-grid input[type=password],.don-grid input[type=month],.don-grid input[type=date]{width:100%;box-sizing:border-box;border:1px solid var(--line);padding:8px;font:inherit;background:var(--paper-2);}
.don-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:18px;}
.don-status{font-size:14px;color:var(--ink-soft);}
.don-status.error{color:#b3261e;font-weight:700;}
.don-status.ok{color:var(--navy-2);font-weight:700;}
.don-hint{font-size:13px;color:var(--ink-soft);}
.don-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);margin-bottom:16px;}
.don-stat{background:var(--paper-2);padding:14px;text-align:center;}
.don-stat-label{display:block;font-size:12px;color:var(--ink-soft);margin-bottom:6px;}
.don-stat b{font-size:18px;}
.don-stat.warn b{color:#b3261e;}
.don-notices p{margin:0 0 6px;font-size:13.5px;color:var(--ink-soft);}
.don-notices p.don-warn{color:#b3261e;font-weight:700;}
.don-sub{font-size:15px;margin:18px 0 8px;}
.don-table td,.don-table th{text-align:center;font-size:13.5px;}
.don-table td.num{text-align:right;white-space:nowrap;}
.don-rrn-cell{display:flex;gap:6px;justify-content:center;flex-wrap:wrap;}
.don-rrn-cell input{min-width:150px;}
.don-rrn-cell input.invalid{border-color:#b3261e;}
.don-rrn-cell select{border:1px solid var(--line);padding:6px;font:inherit;background:var(--paper-2);}
.don-row-msg{font-size:12.5px;color:var(--ink-soft);}
.don-full{margin-top:18px;}
.don-full summary{cursor:pointer;font-weight:700;margin-bottom:8px;}
@media (max-width:767px){
  .don-grid{grid-template-columns:1fr;}
  .don-summary{grid-template-columns:repeat(2,minmax(0,1fr));}
}

.don-box{border:1px solid var(--line);background:var(--paper);padding:12px 14px;margin-bottom:16px;}
.don-box-head{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin-bottom:8px;}
.don-inline{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.don-inline input[type=password],.don-inline input[type=file]{border:1px solid var(--line);padding:8px;font:inherit;background:var(--paper-2);}
.don-seed summary{cursor:pointer;font-size:13.5px;color:var(--ink-soft);}
.don-privacy{color:#b3261e !important;}
.don-manual-amount{width:130px;text-align:right;border:1px solid var(--line);padding:7px 8px;font:inherit;background:var(--paper-2);}
#r-balance, #r-income, #r-expense{
    font-size: 32px !important;
  font-weight: 800;
}

/* =====================================================================
   v2.13 알림(토스트) · 예산 잔액 · 중복 경고 · 검색 · 증빙 묶음
   ===================================================================== */
.toast-mirrored{display:none !important;}
.toast-stack{position:fixed;left:50%;bottom:calc(16px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);z-index:10000;display:flex;flex-direction:column;gap:8px;width:min(92vw,460px);pointer-events:none;}
.toast{pointer-events:auto;display:flex;align-items:center;gap:10px;padding:12px 14px;background:var(--navy);color:#fff;border-radius:10px;box-shadow:0 6px 18px rgba(0,0,0,.25);animation:toast-in .18s ease-out;}
.toast-error{background:#8E2F22;}
.toast-success{background:#3F6B4E;}
.toast-text{flex:1;min-width:0;overflow-wrap:anywhere;white-space:pre-line;}
.toast-action{flex:none;min-height:36px;padding:4px 12px;font-weight:700;color:var(--navy);background:#fff;border:0;border-radius:8px;cursor:pointer;}
.toast-close{flex:none;width:32px;height:32px;font-size:20px;line-height:1;color:#fff;background:transparent;border:0;cursor:pointer;opacity:.8;}
.toast-out{opacity:0;transform:translateY(6px);transition:opacity .18s,transform .18s;}
@keyframes toast-in{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:none;}}

.budget-hint,.dup-hint{margin-top:8px;padding:10px 12px;border:1px solid var(--line);background:var(--paper-2);border-radius:8px;}
.budget-hint[hidden],.dup-hint[hidden]{display:none;}
.budget-hint-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 12px;}
.budget-hint-row span{min-width:0;color:var(--ink-soft);}
.budget-hint-row b{color:var(--ink);font-variant-numeric:tabular-nums;}
.budget-bar{height:8px;margin:8px 0 6px;background:var(--line);border-radius:4px;overflow:hidden;}
.budget-bar i{display:block;height:100%;background:var(--income);}
.budget-hint-msg{font-weight:700;}
.budget-hint.level-warn{border-color:#C9962B;background:#FBF3DC;}
.budget-hint.level-warn .budget-bar i{background:#C9962B;}
.budget-hint.level-warn .budget-hint-msg{color:#7A5509;}
.budget-hint.level-over{border-color:#B5483A;background:#FBE9E5;}
.budget-hint.level-over .budget-bar i{background:#B5483A;}
.budget-hint.level-over .budget-hint-msg{color:#8E2F22;}
.dup-hint{border-color:#C9962B;background:#FBF3DC;color:#7A5509;font-weight:600;}

.tx-tools{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 14px;border-bottom:1px solid var(--line);}
.tx-tools input[type="search"]{flex:1 1 220px;min-width:0;}
.tx-range{display:flex;align-items:center;gap:6px;flex:0 1 300px;min-width:0;}
.tx-range input{flex:1 1 0;min-width:0;text-align:right;}
.tx-tools .tx-sep{color:var(--ink-soft);}
.tx-tools button{min-height:36px;}
.tx-tools .tx-export{margin-left:auto;}
@media (max-width:600px){
  .tx-tools input[type="search"]{flex-basis:100%;}
  .tx-range{flex:1 1 100%;}
  .tx-tools button{flex:1 1 0;}
  .tx-tools .tx-export{margin-left:0;}
}

.bundle-box{margin-top:18px;padding-top:14px;border-top:1px dashed var(--line);}
.bundle-title{margin:0 0 4px;font-weight:700;}
.bundle-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:8px;}
.bundle-row select{min-width:90px;}
@media (max-width:600px){ .bundle-row .btn-primary{flex:1 1 100%;} }

/* 이월 자료 일괄 입력 */
.carryover-box{margin-top:18px;padding-top:12px;border-top:1px dashed var(--line);}
.carryover-box > summary{cursor:pointer;font-weight:700;padding:6px 0;}
.carryover-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:8px 0 12px;}
.carryover-grid > .field{min-width:0;}
.carryover-grid input{width:100%;min-width:0;}
.carryover-table td.num,.carryover-table th.num{text-align:right;font-variant-numeric:tabular-nums;}
.carryover-table select{width:100%;min-width:200px;}
.carryover-table tr.co-skip td{background:#FBE9E5;}
.carryover-table tr.co-ignore td{background:#EEF1EC;color:var(--ink-soft);}
.carryover-summary{white-space:pre-line;font-weight:600;}
.carryover-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px;}
@media (max-width:600px){
  .carryover-grid{grid-template-columns:minmax(0,1fr);}
  .carryover-actions .btn-primary{flex:1 1 100%;}
}
