﻿/* ============================================================
 * 새얀기획 CMS · 전역 스타일 시트
 * index.html의 <style> 블록에서 분리된 모든 CSS 규칙이 담겨 있습니다.
 * ============================================================ */

:root{
  --bg:#f7f8fc;
  --white:#ffffff;
  --border:#eaecf4;
  --border2:#dde0ef;
  --accent:#ff6b35;
  --accent-light:#fff3ee;
  --accent-hover:#e85a25;
  --accent2:#ff8c5a;
  --text:#18181b;
  --text2:#71717a;
  --text3:#a1a1aa;
  --green:#22c55e;--yellow:#f59e0b;--blue:#3b82f6;--red:#ef4444;
  --orange:#f97316;--purple:#a855f7;
  --card-shadow:0 2px 16px rgba(0,0,0,0.07);
  --card-shadow-lg:0 8px 40px rgba(0,0,0,0.10);
  --radius:14px;
  --radius-sm:10px;
  --radius-xs:8px;
}
*{box-sizing:border-box;margin:0;padding:0;}
body{font-family:'Pretendard',-apple-system,sans-serif;background:var(--bg);color:var(--text);min-width:1400px;height:100vh;display:flex;justify-content:center;overflow:hidden;}

/* ── 전체 래퍼 (중앙 정렬 + 최대 1920px) ── */
#app-wrapper{
  width:100%;
  max-width:1920px;
  display:flex;
  flex-direction:column;
  height:100vh;
  overflow:hidden;
}

