/* DeskKit calendar (automate/web/automate.html #panel-calendar, built by
   js/automate-app.js renderCalendar; plan: docs/calendar/PLAN.md).
   Loaded after automate-crm.css; v2 tokens only, so the light theme
   (html.dk-light) works by itself.

   Sections: 1 toolbar · 2 chips · 3 month · 4 week/day · 5 agenda
   · 6 dialog · 7 phones · 8 motion/contrast · 9 light theme. */

body.v2-automate-app .cal { --cal-event: var(--v2-teal); --cal-task: var(--v2-site); --cal-quote: var(--v2-quote); --cal-invoice: var(--v2-invoice);
  --cal-rest: color-mix(in srgb, var(--v2-cv) 7%, transparent); --cal-hour: 48px; }
body.v2-automate-app .cal [data-src="event"] { --tone: var(--cal-event); }
body.v2-automate-app .cal [data-kind="call"] { --tone: var(--v2-deck); }
body.v2-automate-app .cal [data-kind="reminder"] { --tone: var(--v2-tax); }
body.v2-automate-app .cal [data-kind="other"] { --tone: var(--v2-cv); }
body.v2-automate-app .cal [data-src="task"] { --tone: var(--cal-task); }
body.v2-automate-app .cal [data-src="quote"] { --tone: var(--cal-quote); }
body.v2-automate-app .cal [data-src="invoice"] { --tone: var(--cal-invoice); }

/* ============================================================ 1 toolbar */
body.v2-automate-app .cal-bar { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin-bottom: 10px; }
body.v2-automate-app .cal-nav { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; flex: 1 1 260px; min-width: 0; }
html body.v2-automate-app :is(.cal, .cal-acts) .au-btn { min-height: 44px; }
body.v2-automate-app .cal-arrow { min-width: 40px; justify-content: center; padding: 0 10px; font-size: 17px; }
body.v2-automate-app .cal-title { margin: 0 6px; font-size: 20px; color: var(--v2-hi); font-family: Rubik, Heebo, sans-serif; overflow-wrap: anywhere; }
body.v2-automate-app .cal-views button { min-height: 36px; }
body.v2-automate-app .cal-legend { display: flex; flex-wrap: wrap; gap: 6px 14px; font-size: 12.5px; color: var(--v2-muted); margin: 0 0 12px; }
body.v2-automate-app .cal-legend span { display: inline-flex; align-items: center; gap: 5px; }
body.v2-automate-app .cal-legend span[data-src]::before { content: ""; width: 10px; height: 10px; border-radius: 3px; background: var(--tone); }
body.v2-automate-app .cal-legend-rest::before { content: ""; width: 14px; height: 10px; border-radius: 3px; background: var(--cal-rest); box-shadow: inset 0 0 0 1px var(--v2-line-2); }

/* ============================================================ 2 chips */
body.v2-automate-app .cal-chip { display: flex; align-items: center; gap: 4px; width: 100%; min-width: 0; min-height: 26px; padding: 2px 7px; margin: 0; box-sizing: border-box;
  font: inherit; font-size: 12.5px; line-height: 1.3; text-align: start; cursor: pointer; border: 0; border-radius: 8px; color: var(--v2-text);
  background: color-mix(in srgb, var(--tone) 14%, transparent); box-shadow: inset 3px 0 0 var(--tone); }
