/* Calendar, job program and "quoted days → program" (js/views/calendar.js). Tokens only. */
.cal-top{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px}
.cal-nav{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.cal-nav b{margin-left:6px;font-size:14px}
.cal-wxwarn{display:flex;flex-direction:column;gap:8px}
.cal-wxwarn:empty{display:none}
.cal-wcard span{flex:1 1 260px}

/* heads up list */
.cal-clist{list-style:none;margin:0;padding:4px 0}
.cal-clist li{display:flex;align-items:center;gap:10px;padding:7px 14px;font-size:13px;border-bottom:1px solid var(--line)}
.cal-clist li:last-child{border-bottom:0}
.cal-clist .grow{flex:1;min-width:0}
.cal-clist .chip{min-width:96px;justify-content:center}

/* crew initials */
.cal-av{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;font-size:9.5px;font-weight:700;letter-spacing:-.02em;flex:none;color:var(--cav);background:color-mix(in srgb,var(--cav) 20%,var(--panel));border:1px solid color-mix(in srgb,var(--cav) 55%,transparent)}
.cal-av.big{width:32px;height:32px;font-size:12px}
.cal-av.c0{--cav:var(--accent)}.cal-av.c1{--cav:var(--good)}.cal-av.c2{--cav:var(--warn)}.cal-av.c3{--cav:var(--q)}.cal-av.c4{--cav:var(--bad)}.cal-av.c5{--cav:var(--info)}
.cal-k{display:inline-block;font-size:10px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;padding:1px 5px;border-radius:4px;background:var(--panel2);color:var(--muted);white-space:nowrap}
.cal-k.k-pour{background:var(--warn-soft);color:var(--warn)}
.cal-k.k-turf{background:var(--good-soft);color:var(--good)}
.cal-k.k-delivery{background:var(--accent-soft);color:var(--info)}
.cal-k.k-subbie{background:var(--q-soft);color:var(--q)}
.cal-truck{vertical-align:-2px;flex:none}

/* week grid */
.cal-scroll{border-radius:10px}
.cal-grid{border-collapse:separate;border-spacing:0;table-layout:fixed;width:100%;font-size:12px}
.cal-grid th,.cal-grid td{border-bottom:1px solid var(--line);border-left:1px solid var(--line);padding:5px 4px;vertical-align:top}
.cal-grid thead th{position:sticky;top:0;background:var(--panel);z-index:1}
.cal-grid .cal-job{position:sticky;left:0;z-index:2;width:150px;background:var(--panel);text-align:left;border-left:0;padding:8px 10px}
.cal-grid thead .cal-corner{z-index:3;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;vertical-align:bottom}
.cal-job a{font-weight:700;color:var(--fg);text-decoration:none;display:block}
.cal-job a:hover{color:var(--accent)}
.cal-job small{display:block;font-weight:400;color:var(--muted);font-size:11.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cal-d{text-align:center;font-weight:400;color:var(--muted)}
.cal-d span{display:block;font-size:10.5px;text-transform:uppercase;letter-spacing:.04em}
.cal-d b{display:block;font-size:14px;color:var(--fg)}
.cal-d.is-today b{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;border-radius:12px;background:var(--accent);color:var(--accent-ink)}
.cal-hdel{display:block;color:var(--info);font-style:normal;line-height:1}
.cal-grid .we{background:var(--panel2)}
.cal-grid td.is-today{box-shadow:inset 2px 0 0 var(--accent),inset -2px 0 0 var(--accent)}
.cal-grid td{height:54px}
.cal-grid td.on{background:var(--accent-soft)}
.cal-grid td.on.we{background:color-mix(in srgb,var(--accent-soft) 60%,var(--panel2))}
.cal-grid td.m-bad{box-shadow:inset 0 0 0 2px var(--bad)}
.cal-grid td.m-warn{box-shadow:inset 0 0 0 2px var(--warn)}
.cal-grid td.wet{background:var(--warn-soft)}
.cal-grid td.wet .cal-k.k-pour,.cal-grid td.wet .cal-k.k-turf{background:var(--warn);color:var(--bg)}
.cal-grid td.has-del:not(.on){background:color-mix(in srgb,var(--accent-soft) 50%,transparent)}
.cal-grid tr.tent td,.cal-grid tr.tent th{opacity:.5}
.cal-grid td>*{margin:0 2px 2px 0}
.cal-chips{display:flex;flex-wrap:wrap;gap:2px}
.cal-del{display:flex;align-items:center;gap:3px;color:var(--info);font-size:10.5px;line-height:1.2;min-width:0}
.cal-del em{font-style:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cal-wx{display:block;font-size:10.5px;color:var(--muted);white-space:nowrap}
.cal-wx em{font-style:normal;margin-left:4px}
.cal-wx.rain{color:var(--warn);font-weight:600}
.cal-none{text-align:center;color:var(--muted);padding:26px!important;height:auto!important}
.v-month .cal-av{width:17px;height:17px;font-size:8px}
.v-month .cal-k{font-size:8.5px;padding:0 3px}
.v-month .cal-wx em{display:none}
.v-week td{height:72px}
.v-week .cal-av{width:26px;height:26px;font-size:10.5px}
.cal-key{display:flex;flex-wrap:wrap;gap:6px 16px;padding:10px 14px;border-top:1px solid var(--line);font-size:12px;color:var(--muted);align-items:center}
.cal-key span{display:inline-flex;align-items:center;gap:5px}
.cal-sw{display:inline-block;width:14px;height:14px;border-radius:3px;background:var(--panel2)}
.cal-sw.bad{box-shadow:inset 0 0 0 2px var(--bad)}.cal-sw.warn{box-shadow:inset 0 0 0 2px var(--warn)}
.cal-sw.tent{background:var(--accent-soft);opacity:.5}
.cal-sw.plan{border:1.5px dashed var(--accent);background:transparent}
.cal-sw.act{background:var(--accent)}
.cal-sw.we{background:var(--warn-soft)}

/* job program (his WHIT01 sheet) */
.cal-prog{border-collapse:separate;border-spacing:0;font-size:12.5px;width:max-content}
.cal-prog th,.cal-prog td{border-bottom:1px solid var(--line);padding:0;height:40px}
.cal-prog thead th{background:var(--panel);font-size:11px;color:var(--muted);font-weight:600;text-align:left;padding:6px 8px;vertical-align:bottom;height:auto}
.cal-prog .cp-who{width:130px;min-width:130px;padding:6px 10px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:130px}
.cal-prog .cp-desc{position:sticky;left:0;z-index:2;background:var(--panel);min-width:240px;max-width:300px;text-align:left;font-weight:400;padding:0;border-right:1px solid var(--line2)}
.cal-prog thead .cp-desc{z-index:3;padding:6px 10px}
.cal-prog .cp-desc .lnk,.cal-prog .cp-hours .cp-desc{display:flex;flex-direction:column;align-items:flex-start;gap:3px;width:100%;padding:7px 10px;text-align:left;background:none;border:0;color:var(--fg);cursor:pointer;font:inherit}
.cal-prog .cp-desc .lnk:hover b{color:var(--accent)}
.cp-tags{display:flex;flex-wrap:wrap;gap:3px;align-items:center}
.cp-tags .chip{font-size:10.5px;padding:0 6px}
.cp-sm{display:none;color:var(--muted);font-size:11.5px}
.cal-prog .cp-dur{width:48px;min-width:48px;text-align:center;padding:0 6px}
.cal-prog .cal-d{width:30px;min-width:30px;max-width:30px;padding:4px 0;text-align:center;border-left:1px solid var(--line)}
.cal-prog .cal-d small{display:block;font-size:9.5px;color:var(--accent);text-transform:uppercase;font-weight:700}
.cal-prog .cal-d b{font-size:12px}
.cal-prog .cal-d .cal-wx{font-size:9px}
.cal-prog .cal-d.is-today b{min-width:20px;height:20px;font-size:11px}
.cal-prog .cal-d .cal-wx em{display:block;margin:0}
.cal-prog tbody td:not(.cp-who):not(.cp-dur){border-left:1px solid var(--line);text-align:center;position:relative}
.cal-prog .we{background:var(--warn-soft)}
.cal-prog .is-focus{box-shadow:inset 2px 0 0 var(--accent),inset -2px 0 0 var(--accent)}
.cal-prog td.is-today{box-shadow:inset 1px 0 0 var(--accent),inset -1px 0 0 var(--accent)}
.cal-prog td.pl,.cal-prog td.ac{--kc:var(--accent)}
.cal-prog td.k-pour{--kc:var(--warn)}.cal-prog td.k-turf{--kc:var(--good)}.cal-prog td.k-delivery{--kc:var(--info)}.cal-prog td.k-subbie{--kc:var(--q)}
.cal-prog td.pl::before,.cal-prog td.ac::before{content:"";position:absolute;inset:6px 3px;border-radius:4px}
.cal-prog td.pl::before{border:1.5px dashed var(--kc)}
.cal-prog td.ac::before{background:color-mix(in srgb,var(--kc) 40%,transparent);border:1.5px solid var(--kc)}
.cal-prog td i{position:relative;font-style:normal;font-weight:800;color:var(--bad);font-size:14px}
.cal-prog td.wet::before{background:var(--warn-soft)}
.cal-prog td.wet i{color:var(--warn)}
.cal-prog tr.done .cp-desc b{text-decoration:line-through;color:var(--muted)}
.cal-prog tr.sel .cp-desc{box-shadow:inset 3px 0 0 var(--accent)}
.cal-prog .cp-hours th,.cal-prog .cp-hours td{background:var(--panel2);height:32px}
.cal-prog .cp-hours .cp-desc{background:var(--panel2);cursor:default}
.cal-prog .cp-hours em{font-style:normal;font-size:11px;font-weight:700;color:var(--good)}
.cal-ticks{display:flex;flex-wrap:wrap;gap:6px}
.cal-tick{display:inline-flex;align-items:center;gap:7px;min-height:40px;padding:4px 12px 4px 6px;border-radius:20px;border:1px solid var(--line2);background:var(--panel2);color:var(--fg);cursor:pointer;font-size:13px}
.cal-tick[aria-pressed="true"]{border-color:var(--accent);background:var(--accent-soft);font-weight:600}
.cal-ed .seg{align-self:flex-start}

/* quoted days → program */
.cal-rq{padding:12px 14px;border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:8px}
.cal-rq:last-child{border-bottom:0}
.cal-ql{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px;font-size:13px}
.cal-ql li{display:flex;align-items:center;gap:8px;padding:4px 8px;border-radius:6px;background:var(--panel2)}
.cal-ql .grow{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

@media (max-width:760px){
  .cal-grid .cal-job{width:96px;padding:6px 7px}
  .cal-job small{font-size:10.5px}
  .cal-clist li{flex-wrap:wrap;padding:9px 12px;gap:6px 10px}
  .cal-clist .chip{min-width:0}
  .cal-clist .btn{margin-left:auto}
  .cal-clist .grow{order:2;flex-basis:100%}
  .cal-prog .cp-who,.cal-prog .cp-dur{display:none}
  .cal-prog .cp-desc{min-width:150px;max-width:170px}
  .cp-sm{display:block}
  .cal-nav b{width:100%;margin:4px 0 0}
}
.cal-clr{align-self:flex-start}
