/* ═══════════════════════════════════════════════════════════════════
 * calendar.css — календарь (Месяц/Неделя/Лента) / события / now-line
 * ═══════════════════════════════════════════════════════════════════
 * Сгенерировано: scripts/arch3_4_split_css.py
 * Источник: frontend/index.html (3 <style> блока)
 * ═══════════════════════════════════════════════════════════════════
 */

.cal-page { padding: 24px 28px; }

.cal-header { display: flex; align-items: center; gap: 16px; margin-bottom: 20px; }

.cal-header h2 { font-size: 1.1em; font-weight: 700; color: var(--fg0); margin: 0; flex: 1; text-align: center; }

.cal-nav-btn { background: var(--bg2); border: 1px solid var(--border); border-radius: 6px; color: var(--fg1); padding: 6px 14px; cursor: pointer; font-size: 0.9em; }

.cal-nav-btn:hover { border-color: var(--acc); color: var(--acc); }

.cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 6px; }

.cal-dow { text-align: center; font-size: 0.72em; font-weight: 600; color: var(--fg2); padding: 4px 0; letter-spacing: 0.04em; }

.cal-dow.weekend { color: var(--red); }

.cal-cell { min-height: 90px; background: var(--bg1); border: 1px solid var(--border); border-radius: 8px; padding: 6px 7px; position: relative; transition: border-color 0.15s; }

.cal-cell.today { border-color: var(--acc); background: var(--acc-soft); }

.cal-cell.past { opacity: 0.55; }