/* ── 탑바 ── */
.topbar{
  background:var(--white);
  border-bottom:1px solid var(--border);
  padding:0 28px;
  display:flex;align-items:center;gap:0;
  height:52px;flex-shrink:0;
  position:relative;z-index:100;
}
.topbar-logo{display:flex;align-items:center;gap:8px;margin-right:28px;}
.logo-mark{width:28px;height:28px;background:#fff;border:0.5px solid var(--border);border-radius:8px;display:flex;align-items:center;justify-content:center;overflow:hidden;}
.logo-mark svg{width:16px;height:16px;fill:#fff;}
.logo-name{font-size:14px;font-weight:800;letter-spacing:-0.5px;color:var(--text);}
.logo-name span{color:var(--text);}

/* 탭 네비 */
.top-nav{display:flex;align-items:center;gap:2px;flex:1;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none;}
.top-nav::-webkit-scrollbar{display:none;}
.top-nav-item{
  display:flex;align-items:center;gap:5px;
  padding:8px 14px;border-radius:var(--radius-xs);
  font-size:13px;font-weight:500;color:var(--text3);
  cursor:pointer;transition:all .15s;user-select:none;white-space:nowrap;
  border:none;background:none;font-family:inherit;
  letter-spacing:-0.2px;flex-shrink:0;
}
.top-nav-item:hover{color:var(--text);background:var(--bg);}
.top-nav-item.active{color:var(--accent);font-weight:700;background:transparent;position:relative;}
.top-nav-item.active::after{
  content:'';position:absolute;left:14px;right:14px;bottom:-1px;
  height:2px;background:var(--accent);border-radius:1px;
}
.top-nav-item .nav-icon{font-size:13px;display:none;}
.top-nav-item .nav-cnt{
  font-size:10px;font-weight:600;
  color:var(--text3);
  padding:1px 5px;border-radius:99px;
  background:transparent;
}
.top-nav-item.active .nav-cnt{color:var(--accent);background:var(--accent-light);}
.top-nav-item.danger{color:var(--text3);}
.top-nav-item.danger.active{color:#dc2626;}
.top-nav-item.danger.active::after{background:#dc2626;}
.top-nav-item.danger.active .nav-cnt{background:#fff1f2;color:#dc2626;}
.nav-sep{width:1px;height:16px;background:var(--border);margin:0 6px;flex-shrink:0;opacity:.5;}

/* 탑바 우측 */
.topbar-right{display:flex;align-items:center;gap:10px;margin-left:auto;}
.user-pill{
  display:flex;align-items:center;gap:8px;
  background:var(--bg);border:1px solid var(--border);
  border-radius:99px;padding:5px 12px 5px 6px;cursor:pointer;
}
.user-avatar{
  width:26px;height:26px;
  background:linear-gradient(135deg,var(--accent),var(--accent2));
  border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-size:11px;font-weight:700;color:#fff;
}
.user-name-text{font-size:12px;font-weight:600;color:var(--text);}
.btn-logout-top{background:none;border:none;cursor:pointer;color:var(--text3);font-size:11px;padding:0;font-family:inherit;}
.btn-logout-top:hover{color:var(--red);}

/* ── 서브바 (검색/필터/액션) ── */
.subbar{
  background:var(--white);
  border-bottom:1px solid var(--border);
  padding:8px 28px;
  display:flex;align-items:center;gap:8px;
  flex-shrink:0;
}
.page-title-area{display:flex;align-items:center;gap:8px;}
.page-title{font-size:16px;font-weight:700;letter-spacing:-0.3px;}
.count-pill{
  background:var(--accent-light);color:var(--accent);
  font-size:11px;font-weight:700;
  padding:2px 8px;border-radius:99px;
}

/* ── 반려 카운트 배지 ── */
.rejected-badge{
  display:inline-flex;align-items:center;gap:5px;
  background:#ef4444;color:#fff;
  font-size:11px;font-weight:700;font-family:inherit;
  padding:3px 10px 3px 8px;border-radius:99px;
  border:none;cursor:pointer;
  transition:all .15s;user-select:none;
}
.rejected-badge:hover{background:#dc2626;transform:translateY(-1px);}
.rejected-badge:active{transform:translateY(0);}
.rejected-badge.zero{background:#e5e7eb;color:#9ca3af;box-shadow:none;cursor:default;}
.rejected-badge.zero:hover{background:#e5e7eb;color:#9ca3af;transform:none;}
.rejected-badge.active{background:#dc2626;box-shadow:0 0 0 3px rgba(239,68,68,.25), 0 4px 12px rgba(239,68,68,.4);}
.rejected-dot{
  width:6px;height:6px;border-radius:50%;
  background:#fff;display:inline-block;
  animation:rejectedPulse 1.8s ease-in-out infinite;
}
.rejected-badge.zero .rejected-dot{background:#9ca3af;animation:none;}

/* ── 전체 목록 돌아가기 버튼 (반려 배지와 같은 슬롯 공유) ── */
.rejected-btn-slot{
  position:relative;
  display:inline-flex;align-items:center;
  min-width:98px;
  min-height:30px;
}
/* 두 버튼이 같은 자리에서 부드럽게 교체되도록 절대 위치 + opacity/transform */
.rejected-btn-slot > .rejected-badge,
.rejected-btn-slot > .back-to-all{
  position:absolute;left:0;top:50%;transform:translateY(-50%);
  transition:opacity .2s ease-out, transform .2s ease-out;
}
.rejected-btn-slot > .rejected-badge.slot-hidden,
.rejected-btn-slot > .back-to-all.slot-hidden{
  opacity:0;pointer-events:none;
  transform:translateY(-50%) translateX(-8px);
}
.rejected-btn-slot > .rejected-badge.slot-show{
  opacity:1;transform:translateY(-50%) translateX(0);
}
.rejected-btn-slot > .back-to-all.slot-show{
  opacity:1;transform:translateY(-50%) translateX(0);
}
/* 복귀 시 반려 배지 펄스 효과 (오렌지 테두리 2회) */
.rejected-badge.pulse-back{
  animation:rejectedPulseBack 1.6s ease-out 1;
}
@keyframes rejectedPulseBack{
  0%,100%{box-shadow:0 2px 6px rgba(239,68,68,.2);}
  15%    {box-shadow:0 0 0 4px rgba(255,107,53,.55), 0 2px 6px rgba(255,107,53,.4);}
  30%    {box-shadow:0 2px 6px rgba(239,68,68,.2);}
  55%    {box-shadow:0 0 0 4px rgba(255,107,53,.55), 0 2px 6px rgba(255,107,53,.4);}
  75%    {box-shadow:0 2px 6px rgba(239,68,68,.2);}
}

.back-to-all{
  display:inline-flex;align-items:center;gap:5px;
  padding:6px 13px;border-radius:99px;
  background:#F5F5F5;color:#666666;
  border:1px solid #e4e4e7;
  font-family:inherit;font-size:12px;font-weight:700;
  cursor:pointer;
  letter-spacing:-0.2px;
  white-space:nowrap;
}
.back-to-all:hover{
  background:#e4e4e7;color:#18181b;
  border-color:#d4d4d8;
}
.back-to-all:active{transform:translateY(-50%) scale(0.97);}
.back-arrow{font-size:13px;font-weight:900;line-height:1;}

/* 스피너 (로딩 중 표시) */
.rejected-spinner{
  display:inline-block;width:11px;height:11px;
  border:2px solid currentColor;border-right-color:transparent;
  border-radius:50%;
  animation:rejSpin .65s linear infinite;
  vertical-align:middle;margin-right:5px;
}
@keyframes rejSpin{to{transform:rotate(360deg);}}
@keyframes rejectedPulse{
  0%,100%{opacity:1;transform:scale(1);}
  50%{opacity:.4;transform:scale(1.3);}
}

/* ── 소요시간 배지 ── */.elapsed-badge{
  display:inline-flex;align-items:center;gap:3px;
  padding:3px 11px;border-radius:99px;
  font-size:11px;font-weight:700;
  font-variant-numeric:tabular-nums;
  letter-spacing:-0.2px;
  width:auto;white-space:nowrap;
}
.elapsed-fast      {background:#dcfce7;color:#166534;}  /* <30분 — 초록 */
.elapsed-normal    {background:#dbeafe;color:#1e40af;}  /* 30분~4시간 — 파랑 */
.elapsed-slow      {background:#fef3c7;color:#854d0e;}  /* 4~12시간 — 앰버 */
.elapsed-very-slow {background:#fee2e2;color:#991b1b;}  /* 12시간+ — 빨강 */

/* 실시간 타이머 — 좌측에 깜빡이는 점 */
.elapsed-badge.elapsed-live{
  position:relative;padding-left:18px;
}
.elapsed-badge.elapsed-live::before{
  content:'';position:absolute;left:7px;top:50%;
  width:6px;height:6px;border-radius:50%;
  background:currentColor;transform:translateY(-50%);
  animation:elapsedLivePulse 1.2s ease-in-out infinite;
}
@keyframes elapsedLivePulse{
  0%,100%{opacity:0.4;transform:translateY(-50%) scale(0.8);}
  50%    {opacity:1;  transform:translateY(-50%) scale(1.2);}
}

/* ── 반려만 보기 토글 ── */.rejected-toggle{
  display:inline-flex;align-items:center;gap:7px;
  padding:6px 10px;border-radius:var(--radius-xs);
  border:1.5px solid var(--border2);background:var(--white);
  cursor:pointer;user-select:none;transition:all .15s;
}
.rejected-toggle:hover{border-color:#ef4444;background:#fff5f5;}
.rejected-toggle input{display:none;}
.rejected-toggle-switch{
  position:relative;width:28px;height:16px;
  background:#d1d5db;border-radius:99px;transition:background .2s;
  flex-shrink:0;
}
.rejected-toggle-switch::after{
  content:'';position:absolute;top:2px;left:2px;
  width:12px;height:12px;border-radius:50%;
  background:#fff;transition:transform .2s;
  box-shadow:0 1px 3px rgba(0,0,0,0.15);
}
.rejected-toggle input:checked ~ .rejected-toggle-switch{background:#ef4444;}
.rejected-toggle input:checked ~ .rejected-toggle-switch::after{transform:translateX(12px);}
.rejected-toggle-label{font-size:12px;font-weight:600;color:var(--text2);}
.rejected-toggle input:checked ~ .rejected-toggle-label{color:#ef4444;}
.rejected-toggle:has(input:checked){border-color:#ef4444;background:#fff5f5;}

/* 완료 항목 보기 — 초록 톤 변형 */
.rejected-toggle.completed-toggle:hover{border-color:#10b981;background:#f0fdf4;}
.rejected-toggle.completed-toggle input:checked ~ .rejected-toggle-switch{background:#10b981;}
.rejected-toggle.completed-toggle input:checked ~ .rejected-toggle-label{color:#059669;}
.rejected-toggle.completed-toggle:has(input:checked){border-color:#10b981;background:#f0fdf4;}

/* 이번달 성과 메시지 배지 (매니저 전용) */
.achievement-badge{
  display:inline-flex;align-items:center;gap:8px;
  padding:6px 14px;border-radius:20px;
  background:linear-gradient(135deg, #FFF5EB 0%, #FFE4C4 50%, #FFD8B1 100%);
  border:1px solid #FFD4A8;
  letter-spacing:-0.2px;white-space:nowrap;
  animation:achievementFadeIn .35s ease-out;
  box-shadow:0 2px 6px rgba(255,87,34,0.15);
  position:relative;overflow:hidden;
}
.achievement-badge::before{
  content:'';position:absolute;top:0;left:-80%;
  width:50%;height:100%;
  background:linear-gradient(90deg, transparent, rgba(255,255,255,0.5), transparent);
  animation:achievementShimmer 4s infinite;
}
@keyframes achievementShimmer{
  0%,60%{left:-80%;}
  100%{left:180%;}
}
.achievement-icon{
  font-size:18px;position:relative;z-index:1;
  animation:achievementBounce 2.8s ease-in-out infinite;
}
.achievement-textgroup{
  display:flex;flex-direction:column;gap:0;line-height:1.2;
  position:relative;z-index:1;
}
.achievement-text{
  font-size:12px;font-weight:700;color:#C2410C;
}
.achievement-text b{
  color:#FF5722;font-weight:900;font-size:13.5px;
  font-variant-numeric:tabular-nums;padding:0 2px;
}
.achievement-sub{
  font-size:10px;font-weight:600;color:#9A3412;opacity:0.85;
  letter-spacing:-0.3px;
}
@keyframes achievementFadeIn{
  from{opacity:0;transform:translateX(8px) scale(0.92);}
  to{opacity:1;transform:translateX(0) scale(1);}
}
@keyframes achievementBounce{
  0%,90%,100%{transform:translateY(0) rotate(0);}
  5%  {transform:translateY(-3px) rotate(-10deg);}
  10% {transform:translateY(0)     rotate(10deg);}
  15% {transform:translateY(-3px) rotate(-5deg);}
  20% {transform:translateY(0)     rotate(0);}
}
.achievement-badge.pulse{
  animation:achievementPulse .8s ease-out;
}
@keyframes achievementPulse{
  0%  {transform:scale(1);box-shadow:0 0 0 0 rgba(255,87,34,0.6);}
  50% {transform:scale(1.06);box-shadow:0 0 0 10px rgba(255,87,34,0);}
  100%{transform:scale(1);box-shadow:0 0 0 0 rgba(255,87,34,0);}
}

/* ── 테이블 반려 행 강조 — 행 전체를 동일한 연분홍으로 통일 ── */
.handsontable .htCore td.cell-rejected-row,
.handsontable .htCore tr:hover td.cell-rejected-row,
.handsontable .htCore tr td.cell-rejected-row.row-sent,
.handsontable .htCore tr td.cell-rejected-row.row-waiting,
.handsontable .htCore tr td.cell-rejected-row.row-approved,
.handsontable .htCore tr td.cell-rejected-row.row-rejected{
  background:#fee2e2 !important;
  /* 셀 경계선을 살짝 완화해서 행이 하나의 면처럼 보이게 */
  border-color:rgba(220, 38, 38, 0.08) !important;
}
.handsontable .htCore tr:hover td.cell-rejected-row{background:#fecaca !important;}

/* 매니저 완료 토글 ON 시 본인 게시 완료 행 — 연초록 톤 */
.handsontable .htCore td.cell-completed-row,
.handsontable .htCore tr td.cell-completed-row.row-sent,
.handsontable .htCore tr td.cell-completed-row.row-waiting,
.handsontable .htCore tr td.cell-completed-row.row-approved,
.handsontable .htCore tr td.cell-completed-row.row-rejected{
  background:#f0fdf4 !important;
  border-color:rgba(16, 185, 129, 0.12) !important;
}
.handsontable .htCore tr:hover td.cell-completed-row{background:#dcfce7 !important;}
/* 업체명 셀: 배경은 행과 동일하게 맞추되 텍스트만 진한 빨강+bold */
.handsontable .htCore td.cell-company-rejected{
  background:#fee2e2 !important;
  color:#991b1b !important;
  font-weight:700 !important;
}
.handsontable .htCore tr:hover td.cell-company-rejected{
  background:#fecaca !important;
}
/* 행 단위 커버리지 — 반려 행의 모든 td/th를 균일 색으로 (빈틈/경계선 제거) */
.handsontable .htCore tr.row-rejected-status td,
.handsontable .htCore tr.row-rejected-status th,
.handsontable .htCore tr.row-rejected-status .htCheckboxRendererInput{
  background:#fee2e2 !important;
  border-color:rgba(220, 38, 38, 0.08) !important;
}
.handsontable .htCore tr.row-rejected-status:hover td,
.handsontable .htCore tr.row-rejected-status:hover th{
  background:#fecaca !important;
}
.handsontable .htCore tr.row-rejected-status th,
.handsontable .htCore tr.row-rejected-status th span{
  color:#991b1b !important;
}
/* 검토현황 셀 — 반려 상태일 때 드롭다운 셀 전체가 연빨강 */
.handsontable .htCore td.cell-review-rejected{
  background:#fee2e2 !important;
}
.handsontable .htCore tr:hover td.cell-review-rejected{
  background:#fecaca !important;
}
/* 검토현황 셀이 반려일 때 내부 반려 Pill 배지도 좀 더 진하게 */
.handsontable .htCore td.cell-review-rejected .prog-label{
  background:color-mix(in srgb, currentColor 18%, #fee2e2) !important;
  font-weight:700;
}
/* 드롭다운 메뉴에서 '반려' 옵션이 현재 선택/호버일 때 더 선명한 빨강 */
.handsontable.listbox .htCore td.opt-colored.current[style*="--opt-color: #ef4444"],
.handsontable.listbox .htCore td.opt-colored.highlight[style*="--opt-color: #ef4444"],
.handsontable.listbox .htCore td.opt-colored:hover[style*="--opt-color: #ef4444"]{
  background:#fee2e2 !important;
  color:#991b1b !important;
  font-weight:700;
}
.divider-v{width:1px;height:18px;background:var(--border);flex-shrink:0;opacity:.5;}

/* 검색 */
.search-wrap{position:relative;}
.search-wrap input{
  width:180px;padding:6px 10px 6px 30px;
  border:1px solid var(--border2);border-radius:99px;
  font-size:12px;font-family:inherit;color:var(--text);
  outline:none;background:var(--bg);
  transition:border-color .15s,width .2s,box-shadow .15s;
}
.search-wrap input:focus{border-color:var(--accent);width:240px;background:var(--white);box-shadow:0 0 0 3px rgba(255,107,53,.08);}
.search-icon{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--text3);font-size:12px;pointer-events:none;}

/* 필터 셀렉트 */
.filter-select{
  background:var(--white);border:1px solid var(--border2);color:var(--text2);
  padding:5px 26px 5px 10px;border-radius:99px;
  font-size:12px;font-family:inherit;cursor:pointer;outline:none;appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%2371717a' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 8px center;
  transition:border-color .15s,color .15s;
}
.filter-select:hover{border-color:var(--accent);color:var(--text);}
.filter-select:focus{border-color:var(--accent);color:var(--text);}
.filter-tag{
  display:inline-flex;align-items:center;gap:5px;
  background:var(--accent-light);color:var(--accent);
  font-size:11px;font-weight:600;padding:4px 10px;
  border-radius:99px;border:1px solid rgba(255,107,53,.25);white-space:nowrap;
}
.filter-tag button{background:none;border:none;cursor:pointer;color:var(--accent);font-size:13px;padding:0;line-height:1;}

/* 버튼 */
.btn{display:inline-flex;align-items:center;gap:5px;padding:7px 14px;border-radius:var(--radius-xs);font-size:12.5px;font-family:inherit;font-weight:600;cursor:pointer;border:none;transition:all .15s;white-space:nowrap;}
.btn-primary{background:var(--white);color:var(--accent);border:1.5px solid var(--accent);}.btn-primary:hover{background:var(--accent);color:#fff;}
.btn-ghost{background:var(--white);color:var(--text2);border:1.5px solid var(--border2);}.btn-ghost:hover{border-color:var(--accent);color:var(--accent);}
.btn-danger{background:transparent;color:var(--text3);border:1.5px solid var(--border2);font-weight:500;}.btn-danger:hover{background:#fff1f2;color:#dc2626;border-color:#fecdd3;}
.btn-col{background:var(--white);color:var(--text3);border:1.5px solid var(--border2);font-weight:500;}.btn-col:hover{border-color:var(--accent);color:var(--accent);}
.btn.btn-disabled{opacity:.5;cursor:not-allowed;background:#f4f4f5;color:#9ca3af;border-color:#e4e4e7;}
.btn.btn-disabled:hover{background:#f4f4f5;color:#9ca3af;border-color:#e4e4e7;}
.ml-auto{margin-left:auto;}

/* ── 뷰 전환 ── */
.view-tabs{display:flex;gap:2px;background:var(--bg);padding:2px;border-radius:var(--radius-xs);border:1px solid var(--border2);}
.view-tab{padding:4px 12px;border-radius:5px;font-size:11px;font-weight:500;cursor:pointer;color:var(--text3);border:none;background:none;font-family:inherit;transition:all .15s;}
.view-tab.active{background:var(--white);color:var(--accent);font-weight:700;box-shadow:0 1px 3px rgba(0,0,0,0.06);}

/* ── 콘텐츠 영역 ── */
.content-area{flex:1;overflow:hidden;padding:20px 28px;}

/* ═════════ 대시보드 전용 스타일 ═════════ */
.dashboard-view{height:100%;overflow-y:auto;padding-right:4px;}

/* 대시보드 네비 버튼 — 포인트 컬러 톤 */
.top-nav-item.nav-dashboard{
  background:linear-gradient(135deg, #FF5722 0%, #f97316 100%);
  color:#fff !important;font-weight:700;
  border:none;box-shadow:0 2px 8px rgba(255,87,34,0.25);
}
.top-nav-item.nav-dashboard:hover{
  transform:translateY(-1px);
  box-shadow:0 4px 12px rgba(255,87,34,0.35);
}
.top-nav-item.nav-dashboard.active{
  background:linear-gradient(135deg, #ea4f1a 0%, #d4430f 100%);
}
/* ════════════════════════════════════════════════
   대시보드 v2
   ════════════════════════════════════════════════ */
.dash-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:0 0 16px;margin-bottom:20px;}
.dash-filter-group{display:flex;gap:8px;align-items:center;}
.dash-filter-label{font-size:12px;font-weight:700;color:var(--text2);}
.dash-filter-select{font-family:inherit;font-size:12.5px;color:var(--text);padding:8px 30px 8px 12px;border:1.5px solid var(--border);border-radius:10px;background:var(--white) url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path d='M1 1l4 4 4-4' stroke='%239ca3af' stroke-width='1.5' fill='none' stroke-linecap='round'/></svg>") no-repeat right 10px center;-webkit-appearance:none;appearance:none;cursor:pointer;font-weight:600;}
.dash-filter-select:focus{border-color:var(--accent);outline:none;}
.dash-toolbar-right{margin-left:auto;display:flex;gap:8px;}
.dash-btn{padding:8px 16px;border-radius:10px;border:1.5px solid var(--border);background:var(--white);font-family:inherit;font-size:12px;font-weight:600;color:var(--text2);cursor:pointer;transition:all .12s;display:inline-flex;align-items:center;gap:5px;}
.dash-btn:hover{border-color:var(--accent);color:var(--accent);background:#fff7ed;}
.dash-btn-primary{background:var(--accent);color:#fff;border-color:var(--accent);}
.dash-btn-primary:hover{background:#e55a2b;border-color:#e55a2b;}

.dash-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px;}
.dash-card{background:var(--white);border:1px solid var(--border);border-radius:16px;padding:22px 24px;position:relative;overflow:hidden;transition:transform .15s,box-shadow .15s;}
.dash-card:hover{transform:translateY(-3px);box-shadow:0 8px 24px rgba(0,0,0,.06);}
.dash-card::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:var(--card-accent,var(--accent));border-radius:16px 16px 0 0;}
.dash-card-icon{width:40px;height:40px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:20px;margin-bottom:14px;background:color-mix(in srgb, var(--card-accent) 8%, transparent);}
.dash-card-label{font-size:12px;font-weight:600;color:var(--text3);letter-spacing:.2px;margin-bottom:6px;}
.dash-card-value{font-size:32px;font-weight:800;color:var(--text);letter-spacing:-.5px;font-variant-numeric:tabular-nums;line-height:1;}
.dash-card-sub{font-size:11px;color:var(--text3);margin-top:8px;font-weight:500;}
.dash-card-delta{display:inline-flex;align-items:center;gap:3px;padding:2px 8px;border-radius:99px;font-size:10.5px;font-weight:700;margin-right:6px;}
.dash-card-delta.up{background:#fee2e2;color:#991b1b;}
.dash-card-delta.down{background:#dcfce7;color:#166534;}
.dash-card-delta.flat{background:#f4f4f5;color:#52525b;}
.dash-card.card-publish{--card-accent:#FF6B35;}
.dash-card.card-progress{--card-accent:#3b82f6;}
.dash-card.card-complete{--card-accent:#22c55e;}
.dash-card.card-reject{--card-accent:#8b5cf6;}

.dash-charts{display:grid;grid-template-columns:5fr 3fr;gap:16px;margin-bottom:20px;}
.dash-charts-2{display:grid;grid-template-columns:5fr 3fr;gap:16px;margin-bottom:20px;}
.dash-panel{background:var(--white);border:1px solid var(--border);border-radius:16px;padding:20px 22px;}
.dash-panel-title{font-size:14px;font-weight:700;color:var(--text);letter-spacing:-.2px;margin-bottom:14px;display:flex;align-items:center;gap:6px;padding-bottom:12px;border-bottom:1px solid var(--border);}
.dash-chart-wrap{position:relative;height:280px;}
.dash-chart-wrap.tall{height:320px;}

.dash-table{width:100%;border-collapse:separate;border-spacing:0;font-size:12.5px;}
.dash-table thead th{text-align:left;padding:11px 14px;font-weight:700;color:var(--text3);font-size:11px;background:var(--bg);border-bottom:1px solid var(--border);letter-spacing:.2px;white-space:nowrap;text-transform:uppercase;}
.dash-table thead th:first-child{border-radius:10px 0 0 0;}
.dash-table thead th:last-child{border-radius:0 10px 0 0;}
.dash-table tbody td{padding:12px 14px;border-bottom:0.5px solid var(--border);color:var(--text);}
.dash-table tbody tr:hover{background:#fffbf7;}
.dash-table tbody tr:last-child td{border-bottom:none;}
.dash-table .num{text-align:right;font-variant-numeric:tabular-nums;font-weight:600;}
.dash-rank-badge{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:8px;font-size:11px;font-weight:800;}
.dash-rank-badge.top1{background:#fef3c7;color:#854d0e;}
.dash-rank-badge.top2{background:#e0e7ff;color:#3730a3;}
.dash-rank-badge.top3{background:#fce7f3;color:#9d174d;}

.dash-empty{padding:48px 20px;text-align:center;color:var(--text3);font-size:13px;border-radius:12px;background:var(--bg);}
.dash-loading{padding:48px 20px;text-align:center;color:var(--text3);font-size:13px;}
.dash-loading::before{
  content:'';display:inline-block;width:14px;height:14px;
  border:2px solid var(--border2);border-top-color:var(--accent);
  border-radius:50%;margin-right:8px;vertical-align:middle;
  animation:dashSpin .8s linear infinite;
}
@keyframes dashSpin{to{transform:rotate(360deg);}}
.table-view{width:100%;height:100%;display:none;}
.table-view.active{display:block;}

/* 카드형 테이블 래퍼 */
#hot-wrap{
  width:100%;height:100%;
  background:var(--white);
  border-radius:var(--radius);
  border:1px solid var(--border);
  box-shadow:var(--card-shadow);
  overflow:hidden;
}

/* 칸반 */
.kanban-view{width:100%;height:100%;display:none;overflow-x:auto;gap:14px;}
.kanban-view.active{display:flex;align-items:flex-start;}
.kanban-col{
  min-width:270px;max-width:270px;
  background:var(--white);border-radius:var(--radius);
  border:1px solid var(--border);
  box-shadow:var(--card-shadow);
  overflow:hidden;display:flex;flex-direction:column;max-height:100%;
}
.kanban-col-header{padding:14px 16px;display:flex;align-items:center;gap:8px;border-bottom:1px solid var(--border);flex-shrink:0;}
.kanban-col-dot{width:9px;height:9px;border-radius:50%;}
.kanban-col-title{font-size:13px;font-weight:700;}
.kanban-col-cnt{margin-left:auto;font-size:11px;font-weight:600;background:var(--bg);color:var(--text2);padding:2px 8px;border-radius:99px;}
.kanban-cards{overflow-y:auto;padding:10px;display:flex;flex-direction:column;gap:8px;flex:1;}
.kanban-card{
  background:var(--bg);border:1.5px solid var(--border);
  border-radius:var(--radius-sm);padding:13px;cursor:grab;transition:all .15s;
}
.kanban-card:active{cursor:grabbing;}
.kanban-card.dragging{opacity:.4;transform:scale(.98);}
.kanban-col.drag-over .kanban-cards{
  background:rgba(255,107,53,0.04);
  box-shadow:inset 0 0 0 2px var(--accent);
  border-radius:var(--radius-sm);
}
.kanban-card:hover{border-color:var(--accent);box-shadow:0 4px 16px rgba(255,107,53,.1);background:var(--white);transform:translateY(-1px);}
/* 반려 카드 강조 */
.kanban-card-rejected{
  background:#fee2e2 !important;
  border-color:#fca5a5 !important;
  position:relative;
}
.kanban-card-rejected::before{
  content:'';position:absolute;left:0;top:0;bottom:0;width:3px;
  background:#ef4444;border-radius:var(--radius-sm) 0 0 var(--radius-sm);
}
.kanban-card-rejected:hover{
  background:#fecaca !important;
  border-color:#ef4444 !important;
  box-shadow:0 4px 16px rgba(239,68,68,.18) !important;
}
.kanban-card-rejected .card-title{color:#991b1b;}
.card-tag.card-tag-rejected{
  background:#ef4444;color:#fff;font-weight:700;
  box-shadow:0 1px 3px rgba(239,68,68,.3);
}
/* 반려 카드가 포함된 컬럼 상단 표시 */
.kanban-col.kanban-col-has-rejected .kanban-col-header{
  background:linear-gradient(to bottom, #fee2e2, transparent);
}
.kanban-col.kanban-col-has-rejected .kanban-col-header::after{
  content:'⚠';color:#ef4444;font-size:13px;margin-left:auto;margin-right:4px;
}
.card-title{font-size:13px;font-weight:700;color:var(--text);margin-bottom:8px;line-height:1.3;}
.card-meta{display:flex;flex-wrap:wrap;gap:4px;}
.card-tag{font-size:10px;padding:3px 8px;border-radius:99px;font-weight:600;}
.card-tag.channel{background:#eff6ff;color:#2563eb;}
.card-tag.region{background:#f0fdf4;color:#16a34a;}
/* 칸반 지역 배지는 읽기 전용 표시. 수정은 상세 모달에서만 */
.card-tag.region[data-role="region-picker"]{cursor:inherit;}
.card-tag.staff{background:#fdf4ff;color:#9333ea;}
.card-dday{font-size:10px;font-weight:700;padding:3px 8px;border-radius:99px;}
.dday-over{background:#fef2f2;color:#dc2626;}
.dday-today{background:#fff7ed;color:#ea580c;}
.dday-near{background:#fefce8;color:#ca8a04;}
.dday-ok{background:#f0fdf4;color:#16a34a;}

/* 칸반 헤더 컬러 */
.k-gray .kanban-col-dot{background:#a1a1aa;}.k-gray .kanban-col-header{border-top:3px solid #a1a1aa;}
.k-blue .kanban-col-dot{background:#3b82f6;}.k-blue .kanban-col-header{border-top:3px solid #3b82f6;}
.k-yellow .kanban-col-dot{background:#f59e0b;}.k-yellow .kanban-col-header{border-top:3px solid #f59e0b;}
.k-green .kanban-col-dot{background:#22c55e;}.k-green .kanban-col-header{border-top:3px solid #22c55e;}
.k-red .kanban-col-dot{background:#ef4444;}.k-red .kanban-col-header{border-top:3px solid #ef4444;}
.k-purple .kanban-col-dot{background:#a855f7;}.k-purple .kanban-col-header{border-top:3px solid #a855f7;}
.k-orange .kanban-col-dot{background:#f97316;}.k-orange .kanban-col-header{border-top:3px solid #f97316;}
.k-sky .kanban-col-dot{background:#0ea5e9;}.k-sky .kanban-col-header{border-top:3px solid #0ea5e9;}
.k-indigo .kanban-col-dot{background:#6366f1;}.k-indigo .kanban-col-header{border-top:3px solid #6366f1;}

/* HOT 스타일 */
.handsontable .htCore td,
.handsontable .htCore th{
  font-family:'Pretendard',sans-serif!important;
  font-size:13px!important;
  border-color:#f0ede9!important;
}
/* ── 컬럼 헤더 ── */
.handsontable .htCore thead th{
  background:#faf8f6!important;
  color:#6b5c4d!important;
  font-weight:600!important;
  font-size:11.5px!important;
  letter-spacing:0.1px!important;
  height:36px!important;
  border-bottom:1.5px solid #ede5dc!important;
  vertical-align:middle!important;
  padding:0!important;
}
.handsontable .htCore thead th .relative{
  display:flex!important;
  align-items:center!important;
  padding:0 12px!important;
  height:100%!important;
}
.handsontable .htCore thead th .colHeader{
  font-size:12px!important;
  font-weight:700!important;
  color:#5a4a3a!important;
}
/* 행 헤더 */
.handsontable .htCore tbody th,
.handsontable .htCore th.rowHeader{
  background:#faf7f4!important;
  color:#c4a98a!important;
  font-size:11px!important;
  font-weight:500!important;
  border-right:1px solid #ede5dc!important;
}
/* 셀 */
.handsontable .htCore td{
  background:#fff!important;
  color:#18181b!important;
  font-size:12.5px!important;
  border-color:#f0ede9!important;
  vertical-align:middle!important;
  padding:0 10px!important;
  overflow:hidden!important;
  white-space:nowrap!important;
  text-overflow:ellipsis!important;
  max-height:38px!important;
}
.handsontable .htCore tr:hover td{background:#faf7f5!important;}
.handsontable .htCore td:hover:not(.htInvalid):not(.htDimmed){
  background:#fff3ee!important;
  cursor:cell;
  box-shadow:inset 0 0 0 1px #ffc9a8;
  transition:box-shadow .08s;
}
.handsontable .htCore td.current{background:#fff3ee!important;}
.handsontable .htCore td.area{background:#fff8f5!important;}
/* 드롭다운 버튼 */
.handsontable .changeType{color:#d4b8a0!important;}
.handsontable .changeType:hover{color:var(--accent)!important;}
/* 리사이즈 */
.handsontable .manualColumnResizer:hover{background:var(--accent)!important;}
/* 고정 컬럼 그림자 */
.handsontable.ht_clone_left .wtHolder{box-shadow:4px 0 12px rgba(120,80,40,0.04)!important;}
/* 선택 테두리 */
.handsontable .wtBorder.current{border-color:var(--accent)!important;border-width:2px!important;}
.handsontable .wtBorder.area{border-color:rgba(255,107,53,.35)!important;}
/* 정렬 아이콘 */
.handsontable .htCore th .sortAction{color:#c4a98a!important;}
.handsontable .htCore th .sortAction.htAscSort,
.handsontable .htCore th .sortAction.htDescSort{color:var(--accent)!important;}
.row-sent td{background:#eff6ff!important;}
.row-waiting td{background:#fffbeb!important;}
.row-approved td{background:#f0fdf4!important;}
.row-rejected td{background:#fff1f2!important;}
.row-blacklist td{background:#fff5f5!important;}
/* 반려사유 강조 (검토현황이 '반려'일 때) — 배경은 행과 동일, inset 테두리로만 강조 */
.handsontable .htCore td.cell-banryo-required{
  box-shadow:inset 0 0 0 2px #ef4444 !important;
  background:#fee2e2 !important;
}
.banryo-placeholder{color:#ef4444;font-size:11px;font-weight:600;font-style:italic;opacity:.75;}

/* ── 장문 텍스트 셀 (반려사유/캡션): 버튼 or placeholder ── */
.handsontable .htCore td.longtext-cell{
  /* 반려가 아닐 때 등 비활성 상태는 기본 커서로 — 셀별 cursor는 JS에서 직접 설정 */
  min-height:44px;vertical-align:middle;
}
.handsontable .htCore td.longtext-cell-active{cursor:pointer !important;}
.longtext-placeholder{
  display:inline-block;padding:0 10px;
  font-size:11px;font-weight:500;font-style:italic;
  color:#a1a1aa;cursor:pointer;user-select:none;
}
.longtext-placeholder-rejected{color:#ef4444;font-weight:600;opacity:.85;}
.longtext-placeholder-muted{color:#a1a1aa;font-weight:500;font-style:italic;}
.longtext-placeholder-muted:hover{color:#52525b;}
.longtext-btn{
  display:inline-flex;align-items:center;gap:5px;
  margin:0 8px;padding:4px 11px;
  font-family:inherit;font-size:11px;font-weight:600;
  background:#f4f4f5;color:#52525b;
  border:1px solid #e4e4e7;border-radius:6px;
  cursor:pointer;transition:all .12s;
}
.longtext-btn::before{content:'📄';font-size:10px;}
.longtext-btn:hover{background:#e4e4e7;color:#27272a;border-color:#d4d4d8;}
.longtext-btn-rejected{
  background:#fee2e2;color:#991b1b;border-color:#fecaca;
}
.longtext-btn-rejected::before{content:'⚠';font-size:11px;}
.longtext-btn-rejected:hover{background:#fecaca;border-color:#fca5a5;}
.longtext-btn-muted{
  background:#fafafa;color:#52525b;border-color:#e4e4e7;
  font-style:normal;opacity:.9;
}
.longtext-btn-muted::before{content:'';}
.longtext-btn-muted:hover{background:#f4f4f5;color:#18181b;border-color:#d4d4d8;opacity:1;}

/* 반려사유 비활성 상태 — 반려도 아니고 기록도 없음 */
.longtext-disabled{
  display:block;text-align:center;color:#d4d4d8;
  font-weight:500;user-select:none;
}

/* ── 장문 텍스트 모달 ── */
#longtext-modal{position:fixed;inset:0;z-index:1000001;display:none;
  background:rgba(0,0,0,0.5);backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
  align-items:center;justify-content:center;
}
#longtext-modal.show{display:flex;}
.longtext-panel{
  background:var(--white);border-radius:14px;
  box-shadow:0 24px 80px rgba(0,0,0,0.2);
  width:620px;max-width:92vw;max-height:80vh;
  display:flex;flex-direction:column;overflow:hidden;
  animation:detailSlide .18s cubic-bezier(.34,1.56,.64,1);
}
.longtext-head{
  padding:18px 22px 14px;border-bottom:1px solid var(--border);
  display:flex;align-items:center;justify-content:space-between;gap:12px;
}
.longtext-title{font-size:16px;font-weight:800;color:var(--text);letter-spacing:-0.3px;}
.longtext-title.rejected{color:#991b1b;}
.longtext-icon{
  font-size:18px;flex-shrink:0;
  display:inline-flex;align-items:center;justify-content:center;
  width:32px;height:32px;border-radius:8px;
  background:#f4f4f5;
}
.longtext-icon.rejected{background:#fee2e2;}
.longtext-head-actions{display:flex;align-items:center;gap:6px;}
.longtext-copy-btn{
  display:inline-flex;align-items:center;gap:5px;
  padding:6px 11px;font-family:inherit;font-size:11px;font-weight:600;
  background:transparent;color:var(--text2);
  border:1px solid var(--border2);border-radius:6px;
  cursor:pointer;transition:all .12s;
}
.longtext-copy-btn::before{content:'📋';font-size:11px;}
.longtext-copy-btn:hover{background:var(--bg);color:var(--text);border-color:var(--text3);}
.longtext-copy-btn:disabled{
  opacity:.45;cursor:not-allowed;background:transparent;color:var(--text3);
}
.longtext-copy-btn.copied{
  background:#f0fdf4;color:#16a34a;border-color:#86efac;
}
.longtext-copy-btn.copied::before{content:'✓';}
.longtext-close{
  background:none;border:none;cursor:pointer;
  color:var(--text3);font-size:18px;padding:0 4px;line-height:1;
  transition:color .12s;
}
.longtext-close:hover{color:var(--text);}
.longtext-body{padding:18px 22px;overflow-y:auto;flex:1;}
.longtext-textarea{
  width:100%;min-height:180px;max-height:50vh;
  padding:12px 14px;border:1.5px solid var(--border2);
  border-radius:8px;resize:vertical;
  font-family:inherit;font-size:13px;line-height:1.6;color:var(--text);
  background:var(--white);outline:none;
  transition:border-color .12s,box-shadow .12s;
  overflow-y:auto;
}
.longtext-textarea:focus{
  border-color:var(--accent);
  box-shadow:0 0 0 3px rgba(255,107,53,.1);
}
.longtext-textarea.rejected{
  border-color:#fca5a5;background:#fffafa;
}
.longtext-textarea.rejected:focus{
  border-color:#ef4444;
  box-shadow:0 0 0 3px rgba(239,68,68,.15);
}
.longtext-foot{
  padding:13px 22px;border-top:1px solid var(--border);
  display:flex;align-items:center;justify-content:space-between;gap:10px;
}
.longtext-meta{font-size:11px;color:var(--text3);}
.longtext-foot-actions{display:flex;gap:8px;}
.longtext-btn-cancel{
  padding:8px 16px;font-family:inherit;font-size:12px;font-weight:600;
  background:transparent;color:var(--text2);
  border:1.5px solid var(--border2);border-radius:7px;cursor:pointer;
  transition:all .12s;
}
.longtext-btn-cancel:hover{background:var(--bg);color:var(--text);}
.longtext-btn-save{
  padding:8px 18px;font-family:inherit;font-size:12px;font-weight:700;
  background:var(--accent);color:#fff;
  border:none;border-radius:7px;cursor:pointer;
  transition:all .12s;
}
.longtext-btn-save:hover{background:#e55a2e;transform:translateY(-1px);box-shadow:0 4px 12px rgba(255,107,53,.3);}
.longtext-btn-save.rejected{background:#ef4444;}
.longtext-btn-save.rejected:hover{background:#dc2626;box-shadow:0 4px 12px rgba(239,68,68,.3);}

/* ── 블랙리스트 전용 상세 모달 (4섹션 2단) ── */
.detail-panel:has(.bl-detail-body){width:1100px;max-width:96vw;}

/* 블랙리스트 테이블: 슬림 가로 스크롤바 */
.wtHolder::-webkit-scrollbar{height:8px;width:8px;}
.wtHolder::-webkit-scrollbar-track{background:#fafafa;}
.wtHolder::-webkit-scrollbar-thumb{
  background:#d4d4d8;border-radius:8px;border:2px solid #fafafa;
}
.wtHolder::-webkit-scrollbar-thumb:hover{background:#a1a1aa;}

/* 스크롤 성능 최적화 — GPU 가속 */
.wtHolder{
  -webkit-overflow-scrolling:touch;
  will-change:scroll-position;
  transform:translateZ(0);
  backface-visibility:hidden;
}
.handsontable .wtSpreader{
  transform:translateZ(0);
}
.handsontable.ht_clone_left,
.handsontable.ht_clone_top,
.handsontable.ht_clone_top_inline_start_corner{
  transform:translateZ(0);
  backface-visibility:hidden;
}
#view-table{contain:layout style;}
.bl-detail-body{
  display:flex;flex-direction:column;gap:18px;
  padding:0 4px;
}
.bl-section{
  background:#fafafa;border:1px solid var(--border);
  border-radius:12px;padding:16px 18px;
}
.bl-section-title{
  font-size:13.5px;font-weight:800;color:var(--text);letter-spacing:-0.3px;
  margin-bottom:14px;padding-bottom:8px;
  border-bottom:1.5px solid var(--border);
  display:flex;align-items:center;gap:6px;
}
.bl-section-grid{
  display:grid;grid-template-columns:1fr 1fr;gap:12px 16px;
}
.bl-field{display:flex;flex-direction:column;gap:5px;min-width:0;}
.bl-field-span2{grid-column:span 2;}
.bl-field-label{
  font-size:11.5px;font-weight:700;color:var(--text2);
  display:flex;align-items:center;gap:4px;
}
.bl-required-star{color:#dc2626;font-size:12px;}
.bl-field-required .bl-input{
  background:#fffbeb;border-color:#fcd34d;
}
.bl-input,.bl-textarea{
  font-family:inherit;font-size:12.5px;color:var(--text);
  padding:8px 11px;border:1.5px solid var(--border2);border-radius:7px;
  background:#fff;outline:none;
  transition:border-color .12s, box-shadow .12s;
  width:100%;box-sizing:border-box;
}
.bl-input:focus,.bl-textarea:focus{
  border-color:var(--accent);
  box-shadow:0 0 0 3px rgba(255,107,53,0.1);
}
.bl-textarea{resize:vertical;min-height:70px;line-height:1.5;}
.bl-input[type="date"]{font-family:inherit;}
.bl-input-money{text-align:right;font-variant-numeric:tabular-nums;font-weight:600;}
.bl-input-etc{margin-top:5px;}

/* 리스크 등급 라디오 */
.bl-risk-group{display:flex;gap:8px;flex-wrap:wrap;}
.bl-risk-radio{
  flex:1;min-width:130px;cursor:pointer;
  display:inline-flex;align-items:center;gap:8px;
  padding:9px 12px;border:1.5px solid var(--border2);border-radius:8px;
  background:#fff;transition:all .14s;
  font-size:12px;font-weight:600;color:var(--text2);
}
.bl-risk-radio:hover{border-color:var(--risk-color);}
.bl-risk-radio.active{
  border-color:var(--risk-color);background:#fff7ed;color:var(--text);font-weight:700;
  box-shadow:0 0 0 3px color-mix(in srgb, var(--risk-color) 15%, transparent);
}
.bl-risk-radio input[type="radio"]{display:none;}
.bl-risk-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;}
.bl-risk-label{display:inline-flex;align-items:center;gap:4px;}

/* 후속 조치 체크박스 */
.bl-followup-group{display:flex;gap:8px;flex-wrap:wrap;}
.bl-followup-check{
  flex:1;min-width:150px;cursor:pointer;
  display:inline-flex;align-items:center;gap:8px;
  padding:9px 12px;border:1.5px solid var(--border2);border-radius:8px;
  background:#fff;transition:all .14s;
  font-size:12px;font-weight:600;color:var(--text2);
}
.bl-followup-check:hover{border-color:var(--accent);}
.bl-followup-check.active{
  border-color:#16a34a;background:#f0fdf4;color:#166534;font-weight:700;
  box-shadow:0 0 0 3px rgba(22,163,74,0.12);
}
.bl-followup-check input[type="checkbox"]{display:none;}
.bl-followup-icon{font-size:14px;}

/* 금융 요약 카드 */
.bl-finance-summary{
  margin-top:12px;padding:12px 14px;
  background:linear-gradient(135deg, #fff7ed 0%, #fed7aa 100%);
  border:1.5px solid #fdba74;border-radius:10px;
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;
}
.bl-finance-label{font-size:11.5px;font-weight:700;color:#9a3412;}
.bl-finance-total{
  font-size:16px;font-weight:900;color:#9a3412;
  font-variant-numeric:tabular-nums;letter-spacing:-0.3px;
}
.bl-finance-detail{font-size:11px;color:#7c2d12;opacity:.85;}
.bl-finance-detail strong{font-weight:700;color:#9a3412;}

/* 테이블 배지들 */
.risk-level-badge{
  display:inline-flex;align-items:center;gap:5px;
  padding:3px 9px;border-radius:99px;
  font-size:11px;font-weight:700;white-space:nowrap;
}
.risk-level-dot{width:6px;height:6px;border-radius:50%;}
.money-cell{
  font-size:12px;font-variant-numeric:tabular-nums;color:var(--text);
  font-weight:600;
}
.money-cell.money-positive{color:#dc2626;}
.followup-wrap{display:inline-flex;gap:3px;flex-wrap:wrap;}
.followup-pill{
  display:inline-flex;align-items:center;
  padding:2px 7px;border-radius:99px;
  font-size:10px;font-weight:700;white-space:nowrap;
}
.followup-legal{background:#ede9fe;color:#5b21b6;}
.followup-recovered{background:#dcfce7;color:#166534;}
.followup-negotiating{background:#dbeafe;color:#1e40af;}

/* ── 블랙리스트 사유 배지 ── */
.reason-badges-wrap{
  display:inline-flex;align-items:center;flex-wrap:wrap;gap:4px;
  max-width:100%;vertical-align:middle;
}
.reason-badge{
  display:inline-flex;align-items:center;gap:6px;
  padding:3px 10px 3px 8px;border-radius:99px;
  font-size:11px;font-weight:700;line-height:1.3;
  white-space:nowrap;
}
.reason-badge-dot{
  width:6px;height:6px;border-radius:50%;flex-shrink:0;
}
.reason-badge-more{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:20px;height:18px;padding:0 7px;border-radius:5px;
  background:var(--accent);color:#fff;
  font-size:10px;font-weight:800;line-height:1;letter-spacing:-0.2px;
  cursor:help;
  box-shadow:0 1px 2px rgba(255,87,34,0.25);
}
.handsontable .htCore td.reason-cell{cursor:pointer !important;}
.handsontable .htCore td.reason-cell:hover{background:#fff7ed !important;}

/* 지역 셀 호버 */
.handsontable .htCore td.region-cell-clickable:hover{background:#f9fafb !important;}

/* 상세 모달 행 강조 애니메이션 */
.detail-row-flash{ animation: detailRowFlash 1.2s ease-out; border-radius:10px; }
@keyframes detailRowFlash{
  0%  {background:rgba(255,107,53,0.22); box-shadow:0 0 0 3px rgba(255,107,53,0.3);}
  50% {background:rgba(255,107,53,0.10); box-shadow:0 0 0 2px rgba(255,107,53,0.15);}
  100%{background:transparent; box-shadow:none;}
}

/* ── 사유 2단계 선택기 (모달 내부) ── */
.reason-picker{
  width:100%;display:flex;flex-direction:column;gap:10px;
}
.reason-picker-row{display:flex;gap:6px;flex-wrap:wrap;}
.reason-cat-btn{
  flex:1 1 auto;min-width:fit-content;position:relative;
  padding:9px 10px;border-radius:8px;
  border:1.5px solid var(--border2);background:var(--white);
  font-family:inherit;font-size:11.5px;font-weight:600;color:var(--text2);
  cursor:pointer;transition:all .14s;
  display:inline-flex;align-items:center;gap:5px;justify-content:center;
  white-space:nowrap;letter-spacing:-0.2px;
}
.reason-cat-btn:hover{border-color:var(--accent);color:var(--accent);}
.reason-cat-btn.active{
  border-color:var(--accent);background:#fff7ed;color:var(--accent);
  font-weight:700;box-shadow:0 0 0 3px rgba(255,107,53,0.08);
}
.reason-cat-count{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:18px;height:18px;padding:0 5px;border-radius:9px;
  background:var(--accent);color:#fff;
  font-size:10px;font-weight:800;line-height:1;letter-spacing:-0.2px;
  margin-left:2px;flex-shrink:0;
  box-shadow:0 1px 2px rgba(255,87,34,0.25);
}

.reason-sub-list{
  display:flex;flex-direction:column;gap:5px;
  max-height:380px;overflow-y:auto;
  padding:6px;border:1px solid var(--border);border-radius:8px;
  background:#fafafa;
}
.reason-sub-item{
  display:flex;align-items:center;gap:10px;
  padding:9px 12px;border-radius:7px;
  cursor:pointer;transition:background .1s, border-color .1s;
  border:1.5px solid transparent;background:var(--white);
}
.reason-sub-item:hover{background:#f9fafb;border-color:var(--border2);}
.reason-sub-item.selected{
  background:#fff7ed;border-color:var(--accent);
}
.reason-sub-item-dot{
  width:8px;height:8px;border-radius:50%;flex-shrink:0;
  box-shadow:0 0 0 2px rgba(0,0,0,0.04);
}
.reason-sub-item-name{font-size:12.5px;font-weight:700;color:var(--text);}
.reason-sub-item-desc{font-size:11px;color:var(--text3);line-height:1.4;margin-top:2px;}
.reason-sub-item-content{flex:1;min-width:0;}
.reason-sub-item.selected .reason-sub-item-name{color:var(--accent);}

/* 체크박스 아이콘 */
.reason-checkbox{
  width:16px;height:16px;border-radius:4px;flex-shrink:0;
  border:1.5px solid #d4d4d8;background:#fff;
  display:inline-flex;align-items:center;justify-content:center;
  transition:all .14s;
  position:relative;
}
.reason-checkbox.checked{
  background:var(--accent);border-color:var(--accent);
}
.reason-checkbox.checked::after{
  content:'';
  width:4px;height:8px;
  border:solid #fff;border-width:0 2px 2px 0;
  transform:rotate(45deg) translate(-1px,-1px);
}
.reason-sub-item:hover .reason-checkbox:not(.checked){border-color:var(--accent);}

.reason-empty-hint{
  padding:18px;text-align:center;
  font-size:12px;color:var(--text3);font-style:italic;
}

/* 서브탭 전용 사유가 미등록일 때 안내 박스 */
.reason-no-config{
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:10px;padding:40px 24px;
  background:#fafafa;border:1.5px dashed var(--border2);border-radius:10px;
  text-align:center;
}
.reason-no-config-icon{font-size:42px;opacity:.5;}
.reason-no-config-title{
  font-size:14px;font-weight:700;color:var(--text);letter-spacing:-0.3px;
}
.reason-no-config-sub{
  font-size:12px;color:var(--text3);line-height:1.55;
  max-width:340px;
}

/* ── Red 등급 고위험 경고 배너 ── */
.reason-red-warning{
  display:flex;gap:11px;align-items:flex-start;
  padding:13px 15px;margin-bottom:2px;
  background:linear-gradient(135deg, #fef2f2 0%, #fee2e2 100%);
  border:1.5px solid #fca5a5;border-left:4px solid #dc2626;
  border-radius:9px;
  box-shadow:0 2px 8px rgba(220,38,38,0.08);
  animation:warningSlideIn .3s ease-out;
}
@keyframes warningSlideIn{
  from{opacity:0;transform:translateY(-6px);}
  to{opacity:1;transform:translateY(0);}
}
.reason-red-warning-icon{
  font-size:18px;line-height:1.2;flex-shrink:0;
  filter:drop-shadow(0 0 3px rgba(220,38,38,0.2));
}
.reason-red-warning-body{flex:1;min-width:0;}
.reason-red-warning-title{
  font-size:12.5px;font-weight:800;color:#991b1b;letter-spacing:-0.3px;
  margin-bottom:4px;display:flex;align-items:center;gap:6px;
}
.reason-red-warning-badge{
  display:inline-flex;align-items:center;justify-content:center;
  padding:1px 7px;border-radius:4px;
  background:#dc2626;color:#fff;
  font-size:9.5px;font-weight:800;letter-spacing:0.2px;
}
.reason-red-warning-desc{
  font-size:11.5px;color:#7f1d1d;line-height:1.6;
}
.reason-red-warning-desc strong{font-weight:800;color:#991b1b;}

/* 유효성 알림 영역 (모달 내부) */
.validation-alert{
  padding:14px 16px;margin:8px 0 0;
  background:#fffbeb;border:1.5px solid #fcd34d;border-left:4px solid #f59e0b;
  border-radius:9px;font-size:12px;color:#78350f;line-height:1.55;
  display:flex;gap:10px;align-items:flex-start;
  animation:warningSlideIn .25s ease-out;
}
.validation-alert::before{content:'⚠️';font-size:14px;flex-shrink:0;}

/* ── 증거 자료 첨부 (블랙리스트) ── */
.file-upload-box{
  width:100%;display:flex;flex-direction:column;gap:10px;
}
.file-drop-zone{
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:6px;padding:22px 18px;
  border:2px dashed var(--border2);border-radius:10px;
  background:#fafafa;cursor:pointer;
  transition:all .18s;text-align:center;
}
.file-drop-zone:hover{border-color:var(--accent);background:#fff7ed;}
.file-drop-zone.file-drop-over{
  border-color:var(--accent);background:#fff7ed;
  transform:scale(1.01);box-shadow:0 4px 16px rgba(255,107,53,0.12);
}
.file-drop-icon{font-size:30px;opacity:.6;}
.file-drop-title{font-size:13px;font-weight:700;color:var(--text);}
.file-drop-sub{font-size:11px;color:var(--text3);line-height:1.5;}
.file-drop-hint{font-size:10.5px;color:#a1a1aa;margin-top:2px;}

/* Red 사유 선택 시 업로드 영역 펄스 */
.reason-picker:has(.reason-red-warning) ~ * .file-drop-zone,
.detail-panel:has(.reason-red-warning) .file-drop-zone{
  border-color:#f59e0b;background:#fffbeb;
  animation:filePulse 1.8s ease-in-out infinite;
}
@keyframes filePulse{
  0%,100%{box-shadow:0 0 0 0 rgba(220,38,38,0.15);}
  50%    {box-shadow:0 0 0 8px rgba(220,38,38,0.02);}
}

/* 파일 칩 */
.file-list{
  display:flex;flex-direction:column;gap:6px;
}
.file-chip{
  display:flex;align-items:center;gap:10px;
  padding:8px 10px;border-radius:8px;
  background:#fff;border:1px solid var(--border);
  transition:all .12s;
}
.file-chip:hover{border-color:var(--accent);box-shadow:0 2px 6px rgba(0,0,0,0.04);}
.file-chip-icon{font-size:18px;flex-shrink:0;}
.file-chip-body{flex:1;min-width:0;}
.file-chip-name{
  font-size:12.5px;font-weight:600;color:var(--text);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  letter-spacing:-0.2px;
}
.file-chip-meta{
  font-size:10.5px;color:var(--text3);margin-top:1px;
}
.file-chip-view,.file-chip-del{
  flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;
  width:28px;height:28px;border-radius:6px;
  text-decoration:none;font-size:12px;font-weight:700;
  background:transparent;border:1px solid var(--border);
  color:var(--text2);cursor:pointer;
  transition:all .12s;
}
.file-chip-view:hover{background:var(--bg);color:var(--accent);border-color:var(--accent);}
.file-chip-del{font-family:inherit;}
.file-chip-del:hover{background:#fee2e2;color:#dc2626;border-color:#fca5a5;}

.file-progress{min-height:0;}
.file-uploading{
  display:inline-flex;align-items:center;gap:6px;
  font-size:11.5px;color:var(--accent);font-weight:600;
  padding:6px 10px;border-radius:6px;
  background:#fff7ed;border:1px solid #fed7aa;
}
.file-limit-notice{
  padding:10px 12px;border-radius:8px;
  background:#fef3c7;color:#92400e;
  font-size:11.5px;font-weight:600;text-align:center;
}

/* 현재 선택된 사유들 - 칩 나열 */
.reason-current-row{
  display:flex;align-items:center;flex-wrap:wrap;gap:6px;
  padding:8px 10px;border-radius:8px;
  background:#fafafa;border:1px dashed var(--border2);
}
.reason-current-label{
  font-size:11px;color:var(--text3);font-weight:600;
  margin-right:2px;
}
.reason-current-display{
  display:inline-flex;align-items:center;gap:5px;
  padding:4px 6px 4px 10px;border-radius:99px;
  font-size:11px;font-weight:700;
}
.reason-chip-remove{
  background:rgba(0,0,0,0.08);border:none;cursor:pointer;
  color:inherit;opacity:.75;
  width:16px;height:16px;border-radius:50%;
  font-size:9px;line-height:1;padding:0;
  display:inline-flex;align-items:center;justify-content:center;
  transition:all .12s;
}
.reason-chip-remove:hover{opacity:1;background:rgba(0,0,0,0.15);}
.reason-clear-btn{
  background:none;border:none;cursor:pointer;
  color:var(--text3);font-size:11px;font-family:inherit;font-weight:500;
  padding:2px 6px;border-radius:4px;transition:all .12s;margin-left:auto;
}
.reason-clear-btn:hover{color:var(--red);background:#fff1f2;}

/* ── 사유 전용 모달 (테이블 뷰 클릭 시) ── */
#reason-only-modal{
  position:fixed;inset:0;z-index:1000003;display:none;
  background:rgba(0,0,0,0.45);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  align-items:center;justify-content:center;
}
#reason-only-modal.show{display:flex;}
.reason-only-panel{
  background:var(--white);border-radius:14px;
  box-shadow:0 24px 80px rgba(0,0,0,0.22);
  width:680px;max-width:94vw;max-height:86vh;
  display:flex;flex-direction:column;overflow:hidden;
  animation:detailSlide .18s cubic-bezier(.34,1.56,.64,1);
}
.reason-only-head{
  padding:16px 22px 13px;border-bottom:1px solid var(--border);
  display:flex;align-items:center;justify-content:space-between;gap:10px;
}
.reason-only-title{
  font-size:15px;font-weight:800;color:var(--text);letter-spacing:-0.3px;
  display:flex;align-items:center;gap:8px;
}
.reason-only-title::before{content:'🚫';font-size:15px;}
.reason-only-subject{font-size:11px;color:var(--text3);font-weight:600;margin-top:2px;}
.reason-only-hint{font-size:11px;color:#9CA3AF;margin-top:6px;max-width:460px;line-height:1.5;}
.reason-only-body{padding:18px 22px;overflow-y:auto;flex:1;}
.reason-only-foot{
  padding:12px 22px;border-top:1px solid var(--border);
  display:flex;justify-content:space-between;align-items:center;gap:10px;
}
.reason-only-meta{font-size:11px;color:var(--text3);}
.reason-only-actions{display:flex;gap:8px;}

/* ── 블랙리스트 하위 탭 ── */

/* ── 블랙리스트 하위 탭 ── */
.blacklist-subtabs{
  display:flex;gap:32px;align-items:center;
  padding:0 28px;
  max-width:1920px;
  border-bottom:1px solid #E5E7EB;
  background:transparent;
}
.bl-subtab{
  display:inline-flex;align-items:center;gap:8px;
  padding:12px 2px 14px;
  background:transparent;border:none;
  font-family:inherit;font-size:13px;font-weight:500;color:#9CA3AF;
  cursor:pointer;position:relative;
  transition:color .2s ease;
  margin-bottom:-1px;
  white-space:nowrap;
  letter-spacing:-0.2px;
}
.bl-subtab:hover{color:#4B5563;}
.bl-subtab.active{color:#18181b;font-weight:700;}
/* 하단 바 (active indicator) - 부드러운 transition */
.bl-subtab::after{
  content:'';position:absolute;
  left:0;right:0;bottom:-1px;
  height:2.5px;border-radius:2px 2px 0 0;
  background:var(--accent);
  transform:scaleX(0);transform-origin:center;
  transition:transform .25s cubic-bezier(.4,0,.2,1);
}
.bl-subtab.active::after{transform:scaleX(1);}

/* 아이콘 스타일 */
.bl-subtab-icon{
  font-size:15px;line-height:1;
  transition:transform .2s;
  filter:grayscale(0.4);opacity:.7;
}
.bl-subtab.active .bl-subtab-icon{
  filter:grayscale(0);opacity:1;
}
.bl-subtab:hover .bl-subtab-icon{filter:grayscale(0);opacity:.9;}

/* 카운트 배지 - Fill Box 스타일 (모든 탭 통일) */
.bl-subtab-cnt{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:20px;height:18px;padding:0 6px;border-radius:5px;
  background:#F3F4F6;color:#9CA3AF;
  font-size:10px;font-weight:800;line-height:1;letter-spacing:-0.2px;
  transition:all .2s ease;
}
.bl-subtab:hover .bl-subtab-cnt{background:#E5E7EB;color:#4B5563;}
.bl-subtab.active .bl-subtab-cnt{
  background:var(--accent);color:#fff;
  box-shadow:0 1px 3px rgba(255,87,34,0.3);
}
/* 카운트 0일 때 배지 살짝 흐리게 */
.bl-subtab-cnt.is-zero{opacity:.5;}

/* 빈 카테고리 상태 */
.empty-state{
  position:absolute;inset:0;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:16px;pointer-events:none;
  background:rgba(255,255,255,0.98);
  z-index:5;
  animation:emptyFade .3s ease-out;
}
@keyframes emptyFade{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:translateY(0);}}
.empty-state-icon{font-size:48px;opacity:.35;filter:grayscale(0.3);}
.empty-state-text{font-size:15px;color:#4B5563;font-weight:700;letter-spacing:-0.3px;}
.empty-state-sub{
  font-size:12.5px;color:#9CA3AF;opacity:1;
  max-width:380px;text-align:center;line-height:1.55;
  margin-top:-4px;
}
.table-view{position:relative;}

/* ── 블랙리스트 권한 / 수정요청 UI ── */
.lock-indicator{
  display:inline-flex;align-items:center;gap:4px;
  padding:5px 10px;border-radius:99px;
  background:#f4f4f5;color:#71717a;
  font-size:11px;font-weight:600;cursor:help;user-select:none;
  border:1px solid var(--border);
}
.edit-request-badge{
  display:inline-flex;align-items:center;gap:4px;
  padding:2px 8px;border-radius:99px;
  background:#fef3c7;color:#92400e;
  font-size:10px;font-weight:700;
  border:1px solid #fde68a;
  white-space:nowrap;
}
.edit-request-badge::before{content:'📝';font-size:9px;}
.cell-has-edit-request{
  box-shadow:inset 0 0 0 2px #f59e0b !important;
}

/* 상세 모달: 비관리자 진입 시 안내 박스 */
.detail-request-info{
  margin:0 24px 4px;padding:11px 14px;
  background:#fef3c7;color:#92400e;
  border:1px solid #fde68a;border-radius:8px;
  font-size:12px;font-weight:500;line-height:1.5;
  display:flex;align-items:flex-start;gap:8px;
}
.detail-request-info::before{content:'🔒';font-size:14px;flex-shrink:0;}

/* 상세 모달: 관리자용 pending 요청 박스 */
.detail-pending-request{
  margin:0 24px 8px;padding:13px 16px;
  background:#fef3c7;border:1.5px solid #fde68a;border-radius:10px;
  display:flex;flex-direction:column;gap:10px;
}
.detail-pending-request-header{
  display:flex;align-items:center;gap:6px;
  font-size:12px;font-weight:700;color:#92400e;
}
.detail-pending-request-meta{font-size:11px;color:#92400e;opacity:.75;}
.detail-pending-request-message{
  padding:10px 12px;background:#fff;border-radius:6px;
  font-size:12px;color:#451a03;line-height:1.5;white-space:pre-wrap;
  border:1px solid #fde68a;max-height:120px;overflow-y:auto;
}
.detail-pending-request-actions{display:flex;gap:6px;justify-content:flex-end;}
.btn-approve,.btn-reject-req{
  padding:6px 14px;font-size:11px;font-weight:700;font-family:inherit;
  border:none;border-radius:6px;cursor:pointer;transition:all .12s;
}
.btn-approve{background:#16a34a;color:#fff;}
.btn-approve:hover{background:#15803d;}
.btn-reject-req{background:#fff;color:#dc2626;border:1px solid #fca5a5;}
.btn-reject-req:hover{background:#fff1f2;}

/* 수정 요청 작성 팝업 */
#request-edit-modal.show{display:flex !important;}
.request-edit-panel{
  background:var(--white);border-radius:14px;
  box-shadow:0 24px 80px rgba(0,0,0,0.2);
  width:520px;max-width:92vw;
  display:flex;flex-direction:column;overflow:hidden;
  animation:detailSlide .18s cubic-bezier(.34,1.56,.64,1);
}
.request-edit-head{
  padding:16px 20px;border-bottom:1px solid var(--border);
  display:flex;align-items:center;justify-content:space-between;
  font-size:14px;font-weight:700;color:var(--text);
}
.request-edit-body{padding:16px 20px;}
.request-edit-foot{
  padding:12px 20px;border-top:1px solid var(--border);
  display:flex;gap:8px;justify-content:flex-end;
}

/* ── Notion 스타일 상세 모달 ── */
.detail-panel{
  background:var(--white);border-radius:16px;
  box-shadow:0 24px 80px rgba(0,0,0,0.18);
  width:780px;max-width:94vw;max-height:88vh;
  display:flex;flex-direction:column;overflow:hidden;
  animation:detailSlide .22s cubic-bezier(.34,1.56,.64,1);
}
@keyframes detailSlide{from{opacity:0;transform:translateY(12px) scale(.97);}to{opacity:1;transform:translateY(0) scale(1);}}
.detail-head{
  display:flex;align-items:flex-start;gap:12px;
  padding:28px 32px 20px;border-bottom:1px solid var(--border);
  flex-shrink:0;
}
.detail-title-input{
  flex:1;border:none;outline:none;background:transparent;
  font-family:inherit;font-size:28px;font-weight:800;color:var(--text);
  letter-spacing:-0.4px;padding:0;
}
.detail-title-input::placeholder{color:var(--text3);font-weight:700;}
.detail-title-input.detail-title-rejected{
  color:#991b1b;
  background:#fee2e2;
  padding:4px 12px;
  border-radius:8px;
  margin:-4px -12px;
}
.detail-body{padding:14px 28px 20px;overflow-y:auto;flex:1;}
.detail-row{
  display:flex;align-items:flex-start;gap:14px;
  padding:8px 10px;border-radius:var(--radius-xs);min-height:44px;
}
.detail-row:hover{background:var(--bg);}
/* 지역 row 전체가 클릭 가능한 영역처럼 보이도록 */
.detail-row:has(.region-trigger){cursor:pointer;}
.detail-row:has(.region-trigger):hover{background:var(--accent-light);}
.detail-row:has(.region-trigger):hover .region-trigger{background:var(--white);border-color:var(--accent);}
/* 날짜 row: 라벨/여백 클릭도 달력 오픈 */
.detail-row:has(.d-input-date){cursor:pointer;}
.detail-row:has(.d-input-date):hover .d-input-date{background:var(--bg);}
.detail-label{
  display:flex;align-items:center;gap:8px;
  width:172px;flex-shrink:0;padding-top:8px;
  font-size:14.5px;font-weight:500;color:var(--text2);user-select:none;
}
.detail-label-icon{font-size:15px;width:20px;display:inline-flex;align-items:center;justify-content:center;color:var(--text3);}
.detail-value{flex:1;display:flex;align-items:center;min-height:36px;position:relative;}
.detail-value .d-input,
.detail-value .d-select,
.detail-value .d-textarea{
  width:100%;border:1px solid transparent;background:transparent;
  font-family:inherit;font-size:14.5px;color:var(--text);
  padding:9px 12px;border-radius:var(--radius-xs);
  outline:none;transition:border-color .12s,background .12s;
}
.detail-value .d-input::placeholder,
.detail-value .d-textarea::placeholder{color:var(--text3);}
.detail-value .d-input:hover,
.detail-value .d-select:hover,
.detail-value .d-textarea:hover{background:var(--bg);}
.detail-value .d-input:focus,
.detail-value .d-select:focus,
.detail-value .d-textarea:focus{
  border-color:var(--accent);background:var(--white);
  box-shadow:0 0 0 3px rgba(255,107,53,.08);
}
.detail-value .d-textarea{resize:vertical;min-height:80px;line-height:1.6;}
.detail-value .d-select{appearance:none;cursor:pointer;padding-right:26px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%2371717a' stroke-width='2.5'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 8px center;
}
/* 검토현황 select가 '반려'일 때 배경/글자 강조 */
.detail-value .d-select.d-select-rejected{
  background-color:#fee2e2 !important;
  color:#991b1b !important;
  font-weight:700;
  border-color:#fca5a5;
}
.detail-value .d-select.d-select-rejected:hover{background-color:#fecaca !important;}
.detail-value .d-select.d-select-rejected:focus{
  border-color:#ef4444 !important;
  box-shadow:0 0 0 3px rgba(239,68,68,.1) !important;
}
.detail-badge{
  display:inline-flex;align-items:center;gap:6px;
  padding:3px 11px 3px 9px;border-radius:99px;
  font-size:12px;font-weight:600;line-height:1.4;
  background:color-mix(in srgb, currentColor 14%, #ffffff);
  margin-left:4px;pointer-events:none;position:absolute;right:44px;top:50%;transform:translateY(-50%);
}
.detail-badge::before{
  content:'';width:6px;height:6px;border-radius:50%;
  background:currentColor;flex-shrink:0;
}
.detail-value .d-input[type="date"]{cursor:pointer;}
.detail-value .d-input-date{
  caret-color:transparent;
  user-select:none;
}
.detail-value .d-input-date::selection{background:transparent;}
.detail-value .d-input[type="date"]::-webkit-calendar-picker-indicator{
  cursor:pointer;opacity:.6;transition:opacity .15s;
}
.detail-value .d-input[type="date"]:hover::-webkit-calendar-picker-indicator{opacity:1;}
.detail-banryo-highlight .d-textarea{
  border-color:#ef4444 !important;background:#fee2e2 !important;
}
.detail-banryo-highlight .d-textarea:focus{
  box-shadow:0 0 0 3px rgba(239,68,68,.1) !important;
}
.detail-foot{
  padding:16px 28px;border-top:1px solid var(--border);
  display:flex;align-items:center;justify-content:space-between;flex-shrink:0;
}
.detail-meta{font-size:12px;color:var(--text3);}
.detail-save-indicator{
  display:inline-flex;align-items:center;gap:5px;
  font-size:11px;color:var(--green);font-weight:600;
  opacity:0;transition:opacity .2s;
}
.detail-save-indicator.show{opacity:1;}

/* ── Notion 스타일 상태 Pill ── */
.prog-wrap{display:flex;align-items:center;padding:0 10px;height:100%;}
.prog-track{display:none;}
.prog-fill{display:none;}
.prog-label{
  display:inline-flex;align-items:center;gap:6px;
  padding:3px 11px 3px 9px;
  border-radius:99px;
  font-size:11px;font-weight:600;line-height:1.4;
  background:color-mix(in srgb, currentColor 14%, #ffffff);
}
.prog-label::before{
  content:'';display:inline-block;
  width:6px;height:6px;border-radius:50%;
  background:currentColor;flex-shrink:0;
}
.dday-chip{display:inline-flex;align-items:center;padding:2px 7px;border-radius:99px;font-size:10px;font-weight:700;}

/* 테이블 지역 셀 (클릭하면 팝오버) */
.handsontable .htCore td.region-cell-clickable{cursor:pointer !important;}
.handsontable .htCore td.region-cell-clickable:hover{background:var(--accent-light) !important;}
/* 테이블 날짜 셀 (클릭하면 네이티브 달력) */
.handsontable .htCore td.deadline-cell-clickable{cursor:pointer !important;}
.handsontable .htCore td.deadline-cell-clickable:hover{background:var(--accent-light) !important;}

/* ── 지역 선택 (2단계 팝오버) ── */
.region-trigger{
  width:100%;border:1px solid transparent;background:transparent;
  font-family:inherit;font-size:13px;color:var(--text);
  padding:7px 10px;border-radius:var(--radius-xs);
  text-align:left;cursor:pointer;display:flex;align-items:center;gap:6px;
  transition:border-color .12s,background .12s;
}
.region-trigger:hover{background:var(--bg);border-color:var(--border2);}
.region-trigger:hover .region-empty{color:var(--accent);}
.region-trigger:hover .region-chip{background:#dcfce7;box-shadow:0 0 0 1px #16a34a;}
.region-trigger.active{border-color:var(--accent);background:var(--white);box-shadow:0 0 0 3px rgba(255,107,53,.08);}
.region-trigger .region-empty{color:var(--text3);}
.region-trigger .region-chip{
  display:inline-flex;align-items:center;gap:5px;
  padding:3px 11px 3px 9px;border-radius:99px;
  background:#f0fdf4;color:#16a34a;
  font-size:11px;font-weight:600;
}
.region-trigger .region-chip::before{
  content:'';width:6px;height:6px;border-radius:50%;background:#16a34a;
}
#region-pop{
  position:fixed;z-index:1000000 !important;display:none;
  background:var(--white);
  border:1px solid var(--border);
  border-radius:14px;
  box-shadow:0 20px 60px rgba(0,0,0,0.14), 0 4px 16px rgba(0,0,0,0.06);
  width:520px;max-width:92vw;overflow:hidden;
  animation:regionSlide .14s ease-out;
}
@keyframes regionSlide{from{opacity:0;transform:translateY(-6px);}to{opacity:1;transform:translateY(0);}}
#region-pop.show{display:block;}
.region-head{
  padding:12px 16px;
  display:flex;align-items:center;justify-content:space-between;
  border-bottom:1px solid var(--border);
}
.region-title{font-size:13px;font-weight:700;color:var(--text);}
.region-clear{
  background:none;border:none;cursor:pointer;
  color:var(--text3);font-size:11px;font-family:inherit;font-weight:500;
  padding:4px 8px;border-radius:6px;transition:all .12s;
}
.region-clear:hover{color:var(--red);background:#fff1f2;}
.region-body{display:flex;height:340px;}
.region-col{
  flex:1;display:flex;flex-direction:column;
  border-right:1px solid var(--border);min-width:0;
}
.region-col:last-child{border-right:none;background:#fafafa;}
.region-search{
  padding:8px 10px;border-bottom:1px solid var(--border);flex-shrink:0;
}
.region-search input{
  width:100%;padding:6px 10px;
  border:1px solid var(--border2);border-radius:7px;
  font-size:12px;font-family:inherit;color:var(--text);
  background:var(--white);outline:none;
  transition:border-color .12s;
}
.region-search input:focus{border-color:var(--accent);}
.region-list{flex:1;overflow-y:auto;padding:4px;}
.region-item{
  display:flex;align-items:center;justify-content:space-between;
  padding:8px 10px;border-radius:6px;
  font-size:12px;color:var(--text);cursor:pointer;
  transition:background .1s;user-select:none;
}
.region-item:hover{background:var(--accent-light);color:var(--accent);}
.region-item.active{background:var(--accent-light);color:var(--accent);font-weight:700;}
.region-item .region-count{font-size:10px;color:var(--text3);font-weight:500;}
.region-item.active .region-count{color:var(--accent);}
.region-item.sigungu.selected{background:#f0fdf4;color:#16a34a;font-weight:700;}
.region-item.sigungu.selected::after{content:'✓';color:#16a34a;font-weight:700;margin-left:8px;}
.region-empty-msg{
  padding:20px;text-align:center;
  font-size:12px;color:var(--text3);font-style:italic;
}

/* 컬럼 필터 패널 */
#cfp{position:fixed;z-index:99990;background:var(--white);border:1.5px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--card-shadow-lg);width:220px;display:none;}
#cfp.show{display:block;}
.cfp-header{padding:12px 14px 10px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;}
.cfp-title{font-size:13px;font-weight:700;}
.cfp-close{background:none;border:none;cursor:pointer;color:var(--text3);font-size:14px;padding:0;}
.cfp-search{padding:8px 10px 4px;}
.cfp-search input{width:100%;padding:6px 10px;border:1.5px solid var(--border2);border-radius:var(--radius-xs);font-size:12px;font-family:inherit;outline:none;}
.cfp-search input:focus{border-color:var(--accent);}
.cfp-list{max-height:200px;overflow-y:auto;padding:4px 6px 6px;}
.cfp-item{display:flex;align-items:center;gap:7px;padding:7px 9px;border-radius:var(--radius-xs);cursor:pointer;font-size:12px;color:var(--text);transition:background .1s;}
.cfp-item:hover{background:var(--accent-light);}
.cfp-item.active{background:var(--accent-light);color:var(--accent);font-weight:600;}
.cfp-foot{padding:8px 10px;border-top:1px solid var(--border);display:flex;gap:6px;}
.cfp-foot button{flex:1;padding:7px;border-radius:var(--radius-xs);font-size:12px;font-family:inherit;font-weight:600;cursor:pointer;border:none;}
.cfp-foot .cfp-clear{background:var(--bg);color:var(--text2);}
.cfp-foot .cfp-apply{background:var(--accent);color:#fff;}

/* 컬럼 설정 모달 */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.35);z-index:99990;display:none;align-items:center;justify-content:center;backdrop-filter:blur(2px);}
.modal-overlay.show{display:flex;}
/* 상세 모달은 더 강한 백드롭 */
#detail-modal{background:rgba(0,0,0,0.5);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);}
.modal{background:var(--white);border-radius:18px;box-shadow:0 24px 80px rgba(0,0,0,0.18);width:420px;overflow:hidden;}
.modal-header{padding:20px 22px 16px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border);}
.modal-title{font-size:15px;font-weight:700;}
.modal-close{background:none;border:none;cursor:pointer;color:var(--text3);font-size:18px;padding:3px 7px;border-radius:7px;line-height:1;}
.modal-close:hover{background:var(--bg);}
.modal-body{padding:18px 22px;max-height:60vh;overflow-y:auto;}
.modal-desc{font-size:12px;color:var(--text2);margin-bottom:14px;}
.col-check-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px;}
.col-check-actions{
  display:flex;gap:8px;margin-bottom:12px;
  padding-bottom:12px;border-bottom:1px solid var(--border);
}
.col-quick-btn{
  padding:6px 12px;border-radius:7px;
  border:1.5px solid var(--border2);background:#fff;
  font-family:inherit;font-size:11.5px;font-weight:600;color:var(--text2);
  cursor:pointer;transition:all .12s;
}
.col-quick-btn:hover{border-color:var(--accent);color:var(--accent);background:#fff7ed;}
.col-check-item{display:flex;align-items:center;gap:8px;padding:9px 11px;border-radius:var(--radius-xs);border:1.5px solid var(--border);cursor:pointer;transition:all .15s;user-select:none;}
.col-check-item:hover{border-color:var(--accent);background:var(--accent-light);}
.col-check-item.checked{border-color:var(--accent);background:var(--accent-light);}
.col-check-item input[type=checkbox]{width:14px;height:14px;accent-color:var(--accent);cursor:pointer;flex-shrink:0;}
.col-check-label{font-size:12px;font-weight:600;color:var(--text);cursor:pointer;}
.col-check-item.id-col{opacity:.4;pointer-events:none;}
.modal-footer{padding:15px 22px;border-top:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;}
.btn-reset-col{background:none;border:none;cursor:pointer;font-size:12px;color:var(--text3);font-family:inherit;padding:0;}
.btn-reset-col:hover{color:var(--red);}

/* 컨텍스트 메뉴 */
#ctx-menu{position:fixed;z-index:99999;background:var(--white);border:1.5px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--card-shadow-lg);padding:6px;min-width:190px;display:none;}
#ctx-menu.show{display:block;}
.ctx-item{display:flex;align-items:center;gap:9px;padding:9px 11px;border-radius:var(--radius-xs);font-size:13px;font-weight:500;color:var(--text);cursor:pointer;transition:background .1s;user-select:none;}
.ctx-item:hover{background:var(--accent-light);color:var(--accent);}
.ctx-item.danger{color:#dc2626;}
.ctx-item.danger:hover{background:#fff1f2;}
.ctx-icon{font-size:14px;width:18px;text-align:center;}
.ctx-sep{height:1px;background:var(--border);margin:4px 2px;}

.loading-overlay{position:fixed;inset:0;background:rgba(247,248,252,.95);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;z-index:9998;transition:opacity .3s;}
.loading-overlay.hidden{opacity:0;pointer-events:none;}
.spinner{width:32px;height:32px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite;}
.loading-text{font-size:13px;color:var(--text2);font-weight:500;}
@keyframes spin{to{transform:rotate(360deg);}}
.toast{position:fixed;bottom:20px;right:24px;background:var(--white);border:1.5px solid var(--border);box-shadow:var(--card-shadow-lg);color:var(--text);padding:11px 16px;border-radius:var(--radius-sm);font-size:13px;font-weight:600;transform:translateY(50px);opacity:0;transition:all .25s;z-index:99998;}
.toast.show{transform:translateY(0);opacity:1;}
.toast.success{border-left:4px solid var(--green);}
.toast.error{border-left:4px solid var(--red);}

/* ── 커스텀 다이얼로그 ── */
.dialog-overlay{
  position:fixed;inset:0;
  background:rgba(15,15,20,0.45);
  backdrop-filter:blur(4px);
  -webkit-backdrop-filter:blur(4px);
  z-index:999999;
  display:none;align-items:center;justify-content:center;
  animation:fadeIn .15s ease;
}
.dialog-overlay.show{display:flex;}
@keyframes fadeIn{from{opacity:0;}to{opacity:1;}}
.dialog-box{
  background:var(--white);
  border-radius:18px;
  box-shadow:0 24px 80px rgba(0,0,0,0.18),0 0 0 1px rgba(0,0,0,0.04);
  padding:28px 28px 22px;
  width:360px;
  animation:slideUp .18s cubic-bezier(.34,1.56,.64,1);
}
@keyframes slideUp{from{opacity:0;transform:translateY(12px) scale(.97);}to{opacity:1;transform:translateY(0) scale(1);}}
.dialog-icon{
  width:44px;height:44px;border-radius:12px;
  background:var(--accent-light);
  display:flex;align-items:center;justify-content:center;
  font-size:20px;margin-bottom:16px;
}
.dialog-icon.danger{background:#fff1f2;}
.dialog-title{font-size:16px;font-weight:700;color:var(--text);margin-bottom:6px;letter-spacing:-0.3px;}
.dialog-msg{font-size:13px;color:var(--text2);line-height:1.6;margin-bottom:22px;}
.dialog-btns{display:flex;gap:8px;justify-content:flex-end;}
.dialog-btn{
  padding:9px 20px;border-radius:10px;
  font-size:13px;font-family:inherit;font-weight:600;
  cursor:pointer;border:none;transition:all .15s;
}
.dialog-btn-cancel{background:var(--bg);color:var(--text2);border:1.5px solid var(--border2);}
.dialog-btn-cancel:hover{border-color:var(--border);background:#efefef;}
.dialog-btn-confirm{background:var(--accent);color:#fff;box-shadow:0 2px 8px rgba(255,107,53,.3);}
.dialog-btn-confirm:hover{background:var(--accent-hover);box-shadow:0 4px 14px rgba(255,107,53,.4);}
.dialog-btn-confirm.danger{background:#dc2626;box-shadow:0 2px 8px rgba(220,38,38,.25);}
.dialog-btn-confirm.danger:hover{background:#b91c1c;}

/* ── 페이지네이션 ── */
.pagination-bar{
  background:var(--white);
  border-top:1px solid var(--border);
  padding:10px 28px;
  display:flex;align-items:center;justify-content:center;
  flex-shrink:0;height:48px;position:relative;
}
.pagination-info{font-size:12px;color:var(--text2);font-weight:500;position:absolute;left:28px;top:50%;transform:translateY(-50%);}
.pagination-controls{display:flex;align-items:center;gap:4px;}
.pg-btn{
  min-width:32px;height:32px;padding:0 10px;
  border:1.5px solid var(--border2);background:var(--white);color:var(--text2);
  border-radius:var(--radius-xs);font-size:12px;font-family:inherit;font-weight:600;
  cursor:pointer;transition:all .15s;display:inline-flex;align-items:center;justify-content:center;
}
.pg-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent);background:var(--accent-light);}
.pg-btn.active{background:var(--accent);color:#fff;border-color:var(--accent);box-shadow:0 2px 6px rgba(255,107,53,.25);}
.pg-btn:disabled{opacity:.35;cursor:not-allowed;}
.pg-ellipsis{padding:0 6px;color:var(--text3);font-size:12px;user-select:none;}

/* ── Handsontable 드롭다운 에디터 (셀 클릭 시 뜨는 목록) ── */
.handsontable.listbox{
  padding:5px !important;
  border-radius:12px !important;
  box-shadow:0 8px 32px rgba(0,0,0,0.12) !important;
  border:1px solid var(--border) !important;
  background:var(--white) !important;
  height:auto !important;
  max-height:none !important;
  overflow:visible !important;
}
.handsontable.listbox .wtHolder,
.handsontable.listbox .wtHider,
.handsontable.listbox .wtSpreader{
  height:auto !important;
  max-height:none !important;
  overflow:visible !important;
}
.handsontable.listbox .htCore,
.handsontable.listbox .htCore tbody,
.handsontable.listbox .htCore tr{border:none !important;}
.handsontable.listbox .htCore td{
  padding:6px 12px !important;
  border:none !important;
  font-size:12px !important;
  font-weight:500 !important;
  color:var(--text) !important;
  border-radius:7px !important;
  cursor:pointer !important;
  background:var(--white) !important;
  transition:all .12s ease !important;
  height:28px !important;
  line-height:16px !important;
  white-space:nowrap !important;
}
.handsontable.listbox .htCore td::before{
  content:'';
  display:inline-block;
  width:6px;height:6px;
  border-radius:50%;
  background:var(--text3);
  margin-right:8px;
  vertical-align:middle;
  transition:background .12s ease;
}
.handsontable.listbox .htCore td:hover,
.handsontable.listbox .htCore tr:hover td{
  background:var(--accent-light) !important;
  color:var(--accent) !important;
}
.handsontable.listbox .htCore td.current,
.handsontable.listbox .htCore td.area,
.handsontable.listbox .htCore td.highlight{
  background:var(--accent-light) !important;
  color:var(--accent) !important;
  font-weight:600 !important;
}
.handsontable.listbox .htCore td.current::before,
.handsontable.listbox .htCore td:hover::before,
.handsontable.listbox .htCore tr:hover td::before{
  background:var(--accent);
}
/* 값별 컬러 매칭 (JS에서 .opt-colored 클래스 부착) */
.handsontable.listbox .htCore td.opt-colored{
  color:var(--opt-color) !important;
}
.handsontable.listbox .htCore td.opt-colored::before{
  background:var(--opt-color) !important;
}
.handsontable.listbox .htCore td.opt-colored:hover,
.handsontable.listbox .htCore td.opt-colored.current,
.handsontable.listbox .htCore td.opt-colored.highlight{
  background:color-mix(in srgb, var(--opt-color) 14%, #ffffff) !important;
  color:var(--opt-color) !important;
}

::-webkit-scrollbar{width:5px;height:5px;}
::-webkit-scrollbar-track{background:transparent;}
::-webkit-scrollbar-thumb{background:var(--border2);border-radius:3px;}

/* ════════════════════════════════════════════════════════ */
/* 사이드 피크 패널 (컨택 액션 허브) — PC 데스크탑 전용       */
/* position:fixed로 테이블 레이아웃에 영향 없음               */
/* ════════════════════════════════════════════════════════ */

/* 오버레이 (외부 클릭 감지) */
.sidepeek-overlay{
  position:fixed;
  top:0;left:0;right:0;bottom:0;
  z-index:900;
  background:transparent;
  pointer-events:none;
  transition:background .3s ease;
}
.sidepeek-overlay.open{
  pointer-events:auto;
  background:rgba(17,24,39,.08);
}

/* 사이드 피크 패널 본체 */
.sidepeek{
  position:fixed;
  top:0;right:0;
  width:450px;
  height:100vh;
  z-index:910;
  background:#fff;
  box-shadow:-8px 0 32px rgba(17,24,39,.08);
  transform:translateX(100%);
  transition:transform .3s cubic-bezier(.4,0,.2,1);
  display:flex;
  flex-direction:column;
  font-family:var(--font);
}
.sidepeek.open{
  transform:translateX(0);
}

/* 헤더 */
.sidepeek-header{
  flex:0 0 auto;
  display:flex;
  align-items:center;
  gap:12px;
  padding:18px 20px 16px;
  border-bottom:1px solid #eee;
}
.sidepeek-close{
  width:32px;height:32px;
  border:none;
  background:transparent;
  font-size:24px;
  color:#6b7280;
  cursor:pointer;
  border-radius:8px;
  transition:background .15s, color .15s;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:0;
  line-height:1;
}
.sidepeek-close:hover{
  background:#f3f4f6;
  color:#111;
}
.sidepeek-title{
  font-size:15px;
  font-weight:600;
  color:#111;
  margin:0;
  flex:1;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}

/* 바디 스크롤 영역 */
.sidepeek-body{
  flex:1;
  overflow-y:auto;
  padding:4px 0;
}

/* 뷰 전환 애니메이션 */
.sidepeek-view{
  animation:sidepeek-fade-in .22s cubic-bezier(.4,0,.2,1);
}
@keyframes sidepeek-fade-in{
  from{ opacity:0; transform:translateX(16px); }
  to  { opacity:1; transform:translateX(0); }
}

/* 그룹 */
.sidepeek-group{
  padding:8px 0 10px;
  border-bottom:1px solid #eee;
}
.sidepeek-group:last-child{
  border-bottom:none;
}
.sidepeek-group-label{
  font-size:11px;
  font-weight:700;
  color:#9ca3af;
  letter-spacing:.6px;
  padding:12px 20px 6px;
  text-transform:uppercase;
}

/* 항목 버튼 */
.sidepeek-item{
  width:100%;
  display:flex;
  align-items:center;
  gap:12px;
  padding:11px 20px;
  border:none;
  background:transparent;
  cursor:pointer;
  font-size:14px;
  font-family:inherit;
  color:#111;
  text-align:left;
  transition:background .15s ease;
}
.sidepeek-item:hover{
  background:#fff5f0;  /* 연한 주황 */
}
.sidepeek-item:active{
  background:#ffe4d6;
}
.sidepeek-item-danger{
  color:#dc2626;
}
.sidepeek-item-danger:hover{
  background:#fef2f2;
}

.sidepeek-icon{
  font-size:16px;
  width:22px;
  text-align:center;
  flex-shrink:0;
}
.sidepeek-label{
  flex:1;
  font-weight:500;
}
.sidepeek-chevron{
  color:#9ca3af;
  font-size:18px;
  font-weight:400;
}

/* 서브 뷰 */
.sidepeek-back{
  width:100%;
  padding:14px 20px;
  border:none;
  background:transparent;
  cursor:pointer;
  font-size:13px;
  font-family:inherit;
  color:#6b7280;
  text-align:left;
  font-weight:500;
  transition:color .15s;
  border-bottom:1px solid #eee;
}
.sidepeek-back:hover{
  color:#FF5722;
}
.sidepeek-sub-title{
  font-size:13px;
  font-weight:700;
  color:#111;
  padding:16px 20px 8px;
}

/* 상태 변경 옵션 리스트 */
.sidepeek-status-list{
  display:flex;
  flex-direction:column;
}
.sidepeek-status-option{
  display:flex;
  align-items:center;
  gap:10px;
  padding:12px 20px;
  cursor:pointer;
  border:none;
  background:transparent;
  font-family:inherit;
  font-size:14px;
  color:#111;
  text-align:left;
  transition:background .15s;
}
.sidepeek-status-option:hover{
  background:#fff5f0;
}
.sidepeek-status-option.current{
  background:#fff7ed;
  font-weight:600;
}
.sidepeek-status-option.current::after{
  content:'✓';
  color:#FF5722;
  font-weight:700;
  margin-left:auto;
}
.sidepeek-status-dot{
  width:8px;height:8px;
  border-radius:50%;
  background:#ccc;
  flex-shrink:0;
}

/* 컨택 버튼 (테이블 셀용) */
.contact-btn{
  display:inline-flex;
  align-items:center;
  gap:5px;
  padding:4px 10px;
  font-size:12px;
  font-weight:500;
  background:#fff;
  border:1px solid #e5e7eb;
  border-radius:99px;
  cursor:pointer;
  color:#374151;
  transition:all .15s;
  font-family:inherit;
}
.contact-btn:hover{
  background:#fff5f0;
  border-color:#FF5722;
  color:#FF5722;
}

/* ════════════════════════════════════════════════════════ */
/* 홈 화면 (Today Home) — 로고 클릭 진입                     */
/* ════════════════════════════════════════════════════════ */
/* ════════════════════════════════════════════════
   홈 v2
   ════════════════════════════════════════════════ */
.home-view{padding:24px 32px 40px;max-width:1200px;margin:0 auto;width:100%;box-sizing:border-box;}

.home-hero-v2{display:flex;align-items:center;justify-content:space-between;padding:28px 32px;background:linear-gradient(135deg,#FF6B35 0%,#FF8A5C 50%,#FFB088 100%);border-radius:18px;margin-bottom:24px;color:#fff;box-shadow:0 4px 20px rgba(255,107,53,.2);}
.home-hero-left{display:flex;align-items:center;gap:16px;}
.home-hero-hi{font-size:36px;line-height:1;}
.home-hero-name{font-size:22px;font-weight:700;letter-spacing:-.3px;margin-bottom:4px;}
.home-hero-sub2{font-size:14px;opacity:.92;font-weight:400;}
.home-hero-sub2 b{font-weight:700;}
.home-hero-right{text-align:right;}
.home-hero-day{font-size:14px;font-weight:700;opacity:.95;}
.home-hero-full{font-size:13px;opacity:.8;}

.home-grid-v2{display:grid;grid-template-columns:1fr 320px;gap:20px;align-items:start;}
@media(max-width:900px){.home-grid-v2{grid-template-columns:1fr;}}
.home-main-col{display:flex;flex-direction:column;gap:16px;}
.home-side-col{display:flex;flex-direction:column;gap:16px;}

.home-panel{background:var(--white);border:1px solid var(--border);border-radius:14px;padding:20px 22px;overflow:hidden;}
.home-panel-head{font-size:14px;font-weight:700;color:var(--text);margin-bottom:14px;display:flex;align-items:center;gap:8px;}
.home-panel-urgent{border-color:#fecaca;background:#fffbfb;}

.home-badge{background:#FFF7ED;color:#FF6B35;font-size:11px;font-weight:700;padding:2px 10px;border-radius:99px;}
.home-badge-ok{background:#f0fdf4;color:#22c55e;}

.home-task-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;}
.home-task-card{display:flex;align-items:center;gap:10px;padding:14px;border:1px solid var(--border);border-radius:12px;cursor:pointer;transition:all .15s;}
.home-task-card:hover{border-color:#FF6B35;background:#FFFBF7;transform:translateY(-1px);box-shadow:0 4px 12px rgba(0,0,0,.04);}
.home-task-card.active{border-color:#FF6B35;background:#FFF7ED;}
.home-task-card.danger{border-color:#fecaca;background:#fef2f2;}
.home-task-card.warn{border-color:#fde68a;background:#fffbeb;}
.home-task-card.ok{border-color:#bbf7d0;background:#f0fdf4;}
.home-task-icon{width:38px;height:38px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0;}
.home-task-info{flex:1;}
.home-task-label{font-size:12px;color:var(--text3);font-weight:500;margin-bottom:2px;}
.home-task-num{font-size:22px;font-weight:800;color:var(--text);letter-spacing:-.5px;line-height:1;}

.home-urgent-list-v2{display:flex;flex-direction:column;gap:4px;}
.home-urgent-row{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;cursor:pointer;transition:background .1s;}
.home-urgent-row:hover{background:#fff0eb;}
.home-urgent-indicator{width:4px;align-self:stretch;border-radius:2px;flex-shrink:0;}
.home-urgent-content{flex:1;min-width:0;}
.home-urgent-name{font-size:13px;font-weight:600;color:var(--text);display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.home-urgent-ch{font-size:11px;color:var(--text3);}
.home-urgent-tag{font-size:10px;font-weight:700;padding:3px 10px;border-radius:99px;background:#fffbeb;color:#d97706;white-space:nowrap;flex-shrink:0;}
.home-urgent-tag.today{background:#fef2f2;color:#dc2626;}

.home-week-grid{display:flex;align-items:center;gap:20px;}
.home-week-stats{flex:1;display:flex;flex-direction:column;gap:10px;}
.home-week-row{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text);}
.home-week-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;}
.home-week-label{flex:1;font-weight:500;color:var(--text2);}
.home-week-val{font-weight:700;color:var(--text);}
.home-week-ring{flex-shrink:0;}

.home-cal-list{display:flex;flex-direction:column;gap:2px;}
.home-cal-item{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:8px;cursor:pointer;transition:background .1s;font-size:13px;}
.home-cal-item:hover{background:var(--bg);}
.home-cal-date{font-size:12px;font-weight:700;color:var(--text3);min-width:36px;}
.home-cal-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0;}
.home-cal-title{flex:1;font-weight:500;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.home-cal-time{font-size:11px;color:var(--accent);font-weight:600;flex-shrink:0;}
.home-cal-empty{padding:16px;text-align:center;color:var(--text3);font-size:12px;}
.home-cal-link{font-size:11px;font-weight:500;color:var(--accent);cursor:pointer;margin-left:auto;}
.home-cal-link:hover{text-decoration:underline;}

.home-quick-v2{display:flex;flex-direction:column;gap:6px;}
.home-qbtn{width:100%;padding:10px 14px;font-size:13px;font-weight:600;border-radius:10px;cursor:pointer;border:1px solid var(--border);background:var(--white);color:var(--text);font-family:inherit;text-align:left;transition:all .12s;}
.home-qbtn:hover{background:var(--bg);border-color:var(--text3);}
.home-qbtn.primary{background:#FF6B35;color:#fff;border-color:#FF6B35;}
.home-qbtn.primary:hover{background:#e55a2b;}

/* ════════════════════════════════════════════════
   캘린더 (calendar.js)
   ════════════════════════════════════════════════ */
.calendar-view{padding:0 20px 20px;}
.cal-layout{display:flex;gap:20px;max-width:1400px;margin:0 auto;}
.cal-main{flex:1;min-width:0;}
.cal-sidebar{width:320px;flex-shrink:0;border:1px solid var(--border);border-radius:14px;background:var(--white);align-self:flex-start;overflow:hidden;}
.cal-header{padding:20px 0 14px;display:flex;flex-direction:column;gap:12px;}
.cal-header-top{display:flex;align-items:center;justify-content:space-between;}
.cal-header-bottom{display:flex;align-items:center;justify-content:space-between;gap:12px;}
.cal-nav{display:flex;align-items:center;gap:8px;}
.cal-title{font-size:20px;font-weight:700;color:var(--text);margin:0;min-width:140px;text-align:center;letter-spacing:-.3px;}
.cal-nav-btn{width:36px;height:36px;border:1px solid var(--border);border-radius:10px;background:var(--white);color:var(--text);font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-family:inherit;transition:all .12s;}
.cal-nav-btn:hover{background:var(--bg);border-color:var(--text3);}
.cal-today-btn{padding:6px 14px;border:1px solid var(--border);border-radius:8px;background:var(--white);color:var(--text2);font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;margin-left:4px;}
.cal-today-btn:hover{background:var(--bg);}
.cal-add-btn{padding:9px 20px;background:#FF6B35;color:#fff;border:none;border-radius:10px;font-size:13px;font-weight:600;cursor:pointer;font-family:inherit;transition:background .12s;white-space:nowrap;flex-shrink:0;}
.cal-add-btn:hover{background:#e55a2b;}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);border:1px solid var(--border);border-radius:12px;overflow:hidden;background:var(--white);}
.cal-dow{padding:10px 0;text-align:center;font-size:12px;font-weight:600;color:var(--text3);background:var(--bg);border-bottom:1px solid var(--border);}
.cal-dow.sun{color:#ef4444;}
.cal-dow.sat{color:#3b82f6;}
.cal-cell{min-height:130px;padding:8px 10px;border-right:0.5px solid var(--border);border-bottom:0.5px solid var(--border);cursor:pointer;transition:background .08s;position:relative;overflow:hidden;}
.cal-cell:hover{background:#fffaf7;}
.cal-cell.selected{background:#FFF7ED;box-shadow:inset 0 0 0 2px #FF6B35;}
.cal-cell.today{background:#fffcf9;}
.cal-cell.other-month{background:var(--bg);opacity:.35;pointer-events:none;}
.cal-date{font-size:13px;font-weight:500;color:var(--text);display:inline-block;width:26px;height:26px;line-height:26px;text-align:center;border-radius:50%;}
.cal-cell.sun .cal-date{color:#ef4444;}
.cal-cell.sat .cal-date{color:#3b82f6;}
.cal-date.today-badge{background:#FF6B35;color:#fff;font-weight:700;}
.cal-ev-list{display:flex;flex-direction:column;gap:2px;margin-top:3px;}
.cal-ev-pill{font-size:10px;font-weight:600;padding:2px 5px;border-radius:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;line-height:1.4;}
.cal-ev-pill:hover{filter:brightness(.9);}
.cal-ev-more{font-size:9px;color:var(--text3);font-weight:500;padding:1px 5px;}
/* 사이드바 */
.cal-side-header{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-bottom:1px solid var(--border);background:var(--bg);}
.cal-side-date{font-size:16px;font-weight:700;color:var(--text);}
.cal-side-dow{font-size:13px;font-weight:500;color:var(--text3);margin-left:6px;}
.cal-side-add{width:30px;height:30px;border-radius:8px;border:1px solid var(--border);background:var(--white);color:var(--accent);font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;}
.cal-side-add:hover{background:var(--accent);color:#fff;}
.cal-side-list{max-height:500px;overflow-y:auto;}
.cal-side-empty{padding:40px 20px;text-align:center;color:var(--text3);font-size:13px;}
.cal-side-add-btn{margin-top:12px;padding:7px 16px;border:1px solid var(--border);border-radius:8px;background:var(--white);color:var(--text2);font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;}
.cal-side-add-btn:hover{background:var(--bg);}
.cal-side-item{display:flex;align-items:flex-start;gap:12px;padding:14px 18px;border-bottom:0.5px solid var(--border);cursor:pointer;transition:background .08s;}
.cal-side-item:last-child{border-bottom:none;}
.cal-side-item:hover{background:#fffaf7;}
.cal-side-color{width:4px;border-radius:2px;align-self:stretch;flex-shrink:0;min-height:32px;}
.cal-side-info{flex:1;min-width:0;}
.cal-side-title{font-size:14px;font-weight:600;color:var(--text);}
.cal-side-meta{font-size:11px;color:var(--accent);font-weight:500;margin-top:2px;}
.cal-side-memo{font-size:12px;color:var(--text3);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.cal-side-range{font-size:10px;color:var(--text3);font-weight:500;white-space:nowrap;flex-shrink:0;padding-top:2px;}
/* 모달 */
.cal-modal{background:#fff;border-radius:16px;width:460px;max-width:92vw;box-shadow:0 24px 60px rgba(0,0,0,.15);animation:slideUp .2s ease;}
.cal-modal-head{padding:22px 26px 14px;border-bottom:1px solid #f3f4f6;display:flex;justify-content:space-between;align-items:center;}
.cal-modal-head h3{font-size:16px;font-weight:700;color:#18181b;margin:0;}
.cal-modal-close{background:none;border:none;cursor:pointer;font-size:18px;color:#a1a1aa;padding:4px;}
.cal-modal-body{padding:18px 26px;display:flex;flex-direction:column;gap:14px;}
.cal-modal-foot{padding:14px 26px;border-top:1px solid #f3f4f6;display:flex;justify-content:flex-end;gap:8px;}
.cal-input{width:100%;padding:10px 14px;border:1.5px solid #e5e7eb;border-radius:10px;font-size:13px;font-family:inherit;color:#18181b;outline:none;transition:border-color .15s;background:#fafafa;}
.cal-input:focus{border-color:#FF6B35;background:#fff;}
.cal-input-title{font-size:15px;font-weight:600;padding:12px 14px;}
.cal-label{font-size:11px;font-weight:600;color:#9ca3af;display:block;margin-bottom:5px;letter-spacing:.2px;}
.cal-form-row{display:flex;gap:12px;}
.cal-form-col{flex:1;}
.cal-color-row{display:flex;gap:8px;flex-wrap:wrap;}
.cal-color-dot{width:28px;height:28px;border-radius:50%;cursor:pointer;border:2.5px solid transparent;transition:all .12s;display:inline-flex;align-items:center;justify-content:center;}
.cal-color-dot:hover{transform:scale(1.15);}
.cal-color-dot.active{border-color:#18181b;box-shadow:0 0 0 2px #fff,0 0 0 4px currentColor;}
/* 캘린더 필터 버튼 */
.cal-filters{display:flex;gap:4px;flex-wrap:wrap;}
.cal-filter-btn{padding:6px 12px;border:1.5px solid var(--border);border-radius:8px;background:var(--white);font-size:12px;font-weight:600;color:var(--text3);cursor:pointer;font-family:inherit;transition:all .12s;white-space:nowrap;}
.cal-filter-btn:hover{background:var(--bg);color:var(--text);}
.cal-filter-btn.active{background:#18181b;color:#fff;border-color:#18181b;}
.cal-filter-btn.shoot.active{background:#FF6B35;border-color:#FF6B35;}
.cal-filter-btn.upload.active{background:#3b82f6;border-color:#3b82f6;}
.cal-filter-cnt{font-size:10px;opacity:.7;margin-left:2px;}
/* 유형 선택 */
.cal-type-row{display:flex;gap:8px;}
.cal-type-btn{flex:1;display:flex;align-items:center;gap:8px;padding:12px 14px;border:1.5px solid #e5e7eb;border-radius:10px;cursor:pointer;transition:all .12s;font-size:13px;font-weight:600;color:#71717a;}
.cal-type-btn:hover{border-color:#d4d4d8;}
.cal-type-btn.active{border-color:#FF6B35;background:#FFFBF7;color:#18181b;box-shadow:0 0 0 1px #FF6B35;}
.cal-type-icon{width:32px;height:32px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0;}
/* 연동 카드 */
.cal-linked-card{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1.5px dashed #d4d4d8;border-radius:10px;cursor:pointer;transition:all .12s;margin-top:4px;}
.cal-linked-card:hover{border-color:#a1a1aa;background:#fafafa;}
.cal-linked-icon{width:36px;height:36px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0;}
.cal-linked-info{flex:1;min-width:0;}
/* 사이드바 타입 표시 */
.cal-side-type{font-size:11px;font-weight:700;margin-bottom:2px;}
.cal-side-linked{font-size:11px;margin-top:3px;cursor:pointer;}
.cal-side-linked:hover{text-decoration:underline;}
/* 드래그 & 드롭 */
.cal-cell.drop-ready{outline:1px dashed #d4d4d8;outline-offset:-2px;}
.cal-cell.drop-hover{background:#FFF7ED !important;outline:2px solid #FF6B35;outline-offset:-2px;}
.cal-ev-pill[draggable="true"]{cursor:grab;}
.cal-ev-pill[draggable="true"]:active{cursor:grabbing;}
/* 캘린더 호버 프리뷰 */
.cal-preview{
  position:fixed;z-index:99998;width:260px;
  background:var(--white);border:0.5px solid rgba(0,0,0,.08);
  border-radius:12px;
  box-shadow:0 12px 36px rgba(0,0,0,.14),0 2px 6px rgba(0,0,0,.06);
  pointer-events:none;
  opacity:0;transform:translateY(-4px);
  transition:opacity .12s ease,transform .12s ease;
  overflow:hidden;
}
.cal-pv-header{padding:12px 14px 8px;margin-left:0;}
.cal-pv-type{font-size:11px;font-weight:700;display:block;margin-bottom:2px;}
.cal-pv-title{font-size:14px;font-weight:700;color:var(--text);display:block;line-height:1.3;}
.cal-pv-body{padding:4px 14px 12px;}
.cal-pv-row{font-size:12px;color:var(--text2);padding:3px 0;display:flex;align-items:center;gap:6px;}
.cal-pv-icon{font-style:normal;font-size:12px;flex-shrink:0;}
.cal-pv-memo{font-size:11px;color:var(--text3);padding:6px 0 2px;border-top:0.5px solid var(--border);margin-top:4px;line-height:1.5;}
.cal-pv-linked{font-size:11px;color:var(--text2);padding:6px 0 0;border-top:0.5px solid var(--border);margin-top:4px;display:flex;align-items:center;gap:4px;}
.cal-pv-linked-icon{flex-shrink:0;}
/* 캘린더 오늘 배너 */
.cal-banner{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 20px;margin-bottom:12px;background:var(--white);border:1px solid var(--border);border-radius:14px;flex-wrap:wrap;}
.cal-banner.empty{justify-content:center;color:var(--text3);font-size:13px;padding:12px 20px;}
.cal-banner-icon{margin-right:6px;}
.cal-banner-left{display:flex;align-items:center;gap:14px;flex:1;min-width:0;flex-wrap:wrap;}
.cal-banner-today{display:flex;align-items:center;gap:8px;flex-shrink:0;}
.cal-banner-label{font-size:14px;font-weight:700;color:var(--text);padding:4px 10px;background:#FF6B35;color:#fff;border-radius:6px;white-space:nowrap;}
.cal-banner-summary{font-size:13px;color:var(--text2);font-weight:500;white-space:nowrap;}
.cal-banner-cards{display:flex;gap:8px;flex-wrap:wrap;}
.cal-banner-card{display:flex;align-items:center;gap:6px;padding:6px 10px;background:var(--bg);border-radius:8px;font-size:12px;cursor:pointer;transition:background .1s;white-space:nowrap;}
.cal-banner-card:hover{background:var(--border);}
.cal-banner-card-type{font-size:13px;flex-shrink:0;}
.cal-banner-card-title{font-weight:600;color:var(--text);max-width:120px;overflow:hidden;text-overflow:ellipsis;}
.cal-banner-card-time{color:var(--accent);font-weight:600;font-size:11px;}
.cal-banner-card-mgr{color:var(--text3);font-size:11px;}
.cal-banner-right{display:flex;align-items:center;gap:14px;flex-shrink:0;}
.cal-banner-dday{display:flex;align-items:center;gap:8px;}
.cal-banner-dday-badge{font-size:12px;font-weight:800;padding:4px 10px;border-radius:8px;white-space:nowrap;letter-spacing:-.3px;}
.cal-banner-dday-text{font-size:12px;color:var(--text2);font-weight:500;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cal-banner-upcoming{font-size:11px;color:var(--text3);font-weight:500;white-space:nowrap;}
/* 캐러셀 연동 */
.cal-filter-btn.carousel.active{background:#22c55e;border-color:#22c55e;}
.cal-ev-pill.virtual{opacity:.85;border-style:dashed;cursor:pointer;}
.cal-ev-pill.virtual:hover{opacity:1;}
.cal-side-item.virtual{background:var(--bg);}
.cal-side-item.virtual:hover{background:#f0fdf4;}
.cal-side-goto{font-size:11px;color:#22c55e;font-weight:600;margin-top:3px;}
/* 캘린더 검색 */
.cal-search-wrap{position:relative;flex-shrink:0;}
.cal-search-input{width:180px;padding:7px 12px 7px 32px;border:1.5px solid var(--border);border-radius:8px;font-size:12px;font-family:inherit;color:var(--text);outline:none;transition:border-color .15s,width .2s;
  background:var(--white) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' fill='none' stroke='%23a1a1aa' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='6' cy='6' r='4.5'/%3E%3Cline x1='9.5' y1='9.5' x2='13' y2='13'/%3E%3C/svg%3E") 10px center no-repeat;}
.cal-search-input:focus{border-color:#FF6B35;width:240px;}
.cal-search-input::placeholder{color:#c4c4c4;}
.cal-search-results{position:absolute;top:calc(100% + 4px);right:0;width:320px;max-height:360px;overflow-y:auto;background:var(--white);border:0.5px solid rgba(0,0,0,.08);border-radius:12px;box-shadow:0 12px 36px rgba(0,0,0,.14);display:none;z-index:999;}
.cal-search-results.show{display:block;}
.cal-sr-empty{padding:20px;text-align:center;color:var(--text3);font-size:13px;}
.cal-sr-item{display:flex;align-items:center;gap:10px;padding:10px 14px;cursor:pointer;transition:background .08s;border-bottom:0.5px solid var(--border);}
.cal-sr-item:last-child{border-bottom:none;}
.cal-sr-item:hover{background:#fffaf7;}
.cal-sr-type{font-size:15px;flex-shrink:0;}
.cal-sr-info{flex:1;min-width:0;}
.cal-sr-title{font-size:13px;font-weight:600;color:var(--text);display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.cal-sr-title mark{background:#FFE8D6;color:#FF6B35;border-radius:2px;padding:0 1px;}
.cal-sr-meta{font-size:11px;color:var(--text3);display:block;}
.cal-sr-date{font-size:11px;color:var(--accent);font-weight:600;flex-shrink:0;white-space:nowrap;}
.cal-sr-more{padding:8px 14px;text-align:center;font-size:11px;color:var(--text3);border-top:0.5px solid var(--border);}
@keyframes calFlash{0%,100%{box-shadow:none;}50%{box-shadow:0 0 0 3px #FF6B3560;}}
/* 캘린더 퀵 애드 */
.cal-quick-add{position:absolute;left:4px;right:4px;bottom:4px;background:var(--white);border:1.5px solid #FF6B35;border-radius:8px;padding:6px;z-index:10;box-shadow:0 4px 16px rgba(0,0,0,.12);animation:calQaIn .12s ease;}
@keyframes calQaIn{from{opacity:0;transform:translateY(4px);}to{opacity:1;transform:translateY(0);}}
.cal-qa-type{display:flex;gap:4px;margin-bottom:4px;}
.cal-qa-type-btn{width:28px;height:24px;border:1px solid var(--border);border-radius:6px;background:var(--white);cursor:pointer;font-size:12px;display:flex;align-items:center;justify-content:center;transition:all .1s;padding:0;}
.cal-qa-type-btn.active{border-color:#FF6B35;background:#FFF7ED;}
.cal-qa-type-btn:hover{background:var(--bg);}
.cal-qa-input{width:100%;padding:6px 8px;border:1px solid var(--border);border-radius:6px;font-size:12px;font-family:inherit;outline:none;color:var(--text);background:var(--bg);transition:border-color .12s;}
.cal-qa-input:focus{border-color:#FF6B35;background:var(--white);}
.cal-qa-hint{font-size:9px;color:var(--text3);margin-top:3px;text-align:center;}
/* 캘린더 첨부파일 */
.cal-file-item{display:flex;align-items:center;gap:8px;padding:6px 10px;background:var(--bg);border-radius:8px;margin-bottom:4px;font-size:12px;}
.cal-file-name{flex:1;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cal-file-del{background:none;border:none;color:#ef4444;cursor:pointer;font-size:14px;padding:0 4px;opacity:.6;transition:opacity .1s;}
.cal-file-del:hover{opacity:1;}
.cal-file-dropzone{margin-top:8px;border:2px dashed var(--border);border-radius:12px;padding:20px;text-align:center;transition:all .15s;cursor:pointer;}
.cal-file-dropzone:hover,.cal-file-dropzone.hover{border-color:#FF6B35;background:#FFF7ED;}
.cal-file-dropzone.uploading{border-color:#3b82f6;background:#eff6ff;pointer-events:none;}
.cal-file-dropzone-inner{font-size:13px;color:var(--text3);line-height:1.6;}
.cal-file-browse{color:#FF6B35;font-weight:600;cursor:pointer;text-decoration:underline;text-underline-offset:2px;}
.cal-file-browse:hover{color:#e55a2b;}
.cal-file-upload-btn{display:inline-flex;align-items:center;gap:4px;padding:8px 14px;margin-top:6px;border:1.5px dashed var(--border);border-radius:8px;font-size:12px;font-weight:600;color:var(--accent);cursor:pointer;transition:all .12s;font-family:inherit;}
.cal-file-upload-btn:hover{background:#FFF7ED;border-color:var(--accent);}
/* 커스텀 시간 선택기 */
.cal-tp{position:relative;}
.cal-tp-display{display:flex;align-items:center;justify-content:space-between;padding:9px 12px;border:1.5px solid var(--border);border-radius:10px;background:var(--white);cursor:pointer;transition:border-color .12s;min-height:20px;}
.cal-tp-display:hover{border-color:var(--text3);}
.cal-tp-val{font-size:13px;color:var(--text3);font-family:inherit;}
.cal-tp-val.set{color:var(--text);font-weight:600;}
.cal-tp-icon{font-size:14px;opacity:.5;}
.cal-tp-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;min-width:260px;background:var(--white);border:0.5px solid rgba(0,0,0,.08);border-radius:14px;box-shadow:0 12px 36px rgba(0,0,0,.14);z-index:100;display:none;overflow:hidden;}
.cal-tp-dropdown.show{display:block;animation:calTpIn .12s ease;}
@keyframes calTpIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}
.cal-tp-section{padding:10px 12px 6px;}
.cal-tp-section-label{font-size:11px;font-weight:700;color:var(--text3);margin-bottom:6px;}
.cal-tp-quick-row{display:flex;flex-wrap:wrap;gap:4px;}
.cal-tp-quick{padding:5px 10px;border:1px solid var(--border);border-radius:6px;background:var(--white);font-size:12px;font-weight:600;color:var(--text2);cursor:pointer;font-family:inherit;transition:all .1s;}
.cal-tp-quick:hover{background:#FFF7ED;border-color:#FF6B35;color:#FF6B35;}
.cal-tp-quick.active{background:#FF6B35;border-color:#FF6B35;color:#fff;}
.cal-tp-cols{display:flex;border-top:1px solid var(--border);border-bottom:1px solid var(--border);}
.cal-tp-col{flex:1;border-right:1px solid var(--border);}
.cal-tp-col:last-child{border-right:none;}
.cal-tp-col-label{text-align:center;padding:8px;font-size:11px;font-weight:700;color:var(--text3);background:var(--bg);border-bottom:1px solid var(--border);}
.cal-tp-scroll{max-height:180px;overflow-y:auto;padding:4px;}
.cal-tp-scroll::-webkit-scrollbar{width:4px;}
.cal-tp-scroll::-webkit-scrollbar-thumb{background:#d4d4d8;border-radius:4px;}
.cal-tp-cell{display:flex;align-items:center;gap:6px;width:100%;padding:7px 10px;border:none;background:none;border-radius:6px;font-size:14px;font-weight:600;color:var(--text);cursor:pointer;font-family:inherit;text-align:left;transition:background .08s;}
.cal-tp-cell:hover{background:var(--bg);}
.cal-tp-cell.active{background:#FF6B35;color:#fff;}
.cal-tp-ampm{font-size:10px;font-weight:500;color:var(--text3);margin-left:auto;}
.cal-tp-cell.active .cal-tp-ampm{color:rgba(255,255,255,.7);}
.cal-tp-footer{display:flex;justify-content:space-between;padding:8px 12px;}
.cal-tp-clear{padding:6px 12px;border:1px solid var(--border);border-radius:6px;background:var(--white);font-size:11px;color:var(--text3);cursor:pointer;font-family:inherit;}
.cal-tp-clear:hover{background:var(--bg);}
.cal-tp-done{padding:6px 14px;border:none;border-radius:6px;background:#FF6B35;color:#fff;font-size:11px;font-weight:600;cursor:pointer;font-family:inherit;}
.cal-tp-done:hover{background:#e55a2b;}
/* 시간 빠른 선택 편집 */
.cal-tp-quick-edit{background:var(--bg)!important;border-color:var(--border)!important;color:var(--text3)!important;font-size:13px!important;padding:5px 8px!important;}
.cal-tp-quick-edit:hover{background:#FFF7ED!important;}
.cal-tp-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px;}
.cal-tp-chip{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;background:var(--bg);border:1px solid var(--border);border-radius:8px;font-size:12px;font-weight:600;color:var(--text);}
.cal-tp-chip button{background:none;border:none;color:#ef4444;cursor:pointer;font-size:12px;padding:0 2px;opacity:.5;transition:opacity .1s;}
.cal-tp-chip button:hover{opacity:1;}
.cal-tp-add-row{display:flex;gap:6px;margin-bottom:8px;}
.cal-tp-add-input{flex:1;padding:6px 10px;border:1.5px solid var(--border);border-radius:8px;font-size:13px;font-family:inherit;outline:none;}
.cal-tp-add-input:focus{border-color:#FF6B35;}
.cal-tp-add-btn{padding:6px 12px;background:#FF6B35;color:#fff;border:none;border-radius:8px;font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;white-space:nowrap;}
.cal-tp-add-btn:hover{background:#e55a2b;}
.cal-tp-edit-footer{display:flex;justify-content:space-between;}
.cal-tp-reset-btn{padding:5px 10px;border:1px solid var(--border);border-radius:6px;background:var(--white);font-size:11px;color:var(--text3);cursor:pointer;font-family:inherit;}
.cal-tp-reset-btn:hover{background:var(--bg);}
.cal-tp-done-edit{padding:5px 14px;border:none;border-radius:6px;background:#FF6B35;color:#fff;font-size:11px;font-weight:600;cursor:pointer;font-family:inherit;}
/* 캘린더 지역 선택기 */
.cal-region-display{display:flex;align-items:center;justify-content:space-between;padding:9px 12px;border:1.5px solid var(--border);border-radius:10px;background:var(--white);cursor:pointer;transition:border-color .12s;}
.cal-region-display:hover{border-color:var(--text3);}
.cal-region-text{font-size:13px;color:var(--text3);font-family:inherit;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cal-region-text.set{color:var(--text);font-weight:600;}
.cal-region-arrow{color:var(--text3);font-size:11px;flex-shrink:0;}
.cal-rp-tabs{display:flex;gap:2px;padding:0 16px;border-bottom:1px solid var(--border);background:var(--bg);}
.cal-rp-tab{padding:10px 16px;border:none;background:none;font-size:13px;font-weight:600;color:var(--text3);cursor:pointer;font-family:inherit;border-bottom:2px solid transparent;transition:all .1s;}
.cal-rp-tab:hover{color:var(--text);}
.cal-rp-tab.active{color:#FF6B35;border-bottom-color:#FF6B35;background:var(--white);}
.cal-rp-chips{display:flex;flex-wrap:wrap;gap:5px;padding:8px 16px;min-height:0;}
.cal-rp-chips:empty{display:none;padding:0;}
.cal-rp-chip{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;background:#FFF7ED;border:1px solid #FF6B3540;border-radius:99px;font-size:11px;font-weight:600;color:#c2410c;}
.cal-rp-chip button{background:none;border:none;color:#c2410c;cursor:pointer;font-size:12px;padding:0;opacity:.6;}
.cal-rp-chip button:hover{opacity:1;}
.cal-rp-body{display:flex;flex:1;min-height:0;max-height:320px;overflow:hidden;}
.cal-rp-col{flex:1;display:flex;flex-direction:column;border-right:1px solid var(--border);}
.cal-rp-col:last-child{border-right:none;}
.cal-rp-col-head{padding:8px 12px;font-size:11px;font-weight:700;color:var(--text3);background:var(--bg);border-bottom:1px solid var(--border);text-align:center;}
.cal-rp-list{flex:1;overflow-y:auto;padding:4px;}
.cal-rp-item{display:block;width:100%;padding:8px 12px;border:none;background:none;text-align:left;font-size:13px;color:var(--text);cursor:pointer;border-radius:6px;font-family:inherit;transition:background .08s;}
.cal-rp-item:hover{background:var(--bg);}
.cal-rp-item.selected{background:#FFF7ED;color:#FF6B35;font-weight:700;}
.cal-rp-item-all{font-weight:700;border-bottom:1px solid var(--border);border-radius:0;margin-bottom:2px;}
.cal-rp-placeholder{padding:30px;text-align:center;color:var(--text3);font-size:12px;}
