/* ── Scoped color tokens ── */
#pace-cal-root {
  --pc-bg:         #ffffff;
  --pc-bg-alt:     #f4f4f2;
  --pc-border:     #dcdcd8;
  --pc-text:       #1e1e1c;
  --pc-text-muted: #6b6b67;

  --c-all:#888780;  --c-all-bg:#F1EFE8;  --c-all-tx:#444441;
  --c-doe:#185FA5;  --c-doe-bg:#ddeaf9;  --c-doe-tx:#0C447C;
  --c-isl:#3B6D11;  --c-isl-bg:#dff0cc;  --c-isl-tx:#27500A;
  --c-iola:#A32D2D; --c-iola-bg:#fde8e8; --c-iola-tx:#791F1F;
  --c-pun:#854F0B;  --c-pun-bg:#fce8c5;  --c-pun-tx:#633806;
  --c-mp:#534AB7;   --c-mp-bg:#e8e6fb;   --c-mp-tx:#3C3489;
  --c-ks:#0F6E56;   --c-ks-bg:#cff0e4;   --c-ks-tx:#085041;
}
@media(prefers-color-scheme:dark){
  #pace-cal-root {
    --pc-bg:#1e1e1c; --pc-bg-alt:#2a2a28; --pc-border:#3a3a36;
    --pc-text:#e8e6dc; --pc-text-muted:#9a9890;

    --c-all:#B4B2A9;  --c-all-bg:#2C2C2A;  --c-all-tx:#D3D1C7;
    --c-doe:#85B7EB;  --c-doe-bg:#042C53;  --c-doe-tx:#B5D4F4;
    --c-isl:#97C459;  --c-isl-bg:#173404;  --c-isl-tx:#C0DD97;
    --c-iola:#F09595; --c-iola-bg:#501313; --c-iola-tx:#F7C1C1;
    --c-pun:#EF9F27;  --c-pun-bg:#412402;  --c-pun-tx:#FAC775;
    --c-mp:#AFA9EC;   --c-mp-bg:#26215C;   --c-mp-tx:#CECBF6;
    --c-ks:#5DCAA5;   --c-ks-bg:#04342C;   --c-ks-tx:#9FE1CB;
  }
}

/* ── Reset (scoped) ── */
#pace-cal-root *, #pace-cal-root *::before, #pace-cal-root *::after {
  box-sizing: border-box; margin: 0; padding: 0;
}

/* ── Layout ── */
#pace-cal-root              { font-family: system-ui, sans-serif; padding: 1rem 0 2rem; }
#pace-cal-root .pc-legend   { background: var(--pc-bg-alt); border: 1px solid var(--pc-border);
                               border-radius: 10px; padding: 12px 16px; margin-bottom: 1.25rem; }
#pace-cal-root .pc-leg-ttl  { font-size: 11px; font-weight: 600; color: var(--pc-text-muted);
                               text-transform: uppercase; letter-spacing: .06em; margin-bottom: 8px; }
#pace-cal-root .pc-filters  { display: flex; flex-wrap: wrap; gap: 6px; }
#pace-cal-root .pc-fbtn     { padding: 4px 10px; border-radius: 999px; font-size: 11px;
                               font-weight: 500; cursor: pointer; transition: opacity .15s;
                               border: 1.5px solid; background: none; }
#pace-cal-root .pc-fbtn.off { opacity: .3; }

/* ── Calendar grid ── */
#pace-cal-root .pc-grid     { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 1.25rem; }
#pace-cal-root .pc-mcard    { background: var(--pc-bg); border: 1px solid var(--pc-border); border-radius: 10px; overflow: hidden; }
#pace-cal-root .pc-mhead    { padding: 10px 14px; border-bottom: 1px solid var(--pc-border);
                               font-weight: 600; font-size: 15px; color: var(--pc-text);
                               display: flex; align-items: center; justify-content: space-between; }
#pace-cal-root .pc-mhead-ct { font-size: 11px; font-weight: 400; color: var(--pc-text-muted); }
#pace-cal-root .pc-mgrid    { padding: 10px 14px 6px; }
#pace-cal-root .pc-day-hdr  { display: grid; grid-template-columns: repeat(7, 1fr); margin-bottom: 3px; }
#pace-cal-root .pc-day-hdr span { text-align: center; font-size: 10px; font-weight: 500; color: var(--pc-text-muted); }
#pace-cal-root .pc-days     { display: grid; grid-template-columns: repeat(7, 1fr); gap: 1px; }
#pace-cal-root .pc-dc       { min-height: 32px; padding: 2px; border-radius: 3px; }
#pace-cal-root .pc-dc.wknd  { background: var(--pc-bg-alt); }
#pace-cal-root .pc-dn       { font-size: 10px; color: var(--pc-text-muted); text-align: center; margin-bottom: 2px; }
#pace-cal-root .pc-dots     { display: flex; flex-wrap: wrap; gap: 2px; justify-content: center; }
#pace-cal-root .pc-dot      { width: 5px; height: 5px; border-radius: 50%; flex-shrink: 0; }

/* ── Event list ── */
#pace-cal-root .pc-evlist   { border-top: 1px solid var(--pc-border); padding: 8px 14px 12px; max-height: 300px; overflow-y: auto; }
#pace-cal-root .pc-evrow    { display: flex; align-items: flex-start; gap: 7px; padding: 3px 0; font-size: 12px; line-height: 1.4; }
#pace-cal-root .pc-evday    { color: var(--pc-text-muted); min-width: 18px; text-align: right; flex-shrink: 0; padding-top: 1px; }
#pace-cal-root .pc-evbadge  { font-size: 10px; font-weight: 500; border-radius: 3px; padding: 1px 5px;
                               flex-shrink: 0; white-space: nowrap; margin-top: 1px; }
#pace-cal-root .pc-evlabel  { color: var(--pc-text); }