/* ILIAS 8 host theme: rely on inherited text colors and Bootstrap/ILIAS buttons. */
.mecal{max-width:100%;min-width:0;padding:1rem;color:inherit;background:inherit;border:1px solid var(--il-border-color,var(--bs-border-color,#d8d8d8));border-radius:var(--bs-border-radius,4px)}
.mecal *, .mecal *::before, .mecal *::after{box-sizing:border-box}
.mecal-calendar-title{margin-top:0}
.mecal-toolbar{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.6rem;margin-bottom:1rem}
.mecal-navigation,.mecal-views{display:flex;align-items:center;gap:.25rem}
.mecal .mecal-toolbar .btn[aria-pressed="true"],.mecal .mecal-toolbar button[aria-pressed="true"]{box-shadow:inset 0 -2px currentColor;font-weight:700}
.mecal-period{margin:0;text-align:center;font-size:1.15em}
.mecal-content,.mecal-grid{max-width:100%;overflow-x:auto}
.mecal-month-grid,.mecal-week-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));min-width:490px;border-top:1px solid var(--il-border-color,var(--bs-border-color,#d8d8d8));border-left:1px solid var(--il-border-color,var(--bs-border-color,#d8d8d8))}
.mecal-weekday,.mecal-day{min-width:0;padding:.45rem;border-right:1px solid var(--il-border-color,var(--bs-border-color,#d8d8d8));border-bottom:1px solid var(--il-border-color,var(--bs-border-color,#d8d8d8))}
.mecal-weekday{text-align:center;font-weight:700;background:var(--il-background-color,var(--bs-tertiary-bg,transparent))}
.mecal-day{min-height:95px;overflow-wrap:anywhere;background:var(--il-main-bg-color,var(--bs-body-bg,transparent))}
.mecal-week-grid .mecal-day{min-height:150px}
.mecal-other-month{opacity:.58;background:var(--bs-secondary-bg,transparent)}
.mecal-current-day{outline:2px solid var(--il-link-color,var(--bs-link-color,currentColor));outline-offset:-2px}
.mecal-day-number{font-weight:600;margin-bottom:.35rem}
.mecal-event{display:block;width:100%;margin:.2rem 0;padding:.3rem .45rem;border:1px solid var(--il-link-color,var(--bs-link-color,currentColor));border-radius:var(--bs-border-radius,3px);background:var(--bs-secondary-bg,transparent);color:var(--il-link-color,var(--bs-link-color,inherit));text-align:left;overflow-wrap:anywhere;cursor:pointer}
.mecal-event:hover,.mecal-event:focus-visible{text-decoration:underline;outline:2px solid currentColor;outline-offset:1px}
.mecal-list-day{padding-bottom:.75rem;margin-bottom:.75rem;border-bottom:1px solid var(--il-border-color,var(--bs-border-color,#d8d8d8))}
.mecal-undated{margin-top:1.25rem;padding-top:.75rem;border-top:1px solid var(--il-border-color,var(--bs-border-color,#d8d8d8))}
.mecal-dialog{position:fixed;width:min(90vw,600px);max-height:85vh;overflow-y:auto;padding:1.5rem;border:1px solid var(--il-border-color,var(--bs-border-color,#d8d8d8));border-radius:var(--bs-border-radius,4px);color:inherit;background:var(--bs-body-bg,Canvas)}
.mecal-dialog::backdrop{background:rgb(0 0 0 / .5)}
.mecal-close-form{position:absolute;right:.5rem;top:.4rem;margin:0}
.mecal-close{border:0;background:transparent;color:inherit;cursor:pointer;font-size:1.7rem;line-height:1;min-width:2.2rem;min-height:2.2rem}
.mecal-close:hover,.mecal-close:focus-visible{outline:1px solid currentColor}
.mecal-dialog-title{font-size:1.5rem;font-weight:700;line-height:1.3;margin:0 2.5rem 1rem 0;padding-bottom:.7rem;border-bottom:3px solid var(--il-link-color,var(--bs-link-color,currentColor));color:inherit}
.mecal-course-summary{display:grid;gap:.75rem;margin:.75rem 0}
.mecal-info-row dt{font-weight:700;margin-bottom:.2rem}
.mecal-info-row dd{margin:0;white-space:pre-line;overflow-wrap:anywhere}
.mecal-enrolled{font-weight:600;border-left:3px solid currentColor;padding:.65rem .8rem;background:var(--bs-secondary-bg,transparent)}
.mecal-booking{display:inline-block;margin:.5rem 0}
.mecal-empty{padding:.65rem}
@media(max-width:600px){.mecal-month-grid,.mecal-week-grid{min-width:490px}}

/* 0.1.21: Scoped visual reset against host styles that target .calstd and .btn. */
.mecal .mecal-month-grid, .mecal .mecal-week-grid {display:grid !important;grid-template-columns:repeat(7,minmax(0,1fr)) !important;gap:0 !important;align-items:stretch !important;}
.mecal .mecal-month-grid > .mecal-day, .mecal .mecal-month-grid > .mecal-weekday,
.mecal .mecal-week-grid > .mecal-day, .mecal .mecal-week-grid > .mecal-weekday {float:none !important;position:relative !important;display:block !important;width:auto !important;height:auto !important;margin:0 !important;box-sizing:border-box !important;}
.mecal .mecal-month-grid > .mecal-day, .mecal .mecal-week-grid > .mecal-day {min-height:105px !important;border-right:1px solid var(--bs-border-color,#c7cdd4) !important;border-bottom:1px solid var(--bs-border-color,#c7cdd4) !important;padding:.55rem !important;background:var(--bs-body-bg,#fff) !important;color:var(--bs-body-color,inherit) !important;}
.mecal .mecal-month-grid > .mecal-weekday, .mecal .mecal-week-grid > .mecal-weekday {padding:.6rem .3rem !important;border-right:1px solid var(--bs-border-color,#c7cdd4) !important;border-bottom:1px solid var(--bs-border-color,#c7cdd4) !important;background:var(--bs-secondary-bg,#f4f5f6) !important;color:var(--bs-body-color,inherit) !important;text-align:center !important;font-weight:600 !important;}
.mecal .mecal-month-grid, .mecal .mecal-week-grid {border-top:1px solid var(--bs-border-color,#c7cdd4) !important;border-left:1px solid var(--bs-border-color,#c7cdd4) !important;}
.mecal .mecal-day.mecal-current-day {box-shadow:inset 0 0 0 2px var(--il-link-color,var(--bs-primary,#477aab)) !important;outline:0 !important;}
.mecal .mecal-day.mecal-other-month {background:var(--bs-tertiary-bg,#f7f8f9) !important;color:var(--bs-secondary-color,#667) !important;opacity:1 !important;}
.mecal .mecal-day-number {font-size:.85rem;font-weight:700;margin:0 0 .45rem;text-align:right;}
.mecal .mecal-event {display:block !important;width:100% !important;max-width:100% !important;border-radius:4px !important;padding:.35rem .5rem !important;margin:.25rem 0 !important;text-align:left !important;line-height:1.35 !important;font-size:.86rem !important;white-space:normal !important;}
.mecal .mecal-dialog {padding:0 !important;border:1px solid var(--bs-border-color,#d1d5db) !important;border-radius:10px !important;box-shadow:0 18px 50px rgb(0 0 0 / .2) !important;background:var(--bs-body-bg,#fff) !important;color:var(--bs-body-color,#252525) !important;width:min(92vw,640px) !important;max-height:min(85vh,820px) !important;overflow:auto !important;}
.mecal .mecal-dialog::backdrop {background:rgb(20 28 40 / .42)}
.mecal .mecal-dialog .mecal-body {padding:1.4rem 1.65rem 1.7rem !important;line-height:1.55 !important;}
.mecal .mecal-dialog-title {font-size:1.35rem !important;line-height:1.35 !important;font-weight:700 !important;margin:0 2rem 1rem 0 !important;padding:0 0 .85rem !important;border-bottom:1px solid var(--bs-border-color,#d1d5db) !important;color:var(--bs-body-color,inherit) !important;}
.mecal .mecal-course-summary {display:block !important;margin:0 !important;}
.mecal .mecal-info-row {padding:.7rem 0 !important;border-bottom:1px solid var(--bs-border-color,#e0e3e7) !important;}
.mecal .mecal-info-row:last-child {border-bottom:0 !important}
.mecal .mecal-info-row dt {display:block !important;font-size:.81rem !important;color:var(--bs-secondary-color,#636a73) !important;font-weight:650 !important;margin:0 0 .25rem !important}
.mecal .mecal-info-row dd {display:block !important;margin:0 !important;white-space:pre-line !important;overflow-wrap:anywhere !important;line-height:1.55 !important}
.mecal .mecal-enrolled {margin:1rem 0 0 !important;border-left:3px solid var(--bs-success,#42834e) !important;padding:.6rem .8rem !important;background:var(--bs-secondary-bg,#f4f5f6) !important;font-weight:500 !important;}
.mecal .mecal-close-form {position:absolute !important;right:.65rem !important;top:.65rem !important;z-index:2 !important;}
.mecal .mecal-close {width:2.1rem !important;height:2.1rem !important;display:grid !important;place-items:center !important;font-size:1.45rem !important;border:0 !important;border-radius:5px !important;line-height:1 !important;}
.mecal .mecal-close:hover {background:var(--bs-secondary-bg,#eef0f2) !important}
@media(max-width:640px){.mecal .mecal-dialog .mecal-body{padding:1.1rem !important}.mecal .mecal-month-grid,.mecal .mecal-week-grid{min-width:630px !important}}

/* Metadata categories: controlled colors, independent of user supplied values. */
.mecal .mecal-event[class*="mecal-color-"]:not(.mecal-color-none) {color:#fff !important;border-color:transparent !important;font-weight:600;}
.mecal .mecal-color-0{background:#255d96 !important}
.mecal .mecal-color-1{background:#7e3b83 !important}
.mecal .mecal-color-2{background:#23734a !important}
.mecal .mecal-color-3{background:#965013 !important}
.mecal .mecal-color-4{background:#a02949 !important}
.mecal .mecal-color-5{background:#286b79 !important}
.mecal .mecal-color-6{background:#624d9a !important}
.mecal .mecal-color-7{background:#66552b !important}
.mecal-legend{margin:1rem 0;padding:.75rem;border:1px solid var(--bs-border-color,#d8d8d8);border-radius:var(--bs-border-radius,4px)}
.mecal-legend h4{margin:.1rem 0 .5rem;font-size:1rem}
.mecal-legend ul{list-style:none;display:flex;flex-wrap:wrap;gap:.5rem 1.2rem;margin:0;padding:0}
.mecal-legend li{display:flex;gap:.4rem;align-items:center;font-size:.9rem}
.mecal-swatch{display:inline-block;flex:none;width:.95rem;height:.95rem;border-radius:3px;border:1px solid rgb(0 0 0 / .1)}

/* Align the session participation message with its ILIAS deregistration action. */
.mecal .mecal-participation-row {display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-top:1rem;flex-wrap:wrap;}
.mecal .mecal-participation-row .mecal-enrolled {flex:1 1 16rem;min-width:0;margin:0 !important;}
.mecal .mecal-participation-row .mecal-unregister {flex:0 0 auto;white-space:nowrap;margin:0 !important;}

/* Responsive calendar: no horizontal-scrolling 630px grid on smartphones. */
.mecal-mobile-day-select,.mecal-mobile-event-count,.mecal-mobile-agenda-host,.mecal-mobile-weekday{display:none}
@media(max-width:767px){
  .mecal{padding:.65rem !important;overflow:hidden}
  .mecal-calendar-title{font-size:1.15rem;overflow-wrap:anywhere}
  .mecal-toolbar{display:grid !important;grid-template-columns:minmax(0,1fr);gap:.75rem !important;margin-bottom:.75rem}
  .mecal-navigation{display:flex;flex-wrap:wrap;min-width:0;gap:.3rem !important}
  .mecal-navigation .btn,.mecal-views .btn{min-height:44px;touch-action:manipulation}
  .mecal-navigation .mecal-copy-ical{max-width:100%;white-space:normal;text-align:center;overflow-wrap:anywhere}
  .mecal-period{grid-row:1;text-align:left !important;font-size:1.1rem !important;overflow-wrap:anywhere}
  .mecal-views{display:grid !important;grid-template-columns:repeat(3,minmax(0,1fr));width:100%;gap:0 !important}
  .mecal-views .btn{min-width:0;padding:.5rem .2rem;white-space:normal}
  .mecal-content,.mecal-grid{overflow-x:visible !important;width:100%;min-width:0}
  .mecal .mecal-month-grid{min-width:0 !important;width:100%;grid-template-columns:repeat(7,minmax(0,1fr)) !important}
  .mecal .mecal-month-grid > .mecal-day{min-height:63px !important;padding:.2rem !important;display:flex !important;flex-direction:column;align-items:center;justify-content:flex-start}
  .mecal .mecal-month-grid > .mecal-weekday{padding:.4rem 0 !important;font-size:.7rem;overflow:hidden}
  .mecal-month-grid .mecal-day-number{display:none}
  .mecal-month-grid .mecal-event{display:none !important}
  .mecal-month-grid .mecal-mobile-day-select{display:flex;width:100%;min-height:38px;align-items:center;justify-content:center;border:0;border-radius:4px;background:transparent;color:inherit;font:inherit;font-weight:600;cursor:pointer;touch-action:manipulation}
  .mecal-month-grid .mecal-mobile-day-select[aria-pressed="true"]{outline:2px solid var(--il-link-color,var(--bs-primary,currentColor));outline-offset:-2px;background:var(--bs-secondary-bg,transparent)}
  .mecal-month-grid .mecal-mobile-event-count{display:block;min-width:1.15rem;text-align:center;line-height:1.15rem;font-size:.68rem;border-radius:1rem;background:var(--il-link-color,var(--bs-primary,#34699a));color:#fff;font-weight:700}
  .mecal-mobile-agenda-host{display:block;margin-top:.75rem}
  .mecal-mobile-agenda{padding:.7rem;border:1px solid var(--bs-border-color,#d8d8d8);border-radius:var(--bs-border-radius,5px)}
  .mecal-mobile-agenda-title{margin:0 0 .65rem;font-size:1rem;font-weight:700}
  .mecal-mobile-agenda .mecal-event,.mecal-list .mecal-event{min-height:44px !important;padding:.7rem !important}
  .mecal .mecal-week-grid{min-width:0 !important;width:100%;display:flex !important;flex-direction:column;border-top:0 !important}
  .mecal-week-grid > .mecal-weekday{display:none !important}
  .mecal .mecal-week-grid > .mecal-day{min-height:60px !important;width:100% !important;padding:.65rem !important;border-top:1px solid var(--bs-border-color,#c7cdd4)}
  .mecal-week-grid .mecal-day-number{display:inline-block !important;margin-right:.5rem !important;text-align:left !important}
  .mecal-mobile-weekday{display:inline-block;margin-bottom:.4rem;font-weight:700}
  .mecal-list-day{min-width:0;overflow-wrap:anywhere}
  .mecal-legend{padding:.65rem}
  .mecal-legend ul{gap:.55rem !important;flex-direction:column;align-items:flex-start}
  .mecal .mecal-dialog{width:calc(100vw - 1rem) !important;max-width:calc(100vw - 1rem) !important;max-height:calc(100dvh - 1rem) !important;margin:auto !important}
  .mecal .mecal-dialog .mecal-body{padding:1.1rem .9rem !important}
  .mecal .mecal-dialog-title{font-size:1.2rem !important;padding-right:1rem !important}
  .mecal .mecal-participation-row{align-items:stretch;gap:.65rem}
  .mecal .mecal-participation-row .mecal-enrolled{flex:1 1 100%}
  .mecal .mecal-participation-row .mecal-unregister{width:100%;min-height:44px;display:flex;align-items:center;justify-content:center}
  .mecal .mecal-booking{max-width:100%;min-height:44px;white-space:normal;overflow-wrap:anywhere}
  .mecal-undated ul{padding-left:1.2rem}
}
@media(max-width:360px){
  .mecal .mecal-month-grid > .mecal-day{min-height:58px !important;padding:.1rem !important}
  .mecal-month-grid .mecal-mobile-day-select{font-size:.8rem}
  .mecal-navigation .mecal-copy-ical{flex:1 1 100%}
}
/* The non-JavaScript fallback must never hide appointment buttons. */
@media(max-width:767px){
  .mecal .mecal-static{max-width:100%;overflow-x:auto}
  .mecal .mecal-static .mecal-month-grid{min-width:490px !important}
  .mecal .mecal-static .mecal-month-grid .mecal-event{display:block !important}
  .mecal .mecal-static .mecal-month-grid .mecal-day-number{display:block}
  .mecal .mecal-static .mecal-month-grid > .mecal-day{min-height:95px !important;align-items:stretch}
}

/* Match the enrolled notice layout, but distinguish unavailable self-registration. */
.mecal .mecal-not-available {
  border-left-color: var(--bs-danger, #c53434) !important;
}