html[dir="rtl"] body.v2-automate-app .cal-chip { box-shadow: inset -3px 0 0 var(--tone); }
body.v2-automate-app .cal-chip:hover { background: color-mix(in srgb, var(--tone) 24%, transparent); }
body.v2-automate-app .cal-chip:focus-visible, body.v2-automate-app .cal-block:focus-visible, body.v2-automate-app .cal-dnum:focus-visible,
body.v2-automate-app .cal-amain:focus-visible, body.v2-automate-app .cal-add:focus-visible, body.v2-automate-app .cal-more:focus-visible,
body.v2-automate-app .cal-tl-scroll:focus-visible { outline: 2px solid var(--v2-teal-hi); outline-offset: 1px; }
body.v2-automate-app .cal-chip .cal-ti { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
body.v2-automate-app .cal-chip .cal-t, body.v2-automate-app .cal-block .cal-t { font-variant-numeric: tabular-nums; color: var(--v2-dim); font-size: 11.5px; direction: ltr; }
body.v2-automate-app .cal-chip .cal-ic { font-size: 11px; }
body.v2-automate-app .cal-chip[data-src="quote"], body.v2-automate-app .cal-chip[data-src="invoice"], body.v2-automate-app .cal-chip[data-src="task"] { background: transparent; box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--tone) 55%, transparent); }
body.v2-automate-app .cal-chip.sm { margin-bottom: 3px; }
body.v2-automate-app .dragging { opacity: .45; }
body.v2-automate-app .cal-flash { animation: cal-flash 2.2s ease; }
@keyframes cal-flash { 0%, 60% { box-shadow: inset 0 0 0 2px var(--v2-teal), 0 0 30px -8px var(--v2-teal); } 100% { box-shadow: inset 0 0 0 1px var(--v2-line); } }

/* ============================================================ 3 month */
body.v2-automate-app .cal-month { width: 100%; table-layout: fixed; border-collapse: separate; border-spacing: 0; border-radius: 16px; overflow: hidden;
  background: var(--v2-panel); box-shadow: inset 0 0 0 1px var(--v2-line); }
body.v2-automate-app .cal-month th { padding: 8px 4px; font-size: 12.5px; font-weight: 600; color: var(--v2-muted); text-align: center; border-bottom: 1px solid var(--v2-line); }
body.v2-automate-app .cal-month td { position: relative; height: var(--cal-row-h, 112px); padding: 4px 5px 6px; vertical-align: top; border-bottom: 1px solid var(--v2-line); border-inline-start: 1px solid var(--v2-line); }
body.v2-automate-app .cal-month td:first-child { border-inline-start: 0; }
body.v2-automate-app .cal-month tr:last-child td { border-bottom: 0; }
body.v2-automate-app .cal-cell.is-rest, body.v2-automate-app .cal-col.is-rest, body.v2-automate-app .cal-colhead.is-rest, body.v2-automate-app .cal-strip-cell.is-rest { background: var(--cal-rest); }
body.v2-automate-app .cal-cell.is-out { opacity: .55; }
body.v2-automate-app .cal-cell.over, body.v2-automate-app .cal-strip-cell.over, body.v2-automate-app .cal-col.over { box-shadow: inset 0 0 0 2px var(--v2-teal); }
body.v2-automate-app .cal-cell-top { display: flex; align-items: center; gap: 4px; min-width: 0; margin-bottom: 3px; }
body.v2-automate-app .cal-dnum { font: inherit; font-size: 13px; font-weight: 700; min-width: 30px; min-height: 30px; padding: 0 6px; border: 0; border-radius: 999px; cursor: pointer;
  color: var(--v2-text); background: none; font-variant-numeric: tabular-nums; }
