/* CALENDAR */
.calhd{padding:9px 13px 13px;border-radius:0 0 22px 22px;z-index:10}
.cnav{display:flex;align-items:center;gap:5px;margin-bottom:6px}
.cnb{background:var(--color-overlay-light);border:none;border-radius:var(--radius-control);width:29px;height:29px;color:var(--color-text-on-accent);font-size:17px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.cmonth{font-size:19px;letter-spacing:-.01em;color:var(--color-text-on-accent);font-weight:700;flex:1;text-align:center}
.ctbtn{background:var(--color-overlay-light);border:none;border-radius:var(--radius-control);padding:0 8px;height:29px;color:var(--color-text-on-accent);font-size:10.5px;font-weight:600;cursor:pointer;font-family:var(--ff);white-space:nowrap;flex-shrink:0}
/* Переключатель видов — сегментированный контрол на полупрозрачной подложке.
   Пять видов в ширину не помещаются, поэтому скролл остаётся. */
.cviews{display:flex;gap:3px;overflow-x:auto;scrollbar-width:none;padding:3px;margin-bottom:7px;background:var(--color-overlay-lighter);border-radius:var(--radius-control)}
.cviews::-webkit-scrollbar{display:none}
.cv{flex:1;min-width:fit-content;padding:6px 10px;border-radius:11px;border:none;background:transparent;color:var(--color-text-on-accent-muted);font-size:12px;font-weight:600;cursor:pointer;font-family:var(--ff);transition:all .15s;white-space:nowrap}
.cv.active{background:var(--color-surface);color:var(--color-accent-text)}
.cacts{display:flex;gap:4px;flex-wrap:wrap}
.ca{background:var(--color-overlay-light);border:none;border-radius:var(--radius-control);padding:5px 9px;color:var(--color-text-on-accent);font-size:11px;font-weight:500;cursor:pointer;font-family:var(--ff);white-space:nowrap}
.ca.w{background:var(--color-surface);color:var(--color-accent-text);font-weight:700}
.ca.ron{background:var(--color-warning-badge);color:var(--color-text-strong);font-weight:700}
.rhint{display:none;font-size:11px;color:var(--color-text-on-accent-strong);background:var(--color-overlay-lighter);border-radius:var(--radius-control);padding:4px 10px;margin-top:5px}
/* Месячная сетка живёт в белой карточке, как список покупок. */
.cwrap{padding:14px 20px 0}
.ccard{background:var(--color-surface);border-radius:var(--radius-card);padding:12px 10px 10px;box-shadow:var(--shadow-card)}
.cgrid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}
.cwdr{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;margin-bottom:4px}
.cwd{text-align:center;font-size:10.5px;font-weight:600;color:var(--color-text-muted);padding:2px 0}
.cwd.wk{color:var(--color-weekend-text)}
/* Ячейка дня по макету: квадратная, скруглённая, БЕЗ рамки. Рамка раньше
   кодировала пять состояний (сегодня, выходной, праздник, период, край периода) —
   все они переехали на заливку, иначе сетка превращается в решётку из линий. */
.cc{border-radius:11px;background:transparent;aspect-ratio:1/1.05;cursor:pointer;position:relative;padding:4px 2px 3px;display:flex;flex-direction:column;align-items:center;gap:3px;transition:background .12s;overflow:hidden}
.cc:hover{background:var(--color-tint)}.cc.om{opacity:.35}
.cc.hol{background:var(--color-holiday-surface)}
.cc.ir{background:var(--color-calendar-range-surface)}
.cc.re{background:var(--color-calendar-range-edge);box-shadow:inset 0 0 0 2px var(--color-accent)}
/* Сегодня — залито акцентом целиком. Идёт последним, чтобы перебить праздник. */
.cc.td,.cc.td:hover{background:var(--color-accent)}
.ccn{font-size:13px;font-weight:500;text-align:center;line-height:1;font-variant-numeric:tabular-nums}
.cc.wkd .ccn,.cc.hol .ccn{color:var(--color-weekend-text)}
.cc.td .ccn{color:var(--color-text-on-accent)!important;font-weight:700}
.ccbd{position:absolute;top:1px;right:2px;font-size:11px;line-height:1;filter:drop-shadow(0 0 1.5px var(--color-birthday-glow))}
.ccs{position:absolute;bottom:2px;left:3px;right:3px;display:flex;gap:1px;height:3px}
.ccsv{flex:1;border-radius:2px}
/* Точки событий — ряд под числом. В макете их три, оставляем до четырёх:
   потерять одну — потерять информацию о дне. */
