/* =====================================================================
   WOXANT CRM - brand theme on top of Bootstrap 5.3
   Tokens and rules are documented in docs/brand/UI.md. Keep them in sync.
   ===================================================================== */

/* ---------- Montserrat (local, SIL OFL; see assets/fonts/OFL.txt) ---------- */
@font-face { font-family: "Montserrat"; font-style: normal; font-weight: 300; font-display: swap;
  src: url("../fonts/montserrat-latin-ext-300-normal.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: "Montserrat"; font-style: normal; font-weight: 300; font-display: swap;
  src: url("../fonts/montserrat-latin-300-normal.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Montserrat"; font-style: normal; font-weight: 400; font-display: swap;
  src: url("../fonts/montserrat-latin-ext-400-normal.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: "Montserrat"; font-style: normal; font-weight: 400; font-display: swap;
  src: url("../fonts/montserrat-latin-400-normal.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Montserrat"; font-style: normal; font-weight: 600; font-display: swap;
  src: url("../fonts/montserrat-latin-ext-600-normal.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: "Montserrat"; font-style: normal; font-weight: 600; font-display: swap;
  src: url("../fonts/montserrat-latin-600-normal.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Montserrat"; font-style: normal; font-weight: 700; font-display: swap;
  src: url("../fonts/montserrat-latin-ext-700-normal.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: "Montserrat"; font-style: normal; font-weight: 700; font-display: swap;
  src: url("../fonts/montserrat-latin-700-normal.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }

/* ---------- Brand tokens + Bootstrap variable overrides ---------- */
:root {
  /* Official palette (docs/brand/BRAND.md) */
  --wx-strategic: #2a2e6e;       /* Azul Estrategico: navbar, headings, logo text */
  --wx-corporate: #4179b9;       /* Azul Corporativo: primary actions */
  --wx-innovation: #30aeda;      /* Azul Innovacion: accent / info */
  --wx-digital: #00b0b1;         /* Verde Digital: accent / success */
  --wx-grey-eng: #516171;        /* Gris Ingenieria: secondary text */
  --wx-grey-neutral: #8c9ca6;    /* Gris Neutro: decorative only (2.8:1, not for text) */
  --wx-grey-light: #d7dee3;      /* Gris Claro: borders, dividers */
  --wx-white-tech: #f2f4f6;      /* Blanco Tecnico: page background */

  /* Derived AA-safe text shades of the accents */
  --wx-corporate-text: #36679f;  /* links: 5.8:1 on white, 5.3:1 on page bg */
  --wx-digital-text: #007a7b;    /* success text: 5.2:1 on white */
  --wx-innovation-text: #1b6f93; /* info text */
  --wx-muted: #5d6d79;           /* muted text: 5.3:1 on white, 4.9:1 on page bg */
  --wx-text: #26303a;            /* body text */

  --wx-grad-strategic: linear-gradient(90deg, #2a2e6e 0%, #4179b9 100%);
  --wx-grad-innovation: linear-gradient(90deg, #30aeda 0%, #00b0b1 100%);
  --wx-shadow: 0 1px 2px rgba(42, 46, 110, .06), 0 1px 3px rgba(42, 46, 110, .04);
  --wx-radius: .5rem;

  --bs-font-sans-serif: "Montserrat", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --bs-body-font-family: var(--bs-font-sans-serif);
  --bs-body-font-size: .9375rem;
  --bs-body-color: #26303a;
  --bs-body-color-rgb: 38, 48, 58;
  --bs-emphasis-color: #141b22;
  --bs-heading-color: #2a2e6e;

  --bs-secondary-color: #5d6d79;
  --bs-secondary-color-rgb: 93, 109, 121;
  --bs-secondary-bg: #e9edf0;
  --bs-tertiary-bg: #f7f8fa;

  --bs-primary: #4179b9;
  --bs-primary-rgb: 65, 121, 185;
  --bs-primary-text-emphasis: #26496f;
  --bs-primary-bg-subtle: #e3ecf6;
  --bs-primary-border-subtle: #b3c9e3;

  --bs-secondary: #516171;
  --bs-secondary-rgb: 81, 97, 113;
  --bs-secondary-text-emphasis: #36414b;
  --bs-secondary-bg-subtle: #eceff2;
  --bs-secondary-border-subtle: #d7dee3;

  --bs-info: #30aeda;
  --bs-info-rgb: 48, 174, 218;
  --bs-info-text-emphasis: #155a76;
  --bs-info-bg-subtle: #e0f3fa;
  --bs-info-border-subtle: #a9dcef;

  --bs-success: #00b0b1;
  --bs-success-rgb: 0, 176, 177;
  --bs-success-text-emphasis: #005f60;
  --bs-success-bg-subtle: #dcf4f4;
  --bs-success-border-subtle: #9edfe0;

  --bs-dark: #2a2e6e;
  --bs-dark-rgb: 42, 46, 110;
  --bs-light: #f2f4f6;
  --bs-light-rgb: 242, 244, 246;

  --bs-link-color: #36679f;
  --bs-link-color-rgb: 54, 103, 159;
  --bs-link-hover-color: #2a2e6e;
  --bs-link-hover-color-rgb: 42, 46, 110;

  --bs-border-color: #d7dee3;
  --bs-border-color-translucent: rgba(42, 46, 110, .12);
  --bs-border-radius-lg: .5rem;
  --bs-box-shadow-sm: 0 1px 2px rgba(42, 46, 110, .06), 0 1px 3px rgba(42, 46, 110, .04);

  --bs-focus-ring-color: rgba(65, 121, 185, .3);
}

body { background: var(--wx-white-tech); -webkit-font-smoothing: antialiased; }
main { max-width: 1600px; margin: 0 auto; }

/* ---------- Typography ---------- */
h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 { font-weight: 700; color: var(--bs-heading-color); }
.display-6 { font-weight: 700; }
.form-label, .btn, .nav-link, .dropdown-item, .badge, .card-header { font-weight: 600; }
.form-text { color: var(--wx-muted); }

/* Accessible text shades for accents (the raw accent colours are too light for small text) */
.text-success { color: var(--wx-digital-text) !important; }
.text-info { color: var(--wx-innovation-text) !important; }
.text-primary { color: var(--wx-corporate-text) !important; }
.link-secondary { color: var(--wx-grey-eng) !important; text-decoration-color: rgba(81, 97, 113, .4) !important; }
.link-secondary:hover, .link-secondary:focus { color: var(--wx-strategic) !important; }
.link-dark { color: var(--wx-strategic) !important; }

/* ---------- Buttons ---------- */
.btn-primary {
  --bs-btn-color: #fff; --bs-btn-bg: #4179b9; --bs-btn-border-color: #4179b9;
  --bs-btn-hover-color: #fff; --bs-btn-hover-bg: #36679f; --bs-btn-hover-border-color: #36679f;
  --bs-btn-active-color: #fff; --bs-btn-active-bg: #2a2e6e; --bs-btn-active-border-color: #2a2e6e;
  --bs-btn-disabled-color: #fff; --bs-btn-disabled-bg: #4179b9; --bs-btn-disabled-border-color: #4179b9;
  --bs-btn-focus-shadow-rgb: 65, 121, 185;
}
.btn-outline-primary {
  --bs-btn-color: #36679f; --bs-btn-border-color: #4179b9;
  --bs-btn-hover-color: #fff; --bs-btn-hover-bg: #4179b9; --bs-btn-hover-border-color: #4179b9;
  --bs-btn-active-color: #fff; --bs-btn-active-bg: #36679f; --bs-btn-active-border-color: #36679f;
  --bs-btn-disabled-color: #4179b9; --bs-btn-disabled-border-color: #4179b9;
  --bs-btn-focus-shadow-rgb: 65, 121, 185;
}
.btn-outline-secondary {
  --bs-btn-color: #516171; --bs-btn-border-color: #c3ccd3;
  --bs-btn-hover-color: #2a2e6e; --bs-btn-hover-bg: #e9eef4; --bs-btn-hover-border-color: #8c9ca6;
  --bs-btn-active-color: #2a2e6e; --bs-btn-active-bg: #e3ecf6; --bs-btn-active-border-color: #8c9ca6;
  --bs-btn-disabled-color: #8c9ca6; --bs-btn-disabled-border-color: #d7dee3;
  --bs-btn-focus-shadow-rgb: 81, 97, 113;
}
/* Verde Digital button: dark text keeps AA (7.8:1) */
.btn-success {
  --bs-btn-color: #0b2a33; --bs-btn-bg: #00b0b1; --bs-btn-border-color: #00b0b1;
  --bs-btn-hover-color: #fff; --bs-btn-hover-bg: #007a7b; --bs-btn-hover-border-color: #007a7b;
  --bs-btn-active-color: #fff; --bs-btn-active-bg: #006566; --bs-btn-active-border-color: #006566;
  --bs-btn-disabled-color: #0b2a33; --bs-btn-disabled-bg: #00b0b1; --bs-btn-disabled-border-color: #00b0b1;
  --bs-btn-focus-shadow-rgb: 0, 176, 177;
}
.btn-link { --bs-btn-color: #36679f; --bs-btn-hover-color: #2a2e6e; --bs-btn-active-color: #2a2e6e; }

/* ---------- Badges ---------- */
.badge { letter-spacing: .02em; }
.text-bg-secondary { color: #fff !important; background-color: #516171 !important; }
.text-bg-success { color: #0b2a33 !important; background-color: #00b0b1 !important; }
.text-bg-info { color: #0b2a33 !important; background-color: #30aeda !important; }
.text-bg-dark { color: #fff !important; background-color: #2a2e6e !important; }
.text-bg-light { color: #516171 !important; background-color: #f2f4f6 !important; }

/* ---------- Forms ---------- */
.form-control, .form-select { border-color: #cbd4db; }
.form-control::placeholder { color: #8c9ca6; }
.form-control:focus, .form-select:focus { border-color: #4179b9; box-shadow: 0 0 0 .2rem rgba(65, 121, 185, .22); }
.form-check-input:focus { border-color: #4179b9; box-shadow: 0 0 0 .2rem rgba(65, 121, 185, .22); }
.form-check-input:checked { background-color: #4179b9; border-color: #4179b9; }
.form-label.required::after { content: " *"; color: #dc3545; }

/* ---------- Cards ---------- */
.card {
  --bs-card-border-color: #d7dee3;
  --bs-card-border-radius: .5rem;
  --bs-card-inner-border-radius: calc(.5rem - 1px);
  --bs-card-cap-bg: #fff;
  --bs-card-cap-color: #2a2e6e;
  --bs-card-bg: #fff;
  box-shadow: var(--wx-shadow);
}
.card.shadow-sm { box-shadow: var(--wx-shadow) !important; }
.card-header { border-bottom-color: var(--wx-grey-light); }
.card-footer { background: #fafbfc; border-top-color: var(--wx-grey-light); }
.stat-card .display-6 { font-weight: 700; color: var(--wx-strategic); }
.stat-card { transition: border-color .15s, box-shadow .15s; }
.stat-card:hover { border-color: #b3c9e3; box-shadow: 0 2px 8px rgba(42, 46, 110, .1) !important; }

/* ---------- Tables ---------- */
.table {
  --bs-table-color: #26303a;
  --bs-table-border-color: #e3e8ec;
  --bs-table-hover-bg: rgba(65, 121, 185, .06);
  --bs-table-hover-color: #26303a;
}
.table > thead th {
  background-color: #fff;
  color: var(--wx-grey-eng);
  font-size: .72rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .05em;
  border-bottom: 2px solid var(--wx-grey-light);
}

/* Next-step due dates (brief 6): overdue = soft red, today = soft yellow */
.table tr.row-overdue > * { --bs-table-bg-state: #f8d7da; }
.table tr.row-due-today > * { --bs-table-bg-state: #fff3cd; }

th.sortable { cursor: pointer; user-select: none; white-space: nowrap; }
th.sortable:hover { color: var(--wx-strategic); }
th.sortable::after { content: " \2195"; opacity: .3; font-size: .8em; }
th[aria-sort="ascending"]::after { content: " \2191"; opacity: .8; }
th[aria-sort="descending"]::after { content: " \2193"; opacity: .8; }

.table-sm td, .table-sm th { vertical-align: middle; }
.text-stale { color: #dc3545; font-weight: 600; }
.truncate { max-width: 28rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.nowrap { white-space: nowrap; }

/* Long names in table cells: one line with ellipsis; app.js adds the full text as a tooltip */
.table td > a:not(.btn) { display: inline-block; max-width: 22rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: bottom; }

/* ---------- Other components ---------- */
.breadcrumb { font-size: .8rem; --bs-breadcrumb-divider-color: #8c9ca6; --bs-breadcrumb-item-active-color: #5d6d79; }
.dropdown-menu {
  --bs-dropdown-link-active-bg: #4179b9;
  --bs-dropdown-link-hover-bg: #e9eef4;
  --bs-dropdown-border-color: #d7dee3;
  --bs-dropdown-font-size: .9rem;
  box-shadow: 0 6px 18px rgba(42, 46, 110, .12);
}
.nav-tabs { --bs-nav-tabs-link-active-color: #2a2e6e; --bs-nav-tabs-border-color: #d7dee3; }
.nav-pills { --bs-nav-pills-link-active-bg: #4179b9; }
.pagination { --bs-pagination-active-bg: #4179b9; --bs-pagination-active-border-color: #4179b9; --bs-pagination-color: #36679f; }
.progress, .progress-stacked { --bs-progress-bar-bg: #4179b9; }
.modal { --bs-modal-border-color: #d7dee3; }
.modal-title { color: var(--wx-strategic); font-weight: 700; }
.tooltip { --bs-tooltip-bg: #2a2e6e; --bs-tooltip-font-size: .78rem; }

/* ---------- Logo: isologo "W" image + "OXANT" text (see docs/brand/UI.md) ---------- */
.wx-logo {
  display: inline-flex; align-items: baseline;
  font-weight: 700; letter-spacing: .03em; line-height: 1;
  color: var(--wx-strategic); white-space: nowrap; text-decoration: none;
}
/* The isologo replaces the W: height = Montserrat cap height (0.70em), bottom on the baseline */
.wx-logo .wx-logo-w { display: inline-block; height: .7em; width: auto; margin-right: .05em; }
.wx-logo .wx-logo-crm {
  font-weight: 300; font-size: .6em; letter-spacing: .2em;
  margin-left: .6em; padding-left: .6em; border-left: 1px solid currentColor;
}
.wx-logo-white { color: #fff; }
.wx-logo-white .wx-logo-crm { border-left-color: rgba(255, 255, 255, .45); color: rgba(255, 255, 255, .9); }

/* ---------- Navbar ---------- */
.navbar-woxant {
  --bs-navbar-color: rgba(255, 255, 255, .82);
  --bs-navbar-hover-color: #fff;
  --bs-navbar-active-color: #fff;
  --bs-navbar-brand-color: #fff;
  --bs-navbar-brand-hover-color: #fff;
  --bs-navbar-toggler-border-color: rgba(255, 255, 255, .25);
  --bs-navbar-padding-y: 0;
  --bs-navbar-brand-padding-y: .8rem;
  background: #2a2e6e linear-gradient(90deg, #2a2e6e 0%, #2a2e6e 45%, #4179b9 100%);
  min-height: 3.5rem;
}
.navbar-woxant .navbar-brand { font-size: 1.4rem; margin-right: 1.5rem; }
.navbar-woxant .nav-link { position: relative; font-size: .875rem; }
.navbar-woxant .nav-link .bi { margin-right: .35rem; }
.navbar-woxant .dropdown-item { font-weight: 400; }
/* Active indicator: innovation -> digital bar (left bar in the collapsed menu, bottom bar on desktop) */
.navbar-woxant .nav-link.active::after {
  content: ""; position: absolute; left: 0; top: .45rem; bottom: .45rem; width: 3px;
  background: var(--wx-grad-innovation); border-radius: 2px;
}
@media (min-width: 992px) {
  .navbar-woxant .navbar-nav .nav-link { padding: 1.15rem .7rem; }
  .navbar-woxant .nav-link.active::after { left: .7rem; right: .7rem; top: auto; bottom: 0; width: auto; height: 3px; border-radius: 2px 2px 0 0; }
}
/* Narrow desktop: icons only (the tooltip carries the name); labels stay for screen readers */
@media (min-width: 992px) and (max-width: 1279.98px) {
  .navbar-woxant .nav-link .nav-label {
    position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important;
    overflow: hidden !important; clip: rect(0, 0, 0, 0) !important; white-space: nowrap !important; border: 0 !important;
  }
  .navbar-woxant .nav-link .bi { margin-right: 0; font-size: 1.05rem; }
  .navbar-woxant .dropdown-toggle .bi { margin-right: .35rem; font-size: inherit; }
}
.navbar-woxant .nav-link { white-space: nowrap; }
@media (max-width: 991.98px) {
  .navbar-woxant .navbar-collapse { padding-bottom: .5rem; }
  .navbar-woxant .navbar-nav .nav-link { padding-left: .85rem; }
}

/* Thin brand bar (stationery motif): innovation -> digital on the left 40%, strategic blue on the right, slanted join */
.wx-brand-bar { position: relative; height: 4px; background: #2a2e6e; overflow: hidden; }
.wx-brand-bar::before {
  content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 40%;
  background: var(--wx-grad-innovation);
  clip-path: polygon(0 0, 100% 0, calc(100% - 5px) 100%, 0 100%);
}
.app-header { margin-bottom: 1.25rem; }

/* ---------- Footer ---------- */
.app-footer {
  max-width: 1600px; margin: 0 auto; padding: .9rem .75rem 1.5rem;
  font-size: .78rem; color: var(--wx-muted);
}
.app-footer .app-footer-inner { border-top: 1px solid var(--wx-grey-light); padding-top: .9rem; }
.app-footer a { color: var(--wx-grey-eng); font-weight: 600; text-decoration: none; }
.app-footer a:hover { color: var(--wx-strategic); text-decoration: underline; }

/* ---------- Sign-in / forced password change (body.auth-page, no navbar) ---------- */
body.auth-page {
  min-height: 100vh;
  display: flex; flex-direction: column;
  background-color: #2a2e6e;
  background-image: url("../img/woxant-motif.svg"), linear-gradient(120deg, #2a2e6e 0%, #2a2e6e 35%, #4179b9 100%);
  background-repeat: no-repeat, no-repeat;
  background-position: right -22vw bottom -12vh, 0 0;
  background-size: max(900px, 100vw) auto, cover;
  background-attachment: fixed, fixed;
}
.auth-page main {
  flex: 1 0 auto; width: 100%;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  padding: 2rem 1rem;
}
.auth-page main > .alert { width: 100%; max-width: 26rem; }
.auth-wrap { width: 100%; max-width: 26rem; margin: 1.5rem auto; }
.auth-card { overflow: hidden; }
.auth-page .auth-card { border: 0; box-shadow: 0 18px 50px rgba(10, 14, 50, .35) !important; }
.auth-card .card-body { padding: 2.25rem 2rem 2rem; }
.auth-brand { text-align: center; margin-bottom: 1.75rem; }
.auth-brand .wx-logo { font-size: 2rem; }
.auth-tagline { margin: .7rem 0 0; font-size: .78rem; color: var(--wx-muted); letter-spacing: .03em; }
.auth-card .btn-primary { padding-top: .6rem; padding-bottom: .6rem; }
.auth-page .app-footer { color: rgba(255, 255, 255, .7); text-align: center; width: 100%; }
.auth-page .app-footer .app-footer-inner { border-top: 0; }
@media (max-width: 575.98px) {
  .auth-card .card-body { padding: 1.75rem 1.25rem 1.5rem; }
  .auth-brand .wx-logo { font-size: 1.75rem; }
  .auth-page main { justify-content: flex-start; padding-top: 2.5rem; }
}

/* ---------- Calendar week view (event colours follow the palette) ---------- */
.cal-week { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: .5rem; }
.cal-day { background: #fff; border: 1px solid #d7dee3; border-radius: .5rem; min-height: 16rem; padding: .5rem; }
.cal-day.today { border-color: #4179b9; box-shadow: 0 0 0 1px #4179b9 inset; }
.cal-event { border-left: 4px solid #8c9ca6; background: #f5f7f9; border-radius: .25rem; padding: .25rem .4rem; margin-bottom: .4rem; font-size: .85rem; }
.cal-event.type-Meeting { border-left-color: #4179b9; }
.cal-event.type-Visit { border-left-color: #00b0b1; }
.cal-event.type-Call { border-left-color: #30aeda; }
.cal-event.type-Task { border-left-color: #fd7e14; }
.cal-event.type-Block { border-left-color: #b4c0c8; background: #eceff2; }
.cal-event.status-Done { opacity: .6; text-decoration: line-through; }
.cal-event.status-Cancelled { opacity: .4; text-decoration: line-through; }
@media (max-width: 991px) { .cal-week { grid-template-columns: 1fr; } }

/* Legend swatches. Preferred markup: <i class="bi bi-square-fill cal-swatch type-Meeting"></i>.
   The attribute selectors re-map the legacy inline colours in calendar/week.asp until it uses the classes. */
.cal-swatch.type-Meeting, .bi-square-fill[style*="#0d6efd"] { color: #4179b9 !important; }
.cal-swatch.type-Visit, .bi-square-fill[style*="#198754"] { color: #00b0b1 !important; }
.cal-swatch.type-Call, .bi-square-fill[style*="#6f42c1"] { color: #30aeda !important; }
.cal-swatch.type-Task { color: #fd7e14 !important; }
.cal-swatch.type-Block, .bi-square-fill[style*="#adb5bd"] { color: #b4c0c8 !important; }

/* ---------- Print ---------- */
@media print {
  .app-header, .app-footer { display: none !important; }
  body { background: #fff; }
}
