.tcb-calendar-mount,
.tcb-calendar {
  --tcb-ink: var(--wp--preset--color--contrast, #202020);
  --tcb-paper: var(--wp--preset--color--base, #fff);
  --tcb-accent: var(--wp--preset--color--primary, #8b2635);
  --tcb-muted: color-mix(in srgb, var(--tcb-ink) 58%, transparent);
  width: 100%;
  max-width: 100%;
  min-width: 0;
  box-sizing: border-box;
  margin: 2.2rem 0 3rem;
  overflow: hidden;
  color: var(--tcb-ink);
  font-family: inherit;
}
.tcb-calendar * { box-sizing: border-box; }
.tcb-calendar-inner {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  border: 1px solid color-mix(in srgb, var(--tcb-ink) 16%, transparent);
  background: var(--tcb-paper);
  padding: clamp(1rem, 2.5vw, 2rem);
  border-radius: 3px;
}
.tcb-calendar-header {
  display: flex; align-items: flex-end; justify-content: space-between;
  gap: 1rem; margin-bottom: 1.4rem;
}
.tcb-calendar-heading { min-width: 0; }
.tcb-kicker {
  display: block; font-size: .68rem; letter-spacing: .16em;
  line-height: 1.5; font-weight: 700; opacity: .7; margin-bottom: .35rem;
}
.tcb-month-title {
  margin: 0 !important; padding: 0; color: var(--tcb-ink);
  font-size: clamp(1.5rem, 3vw, 2.2rem); line-height: 1.12; font-weight: 600;
}
.tcb-calendar-nav { display: flex; align-items: center; gap: .4rem; flex-shrink: 0; }
.tcb-calendar-nav button {
  font: inherit; line-height: 1; cursor: pointer; color: var(--tcb-ink);
  border: 1px solid color-mix(in srgb, var(--tcb-ink) 25%, transparent);
  background: transparent; border-radius: 2px; min-width: 2.4rem; min-height: 2.4rem;
  padding: .5rem .7rem; transition: background .18s ease, color .18s ease, border-color .18s ease;
}
.tcb-calendar-nav .tcb-today { font-size: .8rem; }
.tcb-calendar-nav button:hover,
.tcb-calendar-nav button:focus-visible {
  color: #fff; background: var(--tcb-accent); border-color: var(--tcb-accent);
}
.tcb-calendar-grid { width: 100%; max-width: 100%; min-width: 0; }
.tcb-weekdays, .tcb-days { width: 100%; min-width: 0; }
.tcb-composer-item { display: flex; flex-direction: column; align-items: stretch; gap: .2rem; width: 100%; min-width: 0; }
.tcb-composer-card {
  position: relative; display: block; width: 100%; max-width: 100%; min-width: 0;
  aspect-ratio: 16 / 9; overflow: hidden; border-radius: 2px;
  color: #fff !important; text-decoration: none !important;
  transform: translateZ(0); transition: transform .18s ease, opacity .18s ease;
}
.tcb-composer-image {
  position: absolute; inset: 0; display: block; width: 100%; height: 100%;
  max-width: 100%; object-fit: cover; object-position: center;
}
.tcb-composer-overlay {
  position: absolute; inset: 0; background: rgba(24, 23, 53, .58);
  transition: background .18s ease;
}
.tcb-composer-name-overlay {
  position: absolute; inset: 0; z-index: 1; display: flex; align-items: center;
  justify-content: center; width: 100%; max-width: 100%; padding: .2rem;
  color: #fff !important; text-align: center; font-size: clamp(.52rem, .72vw, .72rem);
  line-height: 1.15; font-weight: 600; overflow-wrap: anywhere;
  text-decoration: none !important; transform: none; opacity: 1;
}
.tcb-composer-card:hover, .tcb-composer-card:focus-visible { transform: scale(1.035); z-index: 2; }
.tcb-composer-card:hover .tcb-composer-overlay,
.tcb-composer-card:focus-visible .tcb-composer-overlay { background: rgba(24, 23, 53, .72); }
.tcb-composer-card:focus-visible { outline: 2px solid #181735; outline-offset: 2px; }
.tcb-weekdays, .tcb-days {
  display: grid; grid-template-columns: repeat(7, minmax(0, 1fr));
}
.tcb-weekdays { border-bottom: 1px solid color-mix(in srgb, var(--tcb-ink) 24%, transparent); }
.tcb-weekday {
  padding: .7rem .5rem; text-align: left; font-size: .72rem;
  font-weight: 700; text-transform: uppercase; letter-spacing: .07em; opacity: .7;
}
.tcb-days { border-left: 1px solid color-mix(in srgb, var(--tcb-ink) 12%, transparent); }
.tcb-day {
  min-width: 0; min-height: 112px; padding: .55rem .55rem .65rem;
  border-right: 1px solid color-mix(in srgb, var(--tcb-ink) 12%, transparent);
  border-bottom: 1px solid color-mix(in srgb, var(--tcb-ink) 12%, transparent);
  display: flex; flex-direction: column; align-items: flex-start; gap: .32rem;
  overflow-wrap: anywhere;
}
.tcb-day-empty { background: color-mix(in srgb, var(--tcb-ink) 3%, transparent); }
.tcb-day-number {
  display: inline-flex; align-items: center; justify-content: center;
  width: 1.7rem; height: 1.7rem; margin-bottom: .15rem;
  font-size: .78rem; font-weight: 600; color: var(--tcb-muted);
}
.tcb-is-today .tcb-day-number {
  color: #fff; background: var(--tcb-accent); border-radius: 50%;
}
.tcb-composer-name {
  display: block; max-width: 100%; color: var(--tcb-accent) !important;
  font-size: .78rem; line-height: 1.3; text-decoration: none !important;
  transform-origin: left center; transition: transform .16s ease, opacity .16s ease;
}
a.tcb-composer-name { cursor: pointer; }
a.tcb-composer-name:hover, a.tcb-composer-name:focus-visible {
  transform: scale(1.045); text-decoration: underline !important; opacity: .82;
}
.tcb-composer-name.tcb-no-link { color: var(--tcb-ink) !important; opacity: .8; transform: none; transition: none; }
.tcb-composer-name.tcb-no-link:hover { transform: none; opacity: .8; text-decoration: none !important; }
/* Keep linked image-card titles white and centered, overriding theme link colours. */
.tcb-calendar .tcb-composer-card .tcb-composer-name-overlay {
  display: flex !important; align-items: center !important; justify-content: center !important;
  position: absolute !important; inset: 0 !important; width: 100% !important; height: 100% !important;
  margin: 0 !important; padding: .2rem !important; color: #fff !important;
  text-align: center !important; transform: none !important; text-decoration: none !important;
}
/* Unlinked names are quiet, dark grey text and never animate. */
.tcb-calendar .tcb-composer-name.tcb-no-link {
  color: #555 !important; opacity: 1 !important; transform: none !important;
  transition: none !important; cursor: default !important; text-decoration: none !important;
}
.tcb-calendar .tcb-composer-name.tcb-no-link:hover,
.tcb-calendar .tcb-composer-name.tcb-no-link:focus-visible {
  color: #555 !important; opacity: 1 !important; transform: none !important; text-decoration: none !important;
}
.tcb-calendar-note { margin: 1rem 0 0; font-size: .75rem; letter-spacing: .02em; color: var(--tcb-muted); }
.tcb-loading, .tcb-error { padding: 1.5rem; color: var(--tcb-muted); }
@media (max-width: 760px) {
  .tcb-calendar-header { align-items: flex-start; flex-direction: column; }
  .tcb-calendar-nav { align-self: flex-end; }
  .tcb-day { min-height: 85px; padding: .35rem .25rem .45rem; gap: .25rem; }
  .tcb-day-number { width: 1.4rem; height: 1.4rem; font-size: .72rem; }
  .tcb-composer-name { font-size: .67rem; line-height: 1.2; }
  .tcb-composer-name-overlay { font-size: .57rem; padding: .12rem; }
  .tcb-weekday { padding: .55rem .2rem; font-size: .62rem; text-align: center; letter-spacing: 0; }
}
@media (max-width: 480px) {
  .tcb-calendar-inner { padding: .75rem; }
  .tcb-day { min-height: 76px; }
  .tcb-composer-name { font-size: .61rem; }
  .tcb-composer-name-overlay { font-size: .5rem; padding: .08rem; }
  .tcb-calendar-nav button { min-width: 2.15rem; min-height: 2.15rem; }
}
