/* Course manager – booking list and dialogs. Flat, square, thin borders; fonts come from the theme.
   Colours via --cmc-primary / --cmc-danger (plugin settings). */
.cmc, .cmc-dialog {
  --cmc-primary: var(--cmc-o-primary, #009933); --cmc-danger: var(--cmc-o-danger, #cc0000); --cmc-text: var(--cmc-o-text, #1f1f1f);
  --cmc-muted: var(--cmc-o-muted, #6b6b6b); --cmc-border: var(--cmc-o-border, #e2e2e2); --cmc-bg: var(--cmc-o-bg, #ffffff);
  --cmc-soft: var(--cmc-o-soft, #f3f4f6); --cmc-surface: var(--cmc-o-surface, #eceff2); --cmc-line-strong: var(--cmc-o-line-strong, #b9bec4);
  --cmc-danger-soft: var(--cmc-o-danger-soft, #fdecec); --cmc-neutral: var(--cmc-o-neutral, #8a949e); --cmc-link: var(--cmc-o-link, #1a5fb4);
  --cmc-on-primary: var(--cmc-o-on-primary, #ffffff); --cmc-radius: var(--cmc-o-radius, 4px);
  font-family: var(--cmc-o-font, inherit); font-size: var(--cmc-o-size, inherit); color: var(--cmc-text); }
.cmc *, .cmc *::before, .cmc *::after { box-sizing: border-box; }

/* hidden must always win over display rules (filters, pager, day groups) */
.cmc [hidden], .cmc-dialog [hidden] { display: none !important; }

/* ---------- filters ---------- */
.cmc .cmc-filters { position: relative; display: flex; flex-wrap: wrap; align-items: flex-end; gap: .6rem; margin: 0 0 1.75rem; padding: .9rem 1rem 1rem; border: 1px solid var(--cmc-border); border-radius: var(--cmc-radius); min-width: 0; }
.cmc .cmc-filters > legend { padding: 0 .35rem; font-weight: 600; font-size: .95rem; color: var(--cmc-text); }
.cmc .cmc-field { display: flex; flex-direction: column; gap: .25rem; margin: 0; font-size: .85rem; color: var(--cmc-muted); }
.cmc .cmc-field input, .cmc .cmc-field select { height: 2.75rem; padding: 0 .8rem; border: 1px solid var(--cmc-line-strong); border-radius: var(--cmc-radius); background: var(--cmc-bg);
  font: inherit; font-size: 1rem; color: var(--cmc-text); box-shadow: none; }
.cmc .cmc-field input:focus, .cmc .cmc-field select:focus { outline: 2px solid var(--cmc-primary); outline-offset: 0; border-color: var(--cmc-primary); }
.cmc .cmc-field--search { flex: 1 1 18rem; max-width: 26rem; }
.cmc .cmc-field--search input { width: 100%; padding-left: 2.4rem;
  background: var(--cmc-bg) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Ccircle cx='7' cy='7' r='5' fill='none' stroke='%23777' stroke-width='1.6'/%3E%3Cpath d='m11 11 3.5 3.5' stroke='%23777' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat .85rem center; }
.cmc .cmc-sr { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* ---------- day groups and cards ---------- */
.cmc .cmc-daygroup { margin: 0 0 1.75rem; }
.cmc .cmc-day { font-size: 1.3rem; font-weight: 600; line-height: 1.3; margin: 0 0 .6rem; padding: 0 0 .4rem; color: var(--cmc-text); border-bottom: 2px solid var(--cmc-border); }
.cmc .cmc-cards { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .5rem; }
.cmc .cmc-card { --cmc-state: var(--cmc-primary); display: grid; grid-template-columns: 7.5rem minmax(0, 1fr) auto; align-items: center; gap: 1rem; padding: .85rem 1rem;
  background: var(--cmc-bg); border: 1px solid var(--cmc-border); border-left: 4px solid var(--cmc-state); border-radius: var(--cmc-radius); margin: 0; }
.cmc .cmc-card.is-full, .cmc .cmc-card.is-cancelled { --cmc-state: var(--cmc-danger); }
.cmc .cmc-card.is-closed { --cmc-state: var(--cmc-line-strong); }
.cmc.cmc--nobar .cmc-card { border-left-width: 1px; }
.cmc .cmc-card[data-cmc-book] { cursor: pointer; }
.cmc .cmc-card:hover, .cmc .cmc-card:focus-visible { border-color: color-mix(in srgb, var(--cmc-state) 55%, var(--cmc-border)); border-left-color: var(--cmc-state); outline: none; }  /* FB1-2: 1 px */
.cmc .cmc-card.is-cancelled .cmc-title, .cmc .cmc-card.is-cancelled .cmc-card__date { opacity: .55; text-decoration: line-through; }
.cmc .cmc-card__date { display: flex; flex-direction: column; line-height: 1.25; }
.cmc .cmc-wd { font-weight: 700; }
.cmc .cmc-dm { font-size: 1.3rem; font-weight: 300; }
.cmc .cmc-time { font-size: .9rem; color: var(--cmc-muted); font-variant-numeric: tabular-nums; }
.cmc .cmc-card__body { display: flex; flex-direction: column; gap: .15rem; min-width: 0; }
.cmc .cmc-title { font-weight: 600; font-size: 1.05rem; color: var(--cmc-text); }
.cmc .cmc-loc, .cmc .cmc-info { color: var(--cmc-muted); font-size: .92rem; }
.cmc .cmc-places { font-size: .92rem; color: var(--cmc-muted); }
.cmc .cmc-state { font-size: .92rem; font-weight: 600; color: var(--cmc-state, var(--cmc-muted)); }
.cmc .cmc-card__action { text-align: right; }
.cmc .cmc-empty, .cmc .cmc-nohits { color: var(--cmc-muted); }

/* ---------- table view ---------- */
.cmc .cmc-table-wrap { overflow-x: auto; }
.cmc .cmc-table { width: 100%; border-collapse: collapse; margin: 0; border: 0; }
.cmc .cmc-table th { text-align: left; font-weight: 600; font-size: .85rem; white-space: nowrap; color: var(--cmc-muted); padding: .5rem .6rem; border-bottom: 2px solid var(--cmc-border); background: none; }
.cmc .cmc-table td { padding: .55rem .6rem; border: 0; vertical-align: middle; font-size: .95rem; line-height: 1.35; white-space: nowrap; }
.cmc .cmc-table td.cmc-col-kurs { white-space: normal; }
.cmc .cmc-table .cmc-btn { min-height: 2.2rem; padding: 0 .8rem; font-size: .9rem; }
.cmc .cmc-table tbody tr:nth-child(odd) { background: var(--cmc-soft); }
.cmc .cmc-table tbody tr:nth-child(even) { background: var(--cmc-bg); }
.cmc .cmc-row { --cmc-state: var(--cmc-primary); }
.cmc .cmc-row.is-full, .cmc .cmc-row.is-cancelled { --cmc-state: var(--cmc-danger); }
.cmc .cmc-row.is-closed { --cmc-state: var(--cmc-line-strong); }
.cmc .cmc-row[data-cmc-book] { cursor: pointer; }
.cmc .cmc-row:hover, .cmc .cmc-row:focus-visible { outline: 1px solid color-mix(in srgb, var(--cmc-state) 55%, var(--cmc-border)); outline-offset: -1px; }  /* FB1-2: 1 px */
.cmc .cmc-table .cmc-col-knopf { text-align: right; width: 1%; white-space: nowrap; }
.cmc .cmc-table .cmc-col-wochentag, .cmc .cmc-table .cmc-col-uhrzeit, .cmc .cmc-table .cmc-col-datum { white-space: nowrap; font-variant-numeric: tabular-nums; }

/* ---------- buttons ---------- */
.cmc .cmc-btn, .cmc a.cmc-btn { display: inline-flex; align-items: center; justify-content: center; min-height: 2.5rem; padding: 0 1.1rem; border: 2px solid var(--cmc-primary);
  background: var(--cmc-primary); color: var(--cmc-on-primary); font: inherit; font-size: .95rem; font-weight: 600; border-radius: var(--cmc-radius); cursor: pointer;
  text-decoration: none !important; white-space: nowrap; transition: background-color .15s, color .15s; }
.cmc .cmc-btn:hover, .cmc .cmc-btn:focus-visible, .cmc [data-cmc-book]:hover .cmc-btn { background: var(--cmc-bg); color: var(--cmc-primary); }
.cmc .cmc-btn--ghost { background: var(--cmc-bg); color: var(--cmc-primary); }
.cmc .cmc-btn--ghost:hover { background: var(--cmc-primary); color: var(--cmc-on-primary); }
.cmc .cmc-btn[disabled] { opacity: .6; cursor: progress; }
.cmc .cmc-link { background: none; border: 0; padding: 0; color: var(--cmc-primary); font: inherit; font-weight: 600; cursor: pointer; text-decoration: none !important; }
.cmc .cmc-link:hover { text-decoration: underline !important; }

/* ---------- pager ---------- */
.cmc .cmc-pager { display: flex; flex-wrap: wrap; justify-content: center; gap: .35rem; margin: 1.5rem 0 0; }
.cmc .cmc-page { min-width: 2.5rem; height: 2.5rem; padding: 0 .6rem; border: 1px solid var(--cmc-line-strong); border-radius: var(--cmc-radius); background: var(--cmc-bg);
  font: inherit; color: var(--cmc-text); cursor: pointer; }
.cmc .cmc-page.is-current { background: var(--cmc-primary); border-color: var(--cmc-primary); color: var(--cmc-on-primary); font-weight: 600; }
.cmc .cmc-page:hover:not(.is-current):not([disabled]) { border-color: var(--cmc-primary); color: var(--cmc-primary); }
.cmc .cmc-page[disabled] { opacity: .4; cursor: default; }

/* dialogs */
.cmc-dialog { width: min(640px, 94vw); max-height: 92vh; padding: 0; border: 1px solid var(--cmc-border); border-radius: 6px; overflow: hidden; color: var(--cmc-text); }
.cmc-dialog::backdrop { background: rgba(0, 0, 0, .45); }
.cmc-dialog form { margin: 0; }
.cmc .cmc-dialog__head { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; padding: 1rem 1.25rem; border-bottom: 1px solid var(--cmc-border); }
.cmc .cmc-dialog__head h2 { margin: 0; font-size: 1.3rem; font-weight: 600; line-height: 1.3; }
.cmc .cmc-dialog__meta { margin: .2rem 0 0; color: var(--cmc-muted); }
.cmc .cmc-dialog__body { padding: 1rem 1.25rem; overflow: auto; max-height: calc(92vh - 9rem); }
.cmc .cmc-dialog__foot { display: flex; justify-content: flex-end; gap: .5rem; padding: .85rem 1.25rem; border-top: 1px solid var(--cmc-border); background: var(--cmc-soft); }
.cmc .cmc-x { background: none; border: 0; font-size: 1.5rem; line-height: 1; cursor: pointer; color: var(--cmc-muted); padding: 0 .2rem; }
.cmc .cmc-x:hover { color: var(--cmc-danger); }
.cmc .cmc-person { border: 1px solid var(--cmc-border); border-radius: var(--cmc-radius); padding: .75rem 1rem 1rem; margin: 0 0 .85rem; }
.cmc .cmc-person legend { display: flex; align-items: center; gap: .5rem; padding: 0 .35rem; font-weight: 600; }
.cmc .cmc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: .6rem 1rem; }
.cmc .cmc-person label { display: flex; flex-direction: column; gap: .25rem; font-size: .9rem; color: var(--cmc-muted); margin: 0; }
.cmc .cmc-person input[type="text"], .cmc .cmc-person input[type="email"], .cmc .cmc-person input[type="tel"] { width: 100%; height: 2.6rem; padding: 0 .7rem; border: 1px solid var(--cmc-border);
  border-radius: var(--cmc-radius); font: inherit; color: var(--cmc-text); background: var(--cmc-bg); }
.cmc .cmc-person input:focus { outline: 2px solid var(--cmc-primary); outline-offset: -1px; border-color: var(--cmc-primary); }
.cmc .cmc-person input:disabled { background: var(--cmc-soft); color: var(--cmc-muted); }
.cmc form.is-validated .cmc-person input:invalid:not(:focus) { border-color: var(--cmc-danger); }
.cmc .cmc-check { display: flex; align-items: flex-start; gap: .5rem; margin: .6rem 0; font-size: .95rem; color: var(--cmc-text); }
.cmc .cmc-same { margin: .7rem 0 .5rem; }
.cmc .cmc-privacy { margin-top: 1rem; }
.cmc .cmc-alert { border-left: 4px solid var(--cmc-danger); background: var(--cmc-danger-soft); padding: .6rem .9rem; margin: 0 0 1rem; }
.cmc .cmc-alert ul { margin: .35rem 0 0 1rem; }
.cmc .cmc-hp { position: absolute !important; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
.cmc .cmc-done__course { font-size: 1.15rem; font-weight: 600; margin: 0; }
.cmc .cmc-done__names { margin: .75rem 0; padding-left: 1.1rem; }
.cmc .cmc-done__cal { display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; margin-top: 1rem; }
.cmc .cmc-tag { display: inline-block; font-size: .8rem; padding: .05rem .45rem; border: 1px solid var(--cmc-border); color: var(--cmc-muted); }

/* notices, forms of the no-JS fallback and portal (kept compatible) */
.cmc .cmc-notice { padding: .75rem 1rem; margin: 0 0 1.25rem; border-left: 4px solid var(--cmc-primary); background: var(--cmc-soft); }
.cmc .cmc-notice--error { border-left-color: var(--cmc-danger); background: var(--cmc-danger-soft); }
.cmc .cmc-list { list-style: none; margin: 0 0 1.5rem; padding: 0; }
.cmc .cmc-item { display: flex; flex-wrap: wrap; align-items: center; gap: .25rem .75rem; padding: .6rem 0; border-bottom: 1px solid var(--cmc-border); }
.cmc .cmc-status { font-size: .85rem; padding: .05rem .5rem; border: 1px solid currentColor; }
.cmc .cmc-status--cancelled_by_customer, .cmc .cmc-status--cancelled_by_staff, .cmc .cmc-status--cancelled_due_to_occurrence { color: var(--cmc-danger); }

@media (max-width: 640px) {
  .cmc .cmc-card { grid-template-columns: 1fr; gap: .5rem; }
  .cmc .cmc-card__date { flex-direction: row; align-items: baseline; gap: .5rem; }
  .cmc .cmc-dm { font-size: 1.1rem; }
  .cmc .cmc-card__action { text-align: left; }
  .cmc .cmc-card__action .cmc-btn { width: 100%; }
  .cmc .cmc-grid { grid-template-columns: 1fr; }
  .cmc-dialog { width: 100vw; max-width: 100vw; height: 100dvh; max-height: 100dvh; margin: 0; border: 0; }
  .cmc .cmc-dialog__body { max-height: calc(100dvh - 9rem); }
}
.cmc .cmc-person label.cmc-check { flex-direction: row; align-items: center; gap: .5rem; color: var(--cmc-text); font-size: .95rem; }
.cmc .cmc-check input[type="checkbox"] { width: 1.1rem; height: 1.1rem; margin: 0; flex: 0 0 auto; accent-color: var(--cmc-primary); }
/* Head and foot stay visible, only the body scrolls (desktop and phone). */
.cmc-dialog[open] { display: flex; flex-direction: column; }
.cmc-dialog > form { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; }
.cmc .cmc-dialog__body { flex: 1 1 auto; min-height: 0; max-height: none; overflow: auto; }
.cmc .cmc-dialog__head, .cmc .cmc-dialog__foot { flex: 0 0 auto; }
@media (max-width: 640px) { .cmc .cmc-dialog__head h2 { font-size: 1.15rem; } .cmc .cmc-dialog__meta { font-size: .9rem; } }

@media (max-width: 640px) {
  .cmc .cmc-field--search { max-width: none; }
  .cmc .cmc-field { min-width: 0; }
  .cmc .cmc-field input, .cmc .cmc-field select { width: 100%; min-width: 0; padding: 0 .6rem; }
  .cmc .cmc-field--search input { padding-left: 2.4rem; }
    .cmc .cmc-table .cmc-col-ort, .cmc .cmc-table .cmc-col-status { display: none; }
}

/* ---------- programme: Sundays & holidays ---------- */
.cmc .cmc-pday { margin: 0 0 1.5rem; padding: 0 0 1rem; border-bottom: 1px solid var(--cmc-border); }
.cmc .cmc-pday.is-past { opacity: .5; }
.cmc .cmc-pday__date { font-size: 1.45rem; font-weight: 600; line-height: 1.3; margin: 0 0 .4rem; color: var(--cmc-text); }
.cmc .cmc-pday__name { font-weight: 400; color: var(--cmc-muted); }
.cmc .cmc-pday__note { margin: 0 0 .35rem; color: var(--cmc-muted); }
.cmc .cmc-pday__lines { list-style: none; margin: 0; padding: 0; }
.cmc .cmc-pday__lines li { padding: .15rem 0; margin: 0; font-size: 1rem; }
.cmc .cmc-pday__note { font-size: 1rem; }
.cmc .cmc-pday__none { margin: 0; color: var(--cmc-muted); }
.cmc .cmc-pday__lines li.is-cancelled { color: var(--cmc-danger); text-decoration: line-through; }
.cmc .cmc-pday__time { display: inline-block; min-width: 7.5rem; font-weight: 600; font-variant-numeric: tabular-nums; }
.cmc .cmc-pday__room { color: var(--cmc-muted); }
.cmc .cmc-pday__badge { font-size: .8rem; color: var(--cmc-danger); text-decoration: none; display: inline-block; }

/* ---------- programme: weekly plan ---------- */
.cmc .cmc-plan-scroll { overflow-x: auto; }
.cmc .cmc-plan { display: grid; grid-template-columns: 3.2rem repeat(var(--cmc-cols), minmax(5.5rem, 1fr)); min-width: max-content; border: 1px solid var(--cmc-border); border-radius: var(--cmc-radius); background: var(--cmc-bg); }
.cmc .cmc-plan__corner, .cmc .cmc-plan__day, .cmc .cmc-plan__room { padding: .35rem .3rem; text-align: center; background: var(--cmc-soft); border-bottom: 1px solid var(--cmc-border); font-size: .85rem; }
.cmc .cmc-plan__day { font-weight: 600; border-left: 2px solid var(--cmc-border); }
.cmc .cmc-plan__room { color: var(--cmc-muted); font-size: .78rem; border-left: 1px solid var(--cmc-border); }
.cmc .cmc-plan__hours { position: relative; }
.cmc .cmc-plan__hour { font-size: .72rem; color: var(--cmc-muted); text-align: right; padding: .1rem .3rem 0 0; border-top: 1px solid var(--cmc-border); box-sizing: border-box; }
.cmc .cmc-plan__col { position: relative; height: var(--cmc-h); border-left: 1px solid var(--cmc-border); }
.cmc .cmc-plan__col.is-day-start { border-left: 2px solid var(--cmc-border); }
.cmc .cmc-plan__slot { border-top: 1px solid var(--cmc-border); box-sizing: border-box; }
.cmc .cmc-plan__slot.is-gap, .cmc .cmc-plan__hour.is-gap { background: repeating-linear-gradient(135deg, transparent 0 6px, var(--cmc-soft) 6px 8px); }
.cmc .cmc-plan__entry { position: absolute; left: 2px; right: 2px; overflow: hidden; display: flex; flex-direction: column; gap: 0; padding: .2rem .3rem; border-radius: 3px;
  background: var(--cmc-entry, var(--cmc-soft)); color: var(--cmc-text); font-size: .74rem; line-height: 1.2; border-left: 3px solid var(--cmc-entry, var(--cmc-neutral)); }
.cmc .cmc-plan__entry.has-color { color: var(--cmc-on-primary); }
.cmc .cmc-plan__entry strong { font-size: .78rem; }
.cmc .cmc-plan__entry em { font-style: normal; font-size: .7rem; opacity: .9; }
.cmc .cmc-week__list { display: none; }
.cmc.cmc-week--list .cmc-week__list { display: block; }
.cmc .cmc-week__day { margin: 0 0 1.25rem; }
.cmc .cmc-week__day h3 { font-size: 1.35rem; font-weight: 600; margin: 0 0 .4rem; padding: 0 0 .3rem; border-bottom: 2px solid var(--cmc-border); }
.cmc .cmc-week__day ul { list-style: none; margin: 0; padding: 0; }
.cmc .cmc-week__day li { font-size: 1rem; display: grid; grid-template-columns: 7.5rem 1fr; gap: 0 .75rem; padding: .4rem 0 .4rem .6rem; margin: 0; border-left: 4px solid var(--cmc-entry, var(--cmc-neutral)); }
.cmc .cmc-week__day li + li { border-top: 1px solid var(--cmc-border); }
.cmc .cmc-week__time { font-weight: 600; font-variant-numeric: tabular-nums; }
.cmc .cmc-week__room { color: var(--cmc-muted); }
.cmc .cmc-week__note { grid-column: 2; font-size: .88rem; color: var(--cmc-muted); }
@media (max-width: 800px) {
  .cmc.cmc-week .cmc-plan-scroll { display: none; }
  .cmc.cmc-week .cmc-week__list { display: block; }
}

/* ---------- programme: course descriptions ---------- */
.cmc .cmc-desc { margin: 0 0 1.25rem; }
.cmc .cmc-desc__title { font-size: 1.35rem; font-weight: 600; margin: 0 0 .25rem; color: var(--cmc-text); }
.cmc .cmc-desc__text { margin: 0; }
.cmc.cmc-week--full { width: 100vw; max-width: 100vw; margin-left: calc(50% - 50vw); padding: 0 1.5rem; box-sizing: border-box; }
.cmc .cmc-plan__day, .cmc .cmc-plan__room.is-day-start, .cmc .cmc-plan__col.is-day-start { border-left: 1px solid var(--cmc-line-strong); }
.cmc .cmc-plan__col.is-alt { background: var(--cmc-soft); }
.cmc .cmc-plan__day.is-alt, .cmc .cmc-plan__room.is-alt { background: var(--cmc-soft); }
.cmc .cmc-legend { list-style: none; display: flex; flex-wrap: wrap; gap: .4rem 1.2rem; margin: .75rem 0 0; padding: 0; font-size: .95rem; }
.cmc .cmc-legend li { display: inline-flex; align-items: center; gap: .4rem; margin: 0; }
.cmc .cmc-legend__dot { width: .85rem; height: .85rem; border-radius: 50%; display: inline-block; }
.cmc a.cmc-plan__entry { text-decoration: none !important; cursor: pointer; }
.cmc a.cmc-plan__entry:hover { filter: brightness(1.08); outline: 2px solid var(--cmc-text); outline-offset: -1px; }
.cmc a.cmc-plink { color: inherit; text-decoration: underline; text-decoration-color: var(--cmc-border); text-underline-offset: 3px; }
.cmc a.cmc-plink:hover { color: var(--cmc-primary); text-decoration-color: currentColor; }

/* booking dialog: required marks, larger touch targets, clear secondary actions */
.cmc .cmc-req { color: var(--cmc-danger); margin-left: .1rem; }
.cmc .cmc-btn.cmc-add { margin: .25rem 0 .75rem; min-height: 2.75rem; background: var(--cmc-bg); color: var(--cmc-text); border-color: var(--cmc-line-strong); }
.cmc .cmc-btn.cmc-add:hover, .cmc .cmc-btn.cmc-add:focus-visible { background: var(--cmc-soft); color: var(--cmc-text); border-color: var(--cmc-text); }
.cmc .cmc-person legend .cmc-x { width: 2.2rem; height: 2.2rem; display: inline-flex; align-items: center; justify-content: center; line-height: 0;
  border: 1px solid var(--cmc-border); border-radius: 50%; background: var(--cmc-bg); color: var(--cmc-muted); padding: 0; }
.cmc .cmc-person legend .cmc-x:hover { color: var(--cmc-danger); border-color: var(--cmc-danger); }
.cmc .cmc-person label.cmc-same { font-size: 1rem; }
.cmc .cmc-same input[type="checkbox"], .cmc .cmc-privacy input[type="checkbox"] { width: 1.4rem; height: 1.4rem; }
.cmc .cmc-privacy a { color: var(--cmc-primary); text-decoration: underline !important; text-underline-offset: 2px; font-weight: 600; }
.cmc .cmc-btn--cancel { background: var(--cmc-bg); color: var(--cmc-danger); border-color: var(--cmc-danger); }
.cmc .cmc-btn--cancel:hover, .cmc .cmc-btn--cancel:focus-visible { background: var(--cmc-danger); color: var(--cmc-on-primary); }

/* weekly plan colours: bar (default, light box with a coloured accent) or fill (shortcode farbe="flaeche") */
.cmc.cmc-week--bar .cmc-plan__entry, .cmc.cmc-week--bar .cmc-plan__entry.has-color { background: var(--cmc-soft); color: var(--cmc-text); border-left: 4px solid var(--cmc-entry, var(--cmc-neutral)); }
.cmc.cmc-week--bar .cmc-plan__entry em { color: var(--cmc-muted); opacity: 1; }

/* close button of the dialogs: a real, easy to hit button */
.cmc .cmc-x--close, .cmc-dialog .cmc-x--close { width: 2.75rem; height: 2.75rem; display: inline-flex; align-items: center; justify-content: center; line-height: 0;
  border: 1px solid transparent; border-radius: var(--cmc-radius); color: var(--cmc-muted); background: none; padding: 0; flex: 0 0 auto; }
.cmc .cmc-x--close:hover, .cmc-dialog .cmc-x--close:hover { background: var(--cmc-soft); border-color: var(--cmc-border); color: var(--cmc-text); }
/* "use contact of person 1": a clear option with a hint, the fields disappear when ticked */
.cmc .cmc-person label.cmc-same { margin: 1rem 0 .35rem; font-size: 1rem; font-weight: 600; color: var(--cmc-text); }
.cmc .cmc-own-contact { display: block; margin: 0 0 .6rem; font-size: .9rem; color: var(--cmc-muted); }

/* filter frame: reset on the frame line, from/to stay together, course select may grow */
.cmc .cmc-filters .cmc-reset { position: absolute; top: -.95rem; right: .75rem; display: inline-flex; align-items: center; gap: .35rem; height: 1.9rem; padding: 0 .7rem;
  border: 1px solid var(--cmc-border); border-radius: 999px; background: var(--cmc-bg); color: var(--cmc-text); font: inherit; font-size: .85rem; cursor: pointer; }
.cmc .cmc-filters .cmc-reset:hover { border-color: var(--cmc-danger); color: var(--cmc-danger); }
.cmc .cmc-field-pair { display: flex; gap: .6rem; flex: 0 0 auto; }
.cmc .cmc-field--course { flex: 1 1 16rem; }
.cmc .cmc-field--course select { width: 100%; }
.cmc .cmc-field--tag, .cmc .cmc-field--place { flex: 1 1 11rem; }
.cmc .cmc-field--tag select, .cmc .cmc-field--place select { width: 100%; }
.cmc .cmc-field select.is-all { font-weight: 600; }
.cmc .cmc-field select option { font-weight: 400; }
.cmc .cmc-field select option.cmc-opt-all { font-weight: 700; }
@media (max-width: 640px) {
  .cmc .cmc-filters { display: flex; flex-direction: column; align-items: stretch; padding: .9rem .8rem .9rem; }
  .cmc .cmc-field-pair { display: grid; grid-template-columns: 1fr 1fr; }
  .cmc .cmc-filters .cmc-reset { right: .5rem; }
}

/* course lists: list (default) or tiles, 1–3 columns; single column on small screens */
.cmc.cmc-cols-2, .cmc.cmc-cols-3, .cmc.cmc-layout--tiles { display: grid; gap: 1.25rem 1.5rem; align-items: start; }
.cmc.cmc-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.cmc.cmc-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.cmc.cmc-layout--tiles.cmc-cols-1 { grid-template-columns: minmax(0, 1fr); }
.cmc.cmc-cols-2 > :not(.cmc-item), .cmc.cmc-cols-3 > :not(.cmc-item), .cmc.cmc-layout--tiles > :not(.cmc-item) { grid-column: 1 / -1; }
.cmc.cmc-layout--list.cmc-cols-1 .cmc-item + .cmc-item { margin-top: 1.75rem; padding-top: 1.5rem; border-top: 1px solid var(--cmc-border); }
.cmc .cmc-item h3 { margin-top: 0; }
.cmc .cmc-course__desc, .cmc .cmc-desc__text { font-style: italic; }
.cmc .cmc-course__desc p:last-child { margin-bottom: .5rem; }
.cmc .cmc-item__badge { display: none; }
.cmc.cmc-layout--tiles .cmc-item { padding: 1.1rem 1.2rem; border: 1px solid var(--cmc-border); border-radius: 8px; background: var(--cmc-bg); box-shadow: 0 1px 3px rgba(0, 0, 0, .05); height: 100%; box-sizing: border-box; }
.cmc.cmc-layout--tiles .cmc-item h3 { display: flex; align-items: center; gap: .6rem; font-size: 1.15rem; }
.cmc.cmc-layout--tiles .cmc-item__badge { display: inline-flex; align-items: center; justify-content: center; width: 2.2rem; height: 2.2rem; flex: 0 0 auto;
  border-radius: 50%; background: var(--cmc-soft); color: var(--cmc-primary); font-weight: 700; font-style: normal; }
@media (max-width: 760px) { .cmc.cmc-cols-2, .cmc.cmc-cols-3 { grid-template-columns: minmax(0, 1fr); } }

/* Sundays & holidays as a table: day on the left, programme on the right */
.cmc .cmc-ptable { width: 100%; border-collapse: collapse; margin: 0; border: 0; }
.cmc .cmc-ptable th, .cmc .cmc-ptable td { text-align: left; vertical-align: top; padding: .75rem .75rem; border: 0; border-bottom: 1px solid var(--cmc-border); }
.cmc .cmc-ptable th { width: 15rem; white-space: nowrap; font-weight: 600; font-size: 1.05rem; }
.cmc .cmc-ptable th small { display: block; font-weight: 400; color: var(--cmc-muted); font-size: .9rem; }
.cmc .cmc-ptable tr.is-past th, .cmc .cmc-ptable tr.is-past td { opacity: .5; }
.cmc .cmc-ptable ul { list-style: none; margin: 0; padding: 0; }
.cmc .cmc-ptable li { margin: 0 0 .2rem; }
@media (max-width: 640px) { .cmc .cmc-ptable th, .cmc .cmc-ptable td { display: block; width: auto; border-bottom: 0; padding: .35rem 0; } .cmc .cmc-ptable tr { display: block; padding: .5rem 0; border-bottom: 1px solid var(--cmc-border); } }

/* stil="weich": warmer cards (optional) */
.cmc.cmc--soft .cmc-card { border: 0; border-radius: 12px; box-shadow: 0 1px 2px rgba(0,0,0,.06), 0 4px 14px rgba(0,0,0,.06); padding: .9rem 1.1rem; gap: 1.1rem;
  grid-template-columns: 6.4rem minmax(0, 1fr) auto; position: relative; overflow: hidden; }
.cmc.cmc--soft .cmc-card::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: var(--cmc-state); }
.cmc.cmc--nobar.cmc--soft .cmc-card::before { display: none; }
.cmc.cmc--soft .cmc-card:hover, .cmc.cmc--soft .cmc-card:focus-visible { box-shadow: 0 2px 4px rgba(0,0,0,.08), 0 8px 22px rgba(0,0,0,.10); transform: translateY(-1px); }
.cmc.cmc--soft .cmc-card { transition: box-shadow .15s, transform .15s; }
.cmc.cmc--soft .cmc-card__date { align-items: center; justify-content: center; text-align: center; padding: .45rem .3rem; border-radius: 10px; background: var(--cmc-soft); }
.cmc.cmc--soft .cmc-wd { font-size: .75rem; letter-spacing: .06em; text-transform: uppercase; color: var(--cmc-muted); }
.cmc.cmc--soft .cmc-dm { font-size: 1.5rem; font-weight: 600; line-height: 1.1; }
.cmc.cmc--soft .cmc-time { font-size: .78rem; white-space: nowrap; }
.cmc.cmc--soft .cmc-title { font-size: 1.12rem; }
.cmc.cmc--soft .cmc-places, .cmc.cmc--soft .cmc-state { display: inline-block; margin-top: .25rem; padding: .1rem .55rem; border-radius: 999px; background: var(--cmc-soft); font-size: .82rem; width: max-content; }
.cmc.cmc--soft .cmc-state { background: var(--cmc-danger-soft); }
.cmc.cmc--soft .cmc-btn { border-radius: 999px; }
.cmc.cmc--soft .cmc-day { border-bottom: 0; margin-top: 1.4rem; }
@media (max-width: 640px) { .cmc.cmc--soft .cmc-card { grid-template-columns: 4.6rem minmax(0, 1fr); } .cmc.cmc--soft .cmc-card__action { grid-column: 1 / -1; } }
.cmc .cmc-ptable td, .cmc .cmc-ptable td p, .cmc .cmc-ptable td li { font-size: 1rem; line-height: 1.5; }
.cmc .cmc-ptable td p { margin: 0 0 .2rem; }
.cmc.cmc-layout--tiles .cmc-item { display: flex; flex-direction: column; justify-content: flex-start; gap: 0; }
.cmc.cmc-layout--tiles .cmc-item > * { margin-top: 0; }
.cmc.cmc-layout--tiles .cmc-item h3 { margin: 0 0 .6rem; }
.cmc.cmc-layout--tiles .cmc-desc__text, .cmc.cmc-layout--tiles .cmc-course__desc { font-size: .98rem; line-height: 1.55; margin: 0; }
.cmc.cmc-layout--tiles .cmc-item { align-items: stretch; text-align: left; } .cmc.cmc-layout--tiles .cmc-item h3 { justify-content: flex-start; text-align: left; }

/* robust against theme styles (e.g. sections laid out as flex rows or with their own borders) */
.cmc.cmc-layout--list .cmc-item { display: block; border: 0; margin: 0; padding: 1.1rem 0; box-shadow: none; background: none; }
.cmc.cmc-layout--list.cmc-cols-1 .cmc-item + .cmc-item { margin-top: 0; padding-top: 1.1rem; border-top: 1px solid var(--cmc-border); }
.cmc .cmc-item > h3 { display: block; width: 100%; margin: 0 0 .35rem; }
.cmc.cmc-layout--tiles .cmc-item > h3 { display: flex; }
.cmc .cmc-desc__text, .cmc .cmc-course__desc { display: block; width: 100%; margin: 0; }
.cmc .cmc-item::before, .cmc .cmc-item::after { content: none; }

/* mobile filters: in the stacked layout the flex basis must not turn into a height */
@media (max-width: 640px) {
  .cmc .cmc-filters > *, .cmc .cmc-filters .cmc-field, .cmc .cmc-field--search, .cmc .cmc-field--course, .cmc .cmc-field--tag, .cmc .cmc-field--place { flex: 0 0 auto; }
}

/* booking dialog header: date and time prominent, place and free places below */
.cmc-dialog .cmc-dialog__meta { display: flex; flex-direction: column; gap: .15rem; margin: .25rem 0 0; }
.cmc-dialog .cmc-meta__when { font-size: 1.05rem; font-weight: 600; color: var(--cmc-text); }
.cmc-dialog .cmc-meta__where { font-size: .92rem; color: var(--cmc-muted); }
.cmc-dialog .cmc-meta__sep { margin: 0 .45rem; color: var(--cmc-muted); font-weight: 400; }
/* T2–T4 */
.cmc .cmc-btn.cmc-add { border-width: 1px; }
.cmc .cmc-x--close, .cmc-dialog .cmc-x--close { color: var(--cmc-danger); }
.cmc .cmc-x--close:hover, .cmc-dialog .cmc-x--close:hover { background: var(--cmc-danger-soft); border-color: var(--cmc-danger); color: var(--cmc-danger); }
.cmc .cmc-own-contact { cursor: pointer; }
/* T9: every shortcode keeps some distance to what follows */
.cmc { margin-bottom: 20px; }
.cmc .cmc, .cmc.cmc--dialogs { margin-bottom: 0; }
/* T6: Sundays table with alternating rows */
.cmc .cmc-ptable tbody tr:nth-child(odd) th, .cmc .cmc-ptable tbody tr:nth-child(odd) td { background: var(--cmc-bg); }
.cmc .cmc-ptable tbody tr:nth-child(even) th, .cmc .cmc-ptable tbody tr:nth-child(even) td { background: var(--cmc-soft); }
.cmc .cmc-ptable th, .cmc .cmc-ptable td { border-bottom: 0; }

/* classic buttons and the link request carry the same look as the booking buttons */
.cmc .cmc-button, .cmc button.cmc-button { display: inline-flex; align-items: center; justify-content: center; min-height: 2.6rem; padding: 0 1.2rem; border: 2px solid var(--cmc-primary);
  background: var(--cmc-primary); color: var(--cmc-on-primary); font: inherit; font-weight: 600; border-radius: var(--cmc-radius); cursor: pointer; text-decoration: none !important; }
.cmc .cmc-button:hover, .cmc .cmc-button:focus-visible { background: var(--cmc-bg); color: var(--cmc-primary); }
.cmc .cmc-link-request input[type="email"] { width: 100%; max-width: 26rem; height: 2.75rem; padding: 0 .8rem; border: 1px solid var(--cmc-line-strong); border-radius: var(--cmc-radius); font: inherit; }
.cmc .cmc-link-request label { display: block; font-size: .9rem; color: var(--cmc-muted); margin-bottom: .25rem; }

/* course descriptions: title colour, small size, badge on/off */
.cmc.cmc-descriptions .cmc-desc__title { color: var(--cmc-title, var(--cmc-text)); }
.cmc.cmc-size--small .cmc-desc__title { font-size: 1rem; margin-bottom: .2rem; }
.cmc.cmc-size--small .cmc-desc__text { font-size: .92rem; line-height: 1.5; }
.cmc.cmc-size--small.cmc-layout--list .cmc-item { padding: .7rem 0; }
.cmc.cmc--nobadge .cmc-item__badge { display: none !important; }
.cmc .cmc-person label.cmc-own-contact { display: block; margin: 0 0 .6rem; font-size: .9rem; color: var(--cmc-muted); font-weight: 400; }
/* T10: Sundays as a list in the style of the weekly plan's list view */
.cmc .cmc-pday-list.is-past { opacity: .5; }
.cmc .cmc-week__day li.cmc-week__full { grid-template-columns: 1fr; border-left-color: var(--cmc-border); }
.cmc .cmc-week__day li.is-cancelled .cmc-week__title { text-decoration: line-through; color: var(--cmc-danger); }
.cmc .cmc-pday-list h3 .cmc-pday__name { font-weight: 400; font-size: .95rem; color: var(--cmc-muted); }
.cmc .cmc-week__day li.cmc-week__full .cmc-week__note { grid-column: 1; font-size: 1rem; color: var(--cmc-muted); }

/* U1: reset sits on the frame line with guaranteed room, independent of the last filter row */
.cmc .cmc-filters { padding-top: 1.35rem; }
.cmc .cmc-filters .cmc-reset { top: -1rem; }
@media (max-width: 640px) { .cmc .cmc-filters { padding-top: 1.5rem; } }
/* U3: Sundays table only as wide as its content */
.cmc .cmc-ptable { width: auto; max-width: 100%; }
.cmc .cmc-ptable th { width: auto; padding-right: 2rem; }
/* U4: close button neutral, red only on hover */
.cmc .cmc-x--close, .cmc-dialog .cmc-x--close { color: var(--cmc-muted); }
.cmc .cmc-x--close:hover, .cmc-dialog .cmc-x--close:hover, .cmc .cmc-x--close:focus-visible, .cmc-dialog .cmc-x--close:focus-visible { color: var(--cmc-danger); background: var(--cmc-danger-soft); border-color: var(--cmc-danger); }
/* U5: calm buttons – 1 px border everywhere, calendar button grey, Google as a blue link */
.cmc .cmc-btn, .cmc-dialog .cmc-btn, .cmc .cmc-button { border-width: 1px; }
.cmc .cmc-btn--neutral, .cmc-dialog .cmc-btn--neutral { background: var(--cmc-soft); color: var(--cmc-text); border-color: var(--cmc-line-strong); }
.cmc .cmc-btn--neutral:hover, .cmc-dialog .cmc-btn--neutral:hover { background: var(--cmc-soft); color: var(--cmc-text); border-color: var(--cmc-line-strong); }
.cmc-dialog .cmc-done__cal .cmc-link, .cmc .cmc-done__cal .cmc-link { color: var(--cmc-link); text-decoration: underline; text-underline-offset: 2px; background: none; border: 0; }
.cmc-dialog .cmc-done__cal .cmc-link:hover { color: var(--cmc-link); }

/* U2: course lists – spacing, sizes, colours, italic, background with opacity (all via shortcode) */
.cmc .cmc-course__desc, .cmc .cmc-desc__text { font-style: normal; }
.cmc.cmc--italic .cmc-course__desc, .cmc.cmc--italic .cmc-desc__text { font-style: italic; }
.cmc.cmc--gap.cmc-layout--list .cmc-item, .cmc.cmc--gap.cmc-layout--list.cmc-cols-1 .cmc-item + .cmc-item { padding-top: var(--cmc-gap); padding-bottom: var(--cmc-gap); }
.cmc.cmc--gap.cmc-cols-2, .cmc.cmc--gap.cmc-cols-3, .cmc.cmc--gap.cmc-layout--tiles { gap: var(--cmc-gap); }
.cmc.cmc--titlesize .cmc-item > h3 { font-size: var(--cmc-title-size); }
.cmc.cmc--titlecolor .cmc-item > h3 { color: var(--cmc-title); }
.cmc.cmc--textsize .cmc-desc__text, .cmc.cmc--textsize .cmc-course__desc, .cmc.cmc--textsize .cmc-course__desc p { font-size: var(--cmc-text-size); }
.cmc.cmc--textcolor .cmc-desc__text, .cmc.cmc--textcolor .cmc-course__desc, .cmc.cmc--textcolor .cmc-course__desc p { color: var(--cmc-textcolor); }
.cmc.cmc--tilecolor.cmc-layout--tiles .cmc-item { background: var(--cmc-tile); }
.cmc.cmc--tileborder.cmc-layout--tiles .cmc-item { border-color: var(--cmc-tile-border); }
.cmc.cmc--listbg { background: var(--cmc-list-bg); padding: 1rem 1.25rem; border-radius: 8px; }
/* U8: fill style – pale colours get dark text; bar style – tint and coloured border for contrast against tinted days */
.cmc .cmc-plan__entry.has-color.is-light { color: var(--cmc-text); }
.cmc .cmc-plan__entry.has-color.is-light em, .cmc .cmc-plan__entry.has-color.is-light span { color: var(--cmc-text); }
.cmc.cmc-week--bar .cmc-plan__entry, .cmc.cmc-week--bar .cmc-plan__entry.has-color {
  background: color-mix(in srgb, var(--cmc-entry, var(--cmc-neutral)) 14%, var(--cmc-bg));
  border: 1px solid color-mix(in srgb, var(--cmc-entry, var(--cmc-neutral)) 70%, var(--cmc-bg)); border-left: 5px solid var(--cmc-entry, var(--cmc-neutral)); color: var(--cmc-text);
}
/* U9: deviating times dashed behind the base appointment; entries grow with their text */
.cmc .cmc-plan__variant { position: absolute; left: 3px; right: 3px; z-index: 1; border: 1.5px dashed color-mix(in srgb, var(--cmc-entry, var(--cmc-neutral)) 75%, var(--cmc-text));
  border-radius: 4px; background: color-mix(in srgb, var(--cmc-entry, var(--cmc-neutral)) 6%, transparent); display: flex; align-items: flex-end; padding: .15rem .35rem; pointer-events: none; }
.cmc .cmc-plan__variant.is-above { align-items: flex-start; }
.cmc .cmc-plan__variant span { font-size: .7rem; line-height: 1.15; color: var(--cmc-text); background: var(--cmc-bg); padding: 0 .2rem; border-radius: 2px; }
.cmc .cmc-plan__entry { z-index: 2; height: auto; }

/* Self-service portal (looks like the booking list) */
.cmc-portal .cmc-portal__head { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; flex-wrap: wrap; margin: 0 0 .75rem; }
.cmc-portal .cmc-portal__head h3 { margin: 0 0 .15rem; }
.cmc-portal .cmc-portal__head p { margin: 0; }
.cmc-portal .cmc-portal__hint { border: 1px solid var(--cmc-border); border-left: 4px solid var(--cmc-neutral); border-radius: var(--cmc-radius); background: var(--cmc-soft); padding: .7rem .9rem; margin: 0 0 1.25rem; font-size: .92rem; }
.cmc-portal .cmc-portal__hint p { margin: 0 0 .35rem; }
.cmc-portal .cmc-portal__hint p:last-child { margin: 0; }
.cmc-portal .cmc-portal__bar { display: flex; justify-content: space-between; align-items: flex-end; gap: .75rem 1rem; flex-wrap: wrap; border-bottom: 1px solid var(--cmc-border); margin: 0 0 1rem; }
.cmc-portal .cmc-tabs { display: flex; gap: .25rem; }
.cmc-portal .cmc-tabs a { display: inline-flex; align-items: center; gap: .4rem; padding: .55rem .8rem; color: var(--cmc-text); text-decoration: none !important; border-bottom: 3px solid transparent; margin-bottom: -1px; }
.cmc-portal .cmc-tabs a[aria-current="page"] { border-bottom-color: var(--cmc-o-tab, #5f6b76); font-weight: 600; }  /* FB5-7: neutral, not "available" green */
.cmc-portal .cmc-count { display: inline-block; min-width: 1.4rem; padding: 0 .4rem; border-radius: 999px; background: var(--cmc-soft); font-size: .8rem; font-weight: 600; text-align: center; }
.cmc-portal .cmc-switch { display: inline-flex; border: 1px solid var(--cmc-border); border-radius: 999px; overflow: hidden; margin-bottom: .45rem; }
.cmc-portal .cmc-switch a { padding: .3rem .8rem; font-size: .88rem; color: var(--cmc-text); text-decoration: none !important; }
.cmc-portal .cmc-switch a[aria-current="true"] { background: var(--cmc-soft); font-weight: 600; }
.cmc-portal .cmc-person-group h4 { display: flex; align-items: center; gap: .5rem; margin: 1.25rem 0 .5rem; }
.cmc-portal .cmc-pcards { list-style: none; margin: 0; padding: 0; display: grid; gap: .6rem; }
.cmc-portal .cmc-pcard { display: grid; grid-template-columns: 6rem minmax(0, 1fr) auto; gap: 1rem; align-items: center; margin: 0; padding: .75rem 1rem;
  border: 1px solid var(--cmc-border); border-left: 4px solid var(--cmc-primary); border-radius: var(--cmc-radius); background: var(--cmc-bg); }
.cmc-portal .cmc-pcard.is-cancelled { border-left-color: var(--cmc-danger); }
.cmc-portal .cmc-pcard.is-past { border-left-color: var(--cmc-line-strong); opacity: .8; }
.cmc-portal .cmc-pcard__date { display: flex; flex-direction: column; line-height: 1.2; }
.cmc-portal .cmc-pcard__date .cmc-wd { font-size: .8rem; color: var(--cmc-muted); text-transform: uppercase; letter-spacing: .04em; }
.cmc-portal .cmc-pcard__date .cmc-dm { font-size: 1.25rem; font-weight: 600; }
.cmc-portal .cmc-pcard__date .cmc-time { font-size: .82rem; color: var(--cmc-muted); white-space: nowrap; }
.cmc-portal .cmc-pcard__body { display: flex; flex-direction: column; gap: .15rem; min-width: 0; }
.cmc-portal .cmc-pcard__body .cmc-title { font-weight: 600; font-size: 1.05rem; }
.cmc-portal .cmc-pcard.is-cancelled .cmc-title { text-decoration: line-through; text-decoration-color: var(--cmc-danger); }
.cmc-portal .cmc-pcard__meta { color: var(--cmc-muted); font-size: .92rem; }
.cmc-portal .cmc-pcard__badges { display: flex; flex-wrap: wrap; gap: .3rem; margin-top: .15rem; }
.cmc-portal .cmc-badge { display: inline-block; padding: .05rem .5rem; border-radius: 999px; background: var(--cmc-soft); font-size: .8rem; }
.cmc-portal .cmc-badge--bad { background: var(--cmc-danger-soft); color: var(--cmc-danger); font-weight: 600; }
.cmc-portal .cmc-badge--off { background: var(--cmc-soft); color: var(--cmc-muted); }
.cmc-portal .cmc-pcard__note { margin: .25rem 0 0; font-size: .92rem; }
.cmc-portal .cmc-pcard__action form { margin: 0; }
.cmc-portal .cmc-empty { color: var(--cmc-muted); padding: 1rem 0; }
.cmc-portal .cmc-portal__legal { margin: 1.75rem 0 0; padding-top: .75rem; border-top: 1px solid var(--cmc-border); font-size: .8rem; color: var(--cmc-muted); }
@media (max-width: 640px) {
  .cmc-portal .cmc-pcard { grid-template-columns: 4.8rem minmax(0, 1fr); }
  .cmc-portal .cmc-pcard__action { grid-column: 1 / -1; }
  .cmc-portal .cmc-pcard__action .cmc-btn { width: 100%; }
}


/* W1: all plain lines 1 px (tables, buttons, headings, frames); coloured accent bars on the left stay as accents */
.cmc .cmc-day, .cmc .cmc-week__day h3, .cmc .cmc-table th { border-bottom-width: 1px; }
.cmc .cmc-btn, .cmc a.cmc-btn, .cmc .cmc-button, .cmc button.cmc-button, .cmc-dialog .cmc-btn, .cmc .cmc-reset, .cmc .cmc-x, .cmc-dialog .cmc-x { border-width: 1px; }
.cmc .cmc-plan__day, .cmc .cmc-plan__col.is-day-start, .cmc .cmc-plan__room.is-day-start { border-left-width: 1px; }
.cmc .cmc-filters, .cmc .cmc-person, .cmc .cmc-pcard, .cmc .cmc-item, .cmc input, .cmc select, .cmc textarea, .cmc-dialog input, .cmc-dialog select { border-width: 1px; }
.cmc .cmc-pcard { border-left-width: 4px; }
/* W2: neutral grey, row colours adjustable (zeilenfarbe / zeilenfarbe2) */
.cmc .cmc-ptable tbody tr:nth-child(odd) th, .cmc .cmc-ptable tbody tr:nth-child(odd) td { background: var(--cmc-row1, var(--cmc-bg)); }
.cmc .cmc-ptable tbody tr:nth-child(even) th, .cmc .cmc-ptable tbody tr:nth-child(even) td { background: var(--cmc-row2, var(--cmc-soft)); }
/* W3: optional frame around any plugin block */
.cmc-frame { border: var(--cmc-frame-width, 1px) solid var(--cmc-frame-color, var(--cmc-line-strong)); border-radius: var(--cmc-frame-radius, 6px); padding: var(--cmc-frame-pad, 16px);
  background: var(--cmc-frame-bg, transparent); margin-bottom: 20px; }
.cmc-frame > .cmc { margin-bottom: 0; }
.cmc-vars { display: block; }  /* a normal block, so the theme keeps the content width */

/* X1: weekly plan entries keep the height of their time slot; name at most 2 lines with "…", time always visible */
.cmc .cmc-plan__entry { height: auto; display: flex; flex-direction: column; overflow: hidden; cursor: default; }
.cmc .cmc-plan__entry strong { display: -webkit-box; -webkit-line-clamp: 2; line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; flex: 0 0 auto; }
.cmc .cmc-plan__entry span { flex: 0 0 auto; white-space: nowrap; }
.cmc .cmc-plan__entry em { flex: 1 1 auto; min-height: 0; overflow: hidden; }
.cmc .cmc-plan__entry:focus-visible { outline: 2px solid var(--cmc-text); outline-offset: -2px; }
.cmc .cmc-desc__times { margin: .15rem 0 0; font-size: var(--cmc-text-size, .95rem); color: var(--cmc-muted); font-style: normal; }
/* own tooltip (not the browser's) */
.cmc-tooltip { position: fixed; z-index: 100000; max-width: min(22rem, 90vw); padding: .5rem .7rem; border-radius: 6px; background: var(--cmc-o-text, #1f1f1f); color: #ffffff;
  font: 400 .85rem/1.4 system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif; white-space: pre-line; box-shadow: 0 6px 18px rgba(0,0,0,.2); pointer-events: none; }
.cmc-tooltip strong { display: block; }
/* knopfstil="umrandet": main buttons outlined in the accent colour */
.cmc-look--outline .cmc-btn:not(.cmc-btn--neutral):not(.cmc-btn--cancel), .cmc-look--outline .cmc-button { background: var(--cmc-bg); color: var(--cmc-primary); border-color: var(--cmc-primary); }
.cmc-look--outline .cmc-btn:not(.cmc-btn--neutral):not(.cmc-btn--cancel):hover, .cmc-look--outline .cmc-button:hover { background: var(--cmc-primary); color: var(--cmc-on-primary); }
.cmc .cmc-ptable th { width: var(--cmc-daycol, auto); }

/* booking dialog: book further dates of the same course */
.cmc-dialog .cmc-more { border: 1px solid var(--cmc-border); border-radius: var(--cmc-radius); padding: .6rem .8rem; margin: 0 0 1rem; background: var(--cmc-soft); }
.cmc-dialog .cmc-more__title { margin: 0 0 .35rem; font-weight: 600; font-size: .95rem; }
.cmc-dialog .cmc-more__list { display: grid; gap: .25rem; max-height: 12rem; overflow: auto; }
.cmc-dialog .cmc-more__item { font-size: .95rem; }
.cmc-dialog .cmc-meta__price { font-size: .9rem; color: var(--cmc-muted); }
/* dates: price, scarce places, compact view */
.cmc .cmc-price { display: block; font-size: .88rem; color: var(--cmc-muted); }
.cmc .cmc-places.is-scarce { color: var(--cmc-danger); font-weight: 600; }
.cmc.cmc--compact .cmc-card { padding: .45rem .7rem; gap: .6rem; grid-template-columns: 5.5rem minmax(0, 1fr) auto; }
.cmc.cmc--compact .cmc-card__date .cmc-dm { font-size: 1rem; }
.cmc.cmc--compact .cmc-card .cmc-info, .cmc.cmc--compact .cmc-card .cmc-loc { display: none; }
.cmc.cmc--compact .cmc-day { font-size: 1.05rem; margin-top: .9rem; }
.cmc.cmc--compact .cmc-btn { min-height: 2.1rem; padding: 0 .8rem; font-size: .9rem; }
.cmc-dialog [data-cmc-done-when] { white-space: pre-line; }
/* weekly plan without time column; Sundays: today; descriptions: link to the dates */
.cmc .cmc-plan--notimes { grid-template-columns: 0 repeat(var(--cmc-cols), minmax(6.5rem, 1fr)); }
.cmc .cmc-plan--notimes .cmc-plan__hours, .cmc .cmc-plan--notimes .cmc-plan__corner { visibility: hidden; overflow: hidden; }
.cmc .cmc-ptable tr.is-today th, .cmc .cmc-ptable tr.is-today td { box-shadow: inset 3px 0 0 var(--cmc-primary); }
.cmc .cmc-today { display: inline-block; margin-left: .4rem; padding: 0 .45rem; border-radius: 999px; background: var(--cmc-primary); color: var(--cmc-on-primary); font-size: .75rem; font-weight: 600; vertical-align: middle; }
.cmc .cmc-desc__link { margin: .2rem 0 0; font-size: .95rem; }
.cmc-portal .cmc-portal__title { margin: 0 0 .2rem; }
/* optional gender selection in the person block: same height as the text fields */
.cmc-dialog .cmc-person select { width: 100%; height: 2.6rem; padding: 0 .6rem; border: 1px solid var(--cmc-border); border-radius: var(--cmc-radius); background: var(--cmc-bg); font: inherit; color: var(--cmc-text); }

/* course images: always round, whatever the uploaded image looked like (square, with borders …) */
.cmc .cmc-item__img { display: none; width: 2.2rem; height: 2.2rem; border-radius: 50%; object-fit: cover; flex: 0 0 auto; padding: 0; background: var(--cmc-soft); }
.cmc.cmc-layout--tiles .cmc-item__img { display: inline-block; width: 3rem; height: 3rem; }
/* in list layouts an image (unlike the letter) is shown as well, next to the title */
.cmc.cmc-layout--list .cmc-item.has-image > h3 { display: flex; align-items: center; gap: .65rem; }
.cmc.cmc-layout--list .cmc-item.has-image .cmc-item__img { display: inline-block; }
.cmc.cmc--nobadge .cmc-item__img { display: none !important; }
.cmc .cmc-item__img { border-radius: 50% !important; overflow: hidden; position: relative; }
.cmc .cmc-item__img img { position: absolute; inset: 0; width: 100% !important; height: 100% !important; max-width: none !important; object-fit: cover; border-radius: 0 !important; margin: 0 !important; padding: 0 !important; border: 0 !important; box-shadow: none !important; display: block; }
/* FB1-1: extension label by available space; note in the entry one line with "…" */
.cmc .cmc-plan__variant span { pointer-events: auto; cursor: default; display: -webkit-box; -webkit-line-clamp: 2; line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; max-width: 100%; }
.cmc .cmc-plan__variant.is-oneline span { display: block; white-space: nowrap; text-overflow: ellipsis; }
.cmc .cmc-plan__entry em { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; flex: 0 0 auto; }
/* FB1-3/4: portal tabs "Meine Daten" and "Sicherheit" */
.cmc-portal .cmc-datatable { width: 100%; }
.cmc-portal .cmc-datatable th { width: auto; font-weight: 600; }
.cmc-portal .cmc-datahint { font-size: .9rem; margin-top: .75rem; }
.cmc-portal .cmc-portal__hint form { margin: .75rem 0 0; }
.cmc-portal .cmc-tabs { flex-wrap: wrap; }
@media (max-width: 640px) { .cmc-portal .cmc-datatable thead { display: none; } .cmc-portal .cmc-datatable td { display: block; padding: .2rem 0; } .cmc-portal .cmc-datatable tr { display: block; padding: .5rem 0; border-bottom: 1px solid var(--cmc-border); } }
/* FB2: greeting, past-dates notice, sign-out confirmation */
.cmc-portal .cmc-portal__greeting { margin: 0; font-size: 1.15rem; font-weight: 600; }
.cmc-portal .cmc-pasthint { font-size: .92rem; margin: 0 0 .75rem; }
.cmc-logout-dialog { max-width: 30rem; }
.cmc-logout-dialog h2 { margin: 0 0 .5rem; font-size: 1.2rem; }
.cmc-logout-dialog p { margin: 0 0 .5rem; font-size: .95rem; }
.cmc-logout-dialog .cmc-dialog__foot { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .5rem; }
/* FB2-7: "Meine Daten" – one form per person */
.cmc-portal .cmc-profile { border: 1px solid var(--cmc-border); border-radius: var(--cmc-radius); padding: .9rem 1rem; margin: 0 0 .9rem; background: var(--cmc-bg); }
.cmc-portal .cmc-profile .cmc-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .6rem 1rem; }
.cmc-portal .cmc-profile label { display: flex; flex-direction: column; gap: .25rem; font-size: .9rem; color: var(--cmc-muted); }
.cmc-portal .cmc-profile input { height: 2.6rem; padding: 0 .7rem; border: 1px solid var(--cmc-border); border-radius: var(--cmc-radius); font: inherit; color: var(--cmc-text); background: var(--cmc-bg); }
.cmc-portal .cmc-profile__actions { margin: .75rem 0 0; }
.cmc-portal .cmc-pending { margin: .6rem 0 0; font-size: .9rem; }
@media (max-width: 640px) { .cmc-portal .cmc-profile .cmc-grid { grid-template-columns: 1fr; } }
.cmc-portal .cmc-prefs .cmc-check { display: flex; gap: .6rem; align-items: flex-start; color: var(--cmc-text); font-size: .95rem; } .cmc-portal .cmc-prefs .cmc-check input { margin-top: .25rem; }

/* FB5-6: own confirmation window */
.cmc-confirm { max-width: 28rem; }
.cmc-confirm h2 { margin: 0 0 .75rem; font-size: 1.2rem; }
.cmc-confirm dl { display: grid; grid-template-columns: auto 1fr; gap: .25rem .9rem; margin: 0; font-size: .95rem; }
.cmc-confirm dt { color: var(--cmc-muted); }
.cmc-confirm dd { margin: 0; }
.cmc-confirm .cmc-dialog__foot { display: flex; justify-content: flex-end; gap: .5rem; }
/* FB6-3..5: course descriptions – same text size in list and tiles, dates one per line, subtle button */
.cmc.cmc-layout--list .cmc-desc__text { font-size: 1rem; line-height: 1.6; }
.cmc .cmc-desc__times { list-style: none; margin: .5rem 0 0; padding: 0; font-size: .92rem; color: var(--cmc-muted); }
.cmc .cmc-desc__times li { margin: 0; padding: .05rem 0; }
.cmc .cmc-desc__link { margin: .75rem 0 0; }
.cmc .cmc-btn.cmc-btn--ghost { background: transparent; color: var(--cmc-text); border: 1px solid var(--cmc-line-strong); min-height: 2.1rem; padding: 0 .9rem; font-size: .92rem; font-weight: 600; text-decoration: none; }
.cmc .cmc-btn.cmc-btn--ghost:hover, .cmc .cmc-btn.cmc-btn--ghost:focus-visible { border-color: var(--cmc-primary); color: var(--cmc-primary); background: transparent; }
.cmc.cmc-layout--tiles .cmc-item { display: flex; flex-direction: column; }
.cmc.cmc-layout--tiles .cmc-desc__link { margin-top: auto; padding-top: .75rem; }  /* buttons on one line across tiles */
/* FB5-11: person level in the portal */
.cmc-portal .cmc-subbar { display: flex; align-items: flex-end; justify-content: space-between; gap: .75rem; margin: .25rem 0 1rem; border-bottom: 1px solid var(--cmc-border); }
.cmc-portal .cmc-ptabs { display: flex; gap: .25rem; white-space: nowrap; overflow: hidden; min-width: 0; }
.cmc-portal .cmc-ptabs a { display: inline-flex; align-items: center; gap: .4rem; padding: .45rem .75rem; text-decoration: none; color: var(--cmc-muted); border-bottom: 2px solid transparent; margin-bottom: -1px; }
.cmc-portal .cmc-ptabs a[aria-current="page"] { color: var(--cmc-text); border-bottom-color: var(--cmc-o-tab, #5f6b76); font-weight: 600; }
.cmc-portal .cmc-ptabs-compact { position: relative; margin-bottom: .35rem; }
.cmc-portal .cmc-ptabs-toggle { all: unset; cursor: pointer; display: inline-flex; align-items: center; gap: .45rem; padding: .35rem .7rem; border: 1px solid var(--cmc-line-strong); border-radius: var(--cmc-radius); font-weight: 600; color: var(--cmc-text); background: var(--cmc-bg); }
.cmc-portal .cmc-ptabs-menu { position: absolute; left: 0; top: calc(100% + .25rem); z-index: 20; list-style: none; margin: 0; padding: .25rem 0; min-width: 100%; background: var(--cmc-bg); border: 1px solid var(--cmc-line-strong); border-radius: var(--cmc-radius); box-shadow: 0 6px 18px rgba(0,0,0,.12); }
.cmc-portal .cmc-ptabs-menu a { display: flex; align-items: center; justify-content: space-between; gap: .75rem; padding: .45rem .75rem; text-decoration: none; color: var(--cmc-text); white-space: nowrap; }
.cmc-portal .cmc-ptabs-menu a:hover { background: var(--cmc-soft); }
.cmc-portal .cmc-subbar .cmc-switch { margin-bottom: .35rem; flex: 0 0 auto; }
.cmc-portal .cmc-subbar { flex-wrap: wrap; }
.cmc-portal .cmc-pname { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cmc-portal .cmc-ptabs a, .cmc-portal .cmc-ptabs-toggle, .cmc-portal .cmc-ptabs-menu a { font-size: 1rem; line-height: 1.35; }
.cmc-portal .cmc-ptabs-compact { min-width: 0; max-width: 100%; }
.cmc-portal .cmc-ptabs-toggle { box-sizing: border-box; max-width: 100%; white-space: nowrap; }
.cmc-portal .cmc-ptabs-toggle .cmc-count, .cmc-portal .cmc-ptabs a .cmc-count { flex: 0 0 auto; }
@media (max-width: 640px) {
  .cmc-portal .cmc-subbar { flex-direction: column; align-items: stretch; border-bottom: 0; }
  .cmc-portal .cmc-ptabs-compact, .cmc-portal .cmc-ptabs-toggle { width: 100%; }
  .cmc-portal .cmc-ptabs-toggle { justify-content: flex-start; }
  .cmc-portal .cmc-ptabs-toggle .cmc-count { margin-left: auto; }
  .cmc-portal .cmc-subbar .cmc-switch { align-self: flex-start; }
}
/* FB10-3: the switch keeps its place on the right */
.cmc-portal .cmc-subbar .cmc-switch { margin-left: auto; }
/* FB10-5: pending e-mail change – a visible to-do */
.cmc-portal .cmc-pending { margin: .6rem 0 0; padding: .35rem .6rem; font-size: .9rem; background: #fff6d6; border: 1px solid #f0d78c; border-radius: var(--cmc-radius); color: #6b5100; display: inline-block; }
/* FB10-2: confirmation and sign-out windows on phones: a centred card, buttons right under the text */
@media (max-width: 640px) {
  dialog.cmc-dialog.cmc-confirm, dialog.cmc-dialog.cmc-logout-dialog { width: calc(100vw - 2rem); max-width: 26rem; height: fit-content; max-height: calc(100dvh - 2rem); margin: auto; inset: 0; border-radius: var(--cmc-radius); }
  dialog.cmc-confirm .cmc-dialog__body, dialog.cmc-logout-dialog .cmc-dialog__body { flex: 0 0 auto; }
  dialog.cmc-confirm .cmc-dialog__foot, dialog.cmc-logout-dialog .cmc-dialog__foot { flex-direction: column-reverse; align-items: stretch; position: static; }
  dialog.cmc-confirm .cmc-dialog__foot .cmc-btn, dialog.cmc-logout-dialog .cmc-dialog__foot .cmc-btn { width: 100%; justify-content: center; }
  .cmc-logout-dialog p, .cmc-confirm dl { font-size: 1rem; }
}
/* FB10-10: portal history */
.cmc-portal .cmc-history { list-style: none; margin: 0; padding: 0; }
.cmc-portal .cmc-history li { display: grid; grid-template-columns: 9.5rem minmax(0, 1fr); gap: .25rem 1rem; padding: .6rem 0; border-bottom: 1px solid var(--cmc-border); }
.cmc-portal .cmc-history__at { color: var(--cmc-muted); font-size: .9rem; font-variant-numeric: tabular-nums; }
.cmc-portal .cmc-history__what { display: flex; flex-direction: column; gap: .1rem; }
.cmc-portal .cmc-history__detail { color: var(--cmc-muted); font-size: .92rem; }
@media (max-width: 640px) { .cmc-portal .cmc-history li { grid-template-columns: 1fr; } }
/* FB11-3: compact history – one line per entry */
.cmc-portal .cmc-history li { grid-template-columns: 7.5rem minmax(0, 1fr); padding: .35rem 0; font-size: .93rem; gap: .1rem .75rem; }
.cmc-portal .cmc-history__what { display: block; }
.cmc-portal .cmc-history__detail { font-size: inherit; }
.cmc-portal .cmc-history__at { font-size: .85rem; padding-top: .05rem; }