.ccd{display:flex;gap:2px;align-items:center;justify-content:center;height:4px;flex-wrap:nowrap}
.ccdt{width:4px;height:4px;border-radius:2px;flex-shrink:0}
/* Точка категории на залитой акцентом ячейке тонет (тёмно-синее на фиолетовом) —
   обводим белым пошире, чтобы день с событиями читался и сегодня. */
.cc.td .ccdt{box-shadow:0 0 0 1.5px var(--color-surface)}
.dc{border-radius:var(--radius-card);background:var(--color-surface);margin-bottom:7px;padding:10px 12px;cursor:pointer;transition:border-color .15s;box-shadow:var(--shadow-card)}
/* Рамки у .dc нет с среза 1, поэтому border-color здесь ничего не делал:
   сегодняшний день отличался только бледной подложкой. Возвращаем
   заметность акцентной полосой слева. */
.dc:hover{background:var(--color-surface-hover)}
.dc.dct{background:var(--color-calendar-today-surface);box-shadow:var(--shadow-card),inset 3px 0 0 var(--color-accent)}
.dc.dcw{background:var(--color-weekend-surface)}
.dc.dcr{background:var(--color-calendar-range-surface-soft);box-shadow:var(--shadow-card),inset 3px 0 0 var(--color-calendar-range-border-soft)}
.dch{display:flex;align-items:center;gap:7px;margin-bottom:3px}
.dcnum{font-size:20px;font-weight:700;letter-spacing:-.02em;line-height:1;min-width:25px}
.dcd{font-size:11px;font-weight:600;color:var(--color-text-muted)}.dcm{font-size:10.5px;color:var(--color-text-muted)}
.dccats{display:flex;gap:3px;margin-left:auto;align-items:center}.dccd{width:7px;height:7px;border-radius:50%}
.dcevs{margin-top:4px;display:flex;flex-direction:column;gap:3px}
.dcev{padding:3px 7px;background:var(--color-calendar-event-surface);border-radius:var(--radius-badge);font-size:11.5px;font-weight:500;display:flex;align-items:center;gap:5px}
.dcbdn{font-size:11px;color:var(--color-birthday-text);margin-top:3px;font-weight:500}
.ygrid{padding:6px;display:grid;grid-template-columns:repeat(3,1fr);gap:5px}
.mm{background:var(--color-surface);border-radius:var(--radius-control);border:1px solid var(--color-border-input);padding:5px 4px;cursor:pointer}
.mm:hover{border-color:var(--color-accent-text)}.mmt{font-size:10.5px;font-weight:700;text-align:center;margin-bottom:3px;color:var(--color-text)}
.mmg{display:grid;grid-template-columns:repeat(7,1fr);gap:1px}
.mmc{text-align:center;font-size:7.5px;line-height:12px;border-radius:2px;cursor:pointer;position:relative}
.mmc.mmtd{background:var(--color-accent);color:var(--color-text-on-accent);border-radius:50%}.mmc.mmwk{color:var(--color-weekend-text)}
.mmc.mmo{opacity:.3}.mmc.mme{font-weight:700;color:var(--color-accent-text)}
.mmc.mmbd{font-weight:700}
.mmc.mmbd::before{content:'';position:absolute;top:-1px;right:1px;width:5px;height:5px;border-radius:50%;background:var(--color-birthday-dot);box-shadow:0 0 0 1px var(--color-surface)}
/* Легенда категорий под календарём */
.cal-legend{margin:12px 20px 0;padding:14px 16px;background:var(--color-surface);border-radius:var(--radius-card);box-shadow:var(--shadow-card)}
.cal-legend-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.7px;color:var(--color-text-muted);margin-bottom:7px}
.cal-legend-grid{display:flex;flex-wrap:wrap;gap:6px 10px}
.cal-legend-item{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;color:var(--color-text)}
.cal-legend-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}
.cal-legend-bd{font-size:13px;line-height:1}
.cal-legend-note{font-size:11px;color:var(--color-text-muted);margin-top:6px;line-height:1.4}
