/* oms-rd-factory-calendar.css — factory portal CALENDAR page (#page-calendar,
   /js/oms-rdf-calendar.js). Redesign r11.
   The block between the two markers is the merchant calendar's look
   (oms-rd-admin.css "Calendar: page chrome" … side cards), re-scoped from
   .rd.cal-rd / .rd .cal-* to the factory root .rd.rdfcal so the two pages match
   and neither stylesheet reaches the other. The grid itself is OMSCalendar
   (/js/oms-calendar.js injects its own .oc-* base rules). */

/* ── from oms-rd-admin.css (re-scoped) ───────────────────────────────── */
/* ---------- Calendar: page chrome ------------------------------------- */
.rd.rdfcal .ph p{margin-top:4px}
.rd.rdfcal .cal-actions{flex-wrap:wrap;justify-content:flex-end}
.rd.rdfcal .cal-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.rd.rdfcal .cal-navgrp{gap:10px;flex-wrap:wrap}
.rd.rdfcal .cal-navpair{display:inline-flex}
.rd.rdfcal .cal-navpair .cal-navbtn{width:34px;padding:0;border-radius:0}
.rd.rdfcal .cal-navpair .cal-navbtn:first-child{border-radius:9px 0 0 9px}
.rd.rdfcal .cal-navpair .cal-navbtn+.cal-navbtn{border-left:0;border-radius:0 9px 9px 0}
.rd.rdfcal .cal-navbtn svg{width:16px;height:16px}
.rd.rdfcal .cal-navbtn:disabled,.rd.rdfcal #rdfcal-today:disabled{opacity:.4;cursor:default}
.rd.rdfcal .cal-navbtn:not(:disabled):hover,.rd.rdfcal #rdfcal-today:hover{color:var(--accent);border-color:var(--accent)}
.rd.rdfcal .cal-month{margin:0 0 0 4px;font-size:20px;font-weight:800;letter-spacing:-.01em;min-width:170px}
.rd.rdfcal .cal-month-sub{font-size:12.5px;font-weight:600}
.rd.rdfcal .cal-view-seg a{cursor:pointer;user-select:none}
.rd.rdfcal .cal-view-seg a svg{width:14px;height:14px}
.rd.rdfcal .cal-legend{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;padding:9px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.rd.rdfcal .cal-legend .lbl{font-size:10.5px;margin-right:2px}
.rd.rdfcal .cal-lg{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 9px;border-radius:999px;background:var(--sunk);font-size:12px;font-weight:600;color:var(--ink-2);white-space:nowrap}
.rd.rdfcal .cal-lg b{font-weight:800;color:var(--ink);font-variant-numeric:tabular-nums}
.rd.rdfcal .cal-lg .dot{width:8px;height:8px;border-radius:50%;flex:none}
.rd.rdfcal .cal-lg .band{width:16px;height:8px;border-radius:3px;flex:none;background:color-mix(in srgb,var(--oc-ev-c) 22%,#fff);box-shadow:inset 3px 0 0 var(--oc-ev-c)}
.rd.rdfcal .cal-lg-sep{width:1px;height:18px;background:var(--line);margin:0 6px}
.rd.rdfcal .cal-layout{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:18px;align-items:start}
.rd.rdfcal .cal-main{overflow:hidden;min-width:0}
.rd.rdfcal .cal-side{display:flex;flex-direction:column;gap:16px;min-width:0}
.rd.rdfcal .cal-side .card{overflow:hidden}
#rdfcal-grid[hidden],.rd.rdfcal .cal-listview[hidden]{display:none}

/* ---------- Calendar: the month grid (OMSCalendar, admin only) --------- */
.rd.rdfcal .oc-cal{color:var(--ink)}
.rd.rdfcal .oc-dow{gap:0;margin:0;background:var(--sunk);border-bottom:1px solid var(--line)}
.rd.rdfcal .oc-dow div{padding:9px 10px;text-align:left;font-size:10.5px;letter-spacing:.08em;color:var(--muted)}
.rd.rdfcal .oc-dow div:nth-child(n+6){color:#9AA0BE}
.rd.rdfcal .oc-grid{gap:0}
.rd.rdfcal .oc-day{min-height:112px;border:0;border-right:1px solid var(--line);border-bottom:1px solid var(--line);border-radius:0;padding:6px 6px 8px;gap:3px;background:var(--surface);transition:background .12s}
.rd.rdfcal .oc-day:nth-child(7n){border-right:0}
.rd.rdfcal .oc-day:nth-last-child(-n+7){border-bottom:0}
.rd.rdfcal .oc-day.oc-wkend{background:#FAFAFD}
.rd.rdfcal .oc-day.oc-out{background:var(--sunk)}
.rd.rdfcal .oc-day.oc-out .oc-daynum{opacity:.55}
.rd.rdfcal .oc-day.oc-has-ev{background:color-mix(in srgb,var(--oc-day-c) 5%,#fff)}
.rd.rdfcal .oc-day.oc-out.oc-has-ev{background:color-mix(in srgb,var(--oc-day-c) 5%,var(--sunk))}
.rd.rdfcal .oc-selectable .oc-day:hover{background:#F5F6FE}
.rd.rdfcal .oc-day.oc-past .oc-daynum{opacity:.55}
.rd.rdfcal .oc-day.oc-past .oc-evs,.rd.rdfcal .oc-day.oc-past .oc-chips{opacity:.6}
.rd.rdfcal .oc-day.oc-today{border-color:var(--line);box-shadow:inset 0 0 0 2px var(--accent);background:#F7F8FF}
.rd.rdfcal .oc-day.oc-sel{box-shadow:inset 0 0 0 2px var(--accent);background:var(--accent-soft)}
.rd.rdfcal .oc-daynum{align-self:flex-start;text-align:left;font-size:12.5px;font-weight:700;color:var(--ink-2);min-width:24px;height:24px;line-height:24px;padding:0 6px;border-radius:999px;margin-bottom:1px}
.rd.rdfcal .oc-day.oc-today .oc-daynum{background:var(--accent);color:#fff}
/* Closures as bands: flush to the cell edge, rounded only where the range
   (or its week row) starts and ends, so a multi-day closure reads as one bar. */
.rd.rdfcal .oc-evs{margin:0 -6px;gap:2px}
.rd.rdfcal .oc-ev{font-size:11px;font-weight:700;line-height:18px;height:18px;padding:0 8px;background:color-mix(in srgb,var(--oc-ev-c) 16%,#fff);color:color-mix(in srgb,var(--oc-ev-c) 78%,#1F2340)}
.rd.rdfcal .oc-ev.oc-ev-s{margin-left:6px;border-radius:5px 0 0 5px;box-shadow:inset 3px 0 0 var(--oc-ev-c)}
.rd.rdfcal .oc-ev.oc-ev-e{margin-right:6px;border-top-right-radius:5px;border-bottom-right-radius:5px}
.rd.rdfcal .oc-ev.oc-clickable{text-decoration:none}
.rd.rdfcal .oc-ev.oc-clickable:hover{background:color-mix(in srgb,var(--oc-ev-c) 26%,#fff)}
.rd.rdfcal .oc-ev-more{padding:0 8px;font-size:10.5px;color:var(--muted)}
.rd.rdfcal .oc-chips{gap:2px}
.rd.rdfcal .oc-chip{border:0;border-radius:6px;background:transparent;padding:3px 5px;font-size:11.5px;font-weight:600;color:var(--ink-2);gap:6px}
.rd.rdfcal .oc-chip:hover{background:var(--accent-soft);color:var(--ink)}
.rd.rdfcal .oc-chip-dot{width:7px;height:7px}
.rd.rdfcal .oc-chip-more{padding:2px 5px;font-size:11px;font-weight:800;color:var(--accent);border-radius:6px}
.rd.rdfcal .oc-chip-more:hover{background:var(--accent-soft)}
.rd.rdfcal .oc-pop{border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 32px rgba(20,24,60,.16);padding:8px;max-width:320px;min-width:240px;max-height:360px;overflow:auto}
.rd.rdfcal .oc-pop-title{font-size:10.5px;color:var(--muted);padding:2px 6px 6px}
.rd.rdfcal .oc-pop .oc-chip{padding:6px 8px;font-size:12.5px}

/* ---------- Calendar: List view ---------------------------------------- */
.rd.rdfcal .cal-listview{display:flex;flex-direction:column}
.rd.rdfcal .cal-lday{border-bottom:1px solid var(--line)}
.rd.rdfcal .cal-lday:last-child{border-bottom:0}
.rd.rdfcal .cal-lday.past{opacity:.7}
.rd.rdfcal .cal-lday-h{display:flex;align-items:center;gap:8px;padding:10px 18px;background:var(--sunk);border-bottom:1px solid var(--line);font-size:13px}
.rd.rdfcal .cal-lday-h .muted{margin-left:auto;font-size:12px;font-weight:700}
.rd.rdfcal .cal-lday-h .chip{height:20px;font-size:11px}
.rd.rdfcal .cal-lday.today .cal-lday-h{background:#F1F3FF}
.rd.rdfcal .cal-empty{display:flex;flex-direction:column;align-items:center;gap:6px;padding:48px 20px;text-align:center}
.rd.rdfcal .cal-empty .ico{background:var(--sunk);color:var(--muted);margin-bottom:4px}

/* Shared rows: List view, Coming up, Closures list */
.rd.rdfcal .cal-row{display:flex;align-items:center;gap:12px;padding:10px 18px;border-bottom:1px solid var(--line);width:100%;font:inherit;color:inherit;text-align:left;background:transparent}
.rd.rdfcal .cal-row:last-child{border-bottom:0}
.rd button.cal-row{appearance:none;border-left:0;border-right:0;border-top:0;cursor:pointer}
.rd button.cal-row:hover{background:var(--sunk)}
.rd.rdfcal .cal-row-main{flex:1;min-width:0}
.rd.rdfcal .cal-row-main .t{font-weight:700;font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rd.rdfcal .cal-row-main .s{font-size:12px;color:var(--muted);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rd.rdfcal .cal-row .dot{width:9px;height:9px;border-radius:50%;flex:none}
.rd.rdfcal .cal-row .pill{flex:none}
.rd.rdfcal .cal-cust{display:inline-block;font-size:11px;font-weight:800;letter-spacing:.03em;color:var(--ink-2);background:var(--sunk);border:1px solid var(--line);border-radius:5px;padding:0 5px;margin-right:6px;vertical-align:1px}
.rd.rdfcal .cal-band{width:5px;align-self:stretch;min-height:30px;border-radius:3px;background:var(--oc-ev-c);flex:none}
.rd.rdfcal .cal-row-ev{background:color-mix(in srgb,var(--oc-ev-c) 7%,#fff)}

/* ---------- Calendar: side cards -------------------------------------- */
.rd.rdfcal .cal-side .ch .muted{font-size:12px}
.rd.rdfcal .cal-comingup{max-height:520px;overflow-y:auto}
.rd.rdfcal .cal-comingup .cal-row{padding:9px 16px}
.rd.rdfcal .cal-comingup .cal-row .pill{display:none}
.rd.rdfcal .cal-up-day{display:flex;align-items:center;justify-content:space-between;padding:7px 16px;background:var(--sunk);border-bottom:1px solid var(--line);font-size:12px}
.rd.rdfcal .cal-up-day b{font-weight:800}
.rd.rdfcal .cal-up-day .muted{font-size:11.5px;font-weight:700}
.rd.rdfcal .cal-more{justify-content:space-between;padding:10px 16px}
.rd.rdfcal .cal-none{padding:16px}
.rd.rdfcal .cal-addform{display:flex;flex-direction:column;gap:8px;border-bottom:1px solid var(--line);background:var(--sunk);padding:14px 16px}
.rd.rdfcal .cal-addform .input{height:34px;font-size:13px;padding:0 10px}
.rd.rdfcal .cal-addform .input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.rd.rdfcal .cal-addrow{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr) minmax(0,1fr);gap:6px}
.rd.rdfcal .cal-addrow .input{padding:0 6px;font-size:12.5px}
.rd.rdfcal .cal-addfoot{display:flex;align-items:center;justify-content:space-between;gap:8px}
.rd.rdfcal .cal-addfoot .muted{font-size:11.5px;font-weight:600}
.rd.rdfcal .cal-closures{max-height:460px;overflow-y:auto}
.rd.rdfcal .cal-cl{padding:9px 10px 9px 16px;gap:10px;cursor:pointer}
.rd.rdfcal .cal-cl:hover{background:var(--sunk)}
.rd.rdfcal .cal-cl .cal-band{min-height:32px}
.rd.rdfcal .cal-cl-cat{color:color-mix(in srgb,var(--oc-ev-c) 78%,#1F2340);font-weight:700}
.rd.rdfcal .cal-cl-act{display:flex;gap:2px;flex:none;opacity:.55;transition:opacity .12s}
.rd.rdfcal .cal-cl:hover .cal-cl-act,.rd.rdfcal .cal-cl-act:focus-within{opacity:1}
.rd.rdfcal .cal-cl-act .btn{width:30px;padding:0}
.rd.rdfcal .cal-cl-act .btn svg{width:14px;height:14px}
.rd.rdfcal .cal-cl-act .cal-del:hover{color:var(--bad)}

@media (max-width:1200px){
  .rd.rdfcal .cal-layout{grid-template-columns:minmax(0,1fr)}
  .rd.rdfcal .cal-side{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}
}
@media (max-width:900px){
  .rd.rdfcal .ph{flex-direction:column;align-items:flex-start}
  .rd.rdfcal .cal-actions{justify-content:flex-start}
  .rd.rdfcal .cal-side{grid-template-columns:minmax(0,1fr)}
  .rd.rdfcal .oc-day{min-height:84px;padding:4px 3px 6px}
  .rd.rdfcal .oc-evs{margin:0 -3px}
  .rd.rdfcal .oc-ev.oc-ev-s{margin-left:3px}
  .rd.rdfcal .oc-ev.oc-ev-e{margin-right:3px}
  .rd.rdfcal .oc-chip-label{display:none}
  .rd.rdfcal .oc-chip{padding:2px}
  .rd.rdfcal .cal-addform .input{font-size:16px}
  .rd.rdfcal .cal-lg-sep{display:none}
}

/* ── end of the merchant calendar block ──────────────────────────────── */

/* Page height like the merchant page: the month grid fills the screen. */
@media (min-width:901px){
  #page-calendar .rd.rdfcal .oc-fill{height:calc(var(--rd-vh, 100vh) - 330px);min-height:520px}
  #page-calendar .rd.rdfcal .oc-fill .oc-day{min-height:0}
  #page-calendar .rd.rdfcal .oc-fill .oc-grid{grid-auto-rows:minmax(72px,1fr)}
}
.rd.rdfcal{display:flex;flex-direction:column;gap:14px}
.rd.rdfcal .ph p{margin-top:4px}
.rd.rdfcal .cal-month{text-transform:none}
.rd.rdfcal #rdfcal-list[hidden],.rd.rdfcal #rdfcal-grid[hidden]{display:none}
/* Closure list: who has it yet */
.rd.rdfcal .rdfcal-syncs{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px;white-space:normal}
.rd.rdfcal .rdfcal-sync{display:inline-flex;align-items:center;height:18px;padding:0 7px;border-radius:6px;font-size:10.5px;font-weight:700;background:var(--sunk);color:var(--muted);white-space:nowrap}
.rd.rdfcal .rdfcal-sync.t-ok{background:var(--ok-soft);color:var(--ok)}
.rd.rdfcal .rdfcal-sync.t-warn{background:var(--warn-soft);color:var(--warn)}
.rd.rdfcal .rdfcal-sync.t-bad{background:var(--bad-soft);color:var(--bad)}
.rd.rdfcal .cal-cl .cal-row-main{flex:1;min-width:0}
.rd.rdfcal .cal-cl .cal-row-main .s{white-space:normal}
.rd.rdfcal .rdfcal-late{border-bottom:1px solid var(--line)}
.rd.rdfcal .rdfcal-late .t{color:var(--bad)}

/* Closure dialog (its own .rd root on <body>) */
.rd.rdfcal-ov{position:fixed;inset:0;z-index:9400;background:rgba(20,24,60,.38);display:flex;align-items:center;justify-content:center;padding:16px}
.rd.rdfcal-ov .rdfcal-dlg{width:min(520px,100%);max-height:calc(var(--rd-vh, 100vh) - 32px);display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:0 24px 60px rgba(20,24,60,.28);overflow:hidden}
.rd.rdfcal-ov .rdfcal-mh{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:16px 18px;border-bottom:1px solid var(--line)}
.rd.rdfcal-ov .rdfcal-mh h3{margin:0;font-size:17px;font-weight:800}
.rd.rdfcal-ov .rdfcal-mb{padding:16px 18px;display:flex;flex-direction:column;gap:12px;overflow-y:auto}
.rd.rdfcal-ov .rdfcal-f{display:flex;flex-direction:column;gap:6px;min-width:0}
.rd.rdfcal-ov .rdfcal-f2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.rd.rdfcal-ov .rdfcal-f .input{height:38px;font-size:14px;padding:0 10px}
.rd.rdfcal-ov .rdfcal-f textarea.input{height:auto;min-height:56px;padding:8px 10px;resize:vertical}
.rd.rdfcal-ov .rdfcal-kinds{display:flex;flex-wrap:wrap;gap:6px}
.rd.rdfcal-ov .rdfcal-kind{cursor:pointer;font-family:inherit;height:30px;padding:0 12px}
.rd.rdfcal-ov .rdfcal-kind.on{background:var(--accent);border-color:var(--accent);color:#fff}
.rd.rdfcal-ov .rdfcal-note{margin:0;font-size:12.5px;color:var(--muted);line-height:1.45}
.rd.rdfcal-ov .rdfcal-err{color:var(--bad);font-size:13px;font-weight:600}
.rd.rdfcal-ov .rdfcal-err[hidden]{display:none}
.rd.rdfcal-ov .rdfcal-mf{display:flex;align-items:center;gap:8px;padding:12px 18px;border-top:1px solid var(--line);background:var(--sunk)}
.rd.rdfcal-ov .rdfcal-sp{flex:1}
.rd.rdfcal-ov .rdfcal-del{color:var(--bad)}
.rd.rdfcal-ov .rdfcal-syncs{display:flex;flex-wrap:wrap;gap:4px}
.rd.rdfcal-ov .rdfcal-sync{display:inline-flex;align-items:center;height:20px;padding:0 8px;border-radius:6px;font-size:11px;font-weight:700;background:var(--sunk);color:var(--muted)}
.rd.rdfcal-ov .rdfcal-sync.t-ok{background:var(--ok-soft);color:var(--ok)}
.rd.rdfcal-ov .rdfcal-sync.t-warn{background:var(--warn-soft);color:var(--warn)}
.rd.rdfcal-ov .rdfcal-sync.t-bad{background:var(--bad-soft);color:var(--bad)}
body.rdfcal-modal-open{overflow:hidden}
@media (max-width:600px){
  .rd.rdfcal-ov .rdfcal-f2{grid-template-columns:1fr}
  .rd.rdfcal-ov .rdfcal-f .input{font-size:16px}
  .rd.rdfcal .cal-month{min-width:0;font-size:18px}
}
/* `.rd .dot` is oms-rd.css's notification dot (position:absolute) — never reused. */
.rd.rdfcal .rdfcal-dot{display:inline-block;width:9px;height:9px;border-radius:50%;flex:none}
.rd.rdfcal .cal-lg .rdfcal-dot{width:8px;height:8px}
