* { box-sizing: border-box; margin: 0; padding: 0; }

/* 색·모서리·그림자·글꼴은 공통 규칙 파일(design-tokens.css)에서 받는다 — 출판IP 앱과 같은 값.
   body 에도 다시 선언해야 body.dark 에서 바뀐 공통 값이 여기 이름에도 반영된다. */
:root, body {
  --bg: var(--wd-bg);
  --surface: var(--wd-surface);
  --surface-2: var(--wd-surface-2);
  --border: var(--wd-border);
  --text: var(--wd-text);
  --text-2: var(--wd-text-2);
  --text-3: var(--wd-text-3);
  --primary: var(--wd-primary);
  --primary-600: var(--wd-primary-600);
  --primary-soft: var(--wd-primary-soft);
  --primary-softer: var(--wd-primary-softer);
  --urgent: var(--wd-urgent);
  --urgent-soft: var(--wd-urgent-soft);
  --important: var(--wd-important);
  --important-soft: var(--wd-important-soft);
  --personal: var(--wd-personal);
  --personal-soft: var(--wd-personal-soft);
  --success: var(--wd-success);
  --success-soft: var(--wd-success-soft);
  --shadow-sm: var(--wd-shadow-sm);
  --shadow-md: var(--wd-shadow-md);
  --radius-sm: var(--wd-radius-sm);
  --radius-md: var(--wd-radius-md);
  --radius-lg: var(--wd-radius-lg);
}
html, body { height: 100%; }

body {
  font-family: var(--wd-font);
  background: var(--bg);
  color: var(--text);
  transition: background .2s ease, color .2s ease;
  /* 애플 느낌: 안티앨리어싱 + 살짝 좁힌 자간 + 리거처/커닝 */
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  letter-spacing: -0.011em;
  font-feature-settings: "kern" 1, "liga" 1, "calt" 1;
  word-break: keep-all;
}

button, input, select, textarea { font-family: inherit; color: inherit; }
button { cursor: pointer; }

.hidden { display: none !important; }

