/* Shared calendar — week (day columns) + month grid */
.kb-cal-toolbar { display:flex; flex-wrap:wrap; gap:12px; align-items:center; justify-content:space-between; margin:16px 0; }
.kb-cal-nav { display:flex; align-items:center; gap:8px; }
.kb-cal-nav strong { font-size:16px; }
.kb-cal-views, .kb-cal-filters { display:flex; gap:8px; }
.kb-legend { display:flex; flex-wrap:wrap; gap:14px; align-items:center; margin-bottom:12px; font-size:13px; color:#555; }
.kb-legend-item { display:inline-flex; align-items:center; gap:6px; }
.kb-dot { display:inline-block; width:12px; height:12px; border-radius:50%; vertical-align:middle; }

#kb-calendar { position:relative; min-height:200px; }
#kb-calendar.kb-loading { opacity:.5; }
.kb-cal-empty { padding:30px; text-align:center; color:#888; }

/* Week view */
.kb-week { display:grid; grid-template-columns:repeat(7, 1fr); gap:6px; }
.kb-day { background:#fff; border:1px solid #e6ddd2; border-radius:8px; overflow:hidden; display:flex; flex-direction:column; min-height:120px; }
.kb-day-today { border-color:#1A100E; box-shadow:0 0 0 1px #1A100E inset; }
.kb-day-head { padding:8px; text-align:center; background:#f6efe6; border-bottom:1px solid #e6ddd2; line-height:1.2; }
.kb-day-head span { display:block; font-size:11px; text-transform:uppercase; letter-spacing:.04em; color:#9a8a78; }
.kb-day-head strong { font-size:14px; color:#1A100E; }
.kb-day-body { padding:6px; display:flex; flex-direction:column; gap:6px; flex:1; }
.kb-day-empty { color:#cbbfae; text-align:center; padding:8px 0; }

/* Event card */
.kb-ev { border-left:4px solid var(--ev,#1A100E); background:#fbf8f3; border-radius:6px; padding:6px 8px; cursor:pointer; transition:transform .08s, box-shadow .08s; }
.kb-ev:hover { transform:translateY(-1px); box-shadow:0 3px 10px rgba(26,16,14,.12); }
.kb-ev-time { font-size:12px; font-weight:700; color:var(--ev,#1A100E); }
.kb-ev-title { font-size:13px; font-weight:600; color:#2a1c16; }
.kb-ev-sub { font-size:11px; color:#8a7563; }
.kb-ev-foot { display:flex; justify-content:space-between; align-items:center; margin-top:3px; }
.kb-ev-occ { font-size:11px; color:#6b5848; background:#efe6d8; border-radius:10px; padding:1px 7px; }
.kb-ev-tag { font-size:10px; text-transform:uppercase; letter-spacing:.04em; color:#fff; background:var(--ev,#1A100E); border-radius:10px; padding:1px 7px; }
.kb-ev-full { opacity:.6; }
.kb-ev-full .kb-ev-occ { background:#f3d9d4; color:#902; }
.kb-ev-mine { box-shadow:0 0 0 1px var(--ev,#1A100E) inset; }

/* Month view */
.kb-month { display:grid; grid-template-columns:repeat(7,1fr); gap:4px; }
.kb-month-dow { text-align:center; font-size:11px; text-transform:uppercase; letter-spacing:.04em; color:#9a8a78; padding:4px 0; }
.kb-mcell { background:#fff; border:1px solid #e6ddd2; border-radius:6px; min-height:96px; padding:4px; display:flex; flex-direction:column; gap:3px; }
.kb-mcell-out { background:#f7f3ec; opacity:.6; }
.kb-mcell-today { border-color:#1A100E; }
.kb-mcell-num { font-size:12px; font-weight:700; color:#1A100E; text-align:right; }
.kb-mcell .kb-ev { padding:2px 5px; font-size:11px; border-left-width:3px; }
.kb-mcell .kb-ev-time { display:inline; }
.kb-mcell .kb-ev-occ { background:none; padding:0; float:right; }
.kb-more { font-size:10px; color:#8a7563; text-align:center; }

@media (max-width:782px) {
  .kb-week { grid-template-columns:1fr; }
  .kb-day { min-height:auto; }
  .kb-month { font-size:11px; }
  .kb-mcell { min-height:64px; }
}