body.v2-automate-app .cal-dnum:hover { background: rgba(var(--v2-fg-rgb), .07); }
body.v2-automate-app .is-today > .cal-cell-top .cal-dnum, body.v2-automate-app .cal-colhead.is-today .cal-dnum b { color: var(--v2-on-teal); background: var(--v2-teal); }
body.v2-automate-app .cal-colhead.is-today .cal-dnum b { padding: 1px 7px; border-radius: 999px; }
body.v2-automate-app .cal-hol { font-size: 11px; color: var(--v2-cv); font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
body.v2-automate-app .cal-cell-list { display: grid; gap: 3px; }
body.v2-automate-app .cal-more { font: inherit; font-size: 12px; color: var(--v2-teal-hi); background: none; border: 0; padding: 2px 4px; cursor: pointer; text-align: start; min-height: 24px; }
body.v2-automate-app .cal-add { position: absolute; bottom: 4px; inset-inline-end: 4px; width: 26px; height: 26px; border-radius: 50%; border: 0; cursor: pointer; font: inherit; font-size: 16px; line-height: 1;
  color: var(--v2-teal-hi); background: rgba(var(--v2-teal-rgb), .12); opacity: 0; transition: opacity var(--v2-fast) ease; }
body.v2-automate-app .cal-cell:hover .cal-add, body.v2-automate-app .cal-add:focus-visible { opacity: 1; }
@media (hover: none) { body.v2-automate-app .cal-add { opacity: .8; } }
body.v2-automate-app .cal-dots { display: flex; justify-content: center; gap: 3px; flex-wrap: wrap; }
body.v2-automate-app .cal-dots i { width: 6px; height: 6px; border-radius: 50%; background: var(--tone); }

/* ============================================================ 4 week / day */
body.v2-automate-app .cal-tl { border-radius: 16px; background: var(--v2-panel); box-shadow: inset 0 0 0 1px var(--v2-line); overflow: hidden; }
body.v2-automate-app .cal-tl-head, body.v2-automate-app .cal-tl-strip, body.v2-automate-app .cal-tl-grid { display: grid; grid-template-columns: 56px repeat(var(--cal-cols), minmax(0, 1fr)); }
body.v2-automate-app .cal-tl-head { border-bottom: 1px solid var(--v2-line); }
body.v2-automate-app .cal-colhead { display: grid; justify-items: center; gap: 2px; padding: 6px 2px; border-inline-start: 1px solid var(--v2-line); min-width: 0; }
body.v2-automate-app .cal-dnum.wide { font-weight: 600; font-size: 13px; color: var(--v2-dim); min-height: 36px; }
body.v2-automate-app .cal-dnum.wide b { color: var(--v2-hi); }
body.v2-automate-app .cal-tl-strip { border-bottom: 1px solid var(--v2-line-2); min-height: 34px; }
body.v2-automate-app .cal-gutter { font-size: 11px; color: var(--v2-muted); padding: 6px 4px; text-align: center; }
body.v2-automate-app .cal-strip-cell { padding: 4px 3px 1px; border-inline-start: 1px solid var(--v2-line); min-width: 0; }
body.v2-automate-app .cal-tl-scroll { max-height: min(640px, calc(100vh - 300px)); min-height: 320px; overflow-y: auto; }
body.v2-automate-app .cal-tl-grid { position: relative; }
body.v2-automate-app .cal-hours { position: relative; }
body.v2-automate-app .cal-hours span { position: absolute; inset-inline: 0; transform: translateY(-50%); font-size: 11px; color: var(--v2-muted); text-align: center; font-variant-numeric: tabular-nums; }
body.v2-automate-app .cal-hours span:first-child { transform: none; }
body.v2-automate-app .cal-col { position: relative; border-inline-start: 1px solid var(--v2-line); cursor: copy;
  background-image: repeating-linear-gradient(to bottom, var(--v2-line) 0, var(--v2-line) 1px, transparent 1px, transparent var(--cal-hour)); }
body.v2-automate-app .cal-block { position: absolute; display: grid; align-content: start; gap: 1px; overflow: hidden; padding: 3px 6px; box-sizing: border-box;
  font: inherit; font-size: 12px; line-height: 1.25; text-align: start; border: 0; border-radius: 8px; cursor: pointer; color: var(--v2-text);
  background: color-mix(in srgb, var(--tone) 22%, var(--v2-panel)); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--tone) 55%, transparent); }
