{"version":3,"sources":["admin/calendar/index.scss","admin/calendar/index.css"],"names":[],"mappings":"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","file":"pages/admin/calendar/index.bundle.css","sourcesContent":["// Admin Marketing Calendar Styles\n\n// Current time / today accent color\n$calendar-now-color: #F44336;\n\n// Campaign type colors (match JS constants)\n$campaign-email-color: #2196F3;\n$campaign-push-color: #4CAF50;\n\n// ============================================\n// Fix: viewport-locked layout sets display:flex on all direct children,\n// which overrides Bootstrap modal's default display:none.\n// Restore Bootstrap's default: hidden unless .show is present.\n// ============================================\n#campaign-editor-modal:not(.show),\n#campaign-results-modal:not(.show) {\n  display: none !important;\n}\n\n// ============================================\n// Calendar Root\n// ============================================\n#calendar-root {\n  min-height: 0;\n}\n\n// ============================================\n// Toolbar\n// ============================================\n#calendar-toolbar {\n  gap: 0.5rem;\n  flex-wrap: wrap;\n}\n\n.calendar-toolbar-nav {\n  display: flex;\n  align-items: center;\n  gap: 0.25rem;\n}\n\n.calendar-toolbar-period {\n  font-size: 1.1rem;\n  font-weight: 600;\n  text-align: center;\n  min-width: 200px;\n}\n\n.calendar-toolbar-views .btn {\n  padding: 0.25rem 0.75rem;\n  font-size: 0.8rem;\n}\n\n// ============================================\n// Calendar Grid (shared)\n// ============================================\n#calendar-grid {\n  display: flex;\n  flex-direction: column;\n  min-height: 0;\n}\n\n// Day-of-week header\n.calendar-day-header {\n  display: grid;\n  grid-template-columns: repeat(7, 1fr);\n  text-align: center;\n  font-weight: 600;\n  font-size: 0.75rem;\n  text-transform: uppercase;\n  color: var(--bs-secondary-color);\n  padding: 0.5rem 0;\n  border-bottom: 1px solid var(--bs-border-color);\n  flex-shrink: 0;\n}\n\n// ============================================\n// Month View\n// ============================================\n.calendar-month {\n  display: grid;\n  grid-template-columns: repeat(7, 1fr);\n  grid-template-rows: repeat(auto-fill, 1fr);\n  flex-grow: 1;\n  min-height: 0;\n}\n\n.calendar-cell {\n  border-right: 1px solid var(--bs-border-color);\n  border-bottom: 1px solid var(--bs-border-color);\n  padding: 0.25rem;\n  overflow-y: auto;\n  overflow-x: hidden;\n  min-height: 80px;\n  position: relative;\n  cursor: pointer;\n  transition: background-color 0.15s;\n\n  &:nth-child(7n) {\n    border-right: none;\n  }\n\n  &:hover {\n    background-color: var(--bs-tertiary-bg);\n  }\n}\n\n.calendar-cell--today {\n  background-color: rgba($calendar-now-color, 0.05);\n\n  .calendar-cell-date {\n    background-color: $calendar-now-color;\n    color: #fff;\n    border-radius: 50%;\n    width: 1.5rem;\n    height: 1.5rem;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n  }\n}\n\n.calendar-cell--outside {\n  opacity: 0.35;\n}\n\n.calendar-cell--drag-over {\n  background-color: rgba(var(--bs-primary-rgb), 0.1) !important;\n}\n\n.calendar-cell-date {\n  font-size: 0.8rem;\n  font-weight: 500;\n  margin-bottom: 0.125rem;\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  width: 1.5rem;\n  height: 1.5rem;\n}\n\n.calendar-cell-events {\n  display: flex;\n  flex-direction: column;\n  gap: 1px;\n}\n\n.calendar-cell-more {\n  font-size: 0.7rem;\n  color: var(--bs-secondary-color);\n  cursor: pointer;\n  padding: 0 0.25rem;\n\n  &:hover {\n    color: var(--bs-primary);\n  }\n}\n\n// ============================================\n// Week View\n// ============================================\n.calendar-week-header {\n  display: grid;\n  grid-template-columns: 50px repeat(7, 1fr);\n  border-bottom: 1px solid var(--bs-border-color);\n  flex-shrink: 0;\n}\n\n.calendar-week-header-cell {\n  text-align: center;\n  padding: 0.5rem 0.25rem;\n  font-size: 0.75rem;\n  font-weight: 600;\n  text-transform: uppercase;\n  color: var(--bs-secondary-color);\n\n  .calendar-week-header-date {\n    display: block;\n    font-size: 1.25rem;\n    font-weight: 700;\n    color: var(--bs-body-color);\n  }\n\n  &.calendar-cell--today .calendar-week-header-date {\n    background-color: $calendar-now-color;\n    color: #fff;\n    border-radius: 50%;\n    width: 2rem;\n    height: 2rem;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    margin: 0 auto;\n  }\n}\n\n.calendar-week-allday {\n  display: grid;\n  grid-template-columns: 50px repeat(7, 1fr);\n  border-bottom: 1px solid var(--bs-border-color);\n  min-height: 1.5rem;\n  flex-shrink: 0;\n\n  .calendar-week-time-label {\n    font-size: 0.65rem;\n    color: var(--bs-secondary-color);\n    padding: 0.125rem 0.25rem;\n    text-align: right;\n  }\n}\n\n.calendar-week-body {\n  display: grid;\n  grid-template-columns: 50px repeat(7, 1fr);\n  flex-grow: 1;\n  overflow-y: auto;\n  min-height: 0;\n}\n\n.calendar-week-time-col {\n  display: flex;\n  flex-direction: column;\n}\n\n.calendar-week-time-label {\n  height: 60px;\n  font-size: 0.65rem;\n  color: var(--bs-secondary-color);\n  text-align: right;\n  padding-right: 0.5rem;\n  padding-top: 0;\n  transform: translateY(-0.4rem);\n}\n\n.calendar-week-day-col {\n  position: relative;\n  border-left: 1px solid var(--bs-border-color);\n}\n\n.calendar-week-time-slot {\n  height: 60px;\n  border-bottom: 1px solid var(--bs-border-color-translucent);\n  position: relative;\n\n  &:hover {\n    background-color: var(--bs-tertiary-bg);\n  }\n}\n\n// Now line (real-time red indicator)\n.calendar-now-line {\n  position: absolute;\n  left: 0;\n  right: 0;\n  height: 2px;\n  background-color: $calendar-now-color;\n  z-index: 2;\n  pointer-events: none;\n\n  &::before {\n    content: '';\n    position: absolute;\n    left: -4px;\n    top: -4px;\n    width: 10px;\n    height: 10px;\n    border-radius: 50%;\n    background-color: $calendar-now-color;\n  }\n}\n\n.calendar-week-event {\n  position: absolute;\n  left: 2px;\n  right: 2px;\n  border-radius: 4px;\n  padding: 0.125rem 0.25rem;\n  font-size: 0.7rem;\n  overflow: hidden;\n  cursor: pointer;\n  z-index: 1;\n  color: #fff;\n  border-left: 3px solid rgba(0, 0, 0, 0.2);\n\n  &:hover {\n    opacity: 0.85;\n  }\n}\n\n// ============================================\n// Day View\n// ============================================\n.calendar-day-header-single {\n  text-align: center;\n  padding: 0.5rem;\n  font-size: 1rem;\n  font-weight: 600;\n  border-bottom: 1px solid var(--bs-border-color);\n  flex-shrink: 0;\n}\n\n.calendar-day-body {\n  display: grid;\n  grid-template-columns: 50px 1fr;\n  flex-grow: 1;\n  overflow-y: auto;\n  min-height: 0;\n}\n\n.calendar-day-col {\n  position: relative;\n}\n\n// ============================================\n// Year View\n// ============================================\n.calendar-year {\n  display: grid;\n  grid-template-columns: repeat(4, 1fr);\n  gap: 1rem;\n  padding: 0.5rem;\n  overflow-y: auto;\n  flex-grow: 1;\n  min-height: 0;\n}\n\n.calendar-mini-month {\n  cursor: pointer;\n  padding: 0.5rem;\n  border-radius: 0.5rem;\n  transition: background-color 0.15s;\n\n  &:hover {\n    background-color: var(--bs-tertiary-bg);\n  }\n}\n\n.calendar-mini-month-title {\n  text-align: center;\n  font-weight: 600;\n  font-size: 0.85rem;\n  margin-bottom: 0.25rem;\n}\n\n.calendar-mini-month-grid {\n  display: grid;\n  grid-template-columns: repeat(7, 1fr);\n  text-align: center;\n  font-size: 0.65rem;\n  gap: 1px;\n}\n\n.calendar-mini-day-header {\n  color: var(--bs-secondary-color);\n  font-weight: 600;\n  padding: 0.125rem 0;\n}\n\n.calendar-mini-day {\n  padding: 0.125rem 0;\n  border-radius: 50%;\n  position: relative;\n  aspect-ratio: 1;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n\n  &.calendar-cell--today {\n    background-color: $calendar-now-color;\n    color: #fff;\n    opacity: 1;\n  }\n\n  &.calendar-cell--outside {\n    visibility: hidden;\n  }\n\n  &.has-events::after {\n    content: '';\n    position: absolute;\n    bottom: 0;\n    left: 50%;\n    transform: translateX(-50%);\n    width: 4px;\n    height: 4px;\n    border-radius: 50%;\n    background-color: $calendar-now-color;\n  }\n}\n\n// ============================================\n// Event Pills (Month View)\n// CSS uses \"event\" as a calendar UI term; the data model uses \"campaign\"\n// ============================================\n.calendar-event {\n  display: flex;\n  align-items: center;\n  gap: 0.25rem;\n  padding: 0.0625rem 0.25rem;\n  border-radius: 3px;\n  font-size: 0.7rem;\n  line-height: 1.3;\n  height: 1.25rem;\n  box-sizing: border-box;\n  border: 1px solid transparent;\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  cursor: pointer;\n  color: #fff;\n  transition: opacity 0.15s;\n\n  &:hover {\n    opacity: 0.85;\n  }\n}\n\n.calendar-event--dragging {\n  opacity: 0.4 !important;\n}\n\n// During drag, disable pointer-events on all events so drops land on time slots\n.calendar-grid--dragging {\n  .calendar-event,\n  .calendar-week-event {\n    pointer-events: none;\n  }\n}\n\n.calendar-event-time {\n  font-weight: 600;\n  font-size: 0.65rem;\n  flex-shrink: 0;\n}\n\n.calendar-event-type-icon {\n  flex-shrink: 0;\n  opacity: 0.8;\n}\n\n.calendar-event-title {\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n\n// ============================================\n// Campaign Status & Recurrence Styles\n// ============================================\n\n// Sent campaigns: faded with strikethrough-like visual\n.calendar-event--sent {\n  cursor: default;\n\n  .calendar-event-title {\n    text-decoration: line-through;\n    text-decoration-thickness: 1px;\n  }\n}\n\n// Failed campaigns: red border accent\n.calendar-event--failed {\n  cursor: pointer;\n  border-left: 3px solid $calendar-now-color !important;\n  background-color: $calendar-now-color !important;\n}\n\n// Virtual recurring occurrences: dashed border, slightly transparent\n.calendar-event--virtual {\n  border-style: dashed;\n  border-color: rgba(255, 255, 255, 0.5);\n  opacity: 0.7;\n}\n\n// Recurring template/history: subtle left border indicator\n.calendar-event--recurring {\n  border-left: 3px solid rgba(255, 255, 255, 0.6) !important;\n}\n\n// ============================================\n// Campaign Preview (Email)\n// ============================================\n.email-preview {\n  max-width: 600px;\n  margin: 0 auto;\n}\n\n.email-preview-header {\n  border-bottom: 1px solid var(--bs-border-color);\n  padding-bottom: 0.75rem;\n  margin-bottom: 1rem;\n}\n\n.email-preview-subject {\n  font-size: 1.1rem;\n  font-weight: 600;\n}\n\n.email-preview-preheader {\n  font-size: 0.85rem;\n  color: var(--bs-secondary-color);\n  margin-top: 0.25rem;\n}\n\n.email-preview-body {\n  font-size: 0.9rem;\n  line-height: 1.6;\n\n  h1, h2, h3, h4, h5, h6 {\n    margin-top: 1rem;\n    margin-bottom: 0.5rem;\n  }\n\n  h1 { font-size: 1.5rem; }\n  h2 { font-size: 1.25rem; }\n  h3 { font-size: 1.1rem; }\n\n  p { margin-bottom: 0.75rem; }\n\n  a { color: var(--bs-primary); }\n\n  ul, ol {\n    padding-left: 1.5rem;\n    margin-bottom: 0.75rem;\n  }\n\n  blockquote {\n    border-left: 3px solid var(--bs-border-color);\n    padding-left: 1rem;\n    color: var(--bs-secondary-color);\n    margin: 0.75rem 0;\n  }\n\n  code {\n    background-color: var(--bs-tertiary-bg);\n    padding: 0.125rem 0.375rem;\n    border-radius: 3px;\n    font-size: 0.85em;\n  }\n\n  pre {\n    background-color: var(--bs-tertiary-bg);\n    padding: 0.75rem;\n    border-radius: 6px;\n    overflow-x: auto;\n\n    code {\n      background: none;\n      padding: 0;\n    }\n  }\n\n  img {\n    max-width: 100%;\n    height: auto;\n    border-radius: 4px;\n  }\n}\n\n.email-preview-disclaimer {\n  border-top: 1px solid var(--bs-border-color);\n  padding-top: 0.75rem;\n}\n\n// ============================================\n// Campaign Preview (Push Notification)\n// ============================================\n.push-preview-frame {\n  border: 1px solid var(--bs-border-color);\n  border-radius: 0.75rem;\n  padding: 0.5rem;\n  background-color: var(--bs-dark);\n}\n\n.push-preview-screen {\n  border-radius: 0.5rem;\n  padding: 0.5rem;\n}\n\n.push-preview-status-bar {\n  display: flex;\n  justify-content: space-between;\n  font-size: 0.75rem;\n  color: rgba(255, 255, 255, 0.5);\n  margin-bottom: 0.5rem;\n}\n\n.push-preview-notification {\n  background-color: var(--bs-secondary-bg);\n  border-radius: 0.5rem;\n  padding: 0.75rem;\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  cursor: pointer;\n\n  &:hover {\n    opacity: 0.9;\n  }\n}\n\n// ============================================\n// List View\n// ============================================\n.calendar-list {\n  flex-grow: 1;\n  overflow-y: auto;\n  min-height: 0;\n}\n\n.calendar-list table {\n  width: 100%;\n  margin-bottom: 0;\n}\n\n.calendar-list-date-header td {\n  font-weight: 600;\n  font-size: 0.8rem;\n  text-transform: uppercase;\n  color: var(--bs-secondary-color);\n  padding: 0.75rem 0.5rem 0.25rem;\n  border-bottom: 2px solid var(--bs-border-color);\n  position: sticky;\n  top: 0;\n  background-color: var(--bs-body-bg);\n  z-index: 1;\n}\n\n.calendar-list-row {\n  cursor: pointer;\n  transition: background-color 0.15s;\n\n  &:hover {\n    background-color: var(--bs-tertiary-bg);\n  }\n\n  td {\n    padding: 0.5rem;\n    border-bottom: 1px solid var(--bs-border-color-translucent);\n    font-size: 0.85rem;\n    vertical-align: middle;\n  }\n}\n\n.calendar-list-empty {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  flex-grow: 1;\n  color: var(--bs-secondary-color);\n}\n\n// ============================================\n// Responsive\n// ============================================\n@media (max-width: 767.98px) {\n  .calendar-year {\n    grid-template-columns: repeat(2, 1fr);\n  }\n\n  .calendar-toolbar-period {\n    min-width: auto;\n    font-size: 0.95rem;\n  }\n\n  .calendar-cell {\n    min-height: 60px;\n  }\n}\n\n@media (max-width: 575.98px) {\n  .calendar-year {\n    grid-template-columns: repeat(1, 1fr);\n  }\n}\n","#campaign-editor-modal:not(.show),\n#campaign-results-modal:not(.show) {\n  display: none !important;\n}\n\n#calendar-root {\n  min-height: 0;\n}\n\n#calendar-toolbar {\n  gap: 0.5rem;\n  flex-wrap: wrap;\n}\n\n.calendar-toolbar-nav {\n  display: flex;\n  align-items: center;\n  gap: 0.25rem;\n}\n\n.calendar-toolbar-period {\n  font-size: 1.1rem;\n  font-weight: 600;\n  text-align: center;\n  min-width: 200px;\n}\n\n.calendar-toolbar-views .btn {\n  padding: 0.25rem 0.75rem;\n  font-size: 0.8rem;\n}\n\n#calendar-grid {\n  display: flex;\n  flex-direction: column;\n  min-height: 0;\n}\n\n.calendar-day-header {\n  display: grid;\n  grid-template-columns: repeat(7, 1fr);\n  text-align: center;\n  font-weight: 600;\n  font-size: 0.75rem;\n  text-transform: uppercase;\n  color: var(--bs-secondary-color);\n  padding: 0.5rem 0;\n  border-bottom: 1px solid var(--bs-border-color);\n  flex-shrink: 0;\n}\n\n.calendar-month {\n  display: grid;\n  grid-template-columns: repeat(7, 1fr);\n  grid-template-rows: repeat(auto-fill, 1fr);\n  flex-grow: 1;\n  min-height: 0;\n}\n\n.calendar-cell {\n  border-right: 1px solid var(--bs-border-color);\n  border-bottom: 1px solid var(--bs-border-color);\n  padding: 0.25rem;\n  overflow-y: auto;\n  overflow-x: hidden;\n  min-height: 80px;\n  position: relative;\n  cursor: pointer;\n  transition: background-color 0.15s;\n}\n.calendar-cell:nth-child(7n) {\n  border-right: none;\n}\n.calendar-cell:hover {\n  background-color: var(--bs-tertiary-bg);\n}\n\n.calendar-cell--today {\n  background-color: rgba(244, 67, 54, 0.05);\n}\n.calendar-cell--today .calendar-cell-date {\n  background-color: #F44336;\n  color: #fff;\n  border-radius: 50%;\n  width: 1.5rem;\n  height: 1.5rem;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n\n.calendar-cell--outside {\n  opacity: 0.35;\n}\n\n.calendar-cell--drag-over {\n  background-color: rgba(var(--bs-primary-rgb), 0.1) !important;\n}\n\n.calendar-cell-date {\n  font-size: 0.8rem;\n  font-weight: 500;\n  margin-bottom: 0.125rem;\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  width: 1.5rem;\n  height: 1.5rem;\n}\n\n.calendar-cell-events {\n  display: flex;\n  flex-direction: column;\n  gap: 1px;\n}\n\n.calendar-cell-more {\n  font-size: 0.7rem;\n  color: var(--bs-secondary-color);\n  cursor: pointer;\n  padding: 0 0.25rem;\n}\n.calendar-cell-more:hover {\n  color: var(--bs-primary);\n}\n\n.calendar-week-header {\n  display: grid;\n  grid-template-columns: 50px repeat(7, 1fr);\n  border-bottom: 1px solid var(--bs-border-color);\n  flex-shrink: 0;\n}\n\n.calendar-week-header-cell {\n  text-align: center;\n  padding: 0.5rem 0.25rem;\n  font-size: 0.75rem;\n  font-weight: 600;\n  text-transform: uppercase;\n  color: var(--bs-secondary-color);\n}\n.calendar-week-header-cell .calendar-week-header-date {\n  display: block;\n  font-size: 1.25rem;\n  font-weight: 700;\n  color: var(--bs-body-color);\n}\n.calendar-week-header-cell.calendar-cell--today .calendar-week-header-date {\n  background-color: #F44336;\n  color: #fff;\n  border-radius: 50%;\n  width: 2rem;\n  height: 2rem;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  margin: 0 auto;\n}\n\n.calendar-week-allday {\n  display: grid;\n  grid-template-columns: 50px repeat(7, 1fr);\n  border-bottom: 1px solid var(--bs-border-color);\n  min-height: 1.5rem;\n  flex-shrink: 0;\n}\n.calendar-week-allday .calendar-week-time-label {\n  font-size: 0.65rem;\n  color: var(--bs-secondary-color);\n  padding: 0.125rem 0.25rem;\n  text-align: right;\n}\n\n.calendar-week-body {\n  display: grid;\n  grid-template-columns: 50px repeat(7, 1fr);\n  flex-grow: 1;\n  overflow-y: auto;\n  min-height: 0;\n}\n\n.calendar-week-time-col {\n  display: flex;\n  flex-direction: column;\n}\n\n.calendar-week-time-label {\n  height: 60px;\n  font-size: 0.65rem;\n  color: var(--bs-secondary-color);\n  text-align: right;\n  padding-right: 0.5rem;\n  padding-top: 0;\n  transform: translateY(-0.4rem);\n}\n\n.calendar-week-day-col {\n  position: relative;\n  border-left: 1px solid var(--bs-border-color);\n}\n\n.calendar-week-time-slot {\n  height: 60px;\n  border-bottom: 1px solid var(--bs-border-color-translucent);\n  position: relative;\n}\n.calendar-week-time-slot:hover {\n  background-color: var(--bs-tertiary-bg);\n}\n\n.calendar-now-line {\n  position: absolute;\n  left: 0;\n  right: 0;\n  height: 2px;\n  background-color: #F44336;\n  z-index: 2;\n  pointer-events: none;\n}\n.calendar-now-line::before {\n  content: \"\";\n  position: absolute;\n  left: -4px;\n  top: -4px;\n  width: 10px;\n  height: 10px;\n  border-radius: 50%;\n  background-color: #F44336;\n}\n\n.calendar-week-event {\n  position: absolute;\n  left: 2px;\n  right: 2px;\n  border-radius: 4px;\n  padding: 0.125rem 0.25rem;\n  font-size: 0.7rem;\n  overflow: hidden;\n  cursor: pointer;\n  z-index: 1;\n  color: #fff;\n  border-left: 3px solid rgba(0, 0, 0, 0.2);\n}\n.calendar-week-event:hover {\n  opacity: 0.85;\n}\n\n.calendar-day-header-single {\n  text-align: center;\n  padding: 0.5rem;\n  font-size: 1rem;\n  font-weight: 600;\n  border-bottom: 1px solid var(--bs-border-color);\n  flex-shrink: 0;\n}\n\n.calendar-day-body {\n  display: grid;\n  grid-template-columns: 50px 1fr;\n  flex-grow: 1;\n  overflow-y: auto;\n  min-height: 0;\n}\n\n.calendar-day-col {\n  position: relative;\n}\n\n.calendar-year {\n  display: grid;\n  grid-template-columns: repeat(4, 1fr);\n  gap: 1rem;\n  padding: 0.5rem;\n  overflow-y: auto;\n  flex-grow: 1;\n  min-height: 0;\n}\n\n.calendar-mini-month {\n  cursor: pointer;\n  padding: 0.5rem;\n  border-radius: 0.5rem;\n  transition: background-color 0.15s;\n}\n.calendar-mini-month:hover {\n  background-color: var(--bs-tertiary-bg);\n}\n\n.calendar-mini-month-title {\n  text-align: center;\n  font-weight: 600;\n  font-size: 0.85rem;\n  margin-bottom: 0.25rem;\n}\n\n.calendar-mini-month-grid {\n  display: grid;\n  grid-template-columns: repeat(7, 1fr);\n  text-align: center;\n  font-size: 0.65rem;\n  gap: 1px;\n}\n\n.calendar-mini-day-header {\n  color: var(--bs-secondary-color);\n  font-weight: 600;\n  padding: 0.125rem 0;\n}\n\n.calendar-mini-day {\n  padding: 0.125rem 0;\n  border-radius: 50%;\n  position: relative;\n  aspect-ratio: 1;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n.calendar-mini-day.calendar-cell--today {\n  background-color: #F44336;\n  color: #fff;\n  opacity: 1;\n}\n.calendar-mini-day.calendar-cell--outside {\n  visibility: hidden;\n}\n.calendar-mini-day.has-events::after {\n  content: \"\";\n  position: absolute;\n  bottom: 0;\n  left: 50%;\n  transform: translateX(-50%);\n  width: 4px;\n  height: 4px;\n  border-radius: 50%;\n  background-color: #F44336;\n}\n\n.calendar-event {\n  display: flex;\n  align-items: center;\n  gap: 0.25rem;\n  padding: 0.0625rem 0.25rem;\n  border-radius: 3px;\n  font-size: 0.7rem;\n  line-height: 1.3;\n  height: 1.25rem;\n  box-sizing: border-box;\n  border: 1px solid transparent;\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  cursor: pointer;\n  color: #fff;\n  transition: opacity 0.15s;\n}\n.calendar-event:hover {\n  opacity: 0.85;\n}\n\n.calendar-event--dragging {\n  opacity: 0.4 !important;\n}\n\n.calendar-grid--dragging .calendar-event,\n.calendar-grid--dragging .calendar-week-event {\n  pointer-events: none;\n}\n\n.calendar-event-time {\n  font-weight: 600;\n  font-size: 0.65rem;\n  flex-shrink: 0;\n}\n\n.calendar-event-type-icon {\n  flex-shrink: 0;\n  opacity: 0.8;\n}\n\n.calendar-event-title {\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n\n.calendar-event--sent {\n  cursor: default;\n}\n.calendar-event--sent .calendar-event-title {\n  text-decoration: line-through;\n  text-decoration-thickness: 1px;\n}\n\n.calendar-event--failed {\n  cursor: pointer;\n  border-left: 3px solid #F44336 !important;\n  background-color: #F44336 !important;\n}\n\n.calendar-event--virtual {\n  border-style: dashed;\n  border-color: rgba(255, 255, 255, 0.5);\n  opacity: 0.7;\n}\n\n.calendar-event--recurring {\n  border-left: 3px solid rgba(255, 255, 255, 0.6) !important;\n}\n\n.email-preview {\n  max-width: 600px;\n  margin: 0 auto;\n}\n\n.email-preview-header {\n  border-bottom: 1px solid var(--bs-border-color);\n  padding-bottom: 0.75rem;\n  margin-bottom: 1rem;\n}\n\n.email-preview-subject {\n  font-size: 1.1rem;\n  font-weight: 600;\n}\n\n.email-preview-preheader {\n  font-size: 0.85rem;\n  color: var(--bs-secondary-color);\n  margin-top: 0.25rem;\n}\n\n.email-preview-body {\n  font-size: 0.9rem;\n  line-height: 1.6;\n}\n.email-preview-body h1, .email-preview-body h2, .email-preview-body h3, .email-preview-body h4, .email-preview-body h5, .email-preview-body h6 {\n  margin-top: 1rem;\n  margin-bottom: 0.5rem;\n}\n.email-preview-body h1 {\n  font-size: 1.5rem;\n}\n.email-preview-body h2 {\n  font-size: 1.25rem;\n}\n.email-preview-body h3 {\n  font-size: 1.1rem;\n}\n.email-preview-body p {\n  margin-bottom: 0.75rem;\n}\n.email-preview-body a {\n  color: var(--bs-primary);\n}\n.email-preview-body ul, .email-preview-body ol {\n  padding-left: 1.5rem;\n  margin-bottom: 0.75rem;\n}\n.email-preview-body blockquote {\n  border-left: 3px solid var(--bs-border-color);\n  padding-left: 1rem;\n  color: var(--bs-secondary-color);\n  margin: 0.75rem 0;\n}\n.email-preview-body code {\n  background-color: var(--bs-tertiary-bg);\n  padding: 0.125rem 0.375rem;\n  border-radius: 3px;\n  font-size: 0.85em;\n}\n.email-preview-body pre {\n  background-color: var(--bs-tertiary-bg);\n  padding: 0.75rem;\n  border-radius: 6px;\n  overflow-x: auto;\n}\n.email-preview-body pre code {\n  background: none;\n  padding: 0;\n}\n.email-preview-body img {\n  max-width: 100%;\n  height: auto;\n  border-radius: 4px;\n}\n\n.email-preview-disclaimer {\n  border-top: 1px solid var(--bs-border-color);\n  padding-top: 0.75rem;\n}\n\n.push-preview-frame {\n  border: 1px solid var(--bs-border-color);\n  border-radius: 0.75rem;\n  padding: 0.5rem;\n  background-color: var(--bs-dark);\n}\n\n.push-preview-screen {\n  border-radius: 0.5rem;\n  padding: 0.5rem;\n}\n\n.push-preview-status-bar {\n  display: flex;\n  justify-content: space-between;\n  font-size: 0.75rem;\n  color: rgba(255, 255, 255, 0.5);\n  margin-bottom: 0.5rem;\n}\n\n.push-preview-notification {\n  background-color: var(--bs-secondary-bg);\n  border-radius: 0.5rem;\n  padding: 0.75rem;\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  cursor: pointer;\n}\n.push-preview-notification:hover {\n  opacity: 0.9;\n}\n\n.calendar-list {\n  flex-grow: 1;\n  overflow-y: auto;\n  min-height: 0;\n}\n\n.calendar-list table {\n  width: 100%;\n  margin-bottom: 0;\n}\n\n.calendar-list-date-header td {\n  font-weight: 600;\n  font-size: 0.8rem;\n  text-transform: uppercase;\n  color: var(--bs-secondary-color);\n  padding: 0.75rem 0.5rem 0.25rem;\n  border-bottom: 2px solid var(--bs-border-color);\n  position: sticky;\n  top: 0;\n  background-color: var(--bs-body-bg);\n  z-index: 1;\n}\n\n.calendar-list-row {\n  cursor: pointer;\n  transition: background-color 0.15s;\n}\n.calendar-list-row:hover {\n  background-color: var(--bs-tertiary-bg);\n}\n.calendar-list-row td {\n  padding: 0.5rem;\n  border-bottom: 1px solid var(--bs-border-color-translucent);\n  font-size: 0.85rem;\n  vertical-align: middle;\n}\n\n.calendar-list-empty {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  flex-grow: 1;\n  color: var(--bs-secondary-color);\n}\n\n@media (max-width: 767.98px) {\n  .calendar-year {\n    grid-template-columns: repeat(2, 1fr);\n  }\n  .calendar-toolbar-period {\n    min-width: auto;\n    font-size: 0.95rem;\n  }\n  .calendar-cell {\n    min-height: 60px;\n  }\n}\n@media (max-width: 575.98px) {\n  .calendar-year {\n    grid-template-columns: repeat(1, 1fr);\n  }\n}"]}