/* ================= 로그인 화면 ================= */
.login-screen {
  min-height: 100vh;
  display: flex; align-items: center; justify-content: center;
  padding: 24px;
}
.login-card {
  width: 100%; max-width: 360px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-md);
  padding: 40px 30px 32px;
  display: flex; flex-direction: column; align-items: center; text-align: center;
}
.login-mark {
  width: 44px; height: 44px; border-radius: 12px;
  background: linear-gradient(135deg, var(--primary), var(--primary-600));
  color: #fff; display: flex; align-items: center; justify-content: center;
  font-weight: 700; font-size: 19px; margin-bottom: 16px;
}
.login-card h2 { font-size: 18px; font-weight: 700; margin-bottom: 5px; }
.login-sub { font-size: 13px; color: var(--text-2); margin-bottom: 26px; }
.google-btn {
  width: 100%;
  display: flex; align-items: center; justify-content: center; gap: 10px;
  background: var(--surface); border: 1px solid var(--border);
  border-radius: 10px; padding: 12px 16px;
  font-size: 14px; font-weight: 600; color: var(--text);
  box-shadow: var(--shadow-sm);
  transition: border-color .15s ease;
}
.gsi-button { display: flex; justify-content: center; min-height: 44px; margin-bottom: 6px; }
/* 서버 리디렉션 로그인 버튼 (운영 도메인 — GIS 대신) */
.oauth-login-btn {
  display: inline-flex; align-items: center; gap: 10px; width: 280px; justify-content: center;
  padding: 11px 16px; border: 1px solid var(--border, #dadce0); border-radius: 10px;
  background: var(--card, #fff); color: var(--text, #3c4043);
  font-size: 14px; font-weight: 600; cursor: pointer; font-family: inherit;
}
.oauth-login-btn:hover { background: var(--bg-2, #f8f9fa); border-color: #c6c9ce; }
.google-btn:hover { border-color: var(--text-3); }
.google-btn:disabled { opacity: .55; cursor: not-allowed; }
.google-g {
  width: 20px; height: 20px; border-radius: 50%; background: #fff;
  display: flex; align-items: center; justify-content: center;
  font-size: 13px; font-weight: 800; color: #4285F4; flex-shrink: 0;
  border: 1px solid var(--border);
}
.login-domain { margin-top: 16px; font-size: 12px; color: var(--text-3); }

.dev-login { margin-top: 26px; width: 100%; padding-top: 20px; border-top: 1px dashed var(--border); }
.dev-login-label {
  font-size: 10.5px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase;
  color: var(--text-3); margin-bottom: 12px;
}
.dev-account-list { display: flex; flex-direction: column; gap: 7px; }
.dev-account-btn {
  display: flex; flex-direction: column; align-items: flex-start; gap: 1px;
  width: 100%; text-align: left;
  border: 1px solid var(--border); background: var(--surface-2);
  border-radius: var(--radius-sm); padding: 9px 12px;
  transition: border-color .15s ease, background .15s ease;
}
.dev-account-btn:hover { border-color: var(--primary); background: var(--primary-soft); }
.dev-account-name { font-size: 13px; font-weight: 700; }
.dev-account-name .role { font-weight: 600; color: var(--primary); margin-left: 6px; font-size: 11.5px; }
.dev-account-email { font-size: 11.5px; color: var(--text-3); }
.login-error { margin-top: 16px; font-size: 12.5px; color: var(--urgent); line-height: 1.5; }

/* ================= 앱 레이아웃 ================= */
.app { display: flex; min-height: 100vh; }

.sidebar {
  width: 232px; flex-shrink: 0;
  background: var(--surface); border-right: 1px solid var(--border);
  display: flex; flex-direction: column; padding: 20px 14px;
  position: sticky; top: 0; height: 100vh;
}
.brand { display: flex; align-items: center; gap: 10px; padding: 6px 10px 24px; }
.brand-mark {
  width: 32px; height: 32px; border-radius: 9px;
  background: linear-gradient(135deg, var(--primary), var(--primary-600));
  color: #fff; display: flex; align-items: center; justify-content: center;
  font-weight: 700; font-size: 15px;
}
.brand-name { font-weight: 700; font-size: 16px; letter-spacing: -.2px; }

.nav { display: flex; flex-direction: column; gap: 2px; flex: 1; }
.nav-item {
  display: flex; align-items: center; gap: 12px;
  border: none; background: none; text-align: left;
  padding: 10px 12px; border-radius: var(--radius-sm);
  color: var(--text-2); font-size: 14.5px; font-weight: 500;
  transition: background .15s ease, color .15s ease;
}
.nav-item:hover { background: var(--surface-2); color: var(--text); }
.nav-item.is-active { background: var(--primary-soft); color: var(--primary); }
.nav-icon { display: flex; opacity: .85; }
.nav-item.is-active .nav-icon { opacity: 1; }
.nav-label { flex: 1; }

/* 출판IP팀 하위 메뉴 — 그 페이지에 있을 때만 펼쳐진다.
   두 단계를 눈으로 바로 가를 수 있게 서로 다르게 꾸민다.
     대분류(작품 및 일정 관리 · 매출관리)  굵고 진하게 + 화살표
     중분류(웹툰단행본 · 일본만화)         작고 연하게 + 한 단 들여쓰기 + 세로 안내선
   항목은 /pubip 앱이 알려 주는 목록으로 script.js 가 그린다. */
.nav-sub { display: flex; flex-direction: column; gap: 2px; margin: 3px 0 8px; }
.nav-sub.hidden { display: none; }
.nav-subitem {
  border: none; background: none; text-align: left;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  transition: background .15s ease, color .15s ease, border-color .15s ease;
}

/* ── 대분류 ── */
.nav-subitem.is-parent {
  display: flex; align-items: center; gap: 7px; width: 100%;
  margin-left: 10px; padding: 8px 10px;
  border-radius: var(--radius-sm);
  font-size: 13.5px; font-weight: 700; color: var(--text-2);
}
.nav-subitem.is-parent:hover { background: var(--surface-2); color: var(--text); }
.nav-subitem.is-parent.is-active { color: var(--primary); background: var(--primary-soft); }
.nav-sub-caret {
  flex: none; width: 11px; font-size: 9px; line-height: 1;
  color: var(--text-3); transition: color .15s ease;
}
.nav-subitem.is-parent:hover .nav-sub-caret { color: var(--text-2); }
.nav-subitem.is-parent.is-active .nav-sub-caret { color: var(--primary); }
.nav-sub-label { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; }

/* ── 중분류 ── 세로선으로 '위 대분류에 딸린 것'임을 보이게 한다 */
.nav-subitem.is-bu {
  margin-left: 29px; padding: 6px 10px 6px 13px;
  border-left: 2px solid var(--border);
  border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
  font-size: 12.5px; font-weight: 500; color: var(--text-3);
}
.nav-subitem.is-bu:hover { background: var(--surface-2); color: var(--text-2); border-left-color: var(--text-3); }
.nav-subitem.is-bu.is-active {
  color: var(--primary); font-weight: 700;
  background: var(--primary-softer); border-left-color: var(--primary);
}

.sidebar-footer { padding-top: 12px; border-top: 1px solid var(--border); }
.user-chip { display: flex; align-items: center; gap: 10px; padding: 8px; border-radius: var(--radius-sm); }
.user-avatar {
  width: 32px; height: 32px; border-radius: 50%;
  background: var(--surface-2); border: 1px solid var(--border);
  display: flex; align-items: center; justify-content: center;
  font-size: 13px; font-weight: 700; color: var(--text-2); flex-shrink: 0;
}
.user-info { min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.user-name { font-size: 13px; font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.user-role { font-size: 11px; font-weight: 700; color: var(--primary); }

.main { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.topbar {
  display: flex; align-items: center; justify-content: space-between;
  padding: 18px 32px; border-bottom: 1px solid var(--border);
  position: sticky; top: 0; background: var(--bg); z-index: 20;
}
.topbar h1 { font-size: 20px; font-weight: 700; letter-spacing: -.3px; }
.topbar-sub { font-size: 13px; color: var(--text-2); margin-top: 2px; }
.topbar-right { display: flex; align-items: center; gap: 10px; }
.icon-btn {
  width: 36px; height: 36px; border-radius: 10px;
  border: 1px solid var(--border); background: var(--surface);
  display: flex; align-items: center; justify-content: center; color: var(--text-2);
  transition: background .15s ease, color .15s ease;
}
.icon-btn:hover { background: var(--surface-2); color: var(--text); }

.content { padding: 24px 32px 60px; flex: 1; display: flex; flex-direction: column; gap: 16px; }
.page { display: none; animation: fadeIn .2s ease; flex-direction: column; gap: 16px; }
/* 일정관리는 넓은 화면에서 과하게 늘어나지 않게 폭 제한 + 가운데 정렬 (직원 요청 65~70%) */
#page-schedule { max-width: 1120px; width: 100%; margin: 0 auto; }
/* 출판IP는 별도 앱(/pubip)을 iframe으로 품는다. 안쪽 앱이 자기 사이드바와 여백을
   갖고 있으므로 바깥 여백을 걷어내고 화면을 꽉 채운다. */
#page-pubip.is-active { flex: 1; gap: 0; margin: -24px -32px -60px; }
.pubip-frame {
  flex: 1; display: block; width: 100%; border: 0;
  min-height: calc(100vh - 78px);   /* 78px = 상단바 높이 */
  background: var(--bg);
}
.page.is-active { display: flex; }
/* opacity만 사용 — transform을 쓰면 .page가 fixed의 기준(containing block)이 되어 고정 박스가 어긋남 */
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }

/* ================= 버튼 ================= */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  border-radius: var(--radius-sm); border: 1px solid transparent;
  padding: 9px 16px; font-size: 13.5px; font-weight: 600;
  transition: background .15s ease, border-color .15s ease, opacity .15s ease;
  white-space: nowrap;
}
.btn-primary { background: var(--primary); color: #fff; }
.btn-primary:hover { background: var(--primary-600); }
.btn-sm { padding: 6px 12px; font-size: 12.5px; }

/* ================= 카드 ================= */
.card { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-md); box-shadow: var(--shadow-sm); padding: 18px 20px; }
.card-title { font-size: 13px; font-weight: 700; color: var(--text-2); margin-bottom: 14px; }
.empty-state { padding: 30px 12px; text-align: center; color: var(--text-3); font-size: 13.5px; }
.caption-note { font-size: 11.5px; color: var(--text-3); line-height: 1.6; }

/* ================= 팀 컨텍스트 바 ================= */
.team-context { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.team-context-label { font-size: 12px; font-weight: 700; color: var(--text-3); flex-shrink: 0; }
.team-chips { display: flex; gap: 6px; flex-wrap: wrap; }
.team-chip {
  font-size: 12.5px; font-weight: 600;
  border: 1px solid var(--border); background: var(--surface-2); color: var(--text-2);
  border-radius: 999px; padding: 6px 12px;
}
.team-chip.is-active { background: var(--primary-soft); border-color: var(--primary); color: var(--primary); }
.team-locked {
  display: flex; align-items: center; gap: 7px;
  font-size: 12.5px; font-weight: 600; color: var(--text);
  background: var(--surface-2); border: 1px solid var(--border);
  border-radius: 999px; padding: 6px 12px;
}
.team-locked svg { opacity: .6; }
.team-context-hint { font-size: 11.5px; color: var(--text-3); }
.team-chip-groups { display: flex; flex-direction: column; gap: 8px; flex: 1; min-width: 0; }
.team-chip-group { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.team-company-label { font-size: 11px; font-weight: 700; color: var(--primary); background: var(--primary-soft); padding: 3px 9px; border-radius: 999px; flex-shrink: 0; }

/* 사이드바 회사 전환탭 (회사 2곳 이상 접근 가능한 계정에만 노출) */
.company-switch { display: flex; gap: 3px; background: var(--surface-2); border: 1px solid var(--border); border-radius: 999px; padding: 3px; margin: 0 4px 14px; }
.company-tab { flex: 1; border: none; background: none; font-size: 12px; font-weight: 700; color: var(--text-2); padding: 6px 0; border-radius: 999px; }
.company-tab.is-active { background: var(--surface); color: var(--primary); box-shadow: var(--shadow-sm); }

/* ================= 서브탭 ================= */
.subtabs { display: flex; gap: 4px; background: var(--surface-2); border: 1px solid var(--border); border-radius: 999px; padding: 3px; width: fit-content; }
.subtab-btn { border: none; background: none; font-size: 12.5px; font-weight: 600; color: var(--text-2); padding: 7px 15px; border-radius: 999px; }
.subtab-btn.is-active { background: var(--surface); color: var(--primary); box-shadow: var(--shadow-sm); }
.rec-mode-row { margin: 4px 0 12px; }

/* ================= 회의/미팅 폼 ================= */
.rec-form { display: grid; grid-template-columns: 1fr 2fr; gap: 12px; margin-bottom: 14px; }
.rec-form-2 { grid-template-columns: 1fr 1fr; }
.rec-field-full { grid-column: 1 / -1; margin-bottom: 14px; }
/* 회의 참여자 선택 */
.rec-part-hint { font-weight: 500; color: var(--text-3); font-size: 11px; }
.rec-participants { display: flex; flex-direction: column; gap: 10px; }
/* 아트리 회의 참여자 섹션 탭 */
.rec-sect-tabs { display: flex; flex-wrap: wrap; gap: 5px; margin-bottom: 9px; }
.rec-sect-tab { display: inline-flex; align-items: center; gap: 5px; border: 1px solid var(--border); background: var(--surface); color: var(--text-2); font-size: 12.5px; font-weight: 700; padding: 5px 13px; border-radius: 999px; cursor: pointer; }
.rec-sect-tab.is-active { background: var(--primary); color: #fff; border-color: var(--primary); }
.rec-sect-tab.is-active .rec-part-gcount { background: rgba(255,255,255,.25); color: #fff; }
.rec-sect-all { align-self: flex-start; border: 1px dashed var(--border); background: transparent; color: var(--text-2); font-size: 11.5px; font-weight: 700; padding: 4px 10px; border-radius: 7px; cursor: pointer; }
.rec-sect-all:hover { border-color: var(--primary); color: var(--primary); }
.rec-subg-label { font-size: 11.5px; font-weight: 800; color: var(--text-2); margin: 4px 0 6px; }
.rec-subg-label .rec-part-gcount { font-weight: 700; }
.rec-part-gname { display: inline-flex; align-items: center; gap: 6px; border: none; background: transparent; cursor: pointer; font-size: 11.5px; font-weight: 800; color: var(--text-2); margin-bottom: 6px; padding: 2px 0; }
.rec-part-gname:hover { color: var(--primary); }
.rec-part-gcount { font-weight: 700; color: var(--text-3); background: var(--surface-2); border-radius: 999px; padding: 0 6px; font-size: 10.5px; }
.rec-part-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.rec-part-chk { display: inline-flex; align-items: center; gap: 6px; font-size: 12.5px; font-weight: 600; padding: 6px 10px; border: 1px solid var(--border); border-radius: 999px; background: var(--surface-2); cursor: pointer; }
.rec-part-chk:has(input:checked) { border-color: var(--primary); background: var(--primary-soft); color: var(--primary); }
.rec-part-pos { color: var(--text-3); font-weight: 500; font-size: 11px; }
.field-label { display: block; font-size: 11.5px; font-weight: 600; color: var(--text-2); margin-bottom: 5px; }
.rec-input { width: 100%; border: 1px solid var(--border); background: var(--surface-2); border-radius: var(--radius-sm); padding: 9px 11px; font-size: 13.5px; color: var(--text); outline: none; transition: border-color .15s ease, background .15s ease; }
.rec-input:focus { border-color: var(--primary); background: var(--surface); }
.rec-input::placeholder { color: var(--text-3); }
.field-note { font-size: 11.5px; color: var(--text-3); line-height: 1.5; margin-top: 6px; }
.field-note b { color: var(--primary); font-weight: 700; }

/* 직접 녹음 바 */
.rec-bar { display: flex; align-items: center; gap: 14px; padding: 14px 16px; background: var(--surface-2); border: 1px solid var(--border); border-radius: var(--radius-sm); }
.rec-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--text-3); flex-shrink: 0; }
.rec-bar.is-recording .rec-dot { background: var(--urgent); animation: pulse 1.4s ease-in-out infinite; }
.rec-bar.is-recording .rec-status { color: var(--urgent); }
@keyframes pulse { 0%,100% { opacity: 1; box-shadow: 0 0 0 0 rgba(225,29,72,.35); } 50% { opacity: .6; box-shadow: 0 0 0 6px rgba(225,29,72,0); } }
.rec-status { font-size: 12.5px; font-weight: 600; color: var(--text-2); flex-shrink: 0; }
.rec-timer { font-family: ui-monospace, "SF Mono", Menlo, monospace; font-variant-numeric: tabular-nums; font-size: 15px; font-weight: 700; margin-left: auto; }
.rec-go { width: 36px; height: 36px; border-radius: 50%; border: none; background: var(--urgent); flex-shrink: 0; display: flex; align-items: center; justify-content: center; transition: transform .15s ease; }
.rec-go:hover { transform: scale(1.06); }
.rec-go span { width: 12px; height: 12px; border-radius: 50%; background: #fff; transition: border-radius .15s ease, width .15s ease, height .15s ease; }
.rec-bar.is-recording .rec-go span { border-radius: 3px; width: 11px; height: 11px; }

/* 파일 업로드 */
.upload-drop { display: flex; align-items: center; gap: 10px; border: 1.5px dashed var(--border); border-radius: var(--radius-sm); background: var(--surface-2); padding: 14px 16px; transition: border-color .15s ease, background .15s ease; }
.upload-drop:hover { border-color: var(--primary); background: var(--primary-soft); }
.upload-drop svg { flex-shrink: 0; opacity: .7; }
.upload-drop-text { font-size: 12.5px; color: var(--text-2); }
.upload-drop-text b { color: var(--primary); font-weight: 700; }
.upload-drop-hint { font-size: 11px; color: var(--text-3); margin-top: 2px; }
.upload-chosen { display: flex; align-items: center; gap: 10px; border: 1px solid var(--border); border-radius: var(--radius-sm); background: var(--surface-2); padding: 10px 14px; margin-top: 10px; }
.upload-chosen-info { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.upload-chosen-name { font-size: 12.5px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.upload-chosen-meta { font-size: 11px; color: var(--text-3); }
.upload-remove { width: 24px; height: 24px; border-radius: 50%; border: none; background: var(--surface); color: var(--text-3); font-size: 11px; flex-shrink: 0; }
.upload-remove:hover { background: var(--urgent-soft); color: var(--urgent); }

.process-btn { margin-top: 12px; width: 100%; border: none; background: var(--primary); color: #fff; font-size: 13.5px; font-weight: 700; padding: 11px 0; border-radius: var(--radius-sm); transition: background .15s ease; }
.process-btn:hover:not(:disabled) { background: var(--primary-600); }
.process-btn:disabled { background: var(--border); color: var(--text-3); cursor: not-allowed; }

/* 수기 작성 */
.manual-form { display: flex; flex-direction: column; gap: 10px; }
.manual-field { display: flex; flex-direction: column; gap: 5px; }
.rec-textarea { border: 1px solid var(--border); background: var(--surface-2); border-radius: var(--radius-sm); padding: 9px 11px; font-size: 13px; font-family: inherit; color: var(--text); resize: vertical; min-height: 52px; outline: none; line-height: 1.55; }
.rec-textarea:focus { border-color: var(--primary); background: var(--surface); }
.rec-textarea::placeholder { color: var(--text-3); }

/* 처리 진행 표시 */
.proc-steps { list-style: none; display: flex; justify-content: space-between; gap: 8px; }
.proc-step { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 8px; font-size: 11.5px; color: var(--text-3); font-weight: 600; position: relative; text-align: center; }
.proc-step:not(:last-child)::after { content: ""; position: absolute; top: 6px; left: 55%; width: 90%; height: 2px; background: var(--border); z-index: 0; }
.proc-dot { width: 14px; height: 14px; border-radius: 50%; background: var(--border); border: 2px solid var(--surface); z-index: 1; }
.proc-step.is-active .proc-dot { background: var(--primary); }
.proc-step.is-active { color: var(--primary); }
.proc-step.is-done .proc-dot { background: var(--success); }
.proc-step.is-done { color: var(--success); }
.proc-note { font-size: 11.5px; color: var(--text-3); text-align: center; margin-top: 12px; }
.proc-note.is-error { color: var(--urgent); }

/* 최근 회의/미팅 목록 */
.mini-history { display: flex; flex-direction: column; margin-top: 14px; }
.mini-history-item { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 10px 4px; border-top: 1px solid var(--border); font-size: 12.5px; border-radius: 6px; }
.mini-history-item.is-clickable { cursor: pointer; }
.mini-history-item.is-clickable:hover { background: var(--surface-2); }
.mini-history-main { min-width: 0; }
.mini-history-title { font-weight: 600; }
.mini-history-meta { color: var(--text-3); font-size: 11.5px; margin-top: 1px; }
.mini-badge { font-size: 10.5px; font-weight: 700; padding: 3px 8px; border-radius: 999px; background: var(--success-soft); color: var(--success); white-space: nowrap; flex-shrink: 0; }

/* ================= 인사이트 ================= */
.stat-row { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-bottom: 16px; }
.stat-row-2 { grid-template-columns: repeat(2, 1fr); }
.stat-tile { background: var(--surface-2); border: 1px solid var(--border); border-radius: var(--radius-sm); padding: 14px 15px; }
.stat-num { font-family: ui-monospace, "SF Mono", Menlo, monospace; font-variant-numeric: tabular-nums; font-size: 22px; font-weight: 800; line-height: 1; }
.stat-tile .stat-label { font-size: 11px; color: var(--text-2); margin-top: 6px; }
.issue-empty { font-size: 12.5px; color: var(--text-3); text-align: center; padding: 18px 0; }

/* ================= 할 일(투두) ================= */
.td-count { font-size: 11.5px; font-weight: 600; color: var(--text-3); margin-left: 6px; }
.td-add { display: flex; gap: 8px; margin-bottom: 14px; flex-wrap: wrap; }
.td-add .rec-input { flex: 1; min-width: 150px; }
.td-add .td-small { flex: 0 0 88px; min-width: 0; }
.td-addbtn { width: auto; margin-top: 0; padding: 9px 18px; flex-shrink: 0; }
.td-list { display: flex; flex-direction: column; }
.td-row { display: flex; align-items: flex-start; gap: 11px; padding: 11px 2px; border-top: 1px solid var(--border); }
.td-row:first-child { border-top: none; }
.td-ck { width: 22px; height: 22px; border-radius: 7px; border: 2px solid var(--text-3); background: var(--surface); flex-shrink: 0; display: flex; align-items: center; justify-content: center; color: #fff; font-size: 13px; font-weight: 700; margin-top: 1px; }
.td-ck.on { background: var(--success); border-color: var(--success); }
.td-body { flex: 1; min-width: 0; }
.td-text { font-size: 13.5px; font-weight: 600; line-height: 1.45; }
.td-row.done .td-text { text-decoration: line-through; color: var(--text-3); font-weight: 500; }
.td-sub { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; font-size: 11.5px; color: var(--text-3); margin-top: 5px; }
.td-who { display: inline-flex; align-items: center; gap: 5px; color: var(--text-2); font-weight: 600; }
.td-av { width: 18px; height: 18px; border-radius: 50%; background: var(--primary-soft); color: var(--primary); display: flex; align-items: center; justify-content: center; font-size: 10px; font-weight: 700; }
.td-due { font-weight: 600; color: var(--important); }
.td-src { color: var(--text-3); }
.td-src.td-manual { color: var(--primary); font-weight: 600; }
.td-del { flex-shrink: 0; width: 24px; height: 24px; border: none; background: var(--surface-2); color: var(--text-3); border-radius: 50%; font-size: 11px; }
.td-edit { flex-shrink: 0; width: 24px; height: 24px; border: none; background: var(--surface-2); color: var(--text-3); border-radius: 50%; font-size: 12px; }
.td-edit:hover { background: var(--primary-soft); color: var(--primary); }
.td-row.td-editing { background: var(--surface-2); border-radius: var(--radius-sm); padding: 11px 10px; }
.td-edit-form { display: flex; flex-direction: column; gap: 8px; }
.td-edit-sub { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.td-edit-sub .td-small { flex: 0 0 100px; }
.td-edit-save { width: auto; padding: 8px 18px; flex-shrink: 0; }
.history-del { margin-left: 2px; opacity: 0; transition: opacity .15s ease; }
.mini-history-item:hover .history-del { opacity: 1; }
.td-del:hover { background: var(--urgent-soft); color: var(--urgent); }
.note-sm { font-size: 11.5px; color: var(--text-3); line-height: 1.6; margin-top: 10px; }

/* ================= 상세 모달 ================= */
.modal-overlay { position: fixed; inset: 0; background: rgba(10, 12, 18, .5); display: flex; align-items: center; justify-content: center; padding: 20px; z-index: 100; }
.detail-modal { width: 100%; max-width: 480px; max-height: 84vh; overflow-y: auto; background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); box-shadow: var(--shadow-md); padding: 22px 24px; animation: modalIn .15s ease; }
@keyframes modalIn { from { opacity: 0; transform: scale(.96); } to { opacity: 1; transform: none; } }
.modal-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; }
.modal-title { font-size: 16px; font-weight: 700; text-wrap: balance; }
.modal-meta { font-size: 12px; color: var(--text-2); margin-top: 4px; }
.modal-close { width: 28px; height: 28px; border-radius: 50%; border: none; background: var(--surface-2); color: var(--text-2); flex-shrink: 0; font-size: 13px; }
.modal-close:hover { background: var(--border); }
.modal-body { margin-top: 18px; display: flex; flex-direction: column; gap: 14px; }
.detail-label { font-size: 10.5px; font-weight: 700; color: var(--primary); text-transform: uppercase; letter-spacing: .04em; margin-bottom: 5px; }
.detail-value { font-size: 13.5px; line-height: 1.6; color: var(--text); }
.detail-value-pre { white-space: pre-line; font-size: 13px; }
.modal-foot { margin-top: 18px; padding-top: 13px; border-top: 1px solid var(--border); font-size: 11.5px; color: var(--text-3); line-height: 1.6; }

/* ================= 뉴스 ================= */
.toolbar { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.news-updated { font-size: 13px; color: var(--text-2); }
.news-updated strong { color: var(--text); }
.news-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.news-panel { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-md); box-shadow: var(--shadow-sm); overflow: hidden; display: flex; flex-direction: column; }
.news-panel-header { padding: 14px 18px; border-bottom: 1px solid var(--border); display: flex; align-items: center; gap: 8px; }
.news-panel-header h2 { font-size: 14.5px; font-weight: 700; }
.news-region-tag { font-size: 10.5px; font-weight: 700; padding: 2px 8px; border-radius: 999px; background: var(--primary-soft); color: var(--primary); flex-shrink: 0; }
.news-panel-body { max-height: 480px; overflow-y: auto; padding: 6px; }
.news-item { padding: 10px 12px; border-radius: var(--radius-sm); }
.news-item + .news-item { border-top: 1px solid var(--border); }
.news-item-title { font-size: 13.5px; font-weight: 700; line-height: 1.4; margin-bottom: 4px; }
.news-item-summary { font-size: 12.5px; color: var(--text-2); line-height: 1.55; margin-bottom: 6px; }
.news-item-source { font-size: 11px; color: var(--text-3); display: flex; align-items: center; gap: 4px; }

/* ================= 스카우팅 ================= */
.scouting-grid { grid-template-columns: repeat(3, 1fr); }
.scouting-signal { display: flex; align-items: flex-start; gap: 5px; font-size: 11.5px; color: var(--important); font-weight: 600; line-height: 1.5; margin-bottom: 6px; }
.scouting-rank-item { display: flex; gap: 12px; align-items: flex-start; text-decoration: none; color: inherit; transition: background .15s ease; }
.scouting-rank-item:hover { background: var(--surface-2); }
.scouting-rank-item:hover .news-item-title { color: var(--primary); }
.scouting-rank-body { flex: 1; min-width: 0; }
.rank-badge { flex-shrink: 0; width: 24px; height: 24px; margin-top: 1px; border-radius: 7px; background: var(--surface-2); color: var(--text-2); font-size: 12.5px; font-weight: 800; display: flex; align-items: center; justify-content: center; }
.rank-badge.rank-top { background: linear-gradient(135deg, var(--important), #f59e0b); color: #fff; }

/* ================= 설정 ================= */
.settings-stack { display: flex; flex-direction: column; gap: 14px; }









.settings-item { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 0; border-top: 1px solid var(--border); }
.settings-item:first-of-type { border-top: none; }
.settings-item-label { font-size: 13.5px; font-weight: 600; }
.settings-item-hint { font-size: 11.5px; color: var(--text-3); margin-top: 2px; }
.settings-select { border: 1px solid var(--border); background: var(--surface-2); border-radius: var(--radius-sm); padding: 8px 10px; font-size: 12.5px; flex-shrink: 0; }

.toggle { position: relative; width: 40px; height: 23px; flex-shrink: 0; }
.toggle input { position: absolute; opacity: 0; width: 100%; height: 100%; margin: 0; cursor: pointer; }
.toggle-track { position: absolute; inset: 0; background: var(--border); border-radius: 999px; transition: background .15s ease; }
.toggle-thumb { position: absolute; top: 3px; left: 3px; width: 17px; height: 17px; border-radius: 50%; background: #fff; box-shadow: 0 1px 3px rgba(0,0,0,.3); transition: transform .15s ease; }
.toggle input:checked ~ .toggle-track { background: var(--primary); }
.toggle input:checked ~ .toggle-thumb { transform: translateX(17px); }

.master-only-tag { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .03em; background: var(--primary-soft); color: var(--primary); padding: 2px 7px; border-radius: 999px; margin-left: 8px; vertical-align: middle; }
.roster-list { display: flex; flex-direction: column; margin-bottom: 16px; max-height: 520px; overflow-y: auto; }
.roster-filter { margin-bottom: 12px; }
.roster-company-block { margin-top: 14px; }
.roster-company-block:first-child { margin-top: 4px; }
.roster-company-head { display: flex; align-items: center; gap: 8px; font-size: 14px; font-weight: 800; color: var(--text); padding: 6px 0; border-bottom: 2px solid var(--primary); }
.roster-company-count { font-size: 11px; font-weight: 700; color: var(--primary); background: var(--primary-soft); padding: 2px 8px; border-radius: 999px; }
.roster-dept { margin-top: 8px; }
.roster-dept-name { display: flex; align-items: center; gap: 7px; font-size: 12px; font-weight: 700; color: var(--text-2); padding: 8px 0 2px; }
.roster-dept-count { font-size: 10px; font-weight: 600; color: var(--text-3); background: var(--surface-2); padding: 1px 7px; border-radius: 999px; }
.roster-row { display: flex; align-items: center; gap: 10px; padding: 8px 0; border-top: 1px solid var(--border); }
.roster-dept-name + .roster-row { border-top: none; }
.roster-person { display: flex; align-items: baseline; gap: 8px; flex: 1; min-width: 0; cursor: pointer; padding: 2px 6px; margin: -2px -6px; border-radius: 8px; }
.roster-person:hover { background: var(--surface-2); }
.roster-person:focus-visible { outline: 2px solid var(--primary); outline-offset: 1px; }
.roster-edit-email { font-size: 12.5px; font-weight: 600; color: var(--text-3); margin-top: 2px; }
.roster-edit-delete { border: 1px solid var(--border); background: var(--surface); color: var(--urgent); font-size: 12.5px; font-weight: 600; padding: 8px 14px; border-radius: 8px; cursor: pointer; }
.roster-edit-delete:hover { background: var(--urgent-soft); border-color: var(--urgent); }
.roster-edit-modal .modal-actions { display: flex; align-items: center; justify-content: space-between; margin-top: 18px; }
.roster-name { font-size: 13px; font-weight: 700; color: var(--text); flex-shrink: 0; }
.roster-pos { font-size: 11.5px; font-weight: 600; color: var(--primary); background: var(--primary-soft); padding: 1px 7px; border-radius: 999px; flex-shrink: 0; }
.roster-email { font-size: 12px; font-weight: 500; color: var(--text-3); min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.roster-badges { display: flex; gap: 5px; flex-wrap: wrap; flex-shrink: 0; }
.roster-badge { font-size: 11px; font-weight: 600; padding: 3px 9px; border-radius: 999px; background: var(--surface-2); color: var(--text-2); border: 1px solid var(--border); white-space: nowrap; }
.roster-badge-master { background: var(--primary-soft); color: var(--primary); border-color: var(--primary); }
.roster-badge-none { background: transparent; color: var(--text-3); border-style: dashed; }
.roster-badge-blocked { background: var(--urgent-soft); color: var(--urgent); border-color: var(--urgent); }
.roster-badge-left { background: var(--surface-2); color: var(--text-3); border-color: var(--border); border-style: dashed; }
.roster-row-left { opacity: .62; }
/* 로그인 허용 스위치 */
.roster-switch { width: 38px; height: 22px; border-radius: 999px; border: none; background: var(--border); position: relative; cursor: pointer; flex-shrink: 0; padding: 0; transition: background .15s; }
.roster-switch.on { background: var(--success, #16a34a); }
.roster-switch-knob { position: absolute; top: 2px; left: 2px; width: 18px; height: 18px; border-radius: 50%; background: #fff; box-shadow: 0 1px 2px rgba(0,0,0,.25); transition: left .15s; }
.roster-switch.on .roster-switch-knob { left: 18px; }
.roster-check-login { background: var(--surface-2); border: 1px solid var(--border); border-radius: 8px; padding: 9px 11px; font-weight: 600; }
.roster-remove { width: 24px; height: 24px; border-radius: 50%; border: none; background: var(--surface-2); color: var(--text-3); font-size: 11px; flex-shrink: 0; }
.roster-remove:hover { background: var(--urgent-soft); color: var(--urgent); }
.roster-add { border-top: 1px solid var(--border); padding-top: 14px; display: flex; flex-direction: column; gap: 10px; }
.roster-add-title { font-size: 13px; font-weight: 700; color: var(--text); }
.roster-add-row { display: flex; gap: 8px; flex-wrap: wrap; }
.roster-add-row > * { flex: 1; min-width: 120px; }
.roster-add-hint { font-size: 12px; color: var(--text-3); line-height: 1.5; }
.roster-check-group { display: flex; flex-direction: column; gap: 8px; }
.roster-check-company { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.roster-check { display: flex; align-items: center; gap: 6px; font-size: 12.5px; color: var(--text-2); }
.roster-check input { accent-color: var(--primary); }
.roster-check-master { font-weight: 600; color: var(--text); }

/* AI 테스트 패널 */
.ai-status { font-size: 12px; margin-bottom: 8px; }
.text-success { color: var(--success); }
.text-error { color: var(--urgent); }
.ai-test-panel textarea { width: 100%; resize: vertical; min-height: 60px; border: 1px solid var(--border); background: var(--surface-2); border-radius: 8px; padding: 10px 12px; font-size: 13.5px; color: var(--text); line-height: 1.5; margin-top: 10px; }
.ai-test-actions { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 10px; }
.ai-test-hint { font-size: 12px; color: var(--text-3); }
.ai-response { margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--border); font-size: 13.5px; line-height: 1.6; color: var(--text); white-space: pre-wrap; }
.ai-response.is-error { color: var(--urgent); }

/* ================= 일정관리 (기간 캘린더 + 공정) ================= */
.td-del-text { border: none; background: none; color: var(--text-3); font-size: 12px; font-weight: 600; padding: 4px 8px; border-radius: var(--radius-sm); }
.td-del-text:hover { background: var(--urgent-soft); color: var(--urgent); }
.btn-small { border: 1px solid var(--border); background: var(--surface); color: var(--text-2); font-size: 12px; font-weight: 600; padding: 5px 12px; border-radius: 999px; }
.btn-small:hover { background: var(--surface-2); color: var(--text); }
.sch-small { width: 100%; }

/* 담당자 필터 탭 + 색상 */
.sch-atabs { display: flex; gap: 6px; flex-wrap: wrap; }
.sch-atab { display: inline-flex; align-items: center; gap: 6px; border: 1px solid var(--border); background: var(--surface); color: var(--text-2); font-size: 12.5px; font-weight: 600; padding: 6px 13px; border-radius: 999px; }
.sch-atab:hover { background: var(--surface-2); }
.sch-atab.is-active { background: var(--text); color: var(--bg); border-color: var(--text); }
.sch-adot { width: 9px; height: 9px; border-radius: 50%; flex-shrink: 0; }
.sch-adot.a1, .sch-bar.a1 { background: #4f46e5; }
.sch-adot.a2, .sch-bar.a2 { background: #0d9488; }
.sch-adot.a3, .sch-bar.a3 { background: #d97706; }
.sch-adot.a4, .sch-bar.a4 { background: #db2777; }
.sch-adot.a5, .sch-bar.a5 { background: #16a34a; }
.sch-adot.a0, .sch-bar.a0 { background: #64748b; }

.sch-calendar-card { padding: 16px 18px; }
.sch-cal-header { display: flex; align-items: center; justify-content: center; gap: 12px; margin-bottom: 12px; }
.sch-cal-label { font-size: 15px; font-weight: 700; min-width: 100px; text-align: center; }
.sch-cal-header #schToday { margin-left: 6px; }
.sch-cal-dow-row { display: grid; grid-template-columns: repeat(7, 1fr); text-align: center; font-size: 11px; color: var(--text-3); font-weight: 700; margin-bottom: 3px; }
.sch-cal-dow-row .dow-sun { color: var(--urgent); }
.sch-cal-dow-row .dow-sat { color: #2563eb; }

.sch-weeks { border: 1px solid var(--border); border-radius: 9px; overflow: hidden; }
.sch-week { position: relative; }
.sch-week + .sch-week { border-top: 1px solid var(--border); }
/* 마감일만 모드(260921, 로맨스 B-4): 레인 대신 셀 안 알약 — 셀이 내용만큼 늘어남 */
.sch-week-due .sch-daycell { min-height: 64px; }
.sch-pills { display: flex; flex-direction: column; gap: 3px; margin-top: 3px; }
.sch-duepill, .sch-collabpill {
  position: relative; display: block; font-size: 11.5px; font-weight: 650; line-height: 1.35;
  padding: 3px 18px 3px 7px; border-radius: 7px; cursor: pointer;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.sch-duepill.done { opacity: .55; text-decoration: line-through; }
.sch-duepill.is-sel { outline: 2px solid var(--text); }
.sch-collabpill, .sch-bar-collab { background: #7c3aed; color: #fff; }
.sch-adot-collab { background: none; font-size: 11px; }
.sch-up-collab .sch-up-title { color: #7c3aed; font-weight: 650; }
/* 마감 D-day 배지 (3일 이내·지남 = 빨강) */
.sch-dday {
  display: inline-block; font-size: 10px; font-weight: 800; padding: 1px 5px; margin-right: 4px;
  border-radius: 999px; background: rgba(255,255,255,.28); color: inherit; vertical-align: 1px;
}
.sch-up-row .sch-dday, .rr-detail-row .sch-dday { background: var(--surface-2); color: var(--text-2); }
.sch-dday.is-urgent { background: #dc2626 !important; color: #fff !important; }
/* 수정·삭제 상시 노출 — 막대/알약에 마우스 올리면 ✕ */
.sch-pill-del {
  position: absolute; right: 3px; top: 50%; transform: translateY(-50%);
  display: none; border: none; background: rgba(0,0,0,.25); color: #fff;
  width: 14px; height: 14px; line-height: 13px; font-size: 9px; border-radius: 50%; cursor: pointer; padding: 0;
}
.sch-bar { position: relative; }
.sch-bar:hover .sch-pill-del, .sch-duepill:hover .sch-pill-del, .sch-collabpill:hover .sch-pill-del { display: block; }
.sch-up-row { position: relative; }
.sch-up-row:hover .sch-pill-del { display: block; }
/* 빈칸 필수 입력 안내 */
.sch-field-err { color: #dc2626; font-size: 12.5px; font-weight: 650; margin-top: 8px; }
/* 표시 설정 모달 */

.sch-viewcfg-btn { margin-left: auto; }
.sch-collab-btn { margin-left: 10px; }
/* 협업 요청 수행자 선택 */
.cb-members { max-height: 220px; overflow-y: auto; border: 1px solid var(--border); border-radius: 8px; padding: 8px 10px; margin-top: 6px; }
.cb-dept { font-size: 11.5px; font-weight: 700; color: var(--text-2); margin: 8px 0 3px; }
.cb-dept:first-child { margin-top: 0; }
.cb-dept-people { display: flex; flex-wrap: wrap; gap: 4px 12px; }
.cb-person { display: inline-flex; align-items: center; gap: 5px; font-size: 13px; cursor: pointer; padding: 2px 0; }
/* 대시보드 지표 클릭 진입 (B-3) */
.stat-tile.is-clickable { cursor: pointer; transition: background .12s ease; }
.stat-tile.is-clickable:hover { background: var(--surface-2); }
.sch-week-bg { display: grid; grid-template-columns: repeat(7, 1fr); }
/* 날짜 셀 높이 = 요일숫자 영역 + 레인 수만큼(--lanes). 막대가 커진 만큼 여유 있게 */
.sch-daycell { min-width: 0; min-height: calc(40px + var(--lanes, 3) * 27px); padding: 7px 8px; border-right: 1px solid var(--border); cursor: pointer; transition: background .12s ease; position: relative; }
.sch-daycell:last-child { border-right: none; }
.sch-daycell:hover { background: var(--surface-2); }
.sch-daycell.is-empty { background: var(--surface-2); cursor: default; opacity: .5; }
.sch-daycell.is-today { background: var(--primary-soft); }
.sch-daycell.is-selected { outline: 2px solid var(--primary); outline-offset: -2px; }
.sch-day-top { display: flex; align-items: center; gap: 6px; min-width: 0; height: 22px; overflow: hidden; }
.sch-daynum { font-size: 15px; font-weight: 800; color: var(--text); flex-shrink: 0; letter-spacing: -0.02em; }
.sch-daycell.is-today .sch-daynum { color: var(--primary); }
.sch-daycell.is-sun .sch-daynum { color: var(--urgent); }
.sch-daycell.is-sat .sch-daynum { color: #2563eb; }
.sch-hol-name { font-size: 11px; font-weight: 700; color: var(--urgent); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; flex-shrink: 1; }
.sch-cal-event { font-size: 11px; font-weight: 700; color: #2563eb; background: rgba(37, 99, 235, .1); border-radius: 5px; padding: 1px 6px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; flex-shrink: 1; z-index: 3; }
/* 날짜(이벤트) 모달 */
.cal-hol-badge { font-size: 11px; font-weight: 700; color: var(--urgent); background: var(--urgent-soft); padding: 2px 8px; border-radius: 999px; margin-left: 6px; vertical-align: middle; }
.cal-ev-list { display: flex; flex-direction: column; gap: 6px; margin: 8px 0 12px; }
.cal-ev-row { display: flex; align-items: center; gap: 8px; padding: 8px 10px; border: 1px solid var(--border); border-radius: var(--radius-sm); background: var(--surface); }
.cal-ev-label { flex: 1; min-width: 0; font-size: 13px; font-weight: 600; }
.cal-ev-add { display: flex; gap: 8px; }
.cal-ev-add .rec-input { flex: 1; }
.sch-more { position: absolute; bottom: 4px; left: 6px; font-size: 10.5px; font-weight: 700; color: var(--text-2); background: var(--surface-2); border: 1px solid var(--border); border-radius: 5px; padding: 1px 6px; cursor: pointer; z-index: 2; }
.sch-more:hover { background: var(--text); color: var(--bg); }
/* 막대 오버레이: 요일 숫자 아래부터, 레인은 고정 높이 행으로 쌓임. 클릭은 막대에만 */
.sch-week-bars { position: absolute; top: 34px; left: 0; right: 0; display: grid; grid-template-columns: repeat(7, 1fr); grid-auto-rows: 24px; gap: 3px 0; padding: 0 5px 6px; pointer-events: none; }
.sch-bar { pointer-events: auto; font-size: 12px; font-weight: 650; color: #fff; background: var(--primary); padding: 3px 9px; border-radius: 6px; cursor: pointer; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; line-height: 18px; letter-spacing: -0.01em; }
.sch-bar:hover { filter: brightness(1.08); }
.sch-bar.cont-l { border-top-left-radius: 0; border-bottom-left-radius: 0; }
.sch-bar.cont-r { border-top-right-radius: 0; border-bottom-right-radius: 0; }
.sch-bar.is-sel { box-shadow: 0 0 0 2px var(--surface), 0 0 0 4px var(--text); }
.sch-bar.done { opacity: .55; }  /* 완성: 담당자 색은 유지하고 흐리게 + 라벨에 ✓ */

.sch-add-hint { font-size: 11px; font-weight: 500; color: var(--text-3); margin-left: 8px; }
.sch-add-grid { display: grid; grid-template-columns: 1.4fr 1fr auto auto auto; gap: 8px; align-items: center; }
.sch-add-datelbl { display: flex; align-items: center; gap: 6px; font-size: 12px; color: var(--text-2); font-weight: 600; white-space: nowrap; }
.sch-add-datelbl input { width: 140px; }
.sch-memo-row { margin-top: 8px; }

.sch-detail-card { border-left: 3px solid var(--primary); }
.sch-detail-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-bottom: 14px; }
.sch-detail-title { font-size: 15px; font-weight: 700; }
.sch-detail-assignee { font-size: 12px; font-weight: 600; color: var(--primary); background: var(--primary-soft); padding: 2px 8px; border-radius: 999px; margin-left: 6px; }
.sch-detail-period { font-size: 12.5px; color: var(--text-2); margin-top: 5px; }
.sch-detail-memo { font-size: 12.5px; color: var(--text-3); margin-top: 5px; }
.sch-detail-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }
.sch-detail-steps-label { font-size: 12px; font-weight: 700; color: var(--text-3); margin-bottom: 8px; }
.sch-steps { display: grid; grid-template-columns: repeat(2, 1fr); gap: 7px; }
.sch-step { display: flex; align-items: center; gap: 9px; padding: 9px 11px; border: 1px solid var(--border); border-radius: var(--radius-sm); background: var(--surface); font-size: 13px; font-weight: 500; color: var(--text-2); text-align: left; }
.sch-step:hover { border-color: var(--primary); }
.sch-step.on { background: var(--success-soft); border-color: var(--success); color: var(--text); font-weight: 600; }
.sch-step-box { width: 20px; height: 20px; flex-shrink: 0; border-radius: 6px; border: 2px solid var(--text-3); display: flex; align-items: center; justify-content: center; color: #fff; font-size: 12px; font-weight: 700; }
.sch-step.on .sch-step-box { background: var(--success); border-color: var(--success); }
/* 공정 3단계: 진행 중(노랑) */
.sch-step.doing { background: rgba(245, 158, 11, .13); border-color: #f59e0b; color: var(--text); font-weight: 600; }
.sch-step.doing .sch-step-box { background: #f59e0b; border-color: #f59e0b; font-size: 8px; }
/* 메모·진행률 강조 (굵게 + 파란색) */
.sch-hl { color: #2563eb; font-weight: 800; }
/* 다가오는 일정 정렬 토글 */
.sch-up-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.sch-up-sort { display: flex; gap: 4px; }
.sch-sort-btn { font-size: 11.5px; font-weight: 600; border: 1px solid var(--border); background: var(--surface); color: var(--text-2); padding: 4px 10px; border-radius: 999px; cursor: pointer; }
.sch-sort-btn:hover { background: var(--surface-2); }
.sch-sort-btn.is-active { background: var(--primary); color: #fff; border-color: var(--primary); }
/* 최종완성 버튼 */
.sch-final { display: flex; align-items: center; gap: 9px; width: 100%; margin-top: 12px; padding: 11px 13px; border: 1.5px dashed var(--border); border-radius: var(--radius-sm); background: var(--surface-2); font-size: 13.5px; font-weight: 700; color: var(--text-2); }
.sch-final:hover { border-color: var(--success); color: var(--text); }
.sch-final.on { background: var(--success-soft); border-style: solid; border-color: var(--success); color: var(--success); }
.sch-final.on .sch-step-box { background: var(--success); border-color: var(--success); }
.sch-done-tag { color: var(--success); font-weight: 700; }

/* 완성 통계 */
.sch-stat-row { display: flex; align-items: center; gap: 10px; padding: 5px 0; }
.sch-stat-ym { font-size: 12.5px; font-weight: 600; color: var(--text-2); width: 66px; flex-shrink: 0; }
.sch-stat-bar { flex: 1; height: 8px; background: var(--surface-2); border-radius: 999px; overflow: hidden; }
.sch-stat-fill { display: block; height: 100%; background: var(--primary); border-radius: 999px; }
.sch-stat-cnt { font-size: 12.5px; font-weight: 700; color: var(--text); width: 40px; text-align: right; flex-shrink: 0; }
.sch-stat-summary { margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--border); font-size: 13px; color: var(--text-2); }
.sch-stat-summary strong { color: var(--primary); font-size: 15px; }
.sch-stat-work { flex: 1.4; min-width: 0; font-size: 13px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* 인원별 통계 */
.sch-statpart-tabs { display: flex; gap: 4px; flex-wrap: wrap; }
.sch-statpart-btn { border: 1px solid var(--border); background: var(--surface); color: var(--text-2); font-size: 12px; font-weight: 700; padding: 4px 11px; border-radius: 999px; cursor: pointer; }
.sch-statpart-btn.is-active { background: var(--primary); color: #fff; border-color: var(--primary); }
.sch-pstat-list { display: flex; flex-direction: column; gap: 12px; margin-top: 4px; }
.sch-pstat-row { border-bottom: 1px solid var(--border); padding-bottom: 10px; }
.sch-pstat-row:last-child { border-bottom: none; padding-bottom: 0; }
.sch-pstat-head { display: flex; align-items: center; gap: 10px; }
.sch-pstat-name { font-size: 13.5px; font-weight: 800; flex-shrink: 0; }
.sch-pstat-namepart { font-size: 11px; font-weight: 700; color: var(--primary); background: var(--primary-soft); border-radius: 6px; padding: 2px 8px; flex-shrink: 0; white-space: nowrap; }
.sch-pstat-bar { flex: 1; height: 8px; background: var(--surface-2); border-radius: 999px; overflow: hidden; min-width: 40px; }
.sch-pstat-fill { display: block; height: 100%; background: var(--primary); border-radius: 999px; }
.sch-pstat-head .sch-stat-cnt { width: auto; min-width: 96px; }
.sch-pstat-works { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 7px; padding-left: 2px; }
.sch-pstat-work { font-size: 11.5px; font-weight: 600; color: var(--text-2); background: var(--surface-2); border: 1px solid var(--border); border-radius: 7px; padding: 3px 8px; }
.sch-stat-pd { font-size: 11px; font-weight: 700; color: var(--primary); background: var(--primary-soft); padding: 1px 8px; border-radius: 999px; margin-left: 6px; }

.sch-up-list { display: flex; flex-direction: column; }
.sch-up-row { display: flex; align-items: center; gap: 12px; padding: 9px 2px; border-top: 1px solid var(--border); cursor: pointer; }
.sch-up-row:first-child { border-top: none; }
.sch-up-row:hover { background: var(--surface-2); }
.sch-up-date { font-size: 12px; font-weight: 700; color: var(--text-2); width: 96px; flex-shrink: 0; white-space: nowrap; }
.sch-up-late { flex-shrink: 0; white-space: nowrap; font-size: 11px; font-weight: 800; color: var(--urgent); background: var(--urgent-soft); padding: 1px 7px; border-radius: 999px; }
.sch-up-title { flex: 1; min-width: 0; font-size: 13.5px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sch-up-prog { font-size: 12px; font-weight: 700; color: var(--primary); flex-shrink: 0; }
/* 마감 지남 + 미완성: 굵은 빨강으로 계속 노출 */
.sch-up-overdue .sch-up-title, .sch-up-overdue .sch-up-date { color: var(--urgent); font-weight: 800; }

.sch-edit-modal { max-width: 400px; }
.sch-edit-modal .modal-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 14px; }
.sch-edit-modal .modal-head h3 { font-size: 15px; font-weight: 700; }
.sch-edit-modal .modal-x { border: none; background: none; color: var(--text-3); font-size: 15px; cursor: pointer; }
.sch-edit-modal .modal-actions { display: flex; align-items: center; justify-content: space-between; margin-top: 18px; }
.sch-m-dates { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 10px; }
.sch-daylist { display: flex; flex-direction: column; gap: 4px; max-height: 60vh; overflow-y: auto; }
.sch-daylist-row { display: flex; align-items: center; gap: 9px; padding: 9px 10px; border: 1px solid var(--border); border-radius: var(--radius-sm); background: var(--surface); text-align: left; }
.sch-daylist-row:hover { border-color: var(--primary); background: var(--surface-2); }
.sch-daylist-title { flex: 1; min-width: 0; font-size: 13px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ── 아트리 작품중심 UI ── */
.sch-top { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.sch-top-right { display: flex; align-items: center; gap: 10px; }
.sch-count-lbl { font-size: 12px; color: var(--text-2); font-weight: 600; display: flex; align-items: center; gap: 6px; }
.sch-count-sel { width: auto; padding: 6px 8px; font-size: 12.5px; }
.sch-add-grid2 { display: grid; grid-template-columns: 1.3fr 92px auto auto auto; gap: 8px; align-items: center; }
.sch-ep-input { width: 100%; }
.sch-up-pd { font-size: 11px; font-weight: 700; color: var(--primary); background: var(--primary-soft); padding: 1px 7px; border-radius: 999px; margin-left: 4px; }
.sch-work-swatch, .sch-detail-title .sch-work-swatch { display: inline-block; width: 12px; height: 12px; border-radius: 4px; margin-right: 7px; vertical-align: middle; }
.sch-detail-people { font-size: 12.5px; color: var(--text-2); margin-top: 5px; }

/* 작품 등록 모달 */
.sch-work-modal { max-width: 480px; }
.sch-work-modal .modal-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 6px; }
.sch-work-modal .modal-head h3 { font-size: 15px; font-weight: 700; }
.sch-work-modal .modal-x { border: none; background: none; color: var(--text-3); font-size: 15px; cursor: pointer; }
.sch-work-modal .modal-actions { display: flex; align-items: center; justify-content: space-between; margin-top: 18px; }
.sch-swatches { display: flex; flex-wrap: wrap; gap: 7px; align-items: center; }
.sch-swatch { width: 26px; height: 26px; border-radius: 7px; border: 2px solid transparent; cursor: pointer; }
.sch-swatch.on { border-color: var(--text); box-shadow: 0 0 0 2px var(--surface), 0 0 0 3px var(--text); }
.sch-swatch-custom { display: inline-flex; align-items: center; gap: 6px; height: 26px; padding: 0 10px 0 6px; border: 1px solid var(--border); border-radius: 999px; cursor: pointer; font-size: 11.5px; font-weight: 600; color: var(--text-2); background: var(--surface); }
.sch-swatch-custom:hover { background: var(--surface-2); }
.sch-swatch-custom.on { border-color: var(--text); color: var(--text); }
.sch-swatch-custom input[type="color"] { width: 20px; height: 20px; padding: 0; border: none; background: none; cursor: pointer; }
.sch-swatch-custom input[type="color"]::-webkit-color-swatch-wrapper { padding: 0; }
.sch-swatch-custom input[type="color"]::-webkit-color-swatch { border: 1px solid var(--border); border-radius: 5px; }
/* 작품 편집 하단 액션: 삭제·완결(왼쪽) / 저장(오른쪽, 크게) */
.sch-work-actions { align-items: center; }
.sch-work-actions-left { display: flex; align-items: center; gap: 8px; }
.sch-complete-btn { border: 1px solid var(--success); background: var(--surface); color: var(--success); font-size: 12.5px; font-weight: 700; padding: 6px 14px; border-radius: 999px; cursor: pointer; }
.sch-complete-btn:hover { background: var(--success-soft, rgba(34,197,94,.12)); }
.sch-complete-btn.on { background: var(--success); color: #fff; }
.process-btn.sch-save-lg { width: auto; font-size: 15px; font-weight: 800; padding: 13px 40px; border-radius: var(--radius-sm); }
.sch-detail-foot { display: flex; justify-content: flex-end; margin-top: 12px; }
.sch-daylist-row.is-completed { opacity: .6; }
.sch-people-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 10px; margin-top: 12px; }
.sch-people-grid.sch-people-1 { grid-template-columns: 1fr 1fr; }

/* ===== 회의실 예약 ===== */
.rr-topbar { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 14px; flex-wrap: wrap; }
#rrAdd { padding: 9px 18px; font-size: 13.5px; white-space: nowrap; border-radius: 10px; }
.rr-datenav { display: flex; align-items: center; gap: 8px; }
.rr-datelabel { font-size: 15.5px; font-weight: 800; letter-spacing: -0.02em; min-width: 116px; text-align: center; }
.rr-dow { color: var(--text-2); font-weight: 700; }
/* 뷰 토글 (일/주/월) */
.rr-vtabs { display: inline-flex; background: var(--surface-2); border: 1px solid var(--border); border-radius: 9px; padding: 2px; gap: 2px; }
.rr-vtab { border: none; background: transparent; color: var(--text-2); font-weight: 700; font-size: 12.5px; padding: 5px 14px; border-radius: 7px; cursor: pointer; }
.rr-vtab.is-active { background: var(--surface); color: var(--text); box-shadow: 0 1px 2px rgba(0,0,0,.12); }
/* 회의실 색 (에이템포=indigo, 아트리=amber) */
.rr-resv.r0, .rr-mchip.r0, .rr-dotk.r0 { --rc: #6366f1; }
.rr-resv.r1, .rr-mchip.r1, .rr-dotk.r1 { --rc: #d97706; }
.rr-dotk { display: inline-block; width: 11px; height: 11px; border-radius: 3px; background: var(--rc, #6366f1); flex-shrink: 0; margin: 0 2px 0 8px; }

/* 일 뷰 타임라인 (컴팩트) */
.rr-card { padding: 0; overflow: hidden; }
.rr-head { display: grid; grid-template-columns: 52px 1fr 1fr; border-bottom: 1px solid var(--border); }
.rr-corner { border-right: 1px solid var(--border); }
.rr-roomhead { text-align: center; font-weight: 800; font-size: 12.5px; padding: 9px 8px; border-right: 1px solid var(--border); letter-spacing: -0.01em; }
.rr-roomhead:last-child { border-right: none; }
.rr-grid { --rr-row: 42px; display: grid; position: relative; }
.rr-grid.rr-compact { --rr-row: 30px; }
.rr-time { font-size: 10.5px; font-weight: 600; color: var(--text-2); text-align: right; padding: 3px 7px 0 0; grid-column: 1; }
.rr-time.rr-hour { font-weight: 800; color: var(--text); }
.rr-slot { border-top: 1px solid var(--border); border-right: 1px solid var(--border); cursor: pointer; transition: background .12s; }
.rr-slot:hover { background: color-mix(in srgb, var(--primary) 12%, transparent); }
.rr-resv { margin: 1px 3px; border-radius: 7px; padding: 3px 7px; overflow: hidden; cursor: pointer; z-index: 2; background: var(--rc, #6366f1); color: #fff; display: flex; flex-direction: column; gap: 1px; box-shadow: 0 1px 3px rgba(0,0,0,.18); min-height: 0; }
.rr-resv.mine { box-shadow: 0 1px 3px rgba(0,0,0,.18), inset 0 0 0 2px rgba(255,255,255,.9); }
.rr-resv-t { font-size: 11.5px; font-weight: 800; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rr-resv-m { font-size: 10px; font-weight: 600; opacity: .92; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rr-legend { font-size: 11.5px; color: var(--text-2); padding: 9px 12px; border-top: 1px solid var(--border); display: flex; align-items: center; gap: 4px; flex-wrap: wrap; }
.rr-legend-mine { display: inline-block; width: 12px; height: 12px; border-radius: 3px; background: #6366f1; box-shadow: inset 0 0 0 2px rgba(255,255,255,.9); }

/* 월 뷰: 달력 */
.rr-mcard { padding: 0; overflow: hidden; }
.rr-mdow { display: grid; grid-template-columns: repeat(7, 1fr); border-bottom: 1px solid var(--border); }
.rr-mdow > span { text-align: center; font-size: 13px; font-weight: 700; color: var(--text-2); padding: 10px 0; }
.rr-mdow .dow-sun { color: var(--urgent); }
.rr-mdow .dow-sat { color: #2563eb; }
.rr-month { display: grid; grid-template-columns: repeat(7, 1fr); }
.rr-mcell { border-right: 1px solid var(--border); border-top: 1px solid var(--border); min-height: 118px; padding: 7px 8px; cursor: pointer; overflow: hidden; }
.rr-mcell:nth-child(7n) { border-right: none; }
.rr-mcell.is-empty { background: var(--surface-2); cursor: default; }
.rr-mcell:not(.is-empty):hover { background: color-mix(in srgb, var(--primary) 7%, transparent); }
.rr-mcell.is-today { background: color-mix(in srgb, var(--primary) 10%, transparent); }
.rr-mdn { font-size: 14.5px; font-weight: 800; color: var(--text); }
.rr-mcell.sun .rr-mdn { color: var(--urgent); }
.rr-mcell.sat .rr-mdn { color: #2563eb; }
.rr-mchips { display: flex; flex-direction: column; gap: 3px; margin-top: 5px; }
.rr-mchip { font-size: 12px; font-weight: 700; color: #fff; background: var(--rc, #6366f1); border-radius: 5px; padding: 3px 7px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rr-mmore { font-size: 12px; font-weight: 700; color: var(--text-3); padding-left: 3px; }

/* 대시보드 회의실 예약 카드 */
.rr-dash-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.rr-dash-rooms { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 8px; }
.rr-dash-room { min-width: 0; }
.rr-dash-roomhead { display: flex; align-items: center; gap: 6px; font-size: 12.5px; font-weight: 800; margin-bottom: 7px; }
.rr-dash-list { display: flex; flex-direction: column; gap: 5px; }
.rr-dash-item { display: flex; gap: 8px; align-items: baseline; text-align: left; border: 1px solid var(--border); background: var(--surface-2); border-radius: 7px; padding: 6px 9px; cursor: pointer; min-width: 0; }
.rr-dash-item:hover { border-color: var(--primary); }
.rr-dash-time { font-size: 11px; font-weight: 700; color: var(--text-2); white-space: nowrap; flex-shrink: 0; }
.rr-dash-t { font-size: 12.5px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rr-dash-empty { font-size: 12px; color: var(--text-3); padding: 6px 2px; }
.rr-dash-more { margin-top: 12px; width: 100%; border: none; background: var(--surface-2); color: var(--text-2); font-weight: 700; font-size: 12.5px; padding: 8px; border-radius: 8px; cursor: pointer; }
.rr-dash-more:hover { background: var(--primary-soft); color: var(--primary); }
@media (max-width: 720px) { .rr-dash-rooms { grid-template-columns: 1fr; } }

/* 편집 대기 모달 + 편집대기 행 클릭 */
.ew-list { display: flex; flex-direction: column; gap: 8px; margin-top: 6px; }
.ew-row { display: flex; align-items: center; gap: 10px; padding: 9px 11px; border: 1px solid var(--border); border-radius: 9px; }
.ew-ep { font-weight: 800; font-size: 14px; min-width: 58px; }
.ew-meta { font-size: 11.5px; color: var(--text-2); flex: 1; }
.sch-up-row.is-clickable { cursor: pointer; border-radius: 6px; }
.sch-up-row.is-clickable:hover { background: var(--surface-2); }
.rr-detail { display: flex; flex-direction: column; gap: 10px; margin: 6px 0 4px; }
.rr-detail-row { display: flex; gap: 12px; font-size: 14px; }
.rr-detail-k { color: var(--text-2); font-weight: 700; min-width: 56px; flex-shrink: 0; }
/* 출판 캘린더: 작품 출간(예정)일 마커 (날짜칸 상단, 이벤트 배지와 같은 줄) */
.sch-pub-mark { font-size: 11px; font-weight: 700; color: #b45309; background: rgba(217, 119, 6, .13); border-radius: 5px; padding: 1px 6px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; flex-shrink: 1; z-index: 3; }
.sch-parts { display: flex; flex-wrap: wrap; gap: 8px 14px; margin-top: 6px; }
.sch-part-check { display: flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 600; color: var(--text-2); cursor: pointer; }
.sch-part-check input { accent-color: var(--primary); width: 16px; height: 16px; }
.sch-plat-tag { font-size: 11px; font-weight: 700; color: #0d9488; background: rgba(13, 148, 136, .12); padding: 1px 7px; border-radius: 999px; margin-left: 4px; }

/* ================= 업무보고 ================= */
/* 날짜 컨트롤 영역 고정(260917) — 스크롤을 내려도 날짜를 바꿀 수 있게. topbar(sticky top:0, z20) 바로 아래 붙는다 */
.wr-top {
  display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap;
  position: sticky; top: 64px; z-index: 15;
  background: var(--bg); padding: 10px 0; margin-bottom: 10px;
  border-bottom: 1px solid var(--border);
}
.wr-filters { display: flex; gap: 6px; flex-wrap: wrap; }
.wr-filter { font-size: 12.5px; font-weight: 600; border: 1px solid var(--border); background: var(--surface); color: var(--text-2); padding: 6px 12px; border-radius: 999px; cursor: pointer; }
.wr-filter:hover { background: var(--surface-2); }
.wr-filter.is-active { background: var(--primary); color: #fff; border-color: var(--primary); }
.wr-filter-n { font-size: 11px; opacity: .8; margin-left: 2px; }
.wr-top-right { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.wr-datenav { display: flex; align-items: center; gap: 6px; }
.wr-dateinput { width: 128px; text-align: center; font-weight: 700; cursor: pointer; padding: 6px 8px; }
.wr-dow { font-size: 12px; font-weight: 600; color: var(--text-3); }
.wr-hint { font-size: 12px; color: var(--text-3); margin-bottom: 12px; }
/* 테이블 기본 넓이 65~70% 고정 + 가운데 정렬(요청). 스크롤 영역 없음. */
.wr-wrap { width: 68%; margin: 0 auto; }
@media (max-width: 1100px) { .wr-wrap { width: 100%; } }
/* 본문(목록) + 작품 바로가기 인덱스 */
.wr-main { display: flex; gap: 16px; align-items: flex-start; }
.wr-list { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 12px; }
/* 스크롤과 무관하게 화면에 고정(요청). 뷰포트 우측에 떠 있고, 목록 길면 박스 안에서 스크롤 */
.wr-index { position: fixed; top: 88px; right: 24px; width: 156px; max-height: calc(100vh - 108px); overflow-y: auto; border: 1px solid var(--border); border-radius: 10px; background: var(--surface); box-shadow: var(--shadow-md); padding: 8px; display: flex; flex-direction: column; gap: 2px; z-index: 40; }
.wr-index-title { font-size: 11px; font-weight: 700; color: var(--text-3); padding: 4px 8px 6px; }
.wr-idx-item { display: flex; align-items: center; gap: 7px; padding: 6px 8px; border: none; background: none; border-radius: 7px; cursor: pointer; text-align: left; width: 100%; }
.wr-idx-item:hover { background: var(--surface-2); }
.wr-idx-dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }
.wr-idx-name { font-size: 12px; font-weight: 600; color: var(--text-2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
@media (max-width: 1200px) { .wr-index { display: none; } }
.wr-work { border: 1px solid var(--border); border-radius: var(--radius-md); background: var(--surface); overflow: hidden; }
.wr-work-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 12px 14px; background: var(--surface-2); border-bottom: 1px solid var(--border); }
.wr-dot { width: 11px; height: 11px; border-radius: 50%; flex-shrink: 0; }
.wr-title { font-size: 14px; font-weight: 700; color: var(--text); }
.wr-status { font-size: 11px; font-weight: 700; padding: 2px 8px; border-radius: 999px; }
.wr-status-연재중 { color: var(--success); background: var(--success-soft); }
.wr-status-준비중 { color: #d97706; background: rgba(217, 119, 6, .12); }
.wr-status-완결 { color: var(--text-3); background: var(--surface); border: 1px solid var(--border); }
.wr-people { font-size: 12px; font-weight: 600; color: var(--text-3); }
.wr-edit { margin-left: auto; }
.wr-input { font-size: 13px; padding: 7px 10px; }
/* 본문 2단: 왼쪽(월간목표+파트) / 오른쪽(비고 세로 textarea) */
.wr-cols { display: flex; gap: 14px; align-items: stretch; padding: 12px 14px; }
.wr-col-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 10px; }
.wr-col-side { width: 30%; min-width: 170px; display: flex; }
.wr-goal-field { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.wr-note-field { flex: 1; display: flex; flex-direction: column; gap: 4px; }
.wr-goal-field span, .wr-note-field span { font-size: 11.5px; font-weight: 700; color: var(--text-2); }
.wr-note { flex: 1; resize: vertical; min-height: 120px; line-height: 1.5; }
/* 입력 내용 굵은 파란색 표시(요청) */
.wr-blue { color: #2563eb; font-weight: 700; }
.wr-blue::placeholder { color: var(--text-3); font-weight: 400; }
.wr-daily-tag { font-size: 10px; font-weight: 700; color: #7c3aed; background: rgba(124, 58, 237, .1); padding: 1px 6px; border-radius: 999px; }
.wr-parts-label { display: flex; align-items: center; gap: 6px; font-size: 11.5px; font-weight: 700; color: var(--text-2); margin-top: 2px; }
.wr-carried-tag { font-size: 10px; font-weight: 700; color: #d97706; background: rgba(217, 119, 6, .12); padding: 1px 6px; border-radius: 999px; }
/* 전날 이월된(아직 오늘 저장 전) 진행업무 입력칸 — 살짝 흐리게 구분 */
/* 진행 업무: 기본(이월·변화없음) 회색 → 오늘 갱신된 행만 진한 검정 */
.wr-partwork { color: var(--text-3); }
.wr-partwork.wr-updated { color: var(--text); font-weight: 600; }
.wr-partwork:focus { color: var(--text); }
.wr-updated-legend { color: var(--text); font-weight: 700; }
/* 파트별: 파트명 | 담당자 | 진행 업무 */
.wr-parts { display: flex; flex-direction: column; gap: 7px; }
.wr-part-row { display: flex; align-items: center; gap: 10px; }
.wr-part-name { font-size: 12.5px; font-weight: 700; color: var(--text-2); width: 52px; flex-shrink: 0; }
.wr-assignee { width: 120px; flex-shrink: 0; }
.wr-partwork { flex: 1; min-width: 0; }
.wr-part-empty { font-size: 12.5px; color: var(--text-3); padding: 6px 0; }
@media (max-width: 720px) {
  .wr-cols { flex-direction: column; }
  .wr-col-side { width: 100%; }
  .wr-note { min-height: 90px; }
  .wr-part-row { flex-wrap: wrap; }
  .wr-assignee { width: 100%; }
}

/* ================= 출간 캘린더 (로맨스·판타지·퍼블리싱 공동) ================= */
.pub-type-filter { display: inline-flex; gap: 2px; background: var(--surface-2); border: 1px solid var(--border); border-radius: 999px; padding: 2px; }
.pub-type-btn { font-size: 12px; font-weight: 600; color: var(--text-2); background: none; border: none; padding: 5px 12px; border-radius: 999px; cursor: pointer; }
.pub-type-btn.is-active { background: var(--surface); color: var(--text); box-shadow: var(--shadow-sm, 0 1px 3px rgba(0,0,0,.1)); }
.pub-grid { display: grid; grid-template-columns: repeat(7, 1fr); border-top: 1px solid var(--border); border-left: 1px solid var(--border); }
.pub-daycell { min-height: 108px; border-right: 1px solid var(--border); border-bottom: 1px solid var(--border); padding: 6px 7px; cursor: pointer; transition: background .12s ease; display: flex; flex-direction: column; gap: 4px; overflow: hidden; }
.pub-daycell:hover { background: var(--surface-2); }
.pub-daycell.is-empty { background: var(--surface-2); cursor: default; opacity: .5; }
.pub-daycell.is-today { background: var(--primary-soft); }
.pub-daycell.is-sun .sch-daynum { color: var(--urgent); }
.pub-daycell.is-sat .sch-daynum { color: #2563eb; }
.pub-day-items { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.pub-pill { font-size: 11px; font-weight: 600; line-height: 1.35; padding: 2px 7px; border-radius: 6px; border-left: 3px solid var(--dept, #888); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pub-pill.pub-t-출간 { background: rgba(79, 70, 229, .1); color: #3730a3; }
.pub-pill.pub-t-이벤트 { background: rgba(217, 119, 6, .12); color: #b45309; }
.pub-more { font-size: 10.5px; font-weight: 700; color: var(--text-3); padding: 0 4px; }
/* 날짜 항목 모달 */
.pub-day-list { display: flex; flex-direction: column; gap: 6px; max-height: 52vh; overflow-y: auto; margin-top: 6px; }
.pub-day-row { display: flex; align-items: center; gap: 8px; padding: 9px 10px; border: 1px solid var(--border); border-radius: var(--radius-sm); background: var(--surface); text-align: left; cursor: pointer; }
.pub-day-row:hover { border-color: var(--primary); background: var(--surface-2); }
.pub-dot { width: 9px; height: 9px; border-radius: 50%; flex-shrink: 0; }
.pub-day-type { font-size: 10.5px; font-weight: 700; padding: 1px 7px; border-radius: 999px; flex-shrink: 0; }
.pub-day-type.pub-t-출간 { background: rgba(79, 70, 229, .12); color: #3730a3; }
.pub-day-type.pub-t-이벤트 { background: rgba(217, 119, 6, .14); color: #b45309; }
.pub-day-label { flex: 1; min-width: 0; font-size: 13px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pub-day-dept { font-size: 11px; font-weight: 700; color: var(--text-3); flex-shrink: 0; }
.pub-type-toggle { display: flex; gap: 8px; }
.pub-radio { display: flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 600; border: 1px solid var(--border); border-radius: 8px; padding: 8px 14px; cursor: pointer; flex: 1; justify-content: center; }
.pub-radio input { accent-color: var(--primary); }
@media (max-width: 720px) { .pub-daycell { min-height: 78px; } .pub-pill { font-size: 10px; } }

/* ================= 업무일지 (에이템포 팀별) ================= */
.jr-count { font-size: 10px; font-weight: 700; opacity: .7; margin-left: 2px; }




.jr-name { font-size: 13.5px; font-weight: 700; color: var(--text); }
.jr-pos { font-size: 11px; font-weight: 600; color: var(--text-3); }
.jr-me { font-size: 10px; font-weight: 800; color: #fff; background: var(--primary); padding: 1px 6px; border-radius: 999px; }


.jr-viewtabs { margin-right: 4px; }
.jr-navlabel { font-size: 13px; font-weight: 700; color: var(--text); min-width: 108px; text-align: center; }
.jr-empty { font-size: 12.5px; color: var(--text-3); }
/* 주/월 = 엑셀식 표(날짜 행 × 팀원 열). 머리행·날짜열 고정, 셀 3줄 요약 */
















.jc-read { white-space: normal; line-height: 1.6; font-size: 13.5px; max-height: 56vh; overflow-y: auto; color: var(--text); }


/* ================= 알림 (벨 + 패널) ================= */
.alert-bell { position: relative; }
.alert-badge { position: absolute; top: -3px; right: -3px; min-width: 16px; height: 16px; padding: 0 4px; border-radius: 999px; background: var(--urgent); color: #fff; font-size: 10px; font-weight: 800; display: flex; align-items: center; justify-content: center; box-sizing: border-box; }
.alert-panel { position: absolute; z-index: 200; width: 320px; max-width: calc(100vw - 24px); max-height: 60vh; overflow-y: auto; background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-md); box-shadow: var(--shadow-md); animation: modalIn .12s ease; }
.alert-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 12px 14px; border-bottom: 1px solid var(--border); position: sticky; top: 0; background: var(--surface); }
.alert-head-title { font-weight: 700; font-size: 14px; }
.alert-perm-on { font-size: 11px; color: var(--success); font-weight: 700; }
.alert-list { padding: 6px; }
.alert-sec-title { font-size: 11px; font-weight: 700; color: var(--text-3); padding: 8px 8px 4px; }
.alert-sec-title span { color: var(--primary); }
.alert-item { display: flex; align-items: center; gap: 9px; width: 100%; text-align: left; padding: 9px 8px; border: none; background: none; border-radius: 8px; cursor: pointer; }
.alert-item:hover { background: var(--surface-2); }
.alert-dot { width: 9px; height: 9px; border-radius: 50%; flex-shrink: 0; }
.alert-item-main { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.alert-item-title { font-size: 13px; font-weight: 600; color: var(--text); }
.alert-item-sub { font-size: 11.5px; color: var(--text-3); }
.alert-empty { padding: 26px; text-align: center; color: var(--text-3); font-size: 13px; }
.sch-chosen-list { display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0 10px; min-height: 20px; }
.sch-chosen { display: inline-flex; align-items: center; gap: 6px; font-size: 12.5px; font-weight: 600; background: var(--primary-soft); color: var(--primary); padding: 4px 6px 4px 8px; border-radius: 7px; }
.sch-chosen-n { width: 16px; height: 16px; border-radius: 50%; background: var(--primary); color: #fff; font-size: 10px; font-weight: 700; display: flex; align-items: center; justify-content: center; }
.sch-chosen-x { border: none; background: none; color: var(--primary); cursor: pointer; font-size: 11px; padding: 0 2px; }
.sch-chosen-empty { font-size: 12.5px; color: var(--text-3); }
.sch-cand-list { display: flex; flex-wrap: wrap; gap: 6px; }
.sch-cand { font-size: 12.5px; font-weight: 600; border: 1px solid var(--border); background: var(--surface); color: var(--text-2); padding: 6px 12px; border-radius: 999px; cursor: pointer; }
.sch-cand:hover { background: var(--surface-2); }
.sch-cand.on { background: var(--primary); color: #fff; border-color: var(--primary); }
.sch-cand-add { display: flex; gap: 8px; margin-top: 10px; }
.sch-cand-add .rec-input { flex: 1; }

@media (max-width: 720px) {
  .sch-add-grid { grid-template-columns: 1fr; }
  .sch-add-datelbl input { width: 100%; }
  .sch-steps { grid-template-columns: 1fr; }
  .sch-daycell { min-height: 72px; }
}

/* ================= 커스텀 날짜 선택기 ================= */
.dp-input { cursor: pointer; background: var(--surface); }
.dp-input:hover { border-color: var(--primary); }
.dp-pop { position: absolute; z-index: 500; width: 250px; background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-md); box-shadow: var(--shadow-md); padding: 12px; }
.dp-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.dp-label { font-size: 13.5px; font-weight: 700; }
.dp-nav { width: 26px; height: 26px; border: 1px solid var(--border); background: var(--surface); border-radius: 7px; color: var(--text-2); font-size: 14px; }
.dp-nav:hover { background: var(--surface-2); color: var(--text); }
.dp-dow { display: grid; grid-template-columns: repeat(7, 1fr); text-align: center; font-size: 10.5px; color: var(--text-3); font-weight: 700; margin-bottom: 3px; }
.dp-dow .dow-sun { color: var(--urgent); }
.dp-dow .dow-sat { color: #2563eb; }
.dp-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; }
.dp-cell { height: 30px; border: none; background: none; border-radius: 7px; font-size: 12.5px; color: var(--text); font-weight: 500; }
.dp-cell.dp-empty { background: none; }
.dp-cell:not(.dp-empty):hover { background: var(--surface-2); }
.dp-cell.today { color: var(--primary); font-weight: 700; }
.dp-cell.sel { background: var(--primary); color: #fff; font-weight: 700; }
.dp-foot { margin-top: 8px; text-align: right; }
.dp-today { border: none; background: none; color: var(--primary); font-size: 12.5px; font-weight: 700; }

/* ================= 토스트 ================= */
.toast-container { position: fixed; bottom: 24px; left: 50%; transform: translateX(-50%); display: flex; flex-direction: column; gap: 8px; z-index: 200; align-items: center; }
.toast { background: var(--text); color: var(--bg); font-size: 13.5px; font-weight: 600; padding: 11px 20px; border-radius: 999px; box-shadow: var(--shadow-md); opacity: 0; transform: translateY(10px); transition: opacity .2s ease, transform .2s ease; max-width: 90vw; text-align: center; }
.toast.show { opacity: 1; transform: none; }

/* ================= 스크롤바 ================= */
::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-thumb { background: var(--border); border-radius: 999px; }
::-webkit-scrollbar-track { background: transparent; }

/* ================= 반응형 ================= */
@media (max-width: 1200px) { .scouting-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 880px) {
  .news-grid { grid-template-columns: 1fr; }
  .scouting-grid { grid-template-columns: 1fr; }
  .stat-row { grid-template-columns: 1fr; }
}
@media (max-width: 720px) {
  .sidebar { width: 68px; padding: 16px 8px; }
  .brand-name, .nav-label, .user-info, .company-switch { display: none; }
  /* 68px 아이콘 모드에는 하위 메뉴가 들어갈 자리가 없다 (사업부 전환은 넓은 화면에서). */
  .nav-sub { display: none; }
  .brand { justify-content: center; padding-bottom: 20px; }
  .nav-item { justify-content: center; padding: 12px 0; }
  .user-chip { justify-content: center; }
  .topbar { padding: 16px; }
  .content { padding: 18px 16px 50px; }
  .rec-form, .rec-form-2 { grid-template-columns: 1fr; }
}

/* ==================================================================   [회의·미팅 통합 2026-10] 좌우 배치 · 내부/외부 선택 · 메뉴 묶음
   ========================================================================= */
/* 메뉴 묶음: 공용 / 팀별 / 관리자 */
.nav-group { display: flex; flex-direction: column; gap: 2px; }
.nav-group + .nav-group { margin-top: 12px; }
.nav-group.hidden { display: none; }
.nav-group-label { font-size: 11px; font-weight: 700; letter-spacing: .06em; color: var(--text-3); padding: 4px 12px 4px; }

/* 좌우 배치: 왼쪽 새 기록 · 오른쪽 예정된 회의 + 지난 기록. 좁으면 위아래로 */
.mm-grid { display: grid; grid-template-columns: minmax(0, 1.45fr) minmax(320px, 1fr); gap: 16px; align-items: start; }
.mm-side { display: flex; flex-direction: column; gap: 16px; min-width: 0; }
@media (max-width: 1100px) { .mm-grid { grid-template-columns: 1fr; } }
.mm-form { display: flex; flex-direction: column; gap: 12px; min-width: 0; }
.mm-form .card-title { margin-bottom: 0; }
.mm-form .rec-field-full { margin: 0; }
.mm-form .rec-mode-row { margin: 2px 0 0; }
.mm-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.mm-3 { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 10px; }
@media (max-width: 620px) { .mm-2, .mm-3 { grid-template-columns: 1fr; } }
.mm-form .manual-field .rec-textarea { width: 100%; }

/* 내부 회의 / 외부 미팅 선택 */
.mm-kinds { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.mm-kind { text-align: left; border: 1.5px solid var(--border); background: var(--surface-2); border-radius: var(--radius-sm); padding: 10px 12px; display: flex; flex-direction: column; gap: 2px; cursor: pointer; font-family: inherit; color: var(--text); transition: border-color .15s ease, background .15s ease; }
.mm-kind b { font-size: 13.5px; font-weight: 700; }
.mm-kind span { font-size: 11.5px; color: var(--text-3); }
.mm-kind:hover { border-color: var(--primary); }
.mm-kind.int.is-on { border-color: var(--primary); background: var(--primary-soft); }
.mm-kind.int.is-on b { color: var(--primary); }
.mm-kind.ext.is-on { border-color: #0d9488; background: rgba(13, 148, 136, .09); }
.mm-kind.ext.is-on b { color: #0d9488; }
body.dark .mm-kind.ext.is-on b { color: #2dd4bf; }
.rec-input.mm-invalid { border-color: var(--urgent); background: var(--urgent-soft); }

/* 오른쪽 카드 */
.mm-card-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 10px; }
.mm-card-head .card-title { margin-bottom: 0; }
.mm-up-list { display: flex; flex-direction: column; }
.mm-up-row { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; column-gap: 10px; row-gap: 1px; align-items: center; padding: 9px 0; border-top: 1px solid var(--border); }
.mm-up-row:first-child { border-top: none; }
.mm-up-date { font-size: 12px; font-weight: 700; color: var(--text-2); white-space: nowrap; font-variant-numeric: tabular-nums; }
.mm-up-title { font-size: 13px; font-weight: 700; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mm-up-sub { grid-column: 2; font-size: 11.5px; color: var(--text-3); min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mm-up-go { grid-row: 1 / 3; grid-column: 3; color: var(--primary); }
.mm-empty { padding: 8px 0; }
.mm-kindchips { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 8px; }
.mm-chip { border: 1px solid var(--border); background: var(--surface); color: var(--text-2); font-size: 12px; font-weight: 600; padding: 4px 11px; border-radius: 999px; cursor: pointer; font-family: inherit; }
.mm-chip span { color: var(--text-3); font-variant-numeric: tabular-nums; }
.mm-chip.is-active { background: var(--primary-soft); border-color: var(--primary); color: var(--primary); }
.mm-chip.is-active span { color: var(--primary); }
#todoKindBar { margin-bottom: 10px; }
.mm-history { margin-top: 0; }
.mm-tag { font-size: 10.5px; font-weight: 700; border-radius: 5px; padding: 1px 7px; white-space: nowrap; flex-shrink: 0; }
.mm-tag.int { background: var(--primary-soft); color: var(--primary); }
.mm-tag.ext { background: rgba(13, 148, 136, .1); color: #0d9488; }
body.dark .mm-tag.ext { color: #2dd4bf; }
.mm-flash { animation: mmFlash 1.2s ease; }
@keyframes mmFlash { 0% { box-shadow: 0 0 0 3px rgba(79, 70, 229, .45); } 100% { box-shadow: var(--shadow-sm); } }
@media (prefers-reduced-motion: reduce) { .mm-flash { animation: none; } }
/* 지난 기록: 앞에 내부/외부 표시가 붙어도 제목이 왼쪽에 붙게 */
.mini-history-item .mm-tag + .mini-history-main { flex: 1; }
.mm-history .mini-history-item:first-child { border-top: none; }

/* [회의·미팅 통합 시안] 할 일 · 인사이트 한 화면 */
.tk-top { margin-bottom: 16px; display: flex; flex-direction: column; gap: 10px; }
.tk-top .mm-card-head { margin-bottom: 0; flex-wrap: wrap; }
.tk-tiles { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; }
@media (max-width: 900px) { .tk-tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.tk-tile { text-align: left; cursor: pointer; font-family: inherit; color: var(--text); display: flex; flex-direction: column; gap: 4px; transition: border-color .15s ease, background .15s ease; }
.tk-tile:hover { border-color: var(--primary); }
.tk-tile.is-on { border-color: var(--primary); background: var(--primary-soft); box-shadow: inset 0 0 0 1px var(--primary); }
.tk-tile.is-on .stat-num { color: var(--primary); }
.tk-tile.warn .stat-num { color: var(--urgent); }
.tk-tile .stat-label { margin-top: 0; }
.tk-tile .stat-label em { font-style: normal; color: var(--text-3); }
.tk-group { margin-top: 14px; }
.tk-group .td-list { margin-top: 4px; }
.tk-ghead { display: flex; align-items: center; gap: 8px; width: 100%; border: none; background: var(--surface-2); border-radius: var(--radius-sm); padding: 8px 10px; font-family: inherit; font-size: 12.5px; color: var(--text); text-align: left; cursor: pointer; }
.tk-ghead:hover { background: var(--primary-soft); }
.tk-ghead.is-static { cursor: default; }
.tk-ghead.is-static:hover { background: var(--surface-2); }
.tk-gtitle { font-weight: 700; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tk-gdate { color: var(--text-3); font-size: 11.5px; font-variant-numeric: tabular-nums; }
.tk-gprog { margin-left: auto; font-size: 11.5px; font-weight: 700; color: var(--text-2); white-space: nowrap; font-variant-numeric: tabular-nums; }
.tk-due.late { color: var(--urgent); font-weight: 700; }
.tk-due.soon { color: var(--important); font-weight: 700; }
.tk-due em { font-style: normal; font-weight: 500; color: var(--text-3); }
.tk-owners { display: flex; flex-direction: column; gap: 4px; }
.tk-owner { display: grid; grid-template-columns: 64px minmax(0, 1fr) 28px; align-items: center; gap: 10px; border: 1px solid transparent; background: none; border-radius: var(--radius-sm); padding: 6px 8px; font-family: inherit; font-size: 12.5px; color: var(--text); cursor: pointer; text-align: left; }
.tk-owner:hover { background: var(--surface-2); }
.tk-owner.is-on { border-color: var(--primary); background: var(--primary-soft); }
.tk-oname { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tk-obar { height: 8px; border-radius: 4px; background: var(--surface-2); overflow: hidden; }
.tk-obar span { display: block; height: 100%; border-radius: 4px; background: var(--primary); }
.tk-ocnt { text-align: right; font-weight: 700; font-variant-numeric: tabular-nums; }
.tk-mini { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.tk-mini div { background: var(--surface-2); border: 1px solid var(--border); border-radius: var(--radius-sm); padding: 10px 12px; display: flex; flex-direction: column; gap: 2px; }
.tk-mini b { font-size: 18px; font-variant-numeric: tabular-nums; }
.tk-mini span { font-size: 11px; color: var(--text-2); }
/* [회의·미팅 통합 시안] 회의실 예약 — 주간 보기(기본) · 일 보기 오른쪽 칸 */
.rr-weekcard { display: flex; flex-direction: column; }
.rr-wscroll { overflow-x: auto; }
.rr-wgrid-wrap { min-width: 880px; }
.rr-whead { display: grid; grid-template-rows: auto auto; border-bottom: 1px solid var(--border); position: sticky; top: 0; background: var(--surface); z-index: 3; }
.rr-wdayhead { border: none; border-left: 1px solid var(--border); background: none; font-family: inherit; font-size: 12px; font-weight: 600; color: var(--text-2); padding: 8px 4px 4px; cursor: pointer; display: flex; gap: 4px; align-items: baseline; justify-content: center; white-space: nowrap; overflow: hidden; }
.rr-wdayhead b { font-size: 15px; font-weight: 800; color: var(--text); font-variant-numeric: tabular-nums; }
.rr-wdayhead em { font-style: normal; font-size: 10.5px; color: var(--urgent); overflow: hidden; text-overflow: ellipsis; }
.rr-wdayhead:hover { background: var(--surface-2); }
.rr-wdayhead.sun, .rr-wdayhead.sun b { color: var(--urgent); }
.rr-wdayhead.sat, .rr-wdayhead.sat b { color: #2563eb; }
.rr-wdayhead.is-today { background: var(--primary-soft); color: var(--primary); }
.rr-wdayhead.is-today b { color: var(--primary); }
.rr-wdayhead.wk { font-size: 11px; }
.rr-wroom { font-size: 10.5px; font-weight: 700; color: var(--text-3); text-align: center; padding: 0 2px 6px; display: flex; align-items: center; justify-content: center; gap: 2px; white-space: nowrap; overflow: hidden; }
.rr-wroom .rr-dotk { margin: 0; width: 8px; height: 8px; }
.rr-wroom.is-today { background: var(--primary-soft); }
.rr-whead > .rr-wroom:nth-child(odd) { border-left: none; }
.rr-wslot { border-right: none; border-left: 1px dashed color-mix(in srgb, var(--border) 70%, transparent); }
.rr-wslot.day-end { border-right: 1px solid var(--border); }
.rr-wslot.is-today { background: color-mix(in srgb, var(--primary) 5%, transparent); }
.rr-wslot.is-past { background: color-mix(in srgb, var(--text-3) 6%, transparent); }
.rr-wresv { margin: 1px 2px; padding: 2px 5px; border-radius: 5px; }
.rr-wresv .rr-resv-t { font-size: 10.5px; }
.rr-wresv .rr-resv-m { font-size: 9.5px; }
.rr-wresv.wk .rr-resv-t { font-size: 9.5px; }
.rr-nowline { height: 2px; background: var(--urgent); z-index: 4; pointer-events: none; align-self: start; position: relative; }
.rr-nowline::before { content: ""; position: absolute; left: -4px; top: -3px; width: 8px; height: 8px; border-radius: 50%; background: var(--urgent); }

/* 일 보기: 왼쪽 시간표 + 오른쪽 칸 */
.rr-dayview { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(280px, 1fr); gap: 16px; align-items: start; }
@media (max-width: 1100px) { .rr-dayview { grid-template-columns: 1fr; } }
.rr-side { display: flex; flex-direction: column; gap: 16px; min-width: 0; }
.rr-mini-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; font-size: 13.5px; }
.rr-mini-dow, .rr-mini-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; }
.rr-mini-dow span { text-align: center; font-size: 10.5px; font-weight: 700; color: var(--text-3); padding-bottom: 4px; }
.rr-mini-dow .sun { color: var(--urgent); } .rr-mini-dow .sat { color: #2563eb; }
.rr-mini-d { border: 1px solid transparent; background: none; border-radius: 7px; padding: 4px 0 3px; display: flex; flex-direction: column; align-items: center; gap: 2px; font-family: inherit; font-size: 12.5px; font-weight: 600; color: var(--text); cursor: pointer; font-variant-numeric: tabular-nums; min-height: 38px; }
.rr-mini-d:hover { background: var(--surface-2); }
.rr-mini-d.is-empty { cursor: default; }
.rr-mini-d.sun { color: var(--urgent); } .rr-mini-d.sat { color: #2563eb; }
.rr-mini-d.is-today { border-color: var(--primary); }
.rr-mini-d.is-sel { background: var(--primary); color: #fff; }
.rr-mini-dots { display: flex; gap: 2px; height: 6px; }
.rr-mini-dots .rr-dotk { width: 6px; height: 6px; border-radius: 50%; margin: 0; }
.rr-mini-d.is-sel .rr-dotk { box-shadow: 0 0 0 1px #fff; }
.rr-list { display: flex; flex-direction: column; }
.rr-li { display: grid; grid-template-columns: auto auto minmax(0, 1fr); gap: 8px; align-items: start; border: none; border-top: 1px solid var(--border); background: none; padding: 8px 2px; text-align: left; font-family: inherit; color: var(--text); cursor: pointer; }
.rr-li:first-child { border-top: none; }
.rr-li:hover { background: var(--surface-2); }
.rr-li .rr-dotk { margin: 4px 0 0; }
.rr-li-time { font-size: 12px; font-weight: 700; color: var(--text-2); white-space: nowrap; font-variant-numeric: tabular-nums; }
.rr-li-time em { font-style: normal; color: var(--primary); margin-right: 2px; }
.rr-li-main { display: flex; flex-direction: column; min-width: 0; }
.rr-li-main b { font-size: 13px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rr-li-main span { font-size: 11.5px; color: var(--text-3); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* [회의·미팅 통합 시안] 업무일지 — 일: 내 일지 + 팀 기록 · 주/월: 작성 현황 매트릭스 */
.jr-day { margin-top: 4px; }
.jr-me-card { display: flex; flex-direction: column; gap: 10px; }
.jr-me-card .mm-card-head { margin-bottom: 0; }

.jr-sec .rec-textarea { width: 100%; }
.jr-me-foot { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.jr-save-state { font-size: 11.5px; color: var(--text-3); }
.jr-feed-card { display: flex; flex-direction: column; gap: 10px; }
.jr-feed-card .mm-card-head { margin-bottom: 0; }
.jr-progress { height: 6px; border-radius: 3px; background: var(--surface-2); overflow: hidden; }
.jr-progress span { display: block; height: 100%; background: var(--success); border-radius: 3px; }
.jr-feed { display: flex; flex-direction: column; }
.jr-feed-item { padding: 10px 0; border-top: 1px solid var(--border); display: flex; flex-direction: column; gap: 5px; }
.jr-feed-item:first-child { border-top: none; }
.jr-feed-who { display: flex; align-items: center; gap: 6px; }
.jr-feed-body { display: flex; flex-direction: column; gap: 4px; font-size: 12.5px; line-height: 1.55; }
.jr-feed-sec { white-space: pre-line; color: var(--text); overflow-wrap: anywhere; }  /* 팀 기록은 줄이지 않고 전부 보여 준다 (예전엔 4줄에서 … 로 잘렸음) */
.jr-feed-sec span { display: inline-block; font-size: 10.5px; font-weight: 700; color: var(--primary); background: var(--primary-soft); border-radius: 5px; padding: 0 6px; margin-right: 6px; }
.jm-preview .jr-feed-sec { -webkit-line-clamp: unset; }
.jr-missing { font-size: 12px; color: var(--text-3); border-top: 1px dashed var(--border); padding-top: 8px; }

.jm-layout { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 16px; align-items: start; margin-top: 4px; }
@media (max-width: 1100px) { .jm-layout { grid-template-columns: 1fr; } }
.jm-card { padding: 0; overflow: hidden; }
.jm-scroll { overflow-x: auto; }
.jm-table { border-collapse: collapse; width: 100%; font-size: 12.5px; }
.jm-table th, .jm-table td { border-bottom: 1px solid var(--border); text-align: center; padding: 0; }
.jm-corner, .jm-name { text-align: left !important; padding: 8px 12px !important; white-space: nowrap; position: sticky; left: 0; background: var(--surface); z-index: 1; font-weight: 600; }
.jm-corner { font-size: 11.5px; color: var(--text-3); }
.jm-dh { padding: 6px 2px !important; min-width: 28px; font-weight: 500; color: var(--text-3); }
.jm-dh b { display: block; font-size: 12.5px; color: var(--text); font-variant-numeric: tabular-nums; }
.jm-dh span { font-size: 10px; }
.jm-dh.sun b, .jm-dh.sun span { color: var(--urgent); }
.jm-dh.sat b, .jm-dh.sat span { color: #2563eb; }
.jm-dh.is-today { background: var(--primary-soft); }
.jm-c button { width: 100%; min-width: 28px; height: 34px; border: none; background: none; font-size: 13px; cursor: pointer; color: var(--text-3); font-family: inherit; }
.jm-c.on button { color: var(--success); }
.jm-c.miss button { color: var(--urgent); opacity: .7; }
.jm-c.future button, .jm-c.off button { color: var(--border); }
.jm-c.wk { background: color-mix(in srgb, var(--text-3) 5%, transparent); }
.jm-c.is-today { background: color-mix(in srgb, var(--primary) 6%, transparent); }
.jm-c button:hover { background: var(--surface-2); }
.jm-c.is-sel button { box-shadow: inset 0 0 0 2px var(--primary); border-radius: 6px; }
.jm-rate, .jm-rate-h { padding: 0 12px !important; font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; }
.jm-rate-h { font-size: 11.5px; color: var(--text-3); font-weight: 600; }
.jm-rate.low { color: var(--urgent); }
.jm-sum { font-size: 11px; color: var(--text-3); padding: 6px 0 !important; font-variant-numeric: tabular-nums; }
.jm-sum-h { font-size: 11.5px; color: var(--text-3); font-weight: 600; }
.jm-table tfoot th, .jm-table tfoot td { border-bottom: none; }
.jm-legend { font-size: 11.5px; color: var(--text-3); padding: 9px 12px; border-top: 1px solid var(--border); }
.jm-preview { position: sticky; top: 12px; }
.jm-pv-head { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin-bottom: 10px; }
.jm-name .jr-pos, .jr-feed-who .jr-pos, .jm-pv-head .jr-pos { margin-left: 4px; }
.jm-name .jr-me, .jr-feed-who .jr-me { margin-left: 4px; }

.jr-writer-me { font-size: 11.5px; font-weight: 600; color: var(--text-3); background: var(--surface-2); border: 1px solid var(--border); border-radius: 999px; padding: 3px 10px; white-space: nowrap; }

/* [회의·미팅 통합 시안] 일정관리 — 왼쪽 달력 · 오른쪽 추가/상세/다가오는 일정/통계 */
.schl-grid { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 16px; align-items: start; margin-top: 14px; }
@media (max-width: 1200px) { .schl-grid { grid-template-columns: 1fr; } }
.schl-main { min-width: 0; }
.schl-main .sch-calendar-card { margin: 0; }
.schl-side { display: flex; flex-direction: column; gap: 16px; min-width: 0; }
.schl-side > .card { margin: 0; }
.schl-grid + .card { margin-top: 16px; }
/* 오른쪽 좁은 칸에 맞게 일정 추가 줄을 두 칸 격자로 */
.schl-side .sch-add-grid, .schl-side .sch-add-grid2 { grid-template-columns: 1fr 1fr; }
.schl-side .sch-add-grid > :first-child, .schl-side .sch-add-grid2 > :first-child { grid-column: 1 / -1; }
.schl-side .sch-add-grid2 > .sch-ep-input { grid-column: 1 / -1; }
.schl-side .sch-add-datelbl { flex-direction: column; align-items: stretch; gap: 3px; }
.schl-side .sch-add-datelbl input { width: 100%; }
.schl-side .sch-add-grid .process-btn, .schl-side .sch-add-grid2 .process-btn { grid-column: 1 / -1; width: 100% !important; }
.schl-side .sch-add-hint { display: block; margin: 3px 0 0; }
.schl-side .sch-up-row { gap: 8px; }
/* 넘치는 일정(+N)이 있는 주는 한 줄 더 — 마지막 막대와 +N 이 겹치지 않게 */
.sch-week:has(.sch-more) .sch-daycell { min-height: calc(58px + var(--lanes, 3) * 27px); }/* 오른쪽 칸의 일정 추가: 한 줄에 하나씩 세로로, 추가 버튼은 맨 아래 */
.schl-side .sch-add-card { display: flex; flex-direction: column; gap: 8px; }
.schl-side .sch-add-card .card-title { margin-bottom: 2px; }
.schl-side .sch-add-grid, .schl-side .sch-add-grid2 { display: contents; }
.schl-side .sch-add-card .sch-memo-row { margin-top: 0; }
.schl-side .sch-add-card .process-btn { order: 10; margin-top: 2px !important; }
.schl-side .sch-add-datelbl { flex-direction: row; align-items: center; gap: 8px; }
.schl-side .sch-add-datelbl input { flex: 1; }
/* 좌우 배치에서는 폭 제한(1120px 가운데 정렬)을 풀어 달력이 왼쪽부터 넓게 쓰도록 */
#page-schedule { max-width: none; margin: 0; }

/* 칸 높이 통일: +N 자리를 모든 주에 미리 두고, 칸 안 내용이 길어도 높이를 넘기지 않는다 */
.sch-week:has(.sch-more) .sch-daycell { min-height: 0; }
.sch-daycell { height: calc(58px + var(--lanes, 4) * 27px); min-height: 0; overflow: hidden; }
/* [통합 시안] 일정관리 한 화면에 달력이 다 들어오게 — 일정관리 안에서만 적용 */
#page-schedule { gap: 10px; }
#page-schedule .team-context { gap: 8px; }
#page-schedule .team-chip { padding: 4px 10px; font-size: 12px; }
#page-schedule .sch-atabs { gap: 5px; }
#page-schedule .sch-atab { padding: 3px 10px; font-size: 12px; gap: 5px; }
#page-schedule .sch-adot { width: 7px; height: 7px; }
#page-schedule .schl-grid { margin-top: 0; }
#page-schedule .sch-calendar-card { padding: 12px 14px; }
#page-schedule .sch-cal-header { margin-bottom: 6px; }
#page-schedule .sch-cal-dow-row { margin-bottom: 2px; }
/* 달력 칸: 막대 한 줄 21px + 간격 2px, 날짜 줄 28px, +N 자리 18px */
#page-schedule .sch-week-bars { top: 28px; grid-auto-rows: 21px; gap: 2px 0; }
#page-schedule .sch-bar { line-height: 15px; padding: 3px 8px; font-size: 11.5px; }
#page-schedule .sch-daycell { height: calc(46px + var(--lanes, 3) * 23px); padding: 5px 7px; }
#page-schedule .sch-day-top { height: 20px; }
#page-schedule .sch-daynum { font-size: 14px; }
#page-schedule .sch-more { bottom: 3px; }/* 일정 막대도 한 단계 작게 — 한 줄 18px(글자 11px) + 간격 2px */
#page-schedule .sch-week-bars { top: 26px; grid-auto-rows: 18px; gap: 2px 0; }
#page-schedule .sch-bar { line-height: 13px; padding: 2px 7px; font-size: 11px; border-radius: 5px; }
#page-schedule .sch-bar .sch-dday { font-size: 9px; padding: 0 4px; margin-right: 3px; vertical-align: 0; }
#page-schedule .sch-duepill, #page-schedule .sch-collabpill { font-size: 11px; line-height: 13px; padding-top: 2px; padding-bottom: 2px; }
#page-schedule .sch-daycell { height: calc(42px + var(--lanes, 3) * 20px); }
/* 담당자 칩 줄과 달력 사이 숨 쉴 간격 */
#page-schedule .schl-grid { margin-top: 14px; }
#page-schedule .sch-calendar-card { padding-bottom: 10px; }
#page-schedule .sch-cal-header { margin-bottom: 4px; }

/* 칩 간격을 더 촘촘하게 (줄 사이 · 칩 사이) */
#page-schedule { gap: 6px; }
#page-schedule .team-chips { gap: 5px; }
#page-schedule .sch-atabs { gap: 4px; }
#page-schedule .schl-grid { margin-top: 10px; }
/* 달력 칸 높이를 화면 높이에 맞춘다 — 남는 세로 공간을 주 수로 나눠 채움(최소 102px · 최대 170px).
   268px = 달력 칸이 시작하는 위치 + 카드 아래 여백 + 화면 아래 여유 */
#page-schedule .sch-weeks { --wk: 5; }
#page-schedule .sch-weeks:has(> .sch-week:nth-child(6)) { --wk: 6; }
#page-schedule .sch-weeks:has(> .sch-week:nth-child(4):last-child) { --wk: 4; }
#page-schedule .schl-main .sch-daycell { height: clamp(calc(42px + var(--lanes, 3) * 20px), calc((100vh - 268px) / var(--wk)), 170px); }
/* 담당자 칩: 달력 위, 달력 오른쪽 끝에 맞춤 */
.schl-main { display: flex; flex-direction: column; gap: 8px; }
#page-schedule .sch-atabs.schl-chips { justify-content: flex-end; }
#page-schedule .schl-grid:has(.schl-chips) { margin-top: 0; }
/* 오른쪽 카드는 달력 윗선에 맞춘다 (칩 줄 높이 + 간격만큼 내림) */
#page-schedule .schl-grid:has(.schl-chips) .schl-side { margin-top: calc(var(--schl-chip-h, 22px) + 8px); }

/* 아트리 · 일본만화 · 웹툰 단행본 · 출간일정: 칩 + 버튼 줄(.sch-top)도 기본형과 같게 — 칩은 달력 오른쪽 끝, 버튼은 왼쪽 */
#page-schedule .sch-top.schl-top { flex-direction: row-reverse; align-items: center; gap: 8px; margin: 0; }
#page-schedule .sch-top.schl-top .sch-atabs { justify-content: flex-end; }
#page-schedule .sch-top.schl-top .sch-top-right { gap: 6px; }
#page-schedule .sch-top.schl-top .btn-small, #page-schedule .sch-top.schl-top .pub-type-btn { padding: 3px 10px; font-size: 12px; }
#page-schedule .sch-top.schl-top .sch-count-sel { padding: 3px 8px; font-size: 12px; }
#page-schedule .sch-top.schl-top .process-btn { padding: 5px 12px; font-size: 12.5px; }
#page-schedule .schl-grid.has-head { margin-top: 0; }
#page-schedule .schl-grid.has-head .schl-side { margin-top: calc(var(--schl-chip-h, 22px) + 8px); }
/* 출간일정(오른쪽 카드 없음): 폭 전체, 칸 높이만 화면에 맞춰 채움 */
#panelSchedule.schl-single .pub-grid { --pwk: 5; }
#panelSchedule.schl-single .pub-grid:has(> :nth-child(36)) { --pwk: 6; }
#panelSchedule.schl-single .pub-grid:not(:has(> :nth-child(29))) { --pwk: 4; }
#panelSchedule.schl-single .pub-daycell { min-height: 0; height: clamp(96px, calc((100vh - 300px) / var(--pwk)), 170px); }
/* 칸 높이가 고정이라 항목이 넘치면 날짜 줄(.sch-day-top)이 0으로 눌려 날짜가 사라졌다 (2026-10-19).
   날짜 줄은 줄지 않게 하고, 넘치는 항목은 fitPubCells()가 숨겨 '+N'으로 센다. */
.pub-daycell > .sch-day-top { flex-shrink: 0; }
.pub-day-items { flex: 1 1 auto; min-height: 0; overflow: hidden; }
.pub-pill, .pub-more { flex-shrink: 0; }
.pub-daycell .pub-day-items { gap: 2px; }
.sch-day-top .pub-more { margin-left: auto; padding: 1px 6px; border-radius: 999px; background: var(--surface-2); line-height: 1.3; }
#panelSchedule.schl-single .sch-calendar-card { margin-top: 2px; }
/* [통합 시안] 아트리 — 캘린더 | 인원별 통계 */
.sch-viewtabs { display: inline-flex; background: var(--surface-2); border: 1px solid var(--border); border-radius: 999px; padding: 2px; gap: 2px; }
.sch-viewtab { border: none; background: none; font-family: inherit; font-size: 12px; font-weight: 600; color: var(--text-2); padding: 3px 11px; border-radius: 999px; cursor: pointer; }
.sch-viewtab.is-active { background: var(--surface); color: var(--primary); box-shadow: var(--shadow-sm); }
/* 캘린더 보기: 아래 통계 카드 감춤 · 통계 보기: 캘린더·오른쪽 카드 감추고 통계 카드를 전체 폭으로 */
#panelSchedule:not(.atri-stats-view) .sch-pstat-card { display: none; }
#panelSchedule.atri-stats-view .schl-main > .sch-calendar-card,
#panelSchedule.atri-stats-view .schl-side { display: none; }
#panelSchedule.atri-stats-view .schl-grid { grid-template-columns: 1fr; }
#panelSchedule.atri-stats-view .schl-grid + .sch-pstat-card { margin-top: 10px; }
.sch-pst-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-bottom: 12px; }
.sch-pst-nav { display: flex; align-items: center; gap: 8px; }
.sch-pst-sum { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin-bottom: 12px; }
.sch-pst-sum div { background: var(--surface-2); border: 1px solid var(--border); border-radius: var(--radius-sm); padding: 10px 14px; display: flex; flex-direction: column; gap: 2px; }
.sch-pst-sum b { font-size: 20px; font-variant-numeric: tabular-nums; }
.sch-pst-sum span { font-size: 11.5px; color: var(--text-2); }
.atri-stats-view .sch-pstat-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(420px, 1fr)); gap: 4px 20px; }
/* 캘린더 오른쪽 요약 카드 */
.sch-pstat-mini .sch-up-head { margin-bottom: 6px; }
.sch-pmini-row { display: grid; grid-template-columns: 18px auto minmax(0, 1fr) auto; gap: 8px; align-items: center; padding: 6px 0; border-top: 1px solid var(--border); font-size: 12.5px; }
.sch-pmini-row:first-of-type { border-top: none; }
.sch-pmini-rank { width: 18px; height: 18px; border-radius: 50%; background: var(--primary-soft); color: var(--primary); font-size: 10.5px; font-weight: 800; display: grid; place-items: center; }
.sch-pmini-name { font-weight: 700; }
.sch-pmini-part { font-size: 11px; color: var(--text-3); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sch-pmini-cnt { font-weight: 700; font-variant-numeric: tabular-nums; }/* 통계 보기에서는 캘린더용 PD 칩·표시 개수를 감춘다 (통계는 파트 필터로 거른다) */
#panelSchedule.atri-stats-view .schl-top .sch-atabs, #panelSchedule.atri-stats-view .sch-count-lbl { display: none; }
/* 통계 보기: 칩·표시 개수는 자리만 남기고 감춘다 — 버튼 줄이 오른쪽으로 밀리지 않게 */
#panelSchedule.atri-stats-view .schl-top .sch-atabs, #panelSchedule.atri-stats-view .sch-count-lbl { display: flex; visibility: hidden; pointer-events: none; }
#panelSchedule.atri-stats-view .sch-count-lbl { display: inline-flex; }

/* [통합 시안] 업무보고 — 가운데 68% 고정을 풀고 넓게: 작품 카드 두 칸 · 작품 바로가기는 오른쪽 칸(떠 있는 창 → 고정 칸) */
#page-report .wr-wrap { width: 100%; margin: 0; }
#page-report .wr-top { padding: 8px 0; margin-bottom: 8px; }
#page-report .wr-hint { margin-bottom: 10px; }
#page-report .wr-main { display: grid; grid-template-columns: minmax(0, 1fr) 176px; gap: 16px; align-items: start; }
#page-report .wr-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(540px, 1fr)); gap: 14px; align-items: start; }
#page-report .wr-index { position: sticky; top: 132px; right: auto; width: auto; max-height: calc(100vh - 152px); box-shadow: none; z-index: 1; }
@media (max-width: 1200px) {
  #page-report .wr-main { grid-template-columns: 1fr; }
  #page-report .wr-index { display: none; }
}
@media (max-width: 760px) { #page-report .wr-list { grid-template-columns: 1fr; } }
/* 카드 안: 여백을 조금 줄이고, 비고 칸은 카드 폭의 1/3 */
#page-report .wr-work-head { padding: 10px 12px; }
#page-report .wr-cols { padding: 10px 12px; gap: 12px; }
#page-report .wr-col-main { gap: 8px; }
#page-report .wr-col-side { width: 34%; min-width: 150px; }
#page-report .wr-parts { gap: 6px; }
#page-report .wr-part-row { gap: 8px; }
#page-report .wr-part-name { width: 46px; }
#page-report .wr-assignee { width: 96px; }
#page-report .wr-note { min-height: 96px; }/* 업무보고: 카드는 다시 한 줄에 하나(작품 바로가기와 짝) — 폭은 바로가기 칸 앞까지 넓게 */
#page-report .wr-list { grid-template-columns: 1fr; gap: 12px; }
/* 업무보고: 카드 폭을 줄이고 작품 바로가기 칸을 넓게 (작품명이 잘리지 않게) */
#page-report .wr-main { grid-template-columns: minmax(0, 1fr) 280px; gap: 20px; }
@media (max-width: 1200px) { #page-report .wr-main { grid-template-columns: 1fr; } }  /* 좁은 화면: 바로가기 칸을 숨기니 빈 칸도 없앤다 (위 280px 규칙보다 뒤에 와야 이긴다) */
#page-report .wr-idx-item { padding: 8px 10px; }
#page-report .wr-idx-name { font-size: 13px; white-space: normal; }
#page-report .wr-index-title { font-size: 12px; padding: 4px 10px 8px; }

/* [통합 시안] 좌측 하단 내 계정 메뉴 */
.user-menu-btn { width: 100%; border: none; background: none; text-align: left; font-family: inherit; color: inherit; cursor: pointer; transition: background .15s ease; }
.user-menu-btn:hover, .user-menu-btn[aria-expanded="true"] { background: var(--surface-2); }
.user-menu-btn .user-info { flex: 1; }
.user-menu-caret { font-size: 11px; color: var(--text-3); margin-left: auto; }
.user-menu { position: fixed; z-index: 60; background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-md); box-shadow: var(--shadow-md); padding: 6px; display: flex; flex-direction: column; }
.um-head { display: flex; align-items: center; gap: 10px; padding: 8px 8px 10px; border-bottom: 1px solid var(--border); margin-bottom: 4px; }
.um-id { display: flex; flex-direction: column; min-width: 0; }
.um-id b { font-size: 13.5px; }
.um-id span { font-size: 11.5px; color: var(--text-2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.um-id em { font-style: normal; font-size: 11px; font-weight: 700; color: var(--primary); margin-top: 2px; }
.um-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 9px 8px; border: none; background: none; border-radius: var(--radius-sm); font-family: inherit; font-size: 13px; color: var(--text); cursor: pointer; text-align: left; width: 100%; }
.um-row:hover { background: var(--surface-2); }
.um-logout { color: var(--urgent); font-weight: 600; }
@media (max-width: 900px) { .user-menu-caret { display: none; } }

/* [통합 시안] 로맨스 · 판타지 — 시작·마감 표시 · 두 줄 알약(작업명 / 담당자) */
.sch-pt.a1 { --ac: #4f46e5; } .sch-pt.a2 { --ac: #0d9488; } .sch-pt.a3 { --ac: #d97706; } .sch-pt.a4 { --ac: #db2777; } .sch-pt.a5 { --ac: #16a34a; } .sch-pt.a0 { --ac: #64748b; }
#page-schedule .sch-pt { display: flex; flex-direction: column; gap: 1px; padding: 3px 18px 3px 7px; white-space: normal; line-height: 1.3; border-radius: 6px; cursor: pointer; }
#page-schedule .sch-pt .sch-pt-t { font-size: 11px; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
#page-schedule .sch-pt .sch-pt-w { display: flex; align-items: center; gap: 4px; font-size: 10.5px; font-weight: 500; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; opacity: .9; }
#page-schedule .sch-pt .sch-pt-w .sch-adot { width: 6px; height: 6px; flex: none; }
#page-schedule .sch-pt .sch-pt-none { opacity: .7; font-style: normal; }
/* 마감(채움) · 시작(테두리) */
#page-schedule .sch-duepill.sch-pt.is-end { background: var(--ac); color: #fff; }
#page-schedule .sch-duepill.sch-pt.is-end .sch-pt-w .sch-adot { background: #fff !important; }
#page-schedule .sch-duepill.sch-pt.is-start { background: var(--surface); color: var(--text); box-shadow: inset 0 0 0 1.5px var(--ac); }
#page-schedule .sch-pt-edge { display: inline-block; font-size: 9.5px; font-weight: 800; padding: 0 4px; margin-right: 3px; border-radius: 4px; background: var(--surface-2); color: var(--ac, var(--text-2)); box-shadow: inset 0 0 0 1px var(--ac, var(--border)); }
#page-schedule .is-end .sch-pt-edge { background: rgba(255,255,255,.22); color: #fff; box-shadow: none; }
#page-schedule .sch-duepill.sch-pt.done { opacity: .5; text-decoration: none; }
#page-schedule .sch-duepill.sch-pt.done .sch-pt-t { text-decoration: line-through; }
#page-schedule .sch-pt.is-pair { outline: 2px solid var(--text); outline-offset: 1px; }
#page-schedule .sch-collabpill.sch-pt { background: #7c3aed; color: #fff; }
#page-schedule .sch-pills { gap: 3px; margin-top: 2px; }

/* 일정 추가: 제목(왼쪽) · 협업 요청 버튼(오른쪽) 한 줄 */
.sch-add-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; }
.sch-add-head .card-title { margin-bottom: 0; }
.sch-add-head .sch-collab-btn { flex: none; margin: 0; white-space: nowrap; }
.schl-side .sch-add-card .sch-add-head { order: -1; }
/* [통합 시안] 편집팀 캘린더 항목 — B안: 왼쪽 담당자 색 선 + 제목 / 둘째 줄 '담당자 · 알약'. 마감 = 진한 선, 시작 = 연한 선 */
#page-schedule .sch-pt,
#page-schedule .sch-duepill.sch-pt.is-end,
#page-schedule .sch-duepill.sch-pt.is-start,
#page-schedule .sch-collabpill.sch-pt { background: transparent; color: var(--text); box-shadow: none; padding: 1px 18px 1px 6px; border-radius: 0; border-left: 3px solid var(--ac); }
#page-schedule .sch-duepill.sch-pt.is-start { border-left-color: color-mix(in srgb, var(--ac) 35%, transparent); }
#page-schedule .sch-collabpill.sch-pt { --ac: #7c3aed; }
#page-schedule .sch-pt:hover { background: var(--surface-2); }
#page-schedule .sch-pt .sch-pt-t { font-size: 11.5px; font-weight: 600; color: var(--text); }
#page-schedule .sch-pt .sch-pt-w { gap: 5px; font-size: 10.5px; font-weight: 500; color: var(--text-2); opacity: 1; }
#page-schedule .sch-pt .sch-pt-w .sch-adot { display: none; }
#page-schedule .sch-pt .sch-pt-who { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#page-schedule .sch-pt .sch-pt-w .sch-dday, #page-schedule .sch-pt .sch-pt-w .sch-pt-edge { flex: none; margin: 0; }
#page-schedule .is-end .sch-pt-edge, #page-schedule .sch-pt-edge { background: transparent; color: var(--ac, var(--text-2)); box-shadow: inset 0 0 0 1px var(--ac, var(--border)); }#page-schedule .sch-pt .sch-pt-w .sch-dday { background: var(--surface-2); color: var(--text-2); box-shadow: inset 0 0 0 1px var(--border); font-weight: 700; }   /* 여유 = 회색, 3일 이내·지남 = 빨강(.is-urgent) */
#page-schedule .sch-pt .sch-pt-w .sch-dday.is-urgent { box-shadow: none; }
#page-schedule .sch-collabpill.sch-pt.is-start { border-left-color: color-mix(in srgb, #7c3aed 35%, transparent); }
.ci-btns { display: inline-flex; gap: 6px; }

/* [통합 시안] 일정 표시 설정 창 — 옵션 카드(제목 + 설명), 버튼 크기 통일 */
.sv2-modal { width: min(440px, calc(100vw - 32px)) !important; max-width: 440px !important; }
.sv2-modal .modal-head { margin-bottom: 2px; }
.sv2-hint { margin: 0 0 16px; font-size: 12.5px; color: var(--text-3, var(--text-2)); }
.sv2-sec { margin: 0 0 8px; font-size: 12.5px; font-weight: 700; color: var(--text-2); }
.sv2-group { display: flex; flex-direction: column; gap: 6px; margin-bottom: 18px; }
.sv2-opt { display: flex; align-items: flex-start; gap: 10px; padding: 10px 12px; border: 1px solid var(--border); border-radius: 10px; cursor: pointer; transition: border-color .12s, background .12s; }
.sv2-opt:hover { border-color: var(--text-3); }
.sv2-opt:has(input:checked) { border-color: var(--primary); background: var(--primary-soft); }
.sv2-opt input { flex: none; width: 16px; height: 16px; margin: 1px 0 0; accent-color: var(--primary); }
.sv2-txt { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.sv2-title { display: flex; align-items: center; gap: 6px; font-size: 13.5px; font-weight: 600; color: var(--text); line-height: 1.35; }
.sv2-desc { font-size: 12px; color: var(--text-2); line-height: 1.4; }
.sv2-tag { font-size: 10.5px; font-weight: 600; padding: 1px 6px; border-radius: 999px; background: var(--surface-2); color: var(--text-2); box-shadow: inset 0 0 0 1px var(--border); }
.sv2-actions { display: flex; justify-content: flex-end; gap: 8px; padding-top: 4px; }
.sv2-actions .btn-small, .sv2-actions .sv2-save { height: 36px; padding: 0 18px; margin: 0; width: auto; font-size: 13.5px; border-radius: 8px; white-space: nowrap; display: inline-flex; align-items: center; justify-content: center; }
/* [통합 시안] 로맨스·판타지 일정 상세 — 메모 기록(작업 공정 대체) */
.sch-note-count { font-weight: 600; color: var(--primary); margin-left: 2px; }
.sch-note-form { display: flex; gap: 8px; align-items: stretch; margin: 6px 0 10px; }
.sch-note-form .sch-note-input { flex: 1; min-height: 44px; resize: vertical; font-size: 13px; line-height: 1.45; padding: 8px 10px; margin: 0; }
.sch-note-form .sch-note-add { flex: none; align-self: stretch; padding: 0 14px; margin: 0; white-space: nowrap; }
.sch-note-list { display: flex; flex-direction: column; gap: 6px; max-height: 360px; overflow-y: auto; margin-bottom: 10px; }
.sch-note { padding: 8px 10px; border-radius: 8px; background: var(--surface-2); border: 1px solid var(--border); }
.sch-note-meta { display: flex; align-items: center; gap: 6px; font-size: 11.5px; color: var(--text-3); margin-bottom: 3px; }
.sch-note-meta b { font-weight: 700; color: var(--text-2); }
.sch-note-del { margin-left: auto; border: 0; background: none; color: var(--text-3); cursor: pointer; font-size: 11px; padding: 0 2px; visibility: hidden; }
.sch-note:hover .sch-note-del { visibility: visible; }
.sch-note-del:hover { color: var(--urgent); }
.sch-note-text { font-size: 13px; line-height: 1.5; color: var(--text); white-space: pre-wrap; word-break: break-word; }
.sch-note-empty { font-size: 12.5px; color: var(--text-3); padding: 10px 2px; }
/* [통합 시안] 대시보드 A안 — 한 줄 머리글 + 왼쪽 '오늘 챙길 것' + 오른쪽 회의실·최근 기록 */
#page-dashboard .dv2-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-bottom: 14px; }
.dv2-hello { display: flex; align-items: baseline; gap: 10px; min-width: 0; }
.dv2-hello b { font-size: 16px; font-weight: 700; color: var(--text); }
.dv2-hello span { font-size: 13px; color: var(--text-3); }
.dv2-chips { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.dv2-chip { display: inline-flex; align-items: center; gap: 6px; height: 34px; padding: 0 12px; border-radius: 999px; border: 1px solid var(--border); background: var(--surface); color: var(--text-2); font-size: 12.5px; cursor: pointer; font-family: inherit; }
.dv2-chip em { font-style: normal; font-weight: 800; font-size: 14px; color: var(--text); }
.dv2-chip:hover { border-color: var(--primary); color: var(--primary); }
#page-dashboard .dv2-new { margin: 0; width: auto; height: 34px; padding: 0 16px; font-size: 13px; display: inline-flex; align-items: center; white-space: nowrap; }
.dv2-grid { display: grid; grid-template-columns: minmax(0, 1.65fr) minmax(320px, 1fr); gap: 16px; align-items: start; }
.dv2-side { display: flex; flex-direction: column; gap: 16px; min-width: 0; }
.dv2-side .card { margin: 0; }
.dv2-side .rr-dash-rooms { grid-template-columns: 1fr !important; gap: 10px; }
#page-dashboard .dv2-main-col { display: flex; flex-direction: column; gap: 16px; min-width: 0; min-height: calc(100vh - 232px); }
#page-dashboard .dv2-todo { margin: 0; display: flex; flex-direction: column; flex: 1 1 auto; min-height: 240px; }
#page-dashboard .dv2-team { margin: 0; flex: none; }
.dv2-todo-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 8px; flex-wrap: wrap; }
.dv2-todo-head .card-title { margin: 0; }
.dv2-filter { display: inline-flex; gap: 4px; background: var(--surface-2); padding: 3px; border-radius: 10px; }
.dv2-f { display: inline-flex; align-items: center; gap: 5px; height: 28px; padding: 0 10px; border: 0; border-radius: 8px; background: transparent; color: var(--text-2); font-size: 12.5px; font-weight: 600; cursor: pointer; font-family: inherit; }
.dv2-f em { font-style: normal; font-size: 11px; color: var(--text-3); font-weight: 700; }
.dv2-f.on { background: var(--surface); color: var(--text); box-shadow: var(--shadow-sm); }
.dv2-f.on em { color: var(--primary); }
.dv2-list { flex: 1; overflow-y: auto; max-height: calc(100vh - 292px); margin: 0 -6px; padding: 0 6px; }
.dv2-sec { display: flex; align-items: center; gap: 6px; margin: 12px 0 4px; font-size: 12px; font-weight: 700; color: var(--text-2); }
.dv2-sec:first-child { margin-top: 2px; }
.dv2-sec span { font-weight: 700; color: var(--text-3); }
.dv2-sec.is-over { color: var(--urgent); }
.dv2-row { display: flex; align-items: center; gap: 10px; padding: 8px 8px; border-radius: 8px; cursor: pointer; transition: background .12s, opacity .25s; }
.dv2-row + .dv2-row { border-top: 1px solid var(--border); }
.dv2-row:hover { background: var(--surface-2); }
.dv2-row.done { opacity: .45; }
.dv2-bar { flex: none; width: 3px; margin: 0 10.5px; align-self: stretch; min-height: 30px; border-radius: 0; background: var(--primary); }
.dv2-row.k-collab .dv2-bar { background: #7c3aed; }
.dv2-ck { flex: none; margin: 0; width: 24px; height: 24px; }
.dv2-kind { flex: none; width: 52px; font-size: 11.5px; font-weight: 600; color: var(--text-3); }
.dv2-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.dv2-title { font-size: 13.5px; font-weight: 600; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dv2-sub { font-size: 12px; color: var(--text-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dv2-tag { flex: none; font-size: 11px; font-weight: 600; padding: 1px 7px; border-radius: 999px; background: var(--surface-2); color: var(--text-2); box-shadow: inset 0 0 0 1px var(--border); }
.dv2-row .sch-dday { flex: none; margin: 0; background: var(--surface-2); color: var(--text-2); box-shadow: inset 0 0 0 1px var(--border); }
.dv2-row .sch-dday.is-urgent { box-shadow: none; }
.dv2-empty { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; padding: 60px 16px; text-align: center; }
.dv2-empty b { font-size: 14px; color: var(--text); }
.dv2-empty span { font-size: 12.5px; color: var(--text-3); }
.dv2-recent .rr-dash-head { margin-bottom: 6px; }
@media (max-width: 1100px) { .dv2-grid { grid-template-columns: 1fr; } #page-dashboard .dv2-todo { min-height: 0; } .dv2-list { max-height: none; } }.dv2-tlist { display: flex; flex-direction: column; }
.dv2-trow { display: flex; align-items: center; gap: 10px; width: 100%; padding: 7px 8px; border: 0; background: none; border-radius: 8px; cursor: pointer; text-align: left; font-family: inherit; }
.dv2-trow + .dv2-trow { border-top: 1px solid var(--border); }
.dv2-trow:hover { background: var(--surface-2); }
.dv2-tdate { flex: none; width: 52px; font-size: 12px; color: var(--text-3); font-variant-numeric: tabular-nums; }
.dv2-ttitle { flex: 1; min-width: 0; font-size: 13px; font-weight: 600; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dv2-twho { flex: none; display: inline-flex; align-items: center; gap: 5px; font-size: 12px; color: var(--text-2); }
.dv2-twho .sch-adot { width: 7px; height: 7px; }
.dv2-trow .sch-dday { flex: none; margin: 0; background: var(--surface-2); color: var(--text-2); box-shadow: inset 0 0 0 1px var(--border); }
.dv2-trow .sch-dday.is-urgent { box-shadow: none; }
@media (max-width: 1100px) { #page-dashboard .dv2-main-col { min-height: 0; } }
/* [통합 시안] 작은 달력 — 시작~종료 범위 선택 */
.dp-pop { width: 262px; padding: 12px 12px 10px; }
.dp-hint { display: block; margin: -2px 0 8px; font-size: 12px; color: var(--text-2); text-align: center; }
.dp-hint b { color: var(--primary); font-weight: 700; }
.dp-grid { gap: 2px 0; }
.dp-cell { border-radius: 0; cursor: pointer; font-family: inherit; }
.dp-cell.sun { color: var(--urgent); }
.dp-cell.sat { color: #2563eb; }
.dp-cell:not(.dp-empty):hover { background: var(--surface-2); border-radius: 7px; }
.dp-cell.today { box-shadow: inset 0 0 0 1.5px var(--primary); border-radius: 7px; color: var(--primary); }
.dp-cell.in-range { background: var(--primary-soft); color: var(--text); border-radius: 0; }
.dp-cell.sel, .dp-cell.sel:hover { background: var(--primary); color: #fff; font-weight: 700; border-radius: 7px; }
.dp-cell.sel.rs:not(.re) { border-radius: 7px 0 0 7px; }
.dp-cell.sel.re:not(.rs) { border-radius: 0 7px 7px 0; }
.dp-foot { display: flex; justify-content: space-between; align-items: center; margin-top: 8px; }
.dp-clear { border: none; background: none; color: var(--text-3); font-size: 12.5px; font-weight: 600; cursor: pointer; font-family: inherit; }
.dp-clear:hover { color: var(--urgent); }
.dp-today { cursor: pointer; font-family: inherit; }
.dp-input { padding-right: 32px !important; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2'/%3E%3Cpath d='M16 2v4M8 2v4M3 10h18'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 10px center; }
.dp-input.dp-active { border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-soft); }
/* 협업 요청 · 일정 수정 창 저장 버튼이 두 줄로 찌그러지지 않게 */
#cbSave, #schMSave { white-space: nowrap; flex: none; height: 38px; padding: 0 20px; display: inline-flex; align-items: center; justify-content: center; }
/* [통합 시안] 협업 요청 상세 — 진행 상태 · 댓글 · 자동 이력 */
.cl-modal { width: min(520px, calc(100vw - 32px)) !important; max-width: 520px !important; }
.cl-modal .modal-head h3 { font-size: 16px; line-height: 1.35; }
.cl-meta { display: flex; flex-wrap: wrap; gap: 4px 14px; font-size: 12.5px; color: var(--text-2); margin: 2px 0 14px; align-items: center; }
.cl-meta .sch-dday { margin: 0 0 0 4px; }
.cl-done-tag { margin-left: 4px; font-size: 11px; font-weight: 700; padding: 1px 7px; border-radius: 999px; background: var(--success-soft); color: var(--success); }
.cl-sec { display: flex; align-items: center; gap: 6px; margin: 0 0 6px; font-size: 12.5px; font-weight: 700; color: var(--text-2); }
.cl-sec span { font-weight: 600; color: var(--text-3); }
.cl-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 8px; }
.cl-st { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; border-radius: 999px; font-size: 12.5px; font-weight: 600; background: var(--surface-2); color: var(--text-2); box-shadow: inset 0 0 0 1px var(--border); }
.cl-st em { font-style: normal; font-weight: 500; font-size: 11.5px; opacity: .85; }
.cl-st.s-doing { background: var(--important-soft); color: var(--important); box-shadow: none; }
.cl-st.s-done { background: var(--success-soft); color: var(--success); box-shadow: none; }
.cl-st.is-me { outline: 2px solid var(--primary); outline-offset: 1px; }
.cl-mybtns { display: flex; align-items: center; gap: 6px; margin: 2px 0 16px; padding: 8px 10px; border-radius: 10px; background: var(--primary-soft); }
.cl-mybtns > span { font-size: 12px; font-weight: 700; color: var(--primary); margin-right: 4px; }
.cl-sbtn { height: 28px; padding: 0 12px; border-radius: 8px; border: 1px solid var(--border); background: var(--surface); color: var(--text-2); font-size: 12.5px; font-weight: 600; cursor: pointer; font-family: inherit; }
.cl-sbtn:hover { border-color: var(--primary); color: var(--primary); }
.cl-sbtn.on { background: var(--primary); border-color: var(--primary); color: #fff; cursor: default; }
.cl-sbtn.s-done.on { background: var(--success); border-color: var(--success); }
.cl-log { display: flex; flex-direction: column; gap: 6px; max-height: 300px; overflow-y: auto; padding: 8px; margin-bottom: 8px; border-radius: 10px; background: var(--surface-2); border: 1px solid var(--border); }
.cl-ev { display: flex; align-items: baseline; gap: 6px; font-size: 11.5px; color: var(--text-3); padding: 0 2px; }
.cl-ev-dot { flex: none; width: 5px; height: 5px; border-radius: 50%; background: var(--text-3); transform: translateY(-1px); }
.cl-ev-t { flex: 1; min-width: 0; }
.cl-ev-at { flex: none; font-size: 11px; opacity: .8; }
.cl-cmt { align-self: flex-start; max-width: 88%; padding: 7px 10px; border-radius: 10px; background: var(--surface); border: 1px solid var(--border); }
.cl-cmt.mine { align-self: flex-end; background: var(--primary-soft); border-color: transparent; }
.cl-cmt-meta { display: flex; align-items: center; gap: 6px; font-size: 11px; color: var(--text-3); margin-bottom: 2px; }
.cl-cmt-meta b { font-weight: 700; color: var(--text-2); }
.cl-cdel { margin-left: auto; border: 0; background: none; color: var(--text-3); cursor: pointer; font-size: 11px; padding: 0 2px; visibility: hidden; }
.cl-cmt:hover .cl-cdel { visibility: visible; }
.cl-cdel:hover { color: var(--urgent); }
.cl-cmt-text { font-size: 13px; line-height: 1.5; color: var(--text); white-space: pre-wrap; word-break: break-word; }
.cl-at { font-weight: 700; color: var(--primary); }
.cl-mention { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; margin-bottom: 6px; }
.cl-mbtn { height: 24px; padding: 0 8px; border-radius: 999px; border: 1px solid var(--border); background: var(--surface); color: var(--text-2); font-size: 12px; cursor: pointer; font-family: inherit; }
.cl-mbtn:hover { border-color: var(--primary); color: var(--primary); }
.cl-mhint { font-size: 11.5px; color: var(--text-3); margin-left: 4px; }
.cl-form { display: flex; gap: 8px; align-items: stretch; }
.cl-form textarea { flex: 1; margin: 0; min-height: 44px; resize: vertical; font-size: 13px; line-height: 1.45; padding: 8px 10px; }
.cl-form .process-btn { flex: none; margin: 0; width: auto; padding: 0 16px; white-space: nowrap; }
/* 캘린더 협업 알약 — 진행 1/2 · 완료 · 새 소식 점 */
.cl-pill-prog { flex: none; font-size: 10px; font-weight: 700; padding: 0 5px; border-radius: 999px; background: #ede9fe; color: #6d28d9; line-height: 15px; }
.cl-pill-prog.done { background: var(--success-soft); color: var(--success); }
#page-schedule .sch-collabpill.is-fin { opacity: .55; }
#page-schedule .sch-collabpill.has-new .sch-pt-t::after { content: ""; display: inline-block; width: 6px; height: 6px; margin-left: 4px; border-radius: 50%; background: #db2777; vertical-align: 2px; }
.alert-kind { display: inline-block; margin-right: 5px; font-size: 10.5px; font-weight: 700; padding: 0 6px; border-radius: 999px; background: #ede9fe; color: #6d28d9; vertical-align: 1px; }
.alert-kind.k-cm { background: #fce7f3; color: #be185d; }
.alert-kind.k-cd { background: var(--urgent-soft); color: var(--urgent); }

/* [통합 시안] 협업 일정 변경 */
.cl-date-btn { height: 26px; padding: 0 10px; margin: 0 0 0 auto; font-size: 12px; }
.cl-date-form { display: flex; flex-direction: column; gap: 8px; margin: -4px 0 14px; padding: 10px 12px; border-radius: 10px; background: var(--important-soft); }
.cl-date-row { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.cl-date-row label { display: flex; flex-direction: column; gap: 3px; font-size: 12px; font-weight: 700; color: var(--text-2); }
.cl-date-row .rec-input, .cl-date-form > .rec-input { margin: 0; height: 36px; font-size: 13px; }
.cl-date-acts { display: flex; align-items: center; gap: 6px; }
.cl-date-acts .sch-add-hint { flex: 1; font-size: 11.5px; }
.cl-date-acts .btn-small, .cl-date-acts .process-btn { margin: 0; width: auto; height: 32px; padding: 0 14px; white-space: nowrap; display: inline-flex; align-items: center; }
.cl-ev.k-dates { color: var(--important); font-weight: 600; }
.cl-ev.k-dates .cl-ev-dot { background: var(--important); }
.alert-kind.k-cs { background: var(--important-soft); color: var(--important); }
/* [통합 시안] 다크 모드 보정 — 새 칩·버튼의 고정 색이 어두운 화면에서 튀거나 안 읽히는 곳 */
body.dark .cl-pill-prog, body.dark .alert-kind { background: rgba(167,139,250,.18); color: #c4b5fd; }
body.dark .alert-kind.k-cm { background: rgba(244,114,182,.18); color: #f9a8d4; }
body.dark .cl-sbtn.s-done.on { color: #0b1a10; }
body.dark .dp-cell.sel, body.dark .cl-sbtn.on:not(.s-done) { color: #0f1020; }
body.dark .dp-cell.sat, body.dark .jm-dh.sat { color: #60a5fa; }
/* 아트리 일정관리 배치 (2026-10): 왼쪽 넓은 칸에 달력 + 목록·통계, 오른쪽엔 일정 추가만 */
#page-schedule .schl-atri .schl-main { display: flex; flex-direction: column; gap: 16px; min-width: 0; }
#page-schedule .schl-atri .schl-main > .card { margin: 0; }
#page-schedule .schl-pair { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 16px; align-items: stretch; }
#page-schedule .schl-pair > .card { margin: 0; min-width: 0; display: flex; flex-direction: column; }
#page-schedule .schl-pair-up .sch-up-list { max-height: 360px; overflow-y: auto; }
#page-schedule .schl-pair-stat .sch-stats { max-height: 320px; overflow-y: auto; }
#page-schedule .schl-atri .sch-pstat-card { margin: 0; }
#page-schedule .schl-atri .schl-side { align-self: start; }
@media (max-width: 1100px) { #page-schedule .schl-pair { grid-template-columns: 1fr; } }/* 탭 전환 없이 항상 보이게 (예전 '인원별 통계' 탭용 숨김 규칙을 덮는다) + 목록은 여러 칸으로 */
#panelSchedule .schl-atri .sch-pstat-card { display: block; }
#panelSchedule .schl-atri .sch-pstat-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(420px, 1fr)); gap: 4px 20px; }
/* 아트리: 오른쪽 칸을 화면에 고정(머리글 아래) — 다가오는 일정·통계를 보다가 일정을 눌러도 상세가 바로 옆에 뜬다 */
#page-schedule .schl-grid.schl-atri { grid-template-columns: minmax(0, 1fr) 380px; }
#page-schedule .schl-atri .schl-side { position: sticky; top: 92px; max-height: calc(100vh - 108px); overflow-y: auto; overscroll-behavior: contain; padding-bottom: 4px; scrollbar-width: thin; }
/* 상세 카드: 좁은 칸에 맞게 세로로 — 제목 한 줄 크게, 사람·기간은 아래, 버튼은 그 아래 한 줄 */
#page-schedule .schl-atri #schDetailCard { margin: 0; padding: 16px 16px 12px; border-left-width: 4px; }
#page-schedule .schl-atri #schDetailCard .sch-detail-top { display: flex; flex-direction: column; align-items: stretch; gap: 10px; }
#page-schedule .schl-atri #schDetailCard .sch-detail-title { font-size: 16px; line-height: 1.35; font-weight: 700; display: flex; align-items: flex-start; gap: 8px; }
#page-schedule .schl-atri #schDetailCard .sch-work-swatch { flex: none; margin-top: 4px; }
#page-schedule .schl-atri #schDetailCard .sch-detail-people,
#page-schedule .schl-atri #schDetailCard .sch-detail-period { font-size: 12.5px; line-height: 1.5; margin-top: 4px; }
#page-schedule .schl-atri #schDetailCard .sch-detail-actions { display: flex; flex-wrap: wrap; gap: 6px; justify-content: flex-start; padding-top: 10px; border-top: 1px solid var(--border); }
#page-schedule .schl-atri #schDetailCard .sch-detail-actions .btn-small { height: 30px; padding: 0 12px; }
#page-schedule .schl-atri #schDetailCard .sch-detail-actions .td-del-text { margin-left: auto; }
#page-schedule .schl-atri #schDetailCard .sch-detail-steps-label { margin: 14px 0 8px; }
#page-schedule .schl-atri #schDetailCard .sch-steps { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; }
#page-schedule .schl-atri #schDetailCard .sch-step { min-height: 38px; padding: 6px 10px; font-size: 12.5px; line-height: 1.3; text-align: left; }
#page-schedule .schl-atri #schDetailCard .sch-final { margin-top: 10px; padding: 10px 12px; font-size: 12.5px; line-height: 1.4; text-align: left; }
#page-schedule .schl-atri #schDetailCard .sch-detail-foot { margin-top: 10px; }
/* 고른 일정 줄을 목록에서도 표시 */
#page-schedule .schl-atri .sch-up-row.is-sel { background: var(--primary-soft); }/* 일정 추가 아래에 상세가 오므로 한 화면에 들어오게 촘촘히 */
#page-schedule .schl-atri #schDetailCard { padding: 14px 14px 10px; }
#page-schedule .schl-atri #schDetailCard .sch-detail-top { gap: 8px; }
#page-schedule .schl-atri #schDetailCard .sch-detail-actions { padding-top: 8px; }
#page-schedule .schl-atri #schDetailCard .sch-detail-steps-label { margin: 10px 0 6px; }
#page-schedule .schl-atri #schDetailCard .sch-steps { gap: 5px; }
#page-schedule .schl-atri #schDetailCard .sch-step { min-height: 32px; padding: 4px 8px; }
#page-schedule .schl-atri #schDetailCard .sch-final { margin-top: 8px; padding: 8px 10px; }
#page-schedule .schl-atri #schDetailCard .sch-detail-foot { margin-top: 6px; }
#page-schedule .schl-atri .schl-side .sch-add-card .card-title { margin-bottom: 8px; }
/* 아트리 작품별 마감 원고: 한 줄에 하나(전체 폭 막대) → 작은 칸 여러 열. 합계는 제목 줄 오른쪽 */
#page-schedule .schl-atri .sch-stats-card .sch-up-head { margin-bottom: 10px; }
#page-schedule .schl-atri .sch-stats-card .card-title { margin: 0; }
.sch-stat-total { font-size: 12.5px; color: var(--text-2); white-space: nowrap; }
.sch-stat-total b { font-size: 15px; font-weight: 800; color: var(--primary); margin-left: 2px; }
#page-schedule .schl-atri .sch-stats-card .sch-stats { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 8px; max-height: none; }
#page-schedule .schl-atri .sch-stats-card .sch-stat-row { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px; padding: 8px 10px 7px; border: 1px solid var(--border); border-radius: 8px; background: var(--surface); }
#page-schedule .schl-atri .sch-stats-card .sch-stat-work { flex: 1; font-size: 12.5px; }
#page-schedule .schl-atri .sch-stats-card .sch-stat-cnt { width: auto; font-size: 12.5px; color: var(--primary); }
#page-schedule .schl-atri .sch-stats-card .sch-stat-bar { order: 3; flex: 0 0 100%; height: 3px; }
#page-schedule .schl-atri .sch-stats-card .sch-stat-summary { display: none; }
#page-schedule .schl-atri .sch-stats-card .empty-state { grid-column: 1 / -1; }
/* 작품별 마감 원고를 오른쪽 칸(일정 추가·작업 공정 아래)에 세로 목록으로 — 위 '여러 열 칸' 규칙을 덮는다 */
#page-schedule .schl-atri .schl-side .sch-stats-card { margin: 0; padding: 14px 16px; }
#page-schedule .schl-atri .schl-side .sch-stats-card .sch-up-head { margin-bottom: 6px; align-items: baseline; }
#page-schedule .schl-atri .schl-side .sch-stats-card .card-title { font-size: 13px; }
#page-schedule .schl-atri .schl-side .sch-stats-card .sch-stats { display: flex; flex-direction: column; gap: 0; }
#page-schedule .schl-atri .schl-side .sch-stats-card .sch-stat-row { display: grid; grid-template-columns: 8px minmax(0, 1fr) 64px auto; align-items: center; gap: 8px; padding: 6px 0; border: 0; border-top: 1px solid var(--border); border-radius: 0; background: none; }
#page-schedule .schl-atri .schl-side .sch-stats-card .sch-stat-row:first-child { border-top: 0; }
#page-schedule .schl-atri .schl-side .sch-stats-card .sch-stat-work { font-size: 12.5px; }
#page-schedule .schl-atri .schl-side .sch-stats-card .sch-stat-bar { order: 0; flex: none; height: 5px; }
#page-schedule .schl-atri .schl-side .sch-stats-card .sch-stat-cnt { min-width: 28px; text-align: right; }
/* ── 할 일 (개인·공유 투두, 대시보드) 2026-10-08 ── */
#dashPtodoCard { display: flex; flex-direction: column; }
.pt-quick { display: flex; align-items: center; gap: 8px; border: 1.5px dashed var(--border); border-radius: 10px; padding: 4px 6px 4px 12px; margin-bottom: 6px; }
.pt-plus { color: var(--primary); font-weight: 800; }
.pt-quick-in { flex: 1; border: none; background: none; font-size: 13px; color: var(--text); font-family: inherit; outline: none; min-width: 0; padding: 6px 0; }
.pt-quick-in::placeholder { color: var(--text-3); }
.pt-list { display: flex; flex-direction: column; }
.pt-row { display: flex; align-items: center; gap: 10px; padding: 9px 6px; cursor: pointer; border-radius: 8px; }
.pt-row + .pt-row { border-top: 1px solid var(--border-faint, var(--border)); }
.pt-row:hover { background: var(--surface-2); }
.pt-row.done { opacity: .5; }
.pt-row.done .pt-text { text-decoration: line-through; color: var(--text-3); }
.pt-ck { flex: none; width: 20px; height: 20px; border: 1.6px solid var(--border); border-radius: 6px; background: none; cursor: pointer; font-size: 12px; color: #fff; display: flex; align-items: center; justify-content: center; padding: 0; }
.pt-ck.on { background: var(--wd-success, #16a34a); border-color: var(--wd-success, #16a34a); }
.pt-ck.exec { border-radius: 50%; border-color: var(--wd-personal, #0891b2); }
.pt-ck.exec.on { background: var(--wd-personal, #0891b2); border-color: var(--wd-personal, #0891b2); }
.pt-main { min-width: 0; flex: 1; display: flex; flex-direction: column; }
.pt-text { font-size: 13.5px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pt-meta { font-size: 11.5px; color: var(--text-3); margin-top: 1px; }
.pt-exec { color: var(--wd-success, #16a34a); font-weight: 650; }
.pt-avs { display: flex; flex: none; }
.pt-av { width: 21px; height: 21px; border-radius: 50%; background: var(--primary-soft, #eef1ff); color: var(--primary); font-size: 10px; font-weight: 800; display: flex; align-items: center; justify-content: center; border: 2px solid var(--surface); margin-left: -6px; }
.pt-av:first-child { margin-left: 0; }
.pt-av.more { background: var(--surface-2); color: var(--text-3); }
.pt-scope { flex: none; font-size: 10px; font-weight: 800; padding: 2px 7px; border-radius: 999px; }
.pt-scope.personal { background: var(--wd-personal-soft, #ecfbfd); color: var(--wd-personal, #0891b2); }
.pt-scope.shared { background: #f3edff; color: #7c3aed; }
body.dark .pt-scope.shared { background: #2a2144; color: #a78bfa; }
.pt-duedone { flex: none; font-size: 11px; color: var(--text-3); }
.pt-del { flex: none; display: none; border: none; background: var(--surface-2); color: var(--text-3); width: 18px; height: 18px; border-radius: 50%; font-size: 10px; cursor: pointer; padding: 0; }
.pt-row:hover .pt-del { display: block; }
.pt-foot { margin-top: 8px; }
.pt-foot-btn { border: none; background: none; color: var(--text-3); font-size: 12px; cursor: pointer; font-family: inherit; padding: 0; }
.pt-foot-btn:hover { color: var(--text-2); }

/* ── 투두 댓글·첨부·일완료 버튼 (2026-10-12) ── */
.pt-exec-btn { flex: none; border: 1.4px solid var(--wd-personal, #0891b2); color: var(--wd-personal, #0891b2); background: none; border-radius: 999px; font-size: 11px; font-weight: 750; padding: 3px 10px; cursor: pointer; font-family: inherit; white-space: nowrap; }
.pt-exec-btn.on { background: var(--wd-personal, #0891b2); color: #fff; }
.pt-cnt { flex: none; font-size: 11px; color: var(--text-3); }
.pt-atts, .pt-cms { display: flex; flex-direction: column; gap: 4px; margin: 4px 0 8px; }
.pt-att { display: flex; align-items: center; gap: 8px; font-size: 12.5px; background: var(--surface-2); border-radius: 8px; padding: 6px 10px; }
.pt-att-dl { color: var(--text); text-decoration: none; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
.pt-att-dl:hover { color: var(--primary); }
.pt-att-meta { flex: none; font-size: 11px; color: var(--text-3); margin-left: auto; }
.pt-att-del { flex: none; border: none; background: none; color: var(--text-3); cursor: pointer; font-size: 11px; padding: 2px; }
.pt-att-empty { font-size: 12px; color: var(--text-3); padding: 2px 0; }
.pt-cm { font-size: 12.5px; padding: 6px 10px; background: var(--surface-2); border-radius: 8px; }
.pt-cm b { font-size: 12px; }
.pt-cm-at { font-size: 10.5px; color: var(--text-3); margin-left: 4px; }
.pt-cm-text { margin-top: 2px; white-space: pre-wrap; }
.pt-cm-input { margin-top: 6px; }
/* 투두 공유 명단 접기 (2026-10-12) */
.pt-mem-sum { display: flex; align-items: center; justify-content: space-between; gap: 10px; font-size: 12.5px; color: var(--text-2); background: var(--surface-2); border-radius: 8px; padding: 7px 10px; margin-bottom: 6px; }

/* 할 일: 제목은 두 줄까지 보이고, 둘째 줄부터 쓴 설명은 회색으로 두 줄 미리 보기 (전체는 눌러서 창에서) */
.pt-text { white-space: normal; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; line-height: 1.45; overflow-wrap: anywhere; }
.pt-desc { margin-top: 2px; font-size: 12.5px; line-height: 1.5; color: var(--text-2); white-space: pre-line; overflow-wrap: anywhere; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.pt-row { align-items: flex-start; }
.pt-row > .pt-ck, .pt-row > .pt-exec-btn, .pt-row > .pt-scope, .pt-row > .sch-dday, .pt-row > .pt-del, .pt-row > .pt-avs, .pt-row > .pt-cnt { margin-top: 2px; }
.pt-text-in { min-height: 72px; resize: vertical; line-height: 1.5; font-family: inherit; }

/* 할 일 설명 펼치기/접기 — 펼치면 줄임 없이 전체 */
.pt-titleline { display: flex; align-items: baseline; gap: 8px; min-width: 0; }
.pt-titleline .pt-text { min-width: 0; }
.pt-exp { flex: none; border: 0; background: none; padding: 0 2px; font-size: 11.5px; font-weight: 600; color: var(--primary); cursor: pointer; font-family: inherit; white-space: nowrap; }
.pt-exp:hover { text-decoration: underline; }
.pt-row.is-open .pt-desc { display: block; -webkit-line-clamp: unset; overflow: visible; margin: 6px 0 4px; padding: 8px 10px; border-radius: 8px; background: var(--surface-2); border: 1px solid var(--border); color: var(--text); font-size: 12.5px; line-height: 1.6; }
.pt-row.is-open { background: var(--surface); }

/* 할 일 창: 제목·내용 칸 구분, 저장 버튼 찌그러짐 방지 */
#ptTitle { font-weight: 600; }
#ptSave { white-space: nowrap; flex: none; height: 38px; padding: 0 20px; display: inline-flex; align-items: center; justify-content: center; }

/* 명단: 출판IP 매출관리 열람 표시 */
.roster-badge.roster-badge-sales { background: var(--primary-soft); color: var(--primary); }
.roster-check-sales .rec-part-hint { display: block; margin: 2px 0 0 24px; }
/* ── 설정 A안 (2026-10-14): AI 연결 한 줄 · 명단 한 페이지 표 정렬 ── */
.settings-ai { padding: 10px 16px; }
.settings-ai-bar { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.settings-ai-title { font-size: 13px; font-weight: 700; color: var(--text-2); }
.settings-ai .settings-select { padding: 5px 8px; }
.settings-ai .ai-status { margin: 0; font-size: 12px; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; flex: 1; }
.settings-ai-toggle { margin-left: auto; border: 1px solid var(--border); background: var(--surface); color: var(--text-2); font-size: 12px; font-weight: 600; padding: 5px 12px; border-radius: 999px; cursor: pointer; }
.settings-ai-toggle:hover { background: var(--surface-2); color: var(--text); }
.settings-ai .ai-test-panel { margin-top: 4px; }

.roster-toolbar { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.roster-toolbar .card-title { margin: 0 6px 0 0; display: flex; align-items: center; }
.roster-total { margin-left: 8px; font-size: 11.5px; font-weight: 600; color: var(--text-3); }
.roster-seg { display: inline-flex; padding: 3px; gap: 2px; border-radius: 10px; background: var(--surface-2); border: 1px solid var(--border); }
.roster-seg button { border: 0; background: transparent; color: var(--text-2); font-size: 12px; font-weight: 600; padding: 5px 11px; border-radius: 7px; cursor: pointer; display: inline-flex; align-items: center; gap: 5px; font-family: inherit; }
.roster-seg button em { font-style: normal; font-size: 11px; color: var(--text-3); font-weight: 600; }
.roster-seg button:hover { color: var(--primary); }
.roster-seg button.is-on { background: var(--surface); color: var(--primary); box-shadow: 0 1px 2px rgba(0,0,0,.08); }
.roster-seg button.is-on em { color: var(--primary); }
.roster-toolbar .roster-filter { flex: 1; min-width: 180px; margin: 0; height: 34px; }
.roster-add-btn { margin-left: auto; white-space: nowrap; }
.roster-note { margin: 8px 0 4px; }

.roster-list { max-height: none; overflow: visible; margin-bottom: 0; }
.roster-row { display: grid; grid-template-columns: 16px 138px minmax(0, 175px) 58px 34px minmax(0, 190px) 22px; justify-content: space-between; align-items: center; gap: 6px; padding: 6px 2px; }
.roster-row:hover { background: var(--surface-2); }
.roster-head { position: sticky; top: var(--roster-head-top, 0px); z-index: 2; background: var(--surface); border-top: 0; border-bottom: 1px solid var(--border); padding: 8px 4px 6px; font-size: 11px; font-weight: 700; color: var(--text-3); }
.roster-head:hover { background: var(--surface); }
.roster-person { flex: none; margin: 0; padding: 2px 4px; gap: 6px; align-items: center; min-width: 0; }
.roster-person .roster-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.roster-row .roster-email { font-size: 12px; }
.roster-badges { flex-wrap: wrap; gap: 4px; min-width: 0; }
.roster-badge { padding: 2px 8px; }
.roster-badge-more { background: transparent; color: var(--text-3); border-style: dashed; cursor: help; }
.roster-badge.roster-badge-perm { background: #fff4e5; color: #b45309; border-color: #f5c27a; }
body.dark .roster-badge.roster-badge-perm { background: rgba(245, 158, 11, .14); color: #fbbf24; border-color: rgba(245, 158, 11, .45); }
.roster-empty { color: var(--text-3); font-size: 12px; }
.roster-status { font-size: 12px; font-weight: 600; color: var(--text-2); white-space: nowrap; }
.roster-status.is-blocked { color: var(--urgent); }
.roster-status.is-left { color: var(--text-3); }
.roster-status.is-leaving { color: #b45309; }
.roster-status.is-none { color: var(--text-3); font-weight: 500; cursor: help; }
.roster-sw-cell { display: flex; align-items: center; }
.roster-company-block { margin-top: 10px; }
.roster-company-head { margin-top: 6px; }
.roster-dept { margin-top: 4px; }
.roster-dept-name { padding: 10px 4px 4px; }
/* 명단 회사별 좌우 두 칸 (2026-10-15) */
.roster-cols { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 28px; align-items: start; }
.roster-col { min-width: 0; }
.roster-col + .roster-col { border-left: 1px solid var(--border); padding-left: 28px; }
.roster-col-head { display: flex; align-items: center; gap: 8px; font-size: 14px; font-weight: 800; color: var(--text); padding: 8px 0 6px; border-bottom: 2px solid var(--primary); margin-top: 6px; }
.roster-col-head em { font-style: normal; font-size: 11px; font-weight: 700; color: var(--primary); background: var(--primary-soft); padding: 2px 8px; border-radius: 999px; }
.roster-col .roster-company-block { margin-top: 0; }
.roster-row .roster-email { font-size: 11.5px; }
.roster-row .roster-pos { padding: 1px 6px; font-size: 11px; }
.roster-col .roster-dept-name { padding: 8px 2px 2px; }
@media (max-width: 1280px) { .roster-cols { grid-template-columns: minmax(0, 1fr); } .roster-col + .roster-col { border-left: 0; padding-left: 0; margin-top: 18px; } }
/* 명단 이메일 글씨 · 로그인 스위치 축소 (2026-10-15) */
.roster-row .roster-email { font-size: 11px; }
.roster-row .roster-switch { width: 30px; height: 17px; }
.roster-row .roster-switch-knob { top: 2px; left: 2px; width: 13px; height: 13px; }
.roster-row .roster-switch.on .roster-switch-knob { left: 15px; }
/* 명단 수정·추가 창 추천안 (2026-10-15): 요약 · 칸 이름 · 팀 알약 · 권한 스위치 */
.modal.roster-edit-modal { width: min(560px, calc(100vw - 32px)); max-width: 560px; }
.re-summary { display: flex; gap: 12px; align-items: flex-start; padding: 12px 14px; margin-top: 10px; border-radius: 12px; background: var(--surface-2); border: 1px solid var(--border); }
.re-avatar { width: 40px; height: 40px; font-size: 16px; flex-shrink: 0; }
.re-summary-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.re-summary-name { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }
.re-summary-name b { font-size: 15px; color: var(--text); }
.re-summary-name span { font-size: 12px; color: var(--text-2); }
.re-summary-email { font-size: 12px; color: var(--text-3); }
.re-summary-chips { display: flex; gap: 5px; flex-wrap: wrap; margin-top: 4px; }
.re-chip { font-size: 11px; font-weight: 600; padding: 2px 9px; border-radius: 999px; background: var(--surface); border: 1px solid var(--border); color: var(--text-2); }
.re-chip.is-ok { color: var(--success); border-color: var(--success); }
.re-chip.is-bad { color: var(--urgent); border-color: var(--urgent); }
.re-chip.is-mute { color: var(--text-3); border-style: dashed; }
.re-chip.is-master { background: var(--primary-soft); color: var(--primary); border-color: var(--primary); }
.re-chip.is-perm { background: #fff4e5; color: #b45309; border-color: #f5c27a; }
body.dark .re-chip.is-perm { background: rgba(245, 158, 11, .14); color: #fbbf24; border-color: rgba(245, 158, 11, .45); }
.re-sec { font-size: 12.5px; font-weight: 700; color: var(--text); margin: 18px 0 8px; padding-bottom: 6px; border-bottom: 1px solid var(--border); display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }
.re-sec-hint { font-size: 11.5px; font-weight: 500; color: var(--text-3); }
.re-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 12px; }
.re-field { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.re-label { font-size: 11.5px; font-weight: 600; color: var(--text-3); }
.re-field .settings-select, .re-field .rec-input { width: 100%; margin: 0; }
.re-teams { display: flex; flex-direction: column; gap: 10px; }
.re-team-co { display: flex; align-items: center; gap: 8px; font-size: 12px; font-weight: 700; color: var(--text-2); margin-bottom: 5px; }
.re-team-all { border: 0; background: none; color: var(--primary); font-size: 11.5px; font-weight: 600; cursor: pointer; padding: 0; font-family: inherit; }
.re-team-all:hover { text-decoration: underline; }
.re-pills { display: flex; flex-wrap: wrap; gap: 6px; }
.re-pill { position: relative; cursor: pointer; }
.re-pill input { position: absolute; opacity: 0; width: 0; height: 0; }
.re-pill span { display: inline-flex; align-items: center; height: 28px; padding: 0 12px; border-radius: 999px; border: 1px solid var(--border); background: var(--surface); color: var(--text-2); font-size: 12.5px; font-weight: 600; transition: background .12s, color .12s, border-color .12s; }
.re-pill:hover span { border-color: var(--primary); color: var(--primary); }
.re-pill input:checked + span { background: var(--primary-soft); border-color: var(--primary); color: var(--primary); }
.re-pill input:checked + span::before { content: "✓"; margin-right: 5px; font-size: 11px; }
.re-pill input:focus-visible + span { outline: 2px solid var(--primary); outline-offset: 2px; }
.re-perms { display: flex; flex-direction: column; }
.re-perm { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 9px 2px; border-bottom: 1px solid var(--border); cursor: pointer; }
.re-perm:last-child { border-bottom: 0; }
.re-perm-text { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.re-perm-text b { font-size: 13px; font-weight: 600; color: var(--text); }
.re-perm-text em { font-style: normal; font-size: 11.5px; color: var(--text-3); }
.re-toggle { width: 34px; height: 20px; }
.re-toggle .toggle-thumb { top: 3px; left: 3px; width: 14px; height: 14px; }
.re-toggle input:checked ~ .toggle-thumb { transform: translateX(14px); }
.re-date { width: 200px; }
.re-actions { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 20px; padding-top: 14px; border-top: 1px solid var(--border); }
.re-actions-right { display: flex; gap: 8px; align-items: center; }
.re-actions .btn-primary { min-width: 72px; white-space: nowrap; }
.re-delete { border: 0; background: none; color: var(--urgent); font-size: 12.5px; font-weight: 600; cursor: pointer; padding: 6px 4px; font-family: inherit; }
.re-delete:hover { text-decoration: underline; }
@media (max-width: 560px) { .re-grid { grid-template-columns: 1fr; } }/* 수정 창 한 화면에 들어오게 촘촘히 */
.roster-edit-modal .re-sec { margin: 12px 0 6px; padding-bottom: 4px; }
.roster-edit-modal .re-summary { padding: 10px 12px; margin-top: 6px; }
.roster-edit-modal .re-perm { padding: 6px 2px; }
.roster-edit-modal .re-teams { gap: 6px; }
.roster-edit-modal .re-team-co { margin-bottom: 4px; }
.roster-edit-modal .re-pill span { height: 26px; padding: 0 11px; }
.roster-edit-modal .re-grid { gap: 8px 12px; }
.roster-edit-modal .re-actions { margin-top: 14px; padding-top: 12px; }/* 열람 팀 '+N' — 마우스를 올리면 나머지 팀 말풍선 (2026-10-15) */
.roster-badge-more { position: relative; cursor: default; }
.roster-badge-more:hover, .roster-badge-more:focus-visible { color: var(--primary); border-color: var(--primary); outline: none; }
.roster-more-pop { display: none; position: absolute; right: 0; bottom: calc(100% + 6px); z-index: 20; flex-wrap: wrap; gap: 4px; width: max-content; max-width: 240px; padding: 8px; border-radius: 10px; background: var(--surface); border: 1px solid var(--border); box-shadow: 0 6px 18px rgba(0,0,0,.14); }
.roster-more-pop span { font-size: 11px; font-weight: 600; padding: 2px 8px; border-radius: 999px; background: var(--surface-2); border: 1px solid var(--border); color: var(--text-2); white-space: nowrap; }
.roster-badge-more:hover .roster-more-pop, .roster-badge-more:focus-visible .roster-more-pop { display: flex; }
/* 명단 부서(팀) 구분 띠 — 회색 작은 글씨라 묻히던 것 (2026-10-15) */
.roster-col .roster-dept { margin-top: 12px; }
.roster-col .roster-company-block > .roster-dept:first-child { margin-top: 6px; }
.roster-col .roster-dept-name { display: flex; align-items: center; gap: 8px; padding: 6px 10px; margin-bottom: 2px; background: var(--surface-2); border-left: 3px solid var(--primary); border-radius: 0; font-size: 12.5px; font-weight: 800; color: var(--text); letter-spacing: -.01em; }
.roster-col .roster-dept-count { font-size: 11px; font-weight: 700; color: var(--primary); background: var(--primary-soft); padding: 1px 8px; border-radius: 999px; }.roster-col .roster-dept-name { background: color-mix(in srgb, var(--primary) 8%, var(--surface)); }
.roster-col .roster-dept-count { background: var(--surface); }
/* 팀 안 순서 끌어 옮기기 (2026-10-15) */
.roster-grip { color: var(--text-3); font-size: 13px; line-height: 1; cursor: grab; user-select: none; opacity: .35; text-align: center; }
.roster-row:hover .roster-grip { opacity: 1; }
.roster-grip:active { cursor: grabbing; }
.roster-list.is-filtered .roster-grip, #rosterList.is-filtered .roster-grip { visibility: hidden; }
.roster-row.is-dragging { opacity: .4; }
.roster-row.drop-before { box-shadow: inset 0 2px 0 var(--primary); }
.roster-row.drop-after { box-shadow: inset 0 -2px 0 var(--primary); }
.roster-order-reset { margin-left: auto; border: 1px solid var(--border); background: var(--surface); color: var(--text-2); font-size: 11px; font-weight: 600; padding: 2px 9px; border-radius: 999px; cursor: pointer; font-family: inherit; }
.roster-order-reset:hover { color: var(--primary); border-color: var(--primary); }/* 손잡이 — 처음처럼 평소엔 흐리게, 줄에 마우스를 올리면 진하게 (2026-10-15) */
.roster-grip { display: inline-flex; align-items: center; justify-content: center; width: 16px; height: 24px; color: var(--text-3); opacity: .35; }
.roster-row:hover .roster-grip { opacity: 1; }/* 이름 칸 넘침 방지 — 긴 직급(매니저(파트장) 등)은 말줄임, 마우스 올리면 전체 */
.roster-row .roster-person { overflow: hidden; }
.roster-row .roster-name { flex-shrink: 0; }
.roster-row .roster-pos { min-width: 0; flex-shrink: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* 일본만화·웹툰 단행본 = 출판IP 프로모션 캘린더 보기 전용 (2026-10-15) */
.promo-filters { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.promo-filters .sch-count-sel { width: auto; height: 32px; padding: 4px 8px; }
.promo-ro { font-size: 11.5px; font-weight: 600; color: var(--text-3); padding: 3px 10px; border-radius: 999px; background: var(--surface-2); border: 1px solid var(--border); }
.promo-week .sch-week-bg { position: static; }
.promo-cell { display: flex; flex-direction: column; gap: 3px; overflow: hidden; cursor: default; }
.promo-blocks { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.promo-block { display: flex; flex-direction: column; align-items: flex-start; gap: 0; width: 100%; min-width: 0; border: 0; border-radius: 6px; padding: 3px 6px; text-align: left; font-family: inherit; cursor: pointer; line-height: 1.3; }
.promo-block b { font-size: 11px; font-weight: 800; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
.promo-block span { font-size: 11px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
.promo-block:hover { filter: brightness(.97); }
.promo-block.is-sel { box-shadow: 0 0 0 2px currentColor inset; }
.promo-block.is-off { opacity: .5; }
.promo-more { font-size: 11px; font-weight: 700; color: var(--text-3); padding-left: 4px; cursor: help; }
.promo-type { display: inline-block; font-size: 11px; font-weight: 800; padding: 1px 8px; border-radius: 999px; margin-right: 6px; vertical-align: 1px; }
.promo-type.sm { font-size: 10.5px; padding: 0 6px; margin-right: 5px; }
.promo-kv { display: flex; gap: 10px; font-size: 12.5px; padding: 3px 0; }
.promo-kv span { width: 52px; flex-shrink: 0; color: var(--text-3); font-weight: 600; }
.promo-kv b { font-weight: 600; color: var(--text); }
.promo-hint { margin-top: 8px; font-size: 11.5px; color: var(--text-3); }
.promo-link { border: 0; background: none; padding: 0; color: var(--primary); font-weight: 700; font-size: 11.5px; cursor: pointer; font-family: inherit; }
.promo-link:hover { text-decoration: underline; }
.promo-error { margin: 6px 0; padding: 8px 12px; border-radius: 8px; background: var(--urgent-soft); color: var(--urgent); font-size: 12.5px; font-weight: 600; }
/* 업무일지 '내일 할 일' — 나만 보기 (2026-10-21) */
.jr-sec-note { font-size: 11px; font-weight: 500; color: var(--text-3); margin-left: 4px; }
.jr-sec.is-private .rec-textarea { background: var(--surface-2); border-style: dashed; }

/* 업무일지 주/월 — 인원별로 이어 보기 (2026-10-21) */
.jw-people { display: flex; flex-wrap: wrap; gap: 6px; margin: 4px 0 12px; }
.jw-chip { font-family: inherit; font-size: 12.5px; font-weight: 600; padding: 4px 12px; border-radius: 999px; border: 1px solid var(--border); background: var(--surface); color: var(--text-2); cursor: pointer; }
.jw-chip:hover { border-color: var(--primary); color: var(--primary); }
.jw-chip.on { background: var(--primary); border-color: var(--primary); color: #fff; }
.jw-list { display: flex; flex-direction: column; gap: 12px; }
.jw-card { padding: 14px 16px; }
.jw-head { display: flex; align-items: center; gap: 6px; padding-bottom: 8px; border-bottom: 1px solid var(--border); margin-bottom: 4px; }
.jw-head .sch-add-hint { margin-left: auto; }
.jw-day { display: grid; grid-template-columns: 64px minmax(0, 1fr) auto; gap: 12px; align-items: start; padding: 9px 0; border-bottom: 1px dashed var(--border); }
.jw-day:last-child { border-bottom: 0; }
.jw-date { font-size: 13px; font-weight: 700; color: var(--text); display: flex; flex-direction: column; line-height: 1.25; }
.jw-date em { font-style: normal; font-size: 11px; font-weight: 500; color: var(--text-3); }
.jw-date.sun em { color: var(--urgent); }
.jw-date.sat em { color: #2563eb; }
.jw-date.is-today { color: var(--primary); }
.jw-body { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.jw-sec { display: grid; grid-template-columns: 64px minmax(0, 1fr); gap: 8px; font-size: 13px; line-height: 1.6; }
.jw-sec > span { font-size: 11.5px; font-weight: 700; color: var(--text-3); padding-top: 1px; }
.jw-sec > div { white-space: pre-wrap; word-break: break-word; color: var(--text); }
.jw-sec.is-private > span { color: var(--text-3); }
.jw-sec.is-private > div { color: var(--text-2); }
.jw-edit { align-self: start; }
@media (max-width: 640px) { .jw-day { grid-template-columns: 1fr; } .jw-sec { grid-template-columns: 1fr; gap: 2px; } }

/* 업무일지 주 — 가로 표 · 월 — 달력 (2026-10-21) */
.jwk-card { padding: 0; overflow: hidden; }
.jwk-scroll { overflow-x: auto; }
.jwk-table { border-collapse: separate; border-spacing: 0; width: 100%; min-width: 760px; table-layout: fixed; }
.jwk-table th, .jwk-table td { border-bottom: 1px solid var(--border); border-right: 1px solid var(--border); vertical-align: top; }
.jwk-corner, .jwk-name { position: sticky; left: 0; z-index: 1; background: var(--surface); width: 120px; text-align: left; padding: 10px 12px; font-size: 12.5px; }
.jwk-corner { color: var(--text-3); font-weight: 600; background: var(--surface-2); }
.jwk-name { display: table-cell; }
.jwk-name .jr-name { display: block; font-weight: 700; }
.jwk-dh { background: var(--surface-2); padding: 8px 6px; font-size: 12.5px; font-weight: 700; color: var(--text); text-align: left; }
.jwk-dh em { font-style: normal; font-weight: 500; color: var(--text-3); margin-left: 4px; }
.jwk-dh.sun em { color: var(--urgent); } .jwk-dh.sat em { color: #2563eb; }
.jwk-dh.is-today { color: var(--primary); }
.jwk-c { padding: 0; }
.jwk-c.wk { background: var(--surface-2); }
.jwk-c.is-today { background: var(--primary-soft); }
.jwk-btn { display: block; width: 100%; height: 100%; min-height: 64px; text-align: left; border: 0; background: none; padding: 8px 9px; font-family: inherit; cursor: pointer; color: var(--text); }
.jwk-btn:hover { background: rgba(79, 70, 229, .05); }
.jwk-done { font-size: 12.5px; line-height: 1.55; white-space: pre-wrap; word-break: break-word; }
.jwk-issue, .jwk-next { margin-top: 6px; font-size: 12px; line-height: 1.5; white-space: pre-wrap; word-break: break-word; color: var(--text-2); }
.jwk-issue b, .jwk-next b { display: block; font-size: 10.5px; color: #b45309; }
.jwk-next b { color: var(--text-3); }
.jmc-card { padding: 10px; }
.jmc-dow { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); text-align: center; font-size: 12px; font-weight: 700; color: var(--text-3); padding-bottom: 6px; }
.jmc-dow .sun { color: var(--urgent); } .jmc-dow .sat { color: #2563eb; }
.jmc-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); border-top: 1px solid var(--border); border-left: 1px solid var(--border); }
.jmc-cell { min-height: 112px; border: 0; border-right: 1px solid var(--border); border-bottom: 1px solid var(--border); background: var(--surface); padding: 6px 7px; text-align: left; font-family: inherit; display: flex; flex-direction: column; gap: 3px; cursor: pointer; color: var(--text); min-width: 0; }
.jmc-cell:hover { background: var(--surface-2); }
.jmc-cell.is-blank { background: var(--surface-2); cursor: default; }
.jmc-cell.is-today { background: var(--primary-soft); }
.jmc-num { font-size: 13px; font-weight: 800; }
.jmc-cell.sun .jmc-num { color: var(--urgent); } .jmc-cell.sat .jmc-num { color: #2563eb; }
.jmc-cell.is-today .jmc-num { color: var(--primary); }
.jmc-item { font-size: 11.5px; line-height: 1.4; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--text-2); }
.jmc-item b { color: var(--text); margin-right: 4px; }
.jmc-dot { display: inline-block; width: 6px; height: 6px; border-radius: 50%; background: #f59e0b; margin-left: 4px; vertical-align: middle; }
.jmc-text { font-size: 12px; line-height: 1.5; white-space: pre-wrap; word-break: break-word; }
.jmc-issue, .jmc-next { font-size: 11.5px; line-height: 1.45; color: var(--text-2); white-space: pre-wrap; word-break: break-word; margin-top: 2px; }
.jmc-issue b, .jmc-next b { display: block; font-size: 10.5px; color: #b45309; }
.jmc-next b { color: var(--text-3); }
.jmc-person { padding-top: 5px; margin-top: 3px; border-top: 1px dashed var(--border); }
.jmc-person:first-of-type { border-top: 0; margin-top: 0; padding-top: 2px; }
.jmc-who { display: block; font-size: 11.5px; color: var(--primary); }
.jmc-more { font-size: 10.5px; font-weight: 700; color: var(--text-3); }
@media (max-width: 720px) { .jmc-cell { min-height: 72px; } .jmc-item, .jmc-text { font-size: 10.5px; } }

/* 업무일지 주 — 사람 사이 구분 (2026-10-22): 줄무늬 · 사람 경계선은 또렷하게, 날짜 세로선은 옅게 */
.jwk-table td, .jwk-table th { border-right-color: color-mix(in srgb, var(--border) 50%, transparent); }
.jwk-table tbody tr > * { border-bottom-color: color-mix(in srgb, var(--text-3) 35%, var(--border)); }
.jwk-table tbody tr:last-child > * { border-bottom-color: var(--border); }
.jwk-table tbody tr:nth-child(even) > * { background: color-mix(in srgb, var(--surface-2) 70%, var(--surface)); }
.jwk-table tbody tr:nth-child(even) > .jwk-c.is-today, .jwk-table tbody tr > .jwk-c.is-today { background: var(--primary-soft); }
.jwk-table .jwk-name { border-right: 1px solid var(--border); padding-top: 11px; }
.jwk-table .jwk-name .jr-name { font-size: 13.5px; }

/* 재무 업무 체크 (2026-10-21) — 구글 시트 '재무 달력'을 옮긴 보기 */
.fin-mode { display: inline-flex; border: 1px solid var(--border); border-radius: 999px; padding: 2px; background: var(--surface); margin-right: 8px; }
.fin-mode-btn { font-family: inherit; font-size: 12.5px; font-weight: 600; padding: 4px 12px; border: 0; border-radius: 999px; background: none; color: var(--text-2); cursor: pointer; }
.fin-mode-btn.is-on { background: var(--primary); color: #fff; }
.fin-modebar { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; margin-bottom: 10px; }
.fin-legend { margin-left: auto; display: inline-flex; gap: 10px; font-size: 11.5px; color: var(--text-3); }
.fin-lg { display: inline-flex; align-items: center; gap: 4px; }
.fin-lg-sp::before, .fin-lg-an::before { content: ""; width: 10px; height: 10px; border-radius: 3px; }
.fin-lg-sp { color: #1d4ed8; } .fin-lg-sp::before { background: #dbe4ff; border: 1px solid #93a8f5; }
.fin-lg-an { color: #be123c; } .fin-lg-an::before { background: #ffe0e7; border: 1px solid #f4a3b5; }
.fin-grid { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 14px; align-items: start; }
.fin-cal-card { padding: 12px; }
.fin-dow { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); text-align: center; font-size: 12px; font-weight: 700; color: var(--text-3); padding: 4px 0 6px; }
.fin-weeks { display: flex; flex-direction: column; border-top: 1px solid var(--border); border-left: 1px solid var(--border); }
.fin-week { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); }
.fin-day { min-height: 110px; border-right: 1px solid var(--border); border-bottom: 1px solid var(--border); padding: 6px 6px 4px; display: flex; flex-direction: column; gap: 2px; min-width: 0; background: var(--surface); }
.fin-day.is-out { background: var(--surface-2); }
.fin-day.is-out .fin-dnum { color: var(--text-3); }
.fin-day.is-today { background: var(--primary-soft); }
.fin-day-top { display: flex; align-items: center; gap: 6px; min-height: 20px; }
.fin-dnum { font-family: inherit; font-size: 12.5px; font-weight: 800; color: var(--text); border: 0; background: none; padding: 0; cursor: pointer; }
.fin-dnum:hover { color: var(--primary); }
.fin-day.is-today .fin-dnum { color: var(--primary); }
.fin-day.is-hol .fin-dnum { color: var(--urgent); }
.fin-cnt { margin-left: auto; font-size: 10.5px; font-weight: 700; color: var(--text-3); }
.fin-cnt.is-all { color: #16a34a; }
.fin-head { font-family: inherit; text-align: left; font-size: 11.5px; font-weight: 700; color: #6d28d9; background: #f3edff; border: 0; border-radius: 4px; padding: 2px 6px; cursor: pointer; }
.fin-head.is-annual { color: #be123c; background: #ffe0e7; }
.fin-list { display: flex; flex-direction: column; gap: 1px; }
.fin-it { display: flex; align-items: flex-start; gap: 5px; border-radius: 4px; padding: 1px 3px; }
.fin-it.has-tint { background: color-mix(in srgb, var(--fin-tint) 55%, transparent); }
.fin-it.is-special { background: #eef2ff; }
.fin-it.is-annual { background: #fff0f3; box-shadow: inset 2px 0 0 #f43f5e; }
.fin-chk { margin: 3px 0 0; flex: none; accent-color: var(--primary); cursor: pointer; }
.fin-tx { font-family: inherit; text-align: left; font-size: 12px; line-height: 1.45; color: var(--text); border: 0; background: none; padding: 0; cursor: pointer; word-break: break-word; min-width: 0; }
.fin-tx:hover { text-decoration: underline; text-decoration-color: var(--border); }
.fin-it.is-special .fin-tx, .fin-mj.is-special .fin-tx { color: #1d4ed8; }
.fin-it.is-done .fin-tx { color: var(--text-3); }
.fin-it.is-done.is-special .fin-tx { color: #7b8fd6; }
.fin-it.is-strike .fin-tx, .fin-mj.is-strike .fin-tx, .fin-head.is-strike { text-decoration: line-through; }
.fin-it.is-virtual { opacity: .6; }
.fin-note-ic { font-size: 10px; margin-left: 3px; }
.fin-sub { display: inline-block; font-size: 10px; font-weight: 700; color: var(--text-3); border: 1px solid var(--border); border-radius: 3px; padding: 0 3px; margin-right: 4px; }
.fin-addrow { margin-top: auto; display: flex; gap: 4px; }
.fin-add { font-family: inherit; font-size: 11px; color: var(--text-3); border: 0; background: none; padding: 2px 3px; cursor: pointer; opacity: 0; }
.fin-day:hover .fin-add, .fin-side .fin-add, .fin-add:focus { opacity: 1; }
.fin-add:hover { color: var(--primary); }
.fin-inline, .fin-inline-owner { font-size: 12px; padding: 4px 6px; min-width: 0; }
.fin-inline { flex: 1; }
.fin-inline-owner { width: 70px; flex: none; }
.fin-side { display: flex; flex-direction: column; gap: 12px; position: sticky; top: 72px; }
.fin-side-card { padding: 14px; }
.fin-side-card .card-title { margin-bottom: 8px; }
.fin-major { list-style: none; margin: 0 0 4px; padding: 0; display: flex; flex-direction: column; gap: 4px; }
.fin-mj { display: flex; align-items: flex-start; gap: 6px; border-radius: 4px; padding: 2px 3px; }
.fin-mj.is-special { background: #eef2ff; }
.fin-mj-n { flex: none; width: 18px; height: 18px; border-radius: 50%; background: #ffe0e7; color: #be123c; font-size: 10.5px; font-weight: 800; display: inline-flex; align-items: center; justify-content: center; margin-top: 1px; }
.fin-mj .fin-tx { flex: 1; }
.fin-owner { flex: none; font-size: 11px; font-weight: 700; color: var(--text-2); background: var(--surface-2); border-radius: 999px; padding: 1px 8px; }
.fin-memos .fin-it { padding: 2px 3px; }
.fin-import .caption-note { margin-bottom: 8px; }
.fin-import-btn { cursor: pointer; display: inline-block; }
.fin-lbl { display: block; font-size: 12px; font-weight: 700; color: var(--text-2); margin: 10px 0 4px; }
.fin-row { display: flex; gap: 10px; flex-wrap: wrap; }
.fin-row > div { flex: 1; min-width: 120px; }
.fin-opts { display: flex; flex-wrap: wrap; gap: 6px 16px; margin: 12px 0 4px; font-size: 13px; }
.fin-opt { display: inline-flex; align-items: center; gap: 5px; cursor: pointer; }
.fin-opt .sch-add-hint { margin-left: 4px; }
.fin-virtual-note { background: #fff0f3; border-radius: 6px; padding: 6px 8px; margin-bottom: 4px; }
.fin-del { color: var(--urgent); }
@media (max-width: 1100px) { .fin-grid { grid-template-columns: 1fr; } .fin-side { position: static; } }
@media (max-width: 720px) { .fin-week { grid-template-columns: 1fr; } .fin-dow { display: none; } .fin-day.is-out { display: none; } .fin-add { opacity: 1; } }

/* 재무 캘린더 단추(경리/정산/총무) — 캘린더 머리 오른쪽 위에 고정 (2026-10-21) */
.fin-cal-card .sch-cal-header { position: relative; }
.fin-subtabs { position: absolute; right: 0; top: 50%; transform: translateY(-50%); }
.fin-subtabs .fin-mode { margin-right: 0; }
.fin-modebar .fin-legend { margin-left: auto; }
@media (max-width: 720px) { .fin-cal-card .sch-cal-header { flex-wrap: wrap; } .fin-subtabs { position: static; transform: none; width: 100%; display: flex; justify-content: flex-end; margin-top: 6px; } }

/* 재무 표시 (2026-10-21 개편): 메모 = 노란 바탕(자동), 표시 드롭다운 — 특이 건 파랑 · 중요 업무 빨강 · 연간 고정 보라 */
.fin-it.is-special, .fin-it.is-annual, .fin-mj.is-special { background: none; box-shadow: none; }
.fin-it.has-note, .fin-mj.has-note { background: #fff6bf; }
.fin-it.mk-special, .fin-mj.mk-special { box-shadow: inset 2px 0 0 #3b82f6; }
.fin-it.mk-important, .fin-mj.mk-important { box-shadow: inset 2px 0 0 #ef4444; }
.fin-it.mk-annual, .fin-mj.mk-annual { box-shadow: inset 2px 0 0 #8b5cf6; }
.fin-it.mk-special .fin-tx, .fin-mj.mk-special .fin-tx { color: #1d4ed8; }
.fin-it.mk-important .fin-tx, .fin-mj.mk-important .fin-tx { color: #dc2626; }
.fin-it.mk-annual .fin-tx, .fin-mj.mk-annual .fin-tx { color: #7c3aed; }
.fin-it.is-done .fin-tx { opacity: .82; }
.fin-it.is-done:not([class*="mk-"]) .fin-tx { color: var(--text-2); }
.fin-head { color: var(--text); background: var(--surface-2); }
.fin-head.has-note { background: #fff6bf; }
.fin-head.mk-special { color: #1d4ed8; background: #e7edff; }
.fin-head.mk-important { color: #dc2626; background: #ffe4e6; }
.fin-head.mk-annual { color: #7c3aed; background: #efe7ff; }
.fin-lg-note::before, .fin-lg-im::before { content: ""; width: 10px; height: 10px; border-radius: 3px; }
.fin-lg-note { color: #a16207; } .fin-lg-note::before { background: #fff6bf; border: 1px solid #f0d95c; }
.fin-lg-sp { color: #1d4ed8; } .fin-lg-sp::before { background: #3b82f6; border: 0; }
.fin-lg-im { color: #dc2626; } .fin-lg-im::before { background: #ef4444; }
.fin-lg-an { color: #7c3aed; } .fin-lg-an::before { background: #8b5cf6; border: 0; }

/* 재무 표시 칸 칠하기 (2026-10-21) — 특이 건·중요 업무·연간 고정은 칸 전체를 칠하고, 메모(노랑)보다 우선 */
.fin-it.mk-special, .fin-mj.mk-special, .fin-it.has-note.mk-special, .fin-mj.has-note.mk-special { background: #dce8ff; box-shadow: none; }
.fin-it.mk-important, .fin-mj.mk-important, .fin-it.has-note.mk-important, .fin-mj.has-note.mk-important { background: #ffe0e3; box-shadow: none; }
.fin-it.mk-annual, .fin-mj.mk-annual, .fin-it.has-note.mk-annual, .fin-mj.has-note.mk-annual { background: #ece3ff; box-shadow: none; }
.fin-head.has-note.mk-special { background: #dce8ff; }
.fin-head.has-note.mk-important { background: #ffe0e3; }
.fin-head.has-note.mk-annual { background: #ece3ff; }
.fin-lg-sp::before { background: #dce8ff; border: 1px solid #93b0f5; }
.fin-lg-im::before { background: #ffe0e3; border: 1px solid #f5a3ad; }
.fin-lg-an::before { background: #ece3ff; border: 1px solid #b9a0f2; }

/* 체크박스 공통 (2026-10-21) — 체크 안 된 상태가 검은 테두리로 튀지 않게 옅은 회색 테두리 + 체크되면 보라 채움.
   :where() 로 우선순위를 0으로 둬서, 칸마다 정한 크기·여백(.sch-part-check input 등)과 스위치(.toggle input)는 그대로 따른다 */
:where(input[type="checkbox"]) {
  -webkit-appearance: none; appearance: none; display: inline-block; vertical-align: middle; flex: none;
  width: 15px; height: 15px; border: 1.5px solid #c5cad6; border-radius: 4px; background: var(--surface, #fff) no-repeat center / 11px 11px;
  cursor: pointer; transition: background-color .12s, border-color .12s;
}
:where(input[type="checkbox"]):hover { border-color: var(--primary); }
:where(input[type="checkbox"]):checked {
  background-color: var(--primary); border-color: var(--primary);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 6.2l2.3 2.3 4.7-4.9' fill='none' stroke='%23fff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}
:where(input[type="checkbox"]):focus-visible { outline: 2px solid color-mix(in srgb, var(--primary) 45%, transparent); outline-offset: 1px; }
:where(input[type="checkbox"]):disabled { opacity: .5; cursor: default; }
body.dark :where(input[type="checkbox"]:not(:checked)) { border-color: #4a5063; }

/* 재무 표시·체크박스 — 다크 모드 (2026-10-21): 밝은 바탕 대신 반투명 색 + 밝은 글씨 */
body.dark .fin-it.has-note, body.dark .fin-mj.has-note, body.dark .fin-head.has-note { background: rgba(250, 204, 21, .16); }
body.dark .fin-it.mk-special, body.dark .fin-mj.mk-special, body.dark .fin-it.has-note.mk-special, body.dark .fin-mj.has-note.mk-special, body.dark .fin-head.mk-special, body.dark .fin-head.has-note.mk-special { background: rgba(59, 130, 246, .22); }
body.dark .fin-it.mk-important, body.dark .fin-mj.mk-important, body.dark .fin-it.has-note.mk-important, body.dark .fin-mj.has-note.mk-important, body.dark .fin-head.mk-important, body.dark .fin-head.has-note.mk-important { background: rgba(239, 68, 68, .22); }
body.dark .fin-it.mk-annual, body.dark .fin-mj.mk-annual, body.dark .fin-it.has-note.mk-annual, body.dark .fin-mj.has-note.mk-annual, body.dark .fin-head.mk-annual, body.dark .fin-head.has-note.mk-annual { background: rgba(139, 92, 246, .26); }
body.dark .fin-it.mk-special .fin-tx, body.dark .fin-mj.mk-special .fin-tx, body.dark .fin-head.mk-special { color: #9dbbff; }
body.dark .fin-it.mk-important .fin-tx, body.dark .fin-mj.mk-important .fin-tx, body.dark .fin-head.mk-important { color: #fca5a5; }
body.dark .fin-it.mk-annual .fin-tx, body.dark .fin-mj.mk-annual .fin-tx, body.dark .fin-head.mk-annual { color: #c9b6ff; }
body.dark .fin-it.has-tint:not(.has-note) { background: rgba(132, 204, 22, .14); }
body.dark .fin-mj-n { background: rgba(239, 68, 68, .22); color: #fca5a5; }
body.dark :where(input[type="checkbox"]:not(:checked)) { border-color: #6b7286; background-color: rgba(255, 255, 255, .04); }

/* 일정관리 팀 보기 탭 (2026-10-21) — 위쪽 큰 묶음은 탭, 캘린더 안 세부는 오른쪽 위 작은 단추 */
.sch-tabs { display: inline-flex; flex-wrap: wrap; gap: 2px; padding: 3px; background: var(--surface-2); border: 1px solid var(--border); border-radius: 10px; }
.sch-tab { font-family: inherit; font-size: 13px; font-weight: 600; color: var(--text-2); background: none; border: 0; border-radius: 8px; padding: 6px 16px; cursor: pointer; }
.sch-tab:hover { color: var(--text); }
.sch-tab.is-on { background: var(--surface); color: var(--text); box-shadow: 0 0 0 1px var(--border), 0 1px 2px rgba(15, 23, 42, .06); }
body.dark .sch-tab.is-on { background: rgba(255, 255, 255, .08); }
#panelSchedule .sch-cal-header { position: relative; }
.sch-subtabs { display: inline-flex; gap: 6px; }
/* 달력 칸이 좁으면(오른쪽 칸이 있는 화면 등) 하위 단추를 달력 오른쪽 위 한 줄로 올려 겹치지 않게 */
#panelSchedule .sch-calendar-card { container-type: inline-size; }
@container (max-width: 1060px) {
  .sch-cal-header:has(.sch-subtabs) { flex-wrap: wrap; }
  .sch-subtabs { position: static; transform: none; order: -1; width: 100%; justify-content: flex-end; margin-bottom: 2px; }
}

/* 일정관리 폴더 탭 (2026-10-21 A안) — 고른 탭이 아래 하위 줄(.sch-strip)과 한 판으로 이어진다 */
#scheduleContext { align-items: flex-start; }
#scheduleContext .team-context-label { padding-top: 9px; }
#scheduleContext .team-context-hint { padding-top: 9px; margin-left: auto; }
.sch-nav { display: flex; flex-direction: column; min-width: 0; flex: 1 1 auto; }
.sch-nav .sch-tabs { display: flex; flex-wrap: wrap; gap: 2px; padding: 0; background: none; border: 0; border-radius: 0; position: relative; z-index: 1; }
.sch-nav .sch-tab { font-family: inherit; font-size: 13px; font-weight: 600; color: var(--text-2); background: none; border: 1px solid transparent; border-bottom: 0; border-radius: 9px 9px 0 0; padding: 7px 16px 8px; cursor: pointer; box-shadow: none; }
.sch-nav .sch-tab:hover { color: var(--text); background: rgba(15, 23, 42, .03); }
.sch-nav .sch-tab.is-on { background: var(--surface); color: var(--primary); border-color: var(--border); margin-bottom: -1px; padding-bottom: 9px; box-shadow: none; }
.sch-nav:not(.has-strip) .sch-tab.is-on { border-bottom: 1px solid var(--border); border-radius: 9px; padding-bottom: 7px; margin-bottom: 0; }
.sch-strip { display: flex; align-items: center; flex-wrap: wrap; gap: 6px 4px; background: var(--surface); border: 1px solid var(--border); border-radius: 10px; padding: 7px 10px; align-self: flex-start; max-width: 100%; }
.sch-strip.is-first { border-top-left-radius: 0; }
.sch-strip-grp { display: inline-flex; align-items: center; gap: 2px; }
.sch-strip-cap { font-size: 11.5px; font-weight: 700; color: var(--text-3); margin: 0 6px 0 2px; }
.sch-strip-div { width: 1px; height: 18px; background: var(--border); margin: 0 10px; }
.sch-sb { font-family: inherit; font-size: 12.5px; font-weight: 600; color: var(--text-2); background: none; border: 0; border-radius: 999px; padding: 4px 12px; cursor: pointer; }
.sch-sb:hover { color: var(--text); background: var(--surface-2); }
.sch-sb.is-on { background: var(--primary); color: #fff; }
body.dark .sch-nav .sch-tab:hover { background: rgba(255, 255, 255, .05); }

/* 재무 '표시' 드롭다운 (2026-10-21) — 고른 값·목록 항목을 그 표시의 칸 색으로 */
.fin-msel { position: relative; }
.fin-msel-btn { width: 100%; text-align: left; font-family: inherit; font-size: 13.5px; font-weight: 600; padding: 8px 30px 8px 12px; border: 1px solid var(--border); border-radius: 8px; cursor: pointer; background: var(--surface); color: var(--text);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M3 4.5l3 3 3-3' fill='none' stroke='%236b7280' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 10px center; background-size: 12px; }
.fin-msel-list { position: absolute; left: 0; right: 0; top: calc(100% + 4px); z-index: 30; background: var(--surface); border: 1px solid var(--border); border-radius: 10px; padding: 5px; box-shadow: 0 8px 24px rgba(15, 23, 42, .12); display: flex; flex-direction: column; gap: 3px; }
.fin-msel-list.hidden { display: none; }
.fin-msel-opt { font-family: inherit; text-align: left; font-size: 13px; font-weight: 600; padding: 7px 10px; border: 1px solid transparent; border-radius: 7px; cursor: pointer; background: var(--surface); color: var(--text-2); }
.fin-msel-opt:hover { filter: brightness(.97); border-color: var(--border); }
.fin-msel-opt.is-on { border-color: currentColor; }
.fin-msel-opt.is-on::after { content: "✓"; float: right; }
.fin-msel-btn.mk-special, .fin-msel-opt.mk-special { background-color: #dce8ff; color: #1d4ed8; }
.fin-msel-btn.mk-important, .fin-msel-opt.mk-important { background-color: #ffe0e3; color: #dc2626; }
.fin-msel-btn.mk-annual, .fin-msel-opt.mk-annual { background-color: #ece3ff; color: #7c3aed; }
body.dark .fin-msel-btn.mk-special, body.dark .fin-msel-opt.mk-special { background-color: rgba(59, 130, 246, .22); color: #9dbbff; }
body.dark .fin-msel-btn.mk-important, body.dark .fin-msel-opt.mk-important { background-color: rgba(239, 68, 68, .22); color: #fca5a5; }
body.dark .fin-msel-btn.mk-annual, body.dark .fin-msel-opt.mk-annual { background-color: rgba(139, 92, 246, .26); color: #c9b6ff; }

/* 재무 '이번 달 모아 보기' 상자 (2026-10-21) */
.fin-w-tabs { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 4px; margin-bottom: 8px; }
.fin-w-tab { font-family: inherit; font-size: 11.5px; font-weight: 700; padding: 6px 4px; border-radius: 8px; border: 1px solid transparent; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 1px; line-height: 1.25; }
.fin-w-tab b { font-size: 15px; }
.fin-w-tab.is-on { border-color: currentColor; }
.fin-w-note { background: #fff6bf; color: #a16207; }
.fin-w-special { background: #dce8ff; color: #1d4ed8; }
.fin-w-important { background: #ffe0e3; color: #dc2626; }
.fin-w-annual { background: #ece3ff; color: #7c3aed; }
body.dark .fin-w-note { background: rgba(250, 204, 21, .16); color: #fde68a; }
body.dark .fin-w-special { background: rgba(59, 130, 246, .22); color: #9dbbff; }
body.dark .fin-w-important { background: rgba(239, 68, 68, .22); color: #fca5a5; }
body.dark .fin-w-annual { background: rgba(139, 92, 246, .26); color: #c9b6ff; }
.fin-w-list { display: flex; flex-direction: column; max-height: 340px; overflow-y: auto; }
.fin-w-row { font-family: inherit; text-align: left; display: flex; align-items: flex-start; gap: 8px; padding: 6px 4px; border: 0; border-bottom: 1px dashed var(--border); background: none; cursor: pointer; color: var(--text); }
.fin-w-row:last-child { border-bottom: 0; }
.fin-w-row:hover { background: var(--surface-2); }
.fin-w-date { flex: none; min-width: 34px; font-size: 11.5px; font-weight: 700; color: var(--text-3); padding-top: 1px; }
.fin-w-text { flex: 1; min-width: 0; font-size: 12.5px; line-height: 1.45; word-break: break-word; }
.fin-w-text em { display: block; font-style: normal; font-size: 11.5px; color: var(--text-3); white-space: pre-wrap; }
.fin-w-row.is-done .fin-w-text { color: var(--text-2); }
.fin-w-done { flex: none; font-size: 10.5px; font-weight: 700; color: #16a34a; padding-top: 2px; }
.fin-side { max-height: calc(100vh - 88px); overflow-y: auto; overscroll-behavior: contain; scrollbar-width: thin; }
@media (max-width: 1100px) { .fin-side { max-height: none; overflow: visible; } }

/* 재무 범례(메모·특이 건·중요 업무·연간 고정)를 캘린더 머리 오른쪽 안으로 (2026-10-21) */
.fin-legend-in { position: absolute; right: 4px; top: 50%; transform: translateY(-50%); margin-left: 0; }
@container (max-width: 760px) { .fin-legend-in { position: static; transform: none; width: 100%; justify-content: flex-end; order: 5; margin-top: 4px; } }
.fin-cal-card { container-type: inline-size; }
.fin-cal-card .sch-cal-header { flex-wrap: wrap; }

/* 출간일정 '+ 항목 추가'를 오른쪽 위(전체·출간·이벤트 오른쪽)로 (2026-10-21) */
.sch-atabs .pub-add-btn { margin-left: 8px; }

/* 프로모션 달력 칸 (2026-10-21) — 넘쳐도 날짜 줄이 눌려 사라지지 않게 */
.promo-cell > .sch-day-top { flex-shrink: 0; }
.promo-blocks .promo-block { flex-shrink: 0; }
.promo-cell > .promo-blocks { flex-shrink: 0; }

/* 다른 사람 화면으로 보기 (2026-10-21) — 보는 중 띠 · 사람 고르기 창 */
#viewAsBar { position: fixed; top: 10px; left: 50%; transform: translateX(-50%); z-index: 2000; display: flex; align-items: center; gap: 6px; padding: 7px 8px 7px 14px; border-radius: 999px; background: #1f2937; color: #fff; font-size: 13px; box-shadow: 0 6px 20px rgba(15, 23, 42, .25); white-space: nowrap; }
#viewAsBar b { font-weight: 700; }
#viewAsBar .va-dept { font-size: 11.5px; color: #cbd5e1; margin-left: 2px; }
#viewAsBar .va-ro { color: #fbbf24; font-weight: 700; }
#viewAsBar button { font-family: inherit; font-size: 12.5px; font-weight: 700; border: 0; border-radius: 999px; padding: 4px 12px; margin-left: 6px; background: #fff; color: #1f2937; cursor: pointer; }
body.is-viewas #appRoot { box-shadow: inset 0 0 0 3px #fbbf24; }
.va-search { margin: 10px 0 8px; }
.va-list { max-height: 55vh; overflow-y: auto; display: flex; flex-direction: column; gap: 10px; }
.va-gname { font-size: 11.5px; font-weight: 700; color: var(--text-3); margin-bottom: 4px; }
.va-group { display: flex; flex-wrap: wrap; gap: 6px; }
.va-group .va-gname { width: 100%; }
.va-person { font-family: inherit; font-size: 13px; border: 1px solid var(--border); background: var(--surface); color: var(--text); border-radius: 999px; padding: 5px 12px; cursor: pointer; display: inline-flex; gap: 5px; align-items: baseline; }
.va-person span { font-size: 11px; color: var(--text-3); }
.va-person:hover { border-color: var(--primary); color: var(--primary); }
#viewAsBar { left: auto; right: 120px; top: 16px; transform: none; }
@media (max-width: 720px) { #viewAsBar { right: 8px; top: auto; bottom: 12px; } }

/* ── 출간일정 v2 (2026-10-22 퍼블리싱팀 1차 피드백) ── */
.pv-bar { flex-wrap: wrap; gap: 6px; }
.pv-search { display: inline-flex; align-items: center; border: 1px solid var(--border); border-radius: 9px; overflow: hidden; background: var(--surface); }
.pv-search select, .pv-search input { border: 0; background: var(--surface); color: var(--text); font-family: inherit; font-size: 12.5px; padding: 5px 8px; }
.pv-search select { border-right: 1px solid var(--border); color: var(--text-2); }
.pv-search input#pvQ { width: 180px; }
.pv-search .dp-input { width: 96px; border-right: 1px solid var(--border); cursor: pointer; }
.pv-cal { padding-bottom: 12px; }
.pv-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); border-top: 1px solid var(--border); border-left: 1px solid var(--border); }
.pv-cell { min-width: 0; min-height: 96px; border-right: 1px solid var(--border); border-bottom: 1px solid var(--border); padding: 5px 5px 7px; display: flex; flex-direction: column; gap: 3px; cursor: pointer; background: var(--surface); }
.pv-cell:hover { background: var(--surface-2); }
.pv-cell.is-empty { background: var(--surface-2); cursor: default; opacity: .5; }
.pv-cell.is-today { background: var(--primary-soft); }
.pv-cell.is-sel { box-shadow: inset 0 0 0 2px var(--primary); }
.pv-cell.is-sun .sch-daynum { color: var(--urgent); }
.pv-cell.is-sat .sch-daynum { color: #2563eb; }
.pv-top { display: flex; align-items: center; gap: 5px; min-height: 20px; }
.pv-memodot { width: 7px; height: 7px; border-radius: 50%; background: #e5b100; margin-left: auto; }
.pv-pub { display: flex; background: var(--surface); border: 1px solid var(--border); border-radius: 5px; overflow: hidden; font-size: 11.5px; line-height: 1.35; color: var(--text); }
.pv-pub i { flex: none; width: 4px; }
.pv-pub span { padding: 2px 5px; min-width: 0; word-break: break-word; }
.pv-pub b { font-weight: 600; }
.pv-pub em { font-style: normal; color: var(--text-3); font-size: 10.5px; }
.pv-ev { font-size: 11.5px; font-weight: 700; line-height: 1.35; padding: 1px 3px; word-break: break-word; }
.pv-dim { opacity: .22; }
.pv-legend { display: flex; flex-wrap: wrap; gap: 4px 12px; font-size: 11.5px; color: var(--text-2); }
.pv-legend span { display: inline-flex; align-items: center; gap: 4px; }
.pv-legend i { width: 10px; height: 10px; border-radius: 3px; }
.pv-side-card { display: flex; flex-direction: column; gap: 12px; padding: 14px; }
.pv-memo { background: #fff8d6; border: 1px solid #efdc85; border-radius: 10px; padding: 9px 11px; }
body.dark .pv-memo { background: rgba(250, 204, 21, .12); border-color: rgba(250, 204, 21, .35); }
.pv-memo-head { display: flex; align-items: center; gap: 6px; margin-bottom: 4px; font-size: 12.5px; }
.pv-memo-who { font-size: 10.5px; color: var(--text-3); }
.pv-memo-edit { margin-left: auto; }
.pv-memo-text { font-size: 12.5px; color: var(--text-2); white-space: pre-wrap; word-break: break-word; max-height: 180px; overflow-y: auto; }
.pv-memo-empty { color: var(--text-3); }
.pv-memo-input { width: 100%; box-sizing: border-box; font-size: 12.5px; }
.pv-memo-actions { display: flex; justify-content: flex-end; gap: 6px; margin-top: 6px; }
.btn-small.primary { background: var(--primary); border-color: var(--primary); color: #fff; }
.pv-daymemo { margin-top: 10px; }
.pv-results { margin-top: 12px; border-top: 1px solid var(--border); padding-top: 10px; display: flex; flex-direction: column; gap: 4px; }
.pv-results-head { font-size: 12.5px; font-weight: 700; color: var(--text-2); }
.pv-res { display: flex; align-items: center; gap: 10px; text-align: left; border: 0; background: none; padding: 3px 4px; border-radius: 6px; cursor: pointer; font-family: inherit; }
.pv-res:hover { background: var(--surface-2); }
.pv-res-date { flex: none; font-size: 11.5px; color: var(--text-3); font-variant-numeric: tabular-nums; width: 76px; }
.pv-res .pv-pub, .pv-res .pv-ev { flex: 1; min-width: 0; }
/* 큰 상세 창 */
.modal.pv-day-modal { width: min(1100px, 94vw); max-width: none; max-height: 90vh; overflow-y: auto; }
.pv-day-head { gap: 8px; }
.pv-count { font-size: 12px; color: var(--text-3); }
.pv-day-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; margin-top: 10px; }
.pv-day-cols h5 { margin: 0 0 6px; font-size: 12.5px; color: var(--text-3); }
.pv-row { display: flex; align-items: flex-start; gap: 8px; width: 100%; text-align: left; font-family: inherit; color: var(--text); background: none; border: 0; border-bottom: 1px dashed var(--border); padding: 8px 4px; }
button.pv-row { cursor: pointer; }
button.pv-row:hover { background: var(--surface-2); }
.pv-k { flex: none; font-size: 11px; font-weight: 700; color: #fff; border-radius: 4px; padding: 1px 6px; margin-top: 1px; }
.pv-row-main { flex: 1; min-width: 0; font-size: 13px; }
.pv-row-memo { display: block; font-size: 11.5px; color: var(--text-3); white-space: pre-wrap; }
.pv-row-sub { flex: none; font-size: 11.5px; color: var(--text-3); max-width: 45%; text-align: right; }
.pv-day-memo { margin-top: 14px; }
@media (max-width: 760px) { .pv-day-cols { grid-template-columns: 1fr; } .modal.pv-day-modal { width: 96vw; } }
/* 입력 창 */
.modal.pv-form-modal { width: min(640px, 94vw); max-width: none; }
.pv-form { display: grid; gap: 11px; margin-top: 6px; }
.pv-fl { display: grid; grid-template-columns: 92px minmax(0, 1fr); gap: 10px; align-items: start; }
.pv-fl > label { font-size: 12.5px; font-weight: 700; color: var(--text-2); padding-top: 6px; }
.pv-chips { display: flex; flex-wrap: wrap; gap: 5px; }
.pv-chip { font-family: inherit; font-size: 12.5px; border: 1px solid var(--border); border-radius: 999px; padding: 3px 11px; background: var(--surface); color: var(--text-2); cursor: pointer; display: inline-flex; align-items: center; gap: 5px; }
.pv-chip i { width: 9px; height: 9px; border-radius: 2px; }
.pv-chip.on { border-color: var(--primary); background: var(--primary-soft); color: var(--primary); font-weight: 700; }
.pv-note { font-size: 11.5px; color: var(--text-3); margin-top: 3px; }
.pv-plat { position: relative; display: flex; flex-direction: column; gap: 6px; }
.pv-plat-list { position: absolute; top: 100%; left: 0; right: 0; z-index: 20; margin-top: 4px; background: var(--surface); border: 1px solid var(--border); border-radius: 9px; padding: 5px; display: flex; flex-wrap: wrap; gap: 4px; box-shadow: 0 8px 22px rgba(15, 23, 42, .12); }
.pv-plat-list.hidden { display: none; }
.pv-plat-list button { font-family: inherit; font-size: 12.5px; border: 1px solid var(--border); background: var(--surface); color: var(--text); border-radius: 999px; padding: 3px 10px; cursor: pointer; }
.pv-plat-list button:hover { border-color: var(--primary); color: var(--primary); }
.pv-dates { display: flex; align-items: center; gap: 6px; }
.pv-dates .dp-input { width: 140px; }
.pv-form-modal .pv-only-ev { display: none; }
.pv-form-modal.is-ev .pv-only-ev { display: revert; }
.pv-form-modal.is-ev .pv-fl.pv-only-ev { display: grid; }
.pv-form-modal.is-ev .pv-only-pub { display: none; }

/* 좌측 메뉴 접기 (2026-10-22) — 접으면 W 로고 · 프로필 배지만 */
.brand { cursor: pointer; border-radius: var(--radius-sm); }
.brand:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }
.sidebar { transition: width .18s ease, padding .18s ease; }
.app.nav-collapsed .sidebar { width: 60px; padding: 20px 8px; align-items: center; }
.app.nav-collapsed .brand { padding: 6px 0 0; }
.app.nav-collapsed .brand-name,
.app.nav-collapsed .company-switch,
.app.nav-collapsed .nav,
.app.nav-collapsed .user-info,
.app.nav-collapsed .user-menu-caret { display: none !important; }
.app.nav-collapsed .sidebar-footer { margin-top: auto; border-top: 0; padding-top: 0; }
.app.nav-collapsed .user-chip { padding: 4px; justify-content: center; }
@media (prefers-reduced-motion: reduce) { .sidebar { transition: none; } }

/* 출간일정 일간 메모장 (2026-10-22) — 날짜를 누를 때만 캘린더 아래에 크게 */
.pv-daymemo { position: relative; margin-top: 14px; }
.pv-daymemo .pv-memo { padding: 14px 16px; }
.pv-daymemo .pv-memo-head { font-size: 14px; padding-right: 30px; }
.pv-daymemo .pv-memo-text { min-height: 140px; max-height: 420px; font-size: 13px; line-height: 1.65; }
.pv-daymemo-x { position: absolute; top: 8px; right: 10px; z-index: 1; border: 0; background: none; font-size: 15px; color: var(--text-3); cursor: pointer; padding: 4px 6px; border-radius: 6px; }
.pv-daymemo-x:hover { background: rgba(0, 0, 0, .06); color: var(--text); }
.pv-day-memo .pv-memo-text { min-height: 90px; max-height: 260px; }

/* 좌측 메뉴 접기 A안 (2026-10-22) — 아이콘 막대 + 오른쪽 끝 손잡이 */
.sidebar { position: sticky; }
.nav-handle { position: absolute; top: 50%; right: -13px; transform: translateY(-50%); z-index: 30; width: 26px; height: 26px; border-radius: 50%;
  border: 1px solid var(--border); background: var(--surface); color: var(--text-2); font-size: 15px; line-height: 1; cursor: pointer;
  display: flex; align-items: center; justify-content: center; box-shadow: 0 2px 6px rgba(15, 23, 42, .08); padding: 0 0 2px; }
.nav-handle:hover { color: var(--primary); border-color: var(--primary); }
.nav-handle:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }
.app.nav-collapsed .sidebar { width: 64px; padding: 20px 8px; align-items: stretch; }
.app.nav-collapsed .brand { justify-content: center; padding: 6px 0 20px; }
.app.nav-collapsed .nav { display: flex !important; }
.app.nav-collapsed .nav-label,
.app.nav-collapsed .nav-group-label,
.app.nav-collapsed .nav-sub { display: none !important; }
.app.nav-collapsed .nav-item { justify-content: center; padding: 10px 0; gap: 0; }
.app.nav-collapsed .nav-group + .nav-group { margin-top: 8px; padding-top: 8px; border-top: 1px solid var(--border); }
.app.nav-collapsed .sidebar-footer { margin-top: 0; border-top: 1px solid var(--border); padding-top: 12px; display: flex; justify-content: center; }
@media (max-width: 720px) { .nav-handle { display: none; } }

/* 일간 메모장을 오른쪽 월간 메모 아래로 (2026-10-22) */
.pv-side-card .pv-daymemo { margin-top: 0; }
.pv-side-card .pv-daymemo .pv-memo { padding: 10px 12px; }
.pv-side-card .pv-daymemo .pv-memo-head { font-size: 12.5px; padding-right: 26px; }
.pv-side-card .pv-daymemo .pv-memo-text { min-height: 120px; max-height: 50vh; font-size: 12.5px; }
.pv-side-card .pv-daymemo-x { top: 6px; right: 6px; }

/* 출간 구분 범례는 한 줄로 (연재·단행본 합쳐 표기, 2026-10-22) */
.pv-side-card .pv-legend-kinds { flex-wrap: nowrap; gap: 0 8px; white-space: nowrap; font-size: 11px; letter-spacing: -.2px; }
.pv-side-card .pv-legend-kinds i { width: 9px; height: 9px; }

/* 출간일정에서 보는 아트리 이벤트&프로모션 (2026-10-22, 보기 전용) */
.ae-cell { cursor: default; }
.ae-cell:hover { background: var(--surface); }
.ae-cell.is-today:hover { background: var(--primary-soft); }
.ae-ev { font-size: 11.5px; font-weight: 600; line-height: 1.35; color: #0f766e; background: rgba(13, 148, 136, .08); border-left: 3px solid #14b8a6; border-radius: 4px; padding: 2px 6px; word-break: break-word; }
body.dark .ae-ev { color: #5eead4; background: rgba(45, 212, 191, .12); }

/* 팀 보기 · 하위 줄 묶음 이름표 (2026-10-22) — 흐린 회색 글자 대신 진한 이름표, 묶음마다 색 */
#scheduleContext .team-context-label, #meetingContext .team-context-label, #meetupContext .team-context-label {
  font-size: 12px; font-weight: 800; color: var(--text-2); letter-spacing: .02em; }
.sch-strip-cap { display: inline-flex; align-items: center; font-size: 11.5px; font-weight: 800; letter-spacing: .02em;
  padding: 3px 8px; border-radius: 6px; margin: 0 6px 0 0; background: var(--surface-2); color: var(--text-2); }
.sch-strip-cap[data-cap="장르"] { background: #eef0ff; color: #4338ca; }
.sch-strip-cap[data-cap="출판IP"] { background: #fff1e0; color: #b45309; }
.sch-strip-cap[data-cap="아트리"] { background: #e3f6f3; color: #0f766e; }
body.dark .sch-strip-cap[data-cap="장르"] { background: rgba(129, 140, 248, .18); color: #a5b4fc; }
body.dark .sch-strip-cap[data-cap="출판IP"] { background: rgba(251, 146, 60, .16); color: #fdba74; }
body.dark .sch-strip-cap[data-cap="아트리"] { background: rgba(45, 212, 191, .16); color: #5eead4; }

/* 하위 줄 1번안 — 밑줄 탭 (2026-10-22): 알약 대신 글자 + 고른 것만 밑줄. 묶음 이름은 색 글자 */
.sch-strip { padding: 4px 12px 0; }
.sch-sb { border-radius: 0; padding: 7px 2px 6px; margin: 0 7px; background: none !important; color: var(--text-2); border-bottom: 2px solid transparent; }
.sch-sb:hover { color: var(--text); border-bottom-color: var(--border); }
.sch-sb.is-on { color: var(--text); font-weight: 800; border-bottom-color: var(--primary); }
.sch-strip-cap { background: none !important; padding: 0; margin: 0 4px 0 2px; font-size: 11.5px; }
.sch-strip-div { height: 16px; margin: 0 12px; }

/* 일정관리: 팀 보기(탭 · 하위 줄)와 아래 필터 줄 사이 간격 (2026-10-22) */
#scheduleContext { margin-bottom: 18px; }

/* ── 퍼블리싱 › 작품관리 (2026-10-22) ── */
.pw-owners { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-bottom: 12px; }
.pw-owners-label { font-size: 12px; font-weight: 800; color: var(--text-2); margin-right: 4px; }
.pw-owner { font-family: inherit; font-size: 13px; font-weight: 700; border: 1px solid var(--border); border-radius: 8px; padding: 5px 14px; cursor: pointer;
  background: var(--pw-bg, var(--surface)); color: var(--pw-fg, var(--text-2)); }
.pw-owner.on { box-shadow: 0 0 0 2px var(--pw-fg, var(--primary)); border-color: transparent; }
.pw-filters { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 10px 14px; padding: 12px 14px; margin-bottom: 12px; }
.pw-f { display: flex; flex-direction: column; gap: 3px; font-size: 11.5px; font-weight: 700; color: var(--text-2); }
.pw-f select, .pw-f input { font-family: inherit; font-size: 13px; border: 1px solid var(--border); border-radius: 8px; padding: 5px 8px; background: var(--surface); color: var(--text); }
.pw-search input { width: 180px; }
.pw-range { display: inline-flex; align-items: center; gap: 4px; color: var(--text-3); font-weight: 500; }
.pw-reset { margin-left: auto; }
.pw-list-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 10px; }
.pw-table-wrap { overflow-x: auto; }
.pw-table { width: 100%; border-collapse: collapse; font-size: 13px; min-width: 900px; }
.pw-table th { text-align: left; font-size: 12px; font-weight: 700; color: var(--text-3); padding: 8px; border-bottom: 1px solid var(--border); background: var(--surface-2); white-space: nowrap; }
.pw-table td { padding: 8px; border-bottom: 1px solid var(--border); vertical-align: middle; }
.pw-title { font-weight: 700; }
.pw-link { font-family: inherit; font-size: 13px; font-weight: 700; color: var(--text); background: none; border: 0; padding: 0; cursor: pointer; text-align: left; }
.pw-link:hover { color: var(--primary); text-decoration: underline; }
.pw-num { font-variant-numeric: tabular-nums; white-space: nowrap; }
.pw-person { display: inline-block; font-size: 12px; font-weight: 700; padding: 1px 8px; border-radius: 6px; margin: 1px 4px 1px 0; background: var(--surface-2); color: var(--text-2); }
.pw-stage { display: inline-block; font-size: 12px; font-weight: 700; padding: 1px 8px; border-radius: 999px; background: var(--primary-soft); color: var(--primary); }
.pw-stage.is-done { background: #dcfce7; color: #15803d; }
.pw-status { display: inline-block; font-size: 11px; font-weight: 700; color: var(--text-3); margin-left: 2px; }
.pw-status.is-done { color: #15803d; }
.pw-acts { white-space: nowrap; }
.pw-ic { width: 28px; height: 28px; font-size: 13px; margin-left: 2px; }
.pw-empty { text-align: center; color: var(--text-3); padding: 24px 8px !important; }
.pw-detail-top { display: flex; align-items: center; gap: 6px; margin-bottom: 12px; }
.pw-danger { color: var(--urgent); }
.pw-info, .pw-progress, .pw-tasks { margin-bottom: 12px; }
.pw-h { margin: 0 0 12px; font-size: 18px; }
.pw-kvs { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 8px 24px; }
.pw-kv { display: grid; grid-template-columns: 96px minmax(0, 1fr); gap: 8px; align-items: center; font-size: 13.5px; padding: 6px 0; border-bottom: 1px dashed var(--border); }
.pw-kv > span { font-size: 12px; font-weight: 700; color: var(--text-3); }
.pw-none { color: var(--text-3); font-style: normal; }
.pw-memo { margin-top: 10px; display: grid; grid-template-columns: 96px minmax(0, 1fr); gap: 8px; font-size: 13.5px; }
.pw-memo > span { font-size: 12px; font-weight: 700; color: var(--text-3); }
.pw-memo > div { white-space: pre-wrap; }
.pw-bar { display: inline-block; vertical-align: middle; width: min(260px, 60%); height: 10px; border-radius: 999px; background: var(--surface-2); overflow: hidden; margin-right: 8px; }
.pw-bar i { display: block; height: 100%; background: var(--primary); border-radius: 999px; }
.pw-pct { font-variant-numeric: tabular-nums; }
.pw-steps { display: flex; align-items: center; gap: 6px; margin-top: 14px; flex-wrap: wrap; }
.pw-step { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 700; color: var(--text-3); }
.pw-step-dot { width: 24px; height: 24px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-size: 12px; border: 2px solid var(--border); background: var(--surface); }
.pw-step.is-done { color: #15803d; } .pw-step.is-done .pw-step-dot { background: #16a34a; border-color: #16a34a; color: #fff; }
.pw-step.is-now { color: var(--primary); } .pw-step.is-now .pw-step-dot { border-color: var(--primary); color: var(--primary); }
.pw-step-line { flex: 0 1 48px; height: 2px; background: var(--border); }
.pw-task-table { min-width: 820px; }
.pw-group td { background: var(--surface-2); padding: 6px 8px; }
.pw-fold { font-family: inherit; font-size: 13px; font-weight: 800; color: var(--text); background: none; border: 0; cursor: pointer; padding: 2px 4px; }
.pw-gsum { font-size: 12px; color: var(--text-3); margin-left: 8px; }
.pw-addtask { float: right; }
.pw-in { font-family: inherit; font-size: 13px; border: 1px solid transparent; border-radius: 6px; padding: 4px 6px; background: transparent; color: var(--text); width: 100%; box-sizing: border-box; }
.pw-in:hover:not(:disabled), .pw-in:focus { border-color: var(--border); background: var(--surface); }
.pw-in:disabled { color: var(--text-2); }
.pw-c { text-align: center; width: 48px; }
.pw-sec { font-size: 12px; font-weight: 800; color: var(--primary); border-top: 1px solid var(--border); padding-top: 8px; margin-top: 4px; }
.pv-form .pw-sec:first-child { border-top: 0; padding-top: 0; margin-top: 0; }
.pw-row { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.pw-small { width: 64px; } .pw-mid { width: 120px; }
body.dark .pw-stage.is-done { background: rgba(34, 197, 94, .18); color: #86efac; }
.pw-acts > * { display: inline-flex; vertical-align: middle; margin-left: 2px; }
.pw-acts .pw-ic { width: 28px; height: 28px; align-items: center; justify-content: center; }

/* 작품관리 입력 창 — 원고 담당자 팀별 묶음 · 저장 단추 (2026-10-22) */
.pw-wteams { display: flex; flex-direction: column; gap: 8px; }
.pw-wteam { display: grid; grid-template-columns: 92px minmax(0, 1fr); gap: 8px; align-items: start; }
.pw-wteam-name { font-size: 11.5px; font-weight: 800; color: var(--text-3); padding-top: 5px; }
.pv-form-modal .modal-actions { gap: 12px; }
.pv-form-modal .modal-actions .pv-note { flex: 1; min-width: 0; }
.pv-form-modal .modal-actions .process-btn { flex: none; white-space: nowrap; }

/* 작품관리 — 담당자 단추는 색 없이(고른 것만 보라), 입력 창 저장 단추 여백 (2026-10-22) */
.pw-owner { background: var(--surface); color: var(--text-2); }
.pw-owner:hover { color: var(--text); border-color: var(--primary); }
.pw-owner.on { background: var(--primary); color: #fff; border-color: var(--primary); box-shadow: none; }
.pv-form-modal .modal-actions .process-btn { padding: 9px 20px; }

/* 작품관리 '+ 작품 등록' 단추 (2026-10-22) — 좌우 여백 없이 글자가 넘치던 것 */
#pwAdd { padding: 8px 16px; white-space: nowrap; font-size: 13px; font-weight: 700; border-radius: 9px; flex: none; }

/* 작품관리 날짜 칸 — 작은 달력으로 고르기 (2026-10-22) */
.pw-date { cursor: pointer; width: 150px; }
.pv-form .pw-date { width: 180px; }
.pw-range .pw-date { width: 118px; }
.pw-in.dp-input { cursor: pointer; }
.pw-in.dp-input:disabled { cursor: default; }

/* 작품관리 이름표 — 알약 모양 (2026-10-22) */
.pw-person { border-radius: 999px; padding: 1px 10px; }
body.dark .pw-person { filter: saturate(.9) brightness(.92); }

/* ---------- 편집팀 메뉴 › 작품관리 · 출간관리 · 투고 관리 (2026-10-23) ---------- */
.ed-st { display: inline-block; font-size: 12px; font-weight: 700; padding: 1px 9px; border-radius: 999px; background: var(--surface-2); color: var(--text-2); white-space: nowrap; }
.ed-st.s-rev { background: #f1f5f9; color: #475569; }
.ed-st.s-ser { background: #ede9fe; color: #6d28d9; }
.ed-st.s-2nd { background: #dbeafe; color: #1d4ed8; }
.ed-st.s-book { background: #fef3c7; color: #b45309; }
.ed-st.s-end { background: #dcfce7; color: #15803d; }
.ed-st.s-wait { background: #ffedd5; color: #c2410c; }
.ed-st.s-no { background: #ffe4e6; color: #be123c; }
.ed-chip { display: inline-block; font-size: 12px; font-weight: 700; padding: 1px 10px; border-radius: 999px; margin: 1px 4px 1px 0; }
.ed-chip.is-ed { background: #ede9fe; color: #6d28d9; }
.ed-chip.is-pub { background: #ffedd5; color: #c2410c; }
.ed-days { display: inline-flex; gap: 3px; }
.ed-days i { font-style: normal; width: 21px; height: 21px; border-radius: 6px; display: inline-flex; align-items: center; justify-content: center; font-size: 11px; background: var(--surface-2); color: var(--text-3); }
.ed-days i.on { background: #6d28d9; color: #fff; font-weight: 700; }
.ed-stats { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; }
.ed-stat { display: inline-flex; align-items: center; gap: 8px; padding: 7px 12px; border: 1px solid var(--border); border-radius: var(--radius-md); background: var(--surface); cursor: pointer; font-family: inherit; }
.ed-stat b { font-size: 15px; color: var(--text); }
.ed-stat.on { border-color: var(--primary); box-shadow: 0 0 0 2px var(--primary-soft); }
.process-btn.ed-add, .process-btn.ed-save { margin-top: 0; width: auto; padding: 9px 18px; }
.ed-foot { margin: 10px 2px 0; }
.ed-serial-grid { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: 12px; }
@media (max-width: 900px) { .ed-serial-grid { grid-template-columns: 1fr; } }
.ed-btns { display: inline-flex; gap: 6px; flex-wrap: wrap; }
.ed-hist-title { font-size: 12px; font-weight: 700; color: var(--text-3); margin: 14px 0 6px; }
.ed-hist { display: grid; gap: 2px; margin-bottom: 8px; }
.ed-hist-row { display: grid; grid-template-columns: 96px minmax(0, 1fr) 28px; align-items: center; gap: 8px; font-size: 13px; padding: 5px 6px; border-radius: 6px; }
.ed-hist-row:hover { background: var(--surface-2); }
.ed-red { color: #dc2626; font-weight: 700; }
.ed-up { display: grid; gap: 2px; }
.ed-up-row { display: grid; grid-template-columns: 96px minmax(0, 1fr) auto; gap: 8px; align-items: center; font-size: 13px; padding: 5px 6px; border-bottom: 1px solid var(--border); }
.ed-up-row.is-hold span:nth-child(2) { color: #dc2626; text-decoration: line-through; }
.ed-ms { display: inline-block; font-size: 11.5px; font-weight: 700; padding: 1px 8px; border-radius: 999px; white-space: nowrap; }
.ed-ms.is-none { background: #fef3c7; color: #b45309; }
.ed-ms.is-ok { background: #dcfce7; color: #15803d; }
.ed-ms.is-no { background: #ffe4e6; color: #be123c; }
.ed-ms.is-hold { background: #f1f5f9; color: #64748b; }
.ed-ms-btns { display: inline-flex; border: 1px solid var(--border); border-radius: 8px; overflow: hidden; }
.ed-ms-btns button { font-family: inherit; font-size: 12px; font-weight: 700; padding: 3px 11px; border: 0; background: var(--surface); color: var(--text-3); cursor: pointer; }
.ed-ms-btns button + button { border-left: 1px solid var(--border); }
.ed-ms-btns button.on.ok { background: #dcfce7; color: #15803d; }
.ed-ms-btns button.on.no { background: #ffe4e6; color: #be123c; }
.ed-pub-table tr.is-warn td:first-child { box-shadow: inset 3px 0 0 #f59e0b; }
.ed-pub-table tr.is-hold td { color: var(--text-3); }
.ed-pub-table tr.is-hold td:nth-child(4) { text-decoration: line-through; }
.ed-memo { min-width: 160px; }
.ed-today { font-size: 11px; font-weight: 700; color: var(--primary); }
.ed-alert { display: flex; align-items: center; gap: 6px; background: #ffe4e6; color: #be123c; border-radius: var(--radius-md); padding: 9px 14px; font-weight: 700; font-size: 13px; margin-bottom: 12px; }
.ed-seg { display: inline-flex; border: 1px solid var(--border); border-radius: 8px; overflow: hidden; align-self: flex-end; }
.ed-seg button { font-family: inherit; font-size: 12.5px; font-weight: 700; padding: 6px 14px; border: 0; background: var(--surface); color: var(--text-2); cursor: pointer; }
.ed-seg button.on { background: var(--primary); color: #fff; }
.ed-cal { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); border-top: 1px solid var(--border); border-left: 1px solid var(--border); }
.ed-dw { font-size: 12px; font-weight: 700; color: var(--text-3); padding: 6px 8px; border-right: 1px solid var(--border); border-bottom: 1px solid var(--border); background: var(--surface-2); }
.ed-cd { min-height: 92px; padding: 4px; border-right: 1px solid var(--border); border-bottom: 1px solid var(--border); display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.ed-cd.is-out { background: var(--surface-2); }
.ed-cd.is-today { background: var(--primary-softer); }
.ed-cd-n { font-size: 12px; color: var(--text-2); font-weight: 700; padding: 0 2px; }
.ed-ep { display: block; font-style: normal; font-size: 11.5px; font-weight: 700; padding: 1px 6px; border-radius: 4px; background: #ede9fe; color: #6d28d9; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ed-ep.is-ok { background: #dcfce7; color: #15803d; }
.ed-ep.is-no { background: #ffe4e6; color: #be123c; }
.ed-ep.is-hold { background: #f1f5f9; color: #94a3b8; text-decoration: line-through; }
.ed-ep.is-pub { background: #dbeafe; color: #1d4ed8; }
.ed-legend { display: inline-flex; flex-wrap: wrap; gap: 6px; }
.ed-legend .ed-ep { display: inline-block; }
.ed-board { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
@media (max-width: 1000px) { .ed-board { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.ed-col { background: var(--surface-2); border-radius: var(--radius-md); padding: 8px; display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.ed-col-h { display: flex; justify-content: space-between; font-size: 13px; font-weight: 700; color: var(--text-2); padding: 2px 4px 4px; }
.ed-col-empty { font-size: 12px; color: var(--text-3); text-align: center; padding: 10px 0; }
.ed-card { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; text-align: left; font-family: inherit; background: var(--surface); border: 1px solid var(--border); border-radius: 8px; padding: 8px 10px; cursor: pointer; color: var(--text); }
.ed-card:hover { border-color: var(--primary); }
.ed-card b { font-size: 13px; }
.ed-card-m { font-size: 11.5px; color: var(--text-3); }
.ed-clip { max-width: 320px; font-size: 12px; color: var(--text-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ed-log { display: grid; gap: 3px; font-size: 12px; color: var(--text-2); max-height: 140px; overflow: auto; }
.ed-daypick .pv-chip { min-width: 38px; justify-content: center; }
.alert-kind.k-em, .alert-kind.k-sd { background: #ffe4e6; color: #be123c; }
.alert-kind.k-sw, .alert-kind.k-sn { background: #ede9fe; color: #6d28d9; }
body.dark .ed-st, body.dark .ed-chip, body.dark .ed-ms, body.dark .ed-ep, body.dark .ed-alert, body.dark .ed-ms-btns button.on { filter: saturate(.9) brightness(.92); }

/* 작품 목록 연동 — 편집팀 화면의 퍼블 진행 상태 (2026-10-23) */
.ed-pubstage { font-size: 11px; padding: 1px 7px; margin-left: 2px; }

/* 일정관리 › 판타지 편집 — 작품관리의 연재 회차 · 출간일 (보기 전용, 2026-10-23) */
.sch-ed-mark { display: block; max-width: 100%; margin-top: 2px; font-size: 11px; font-weight: 700; padding: 0 5px; border-radius: 4px; background: #ede9fe; color: #6d28d9; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; cursor: pointer; }
.sch-ed-mark.is-ok { background: #dcfce7; color: #15803d; }
.sch-ed-mark.is-no { background: #ffe4e6; color: #be123c; }
.sch-ed-mark.is-hold { background: #f1f5f9; color: #94a3b8; text-decoration: line-through; }
.sch-ed-mark.is-pub { background: #dbeafe; color: #1d4ed8; }
.ed-serial-note { margin: 0 0 6px; color: #b45309; }
body.dark .sch-ed-mark { filter: saturate(.9) brightness(.92); }
.sch-day-top .sch-ed-mark { flex: 1 1 0; min-width: 0; margin-top: 0; }

/* 일정관리 › 판타지 편집 — 작품관리 거울 (보기 전용, 2026-10-23) */
.ed-mi { display: block; width: 100%; text-align: left; font-family: inherit; font-size: 11.5px; font-weight: 700; padding: 1px 6px; margin-top: 2px; border: 0; border-radius: 4px; background: #ede9fe; color: #6d28d9; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; cursor: pointer; }
.ed-mi.is-ok { background: #dcfce7; color: #15803d; }
.ed-mi.is-no { background: #ffe4e6; color: #be123c; }
.ed-mi.is-hold { background: #f1f5f9; color: #94a3b8; text-decoration: line-through; }
.ed-mi.is-pub { background: #dbeafe; color: #1d4ed8; }
.ed-mi-more { font-family: inherit; font-size: 11px; font-weight: 700; color: var(--text-3); background: none; border: 0; padding: 1px 4px; cursor: pointer; }
.ed-mi-legend { margin-left: auto; }
body.dark .ed-mi { filter: saturate(.9) brightness(.92); }

/* 명단 — 직책 배지 (2026-10-26) */
.roster-badge.roster-badge-role { background: #ede9fe; color: #6d28d9; font-weight: 700; }
body.dark .roster-badge.roster-badge-role { background: #2c2350; color: #c4b5fd; }

/* 업무일지 — 본인만 보는 사람의 오른쪽 '내 기록' (2026-10-26) */
.jmy-mhead { display: flex; justify-content: space-between; align-items: baseline; font-size: 13px; color: var(--text-2); margin: 4px 0 8px; }
.jmy-mhead b { font-size: 14px; color: var(--text); }
.jmy-dow, .jmy-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 4px; }
.jmy-dow span { font-size: 11px; color: var(--text-3); text-align: center; font-weight: 600; }
.jmy-c { display: flex; flex-direction: column; align-items: center; gap: 3px; padding: 6px 0 5px; border-radius: 8px; border: 1px solid transparent; background: var(--surface-2); font-family: inherit; font-size: 12.5px; color: var(--text); cursor: pointer; }
.jmy-c.is-blank { background: none; cursor: default; }
.jmy-c:hover { border-color: var(--primary); }
.jmy-c.is-sel { border-color: var(--primary); box-shadow: 0 0 0 2px var(--primary-soft); }
.jmy-c i, .jmy-legend i { width: 7px; height: 7px; border-radius: 50%; background: transparent; display: inline-block; }
.jmy-c.is-done i, .jmy-legend i.is-done { background: #16a34a; }
.jmy-c.is-miss i, .jmy-legend i.is-miss { background: #e11d48; }
.jmy-c.is-now i, .jmy-legend i.is-now { background: #f59e0b; }
.jmy-c.is-future { color: var(--text-3); }
.jmy-legend { display: flex; gap: 12px; font-size: 11.5px; color: var(--text-3); margin: 8px 2px 4px; }
.jmy-legend span { display: inline-flex; align-items: center; gap: 4px; }
.jmy-recent-title { font-size: 12px; font-weight: 700; color: var(--text-3); margin: 14px 0 6px; }
.jmy-recent { display: grid; gap: 2px; }
.jmy-r { display: grid; grid-template-columns: 84px minmax(0, 1fr); gap: 8px; align-items: center; text-align: left; font-family: inherit; font-size: 13px; padding: 7px 8px; border: 0; border-radius: 8px; background: none; color: var(--text); cursor: pointer; }
.jmy-r:hover, .jmy-r.is-sel { background: var(--surface-2); }
.jmy-rd { font-size: 12px; color: var(--text-3); }
.jmy-rt { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.jmy-c.is-hol { color: #e11d48; opacity: .75; }

/* 할 일 첨부 — 끌어다 놓기 칸 (2026-10-26) */
.pt-drop { display: flex; align-items: center; gap: 10px; margin-top: 6px; padding: 12px 14px; border: 1.5px dashed var(--border); border-radius: 10px; background: var(--surface-2); font-size: 13px; color: var(--text-2); transition: border-color .15s, background .15s; }
.pt-drop em { display: block; font-style: normal; font-size: 11.5px; color: var(--text-3); margin-top: 2px; }
.pt-drop-ic { font-size: 18px; }
.pt-drop-pick { font-family: inherit; font-size: 13px; font-weight: 700; color: var(--primary); background: none; border: 0; padding: 0; cursor: pointer; text-decoration: underline; }
.pt-drop.is-over { border-color: var(--primary); background: var(--primary-soft); color: var(--primary); }
.pt-drop.is-busy { opacity: .7; pointer-events: none; }
.pt-att.is-pending { opacity: .85; }

/* 업무일지 칸 안내 — 첫 줄 · 작은 둘째 줄 · 예시 (placeholder 대신, 칸이 비어 있을 때만) 2026-10-28 */
.jr-in-wrap { position: relative; }
.jr-ph { position: absolute; left: 12px; right: 14px; top: 10px; pointer-events: none; color: var(--text-3); font-size: 13px; line-height: 1.55; white-space: pre-wrap; }
.jr-ph-sub { font-size: 11.5px; opacity: .85; }
.jr-ph-ex { margin-top: 10px; }

/* 업무일지 칸 안내 — 예시는 한 단계 작게, 둘째 줄은 예시보다 조금 더 흐리게 (2026-10-28) */
.jr-ph-ex { font-size: 12px; line-height: 1.5; }
.jr-ph-sub { opacity: .75; }

/* ── 출간일정 2차 (2026-10-28 퍼블팀 1차 수정안 피드백) — 출간 | 이벤트 캘린더 나란히 · 검색 결과 목록 · 동시 입력 · 엑셀 일괄 등록 ── */
.pv2-cat-note { margin: 0 6px 0 2px; }
.pv-search-btn { border: 0; border-left: 1px solid var(--border); background: var(--primary); color: #fff; font-family: inherit; font-size: 12.5px; font-weight: 700; padding: 5px 12px; cursor: pointer; }
.pv-search-btn:hover { filter: brightness(1.08); }
.pv2-import { margin-left: auto; }
.pv2-nav { display: flex; align-items: center; gap: 8px; margin: 2px 0 10px; flex-wrap: wrap; }
.pv2-nav .sch-cal-label { font-size: 16px; font-weight: 800; min-width: 104px; text-align: center; }
.pv2-legend { margin-left: auto; display: flex; flex-wrap: wrap; gap: 4px 16px; align-items: center; }
.pv2-legend .pv-legend-kinds { flex-wrap: nowrap; gap: 0 10px; white-space: nowrap; font-size: 11.5px; }
.pv2-cals { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; align-items: start; }
@media (max-width: 1100px) { .pv2-cals { grid-template-columns: 1fr; } }
.pv2-cal { padding: 10px 10px 12px; min-width: 0; }
.pv2-cal-title { font-size: 14px; font-weight: 800; text-align: center; padding: 4px 0 8px; color: var(--text); }
.pv2-cal.is-ev .pv2-cal-title { color: #7b4fd6; }
.pv2-cnt { font-size: 11.5px; font-weight: 600; color: var(--text-3); margin-left: 4px; }
.pv2-cal .sch-cal-dow-row { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); text-align: center; font-size: 11.5px; color: var(--text-3); padding-bottom: 4px; }
.pv2-cal .pv-cell { min-height: 84px; padding: 4px 4px 6px; }
.pv2-cal .pv-pub { font-size: 11px; }
.pv2-cal .pv-ev { font-size: 11px; }
.pv2-results { margin-top: 12px; padding: 12px 14px; display: flex; flex-direction: column; gap: 3px; }
.pv2-results-head { display: flex; align-items: center; gap: 10px; margin-bottom: 4px; font-size: 13px; }
.pv2-results-head .btn-small { margin-left: auto; }
.pv-res-type { flex: none; font-size: 11px; font-weight: 700; color: var(--text-3); width: 36px; }
.pv2-memos { margin-top: 12px; display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; }
.pv2-memos.has-day { grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (max-width: 900px) { .pv2-memos.has-day { grid-template-columns: 1fr; } }
.pv2-memos .pv-daymemo { margin-top: 0; }
.pv2-memos .pv-memo-text { max-height: 260px; }
.pv2-ro { margin-top: 10px; }
/* 입력 창 — 출간 · 이벤트 함께 */
.pv-tog { font-family: inherit; font-size: 13px; font-weight: 700; display: inline-flex; align-items: center; gap: 7px; border: 1px solid var(--border); border-radius: 9px; padding: 5px 13px 5px 9px; background: var(--surface); color: var(--text-2); cursor: pointer; }
.pv-tog-box { width: 16px; height: 16px; border-radius: 4px; border: 1.5px solid var(--border); display: inline-flex; align-items: center; justify-content: center; font-size: 11px; color: #fff; }
.pv-tog.on { border-color: var(--primary); color: var(--primary); background: var(--primary-soft); }
.pv-tog.on .pv-tog-box { background: var(--primary); border-color: var(--primary); }
.pv-tog:disabled { cursor: default; opacity: .9; }
.pv-sect { border: 1px solid var(--border); border-radius: 10px; padding: 8px 12px 12px; display: grid; gap: 10px; background: var(--surface-2); }
.pv-sect[hidden] { display: none; }
.pv-sect-h { font-size: 12px; font-weight: 800; color: var(--primary); }
.pv-sect[data-for="이벤트"] .pv-sect-h { color: #7b4fd6; }
.pv2-date { width: 160px; cursor: pointer; }
/* 엑셀 일괄 등록 */
.modal.pv2-import-modal { width: min(980px, 95vw); }
.pv2-steps { margin: 6px 0 10px; padding-left: 20px; font-size: 13px; color: var(--text-2); display: grid; gap: 4px; }
.pv2-prev-head { margin: 12px 0 6px; font-size: 13px; color: var(--text-2); }
.pv2-prev-head .ok { color: #15803d; } .pv2-prev-head .bad { color: #be123c; }
.pv2-prev { max-height: 46vh; overflow: auto; border: 1px solid var(--border); border-radius: 8px; }
.pv2-prev table { width: 100%; border-collapse: collapse; font-size: 12px; }
.pv2-prev th { position: sticky; top: 0; background: var(--surface-2); text-align: left; padding: 6px 8px; color: var(--text-3); font-weight: 700; white-space: nowrap; }
.pv2-prev td { padding: 6px 8px; border-top: 1px solid var(--border); vertical-align: top; }
.pv2-prev tr.is-bad td { background: #fff1f2; }
.pv2-prev tr.is-bad td:last-child { color: #be123c; font-weight: 700; }
body.dark .pv2-prev tr.is-bad td { background: rgba(244, 63, 94, .12); }

/* ── 출간일정 2차 디자인 정리 (2026-10-28) — 툴바 높이 통일 · 요일과 날짜 정렬 · 메모 카드 ── */
.pv2-toolbar { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin: 4px 0 12px; }
.pv2-seg { display: inline-flex; height: 34px; border: 1px solid var(--border); border-radius: 9px; overflow: hidden; background: var(--surface); }
.pv2-seg button { font-family: inherit; font-size: 12.5px; font-weight: 600; color: var(--text-2); background: none; border: 0; padding: 0 14px; cursor: pointer; }
.pv2-seg button + button { border-left: 1px solid var(--border); }
.pv2-seg button:hover { color: var(--text); background: var(--surface-2); }
.pv2-seg button.on { background: var(--text); color: var(--surface); }
.pv2-search { height: 34px; border-radius: 9px; }
.pv2-search select, .pv2-search input { height: 32px; padding: 0 10px; }
.pv2-search input#pvQ { width: 200px; }
.pv2-search .pv-search-btn { height: 32px; padding: 0 16px; }
.pv2-spacer { flex: 1; }
.pv2-btn { height: 34px; padding: 0 14px; border-radius: 9px; border: 1px solid var(--border); background: var(--surface); color: var(--text); font-family: inherit; font-size: 12.5px; font-weight: 700; cursor: pointer; white-space: nowrap; }
.pv2-btn:hover { border-color: var(--primary); color: var(--primary); }
.pv2-btn.is-primary { background: var(--primary); border-color: var(--primary); color: #fff; }
.pv2-btn.is-primary:hover { filter: brightness(1.07); color: #fff; }
.pv2-nav { margin: 0 0 10px; }
.pv2-nav .icon-btn { width: 32px; height: 32px; }
.pv2-nav .sch-cal-label { font-size: 17px; }
/* 캘린더 — 요일 머리를 날짜 숫자와 같은 왼쪽 정렬 · 칸 높이 통일 */
.pv2-cal { padding: 12px 12px 14px; }
.pv2-cal-title { text-align: left; padding: 2px 4px 10px; font-size: 14.5px; display: flex; align-items: baseline; gap: 6px; }
.pv2-cal .sch-cal-dow-row { text-align: left; padding: 0 0 6px; }
.pv2-cal .sch-cal-dow-row span { padding-left: 7px; font-weight: 600; }
.pv2-cal .pv-grid { border-radius: 8px; overflow: hidden; }
.pv2-cal .pv-cell { min-height: 92px; padding: 6px 6px 8px; }
.pv2-cal .pv-top { min-height: 18px; }
.pv2-cal .sch-daynum { font-size: 12.5px; }
.pv2-cal .sch-hol-name { font-size: 10.5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.pv2-cal .pv-cell.is-sel { box-shadow: inset 0 0 0 2px var(--primary); background: var(--surface); }
.pv2-cal .pv-cell.is-today { background: var(--primary-softer, var(--primary-soft)); }
.pv2-cal .pv-cell.is-today .sch-daynum { color: var(--primary); }
/* 월간 · 일간 메모 — 흰 카드 + 왼쪽 노란 띠, 두 칸 같은 높이 */
.pv2-memos { margin-top: 12px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; align-items: stretch; }
@media (max-width: 900px) { .pv2-memos { grid-template-columns: 1fr; } }
.pv2-memos > .pv-memo, .pv2-memos .pv-daymemo .pv-memo { height: 100%; box-sizing: border-box; background: var(--surface); border: 1px solid var(--border); border-left: 4px solid #e5b100; border-radius: 12px; padding: 12px 16px 14px; }
.pv2-memos .pv-daymemo { position: relative; margin: 0; }
.pv2-memos .pv-memo-head { font-size: 13px; margin-bottom: 8px; padding-right: 26px; }
.pv2-memos .pv-memo-head b { font-weight: 800; }
.pv2-memos .pv-memo-text { min-height: 56px; max-height: 220px; font-size: 13px; line-height: 1.6; color: var(--text); }
.pv2-memos .pv-memo-empty { color: var(--text-3); font-size: 12.5px; }
.pv2-memos .pv-memo-edit { margin-left: auto; }
.pv2-memos .pv-daymemo-x { top: 10px; right: 10px; }
.pv2-memos .pv2-memo-empty { border-left-color: var(--border); background: var(--surface-2); }
.pv2-memos .pv-memo-input { min-height: 120px; }
body.dark .pv2-memos > .pv-memo, body.dark .pv2-memos .pv-daymemo .pv-memo { background: var(--surface); border-left-color: #c79a00; }

/* 날짜 상세 창 안 일간 메모도 같은 카드 모양 (2026-10-28) */
.pv-day-memo .pv-memo { background: var(--surface); border: 1px solid var(--border); border-left: 4px solid #e5b100; border-radius: 12px; padding: 12px 16px 14px; }
.pv-day-memo .pv-memo-head b { font-weight: 800; }
.pv-day-memo .pv-memo-text { min-height: 56px; font-size: 13px; line-height: 1.6; color: var(--text); }

/* 일정관리 — 팀 탭을 제목 줄로 (2026-10-28). 설명 문구는 이 화면에서만 숨김 */
.topbar-slot { display: none; flex: 1 1 auto; min-width: 0; margin: 0 28px; }
.topbar.has-slot { padding-top: 12px; padding-bottom: 12px; flex-wrap: wrap; row-gap: 8px; }
.topbar.has-slot .topbar-slot { display: block; }
.topbar.has-slot .topbar-sub { display: none; }
.topbar-slot #scheduleContext { margin: 0; }
.topbar-slot .sch-nav .sch-tab { padding: 6px 14px 7px; }
.topbar-slot .sch-nav .sch-tab.is-on { padding-bottom: 8px; }
.topbar-slot .sch-strip { padding: 2px 12px 0; }
.sch-nav.is-solo .sch-strip { border-radius: 10px; }
@media (max-width: 1100px) { .topbar.has-slot .topbar-slot { order: 3; flex-basis: 100%; margin: 0; } }

/* 제목 줄 팀 탭 — 하위 줄이 없는 탭(경영지원 · 편집팀)도 하위 줄 자리를 잡아 두어 높이가 늘 같게 (2026-10-28). 탭이 하나뿐인 화면(퍼블팀)은 제외 */
.topbar-slot #scheduleContext:not(:has(.sch-nav.is-solo)) { min-height: 63px; align-items: flex-start; }

/* 제목은 팀 탭 줄과 같은 높이에 (하위 줄은 그 아래) — 어떤 탭이든 제목 · 탭 위치가 같게 (2026-10-28) */
.topbar.has-slot { align-items: flex-start; }
.topbar.has-slot h1 { line-height: 31px; }

/* 출간일정 툴바 — 필터 · 검색을 오른쪽 등록 단추 옆으로, 높이 30px 로 (2026-10-28) */
.pv2-toolbar { justify-content: flex-end; gap: 6px; }
.pv2-spacer { display: none; }
.pv2-seg { height: 30px; border-radius: 8px; }
.pv2-seg button { font-size: 12px; padding: 0 12px; }
.pv2-search { height: 30px; border-radius: 8px; }
.pv2-search select, .pv2-search input { height: 28px; font-size: 12px; padding: 0 8px; }
.pv2-search input#pvQ { width: 180px; }
.pv2-search .pv-search-btn { height: 28px; padding: 0 14px; font-size: 12px; }
.pv2-btn { height: 30px; padding: 0 12px; border-radius: 8px; font-size: 12px; }

/* 출간일정 — 달 넘김은 툴바 왼쪽, 필터 · 검색 · 등록은 오른쪽 한 줄 / 범례는 각 캘린더 제목 옆 (2026-10-28) */
.pv2-toolbar { justify-content: flex-start; }
.pv2-push { flex: 1; }
.pv2-navgrp { display: inline-flex; align-items: center; gap: 6px; }
.pv2-navgrp .icon-btn { width: 30px; height: 30px; }
.pv2-navgrp .sch-cal-label { font-size: 17px; font-weight: 800; min-width: 104px; text-align: center; }
.pv2-navgrp .btn-small { height: 30px; }
.pv2-cal-title { align-items: center; flex-wrap: wrap; row-gap: 4px; }
.pv2-cal-legend { margin-left: auto; display: inline-flex; }
.pv2-cal-legend .pv-legend { flex-wrap: wrap; gap: 2px 10px; font-size: 11px; font-weight: 500; }
.pv2-cal-legend .pv-legend-kinds { flex-wrap: wrap; white-space: normal; }

/* 일정관리 하위 줄 — 제목 줄 바로 아래에 붙은 띠 (2026-10-28). 제목 줄은 탭 한 줄로 늘 같은 높이 */
.topbar-slot #scheduleContext:not(:has(.sch-nav.is-solo)) { min-height: 0; }
.topbar.has-slot { align-items: center; }
.topbar.has-slot h1 { line-height: inherit; }
.topbar-slot .sch-nav .sch-tab.is-on { border-bottom: 1px solid var(--border); border-radius: 9px; padding-bottom: 7px; margin-bottom: 0; }
.sch-band { margin: -24px -32px 8px; padding: 0 32px; background: var(--surface); border-bottom: 1px solid var(--border); }
.sch-band.hidden { display: none; }
.sch-band-in { display: flex; align-items: center; flex-wrap: wrap; gap: 0 4px; min-height: 42px; }
.sch-band-in .sch-sb { padding: 11px 2px 10px; }
@media (max-width: 720px) { .sch-band { margin: -18px -16px 8px; padding: 0 16px; } }

/* 일정관리 폴더 탭 (2026-10-28) — 탭은 제목 줄 아래 경계선에 붙고, 고른 탭은 흰 띠(소분류)와 한 판으로 이어진다 */
.topbar.has-slot { align-items: flex-end; padding-bottom: 0; }
.topbar.has-slot > div:first-child { align-self: center; padding-bottom: 12px; }
.topbar.has-slot .topbar-right { align-self: center; padding-bottom: 12px; }
.topbar.has-slot .topbar-slot { align-self: flex-end; }
.topbar-slot .sch-nav .sch-tabs { gap: 2px; align-items: flex-end; }
.topbar-slot .sch-nav .sch-tab { border: 1px solid transparent; border-bottom: 0; border-radius: 10px 10px 0 0; padding: 9px 18px 10px; margin-bottom: 0; background: none; }
.topbar-slot .sch-nav .sch-tab:hover { background: rgba(15, 23, 42, .04); }
.topbar-slot .sch-nav .sch-tab.is-on { background: var(--surface); border-color: var(--border); border-bottom: 0; border-radius: 10px 10px 0 0; color: var(--primary); position: relative; z-index: 2; margin-bottom: -1px; padding-bottom: 11px; }
body.dark .topbar-slot .sch-nav .sch-tab:hover { background: rgba(255, 255, 255, .05); }
.sch-band.is-empty { min-height: 0; height: 10px; }

/* 소분류 띠를 말풍선처럼 — 내용 길이만큼, 탭 아래에 붙은 상자 (2026-10-28) */
.sch-band { align-self: flex-start; width: fit-content; max-width: 100%; box-sizing: border-box; margin: -24px 0 8px; padding: 0 14px;
  background: var(--surface); border: 1px solid var(--border); border-top: 0; border-radius: 0 0 12px 12px; }
.sch-band.is-first { border-radius: 0 0 12px 12px; }
.sch-band-in { min-height: 40px; }
.sch-band-in .sch-sb { padding: 10px 2px 9px; }
@media (max-width: 720px) { .sch-band { margin: -18px 0 8px; padding: 0 12px; } }
/* 소분류가 없는 탭 — 고른 탭을 닫힌 모양으로 (경계선 위에 살짝 띄움) */
#scheduleContext.no-band .sch-nav .sch-tab.is-on { border-bottom: 1px solid var(--border); border-radius: 10px; margin-bottom: 6px; padding-bottom: 9px; }

/* 말풍선 띠 — 고른 탭 아래에서 시작하므로 위 왼쪽은 각지게, 나머지는 둥글게 (2026-10-28) */
.sch-band.is-first { border-radius: 0 12px 12px 12px; border-top: 1px solid var(--border); margin-top: -25px; }
@media (max-width: 720px) { .sch-band.is-first { margin-top: -19px; } }

/* 회의 · 미팅 · 업무일지도 제목 줄 폴더 탭 (2026-10-28) */
.topbar-slot .team-context { margin: 0; }
.topbar-slot .team-context.no-band .sch-tab.is-on { border-bottom: 1px solid var(--border); border-radius: 10px; margin-bottom: 6px; padding-bottom: 9px; }
.sch-tab-div { width: 1px; height: 18px; background: var(--border); margin: 0 8px 10px; align-self: flex-end; }
.sch-tab-co { font-size: 11px; font-weight: 800; color: var(--text-3); margin: 0 4px 12px 2px; align-self: flex-end; }
.topbar-slot .sch-tab .jr-count { font-size: 11px; color: var(--text-3); margin-left: 2px; }
/* 회의 · 미팅 하위 탭(기록 / 할 일 · 인사이트) = 말풍선 띠 */
#meetingSubtabs { align-self: flex-start; width: fit-content; max-width: 100%; box-sizing: border-box; margin: -24px 0 4px; padding: 0 14px;
  display: flex; gap: 0; background: var(--surface); border: 1px solid var(--border); border-top: 0; border-radius: 0 12px 12px 12px; }
#meetingSubtabs .subtab-btn { background: none; border: 0; border-bottom: 2px solid transparent; border-radius: 0; padding: 10px 2px 9px; margin: 0 7px; font-size: 13px; font-weight: 600; color: var(--text-2); box-shadow: none; }
#meetingSubtabs .subtab-btn:hover { color: var(--text); border-bottom-color: var(--border); }
#meetingSubtabs .subtab-btn.is-active { background: none; color: var(--text); font-weight: 800; border-bottom-color: var(--primary); box-shadow: none; }
#meetingSubtabs .subtab-btn.hidden { display: none; }
@media (max-width: 720px) { #meetingSubtabs { margin-top: -18px; } }

/* 제목도 탭과 같은 끝선(글자 기준선)에 맞춘다 (2026-10-29) — 폴더 탭은 그대로 */
.topbar.has-slot > div:first-child { align-self: flex-end; padding-bottom: 8px; }

/* 재무 캘린더 추가 (2026-10-29 기쁨 요청) — 월 고정 · 기간 · 끌어서 옮기기 · 전월 불러오기 · 검색 */
.fin-it.mk-monthly .fin-tx, .fin-mj.mk-monthly .fin-tx, .fin-head.mk-monthly { font-weight: 800; }
.fin-lg-mo { color: var(--text); font-weight: 800; }
.fin-lg-hint { color: var(--text-3); font-weight: 500; }
.fin-legend-bar { display: flex; flex-wrap: wrap; justify-content: flex-end; margin: -2px 2px 8px; }
.fin-w-monthly { background: var(--surface-2); color: var(--text); }
.fin-w-tabs { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.fin-msel-btn.mk-monthly, .fin-msel-opt.mk-monthly { font-weight: 800; }
.fin-range { display: inline-block; margin-left: 4px; font-size: 10.5px; font-weight: 700; color: var(--text-3); background: var(--surface-2); border-radius: 4px; padding: 0 4px; vertical-align: 1px; }
.fin-it[draggable="true"], .fin-head[draggable="true"] { cursor: grab; }
.fin-it.is-dragging, .fin-head.is-dragging { opacity: .4; }
.fin-day.is-drop { background: var(--primary-soft); box-shadow: inset 0 0 0 2px var(--primary); }
.fin-it.is-flash, .fin-head.is-flash { animation: finFlash 1.2s ease-in-out 2; }
@keyframes finFlash { 50% { box-shadow: 0 0 0 2px var(--primary); background: var(--primary-soft); } }
.fin-search { margin-left: auto; display: flex; gap: 6px; align-items: center; }
.fin-search .rec-input { width: 190px; height: 30px; padding: 4px 10px; font-size: 12.5px; margin: 0; }
.fin-search-card .card-title { display: flex; align-items: center; gap: 6px; }
.fin-search-x { margin-left: auto; }
.fin-dates { grid-column: span 2; }
.fin-date-range { display: flex; align-items: center; gap: 6px; }
.fin-date-range .rec-input { flex: 1; min-width: 0; }
.fin-date-range span { color: var(--text-3); }
.fin-copy-modal { max-width: 640px; }
.fin-copy-tools { display: flex; gap: 6px; margin: 10px 0 8px; }
.fin-copy-list { max-height: 52vh; overflow-y: auto; border: 1px solid var(--border); border-radius: 10px; }
.fin-copy-row { display: flex; align-items: center; gap: 8px; padding: 7px 10px; border-bottom: 1px dashed var(--border); font-size: 12.5px; cursor: pointer; }
.fin-copy-row:last-child { border-bottom: 0; }
.fin-copy-row.is-done { opacity: .5; cursor: default; }
.fin-copy-d { flex: none; width: 92px; color: var(--text-3); font-size: 11.5px; }
.fin-copy-d b { color: var(--text); }
.fin-copy-t { flex: 1; min-width: 0; }
.fin-copy-t.is-head { font-weight: 700; }
.fin-copy-mk { flex: none; font-size: 10.5px; font-weight: 700; padding: 1px 6px; border-radius: 6px; background: var(--surface-2); color: var(--text-2); }
.fin-copy-mk.mk-special { background: #dce8ff; color: #1d4ed8; }
.fin-copy-mk.mk-important { background: #ffe0e3; color: #dc2626; }
.fin-copy-mk.mk-annual { background: #ece3ff; color: #7c3aed; }
.fin-copy-mk.mk-monthly { color: var(--text); font-weight: 800; }
@media (max-width: 720px) { .fin-search { margin-left: 0; width: 100%; } .fin-search .rec-input { flex: 1; width: auto; } }

/* 수정 창 날짜(시작~종료)는 한 줄 전체 · 단추 글자 줄바꿈 없음 (2026-10-29) */
.fin-row > .fin-dates { flex: 1 1 100%; }
.fin-edit-modal .modal-actions .process-btn, .fin-copy-modal .modal-actions .process-btn { white-space: nowrap; padding-left: 20px; padding-right: 20px; }
.fin-copy-modal .modal-actions { display: flex; align-items: center; justify-content: space-between; margin-top: 14px; }

.fin-msel-list.is-up { top: auto; bottom: calc(100% + 4px); }

.fin-copy-modal .modal-x, .fin-search-x { border: none; background: none; color: var(--text-3); font-size: 15px; cursor: pointer; padding: 2px 4px; }
.fin-copy-modal .modal-head { display: flex; align-items: center; justify-content: space-between; }

/* 경영지원 담당 (2026-10-29) — 캘린더 머리 담당 표시 · 담당 창 · 대시보드 */
.fin-owner-chip { font-family: inherit; font-size: 12px; color: var(--text-2); background: var(--surface-2); border: 1px solid var(--border); border-radius: 999px; padding: 4px 10px; }
button.fin-owner-chip { cursor: pointer; }
button.fin-owner-chip:hover { border-color: var(--primary); }
.fin-owner-chip b { color: var(--text); margin-left: 2px; }
.fin-owner-modal { max-width: 460px; }
.fin-owner-rows { display: flex; flex-direction: column; gap: 8px; margin-top: 12px; }
.fin-owner-row { display: flex; align-items: center; gap: 10px; }
.fin-owner-role { width: 130px; flex: none; font-weight: 700; font-size: 13px; display: flex; flex-direction: column; }
.fin-owner-role em { font-style: normal; font-weight: 500; font-size: 11px; color: var(--text-3); }
.fin-owner-row select { flex: 1; margin: 0; }
.dv2-title.fin-mk-monthly { font-weight: 800; }
.dv2-title.fin-mk-important { color: #dc2626; }
.dv2-title.fin-mk-special { color: #1d4ed8; }
.dv2-title.fin-mk-annual { color: #7c3aed; }

.fin-owner-modal .modal-actions .process-btn { white-space: nowrap; padding-left: 20px; padding-right: 20px; }

/* 경영지원 공유 대상자 (2026-10-29) */
.fin-share { display: inline-block; margin-left: 4px; font-size: 10.5px; font-weight: 700; color: var(--primary); background: var(--primary-soft); border-radius: 4px; padding: 0 4px; vertical-align: 1px; }
.fin-shares { display: flex; flex-wrap: wrap; gap: 6px; margin: 2px 0 6px; min-height: 22px; align-items: center; }
.fin-share-chip { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; font-weight: 600; background: var(--primary-soft); color: var(--primary); border-radius: 999px; padding: 2px 4px 2px 10px; }
.fin-share-chip button { border: 0; background: none; color: inherit; cursor: pointer; font-size: 11px; padding: 0 4px; }
.fin-share-add { margin: 0 0 4px; }

/* 아트리 수정안 (2026-10-30) — 작품명 검색 · 작품 통계 · 배경팀 · 이벤트&프로모션 */
.sch-top-right .atri-q { width: 170px; height: 30px; padding: 4px 10px; font-size: 12.5px; margin: 0; }
.sch-top-right .atri-q.has-q { border-color: var(--primary); box-shadow: 0 0 0 2px var(--primary-soft); }
.ast-mode { display: inline-flex; border: 1px solid var(--border); border-radius: 999px; overflow: hidden; margin-left: 8px; }
.ast-mode button { font-family: inherit; font-size: 12px; font-weight: 700; padding: 4px 12px; border: 0; background: var(--surface); color: var(--text-2); cursor: pointer; }
.ast-mode button.is-on { background: var(--text); color: var(--surface); }
.ast-cards { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; margin: 4px 0 10px; }
.ast-card { border: 1px solid var(--border); border-radius: 10px; padding: 10px 12px; background: var(--surface); display: flex; flex-direction: column; gap: 2px; }
.ast-card b { font-size: 20px; line-height: 1.1; }
.ast-card b small { font-size: 12px; font-weight: 600; color: var(--text-3); margin-left: 2px; }
.ast-card span { font-size: 12px; color: var(--text-2); font-weight: 600; }
.ast-card.ast-bg { box-shadow: inset 3px 0 0 #0369a1; } .ast-card.ast-line { box-shadow: inset 3px 0 0 #15803d; }
.ast-card.ast-color { box-shadow: inset 3px 0 0 #7c3aed; } .ast-card.ast-pd { box-shadow: inset 3px 0 0 #be123c; }
.ast-role { font-size: 10.5px; font-weight: 700; border-radius: 5px; padding: 1px 6px; margin-right: 3px; }
.ast-role.ast-bg { background: #e0f2fe; color: #0369a1; } .ast-role.ast-line { background: #dcfce7; color: #15803d; }
.ast-role.ast-color { background: #ede9fe; color: #6d28d9; } .ast-role.ast-pd { background: #ffe4e6; color: #be123c; }
.ast-nums { white-space: nowrap; font-weight: 500; color: var(--text-2); }
.ast-nums b { color: var(--text); }
.ast-year-wrap { overflow-x: auto; margin-bottom: 10px; }
.ast-year { border-collapse: collapse; width: 100%; font-size: 12px; font-variant-numeric: tabular-nums; }
.ast-year th, .ast-year td { border: 1px solid var(--border); padding: 5px 6px; text-align: center; }
.ast-year thead th { background: var(--surface-2); color: var(--text-2); font-weight: 700; }
.ast-year tbody th { text-align: left; white-space: nowrap; background: var(--surface-2); }
.ast-year td.is-cur { background: var(--primary-soft); font-weight: 700; }
.ast-year td.ast-sum { font-weight: 800; color: var(--primary); }
@media (max-width: 900px) { .ast-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

.abg-plus { font-family: inherit; border: 0; background: none; color: var(--primary); font-size: 17px; font-weight: 800; cursor: pointer; padding: 0 4px; line-height: 1; vertical-align: -1px; }
.abg-add select, .abg-add .sch-memo-row { width: 100%; margin: 6px 0 0; }
.abg-eps { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; margin-top: 6px; }
.abg-eps label { display: flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 700; color: var(--text-2); white-space: nowrap; }
.abg-eps .rec-input { flex: 1; min-width: 0; margin: 0; height: 32px; padding: 4px 8px; }
.abg-gap-row { display: flex; align-items: center; gap: 8px; padding: 6px 2px; border-bottom: 1px dashed var(--border); font-size: 13px; }
.abg-gap-row:last-child { border-bottom: 0; }
.abg-gap-t { flex: 1; min-width: 0; }
.abg-gap-n { font-weight: 800; color: var(--primary); font-variant-numeric: tabular-nums; }
.abg-gap-n.is-neg { color: #dc2626; }
.abg-forms { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.abg-col { border: 1px solid var(--primary-soft); border-radius: 10px; padding: 10px; min-height: 140px; }
.abg-col .card-title { margin-bottom: 6px; }
.abg-foot { grid-column: 1 / -1; margin: 0; }
.abg-row { display: flex; align-items: center; gap: 6px; padding: 4px 0; font-size: 12.5px; }
.abg-row input { margin: 0; flex: none; }
.abg-tx { font-family: inherit; flex: 1; min-width: 0; text-align: left; border: 0; background: none; padding: 0; color: var(--text); cursor: pointer; font-size: 12.5px; }
.abg-tx:hover { text-decoration: underline; }
.abg-sub { flex: none; font-size: 11px; color: var(--text-3); }
.abg-modal { max-width: 460px; }
.abg-modal .modal-actions { display: flex; align-items: center; justify-content: space-between; margin-top: 16px; }
.abg-wlist { display: flex; flex-direction: column; max-height: 50vh; overflow-y: auto; margin-top: 8px; }
.abg-wrow { display: flex; align-items: center; gap: 8px; padding: 7px 2px; border-bottom: 1px dashed var(--border); }
.abg-wt { flex: 1; min-width: 0; font-weight: 700; font-size: 13px; }
@media (max-width: 900px) { .abg-forms { grid-template-columns: 1fr; } }

.aev-tags { display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0 2px; }
.aev-tagbtn { font-family: inherit; border: 0; background: none; padding: 0; cursor: pointer; }
.aev-tag { display: inline-block; font-size: 11.5px; font-weight: 700; border-radius: 6px; padding: 2px 9px; color: var(--tag); border: 1.5px solid var(--tag); background: var(--surface); white-space: nowrap; }
.aev-tag.is-on { background: var(--tag); color: #fff; }
.aev-add .rec-input#aevLabel { width: 100%; margin: 0; }
.aev-row { font-family: inherit; display: flex; align-items: center; gap: 8px; width: 100%; text-align: left; border: 0; border-bottom: 1px dashed var(--border); background: none; padding: 7px 2px; cursor: pointer; color: var(--text); font-size: 12.5px; }
.aev-row:last-child { border-bottom: 0; }
.aev-row:hover { background: var(--surface-2); }
.aev-date { flex: none; color: var(--text-3); font-size: 11.5px; font-variant-numeric: tabular-nums; min-width: 44px; }
.aev-text { flex: 1; min-width: 0; }
.aev-modal { max-width: 520px; }
.aev-modal .modal-actions { display: flex; align-items: center; justify-content: space-between; margin-top: 16px; }
.aev-daylist { display: flex; flex-direction: column; margin-top: 8px; }
.aev-dayrow { display: flex; align-items: center; gap: 8px; padding: 8px 2px; border-bottom: 1px dashed var(--border); font-size: 13px; }
.ae-ev[style*="--tag"] { background: var(--tag); color: #fff; }

/* 배경팀 아래 세 칸은 가로로 (2026-10-30 — .sch-pstat-card 의 display 를 이긴다) · 오른쪽 칸 날짜는 위아래로 */
#panelSchedule .card.abg-forms { display: grid; }
@media (max-width: 900px) { #panelSchedule .card.abg-forms { grid-template-columns: 1fr; } }
.schl-side .abg-eps label { flex-direction: column; align-items: stretch; gap: 3px; }
.schl-side .abg-eps .rec-input { width: 100%; }

/* 회의 · 미팅 — 위에 폴더 탭이 없을 때(팀 하나뿐, 아트리 등) 하위 탭은 알약 모양 (2026-10-30) */
#meetingSubtabs.is-pill { margin: -12px 0 6px; padding: 3px; gap: 2px; border: 1px solid var(--border); border-radius: 999px; background: var(--surface); }
#meetingSubtabs.is-pill .subtab-btn { margin: 0; padding: 6px 16px; border: 0; border-radius: 999px; font-size: 13px; }
#meetingSubtabs.is-pill .subtab-btn:hover { background: var(--surface-2); color: var(--text); }
#meetingSubtabs.is-pill .subtab-btn.is-active { background: var(--primary-soft); color: var(--primary); font-weight: 800; }
@media (max-width: 720px) { #meetingSubtabs.is-pill { margin-top: -8px; } }

/* 할 일 댓글 수정 · 삭제 (2026-10-30) */
.pt-cm { position: relative; }
.pt-cm-acts { position: absolute; top: 5px; right: 8px; display: inline-flex; gap: 2px; }
.pt-cm-act { font-family: inherit; border: 0; background: none; padding: 1px 5px; font-size: 11px; font-weight: 600; color: var(--text-3); cursor: pointer; border-radius: 4px; }
.pt-cm-act:hover { color: var(--primary); background: var(--surface); }
.pt-cm-act.is-del:hover { color: #dc2626; }
.pt-cm-edit { width: 100%; margin: 4px 0 0; font-size: 12.5px; resize: none; overflow: hidden; }
.pt-cm-editbar { display: flex; justify-content: flex-end; gap: 6px; margin-top: 6px; }
.pt-cm-editbar .is-primary { background: var(--primary); color: #fff; border-color: var(--primary); }

/* 경영지원 캘린더 — 연 · 월을 누르면 작은 달력 (2026-10-30) */
.fin-month-pick { font-family: inherit; border: 1px solid transparent; background: none; cursor: pointer; border-radius: 8px; padding: 2px 8px; color: inherit; }
.fin-month-pick:hover, .fin-month-pick.dp-active { border-color: var(--border); background: var(--surface-2); }
.fin-month-caret { font-size: 11px; color: var(--text-3); margin-left: 2px; }
.dp-sels { display: inline-flex; gap: 4px; }
.dp-sel { font-family: inherit; font-size: 13px; font-weight: 700; border: 1px solid var(--border); border-radius: 6px; padding: 2px 4px; background: var(--surface); color: var(--text); cursor: pointer; }
.fin-day.is-flash { outline: 2px solid var(--primary); outline-offset: -2px; background: var(--primary-soft); transition: background .3s; }

/* 소분류 띠가 없는 화면(업무일지 · 회의 · 일정관리 일부) — 고른 탭도 다른 탭과 같은 줄에 (2026-10-30) */
#scheduleContext.no-band .sch-nav .sch-tab.is-on, .topbar-slot .team-context.no-band .sch-tab.is-on { margin-bottom: 0; }

/* ── 경영지원 › 총무 (2026-11-05 초안) ── */
.ga-cards { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; margin-bottom: 12px; }
.ga-card { background: var(--surface); border: 1px solid var(--border); border-radius: 14px; padding: 12px 14px; display: flex; flex-direction: column; gap: 3px; }
.ga-card span { font-size: 12px; color: var(--text-2); font-weight: 600; }
.ga-card b { font-size: 21px; font-weight: 800; color: var(--text); font-variant-numeric: tabular-nums; }
.ga-card b small { font-size: 12px; font-weight: 600; color: var(--text-3); margin-left: 2px; }
.ga-card em { font-style: normal; font-size: 11.5px; color: var(--text-3); }
.ga-card.is-warn { border-color: #fecaca; background: #fff7f7; } .ga-card.is-warn b { color: #dc2626; }
.ga-card.is-note b { color: #d97706; }
.ga-soon { margin-bottom: 12px; }
.ga-soon-list { display: flex; flex-direction: column; margin-top: 6px; border-top: 1px solid var(--border); }
.ga-soon-row { display: grid; grid-template-columns: 64px 92px minmax(180px, 320px) 90px 130px minmax(0, 1fr); align-items: center; gap: 12px; width: 100%; padding: 9px 6px; border: 0; border-bottom: 1px solid var(--border); background: none; font: inherit; font-size: 13px; color: var(--text-2); text-align: left; cursor: pointer; }
.ga-soon-row:hover { background: color-mix(in srgb, var(--primary) 5%, transparent); }
.ga-soon-dd { justify-self: start; min-width: 54px; text-align: center; font-size: 12px; font-weight: 800; border-radius: 7px; padding: 3px 8px; color: var(--text-2); background: var(--surface-2); font-variant-numeric: tabular-nums; }
.ga-soon-dd.is-warm { color: #b45309; background: #fef3c7; }
.ga-soon-dd.is-hot { color: #fff; background: #dc2626; }
.ga-soon-dd.is-over { color: #fff; background: #7f1d1d; }
.ga-soon-cat { justify-self: start; font-size: 11.5px; font-weight: 700; color: var(--primary); background: var(--primary-soft); border-radius: 6px; padding: 2px 8px; }
.ga-soon-name { color: var(--text); font-size: 13.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ga-soon-what { font-weight: 600; }
.ga-soon-date { font-variant-numeric: tabular-nums; color: var(--text); }
.ga-soon-vendor { color: var(--text-3); font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ga-soon-legend { display: inline-flex; gap: 6px; } .ga-soon-legend i { font-style: normal; font-size: 11px; font-weight: 700; border-radius: 6px; padding: 2px 8px; color: var(--text-2); background: var(--surface-2); }
.ga-soon-legend i.is-hot { color: #fff; background: #dc2626; } .ga-soon-legend i.is-warm { color: #b45309; background: #fef3c7; }
.ga-dash-list { display: flex; flex-direction: column; margin-top: 4px; }
.ga-dash-row { display: flex; align-items: center; gap: 10px; width: 100%; padding: 8px 4px; border: 0; border-bottom: 1px solid var(--border); background: none; font: inherit; text-align: left; cursor: pointer; border-radius: 0; }
.ga-dash-row:last-child { border-bottom: 0; }
.ga-dash-row:hover { background: color-mix(in srgb, var(--primary) 5%, transparent); }
.ga-dash-row .ga-soon-dd { flex: none; }
.ga-dash-main { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.ga-dash-main b { font-size: 13px; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ga-dash-main span { font-size: 12px; color: var(--text-2); }
.ga-dash-main em.ga-soon-cat { font-style: normal; font-size: 11px; padding: 1px 6px; margin-right: 6px; }
@media (max-width: 900px) { .ga-soon-row { grid-template-columns: 64px 1fr; } .ga-soon-row > :nth-child(n+4) { grid-column: 2; } }
.ga-cat { display: inline-block; font-size: 11px; font-weight: 700; color: var(--primary); background: var(--primary-soft); border-radius: 6px; padding: 1px 6px; margin-right: 4px; }
.ga-dd { font-size: 11px; font-weight: 800; color: #d97706; background: #fef3c7; border-radius: 6px; padding: 1px 6px; }
.ga-dd.is-over { color: #dc2626; background: #fee2e2; }
.ga-legend { display: inline-flex; gap: 6px; flex-wrap: wrap; }
.ga-legend i { font-style: normal; font-size: 11px; font-weight: 700; padding: 2px 8px; border-radius: 6px; }
.ga-mx { font-size: 12px; }
.ga-mx th { white-space: nowrap; text-align: center; }
.ga-mx th[data-gamonth] { cursor: pointer; }
.ga-mx th.is-sel { color: var(--primary); }
.ga-mx td.ga-name { white-space: nowrap; } .ga-mx td.ga-name .sch-add-hint { display: block; margin-left: 0; }
.ga-mx tr.ga-grp-area td { background: var(--primary-soft); color: var(--primary); font-weight: 800; font-size: 13px; padding: 8px 12px; border-top: 1px solid var(--border); }
.ga-mx tr.ga-grp td { background: var(--surface-2); font-weight: 700; font-size: 12px; color: var(--text-2); padding: 6px 10px 6px 22px; }
.ga-grp-dot { display: inline-block; width: 5px; height: 5px; border-radius: 50%; background: var(--text-3); margin-right: 8px; vertical-align: middle; }
.ga-mx td.ga-name { padding-left: 36px; }
.ga-c { text-align: right; white-space: nowrap; cursor: pointer; min-width: 74px; font-variant-numeric: tabular-nums; }
.ga-c small { display: block; font-size: 10.5px; font-weight: 800; }
.ga-c small.up { color: #dc2626; } .ga-c small.down { color: #2563eb; }
.ga-c:hover { outline: 2px solid var(--primary); outline-offset: -2px; }
.ga-c.is-sel { box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--primary) 35%, transparent); }
.ga-c.is-paid, .ga-legend .is-paid { background: #dcfce7; color: #166534; }
.ga-c.is-billed, .ga-legend .is-billed { background: #fef3c7; color: #92400e; font-weight: 700; }
.ga-c.is-due, .ga-legend .is-due { background: #e0e7ff; color: #3730a3; }
.ga-c.is-miss, .ga-legend .is-miss { background: #fee2e2; color: #b91c1c; }
.ga-c.is-exp, .ga-legend .is-exp { color: var(--text-3); background: transparent; }
.ga-legend .is-exp { border: 1px dashed var(--border); }
.ga-sum { text-align: right; font-weight: 800; white-space: nowrap; font-variant-numeric: tabular-nums; }
.ga-cyc { display: inline-block; margin-left: 5px; font-size: 10.5px; font-weight: 700; color: var(--text-3); border: 1px solid var(--border); border-radius: 5px; padding: 0 4px; }
.ga-tools { display: inline-flex; gap: 8px; align-items: center; }
.ga-q { width: 220px; }
.ga-list tbody tr { cursor: pointer; }
.ga-list tbody tr:hover { background: color-mix(in srgb, var(--primary) 5%, transparent); }
.ga-bill { display: flex; gap: 4px; align-items: baseline; white-space: nowrap; font-size: 12px; }
.ga-bill b { margin-left: auto; padding-left: 8px; font-variant-numeric: tabular-nums; }
.ga-check { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; }
.ga-sb-n { font-size: 11px; font-weight: 700; color: var(--text-3); margin-left: 1px; }
.sch-sb.is-on .ga-sb-n { color: var(--primary); }
.sch-tab.is-on .ga-sb-n { color: var(--primary); }
.ga-secret { font-family: ui-monospace, Consolas, monospace; font-size: 12px; margin-right: 6px; }
.ga-reveal { padding: 2px 8px; font-size: 11px; }
.ga-modal .pv-form { max-height: 70vh; overflow: auto; }
.modal.ga-modal { width: min(820px, 94vw); max-width: none; }
.ga-billrow { display: grid; grid-template-columns: 1fr 62px 76px 1fr 1.2fr 1fr 26px; gap: 6px; margin-bottom: 6px; align-items: center; }
.ga-billrow .rec-input { min-width: 0; width: 100%; }
@media (max-width: 1100px) { .ga-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); } .ga-billrow { grid-template-columns: 1fr 1fr; } }
/* 업체 연락처 공용 (2026-11-05) */
.gv-title { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.gv-tag { font-size: 11px; font-weight: 700; color: var(--text-3); letter-spacing: .02em; }
.gv-crow { display: grid; grid-template-columns: 76px 1fr; gap: 8px; font-size: 12.5px; line-height: 1.5; }
.gv-k { color: var(--text-3); font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gv-v { color: var(--text); font-variant-numeric: tabular-nums; }
.gv-tel { color: inherit; font-weight: 700; }
.gv-notes { padding: 12px 16px; display: flex; flex-direction: column; gap: 8px; font-size: 12.5px; line-height: 1.6; color: var(--text-2); }
.gv-notes ul { margin: 0; padding-left: 16px; }
.gv-notes li + li { margin-top: 2px; }
.gv-alert { display: flex; gap: 8px; align-items: flex-start; background: #fff7ed; border: 1px solid #fed7aa; color: #9a3412; border-radius: 9px; padding: 7px 10px; font-weight: 600; }
.gv-alert b { flex: none; width: 16px; height: 16px; border-radius: 50%; background: #ea580c; color: #fff; font-size: 11px; display: inline-flex; align-items: center; justify-content: center; margin-top: 2px; }
.gv-none { font-size: 12px; color: var(--text-3); }
body.dark .gv-alert { background: rgba(234, 88, 12, .12); border-color: rgba(234, 88, 12, .35); color: #fdba74; }
/* 업체 연락처 C안 — 왼쪽 목록 + 오른쪽 상세 (2026-11-05) */
.gv-split { display: grid; grid-template-columns: 320px minmax(0, 1fr); gap: 12px; align-items: start; }
.gv-list { padding: 6px; display: flex; flex-direction: column; gap: 2px; }
.gv-item { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; align-items: center; gap: 8px; width: 100%; padding: 8px 10px; border: 0; border-radius: 9px; background: none; font: inherit; text-align: left; cursor: pointer; }
.gv-item:hover { background: var(--surface-2); }
.gv-item.is-on { background: var(--primary-soft); }
.gv-item.is-on b, .gv-item.is-on .gv-tag { color: var(--primary); }
.gv-item-main { display: flex; flex-direction: column; min-width: 0; }
.gv-item-main b { font-size: 13.5px; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gv-item-warn { width: 16px; height: 16px; border-radius: 50%; background: #ea580c; color: #fff; font-size: 11px; font-weight: 800; display: inline-flex; align-items: center; justify-content: center; }
.gv-item-ph { font-size: 11.5px; color: var(--text-3); font-variant-numeric: tabular-nums; }
.gv-detail { padding: 18px 22px; position: sticky; top: 12px; }
.gv-dhead { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
.gv-title h3 { margin: 2px 0 0; font-size: 19px; font-weight: 800; color: var(--text); }
.gv-alerts { display: flex; flex-direction: column; gap: 6px; margin-bottom: 14px; font-size: 13px; line-height: 1.6; }
.gv-sec { font-size: 11.5px; font-weight: 800; color: var(--text-3); margin: 14px 0 6px; padding-bottom: 5px; border-bottom: 1px solid var(--border); }
.gv-detail .gv-contacts { display: flex; flex-direction: column; gap: 6px; }
.gv-detail .gv-crow { grid-template-columns: 110px 1fr; font-size: 13.5px; }
.gv-detail .gv-notes { padding: 0; font-size: 13px; }
.gv-linklist { display: flex; flex-wrap: wrap; gap: 6px; }
.gv-link { display: inline-flex; align-items: center; gap: 6px; border: 1px solid var(--border); background: var(--surface); border-radius: 8px; padding: 5px 10px; font: inherit; font-size: 12.5px; color: var(--text); cursor: pointer; }
.gv-link:hover { border-color: var(--primary); }
@media (max-width: 900px) { .gv-split { grid-template-columns: 1fr; } .gv-detail { position: static; } }
.gv-lhead { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 6px 6px 8px 8px; }
.gv-lcount { font-size: 13px; font-weight: 700; color: var(--text-2); } .gv-lcount b { color: var(--text); }
.process-btn.gv-add { margin: 0; width: auto; padding: 6px 12px; font-size: 12.5px; }
.gv-q { width: calc(100% - 8px); margin: 0 4px 6px; box-sizing: border-box; }
.ga-top { display: grid; grid-template-columns: minmax(0, 620px); gap: 12px; margin-bottom: 12px; }
.ga-mstats { display: flex; flex-wrap: wrap; align-items: stretch; gap: 0; margin: 2px 0 0; border: 1px solid var(--border); border-bottom: 0; border-radius: 10px 10px 0 0; background: var(--surface-2); }
.ga-ms-legend { flex: 0 0 auto; margin-left: 0; align-self: center; padding: 0 14px; align-self: stretch; display: inline-flex; align-items: center; }
.ga-ms.ga-ms-year { flex: 0 0 auto; align-items: center; gap: 8px; color: var(--text); font-weight: 700; }
.ga-ms-year .btn-small { padding: 2px 8px; }
.ga-mx-card .ga-mstats { margin-top: 0; }
.ga-mx-card .ga-mstats + .pw-table-wrap { border: 1px solid var(--border); border-top: 0; border-radius: 0 0 10px 10px; }
.ga-ms { display: inline-flex; align-items: baseline; justify-content: center; flex: 1 1 0; gap: 5px; padding: 11px 18px; font-size: 12.5px; color: var(--text-2); border-right: 1px solid var(--border); white-space: nowrap; }
.ga-ms:last-child { border-right: 0; }
.ga-ms em { font-style: normal; font-weight: 600; color: var(--text-3); margin-right: 10px; }
.ga-ms b { font-size: 16px; font-weight: 800; color: var(--text); font-variant-numeric: tabular-nums; }
.ga-ms small { font-size: 11.5px; color: var(--text-3); margin-left: 2px; }
.ga-ms.is-main b { color: var(--primary); }
.ga-ms.is-warn b { color: #dc2626; }
.ga-ms.is-note b { color: #d97706; }
.ga-top .ga-soon { margin-bottom: 0; padding: 14px 16px; }
.ga-top .ga-dash-row { padding: 7px 4px; }
@media (max-width: 1100px) { .ga-top { grid-template-columns: 1fr; } }
/* 출간일정 캘린더 — 출간 종류(선출간 · 2차단행 …) 밑줄 (2026-11-05 요청서 예시) */
.pv-pub .pv-kind { text-decoration: underline; text-underline-offset: 2px; font-size: inherit; color: var(--text-2); }
/* 업체 연락처 — 분류 묶음 머리 (2026-11-05) */
.gv-ghead { display: flex; align-items: center; justify-content: space-between; margin: 8px 6px 2px; padding: 4px 4px 4px 6px; border-bottom: 1px solid var(--border); font-size: 11.5px; font-weight: 800; color: var(--text-3); }
.gv-ghead b { font-size: 11px; font-weight: 700; color: var(--text-3); }
.gv-list .gv-item { padding-left: 14px; }
/* 투고 관리 개편 (2026-11-06) — 퍼블리싱 · 편집팀 공통 목록형 */
.sub-bar .ed-seg button b { font-size: 11px; margin-left: 3px; opacity: .75; }
.sub-info { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; margin: -4px 2px 10px; font-size: 12.5px; color: var(--text-2); line-height: 1.6; }
.sub-info b { color: var(--text); }
.sub-warn { display: inline-block; font-size: 11.5px; font-weight: 800; color: #b45309; background: #fef3c7; border-radius: 6px; padding: 1px 8px; }
.sub-nodue { display: inline-block; font-size: 11.5px; font-weight: 800; color: #b45309; background: #fef3c7; border: 1px solid #fcd34d; border-radius: 6px; padding: 1px 7px; white-space: nowrap; }
.sub-dd { font-size: 11.5px; color: var(--text-3); }
.sub-g { display: inline-block; font-size: 11.5px; font-weight: 700; border-radius: 6px; padding: 2px 8px; white-space: nowrap; }
.sub-g-romance { color: #be185d; background: #fce7f3; }
.sub-g-fantasy { color: #6d28d9; background: #ede9fe; }
.sub-g-etc { color: #475569; background: #f1f5f9; }
.sub-table tbody tr { cursor: pointer; }
.sub-table tbody tr:hover { background: color-mix(in srgb, var(--primary) 4%, transparent); }
.sub-table tbody tr.is-sel { background: var(--primary-soft); }
.sub-table td { vertical-align: middle; }
.sub-team-sel { min-width: 120px; }
.sub-team-sel.is-empty { border-color: #f59e0b; background: #fffbeb; color: #b45309; font-weight: 700; }
.sub-mail { width: 130px; }
.sub-bulk { display: flex; align-items: center; gap: 8px; margin: 0 0 10px; padding: 8px 12px; border: 1px solid var(--border); border-radius: 10px; background: var(--surface); font-size: 13px; }
.sub-bulk select { min-width: 180px; width: auto; height: 34px; }
.sub-bulk .process-btn { margin: 0; width: auto; padding: 7px 14px; }
.sub-paste-btn { margin: 0; width: auto; padding: 8px 16px; }
#meetingModalCard.sub-paste-modal { width: min(1060px, 94vw); max-width: 94vw; }
#meetingModalCard.sub-paste-modal .pv-form > * { min-width: 0; max-width: 100%; }   /* 미리보기 표가 창 밖으로 밀지 않게 (2026-11-09) */
#meetingModalCard.sub-paste-modal .pv-form { overflow-x: hidden; }
#meetingModalCard.sub-paste-modal textarea.rec-input { width: 100%; box-sizing: border-box; }
.sub-paste-info { margin: 8px 0; font-size: 12.5px; color: var(--text-2); }
.sub-prev { max-height: 320px; overflow: auto; border: 1px solid var(--border); border-radius: 8px; }
.sub-kvs .pw-kv { min-width: 0; }
.sub-ord { display: flex; flex-direction: column; gap: 4px; width: 100%; }
.sub-ord-row { display: flex; align-items: center; gap: 8px; padding: 6px 8px; border: 1px solid var(--border); border-radius: 8px; background: var(--surface); }
.sub-ord-n { width: 22px; height: 22px; border-radius: 50%; background: var(--primary-soft); color: var(--primary); font-size: 12px; font-weight: 800; display: inline-flex; align-items: center; justify-content: center; }
/* 붙여넣기 창 안내 (2026-11-06) — 열 순서 칩 + 규칙 3줄 */
.sp-help { border: 1px solid var(--border); border-radius: 10px; background: var(--surface-2); padding: 10px 12px; margin-bottom: 10px; }
.sp-cols { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-bottom: 8px; }
.sp-k { font-size: 12px; font-weight: 800; color: var(--text-2); margin-right: 4px; }
.sp-col { display: inline-flex; align-items: center; gap: 5px; font-size: 12.5px; font-weight: 700; color: var(--text); background: var(--surface); border: 1px solid var(--border); border-radius: 8px; padding: 3px 9px; }
.sp-col i { font-style: normal; font-size: 10.5px; font-weight: 800; color: var(--primary); background: var(--primary-soft); border-radius: 50%; width: 16px; height: 16px; display: inline-flex; align-items: center; justify-content: center; }
.sp-rules { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 4px; font-size: 12.5px; color: var(--text-2); line-height: 1.6; }
.sp-rules b { display: inline-block; min-width: 44px; color: var(--text); }
/* 투고 관리 실사용 피드백 (2026-11-09) — 공통 검토 · 검토자 칩 · 비고 표시 · 퍼블 담당 · 일괄 삭제 · 중복 · 보관 정리 */
.ed-st.s-co { background: #cffafe; color: #0e7490; }
.sub-rchips { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: -2px 2px 10px; }
.sub-rlabel { font-size: 12px; font-weight: 800; color: var(--text-2); margin-right: 2px; }
.sub-rchip { border: 1px solid var(--border); background: var(--surface); color: var(--text); border-radius: 999px; padding: 4px 11px; font-size: 12.5px; font-weight: 700; cursor: pointer; }
.sub-rchip b { color: var(--text-2); font-weight: 800; margin-left: 2px; }
.sub-rchip:hover { border-color: #a5b4fc; }
.sub-rchip.on { background: #4f46e5; border-color: #4f46e5; color: #fff; }
.sub-rchip.on b { color: #e0e7ff; }
.sub-rsep { width: 1px; height: 18px; background: var(--border); margin: 0 4px; }
.sub-memo-flag { display: inline-block; font-size: 10.5px; font-weight: 800; color: #9a3412; background: #ffedd5; border: 1px solid #fdba74; border-radius: 5px; padding: 0 6px; margin-left: 4px; vertical-align: 1px; cursor: help; white-space: nowrap; }
.sub-co-flag { display: inline-block; font-size: 10.5px; font-weight: 800; color: #0e7490; background: #cffafe; border-radius: 5px; padding: 0 6px; margin-left: 2px; cursor: help; }
.sub-re { display: inline-block; font-size: 10.5px; font-weight: 800; color: #6d28d9; background: #ede9fe; border-radius: 5px; padding: 0 6px; margin-left: 4px; vertical-align: 1px; }
.sub-info-sep { color: var(--border); }
.sub-pubowner b, .sub-owner-bar b { color: var(--text); }
.sub-owner-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; margin: 0 0 8px; padding: 8px 12px; border: 1px solid #c7d2fe; background: #eef2ff; border-radius: 10px; font-size: 13px; color: #3730a3; }
.sub-owner-bar .pv-note { color: #6366f1; font-size: 12px; }
.sub-owner-bar .btn-small { margin-left: auto; }
.sub-ops { display: flex; flex-direction: column; gap: 6px; margin: 4px 0 8px; }
.sub-op { border: 1px solid #a5f3fc; background: #ecfeff; border-radius: 8px; padding: 6px 10px; font-size: 13px; }
.sub-op > div { margin-top: 2px; white-space: pre-wrap; }
.sub-op-who { font-weight: 800; color: #0e7490; margin-right: 8px; }
.sub-op-new { display: flex; gap: 8px; align-items: flex-start; flex: 1; }
.sub-op-new textarea { flex: 1; }
.pw-table tr.is-sel td { background: #eef2ff; }
.pw-danger { color: #b91c1c !important; border-color: #fca5a5 !important; }
.pw-danger:hover:not(:disabled) { background: #fef2f2 !important; }
.sub-dup { border: 1px solid #fcd34d; background: #fffbeb; border-radius: 8px; padding: 8px 12px; font-size: 13px; color: #92400e; margin: 0 0 8px; }
.sub-dup-pick { display: flex; flex-wrap: wrap; gap: 4px 16px; margin-top: 6px; color: var(--text); }
.sub-dup-pick label { display: inline-flex; align-items: center; gap: 5px; cursor: pointer; }
.sub-prev tr.is-dup td { background: #fffbeb; }
.sub-prev tr.is-skip td { opacity: .45; text-decoration: line-through; }
.sub-prev tr.is-skip td:last-child { opacity: 1; text-decoration: none; }
.sub-dup-cell { display: flex; flex-direction: column; gap: 2px; min-width: 150px; }
.sub-dup-cell select { height: 28px; font-size: 12px; }
.sub-paste-info .btn-small { padding: 2px 8px; font-size: 11.5px; }
.sub-purge-sum { margin: 6px 0; padding: 10px 12px; border-radius: 8px; background: var(--surface-2, #f8fafc); border: 1px solid var(--border); font-size: 13.5px; }
.sub-purge-steps { margin: 6px 0 0 18px; padding: 0; display: flex; flex-direction: column; gap: 8px; font-size: 13px; }
/* 편집팀 투고 창 — 퍼블리싱 비고 (2026-11-09) */
.sub-memo-box { border: 1px solid #fdba74; background: #fff7ed; border-radius: 10px; padding: 10px 14px; margin: 0 0 12px; }
.sub-memo-head { font-size: 12px; font-weight: 800; color: #9a3412; margin-bottom: 4px; }
.sub-memo-body { font-size: 14px; color: var(--text); white-space: pre-wrap; line-height: 1.6; }
/* 투고 [보관 정리] 기준 재정리 (2026-11-09) */
#meetingModalCard.sub-purge-modal { width: min(760px, 94vw); }
.sub-auto-row { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 8px 12px; margin: 4px 0; }
.sub-auto-row .pw-f select { height: 34px; }
.sub-auto-on { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 700; height: 34px; }
.sub-auto { display: inline-block; font-size: 11px; font-weight: 800; color: #0e7490; background: #cffafe; border-radius: 5px; padding: 0 6px; }
.pw-table.sub-blog { min-width: 0; }
.sub-blog td, .sub-blog th { font-size: 12.5px; }
/* 투고 창 — 역할 안내 · 검토자 변경 (2026-11-11) */
.sub-role-note { border: 1px solid #a5f3fc; background: #ecfeff; color: #155e75; border-radius: 8px; padding: 7px 12px; font-size: 13px; margin: 0 0 8px; }
.sub-rev-row { display: flex; gap: 8px; align-items: center; flex: 1; }
.sub-rev-row select { flex: 1; }
/* 아트리 수정안 261103_V2 · 261113 (2026-11-13) — 배경팀 콘티 칸 · 진행 중 칸 */
.abg-eps.abg-eps3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.abg-forms.abg-forms4, #panelSchedule .card.abg-forms.abg-forms4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (max-width: 1280px) { .abg-forms.abg-forms4, #panelSchedule .card.abg-forms.abg-forms4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 900px) { .abg-forms.abg-forms4, #panelSchedule .card.abg-forms.abg-forms4 { grid-template-columns: 1fr; } }
.abg-modal .sch-swatches { margin-bottom: 4px; }
