/* 블로그 작업현황 대시보드 - 반응형 기본 스타일 (설계서 §4.1)
   데스크톱: 넓은 레이아웃 / 모바일: 단일 컬럼·카드형으로 전환. */

:root {
  --bg: #f4f6f8;
  --surface: #ffffff;
  --surface-2: #f8fafc;
  --border: #e2e6ea;
  --text: #1f2933;
  --muted: #6b7684;
  --primary: #2563eb;
  --primary-dark: #1d4ed8;
  --danger: #dc2626;
  --grad: linear-gradient(135deg, #6ee7f9 0%, #34d399 100%);
  --radius: 10px;
  --shadow: 0 1px 3px rgba(0,0,0,.08);
}

/* 다크 테마 — <html data-theme="dark"> 일 때만 변수 교체(토글) */
html[data-theme="dark"] {
  --bg: #0a0b10;
  --surface: #14161d;
  --surface-2: #1b1e27;
  --border: #2a2f3a;
  --text: #e9ebf1;
  --muted: #98a2b3;
  --primary: #22d3ee;
  --primary-dark: #06b6d4;
  --danger: #f87171;
  --navy: #6ee7f9;
  --navy-dark: #34d399;
  --shadow: 0 1px 3px rgba(0,0,0,.45);
}

* { box-sizing: border-box; }

/* 기준 폰트 축소 — 모든 rem 단위가 비례해서 작아짐(기본 16px → 12px) */
html { font-size: 12px; }

body {
  margin: 0;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans KR", sans-serif;
  background: var(--bg);
  color: var(--text);
  line-height: 1.5;
}

a { color: var(--primary); text-decoration: none; }
a:hover { text-decoration: underline; }

/* ---- 상단 네비게이션 ---- */
.topnav {
  background: var(--surface);
  border-bottom: 1px solid var(--border);
  box-shadow: var(--shadow);
}
.nav-inner {
  max-width: 1080px;
  margin: 0 auto;
  padding: .6rem 1rem;
  display: flex;
  align-items: center;
  gap: 1rem;
  flex-wrap: wrap;
}
.brand { font-weight: 700; font-size: 1.05rem; color: var(--text); }
.nav-toggle {
  display: none;
  margin-left: auto;
  background: none; border: none; font-size: 1.4rem; cursor: pointer;
}
.nav-links {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin-left: auto;
}
.nav-links a { color: var(--text); font-size: .95rem; }
.nav-user { color: var(--muted); font-size: .85rem; }
.nav-logout { color: var(--danger) !important; }

/* ---- 레이아웃 ---- */
.container {
  max-width: 1080px;
  margin: 1.5rem auto;
  padding: 0 .6rem;
}
.card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  padding: 1.5rem;
  margin-bottom: 1.25rem;
}
h1 { font-size: 1.5rem; margin: 0 0 .75rem; }
h2 { font-size: 1.2rem; margin: 0 0 .5rem; }
.muted { color: var(--muted); }
.placeholder {
  padding: 2rem;
  text-align: center;
  color: var(--muted);
  border: 1px dashed var(--border);
  border-radius: var(--radius);
}

/* ---- 폼 ---- */
.auth-wrap {
  max-width: 380px;
  margin: 4rem auto;
  padding: 0 1rem;
}
.auth-card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  padding: 2rem;
}
.auth-card h1 { text-align: center; }
label { display: block; font-size: .9rem; margin: .75rem 0 .25rem; font-weight: 600; }
input[type=text], input[type=password] {
  width: 100%;
  padding: .6rem .7rem;
  border: 1px solid var(--border);
  border-radius: 8px;
  font-size: 1rem;
}
input:focus { outline: 2px solid var(--primary); border-color: var(--primary); }
.btn {
  display: inline-block;
  width: 100%;
  margin-top: 1.1rem;
  padding: .7rem;
  background: var(--primary);
  color: #fff;
  border: none;
  border-radius: 8px;
  font-size: 1rem;
  font-weight: 600;
  cursor: pointer;
}
.btn:hover { background: var(--primary-dark); }
.error {
  background: #fef2f2;
  color: var(--danger);
  border: 1px solid #fecaca;
  border-radius: 8px;
  padding: .6rem .8rem;
  margin-bottom: 1rem;
  font-size: .9rem;
}

/* ---- 테이블(데스크톱) ---- */
table { width: 100%; border-collapse: collapse; }
th, td { padding: .6rem .5rem; text-align: left; border-bottom: 1px solid var(--border); }
th { color: var(--muted); font-size: .85rem; }

.site-footer {
  text-align: center;
  color: var(--muted);
  font-size: .8rem;
  padding: 2rem 1rem;
}

/* ---- 게시글/관리 공통 UI (Milestone 2) ---- */
.row-between { display:flex; align-items:center; justify-content:space-between; gap:1rem; flex-wrap:wrap; }