body.v2-automate-app .cal-block .cal-ti { font-weight: 600; color: var(--v2-hi); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
body.v2-automate-app .cal-block small { color: var(--v2-dim); font-size: 11px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
body.v2-automate-app .cal-now { position: absolute; inset-inline: 0; height: 2px; background: var(--v2-danger); pointer-events: none; z-index: 2; }
body.v2-automate-app .cal-now::before { content: ""; position: absolute; inset-inline-start: -4px; top: -3px; width: 8px; height: 8px; border-radius: 50%; background: var(--v2-danger); }

/* ============================================================ 5 agenda */
body.v2-automate-app .cal-quick { display: grid; grid-template-columns: 2fr 1fr 1fr auto; gap: 10px; align-items: end; margin-bottom: 8px; }
body.v2-automate-app .cal-quick .au-field { margin: 0; min-width: 0; }
body.v2-automate-app .cal-quick .au-btn { min-height: 42px; }
body.v2-automate-app .cal-asec { padding: 0; margin: 16px 0 0; }
body.v2-automate-app .cal-asec h3 { margin: 0 0 8px; font-size: 16px; color: var(--v2-hi); }
body.v2-automate-app .cal-asec h3 small { font-weight: 400; color: var(--v2-muted); font-size: 13px; }
body.v2-automate-app .cal-asub { margin: 24px 0 0; font-size: 13px; color: var(--v2-muted); font-weight: 600; text-transform: none; }
body.v2-automate-app .cal-asec ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
body.v2-automate-app .cal-arow { display: flex; align-items: center; gap: 10px; padding: 6px 10px; border-radius: 14px; background: var(--v2-panel);
  box-shadow: inset 0 0 0 1px var(--v2-line), inset -3px 0 0 var(--tone); }
html[dir="ltr"] body.v2-automate-app .cal-arow { box-shadow: inset 0 0 0 1px var(--v2-line), inset 3px 0 0 var(--tone); }
body.v2-automate-app .cal-awhen { flex: none; width: 64px; display: grid; gap: 1px; font-size: 13px; color: var(--v2-dim); font-variant-numeric: tabular-nums; }
body.v2-automate-app .cal-awhen b { color: var(--v2-hi); font-weight: 600; font-size: 14px; }
body.v2-automate-app .cal-awhen small { font-size: 12px; color: var(--v2-muted); }
body.v2-automate-app .cal-aline { display: block; }
body.v2-automate-app .cal-amain { flex: 1; min-width: 0; min-height: 44px; display: grid; align-content: center; gap: 1px; font: inherit; text-align: start; color: var(--v2-text);
  background: none; border: 0; padding: 4px 0; cursor: pointer; }
body.v2-automate-app .cal-amain b { color: var(--v2-hi); font-weight: 600; overflow-wrap: anywhere; }
body.v2-automate-app .cal-amain small { color: var(--v2-muted); font-size: 12.5px; overflow-wrap: anywhere; }
body.v2-automate-app .cal-tick { min-width: 44px; min-height: 44px; justify-content: center; font-size: 17px; }

/* ============================================================ 6 dialog */
body.v2-automate-app .cal-form .ev-time[hidden] { display: none; }
body.v2-automate-app .cal-form .cal-allday { display: flex; align-items: flex-end; padding-bottom: 8px; }
body.v2-automate-app .cal-form .au-check { min-height: 40px; }
body.v2-automate-app .cal-err { color: var(--v2-danger); min-height: 1em; }
body.v2-automate-app .cal-del { margin-inline-start: auto; }

/* ============================================================ 7 phones */
@media (max-width: 640px) {
  body.v2-automate-app .cal-bar { gap: 8px; }
  body.v2-automate-app .cal-nav { flex: 1 1 100%; }
  body.v2-automate-app .cal-title { flex: 1 1 100%; margin: 4px 0 0; font-size: 18px; }
  body.v2-automate-app .cal-views { flex: 1 1 auto; }
  body.v2-automate-app .cal-views button { flex: 1; min-height: 40px; padding: 7px 10px; }
  body.v2-automate-app .cal-new { flex: 1 1 100%; justify-content: center; }
  body.v2-automate-app .cal-month td { height: 52px; padding: 2px; }
  body.v2-automate-app .cal-month th { font-size: 11px; padding: 6px 0; }
  body.v2-automate-app .cal-cell-top { justify-content: center; }
  body.v2-automate-app .cal-dnum { min-width: 40px; min-height: 40px; padding: 0; }
  body.v2-automate-app .cal-quick { grid-template-columns: 1fr 1fr; }
  body.v2-automate-app .cal-quick .au-field:first-child, body.v2-automate-app .cal-quick .au-btn { grid-column: 1 / -1; }
  body.v2-automate-app .cal-tl-head, body.v2-automate-app .cal-tl-strip, body.v2-automate-app .cal-tl-grid { grid-template-columns: 46px repeat(var(--cal-cols), minmax(0, 1fr)); }
  body.v2-automate-app .cal-awhen { width: 52px; font-size: 12.5px; }
  body.v2-automate-app .cal-form.crm-fields { grid-template-columns: 1fr 1fr; }
}

/* ============================================================ 8 motion + contrast */
@media (prefers-reduced-motion: reduce) { body.v2-automate-app .cal-flash { animation: none; } body.v2-automate-app .cal-add { transition: none; } }
html.dka-still body.v2-automate-app .cal-flash { animation: none; }
html:is(.dka-contrast-dark, .dka-contrast-light) body.v2-automate-app :is(.cal-month, .cal-tl, .cal-arow, .cal-chip, .cal-block) { background: transparent; box-shadow: inset 0 0 0 1px currentColor; }

/* ============================================================ 9 light theme */
html.dk-light:not(.dka-contrast-dark, .dka-contrast-light) body.v2-automate-app .cal { --cal-rest: #f1edfb; }
html.dk-light:not(.dka-contrast-dark, .dka-contrast-light) body.v2-automate-app :is(.cal-month, .cal-tl, .cal-arow) { background: #fff; box-shadow: inset 0 0 0 1px rgba(11, 16, 32, .09), var(--v2-lift-1); }
html.dk-light:not(.dka-contrast-dark, .dka-contrast-light) body.v2-automate-app .cal-arow { box-shadow: inset 0 0 0 1px rgba(11, 16, 32, .09), inset -3px 0 0 var(--tone); }
html[dir="ltr"].dk-light:not(.dka-contrast-dark, .dka-contrast-light) body.v2-automate-app .cal-arow { box-shadow: inset 0 0 0 1px rgba(11, 16, 32, .09), inset 3px 0 0 var(--tone); }
html.dk-light:not(.dka-contrast-dark, .dka-contrast-light) body.v2-automate-app .cal-block { background: color-mix(in srgb, var(--tone) 16%, #fff); }
html.dk-light:not(.dka-contrast-dark, .dka-contrast-light) body.v2-automate-app .cal-hol { color: #6d28d9; }
html.dk-light:not(.dka-contrast-dark, .dka-contrast-light) body.v2-automate-app .cal-more { color: #0f766e; }

/* Hebrew dates (js/hebrew-date.js): the day in letters next to the number,
   holidays / fasts / Rosh Chodesh under it, and the Hebrew months by the title. */
body.v2-automate-app .cal-hday { font-size: 12px; font-weight: 600; color: var(--v2-muted); margin-inline-start: auto; padding-inline-end: 2px; }
body.v2-automate-app .cal-colhead .cal-hday { margin-inline-start: 4px; font-weight: 500; }
body.v2-automate-app .cal-hols { display: flex; flex-wrap: wrap; gap: 2px 6px; min-height: 0; margin: -2px 0 3px; }
body.v2-automate-app .cal-hols:empty { display: none; }
body.v2-automate-app .cal-hol[data-kind="yomtov"] { color: var(--v2-cv); }
body.v2-automate-app .cal-hol[data-kind="holiday"] { color: var(--v2-teal-hi); }
body.v2-automate-app .cal-hol[data-kind="fast"], body.v2-automate-app .cal-hol[data-kind="national"] { color: var(--v2-muted); }
body.v2-automate-app .cal-hol[data-kind="rc"], body.v2-automate-app .cal-hol[data-kind="minor"] { color: var(--v2-muted); font-weight: 500; }
body.v2-automate-app .cal-htitle { display: block; font-size: 14px; font-weight: 500; color: var(--v2-muted); margin-top: 2px; }