.cal-cell.soon { border-color: #f59e0b; }

.cal-cell.empty { background: var(--bg1); border-color: transparent; }

.cal-cell.other-month { opacity: 0.3; }

.cal-day-num { font-size: 0.75em; font-weight: 700; color: var(--fg2); margin-bottom: 5px; }

.cal-cell.today .cal-day-num { color: var(--acc); }

.ev-chip { display:flex; align-items:center; gap:4px; padding:3px 6px; background:rgba(255,255,255,0.05); border-left:2px solid var(--acc); border-radius:0 4px 4px 0; margin-bottom:2px; cursor:pointer; transition:opacity 0.1s; overflow:hidden; min-width:0; }

.ev-chip:hover { opacity:0.75; }

.ev-chip--bid        { border-left-color:#ff6a2f; }

.ev-chip--inspection { border-left-color:#30d158; }

.ev-chip--call       { border-left-color:#0a84ff; }

.ev-chip--reminder   { border-left-color:#ffd60a; }

.ev-chip--other      { border-left-color:#636366; }

.ev-chip--good       { border-left-color:#30d158; }

.ev-chip--mid        { border-left-color:#ffd60a; }

.ev-chip--bad        { border-left-color:#ff453a; }

.ev-chip.urgent { animation: calUrgentPulse 1.4s ease-in-out infinite; }

.ev-chip__t { font-size:0.6em; font-weight:700; color:var(--fg2); flex-shrink:0; font-family:var(--mono); }

.ev-chip__ttl { font-size:0.68em; font-weight:600; color:var(--fg0); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; min-width:0; }

.ev-chip__icon { font-size:0.7em; flex-shrink:0; line-height:1; }

.cal-more { font-size:0.62em; color:var(--fg2); padding:1px 4px; cursor:pointer; }

.cal-more:hover { color:var(--acc); }

.cal-legend { display: flex; gap: 16px; margin-top: 16px; font-size: 0.75em; color: var(--fg2); flex-wrap: wrap; }

.cal-legend span { display: flex; align-items: center; gap: 5px; }

.cal-legend-dot { width: 10px; height: 10px; border-radius: 2px; border: 1px solid; }

.cal-seg { display:inline-flex; background:var(--bg2); border:1px solid var(--border); border-radius:10px; padding:3px; gap:2px; }

.cal-seg-btn { padding:5px 14px; border:none; background:transparent; border-radius:7px; color:var(--fg2); font-size:0.8em; font-weight:600; cursor:pointer; font-family:inherit; transition:all 0.15s; white-space:nowrap; }

.cal-seg-btn.active { background:var(--bg1); color:var(--fg0); box-shadow:0 1px 3px rgba(0,0,0,0.45), 0 0 0 1px rgba(255,255,255,0.06); }

.cal-seg-btn:hover:not(.active) { color:var(--fg0); }

.cal-toolbar { display:flex; align-items:center; gap:8px; padding:10px 16px; background:var(--bg1); border-bottom:1px solid var(--border); flex-shrink:0; flex-wrap:nowrap; overflow-x:auto; scrollbar-width:none; }

.cal-toolbar::-webkit-scrollbar { display:none; }

.cal-stat-pill { font-size:0.72em; font-weight:600; padding:3px 10px; border-radius:10px; border:1px solid var(--border); color:var(--fg2); white-space:nowrap; flex-shrink:0; }

.cal-stat-pill.accent { border-color:var(--acc-border); color:var(--acc); background:var(--acc-soft); }

.cal-nav-arrow { width:30px; height:30px; padding:0; display:flex; align-items:center; justify-content:center; background:var(--bg2); border:1px solid var(--border); border-radius:8px; color:var(--fg1); font-size:1em; font-weight:700; cursor:pointer; font-family:inherit; flex-shrink:0; }

.cal-nav-arrow:hover { background:var(--bg3); color:var(--fg0); }

.cal-nav-today { padding:6px 12px; background:var(--bg2); border:1px solid var(--border); border-radius:8px; color:var(--fg1); font-size:0.8em; font-weight:600; cursor:pointer; font-family:inherit; flex-shrink:0; white-space:nowrap; }

.cal-nav-today:hover { background:var(--bg3); color:var(--fg0); }

.cal-nav-label { font-size:1.05em; font-weight:800; color:var(--fg0); padding:0 6px; white-space:nowrap; flex-shrink:0; }

.cal-filter-inline { display:flex; gap:4px; align-items:center; flex-shrink:0; }

.cal-add-btn { padding:7px 14px; background:var(--acc); border:none; border-radius:8px; color:#fff; font-size:0.8em; font-weight:700; cursor:pointer; font-family:inherit; flex-shrink:0; white-space:nowrap; }

.cal-add-btn:hover { filter:brightness(1.08); }

.cal-body { display:flex; flex:1; overflow:hidden; min-height:0; }

.cal-main { flex:1; overflow:auto; padding:0; min-width:0; }

.cal-week-wrap { /* без overflow — sticky работает относительно .cal-main */ }

.cal-week-outer { display:grid; grid-template-columns:46px repeat(7,1fr); min-width:520px; border:1px solid var(--border); border-radius:var(--r2); }

.cal-week-hdr-blank { background:var(--bg2); border-right:1px solid var(--border); border-bottom:1px solid var(--border); height:52px; position:sticky; top:0; z-index:20; }

.cal-week-hdr { background:var(--bg2); padding:8px 5px; text-align:center; border-right:1px solid var(--border); border-bottom:1px solid var(--border); height:52px; display:flex; flex-direction:column; align-items:center; justify-content:center; position:sticky; top:0; z-index:20; }

.cal-week-hdr:last-child { border-right:none; }

.cal-week-hdr.today { background:var(--acc-soft); }

.cal-week-hdr-day { font-size:0.62em; font-weight:700; color:var(--fg2); letter-spacing:0.05em; text-transform:uppercase; }

.cal-week-hdr-day.weekend { color:var(--red); }

.cal-week-hdr-num { font-size:1.1em; font-weight:700; color:var(--fg1); margin-top:2px; }

.cal-week-hdr.today .cal-week-hdr-num { color:var(--acc); }

.cal-week-time-col { display:flex; flex-direction:column; background:var(--bg2); border-right:1px solid var(--border); }

.cal-week-time { height:48px; padding:3px 5px 0 0; font-size:0.6em; color:var(--fg2); font-family:var(--mono); text-align:right; border-bottom:1px solid rgba(255,255,255,0.04); display:flex; align-items:flex-start; justify-content:flex-end; padding-top:4px; box-sizing:border-box; flex-shrink:0; }

.cal-week-time.hour-line { border-bottom-color:var(--border); }

.cal-week-col { position:relative; border-right:1px solid var(--border); overflow:hidden; }

.cal-week-col:last-child { border-right:none; }

.cal-week-col.today-col { background:rgba(255,106,47,0.03); }

.cal-week-hline { height:48px; border-bottom:1px solid rgba(255,255,255,0.04); box-sizing:border-box; }

.cal-week-hline.hour-line { border-bottom-color:var(--border); }

.week-ev { position:absolute; left:3px; right:3px; border-radius:6px; padding:4px 7px; overflow:hidden; cursor:pointer; z-index:1; transition:opacity 0.1s; }

.week-ev:hover { opacity:0.82; z-index:5; }

.week-ev--bid        { background:rgba(255,106,47,0.2); border-left:2px solid #ff6a2f; }

.week-ev--inspection { background:rgba(48,209,88,0.18); border-left:2px solid #30d158; }

.week-ev--call       { background:rgba(10,132,255,0.18); border-left:2px solid #0a84ff; }

.week-ev--reminder   { background:rgba(255,214,10,0.18); border-left:2px solid #ffd60a; }

.week-ev--other      { background:rgba(99,99,102,0.18); border-left:2px solid #636366; }

.week-ev__time { font-size:0.6em; font-weight:700; opacity:0.7; font-family:var(--mono); line-height:1; margin-bottom:2px; }

.week-ev__ttl { font-size:0.73em; font-weight:700; color:var(--fg0); line-height:1.2; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

.week-ev__sub { font-size:0.62em; color:var(--fg2); margin-top:1px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

.now-line { position:absolute; left:0; right:0; z-index:10; pointer-events:none; display:flex; align-items:center; }

.now-line__dot { width:8px; height:8px; border-radius:50%; background:var(--red); flex-shrink:0; margin-top:-3px; }

.now-line__bar { flex:1; height:2px; background:var(--red); }

.feed { padding:18px 24px 60px; max-width:820px; margin:0 auto; }

.feed-day { margin-bottom:24px; padding:0; border:none; background:transparent; position:static; }

.feed-day__h { display:flex; gap:10px; align-items:baseline; margin-bottom:10px; padding-bottom:6px; border-bottom:1px solid var(--border); }

.feed-day__d { font-size:18px; font-weight:800; color:var(--fg0); letter-spacing:-0.3px; display:flex; align-items:baseline; gap:8px; }

.feed-day__d.today { color:var(--acc); }

.feed-day__d small { font-size:11px; color:var(--fg2); text-transform:uppercase; letter-spacing:0.08em; font-weight:700; }

.feed-day__cnt { font-size:11px; color:var(--fg2); margin-left:auto; font-family:var(--mono); font-weight:600; }

.feed-row { display:grid; grid-template-columns:60px 32px 1fr auto; gap:14px; align-items:center; padding:9px 10px; border-radius:8px; cursor:pointer; border:1px solid transparent; transition:all 0.12s; background:transparent; }

.feed-row:hover { background:var(--bg1); }

.feed-row.selected { background:var(--bg1); border-color:var(--border2); }

.feed-row.done { opacity:0.45; }

.feed-row.done .feed-row__ttl b { text-decoration:line-through; }

.feed-row__time { font-family:var(--mono); font-size:13px; color:var(--fg1); font-weight:700; }

.feed-row.is-now .feed-row__time { color:var(--red); }

.feed-row__ico { width:32px; height:32px; border-radius:8px; display:flex; align-items:center; justify-content:center; font-size:14px; border:1px solid; }

.feed-row__ttl { display:flex; flex-direction:column; gap:2px; min-width:0; }

.feed-row__ttl b { font-weight:700; color:var(--fg0); font-size:14px; line-height:1.2; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }

.feed-row__ttl span { font-size:11px; color:var(--fg2); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }

.feed-row__lot { font-family:var(--mono); font-size:11px; color:var(--acc); padding:3px 8px; border-radius:4px; background:var(--acc-soft); font-weight:700; white-space:nowrap; }

.feed-row__ico--bid        { background:rgba(255,106,47,0.10); color:#ff6a2f; border-color:rgba(255,106,47,0.30); }

.feed-row__ico--inspection { background:rgba(48,209,88,0.10);  color:#30d158; border-color:rgba(48,209,88,0.30); }

.feed-row__ico--call       { background:rgba(10,132,255,0.10); color:#0a84ff; border-color:rgba(10,132,255,0.30); }

.feed-row__ico--reminder   { background:rgba(255,214,10,0.10); color:#ffd60a; border-color:rgba(255,214,10,0.30); }

.feed-row__ico--other      { background:rgba(142,142,147,0.10); color:#8e8e93; border-color:rgba(142,142,147,0.30); }

.feed-row__badge { font-size:0.63em; font-weight:700; color:var(--acc); background:rgba(255,106,47,0.12); border:1px solid rgba(255,106,47,0.25); border-radius:5px; padding:2px 6px; flex-shrink:0; white-space:nowrap; }

.feed-now { display:flex; align-items:center; gap:10px; margin:8px 0; padding:0 10px; position:relative; }

.feed-now__lbl { font-family:var(--mono); font-size:10px; font-weight:800; color:#fff; background:var(--red); padding:3px 8px; border-radius:4px; text-transform:uppercase; letter-spacing:0.08em; white-space:nowrap; }

.feed-now__time { font-family:var(--mono); font-size:11px; color:var(--red); font-weight:700; }

.feed-now__line { flex:1; height:2px; background:linear-gradient(90deg,var(--red),transparent); }

.cal-preview-panel { width:300px; border-left:1px solid var(--border); background:var(--bg1); overflow:hidden; flex-shrink:0; display:none; flex-direction:column; position:relative; }

.cal-preview-panel.open { display:flex; }

.cal-side__head { display:flex; align-items:center; gap:8px; padding:12px 14px; border-bottom:1px solid var(--border); flex-shrink:0; }

.cal-side__tag { font-size:0.63em; font-weight:700; letter-spacing:0.07em; color:var(--acc); padding:2px 8px; border:1px solid var(--acc-border); border-radius:4px; }

.cal-side__close { margin-left:auto; background:none; border:none; color:var(--fg2); cursor:pointer; font-size:1em; padding:4px 8px; border-radius:var(--r1); }

.cal-side__close:hover { background:var(--bg2); color:var(--fg0); }

.cal-side__ev-title { padding:10px 14px 2px; font-size:0.95em; font-weight:700; color:var(--fg0); }

.cal-side__ev-sub { padding:0 14px 10px; font-size:0.7em; color:var(--fg2); border-bottom:1px solid rgba(255,255,255,0.05); }

.cal-side__body { flex:1; overflow-y:auto; padding-bottom:90px; }

.cal-side__sec { padding:10px 14px; border-bottom:1px solid rgba(255,255,255,0.05); }

.cal-side__sec-hdr { font-size:0.62em; font-weight:700; color:var(--fg2); text-transform:uppercase; letter-spacing:0.07em; margin-bottom:6px; }

.cal-side__footer { position:absolute; bottom:0; left:0; right:0; padding:10px 14px; background:var(--bg1); border-top:1px solid var(--border); }

.cal-fields { display:grid; grid-template-columns:1fr 1fr; gap:6px 10px; }

.cal-field__lbl { font-size:0.6em; font-weight:700; color:var(--fg2); text-transform:uppercase; letter-spacing:0.06em; margin-bottom:2px; }

.cal-field__val { font-size:0.8em; color:var(--fg0); font-weight:600; }

.cal-btn { display:flex; align-items:center; justify-content:center; gap:6px; border:none; border-radius:8px; cursor:pointer; font-family:inherit; font-weight:600; transition:all 0.12s; }

.cal-btn--primary { background:var(--acc); color:#fff; padding:10px 16px; font-size:0.84em; width:100%; }

.cal-btn--primary:hover { opacity:0.88; }

.cal-btn--ghost { background:var(--bg2); border:1px solid var(--border); color:var(--fg1); padding:7px 12px; font-size:0.76em; flex:1; }

.cal-btn--ghost:hover { border-color:var(--fg2); color:var(--fg0); }

.cal-btn--danger { background:rgba(239,68,68,0.1); border:1px solid rgba(239,68,68,0.25); color:#f87171; padding:7px 12px; font-size:0.76em; flex:1; }

.cal-btn--danger:hover { background:rgba(239,68,68,0.18); }

.cal-task-chip { display:flex; align-items:center; gap:4px; padding:3px 6px; background:rgba(255,255,255,0.05); border-left:2px solid var(--fg2); border-radius:0 4px 4px 0; margin-bottom:2px; cursor:pointer; transition:opacity 0.1s; overflow:hidden; min-width:0; font-size:0.68em; }

.cal-task-chip--bid        { border-left-color:#ff6a2f; }

.cal-task-chip--inspection { border-left-color:#30d158; }

.cal-task-chip--call       { border-left-color:#0a84ff; }

.cal-task-chip--reminder   { border-left-color:#ffd60a; }

.cal-task-chip--other      { border-left-color:#636366; }

.cal-task-chip__lbl { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--fg1); }

.cal-empty { text-align:center; padding:52px 24px; color:var(--fg2); font-size:0.88em; line-height:1.6; }

.cal-filter-bar { display:flex; align-items:center; gap:5px; padding:6px 16px 8px; background:var(--bg1); border-bottom:1px solid var(--border); flex-shrink:0; flex-wrap:wrap; }

.cal-filter-chip { display:flex; align-items:center; gap:4px; padding:3px 10px; font-size:0.75em; font-weight:600; background:transparent; border:1px solid var(--border); border-radius:20px; color:var(--fg2); cursor:pointer; font-family:inherit; transition:all 0.12s; white-space:nowrap; }

.cal-filter-chip.active { background:rgba(255,106,47,0.15); border-color:var(--acc); color:var(--fg0); }

.cal-filter-chip:hover:not(.active) { border-color:var(--fg2); color:var(--fg0); }