button, .btn-inline {
  display:inline-block; padding:.4rem .7rem; font-size:.9rem; font-weight:600;
  border:1px solid var(--border); border-radius:8px; background:var(--surface);
  color:var(--text); cursor:pointer; line-height:1.2;
}
button:hover, .btn-inline:hover { border-color:var(--primary); color:var(--primary); text-decoration:none; }
.btn-inline { background:var(--primary); color:#fff; border-color:var(--primary); }
.btn-inline:hover { background:var(--primary-dark); color:#fff; }

input[type=number], input[type=month], select {
  padding:.45rem .55rem; border:1px solid var(--border); border-radius:8px; font-size:.9rem; background:var(--surface);
}
.filters { display:flex; align-items:center; gap:.5rem; flex-wrap:wrap; margin-bottom:1rem; }
.filters input[type=text] { width:auto; }

.notice { border-radius:8px; padding:.6rem .8rem; margin-bottom:1rem; font-size:.9rem; }
.notice.ok   { background:#ecfdf5; color:#047857; border:1px solid #a7f3d0; }
.notice.warn { background:#fffbeb; color:#b45309; border:1px solid #fde68a; }

.pager { display:flex; gap:.35rem; margin:1rem 0; flex-wrap:wrap; }
.pager a, .pager .cur { padding:.35rem .6rem; border:1px solid var(--border); border-radius:6px; }
.pager .cur { background:var(--primary); color:#fff; border-color:var(--primary); }

.actions form { display:inline; }
.actions button { margin-right:.3rem; }

/* 담당 블로그 칩 */
.chips { display:flex; flex-wrap:wrap; gap:.35rem; margin-bottom:.4rem; }
.chip { display:inline-flex; align-items:center; gap:.25rem; background:#eef2ff; color:#3730a3;
  border:1px solid #c7d2fe; border-radius:999px; padding:.15rem .5rem; font-size:.82rem; }
.chip-x { border:none; background:none; color:#6366f1; font-size:1rem; padding:0 .1rem; cursor:pointer; }
.chip-x:hover { color:var(--danger); border:none; }
.assign-form { display:flex; gap:.35rem; align-items:center; flex-wrap:wrap; }
.blog-edit { display:flex; gap:.55rem .6rem; align-items:flex-end; flex-wrap:wrap; }
.blog-edit input { width:auto; flex:0 0 auto; }
label.bf { display:inline-flex; flex-direction:column; gap:.15rem; }
label.bf > span { font-size:.72rem; color:var(--muted); font-weight:700; white-space:nowrap; }
.blog-edit label.bf { display:flex; flex-direction:column; gap:.2rem; }
.blog-edit label.bf > span { font-size:.72rem; color:var(--muted); font-weight:700; white-space:nowrap; }
.blog-edit label.bf input,
.blog-edit label.bf textarea { padding:.45rem .6rem; border:1px solid var(--border); border-radius:8px;
  font-size:.9rem; font-family:inherit; background:#fff; min-width:9.5rem; }
.blog-edit label.bf input:focus,
.blog-edit label.bf textarea:focus { outline:none; border-color:var(--navy); }
.blog-edit > button { padding:.5rem 1rem; }
.blog-edit .bf-break { flex-basis:100%; height:0; margin:0; }
.chk { display:inline-flex; align-items:center; gap:.25rem; font-weight:400; margin:0; }

/* 관리 홈 타일 */
.admin-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(230px, 1fr)); gap:1rem; }
.admin-tile { display:block; text-decoration:none; color:var(--text); transition:border-color .15s; margin-bottom:0; }
.admin-tile:hover { border-color:var(--primary); text-decoration:none; }
.admin-tile h2 { color:var(--primary); }

/* 감사 로그 태그 */
.tag { font-size:.78rem; padding:.1rem .45rem; border-radius:6px; background:#f1f5f9; color:#475569; }
.tag-login_failed, .tag-login_locked, .tag-forbidden { background:#fef2f2; color:var(--danger); }
.tag-account_created, .tag-login_success { background:#ecfdf5; color:#047857; }

/* 인라인 편집(HTMX) 셀 */
td.editable { cursor:pointer; }
td.editable:hover { background:#f8fafc; }

/* ==== ANYRISE 스타일 네비 + 스케줄 캘린더 + 모달 ==== */
:root { --navy: #2b357e; --navy-dark: #232c68; }

/* 네비: 로고 · 가운데 탭 · 우측 인사 */
.nav-inner { max-width: 1400px; }
.brand { display:flex; align-items:center; gap:.4rem; }
.brand-mark {
  display:inline-flex; align-items:center; justify-content:center;
  width:1.9rem; height:1.9rem; border-radius:8px;
  background:linear-gradient(135deg,var(--navy),#57b04a); color:#fff; font-weight:800; font-size:.8rem;
}
.nav-tabs { display:flex; align-items:center; gap:.5rem; margin:0 auto; }
.nav-tabs .tab {
  color:var(--text); font-weight:600; font-size:.95rem;
  padding:.45rem .95rem; border-radius:8px; border:1px solid transparent;
}
.nav-tabs .tab:hover { background:#f1f3f9; text-decoration:none; }
.nav-tabs .tab.active { background:var(--navy); color:#fff; }
.nav-right { display:flex; align-items:center; gap:.9rem; }
.nav-right .nav-user { color:var(--text); font-size:.9rem; }
.container.wide { max-width: 92vw; }
/* 관리 테이블: 짧은 컬럼은 줄바꿈 방지(상태/관리 등) */
td[data-label="상태"], td[data-label="관리"], td[data-label="이번 달 목표"] { white-space:nowrap; }

/* 업체 목록: 접이식(업체명·담당자만 노출, 클릭 시 상세) */
/* 업체 엑셀 패널 */
.excel-panel { display:flex; flex-wrap:wrap; align-items:center; gap:.6rem; margin:0 0 .7rem;
  padding:.6rem .8rem; background:#f0fdf4; border:1px solid #bbf7d0; border-radius:10px; }

/* 업체 검색창 (강조) */
.blog-search { display:flex; align-items:center; gap:.8rem; margin:.2rem 0 .9rem;
  background:linear-gradient(135deg,#eef3ff,#e6ecff); border:1px solid #c7d2fe; border-radius:12px; padding:.55rem .7rem; }
.blog-search input { flex:1 1 auto; max-width:34rem; padding:.6rem .9rem; border:2px solid #5b7cfa;
  border-radius:10px; font-size:1.05rem; font-weight:500; background:#fff;
  box-shadow:0 1px 5px rgba(91,124,250,.18); }
.blog-search input::placeholder { color:#6b7fd0; font-weight:600; }
.blog-search input:focus { outline:none; border-color:var(--navy); box-shadow:0 0 0 3px rgba(91,124,250,.25); }
.blog-search #blogSearchCount { color:#1a56c4; font-weight:700; }

/* 업체 등록 아코디언 */
.accordion-add > summary { cursor:pointer; list-style:none; font-size:1.25rem; font-weight:700; color:var(--navy);
  padding:.2rem 0; display:flex; align-items:center; gap:.4rem; }
.accordion-add > summary::-webkit-details-marker { display:none; }
.accordion-add[open] > summary { margin-bottom:.4rem; border-bottom:1px solid var(--border); padding-bottom:.6rem; }

.blog-list-head { display:flex; gap:1rem; padding:.4rem 2rem; color:var(--muted); font-size:.95rem; font-weight:700; }
.blog-list-head span:first-child { flex:0 0 26%; }
.blog-list-head span:not(:first-child) { flex:1 1 0; min-width:0; }
.sum-col { flex:1 1 0; min-width:0; color:var(--text); font-size:1.05rem; font-weight:500;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.sum-assignees { display:flex; flex-wrap:wrap; gap:.3rem; align-items:center;
  white-space:normal; overflow:visible; }
.assignee-badge { display:inline-block; font-size:.82rem; font-weight:600; line-height:1.4;
  padding:.08rem .5rem; border-radius:999px; background:rgba(110,231,249,.16);
  color:var(--navy-dark); border:1px solid rgba(110,231,249,.4); white-space:nowrap; }
html[data-theme="dark"] .assignee-badge { background:rgba(110,231,249,.14); color:#6ee7f9; border-color:rgba(110,231,249,.35); }
.blog-item { border-bottom:1px solid var(--border); }
.blog-item:first-of-type { border-top:1px solid var(--border); }
.blog-summary { display:flex; align-items:center; gap:1rem; padding:.7rem 1rem .7rem 2rem;
  cursor:pointer; list-style:none; position:relative; }
.blog-summary::-webkit-details-marker { display:none; }
.blog-summary::before { content:"▶"; position:absolute; left:.7rem; font-size:.7rem; color:var(--muted);
  transition:transform .15s; }
.blog-item[open] > .blog-summary::before { transform:rotate(90deg); }
.blog-summary:hover { background:#f8fafc; }
.blog-name { flex:0 0 26%; min-width:0; font-weight:800; color:var(--navy); font-size:1.12rem;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.blog-detail { padding:.5rem 2rem 1.2rem; background:#fbfcfe; }
.detail-field { display:flex; align-items:flex-start; gap:1rem; padding:.7rem .7rem .7rem 1rem; border-bottom:1px dashed var(--border);
  border-left:3px solid #c7d2fe; border-radius:0 8px 8px 0; margin-bottom:.3rem; background:#fbfcff; }
.detail-field:last-child { border-bottom:none; }
.detail-field > label { flex:0 0 8rem; padding-top:.45rem; color:var(--navy); font-size:.86rem; font-weight:700; }
.blog-edit label.bf > span { color:#3b4a8a; }

/* 담당자 배정 체크박스 (체크=파랑) */
.chk-list { display:flex; flex-wrap:wrap; gap:.45rem; padding-top:.2rem; }
.chk { display:inline-flex; align-items:center; gap:.4rem; padding:.4rem .8rem; border:1px solid var(--border);
  border-radius:999px; font-size:.88rem; cursor:pointer; background:#fff; transition:background .12s,border-color .12s,color .12s; }
.chk:hover { border-color:var(--navy); }
.chk:has(input:checked) { background:#e8f0fe; border-color:#5b7cfa; color:#1a56c4; font-weight:700; }
.chk input { accent-color:#3b5bdb; width:1rem; height:1rem; }

/* 요약줄 저장/삭제 버튼 (크게) */
.btn-top-save { padding:.4rem 1.1rem; font-size:1.05rem; font-weight:800; border:none; border-radius:8px;
  background:var(--navy); color:#fff; cursor:pointer; white-space:nowrap; }
.btn-top-save:hover { background:var(--navy-dark); }
.blog-summary .btn-top-del { font-size:1.05rem; font-weight:800; padding:.35rem .6rem; }
.date-inline { display:inline-flex; align-items:center; gap:.3rem; font-size:.85rem; color:var(--muted); }
.task-list { list-style:none; margin:0 0 .3rem; padding:0; }
.task-row { display:flex; align-items:center; gap:.6rem; padding:.25rem 0; border-bottom:1px dashed var(--border); }
.task-row:last-child { border-bottom:none; }
.task-date { flex:0 0 3.2rem; font-weight:700; color:var(--navy); font-size:.85rem; }
.task-text { flex:1; font-size:.9rem; }
.site-badge { flex:0 0 auto; font-size:.75rem; font-weight:700; padding:.1rem .5rem; border-radius:999px;
  background:#eef2ff; color:#3730a3; border:1px solid #c7d2fe; }
.site-badge.site-instagram { background:#fdf2f8; color:#be185d; border-color:#fbcfe8; }
.site-badge.site-youtube { background:#fef2f2; color:#b91c1c; border-color:#fecaca; }
input[type=date], input[type=email] { padding:.45rem .55rem; border:1px solid var(--border); border-radius:8px; font-size:.9rem; background:var(--surface); }
.brand-tag { background:var(--navy); color:#fff; font-size:.7rem; font-weight:700; padding:.1rem .4rem; border-radius:5px; vertical-align:middle; }
.admin-tile.primary { border-color:var(--navy); border-width:2px; }
.admin-tile.primary h2 { color:var(--navy); }

/* 메인 선택 페이지 — 좌우 2분할 히어로 */
.split-hero { position:fixed; inset:0; display:flex; overflow:hidden; }
.hero-panel { position:relative; flex:1 1 50%; display:flex; flex-direction:column;
  padding:2.6rem 3rem; overflow:hidden; text-decoration:none; color:#fff;
  transition:flex-grow .5s ease; }
.hero-panel::before { content:""; position:absolute; inset:0; z-index:0;
  background-size:cover; background-position:center;
  transition:transform .7s ease, filter .4s ease; }
.hero-panel::after { content:""; position:absolute; inset:0; z-index:1;
  background:linear-gradient(180deg, rgba(8,10,26,.20) 0%, rgba(8,10,26,.30) 45%, rgba(8,10,26,.68) 100%); }
.hero-panel > * { position:relative; z-index:2; }
.hero-panel:hover { flex-grow:1.18; text-decoration:none; }
.hero-panel:hover::before { transform:scale(1.06); }

/* 좌 · 관리자 (딥 네이비/인더스트리얼) */
.hero-admin::before { background-image:
  radial-gradient(120% 90% at 30% 20%, rgba(70,90,180,.35), transparent 60%),
  linear-gradient(155deg, #24306a 0%, #2a2168 55%, #0d1230 100%); }
/* 우 · 담당자 (그린 랜드스케이프) */
.hero-user::before { background-image:
  radial-gradient(120% 90% at 70% 25%, rgba(150,200,110,.30), transparent 60%),
  linear-gradient(155deg, #4d7d38 0%, #33602a 60%, #16301c 100%); }

.hero-top { display:flex; flex-direction:column; gap:.9rem; max-width:360px; }
.hero-logo { display:flex; align-items:center; gap:.55rem; font-size:1.5rem; font-weight:700; letter-spacing:.01em; }
.hero-mark { display:inline-flex; align-items:center; justify-content:center;
  width:2.1rem; height:2.1rem; border-radius:8px; font-size:.85rem; font-weight:800;
  background:rgba(255,255,255,.16); border:1px solid rgba(255,255,255,.35); backdrop-filter:blur(2px); }
.hero-rule { height:1px; background:rgba(255,255,255,.4); width:100%; }
.hero-co { font-size:1.05rem; color:rgba(255,255,255,.85); font-weight:500; }

.hero-title { margin-top:auto; margin-bottom:14vh; font-size:clamp(2.6rem, 6vw, 5.4rem);
  font-weight:800; letter-spacing:.02em; line-height:1.02; text-shadow:0 2px 18px rgba(0,0,0,.35); }
.hero-cta { position:absolute; left:3rem; bottom:2.6rem; z-index:2;
  font-size:.95rem; font-weight:600; color:rgba(255,255,255,.92);
  opacity:.85; transition:opacity .2s, transform .2s; }
.hero-arrow { display:inline-block; transition:transform .25s ease; }
.hero-panel:hover .hero-cta { opacity:1; }
.hero-panel:hover .hero-arrow { transform:translateX(6px); }

@media (max-width:720px) {
  .split-hero { flex-direction:column; }
  .hero-panel { flex:1 1 50%; padding:2rem 1.8rem; }
  .hero-panel:hover { flex-grow:1; }
  .hero-title { margin-bottom:8vh; }
  .hero-cta { left:1.8rem; bottom:1.6rem; }
}

/* 캘린더 툴바 */
.cal-toolbar { display:flex; align-items:center; justify-content:center; position:relative; margin:.5rem 0 1rem; }
.cal-move { display:flex; align-items:center; gap:.6rem; }
.cal-arrow { font-size:1.6rem; color:var(--text); line-height:1; padding:0 .3rem; }
.cal-arrow:hover { color:var(--navy); text-decoration:none; }
.cal-ym { display:flex; gap:.4rem; }
.cal-ym select { font-size:1.15rem; font-weight:700; border:none; background:none; cursor:pointer; padding:.1rem .2rem; }
.cal-hide { position:absolute; right:0; display:inline-flex; align-items:center; gap:.3rem; color:var(--danger); font-weight:600; margin:0; }

/* 캘린더 표 */
.cal-card { padding:0; overflow:hidden; }
table.calendar { table-layout:fixed; }
table.calendar th { text-align:center; padding:.6rem 0; font-size:.9rem; color:var(--text); background:#fafbfc; }
table.calendar th.sun { color:#dc2626; } table.calendar th.sat { color:#2563eb; }
.cal-cell { height:118px; vertical-align:top; padding:.35rem; border:1px solid var(--border); }
.cal-cell.other-month { background:#fafbfc; }
.cal-cell.other-month .cal-daynum { color:#cbd2da; }
.cal-cell.today { background:#eef2ff; }
.cal-dayhead { display:flex; align-items:center; justify-content:space-between; margin-bottom:.25rem; }
.cal-daynum { font-size:.82rem; color:var(--muted); }
.cal-cell.today .cal-daynum { color:var(--navy); font-weight:800; }
.cal-cell.clickable { cursor:pointer; }
.cal-cell.clickable:hover { background:#f5f8ff; box-shadow:inset 0 0 0 2px var(--navy); }
.pill-title { color:var(--muted); font-weight:400; }
.pill:hover .pill-title { color:inherit; }
.pill-assignee { display:inline-block; margin-left:.2rem; padding:0 .3rem; border-radius:8px;
  background:rgba(0,0,0,.06); font-size:.72rem; font-weight:700; vertical-align:middle; }
.link-danger { border:none; background:none; color:var(--danger); font-size:.85rem; cursor:pointer; text-decoration:underline; padding:0; }
.link-danger:hover { color:#b91c1c; background:none; }
.pill {
  display:block; width:100%; text-align:left; margin:.15rem 0; padding:.28rem .45rem;
  border:1px solid var(--border); border-radius:7px; background:#fff; color:var(--text);
  font-size:.8rem; font-weight:500; cursor:pointer; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.pill { border-left-width:4px; }
.pill:hover { filter:brightness(.97); }
.pill.has-link::before { content:"🔗 "; }
body.hide-completed .pill.completed { display:none; }

/* 진행상태별 색상 (pill + 범례 dot). 기본 상태 key 기준, 커스텀 상태는 기본색. */
.pill.st-planning  { background:#f1f5f9; border-color:#cbd5e1; border-left-color:#94a3b8; color:#475569; }
.pill.st-writing   { background:#eff6ff; border-color:#bfdbfe; border-left-color:#3b82f6; color:#1d4ed8; }
.pill.st-review    { background:#fffbeb; border-color:#fde68a; border-left-color:#f59e0b; color:#b45309; }
.pill.st-published { background:#ecfdf5; border-color:#a7f3d0; border-left-color:#10b981; color:#047857; }
.pill.st-hold      { background:#fef2f2; border-color:#fecaca; border-left-color:#ef4444; color:#b91c1c; }

/* 플랫폼 배지(스케줄 알약 내부 · 범례) — 블로그/인스타/유튜브 색 구분 */
.plat-badge { flex:0 0 auto; font-size:.66rem; font-weight:700; line-height:1.2;
  padding:.02rem .34rem; border-radius:999px; border:1px solid; vertical-align:middle; }
.plat-badge.plat-blog      { background:#ecfdf5; color:#047857; border-color:#6ee7b7; }
.plat-badge.plat-instagram { background:#fdf2f8; color:#be185d; border-color:#f9a8d4; }
.plat-badge.plat-youtube   { background:#fef2f2; color:#b91c1c; border-color:#fca5a5; }

/* 범례 */
.status-legend { display:flex; flex-wrap:wrap; gap:.4rem .9rem; margin:0 0 .8rem; padding:0 .2rem; }
.legend-item { display:inline-flex; align-items:center; gap:.35rem; font-size:.82rem; color:var(--text); }
.legend-dot { width:.75rem; height:.75rem; border-radius:3px; background:#cbd5e1; display:inline-block; }
.legend-item.st-planning  .legend-dot { background:#94a3b8; }
.legend-item.st-writing   .legend-dot { background:#3b82f6; }
.legend-item.st-review    .legend-dot { background:#f59e0b; }
.legend-item.st-published .legend-dot { background:#10b981; }
.legend-item.st-hold      .legend-dot { background:#ef4444; }

/* 작업내역 목록: 상호명 + 상태 색 배지 + URL 표시 */
.blog-name { font-weight:600; }
.url-link { display:inline-block; max-width:260px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; vertical-align:bottom; color:var(--primary); }
.stbadge { display:inline-block; padding:.12rem .55rem; border-radius:6px; font-size:.82rem; border:1px solid var(--border); }
.stbadge.st-planning  { background:#f1f5f9; color:#475569; border-color:#cbd5e1; }
.stbadge.st-writing   { background:#eff6ff; color:#1d4ed8; border-color:#bfdbfe; }
.stbadge.st-review    { background:#fffbeb; color:#b45309; border-color:#fde68a; }
.stbadge.st-published { background:#ecfdf5; color:#047857; border-color:#a7f3d0; }
.stbadge.st-hold      { background:#fef2f2; color:#b91c1c; border-color:#fecaca; }

/* 모달 */
.modal-overlay {
  display:none; position:fixed; inset:0; background:rgba(15,23,42,.45);
  align-items:flex-start; justify-content:center; z-index:50; padding-top:8vh;
}
.modal-overlay.open { display:flex; }
.modal { background:#fff; border-radius:16px; width:min(560px,92vw); box-shadow:0 20px 50px rgba(0,0,0,.25); }
.modal-head { display:flex; align-items:center; justify-content:space-between; padding:1.3rem 1.5rem; border-bottom:1px solid var(--border); }
.modal-head h2 { margin:0; font-size:1.25rem; }
.modal-x { border:none; background:none; font-size:1.5rem; color:var(--muted); cursor:pointer; padding:0 .3rem; }
.modal-x:hover { color:var(--text); }
.modal-body { padding:1.5rem; }
.modal-body label { font-weight:700; margin:0 0 .5rem; }
.modal-body input[type=text] { width:100%; }
.modal-body textarea { width:100%; padding:.5rem .6rem; border:1px solid var(--border); border-radius:8px;
  font-size:.9rem; font-family:inherit; resize:vertical; background:var(--surface); }
.modal-actions { display:flex; gap:.6rem; margin-top:1.5rem; }
.btn-primary, .btn-secondary { flex:1; padding:.85rem; border-radius:10px; font-size:1rem; font-weight:700; cursor:pointer; border:none; }
.btn-primary { background:var(--navy); color:#fff; }
.btn-primary:hover { background:var(--navy-dark); color:#fff; }
.btn-secondary { background:#f1f3f6; color:var(--text); }
.btn-secondary:hover { background:#e5e8ee; }
.modal-delete { padding:0 1.5rem 1.3rem; text-align:right; margin-top:-.4rem; }
/* 담당자 편집 모달: 관리자가 지정한 업무(읽기전용) 확인 영역 */
.ro-block { background:var(--surface,#f7f8fa); border:1px solid var(--border); border-radius:10px;
  padding:.8rem 1rem; margin:0 0 .9rem; display:flex; flex-direction:column; gap:.5rem; }
.ro-row { display:flex; gap:.6rem; align-items:baseline; }
.ro-label { flex:0 0 6.5rem; font-size:.8rem; font-weight:700; color:var(--muted); }
.ro-value { flex:1; font-size:.95rem; color:var(--text); word-break:break-word; }

/* 블로그 지수: 등급 뱃지 + 항목별 점수 막대 */
.grade-badge { display:inline-block; padding:.15rem .55rem; border-radius:999px; font-size:.8rem; font-weight:700; }
.grade-badge.g-best { background:#e6f4ea; color:#1e7d34; }
.grade-badge.g-good { background:#e8f0fe; color:#1a56c4; }
.grade-badge.g-ok   { background:#fff4e5; color:#a85c00; }
.grade-badge.g-bad  { background:#fdecea; color:#c62828; }
.score-row { display:flex; align-items:center; gap:.6rem; margin:.3rem 0; }
.score-name { flex:0 0 12rem; font-size:.85rem; }
.score-bar { flex:1; height:9px; background:#eef1f6; border-radius:6px; overflow:hidden; }
.score-fill { display:block; height:100%; background:#5b7cfa; border-radius:6px; }
.score-fill.fill-total { background:#1e7d34; }
.score-val { flex:0 0 2.2rem; text-align:right; font-size:.85rem; font-weight:700; }
.score-total { margin-top:.5rem; padding-top:.5rem; border-top:1px dashed var(--border); }

/* 담당자 작업 확인 표 */
.works-table { width:100%; border-collapse:collapse; font-size:.9rem; }
.works-table th, .works-table td { padding:.5rem .6rem; border-bottom:1px solid var(--border); text-align:left; vertical-align:top; }
.works-table th { font-size:.78rem; color:var(--muted); font-weight:700; white-space:nowrap; }
.works-table td.nowrap { white-space:nowrap; }
.works-table tbody tr:hover { background:var(--surface,#f7f8fa); }

/* 엑셀 일괄 등록 패널 */
.excel-import { padding:.7rem 1rem; }
.btn-like { display:inline-block; padding:.45rem .8rem; border-radius:8px; background:#f1f3f6; color:var(--text);
  font-size:.88rem; font-weight:600; text-decoration:none; border:1px solid var(--border); }
.btn-like:hover { background:#e5e8ee; }

@media print {
  .topnav, .filters, .btn-like, form { display:none !important; }
  .card { box-shadow:none; border:1px solid #ccc; break-inside:avoid; }
}

/* 일정등록 그리드 */
table.reg-table { table-layout:fixed; }
table.reg-table th { text-align:center; padding:.7rem .3rem; background:#fafbfc; font-size:.88rem; color:var(--text); border-bottom:1px solid var(--border); }
table.reg-table th.reg-info-col { width:200px; text-align:left; padding-left:1rem; }
table.reg-table td { padding:.5rem .3rem; border-bottom:1px solid var(--border); vertical-align:middle; text-align:center; }
.reg-info { text-align:left !important; padding-left:1rem !important; }
.reg-name { font-weight:700; }
.reg-meta { display:flex; gap:.4rem; align-items:center; flex-wrap:wrap; font-size:.8rem; color:var(--text); margin-top:.2rem; }
.reg-count { background:var(--navy); color:#fff; border-radius:6px; padding:.05rem .4rem; font-weight:700; }
table.reg-table td { text-align:left; }
.reg-days-col { text-align:left !important; padding-left:1rem; }
.reg-save-col { width:90px; text-align:center !important; }
.occ-list { display:flex; flex-wrap:wrap; gap:.4rem; align-items:center; }
.occ { display:inline-flex; align-items:center; background:#eef2ff; border:1px solid #c7d2fe; border-radius:8px; padding:.15rem .3rem .15rem .45rem; }
.occ-day { width:3.2rem; border:none; background:transparent; font-size:.95rem; font-weight:700; text-align:right; color:var(--navy); }
.occ-day:focus { outline:none; }
.occ-suffix { color:var(--navy); font-size:.82rem; margin:0 .15rem 0 .1rem; }
.occ-x { border:none; background:none; color:#6366f1; font-size:1rem; line-height:1; cursor:pointer; padding:0 .15rem; }
.occ-x:hover { color:var(--danger); background:none; }
.occ-add { margin-top:.5rem; border:1px dashed var(--border); background:#fff; color:var(--navy); border-radius:8px; padding:.35rem .7rem; font-weight:600; cursor:pointer; font-size:.85rem; }
.occ-add:hover { border-color:var(--navy); background:#f5f8ff; }
.reg-save { background:var(--navy); color:#fff; border:none; padding:.45rem .9rem; border-radius:8px; font-weight:700; cursor:pointer; }
.reg-save:hover { background:var(--navy-dark); color:#fff; }

@media (max-width: 900px) {
  .nav-tabs { flex-basis:100%; order:3; margin:.5rem 0 0; flex-wrap:wrap; display:none; }
  .nav-tabs.open { display:flex; }
  .nav-right { margin-left:auto; }
  .cal-cell { height:auto; min-height:80px; }
  .cal-hide { position:static; }
  .cal-toolbar { flex-wrap:wrap; gap:.5rem; }
}

/* ---- 반응형: 모바일 ---- */
@media (max-width: 720px) {
  .nav-toggle { display: block; }
  .nav-links {
    display: none;
    width: 100%;
    flex-direction: column;
    align-items: flex-start;
    margin-top: .5rem;
  }
  .nav-links.open { display: flex; }
  .nav-user { order: -1; }
  /* 테이블 -> 카드형 전환 힌트(목록 화면은 다음 마일스톤에서 적용) */
  table.responsive thead { display: none; }
  table.responsive tr {
    display: block;
    margin-bottom: 1rem;
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: .5rem;
  }
  table.responsive td {
    display: flex;
    justify-content: space-between;
    border: none;
    padding: .35rem .25rem;
  }
  table.responsive td::before {
    content: attr(data-label);
    color: var(--muted);
    font-weight: 600;
  }
}


/* ============================================================
   다크 테마 스타일 (html[data-theme="dark"] 일 때만 적용) — 토글용
   ============================================================ */
html[data-theme="dark"] a:hover { color:#67e8f9; }

/* 하드코딩 밝은 배경 → 다크 */
html[data-theme="dark"] .blog-detail { background:var(--surface-2)!important; }
html[data-theme="dark"] td.editable:hover,
html[data-theme="dark"] .blog-summary:hover,
html[data-theme="dark"] .nav-tabs .tab:hover { background:#1f2430!important; }
html[data-theme="dark"] .excel-import,
html[data-theme="dark"] .excel-panel { background:#0f2a26!important; border:1px solid #1f4d45!important; }
html[data-theme="dark"] .notice.ok { background:#0e2b22!important; color:#6ee7b7!important; border:1px solid #1f5a48!important; }
html[data-theme="dark"] .notice.warn { background:#2b1e0e!important; color:#fcd34d!important; border:1px solid #5a4620!important; }
html[data-theme="dark"] .error { background:#2b1414!important; color:#fca5a5!important; border:1px solid #5a2a2a!important; }
html[data-theme="dark"] .tag { background:var(--surface-2)!important; color:var(--muted)!important; }
html[data-theme="dark"] .chip { background:#0f2a2e!important; color:#67e8f9!important; border-color:#1f5a5f!important; }
html[data-theme="dark"] .pager a, html[data-theme="dark"] .pager .cur { background:var(--surface-2)!important; color:var(--text)!important; border-color:var(--border)!important; }

/* 입력창 다크 */
html[data-theme="dark"] input,
html[data-theme="dark"] select,
html[data-theme="dark"] textarea { background:#232a36!important; color:var(--text)!important; border-color:#39414f!important; }
html[data-theme="dark"] input::placeholder,
html[data-theme="dark"] textarea::placeholder { color:#6b7280!important; }
html[data-theme="dark"] .blog-search input { border:2px solid #22d3ee!important; }
html[data-theme="dark"] .chk:has(input:checked) { background:#0f2a2e!important; border-color:#22d3ee!important; color:#67e8f9!important; }

/* 버튼 = 청록→민트 그라데이션 (pill·위험버튼 제외) */
html[data-theme="dark"] button:not(.pill):not(.link-danger):not(.chip-x),
html[data-theme="dark"] .btn-like, html[data-theme="dark"] .btn-primary,
html[data-theme="dark"] .btn-top-save, html[data-theme="dark"] .btn {
  background:var(--grad)!important; color:#06232b!important; border:none!important; font-weight:800;
}
html[data-theme="dark"] button:hover:not(.pill) { filter:brightness(1.08); }
html[data-theme="dark"] .link-danger, html[data-theme="dark"] .chip-x { background:none!important; color:var(--danger)!important; }
html[data-theme="dark"] .btn-secondary { background:var(--surface-2)!important; color:var(--text)!important; }
html[data-theme="dark"] .nav-tabs .tab.active { background:var(--grad)!important; color:#06232b!important; }
html[data-theme="dark"] .brand-tag,
html[data-theme="dark"] .brand-mark { background:var(--grad)!important; color:#06232b!important; }
html[data-theme="dark"] .main-card:hover { border-color:#22d3ee!important; }

/* 현황/계정 페이지 내장 밝은 스타일 보정 */
html[data-theme="dark"] .st-card,
html[data-theme="dark"] .co-grid,
html[data-theme="dark"] .co-block,
html[data-theme="dark"] .co-search { background:var(--surface-2)!important; color:var(--text); }
html[data-theme="dark"] .co-table th, html[data-theme="dark"] .co-table td { border-bottom-color:var(--border)!important; }
html[data-theme="dark"] .mgr-metrics, html[data-theme="dark"] .co-meta,
html[data-theme="dark"] .acct-create .field > span, html[data-theme="dark"] .pr-sub { color:var(--muted)!important; }
html[data-theme="dark"] .st-bar { background:#2a2f3a!important; }
html[data-theme="dark"] .co-grid label { border-bottom:1px solid #23262f!important; }
html[data-theme="dark"] .co-title, html[data-theme="dark"] .mgr-name { color:#6ee7f9!important; }

/* === 스케줄(달력) 심플 다크 === */
html[data-theme="dark"] .cal-cell.other-month { background:#0d0f14!important; }
html[data-theme="dark"] .cal-cell.other-month .cal-daynum { color:#39404e!important; }
html[data-theme="dark"] .cal-cell.today { background:#0f2027!important; }
html[data-theme="dark"] .cal-cell.today .cal-daynum { color:#6ee7f9!important; }
html[data-theme="dark"] .cal-cell.clickable:hover { background:#12151d!important; box-shadow:inset 0 0 0 2px #22d3ee; }
html[data-theme="dark"] table.calendar th { background:var(--surface-2)!important; color:var(--text)!important; }
/* pill: 그라데이션 대신 다크 배경 + 업체색 좌측 줄무늬(인라인 border-left-color 유지) + 밝은 글자 */
html[data-theme="dark"] .pill {
  background:#171a22!important; color:var(--text)!important;
  border-top-color:#2a2f3a!important; border-right-color:#2a2f3a!important; border-bottom-color:#2a2f3a!important;
}
html[data-theme="dark"] .pill .pill-title { color:#9aa3b2!important; }
html[data-theme="dark"] .pill:hover { filter:brightness(1.25); }
html[data-theme="dark"] .pill.completed { opacity:.6; }

/* 테마 토글 버튼 */
.theme-toggle { background:none!important; border:1px solid var(--border)!important; color:var(--text)!important;
  border-radius:999px; padding:.2rem .55rem; font-size:.95rem; cursor:pointer; line-height:1; font-weight:600!important; }
.theme-toggle:hover { border-color:var(--primary)!important; }

/* 모달(등록/편집 팝업) 다크 — 배경 어둡게, 입력영역은 위 input 규칙으로 조금 밝게 */
html[data-theme="dark"] .modal { background:var(--surface)!important; box-shadow:0 20px 50px rgba(0,0,0,.65)!important; border:1px solid var(--border); }
html[data-theme="dark"] .modal-head { border-bottom-color:var(--border)!important; }
html[data-theme="dark"] .modal-head h2 { color:var(--text); }
html[data-theme="dark"] .modal-body label { color:var(--text); }
html[data-theme="dark"] .ro-block { background:#20242e!important; }

/* 남은 밝은 부분 다크 통일 */
/* 스케줄 모달: 발행요일(어두운 글자→밝게), 업체 메모(노란 박스→다크) */
html[data-theme="dark"] #editCycleBox { color:var(--text)!important; }
html[data-theme="dark"] #editMemoBox { background:#2b2410!important; border-color:#5a4620!important; color:#fcd34d!important; }
/* 채널 배지(블로그/인스타/유튜브) 다크 */
html[data-theme="dark"] .plat-badge.plat-blog      { background:#0e2b22!important; color:#6ee7b7!important; border-color:#1f5a48!important; }
html[data-theme="dark"] .plat-badge.plat-instagram { background:#2b1424!important; color:#f9a8d4!important; border-color:#5a2a44!important; }
html[data-theme="dark"] .plat-badge.plat-youtube   { background:#2b1414!important; color:#fca5a5!important; border-color:#5a2a2a!important; }
/* 상태 배지(진행중/발행)도 다크 톤으로 */
html[data-theme="dark"] .badge-progress { background:#2b2410!important; color:#fcd34d!important; border-color:#5a4620!important; }
html[data-theme="dark"] .badge-done     { background:#0e2b22!important; color:#6ee7b7!important; border-color:#1f5a48!important; }
/* 스케줄 ⚠메모 박스(인라인 노랑) 통일 */
html[data-theme="dark"] .cal-legend, html[data-theme="dark"] .status-legend { color:var(--muted); }

/* 아코디언 상세 다크 정돈: 점선 구분선 은은하게, 남은 흰 요소 다크 */
html[data-theme="dark"] .detail-field { background:var(--surface-2)!important; border-bottom-color:#23262f!important; border-left-color:#1f5a5f!important; }
html[data-theme="dark"] .task-row { border-bottom-color:#23262f!important; }
html[data-theme="dark"] .score-total { border-top-color:#23262f!important; }
html[data-theme="dark"] .placeholder { border-color:#2a2f3a!important; }
html[data-theme="dark"] .occ-add { background:var(--surface-2)!important; color:var(--navy)!important; border-color:#2a2f3a!important; }
html[data-theme="dark"] .blog-detail { background:#12141b!important; }  /* 상세를 카드보다 약간 어둡게(입력창이 도드라지게) */
html[data-theme="dark"] .blog-summary:hover { background:#1f2430!important; }

/* 포커스 테두리(파랑) → 청록으로 통일 */
summary:focus, summary:focus-visible,
.blog-summary:focus, .blog-summary:focus-visible,
details.blog-item:focus, details.blog-item:focus-within > .blog-summary {
  outline: 2px solid #22d3ee !important;
  outline-offset: -2px;
  border-radius: 8px;
}
/* 입력/버튼 포커스도 청록 */
input:focus, select:focus, textarea:focus, button:focus-visible {
  outline: 2px solid #22d3ee !important; border-color:#22d3ee !important;
}
