@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Playfair+Display:wght@600;700&family=Quicksand:wght@300;400;500;600;700&display=swap');

body {
  margin: 0;
  font-family: var(--base-font);
}

:root {
  --base-font: "Quicksand", -apple-system, BlinkMacSystemFont, "SF Pro Display", "Segoe UI", "Roboto", "Helvetica Neue", Arial, sans-serif;
  --title-font: "Quicksand", sans-serif;
  --radius: 12px;
  --container-max: 1100px
}
/* Edit Calendar Modal Styles */
#editCalendarModal {
  position: absolute !important;
  z-index: 20000;
  left: 0;
  top: 0;
  display: none;
}
#editCalendarModal .modal-content {
  min-width: 380px;
  max-width: 460px;
  background: var(--card);
  border-radius: 16px;
  box-shadow: 0 12px 48px rgba(0, 0, 0, 0.15), 0 4px 16px rgba(0, 0, 0, 0.1);
  padding: 28px 32px 24px 32px;
  position: relative;
  border: 1px solid rgba(0, 0, 0, 0.06);
}
:root[data-theme="dark"] #editCalendarModal .modal-content {
  border-color: rgba(255, 255, 255, 0.08);
  box-shadow: 0 12px 48px rgba(0, 0, 0, 0.4), 0 4px 16px rgba(0, 0, 0, 0.3);
}
#editCalendarModal .modal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 24px;
  padding-bottom: 16px;
  border-bottom: none;
  position: relative;
}
:root[data-theme="dark"] #editCalendarModal .modal-header {
  border-bottom: none;
}
#editCalendarModal .modal-header h2 {
  margin: 0;
  font-size: 20px;
  font-weight: 600;
  color: var(--text);
  letter-spacing: -0.2px;
}
#editCalendarModal .modal-header-actions {
  display: flex;
  align-items: center;
  gap: 8px;
}
#editCalendarModal .btn-delete-icon {
  background: none;
  border: none;
  cursor: pointer;
  color: #dc2626;
  padding: 6px;
  line-height: 1;
  transition: all 0.2s ease;
  width: 32px;
  height: 32px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 6px;
}
#editCalendarModal .btn-delete-icon:hover {
  background: rgba(220, 38, 38, 0.1);
  color: #b91c1c;
}
#editCalendarModal .btn-delete-icon:active {
  transform: scale(0.95);
}
:root[data-theme="dark"] #editCalendarModal .btn-delete-icon {
  color: #f87171;
}
:root[data-theme="dark"] #editCalendarModal .btn-delete-icon:hover {
  background: rgba(248, 113, 113, 0.15);
  color: #fca5a5;
}
#editCalendarModal .btn-close {
  background: none;
  border: none;
  font-size: 24px;
  cursor: pointer;
  color: var(--muted);
  padding: 4px;
  line-height: 1;
  transition: color 0.2s ease;
  width: 32px;
  height: 32px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 6px;
}
#editCalendarModal .btn-close:hover {
  color: var(--text);
  background: rgba(0, 0, 0, 0.04);
}
:root[data-theme="dark"] #editCalendarModal .btn-close:hover {
  background: rgba(255, 255, 255, 0.08);
}
#editCalendarModal .form-group {
  margin-bottom: 20px;
}
#editCalendarModal .form-group label {
  display: block;
  margin-bottom: 8px;
  font-size: 14px;
  font-weight: 500;
  color: var(--text);
  letter-spacing: 0.1px;
}
#editCalendarModal .form-group input {
  width: 100%;
  padding: 10px 14px;
  border: 1px solid rgba(0, 0, 0, 0.12);
  border-radius: 8px;
  font-size: 14px;
  background: var(--card);
  color: var(--text);
  transition: all 0.2s ease;
  box-sizing: border-box;
}
#editCalendarModal .form-group input:focus {
  outline: none;
  border-color: var(--accent, #c9ad6a);
  box-shadow: 0 0 0 3px rgba(201, 173, 106, 0.1);
}
:root[data-theme="dark"] #editCalendarModal .form-group input {
  border-color: rgba(255, 255, 255, 0.15);
  background: rgba(255, 255, 255, 0.03);
}
:root[data-theme="dark"] #editCalendarModal .form-group input:focus {
  border-color: var(--accent, #c9ad6a);
  box-shadow: 0 0 0 3px rgba(201, 173, 106, 0.15);
}
#editCalendarModal .ec-actions {
  display: flex;
  gap: 10px;
  justify-content: flex-end;
  margin-top: 24px;
}
#editCalendarModal .ec-actions:first-of-type {
  padding-top: 0;
  border-top: none;
}
#editCalendarModal .ec-actions:last-of-type {
  padding-top: 0;
  margin-top: 16px;
}
:root[data-theme="dark"] #editCalendarModal .ec-actions:last-of-type {
  border-top-color: rgba(255, 255, 255, 0.1);
}
#editCalendarModal .btn-primary {
  background: var(--accent, #c9ad6a);
  color: #fff;
  border: none;
  border-radius: 8px;
  padding: 10px 20px;
  font-size: 14px;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.2s ease;
  box-shadow: 0 2px 8px rgba(201, 173, 106, 0.2);
}
#editCalendarModal .btn-primary:hover {
  background: #b78f40;
  box-shadow: 0 4px 12px rgba(201, 173, 106, 0.3);
  transform: translateY(-1px);
}
#editCalendarModal .btn-primary:active {
  transform: translateY(0);
}
#editCalendarModal .btn-ghost {
  background: transparent;
  color: var(--text);
  border: 1px solid rgba(0, 0, 0, 0.12);
  border-radius: 8px;
  padding: 10px 20px;
  font-size: 14px;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.2s ease;
}
#editCalendarModal .btn-ghost:hover {
  background: rgba(0, 0, 0, 0.04);
  border-color: rgba(0, 0, 0, 0.2);
}
:root[data-theme="dark"] #editCalendarModal .btn-ghost {
  border-color: rgba(255, 255, 255, 0.15);
}
:root[data-theme="dark"] #editCalendarModal .btn-ghost:hover {
  background: rgba(255, 255, 255, 0.08);
  border-color: rgba(255, 255, 255, 0.25);
}
#editCalendarModal .btn-danger {
  background: #dc2626;
  color: #fff;
  border: none;
  border-radius: 8px;
  padding: 10px 20px;
  font-size: 14px;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.2s ease;
  box-shadow: 0 2px 8px rgba(220, 38, 38, 0.2);
  width: 100%;
}
#editCalendarModal .btn-danger:hover {
  background: #b91c1c;
  box-shadow: 0 4px 12px rgba(220, 38, 38, 0.3);
  transform: translateY(-1px);
}
#editCalendarModal .btn-danger:active {
  transform: translateY(0);
}
/* Dynamiczny padding pól kalendarza zależny od sidebaru */

:root {
  /* Elegant palette: warm paper, deep slate primary, gold accent */
  --bg: #faf6f0; /* warm off-white */
  --card: #fffdf9; /* paper-like */
  --text: #1f2933; /* deep slate */
  --muted: #6f756f; /* soft muted */
  --primary: #22303f; /* deep slate-blue */
  --accent: #c9ad6a; /* warm gold */
  --success: #3f8a63;
  --danger: #a84b47;
  --warn: #b8863b;
  --white: #ffffff;
  --white-txt: #fff;
  --black-overlay: rgba(0, 0, 0, 0.04);
  --black-overlay-dark: rgba(0, 0, 0, 0.06);
  --shadow: 0 10px 30px rgba(31, 41, 51, 0.08);
  --border-color: rgba(0, 0, 0, 0.1);
}

:root[data-theme="dark"] {
  /* Dark elegant variant - refined color palette */
  --bg: #0d1117; /* deep dark background */
  --card: #161b22; /* slightly lighter card background */
  --text: #e6edf3; /* light text for readability */
  --muted: #8b949e; /* muted text color */
  --primary: #3a5a7a; /* elegant blue-gray */
  --accent: #c9a85a; /* refined gold accent */
  --success: #52c48a; /* vibrant green */
  --danger: #ef6b6b; /* soft red */
  --warn: #e4b04a; /* warm amber */
  --white: #ffffff;
  --white-txt: #fff;
  --black-overlay: rgba(255, 255, 255, 0.05);
  --black-overlay-dark: rgba(255, 255, 255, 0.08);
  --shadow: 0 12px 36px rgba(0, 0, 0, 0.7);
  --hover-bg: rgba(255, 255, 255, 0.06);
  --border-color: rgba(255, 255, 255, 0.1);
}

:root {
  --fc-page-bg-color: var(--bg);
  --fc-neutral-text-color: var(--muted);
  --fc-button-text-color: var(--card);
  --fc-button-bg-color: var(--primary);
  --fc-button-border-color: color-mix(in srgb, var(--primary) 86%, black 6%);
  --fc-button-hover-bg-color: color-mix(in srgb, var(--primary) 88%, black 8%);
  --fc-button-hover-border-color: color-mix(in srgb, var(--primary) 80%, black 10%);
  --fc-button-active-bg-color: color-mix(in srgb, var(--primary) 76%, black 16%);
  --fc-button-active-border-color: color-mix(in srgb, var(--primary) 70%, black 20%);
  --fc-event-bg-color: var(--primary);
  --fc-event-border-color: color-mix(in srgb, var(--primary) 84%, black 8%);
  --fc-event-text-color: #ffffff;
  --fc-bg-event-color: var(--accent);
  --fc-bg-event-opacity: 0.18;
  --fc-today-bg-color: rgba(194, 168, 120, 0.12);
  --fc-now-indicator-color: var(--danger);
  --fc-more-link-bg-color: color-mix(in srgb, var(--accent) 70%, #fff 30%);
  --fc-more-link-text-color: var(--text);
  --fc-non-business-color: rgba(0, 0, 0, 0.04);
  --fc-highlight-color: rgba(124, 140, 114, 0.06);
  --fc-small-font-size: 0.9rem;
  --fc-event-resizer-thickness: 8px
}

/* Accessibility helpers */
:root {
  --focus-ring-color: rgba(66,153,225,0.28);
  --focus-ring-strong: rgba(66,153,225,0.42);
}

/* Focus states for keyboard users */
button:focus-visible,
.btn:focus-visible,
.icon-btn:focus-visible,
.lang-btn:focus-visible,
.sidebar-user-btn:focus-visible,
.sidebar-menu-item:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent, #c9ad6a) 20%, transparent), 0 0 12px color-mix(in srgb, var(--accent, #c9ad6a) 40%, transparent);
}

.fc .fc-button:focus-visible {
  outline: none !important;
  box-shadow: none !important;
  border: none !important;
}

:root[data-theme="dark"] button:focus-visible,
:root[data-theme="dark"] .btn:focus-visible,
:root[data-theme="dark"] .icon-btn:focus-visible,
:root[data-theme="dark"] .lang-btn:focus-visible,
:root[data-theme="dark"] .sidebar-user-btn:focus-visible,
:root[data-theme="dark"] .sidebar-menu-item:focus-visible {
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent, #b78f40) 25%, transparent), 0 0 16px color-mix(in srgb, var(--accent, #b78f40) 45%, transparent);
}

:root[data-theme="dark"] .fc .fc-button:focus-visible {
  outline: none !important;
  box-shadow: none !important;
  border: none !important;
}

button:active,
.btn:active,
.icon-btn:active,
.lang-btn:active {
  transform: scale(0.98);
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1) inset;
}

:root[data-theme="dark"] button:active,
:root[data-theme="dark"] .btn:active,
:root[data-theme="dark"] .icon-btn:active,
:root[data-theme="dark"] .lang-btn:active {
  box-shadow: 0 3px 8px rgba(0, 0, 0, 0.4) inset;
}


.fc .fc-daygrid-event {
  transition: transform .12s ease, box-shadow .12s ease;
}
.fc .fc-event:focus-visible,
.fc .fc-daygrid-event:focus-visible {
  box-shadow: 0 6px 20px rgba(0,0,0,0.12), 0 0 0 4px var(--focus-ring-strong);
  transform: translateY(-2px);
}
.fc .fc-event:hover,
.fc .fc-daygrid-event:hover {
  transform: translateY(-2px);
  box-shadow: 0 10px 28px rgba(2,6,23,0.06);
}

.fc .fc-button {
  color: var(--text);
  background: transparent !important;
  border: none !important;
  border-radius: 8px;
  padding: 8px 14px;
  font-weight: 500;
  font-size: 0.875rem;
  letter-spacing: 0.01em;
  box-shadow: none !important;
  transition: all 0.2s ease;
  outline: none !important;
}

.fc .fc-button:hover {
  background: var(--accent, #c9ad6a) !important;
  border-color: var(--accent, #c9ad6a) !important;
  color: var(--white-txt) !important;
  box-shadow: 0 2px 8px rgba(201, 173, 106, 0.2) !important;
}

.fc .fc-button:active,
.fc .fc-button.fc-button-active {
  background: var(--accent, #c9ad6a) !important;
  border-color: var(--accent, #c9ad6a) !important;
  color: #fff !important;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1) inset !important;
}

.fc .fc-today-button {
  background: var(--accent, #c9ad6a) !important;
  border-color: var(--accent, #c9ad6a) !important;
  color: #fff !important;
  box-shadow: 0 2px 6px rgba(201, 173, 106, 0.15) !important;
}

.fc .fc-today-button:hover {
  background: var(--accent, #c9ad6a) !important;
  border-color: var(--accent, #c9ad6a) !important;
  color: #fff !important;
  box-shadow: 0 2px 8px rgba(201, 173, 106, 0.2) !important;
}

.fc .fc-today-button:active,
.fc .fc-today-button.fc-button-active {
  background: var(--accent, #c9ad6a) !important;
  border-color: var(--accent, #c9ad6a) !important;
  color: #fff !important;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1) inset !important;
}

.fc .fc-event,
.fc .fc-daygrid-event {
  background-color: var(--accent, #c9ad6a);
  border-color: var(--accent, #c9ad6a);
  color: var(--text, #1f2933);
  border-radius: 6px;
  padding: 2px 6px;
  font-weight: 500;
  font-size: 0.75rem;
  border: none;
  box-shadow: 0 2px 6px rgba(201, 173, 106, 0.15);
}

/* Timed events: keep background transparent to let JS border show */
.fc .fc-timegrid-event,
.fc .fc-timegrid-event .fc-event-main {
  background: transparent !important;
}
.fc .fc-timegrid-event {
  border-left-width: 4px !important;
  border-style: solid !important;
}
.fc .fc-timegrid-event .fc-event-title, 
.fc .fc-timegrid-event .fc-event-time, 
.fc .fc-timegrid-event .fc-event-main { 
  color: var(--text, #0b1220) !important;
}

/* Colored dot before timed event titles */
.fc .fc-timegrid-event .fc-event-title {
  display: inline-flex;
  align-items: center;
}
.event-color-dot {
  flex: 0 0 auto;
}

/* Repeat options styling */
.ec-repeat .weekday-grid {
  display: grid;
  grid-template-columns: repeat(7, auto);
  gap: 6px 8px;
}
.ec-repeat label.ec-inline {
  margin-top: 0; /* reduce extra top space */
  margin-bottom: 6px; /* tighter spacing below "Powtarzaj" */
}
.repeat-frequency-group {
  display: inline-flex;
  align-items: center;
  gap: 4px; /* tighter spacing between select and more button */
  position: relative;
}
.repeat-frequency-group select {
  width: 160px;
  min-width: 140px;
}
.repeat-row {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.repeat-row > div:first-child {
  width: 100%;
}
.repeat-extra {
  display: flex; /* flex layout for horizontal alignment */
  gap: 12px; /* spacing between items */
  align-items: flex-start; /* align to top */
  flex-wrap: nowrap; /* keep all items in one line */
  width: auto; /* don't force full width */
  max-width: 100%; /* but respect container */
  margin-top: 8px;
}
.repeat-extra > div {
  position: relative;
  margin: 0;
  flex-shrink: 0;
}

.repeat-extra > div:nth-child(1),
.repeat-extra > div:nth-child(2) {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin: 0;
}
.repeat-extra label {
  display: inline-flex; /* avoid block adding extra vertical space */
  align-items: center;
  font-weight: 600;
  font-size: 0.9rem;
  line-height: 1; /* reduce label height for alignment */
}
#repeatWeekdaysWrapper {
  display: flex; /* flex layout */
  flex-direction: column; /* label + grid stacked */
  gap: 6px;
  margin-top: 7px;
  margin-left: 0;
  flex-shrink: 0;
  align-self: flex-start;
}
.repeat-weekday-label {
  font-weight: 600;
  font-size: 0.9rem;
  color: var(--muted);
  display: inline-flex;
  align-items: center;
  line-height: 1; /* match other labels */
}
.weekday-grid label {
  display: flex;
  align-items: center;
  gap: 6px;
  cursor: pointer;
  user-select: none;
}

.weekday-grid input[type="checkbox"] {
  cursor: pointer;
  width: 18px;
  height: 18px;
  accent-color: var(--accent, #c9ad6a);
}

/* Improved input for "co ile" - narrower width */
.repeat-extra input[type="number"] {
  width: 80px;
  min-width: 80px;
  padding: 8px 10px;
  border: 1px solid rgba(0, 0, 0, 0.1);
  border-radius: 6px;
  font-size: 0.95rem;
  transition: all 0.15s ease;
  text-align: center;
  box-sizing: border-box;
}
.repeat-extra input[type="number"]:focus {
  outline: none;
  border-color: var(--accent, #c9ad6a);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent, #c9ad6a) 18%, transparent);
}
:root[data-theme="dark"] .repeat-extra input[type="number"] {
  background: #0f141c;
  border-color: rgba(255, 255, 255, 0.15);
  color: var(--txt, #e5e7eb);
}
:root[data-theme="dark"] .repeat-extra input[type="number"]:focus {
  border-color: var(--accent, #b78f40);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent, #b78f40) 22%, transparent);
}

/* Flatpickr date picker styling for "do kiedy" */
.repeat-extra .flatpickr-input {
  width: 70px;
  min-width: 70px;
  max-width: 70px;
  padding: 8px 10px;
  border: 1px solid rgba(0, 0, 0, 0.1);
  border-radius: 6px;
  font-size: 0.95rem;
  background: var(--card);
  color: var(--text);
  transition: all 0.15s ease;
  cursor: pointer;
  box-sizing: border-box;
  text-align: center;
}

/* Stronger specificity to ensure identical sizing with "Co ile" */
#evtRepeatUntil.flatpickr-input {
  width: 130px !important;
  min-width: 130px !important;
  max-width: 130px !important;
  padding: 8px 10px !important;
  box-sizing: border-box !important;
}

/* Prevent grid children from stretching */
.repeat-extra > div {
  flex: 0 0 auto;
}
.repeat-extra .flatpickr-input:focus {
  outline: none;
  border-color: var(--accent, #c9ad6a);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent, #c9ad6a) 18%, transparent);
}
:root[data-theme="dark"] .repeat-extra .flatpickr-input {
  background: #0f141c;
  border-color: rgba(255, 255, 255, 0.15);
  color: #e5e7eb;
}
:root[data-theme="dark"] .repeat-extra .flatpickr-input:focus {
  border-color: var(--accent, #b78f40);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent, #b78f40) 22%, transparent);
}

/* Global number input spinner cleanup */
input[type="number"]::-webkit-outer-spin-button,
input[type="number"]::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

/* Elegant custom steppers wrapper */
.number-stepper {
  position: relative;
  display: inline-flex;
  align-items: stretch;
  border-radius: 8px;
  overflow: visible;
}
.number-stepper input[type="number"] {
  padding-right: 44px; /* space for up/down */
}
.number-stepper .stepper-buttons {
  position: absolute;
  right: 6px;
  top: 4px;
  bottom: 4px;
  display: flex;
  flex-direction: column;
  gap: 4px;
  z-index: 1;
}
.number-stepper .stepper-btn {
  width: 28px;
  height: 16px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 4px;
  background: transparent;
  color: #2f2f2f;
  border: none;
  cursor: pointer;
  box-shadow: none !important;
}
.number-stepper .stepper-btn:hover { color: #2f2f2f; }
.number-stepper .stepper-btn:focus-visible { outline: none; box-shadow: none !important; }
.number-stepper .stepper-icon {
  width: 0;
  height: 0;
  border-left: 5px solid transparent;
  border-right: 5px solid transparent;
}
.number-stepper .icon-up { border-bottom: 8px solid currentColor; }
.number-stepper .icon-down { border-top: 8px solid currentColor; }

/* Dark theme variants */
:root[data-theme="dark"] .number-stepper .stepper-btn { color: #cfd6de; }
:root[data-theme="dark"] .number-stepper .stepper-btn:hover { color: #cfd6de; }

/* Let Flatpickr manage popup positioning; avoid overriding its layout */
.repeat-extra .flatpickr-calendar {
  cursor: pointer;
  z-index: 9999;
}

/* Hide tooltip bubble near the date input within repeat-extra */
.repeat-extra [role="tooltip"],
.repeat-extra .flatpickr-tooltip {
  display: none !important;
}

.flatpickr-calendar {
  background: var(--card);
  border-color: rgba(0, 0, 0, 0.1);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}

:root[data-theme="dark"] .flatpickr-calendar {
  background: #0f141c;
  border-color: rgba(255, 255, 255, 0.1);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.5);
}

.flatpickr-months .flatpickr-month,
.flatpickr-weekdays .flatpickr-weekday {
  color: var(--text);
}

:root[data-theme="dark"] .flatpickr-months .flatpickr-month,
:root[data-theme="dark"] .flatpickr-weekdays .flatpickr-weekday {
  color: #e5e7eb;
}

.flatpickr-day.today {
  border-color: var(--accent, #c9ad6a);
  color: var(--accent, #c9ad6a);
}

.flatpickr-day.selected,
.flatpickr-day.startRange,
.flatpickr-day.endRange {
  background: var(--accent, #c9ad6a);
  border-color: var(--accent, #c9ad6a);
  color: #fff;
}

:root[data-theme="dark"] .flatpickr-day.selected,
:root[data-theme="dark"] .flatpickr-day.startRange,
:root[data-theme="dark"] .flatpickr-day.endRange {
  background: var(--accent, #b78f40);
  border-color: var(--accent, #b78f40);
}

/* Flatpickr navigation arrows: match custom stepper arrows */
.flatpickr-prev,
.flatpickr-next {
  background: transparent !important;
  border: none !important;
  color: #666;
  box-shadow: none !important;
  cursor: pointer;
  padding: 8px 6px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.flatpickr-prev:hover,
.flatpickr-next:hover {
  color: #666;
  background: transparent !important;
}
.flatpickr-prev:focus-visible,
.flatpickr-next:focus-visible {
  outline: none;
  box-shadow: none !important;
}
.flatpickr-prev svg,
.flatpickr-next svg {
  width: 16px;
  height: 16px;
  stroke: currentColor;
  stroke-width: 2;
  fill: none;
}

/* Dark theme for flatpickr arrows */
:root[data-theme="dark"] .flatpickr-prev,
:root[data-theme="dark"] .flatpickr-next {
  color: #cfd6de;
}
:root[data-theme="dark"] .flatpickr-prev:hover,
:root[data-theme="dark"] .flatpickr-next:hover {
  color: #cfd6de;
  background: transparent !important;
}

/* Improved weekday checkboxes */
.weekday-grid label {
  display: flex;
  align-items: center;
  gap: 6px;
  cursor: pointer;
  padding: 4px 6px;
  border-radius: 4px;
  transition: all 0.12s ease;
}
.weekday-grid label:hover {
  background: color-mix(in srgb, var(--accent, #c9ad6a) 12%, transparent);
}
.weekday-grid input[type="checkbox"] {
  width: 18px;
  height: 18px;
  cursor: pointer;
  appearance: none;
  -webkit-appearance: none;
  position: relative; /* anchor for ::after */
  display: inline-block;
  box-sizing: border-box;
  background: #ffffff;
  border: 2px solid rgba(0, 0, 0, 0.2); /* grayish border for unchecked */
  border-radius: 5px; /* softer rounded corners like screenshot */
  transition: box-shadow 0.12s ease, border-color 0.12s ease, background 0.12s ease;
}
.weekday-grid input[type="checkbox"]:checked {
  background: #ffffff;
  border-color: var(--accent, #c9ad6a);
  box-shadow: 0 0 0 6px color-mix(in srgb, var(--accent, #c9ad6a) 14%, transparent); /* soft gold glow like reference */
}
.weekday-grid input[type="checkbox"]:checked::after {
  content: '';
  position: absolute;
  left: 4.5px;  /* precisely centered for 18px box */
  top: 1px;
  width: 5px;
  height: 9px;
  border: solid var(--accent, #c9ad6a);
  border-width: 0 2.5px 2.5px 0; /* slightly thicker for visibility */
  transform: rotate(45deg);
}
:root[data-theme="dark"] .weekday-grid input[type="checkbox"] {
  background: #0f141c;
  border-color: rgba(255, 255, 255, 0.2); /* grayish for unchecked */
}
:root[data-theme="dark"] .weekday-grid input[type="checkbox"]:checked {
  border-color: var(--accent, #b78f40);
  box-shadow: 0 0 0 6px color-mix(in srgb, var(--accent, #b78f40) 18%, transparent);
}
:root[data-theme="dark"] .weekday-grid input[type="checkbox"]:checked::after {
  border-color: var(--accent, #b78f40);
}
.repeat-more-btn {
  border: 1px solid rgba(0,0,0,0.08);
  background: var(--card, #ffffff);
  color: var(--text, #0b1220);
  border-radius: 999px;
  padding: 8px 10px;
  cursor: pointer;
  font-weight: 600;
  line-height: 1;
  transition: all 0.15s ease;
  box-shadow: 0 2px 6px rgba(0,0,0,0.08);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-width: 36px;
}
.repeat-more-btn:hover {
  background: color-mix(in srgb, var(--accent, #c9ad6a) 14%, var(--card, #ffffff) 86%);
}
.repeat-more-btn:active {
  transform: translateY(1px);
  box-shadow: 0 1px 3px rgba(0,0,0,0.12) inset;
}
:root[data-theme="dark"] .repeat-more-btn {
  background: #0f141c;
  color: var(--txt, #e5e7eb);
  border-color: rgba(255,255,255,0.1);
}
:root[data-theme="dark"] .repeat-more-btn:hover {
  background: color-mix(in srgb, var(--accent, #b78f40) 18%, #0f141c 82%);
}

.repeat-more-menu {
  position: absolute;
  top: 110%;
  left: 0;
  min-width: 260px;
  background: var(--card, #ffffff);
  border: 1px solid rgba(0,0,0,0.08);
  border-radius: 12px;
  box-shadow: 0 12px 32px rgba(15, 23, 42, 0.14);
  padding: 12px;
  z-index: 20;
  display: none !important;
}
.repeat-menu-section {
  display: none;
  gap: 8px;
  flex-direction: column;
}
.repeat-menu-label {
  font-weight: 600;
  font-size: 0.9rem;
  color: var(--text, #0b1220);
  margin-bottom: 4px;
}
.repeat-menu-label.muted {
  color: var(--muted, #6b7280);
  font-weight: 500;
}
:root[data-theme="dark"] .repeat-more-menu {
  background: #0f141c;
  border-color: rgba(255,255,255,0.12);
  box-shadow: 0 12px 32px rgba(0,0,0,0.4);
}
:root[data-theme="dark"] .repeat-menu-label {
  color: var(--txt, #e5e7eb);
}
.repeat-more-menu .weekday-grid label {
  font-weight: 500;
}
.fc .fc-list-event-dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
}

.fc .fc-more-link {
  background: transparent;
  color: var(--accent, #c9ad6a);
  border-radius: 6px;
  padding: 2px 6px;
  font-weight: 500;
  font-size: 0.8rem;
  text-decoration: none;
  transition: all 0.2s ease;
}

.fc .fc-more-link:hover {
  background: rgba(201, 173, 106, 0.1);
  color: var(--accent, #c9ad6a);
}

.fc .fc-daygrid-day.fc-day-today {
  background: var(--fc-today-bg-color);
  position: relative;
}

.fc .fc-daygrid-day.fc-day-today::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 3px;
  background: linear-gradient(90deg, var(--accent, #c9ad6a), var(--primary, #22303f));
  border-radius: 4px 4px 0 0;
}

.fc .fc-daygrid-day-number {
  font-weight: 600;
  padding: 8px;
  font-size: 0.95rem;
  text-align: left;
  color: var(--text);
}

:root[data-theme="dark"] .fc .fc-daygrid-day-number {
  color: var(--text);
}

:root[data-theme="dark"] .fc .fc-day-other .fc-daygrid-day-number {
  color: var(--muted);
  opacity: 0.5;
}

.fc .fc-col-header-cell-cushion {
  font-weight: 600;
  text-transform: uppercase;
  font-size: 0.75rem;
  letter-spacing: 0.08em;
  color: var(--muted, #6f756f);
  padding: 12px 8px;
}

:root[data-theme="dark"] .fc .fc-col-header-cell-cushion {
  color: var(--muted);
}

:root[data-theme="dark"] .fc .fc-col-header-cell {
  border-color: rgba(255, 255, 255, 0.05);
}

:root[data-theme="dark"] {
  --fc-page-bg-color: var(--card);
  --fc-neutral-text-color: var(--muted);
  --fc-border-color: rgba(255, 255, 255, 0.04);
  --fc-button-text-color: var(--text);
  --fc-button-bg-color: color-mix(in srgb, var(--primary) 60%, white 28%);
  --fc-button-border-color: color-mix(in srgb, var(--primary) 50%, black 40%);
  --fc-button-hover-bg-color: color-mix(in srgb, var(--primary) 70%, white 18%);
  --fc-button-hover-border-color: color-mix(in srgb, var(--primary) 40%, black 50%);
  --fc-button-active-bg-color: color-mix(in srgb, var(--primary) 56%, black 34%);
  --fc-button-active-border-color: rgba(0, 0, 0, 0.55);
  --fc-event-bg-color: color-mix(in srgb, var(--primary) 60%, white 20%);
  --fc-event-border-color: color-mix(in srgb, var(--primary) 50%, black 20%);
  --fc-event-text-color: var(--text);
  --fc-bg-event-color: color-mix(in srgb, var(--accent) 60%, white 20%);
  --fc-bg-event-opacity: 0.12;
  --fc-today-bg-color: rgba(157, 180, 155, 0.12);
  --fc-now-indicator-color: var(--warn);
  --fc-more-link-bg-color: rgba(255, 255, 255, 0.04);
  --fc-more-link-text-color: var(--text);
  --fc-non-business-color: rgba(255, 255, 255, 0.03);
  --fc-highlight-color: rgba(157, 180, 155, 0.06);
  --fc-small-font-size: 0.9rem
}

:root[data-theme="dark"] .fc .fc-button {
  color: var(--text);
  background: transparent !important;
  border: none !important;
  border-radius: 8px;
  box-shadow: none !important;
  outline: none !important;
}

:root[data-theme="dark"] .fc .fc-button:hover {
  background: var(--accent, #b78f40) !important;
  border-color: var(--accent, #b78f40) !important;
  color: #fff !important;
  box-shadow: 0 4px 16px rgba(183, 143, 64, 0.32) !important;
  transform: none;
}

:root[data-theme="dark"] .fc .fc-button:active,
:root[data-theme="dark"] .fc .fc-button.fc-button-active {
  background: var(--accent, #b78f40) !important;
  border-color: var(--accent, #b78f40) !important;
  color: #fff !important;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3) inset !important;
}

:root[data-theme="dark"] .fc .fc-today-button {
  background: var(--accent, #b78f40) !important;
  border-color: var(--accent, #b78f40) !important;
  color: #fff !important;
  box-shadow: 0 2px 8px rgba(183, 143, 64, 0.15) !important;
}

:root[data-theme="dark"] .fc .fc-today-button:hover {
  background: var(--accent, #b78f40) !important;
  border-color: var(--accent, #b78f40) !important;
  color: #fff !important;
  box-shadow: 0 4px 16px rgba(183, 143, 64, 0.32) !important;
}

:root[data-theme="dark"] .fc .fc-today-button:active,
:root[data-theme="dark"] .fc .fc-today-button.fc-button-active {
  background: var(--accent, #b78f40) !important;
  border-color: var(--accent, #b78f40) !important;
  color: #fff !important;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3) inset !important;
}

:root[data-theme="dark"] .fc .fc-event,
:root[data-theme="dark"] .fc .fc-daygrid-event {
  background-color: var(--accent, #b78f40) !important;
  border-color: var(--accent, #b78f40) !important;
  color: #fff !important;
  border: none !important;
  padding: 2px 6px;
  font-size: 0.75rem;
  box-shadow: 0 2px 8px rgba(183, 143, 64, 0.25);
}

.fc .fc-toolbar {
  margin-bottom: 24px !important;
  padding: 0 8px;
  gap: 16px;
  flex-wrap: wrap;
  align-items: center;
}

.fc .fc-toolbar-title {
  color: var(--text);
  font-family: 'Playfair Display', Georgia, serif;
  font-weight: 600;
  font-size: 1.75rem;
  letter-spacing: -0.02em;
  margin: 0 !important;
  line-height: 1.2;
  display: flex;
  align-items: center;
  order: 1;
  flex: 0 0 auto;
}

:root[data-theme="dark"] .fc .fc-toolbar-title {
  color: var(--text);
}

.fc .fc-toolbar-chunk {
  display: flex;
  gap: 8px;
  align-items: center;
}

.fc .fc-toolbar-chunk:first-child {
  order: 0;
}

.fc .fc-toolbar-chunk:last-child {
  order: 2;
}

.fc .fc-button-group {
  border-radius: 12px;
  overflow: hidden;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
  background: transparent;
  border: none;
}

:root[data-theme="dark"] .fc .fc-button-group {
  box-shadow: 0 2px 12px rgba(0, 0, 0, 0.3);
  background: rgba(255, 255, 255, 0.03);
  border: 1px solid rgba(255, 255, 255, 0.08);
}

.fc .fc-button-group > .fc-button {
  border-radius: 0 !important;
  margin: 0 !important;
}

.fc .fc-button-group > .fc-button:first-child {
  border-radius: 12px 0 0 12px !important;
}

.fc .fc-button-group > .fc-button:last-child {
  border-radius: 0 12px 12px 0 !important;
}

/* Dark mode styles for FullCalendar icons and navigation */
:root[data-theme="dark"] .fc .fc-icon,
:root[data-theme="dark"] .fc .fc-button-icon {
  color: var(--text);
}

:root[data-theme="dark"] .fc .fc-button:hover .fc-icon,
:root[data-theme="dark"] .fc .fc-button:hover .fc-button-icon {
  color: #fff;
}

:root[data-theme="dark"] .fc .fc-button.fc-button-active .fc-icon,
:root[data-theme="dark"] .fc .fc-button.fc-button-active .fc-button-icon {
  color: #fff;
}

/* Dark mode for day cells */
:root[data-theme="dark"] .fc .fc-daygrid-day {
  background: var(--card);
}

:root[data-theme="dark"] .fc .fc-day-other {
  background: rgba(255, 255, 255, 0.02);
  opacity: 0.6;
}

:root[data-theme="dark"] .fc .fc-day-other .fc-daygrid-day-number {
  color: var(--muted);
  opacity: 0.4;
}





button {
  font: inherit;
  cursor: pointer
}

.container {
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 18px
}

@media(min-width:900px) {
  .container {
    padding: 28px
  }
}

.card {
  background: var(--card);
  border-radius: calc(var(--radius) - 2px);
  box-shadow: var(--shadow);
  padding: 16px;
  transition: transform .14s ease, box-shadow .14s ease, background .18s
}

.card:hover {
  transform: translateY(-3px)
}



.brand-left {
  display: flex;
  gap: 12px;
  align-items: center
}

.brand-title {
  font-weight: 700;
  font-size: 1.05rem
}

.brand-right {
  display: flex;
  gap: 8px;
  align-items: center
}

/* Mobile menu button */
.mobile-menu-btn {
  display: none !important;
  position: absolute;
  left: 12px;
}

@media (max-width: 720px) {
  .mobile-menu-btn {
    display: inline-grid !important;
    align-items: center;
    justify-content: center;
    padding: 8px;
    font-size: 20px;
    margin-right: 12px;
  }
}

.lang-select-wrapper {
  position: relative;
  display: inline-flex;
  align-items: center
}

.lang-select-wrapper select {
  -webkit-appearance: none;
  appearance: none;
  background: var(--card);
  color: var(--text);
  border-radius: 8px;
  padding: 6px 34px 6px 12px;
  border: 1px solid rgba(0, 0, 0, 0.08);
  font-weight: 600
}

:root[data-theme="dark"] .lang-select-wrapper select {
  background: rgba(255, 255, 255, 0.02);
  border: 1px solid rgba(255, 255, 255, 0.06)
}

.lang-select-wrapper .lang-icon {
  position: absolute;
  right: 10px;
  pointer-events: none;
  opacity: 0.8;
  width: 18px;
  height: 18px;
  color: var(--muted)
}

.icon-btn {
  width: 44px;
  height: 44px;
  display: inline-grid;
  place-items: center;
  border-radius: 10px;
  border: 1px solid rgba(0, 0, 0, 0.06);
  background: var(--card);
  padding: 6px;
  transition: background .12s, border-color .12s
}

:root[data-theme="dark"] .icon-btn {
  border: 1px solid rgba(255, 255, 255, 0.06);
  background: rgba(255, 255, 255, 0.02);
  color: var(--text)
}

:root[data-theme="dark"] text {
  fill: var(--text)
}

/* Logo text color - black in light mode, white in dark mode */
.logo-text {
  fill: #000;
  transition: fill 0.2s ease;
}

:root[data-theme="dark"] .logo-text {
  fill: #fff;
}

.icon {
  width: 20px;
  height: 20px;
  color: var(--muted);
  transition: transform .18s ease, color .18s ease
}

.sidebar-accordion:hover {
  .icon {
    stroke: var(--text);
  }
}
.icon:hover {
  stroke: var(--text);
}

/* Notification bell: no background; icon uses current text color */
#notificationBell,
.icon-btn.notification-bell {
  background: transparent !important;
  background-color: transparent !important;
  border: none !important;
  box-shadow: none !important;
  color: inherit;
}
#notificationBell:hover,
#notificationBell:focus,
#notificationBell:active,
.icon-btn.notification-bell:hover,
.icon-btn.notification-bell:focus,
.icon-btn.notification-bell:active {
  background: transparent !important;
  background-color: transparent !important;
  border: none !important;
  outline: none;
  box-shadow: none !important;
}

.icon.theme-anim {
  animation: theme-switch 420ms cubic-bezier(.2, .9, .3, 1)
}

@keyframes theme-switch {
  0% {
    transform: rotate(0) scale(1)
  }

  40% {
    transform: rotate(18deg) scale(1.06)
  }

  80% {
    transform: rotate(-6deg) scale(.98)
  }

  100% {
    transform: rotate(0) scale(1)
  }
}

html[data-theme="dark"] .icon-sun {
  display: none
}

html[data-theme="dark"] .icon-moon {
  display: block;
  color: var(--accent)
}

html:not([data-theme="dark"]) .icon-moon {
  display: none
}

html:not([data-theme="dark"]) .icon-sun {
  display: block;
  color: var(--primary)
}

.btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px 12px;
  border-radius: 10px;
  border: 1px solid var(--accent);
  font-weight: 600;
  color: var(--accent);
  background: var(--bg);
  cursor: pointer;
}

.btn.ghost {
  background: transparent;
  border: 1px solid rgba(15, 23, 42, 0.06);
  color: var(--text)
}

.btn.small {
  padding: 6px 10px;
  font-size: 0.95rem;
  border-radius: 9px
}

.btn.loading {
  pointer-events: none;
  opacity: 0.8;
  position: relative
}

.btn.loading::after {
  content: "";
  position: absolute;
  right: 10px;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  border: 2px solid rgba(255, 255, 255, 0.7);
  border-left-color: transparent;
  animation: spin .7s linear infinite
}

/* Loading state for calendar */
#calendar.loading {
  position: relative;
  pointer-events: none;
  opacity: 0.7;
}

#calendar.loading::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 40px;
  height: 40px;
  border: 3px solid var(--accent, #c9ad6a);
  border-top-color: transparent;
  border-radius: 50%;
  animation: spin 0.8s linear infinite;
  z-index: 1000;
}

@keyframes spin {
  to {
    transform: rotate(360deg)
  }
}

/* Dark mode styles for auth pages */
:root[data-theme="dark"] .auth {
  background: var(--card, #161b22);
  color: var(--text, #e6edf3);
}

:root[data-theme="dark"] .auth input {
  background: rgba(255, 255, 255, 0.05);
  border-color: rgba(255, 255, 255, 0.15);
  color: var(--text, #e6edf3);
}

:root[data-theme="dark"] .auth input:focus {
  border-color: var(--accent, #c9a85a);
  background: rgba(255, 255, 255, 0.08);
}

:root[data-theme="dark"] .auth .label {
  color: var(--text, #e6edf3);
}

:root[data-theme="dark"] .auth .small {
  color: var(--muted, #8b949e);
}

:root[data-theme="dark"] .auth a {
  color: var(--accent, #c9a85a);
}

:root[data-theme="dark"] .auth a:hover {
  color: var(--accent, #b89a5a);
}

:root[data-theme="dark"] .auth button.btn-primary {
  background: var(--accent, #c9a85a);
  color: #fff;
  border-color: var(--accent, #c9a85a);
}

:root[data-theme="dark"] .auth button.btn-primary:hover {
  background: var(--accent, #b89a5a);
}

.auth {
  width: 100%;
  max-width: 420px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: 10px
}

/* Password field with toggle visibility */
.password-field-wrapper {
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  width: 100%;
  max-width: 460px;
  margin-bottom: 10px;
}

.password-field-wrapper input {
  padding-right: 45px;
  width: 100%;
}

.password-toggle-btn {
  position: absolute;
  right: 12px;
  top: 50%;
  transform: translateY(-50%);
  background: transparent !important;
  border: none !important;
  cursor: pointer;
  padding: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--muted, #666);
  transition: color 0.2s;
  z-index: 1;
  width: 32px;
  height: 32px;
  margin: 0;
  box-shadow: none !important;
}

.password-toggle-btn:hover {
  background: transparent !important;
  color: var(--text, #000);
}

.password-toggle-btn:active,
.password-toggle-btn:focus {
  background: transparent !important;
  outline: none !important;
  border: none !important;
  box-shadow: none !important;
}

:root[data-theme="dark"] .password-toggle-btn:hover {
  background: transparent !important;
}

.password-toggle-icon {
  width: 20px;
  height: 20px;
  stroke: currentColor;
  fill: none;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
  display: block;
  flex-shrink: 0;
  margin: auto;
  margin-top: 9.5px;
}

.password-toggle-icon path,
.password-toggle-icon circle,
.password-toggle-icon line {
  transition: opacity 0.2s;
}

input[type="text"],
input[type="password"],
input[type="email"],
input[type="datetime-local"],
textarea,
select {
  padding: 8px 12px;
  border-radius: 10px;
  border: 1px solid rgba(0, 0, 0, 0.06);
  background: transparent;
  color: var(--text);
  font-size: 1rem
}

/* Dropdown options styling */
select option {
  background: var(--card, #ffffff) !important;
  color: var(--text, #0b1220) !important;
  padding: 8px 10px;
  font-size: 0.95rem;
}
select option:checked,
select option:hover {
  background: color-mix(in srgb, var(--accent, #c9ad6a) 28%, var(--card, #ffffff) 72%) !important;
  color: #0b1220 !important;
}
:root[data-theme="dark"] select option {
  background: #0f141c !important;
  color: var(--txt, #e5e7eb) !important;
}
:root[data-theme="dark"] select option:checked,
:root[data-theme="dark"] select option:hover {
  background: color-mix(in srgb, var(--accent, #b78f40) 32%, #0f141c 68%) !important;
  color: var(--txt, #e5e7eb) !important;
}

.label {
  font-size: 0.9rem;
  color: var(--muted)
}

input:focus,
select:focus,
button:focus {
  outline: none;
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent, #c9ad6a) 20%, transparent), 0 0 12px color-mix(in srgb, var(--accent, #c9ad6a) 40%, transparent);
}

:root[data-theme="dark"] input:focus,
:root[data-theme="dark"] select:focus,
:root[data-theme="dark"] button:focus {
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent, #b78f40) 25%, transparent), 0 0 16px color-mix(in srgb, var(--accent, #b78f40) 45%, transparent);
}

.main-hero {
  padding: 22px 0
}

.hero {
  display: grid;
  grid-template-columns: 1fr;
  gap: 14px
}

@media(min-width:900px) {
  .hero {
    grid-template-columns: 1fr 360px
  }
}

.row {
  display: flex;
  gap: 8px;
  align-items: center
}

.spacer {
  flex: 1
}



.side-card {
  padding: 14px;
  border-radius: 10px;
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.02), transparent);
  backdrop-filter: blur(4px);
  border: 1px solid rgba(0, 0, 0, 0.03)
}

.mini-cal {
  width: 170px;
  padding: 10px
}

.mini-grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 6px;
  font-size: 0.75rem
}

.mini-grid .cell {
  text-align: center;
  color: var(--muted)
}

.mini-grid .day {
  text-align: center;
  padding: 8px 6px;
  border-radius: 8px
}

.mini-grid .day.event {
  background: linear-gradient(90deg, var(--accent), var(--primary));
  color: white
}





#toast-container {
  position: fixed;
  right: 16px;
  bottom: 16px;
  z-index: 99999;
  display: flex;
  flex-direction: column;
  gap: 10px;
  align-items: flex-end;
  max-width: calc(100% - 32px);
  pointer-events: none
}

.toast {
  min-width: 220px;
  pointer-events: auto;
  display: flex;
  gap: 12px;
  align-items: center;
  padding: 12px 14px;
  border-radius: 12px;
  box-shadow: 0 10px 30px rgba(2, 6, 23, 0.15);
  color: white;
  font-weight: 600;
  transform: translateY(8px);
  opacity: 0;
  animation: toast-in .18s cubic-bezier(.2, .9, .3, 1) forwards
}

@keyframes toast-in {
  from {
    opacity: 0;
    transform: translateY(12px) scale(.98)
  }

  to {
    opacity: 1;
    transform: none
  }
}

.toast.success {
  background: linear-gradient(90deg, var(--success), color-mix(in srgb, var(--success) 70%, black 10%))
}

.toast.warn {
  background: linear-gradient(90deg, var(--warn), color-mix(in srgb, var(--warn) 70%, black 10%))
}

.toast.error {
  background: linear-gradient(90deg, var(--danger), color-mix(in srgb, var(--danger) 70%, black 10%))
}

.toast.info {
  background: linear-gradient(90deg, var(--primary), color-mix(in srgb, var(--primary) 60%, black 10%))
}

.toast .close {
  margin-left: auto;
  background: transparent;
  border: 0;
  color: rgba(255, 255, 255, 0.95);
  cursor: pointer;
  font-weight: 700;
  font-size: 1rem;
  padding: 6px;
  border-radius: 8px
}

.toast .spinner,
.btn.loading::after {
  width: 14px;
  height: 14px;
  border-radius: 50%;
  border: 2px solid rgba(255, 255, 255, 0.35);
  border-top-color: rgba(255, 255, 255, 0.95);
  animation: spin .9s linear infinite
}

@keyframes spin {
  to {
    transform: rotate(360deg)
  }
}

@media (prefers-reduced-motion:reduce) {

  .icon.theme-anim,
  .toast,
  .btn.loading::after {
    animation: none !important;
    transform: none !important;
    transition: none !important
  }
}

.visually-hidden {
  position: absolute !important;
  height: 1px;
  width: 1px;
  overflow: hidden;
  clip: rect(1px, 1px, 1px, 1px);
  white-space: nowrap
}

@media (max-width:680px) {
  .brand-right {
    gap: 6px
  }

  .icon-btn {
    width: 40px;
    height: 40px
  }

  .container {
    padding: 12px
  }
}

.site-header {
  background: linear-gradient(135deg, rgba(255, 255, 255, 0.72) 0%, rgba(250, 247, 243, 0.68) 38%, rgba(245, 242, 238, 0.64) 100%);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border-bottom: 1px solid rgba(15, 23, 42, 0.04);
  box-shadow: 0 6px 20px rgba(5, 8, 12, 0.04);
  position: sticky;
  top: 0;
  z-index: 1000
}

:root[data-theme="dark"] .site-header {
  background: var(--card);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
  box-shadow: 0 8px 26px rgba(0, 0, 0, 0.5);
}

.header-inner {
  transition: padding .18s ease, box-shadow .18s ease
}

.site-header.scrolled .header-inner {
  padding: 0 12px; /* keep slim header when scrolled */
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.04)
}

.site-footer {
  background: linear-gradient(180deg, rgba(250, 248, 245, 0.8), rgba(248, 246, 242, 0.9));
  color: var(--muted);
  padding: 18px 0;
  border-top: 1px solid rgba(10, 12, 10, 0.03)
}

:root[data-theme="dark"] .site-footer {
  background: linear-gradient(180deg, rgba(18, 18, 18, 0.35), rgba(12, 12, 12, 0.36));
  color: #c7c4be;
  border-top: 1px solid rgba(255, 255, 255, 0.02)
}

.footer-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 18px
}

@media(max-width:680px) {

  .site-header .header-inner,
  .site-footer .footer-inner {
    padding-left: 12px;
    padding-right: 12px
  }

  .brand-title {
    font-size: 1rem
  }
}

.header-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 14px 0;
  position: relative;
}

.brand-left .logo {
  display: flex;
  align-items: center;
  gap: 10px;
  text-decoration: none;
  color: inherit
}

.brand-left svg {
  display: flex;
  vertical-align: middle
}

.brand-title {
  line-height: 1;
  font-weight: 700;
  font-size: 1.05rem
}

.brand-right {
  display: flex;
  align-items: center;
  gap: 10px
}

@media (max-width:480px) {
  .brand-left svg {
    width: 30px;
    height: 30px
  }

  .brand-title {
    font-size: 0.98rem
  }
}

.brand-right a[href*="register"] {
  background: linear-gradient(180deg, var(--primary), color-mix(in srgb, var(--primary) 65%, black 6%));
  color: white;
  padding: 9px 14px;
  border-radius: 11px;
  box-shadow: 0 6px 20px rgba(197, 126, 126, 0.14);
  transform: translateZ(0);
  border: 0;
  font-weight: 700
}

.brand-right a[href*="register"].btn-ghost {
  border: none
}

.brand-right a[href*="register"]:hover {
  transform: translateY(-2px);
  box-shadow: 0 10px 30px rgba(197, 126, 126, 0.18)
}

.brand-right a[href*="login"] {
  background: transparent;
  color: var(--text);
  border: 1px solid rgba(15, 23, 42, 0.06);
  padding: 7px 12px;
  border-radius: 10px;
  font-weight: 600
}

@media (max-width:640px) {
  .brand-right {
    gap: 8px
  }

  .brand-right a[href*="register"] {
    padding: 8px 12px;
    font-size: 0.95rem
  }

  .brand-right a[href*="login"] {
    padding: 7px 10px;
    font-size: 0.95rem
  }
}

.lang-select-wrapper select {
  height: 36px;
  padding-top: 6px;
  padding-bottom: 6px
}

.brand-right a:focus,
.brand-right button:focus,
.lang-select-wrapper select:focus {
  outline: 3px solid color-mix(in srgb, var(--primary) 40%, transparent);
  outline-offset: 2px
}

@media (max-width:420px) {
  .brand-right a[href*="register"] {
    order: 1
  }

  .brand-right a[href*="login"] {
    order: 2
  }
}

.brand-right button[onclick="logout()"],
.brand-right a[href*="logout"] {
  background: linear-gradient(180deg, color-mix(in srgb, var(--primary) 85%, black 6%), color-mix(in srgb, var(--primary) 60%, black 12%));
  color: white;
  padding: 9px 14px;
  border-radius: 11px;
  border: 0;
  font-weight: 700;
  box-shadow: 0 8px 26px rgba(0, 0, 0, 0.10);
  display: inline-flex;
  align-items: center;
  gap: 8px;
  text-decoration: none
}

.brand-right button[onclick="logout()"]:hover,
.brand-right a[href*="logout"]:hover {
  transform: translateY(-2px);
  box-shadow: 0 12px 36px rgba(0, 0, 0, 0.14)
}

.brand-right button[onclick="logout()"].btn-ghost,
.brand-right a[href*="logout"].btn-ghost {
  border: 0;
  background: linear-gradient(180deg, color-mix(in srgb, var(--primary) 88%, black 6%), color-mix(in srgb, var(--primary) 66%, black 10%))
}

input::placeholder,
textarea::placeholder,
select::placeholder {
  font-family: var(--base-font, Inter, system-ui, -apple-system, "Segoe UI", Roboto, Arial);
  color: color-mix(in srgb, var(--muted) 70%, transparent 30%);
  opacity: 1;
  font-weight: 400
}

:-ms-input-placeholder {
  color: color-mix(in srgb, var(--muted) 70%, transparent 30%);
  font-family: var(--base-font)
}

::-ms-input-placeholder {
  color: color-mix(in srgb, var(--muted) 70%, transparent 30%);
  font-family: var(--base-font)
}

::-webkit-input-placeholder {
  color: color-mix(in srgb, var(--muted) 70%, transparent 30%);
  font-family: var(--base-font)
}

.center-vertical {
  min-height: calc(100vh - 96px);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 18px
}

.center-vertical .auth,
.center-vertical .card.auth,
.center-vertical main.card.auth {
  margin: 0 auto;
  width: 100%;
  max-width: 460px;
  box-shadow: 0 10px 30px rgba(2, 6, 23, 0.06);
  border-radius: 12px
}

.center-vertical .auth input,
.center-vertical .auth .label,
.center-vertical .auth .row {
  margin-top: 8px
}

@media (max-width:520px) {
  .center-vertical {
    padding: 14px;
    min-height: calc(100vh - 80px)
  }

  .center-vertical .auth {
    max-width: 96%;
    padding: 14px
  }

  .brand-right {
    gap: 8px
  }
}

.brand-right button[onclick="logout()"]:focus,
.brand-right a[href*="logout"]:focus,
.center-vertical .auth button:focus,
.center-vertical .auth input:focus {
  outline: none;
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent, #c9ad6a) 20%, transparent), 0 0 12px color-mix(in srgb, var(--accent, #c9ad6a) 40%, transparent);
}

.brand-right a[href*="register"] {
  order: 1
}

.brand-right a[href*="login"] {
  order: 2
}

.brand-right button[onclick="logout()"] {
  order: 3
}

.brand-right button[onclick="logout()"] {
  margin-left: 4px
}

input,
textarea,
select,
button {
  font-family: var(--base-font);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale
}

input[type="text"],
input[type="password"],
input[type="email"],
input[type="datetime-local"],
textarea {
  font-family: var(--base-font);
  font-weight: 400;
  color: var(--text)
}

input::placeholder,
textarea::placeholder,
select::placeholder {
  font-family: var(--base-font);
  font-weight: 400;
  color: color-mix(in srgb, var(--muted) 70%, transparent 30%);
  opacity: 1
}

::-webkit-input-placeholder {
  font-family: var(--base-font);
  color: color-mix(in srgb, var(--muted) 70%, transparent 30%);
  opacity: 1
}

:-ms-input-placeholder {
  font-family: var(--base-font);
  color: color-mix(in srgb, var(--muted) 70%, transparent 30%);
  opacity: 1
}

.lang-select-wrapper select {
  font-family: var(--base-font);
  font-weight: 700;
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  background-image: none;
  padding-right: 12px;
  text-align: left
}

.lang-select-wrapper .lang-icon {
  display: none !important
}

.lang-select-wrapper select {
  border: 1px solid rgba(0, 0, 0, 0.08);
  border-radius: 8px;
  padding: 8px 12px;
  background: var(--card);
  color: var(--text)
}

:root[data-theme="dark"] .lang-select-wrapper select {
  background: rgba(255, 255, 255, 0.02);
  border: 1px solid rgba(255, 255, 255, 0.06);
  color: var(--text)
}

.lang-select-wrapper select:focus {
  outline: 3px solid color-mix(in srgb, var(--primary) 40%, transparent);
  outline-offset: 2px
}

@media (max-width:520px) {
  .lang-select-wrapper select {
    font-size: 0.95rem;
    padding: 7px 10px
  }
}

.lang-btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px 12px;
  border-radius: 10px;
  border: 1px solid rgba(0, 0, 0, 0.08);
  background: var(--card);
  font-family: var(--base-font);
  font-weight: 700;
  color: var(--text);
  cursor: pointer;
  min-width: 56px
}

.lang-btn .lang-chevron {
  opacity: 0.65;
  transform: translateY(0);
  transition: transform .18s ease, opacity .12s;
  color: var(--muted)
}

.lang-select-wrapper[data-open="true"] .lang-chevron {
  transform: rotate(180deg);
  opacity: 0.9
}

.lang-menu {
  position: absolute;
  right: 0;
  margin-top: 8px;
  list-style: none;
  padding: 6px;
  border-radius: 10px;
  min-width: 160px;
  box-shadow: 0 12px 30px rgba(2, 6, 23, 0.12);
  background: var(--card);
  border: 1px solid rgba(0, 0, 0, 0.06);
  z-index: 1200
}

.lang-menu[hidden] {
  display: none
}

.lang-menu li {
  padding: 8px 10px;
  border-radius: 8px;
  font-family: var(--base-font);
  font-weight: 600;
  cursor: pointer;
  color: var(--text)
}

.lang-menu li[aria-current="true"],
.lang-menu li:hover,
.lang-menu li:focus {
  background: linear-gradient(90deg, color-mix(in srgb, var(--primary) 12%, white 88%), color-mix(in srgb, var(--accent) 8%, white 92%));
  color: white;
  outline: none
}

.lang-menu li:focus {
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.08)
}

@media (max-width:520px) {
  .lang-menu {
    right: 6px;
    left: auto;
    min-width: 140px
  }

  .lang-btn {
    padding: 8px 10px
  }
}

.lang-select-wrapper {
  position: relative
}

.lang-menu {
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  right: auto;
  margin: 0;
  padding: 6px;
  list-style: none;
  border-radius: 10px;
  background: var(--card);
  border: 1px solid rgba(0, 0, 0, 0.06);
  box-shadow: 0 12px 30px rgba(0, 0, 0, 0.12);
  transform-origin: top;
  opacity: 0;
  transform: translateY(-6px) scale(0.98);
  transition: opacity .18s ease, transform .18s ease
}

.lang-select-wrapper[data-open="true"] .lang-menu {
  opacity: 1;
  transform: translateY(0) scale(1)
}

.lang-menu li {
  padding: 8px 10px;
  border-radius: 8px;
  font-family: var(--base-font);
  font-weight: 600;
  cursor: pointer
}

.lang-menu li:hover {
  background: linear-gradient(90deg, color-mix(in srgb, var(--primary) 20%, white 80%), color-mix(in srgb, var(--accent) 20%, white 80%));
  color: white;
  outline: none
}

@media(max-width:520px) {
  .lang-menu {
    min-width: 140px
  }
}

.day-drawer {
  position: fixed;
  right: 0;
  top: 0;
  height: 100vh;
  width: 480px;
  max-width: 92%;
  background: var(--card);
  box-shadow: -12px 0 30px rgba(2, 6, 23, 0.18);
  transform: translateX(110%);
  transition: transform .28s cubic-bezier(.2, .9, .25, 1);
  z-index: 1400;
  display: flex;
  flex-direction: column;
  padding: 16px 18px 16px 18px;
  border-left: 1px solid rgba(0, 0, 0, 0.04);
  will-change: transform;
}

:root[data-theme="dark"] .day-drawer {
  background: var(--card);
  box-shadow: -12px 0 40px rgba(0, 0, 0, 0.6);
  border-left: 1px solid rgba(255, 255, 255, 0.08);
}

.day-drawer.open {
  transform: translateX(0)
}

.drawer-head {
  display: flex;
  gap: 10px;
  align-items: center;
  border-bottom: 1px solid rgba(0, 0, 0, 0.04);
  padding-bottom: 10px
}

:root[data-theme="dark"] .drawer-head {
  border-bottom-color: rgba(255, 255, 255, 0.08);
}

.drawer-title {
  display: flex;
  flex-direction: column
}

.drawer-date {
  font-weight: 700;
  font-size: 1.05rem
}

.drawer-body {
  overflow: auto;
  padding-top: 12px;
  flex: 1
}

.drawer-events-list {
  list-style: none;
  padding: 0;
  margin: 6px 0 32px 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
  cursor: pointer;
}
.fc-list-event-title, .fc-list-event-time, .fc-list-event-graphic{
  cursor: pointer;
}

.drawer-events-list li {
  padding: 10px 12px;
  border-radius: 10px;
  background: color-mix(in srgb, var(--card) 85%, white 15%);
  border: 1px solid var(--black-overlay);
  color: var(--text);
  display: flex;
  justify-content: space-between;
  align-items: center;
  box-shadow: 0 6px 20px rgba(2,6,23,0.04);
  transition: transform .14s ease, box-shadow .14s ease;
}

:root[data-theme="dark"] .drawer-events-list li {
  background: rgba(255, 255, 255, 0.04);
  border-color: rgba(255, 255, 255, 0.08);
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.3);
}

.drawer-events-list li:hover {
  transform: translateY(-2px);
  box-shadow: 0 10px 28px rgba(2,6,23,0.08);
}

:root[data-theme="dark"] .drawer-events-list li:hover {
  background: rgba(255, 255, 255, 0.06);
  box-shadow: 0 10px 28px rgba(0, 0, 0, 0.4);
}

.drawer-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.35);
  z-index: 1350;
  opacity: 0;
  transition: opacity .18s ease;
}

:root[data-theme="dark"] .drawer-backdrop {
  background: rgba(0, 0, 0, 0.65);
}

.drawer-backdrop.show {
  opacity: 1
}

/* Event Detail Panel */
.event-detail-panel {
  position: fixed;
  z-index: 1500;
  background: var(--card);
  border-radius: 16px;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.2), 0 8px 24px rgba(0, 0, 0, 0.15);
  min-width: 360px;
  max-width: 480px;
  width: 90%;
  display: flex;
  flex-direction: column;
  opacity: 0;
  transform: scale(0.9) translateY(-10px);
  transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1),
              transform 0.2s cubic-bezier(0.4, 0, 0.2, 1);
  pointer-events: none;
  border: 1px solid rgba(0, 0, 0, 0.08);
}

.event-detail-panel.open {
  opacity: 1;
  transform: scale(1) translateY(0);
  pointer-events: auto;
}

:root[data-theme="dark"] .event-detail-panel {
  border-color: rgba(255, 255, 255, 0.1);
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.4), 0 8px 24px rgba(0, 0, 0, 0.3);
}

.event-detail-header {
  padding: 16px 20px;
  border-bottom: 1px solid rgba(0, 0, 0, 0.06);
  display: flex;
  justify-content: flex-end;
}

:root[data-theme="dark"] .event-detail-header {
  border-bottom-color: rgba(255, 255, 255, 0.08);
}

.event-detail-actions {
  display: flex;
  gap: 8px;
  align-items: center;
}

.event-detail-action-btn {
  background: transparent;
  border: none;
  cursor: pointer;
  padding: 8px;
  border-radius: 8px;
  color: var(--text, #0b1220);
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.15s ease;
  opacity: 0.7;
}

.event-detail-action-btn:hover {
  background: rgba(0, 0, 0, 0.05);
  opacity: 1;
  transform: scale(1.1);
}

.event-detail-action-btn.event-detail-delete {
  color: #ef4444;
}

.event-detail-action-btn.event-detail-delete:hover {
  background: rgba(239, 68, 68, 0.1);
}

:root[data-theme="dark"] .event-detail-action-btn {
  color: var(--text, #e9ece9);
}

:root[data-theme="dark"] .event-detail-action-btn:hover {
  background: rgba(255, 255, 255, 0.08);
}

.event-detail-body {
  padding: 24px 20px;
  overflow-y: visible;
  flex: 1;
}

.event-detail-date {
  font-size: 13px;
  color: var(--muted, #6b7280);
  margin-bottom: 8px;
  font-weight: 500;
  text-transform: capitalize;
}

.event-detail-title {
  font-size: 24px;
  font-weight: 700;
  color: var(--text);
  margin: 0 0 16px 0;
  line-height: 1.3;
  word-wrap: break-word;
}

.event-detail-location {
  font-size: 14px;
  color: var(--text);
  display: flex;
  align-items: center;
  gap: 8px;
  opacity: 0.8;
  margin-top: 8px;
  margin-bottom: 8px;
}

.event-detail-location svg {
  flex-shrink: 0;
  opacity: 0.7;
}

.event-detail-description {
  margin-top: 20px;
  padding-top: 20px;
  border-top: 1px solid rgba(0, 0, 0, 0.06);
}

:root[data-theme="dark"] .event-detail-description {
  border-top-color: rgba(255, 255, 255, 0.08);
}

.event-detail-description p {
  margin: 0;
  font-size: 14px;
  line-height: 1.6;
  color: var(--text);
  white-space: pre-wrap;
  word-wrap: break-word;
}

h1, h2, h3, h4, h5, h6, .settings-close-btn{
  color: var(--text);
}
:root[data-theme="dark"] {
  h1, h2, h3, h4, h5, h6, .settings-close-btn, #drawerSubtitle, #drawerDate {
    color: var(--text);
  }
}
@media(max-width:640px) {
  .day-drawer {
    top: auto;
    bottom: 0;
    right: 0;
    left: 0;
    width: 91%;
    max-width: 100%;
    height: 60vh;
    border-left: none;
    border-top-left-radius: 12px;
    border-top-right-radius: 12px;
    transform: translateY(110%)
  }

  .day-drawer.open {
    transform: translateY(0)
  }

  .drawer-backdrop {
    background: rgba(0, 0, 0, 0.45)
  }
}

.day-drawer input {
  width: 100%;
  padding: 10px 12px;
  border-radius: 8px;
  border: 1px solid rgba(0, 0, 0, 0.06);
  background: transparent;
  margin-top: 6px;
  color: var(--text);
}

:root[data-theme="dark"] .day-drawer input {
  border-color: rgba(255, 255, 255, 0.1);
  background: rgba(255, 255, 255, 0.03);
  color: var(--text);
}

:root[data-theme="dark"] .day-drawer input:focus {
  border-color: var(--accent);
  background: rgba(255, 255, 255, 0.05);
  box-shadow: 0 0 0 3px rgba(201, 168, 90, 0.15);
}

.drawer-add-btn {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 12px;
  width: 100%;
  padding: 20px 16px;
  border-radius: 14px;
  border: none;
  background: color-mix(in srgb, var(--accent, #c9ad6a) 8%, white);
  color: var(--text);
  cursor: pointer;
  transition: all .16s ease;
}

.drawer-add-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  background: var(--accent, #c9ad6a);
  color: #fff;
  font-size: 2.2rem;
  font-weight: 300;
  line-height: 1;
  padding-bottom: 2px;
  box-shadow: 0 8px 20px rgba(201,173,106,0.2);
}

.drawer-add-text {
  font-weight: 500;
  font-size: 0.95rem;
  color: var(--text);
}

.drawer-add-btn:hover {
  background: color-mix(in srgb, var(--accent, #c9ad6a) 12%, white);
}

:root[data-theme="dark"] .drawer-add-btn {
  background: rgba(201, 168, 90, 0.12);
  border-color: rgba(201, 168, 90, 0.2);
}

:root[data-theme="dark"] .drawer-add-btn:hover {
  background: rgba(201, 168, 90, 0.18);
  border-color: rgba(201, 168, 90, 0.3);
}

.drawer-add-btn:hover .drawer-add-icon {
  transform: scale(1.08);
  box-shadow: 0 10px 28px rgba(201,173,106,0.28);
}

:root[data-theme="dark"] .drawer-add-btn:hover .drawer-add-icon {
  box-shadow: 0 10px 28px rgba(201, 168, 90, 0.4);
}

.drawer-add-btn:active {
  transform: translateY(1px);
}

.drawer-add-btn:active .drawer-add-icon {
  box-shadow: 0 4px 12px rgba(201,173,106,0.2);
}

:root[data-theme="dark"] .drawer-add-btn:active .drawer-add-icon {
  box-shadow: 0 4px 12px rgba(201, 168, 90, 0.3);
}

html {
  font-family: var(--base-font);
}

html,
body {
  height: 100%;
  font-family: var(--base-font);
}

.layout {
  display: block;
  width: 100%;
  padding: 0;
  margin: 0
}

#calendar {
  width: 100%;
  min-height: calc(100vh - 120px);
  box-sizing: border-box;
  border-radius: 12px;
  background: var(--card);
  padding: 10px;
  box-shadow: var(--shadow);
  overflow-y: auto;
  overflow-x: hidden;
}

/* Elegant scrollbar styling - light theme */
#calendar::-webkit-scrollbar {
  width: 10px;
}

#calendar::-webkit-scrollbar-track {
  background: transparent;
}

#calendar::-webkit-scrollbar-thumb {
  background: color-mix(in srgb, var(--muted) 60%, transparent);
  border-radius: 5px;
  transition: background 0.3s ease;
}

#calendar::-webkit-scrollbar-thumb:hover {
  background: color-mix(in srgb, var(--muted) 80%, transparent);
}

/* Firefox scrollbar styling */
#calendar {
  scrollbar-color: color-mix(in srgb, var(--muted) 60%, transparent) transparent;
  scrollbar-width: thin;
}

.fc {
  height: 100% !important;
}

.side-card {
  display: none !important;
}

.main-area,
main {
  width: 100%
}

.container {
  max-width: 1100px
}

.day-drawer {
  z-index: 1400
}

.drawer-backdrop {
  z-index: 1350
}

@media (max-width:640px) {
  #calendar {
    min-height: calc(100vh - 160px)
  }
}

[data-lang-widget] {
  display: inline-flex !important;
  position: relative !important;
  align-items: center !important
}

[data-lang-widget]>* {
  pointer-events: auto !important
}

.lang-btn {
  pointer-events: auto !important;
  z-index: 1201
}

.lang-menu {
  pointer-events: auto !important;
  z-index: 1202
}

[data-lang-widget].debug-outline {
  outline: 2px dashed rgba(200, 40, 40, 0.7)
}

[data-lang-widget] {
  display: inline-flex !important;
  position: relative !important;
  align-items: center !important;
  pointer-events: none
}

[data-lang-widget] .lang-btn {
  pointer-events: auto;
  z-index: 1201
}

[data-lang-widget][data-open="true"] {
  pointer-events: auto
}

.lang-menu[hidden] {
  display: none !important;
  visibility: hidden !important;
  opacity: 0;
  pointer-events: none
}

[data-lang-widget][data-open="true"] .lang-menu {
  display: block !important;
  visibility: visible;
  opacity: 1;
  pointer-events: auto
}

[data-lang-widget] {
  max-width: 220px
}

.calendar-content {
  flex: 1;
  padding: 24px 32px;
  overflow: auto;
  min-width: 0;
}

#calendar {
  width: 100%;
  height: 100%;
  min-height: calc(100vh - 120px);
  box-sizing: border-box;
  background: var(--card);
  border-radius: 16px;
  padding: 20px;
  box-shadow: var(--shadow);
}

.icon-btn.small-icon {
  width: 36px;
  height: 36px;
  padding: 6px;
  border-radius: 8px
}

.calendar-content {
  flex: 1 1 auto;
  padding: 12px;
  min-height: calc(100vh - 120px);
  box-sizing: border-box;
  height: calc(100vh - 72px)
}

#calendar {
  width: 100%;
  height: 100%;
  min-height: 300px;
  box-sizing: border-box
}

@media (max-width:720px) {
  .left-fixed-sidebar {
    position: fixed;
    left: 0;
    top: 56px;
    height: calc(100vh - 56px);
    z-index: 1200
  }

  .calendar-layout {
    padding-left: 48px
  }
  .sidebar-backdrop{
    display: none;
  }
  body{
    background: var(--bg);
  }
  :root[data-theme="dark"] body{
    background: var(--bg);
  }
}

.calendar-layout {
  display: flex;
  min-height: calc(100vh - 80px);
  box-sizing: border-box;
  height: calc(100vh - 80px);
  gap: 0;
  margin-left: var(--sidebar-open, 10%);
  transition: margin-left var(--sidebar-transition, 0.22s ease);
  min-width: 0;
}

.calendar-layout.sidebar-collapsed {
  margin-left: var(--sidebar-collapsed, 52px);
}

.calendar-content {
  flex: 1 1 auto;
  padding: 0;
  min-height: calc(100vh - 120px);
  box-sizing: border-box;
  width: 100%;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  background: var(--bg);
}




#calendar {
  width: 100%;
  flex: 1 1 auto;
  box-sizing: border-box;
  border-radius: 12px;
  background: var(--card);
  padding: 12px;
  box-shadow: var(--shadow);
  overflow-y: auto;
  overflow-x: hidden;
}


@media (max-width:720px) {
  .calendar-layout {
    padding-left: var(--sidebar-collapsed-w)
  }

  .left-fixed-sidebar {
    top: 56px;
    height: calc(100vh - 56px)
  }
}

:root {
  --header-h: 56px;
  --sidebar-w: 240px
}

.site-header {
  position: sticky;
  top: 0;
  z-index: 1000;
  height: var(--header-h);
  display: flex;
  align-items: center;
  background: var(--card);
  transition: height .22s ease, padding .22s ease, box-shadow .22s ease;
  box-sizing: border-box
}

.site-header .header-inner {
  height: 100%;
  display: flex;
  align-items: center;
  gap: 12px;
  justify-content: space-between;
  padding: 0 12px;
  box-sizing: border-box
}

.main-layout {
  display: flex;
  gap: 20px;
  align-items: flex-start;
  padding: 20px;
  box-sizing: border-box;
  margin-top: 0
}



.calendar-container {
  flex: 1 1 auto;
  min-height: calc(100vh - var(--header-h) - 160px);
  box-sizing: border-box
}

#calendar {
  width: 100%;
  height: 100%;
  min-height: 420px;
  background: var(--card);
  border-radius: 12px;
  padding: 12px;
  box-shadow: var(--shadow);
  box-sizing: border-box
}

.site-footer {
  position: relative;
  z-index: 1;
  margin-top: 24px
}

@media (max-width:880px) {
  .main-layout {
    flex-direction: column
  }

  .left-sidebar {
    width: 100%;
    min-width: 100%;
    order: 0
  }

  .calendar-container {
    order: 1;
    min-height: 60vh
  }
}

.site-header.scrolled {
  height: 52px;
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.06)
}



/* Normalize main content and calendar sizing to avoid forced offsets */
.main,
.calendar-main,
.calendar-wrapper {
  margin-left: 0 !important;
  padding-left: 0 !important;
  box-sizing: border-box;
}
#calendar {
  margin: 0 !important;
  padding: 12px !important;
  width: 100% !important;
  box-sizing: border-box;
}



/* collapsed state */

/* -------------------- HAMBURGER / ARROW BUTTON -------------------- */



/* KALENDARZ NIE JEST PRZESUWANY */
.calendar-content,
#calendar {
  width: 100%;
}

/* Event modal (simple, accessible) */
.ec-modal {
  position: fixed;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 14000;
}

.ec-backdrop {
  position: absolute;
  inset: 0;
}

/* ----- Layout fixes: ensure sidebar height matches calendar and remove horizontal scroll ----- */
:root {
  --header-height: var(--header-h, 72px);
  --footer-height: 0px;
  --sidebar-collapsed-w: 52px;
}

/* Make calendar-layout stretch children to equal height */
.calendar-layout {
  display: flex !important;
  align-items: stretch !important;
  min-height: calc(100vh - var(--header-height)) !important;
  gap: 0 !important;
  box-sizing: border-box !important;
  background: var(--bg);
}


/* If sidebar is fixed, ensure its top/height follow header/footer so bottom aligns with calendar */
.left-fixed-sidebar {
  top: var(--header-height) !important;
  height: calc(100vh - var(--header-height) - var(--footer-height)) !important;
  box-sizing: border-box !important;
}

/* Calendar area should not cause horizontal overflow */
#calendar {
  width: 100% !important;
  box-sizing: border-box !important;
}

/* Ensure calendar-content doesn't add extra horizontal padding causing scroll */
.calendar-content {
  padding-left: 12px !important;
  padding-right: 12px !important;
  padding-top: 16px !important; /* subtle space below header */
  box-sizing: border-box !important;
}

.ec-panel {
  position: relative;
  background: #fff;
  border-radius: 10px;
  padding: 18px;
  width: min(680px, 96%);
  box-shadow: 0 20px 50px rgba(2, 6, 23, 0.16);
  z-index: 14010;
  max-height: 86vh;
  overflow: auto;
}

:root[data-theme="dark"] .ec-panel {
  background: var(--card);
  box-shadow: 0 20px 50px rgba(0, 0, 0, 0.6);
  border: 1px solid rgba(255, 255, 255, 0.08);
  color: var(--text);
}

:root[data-theme="dark"] .ec-panel * {
  color: var(--text);
}

:root[data-theme="dark"] .ec-panel label {
  color: var(--muted);
}

:root[data-theme="dark"] .ec-panel p,
:root[data-theme="dark"] .ec-panel span,
:root[data-theme="dark"] .ec-panel div {
  color: var(--text);
}

.ec-panel h3 {
  margin: 0 0 12px 0;
  font-size: 18px;
  color: var(--text);
}

:root[data-theme="dark"] .ec-panel h3 {
  color: var(--text);
}

.ec-modal-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 12px;
}

.ec-modal-header h3 {
  margin: 0;
}

.ec-delete-btn {
  background: transparent;
  border: none;
  padding: 8px;
  cursor: pointer;
  border-radius: 6px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #ef4444;
  transition: all 0.2s ease;
}

.ec-delete-btn:hover {
  background: rgba(239, 68, 68, 0.1);
  transform: scale(1.1);
}

.ec-delete-btn:active {
  transform: scale(0.95);
}

:root[data-theme="dark"] .ec-delete-btn {
  color: #f87171;
}

:root[data-theme="dark"] .ec-delete-btn:hover {
  background: rgba(248, 113, 113, 0.15);
}

#eventModalForm label {
  display: block;
  font-size: 13px;
  color: var(--muted, #6b7280);
  margin-top: 10px;
  height: 20px;
}

/* Ensure calendar picker labels are horizontal chips, not forced to 20px */
#eventModalForm .calendar-picker-item {
  display: inline-flex; /* override generic label rule */
  height: auto;
  margin-top: 0;
}

#eventModalForm input[type="text"],
#eventModalForm input[type="datetime-local"],
#eventModalForm input[type="date"],
#eventModalForm textarea,
#eventModalForm select {
  width: 80%;
  padding: 10px 12px;
  border: 1px solid rgba(0, 0, 0, 0.06);
  border-radius: 8px;
  background: var(--card);
  color: var(--text);
  font-size: 0.95rem;
  transition: all .16s ease;
  outline: none;
  font-family: inherit;
  resize: vertical;
}

#eventModalForm select {
  cursor: pointer;
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23666' d='M6 9L1 4h10z'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 12px center;
  background-size: 12px;
  padding-right: 36px;
}

#eventModalForm textarea {
  min-height: 60px;
  line-height: 1.5;
}

#eventModalForm textarea:focus {
  border-color: var(--accent, #b78f40);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent, #b78f40) 12%, transparent);
}

#eventModalForm input[type="date"] {
  padding-right: 8px;
}

#eventModalForm input[type="date"]::-webkit-calendar-picker-indicator {
  cursor: pointer;
  filter: invert(0.5);
  opacity: 0.8;
  transition: opacity .16s ease;
}

#eventModalForm input[type="date"]:hover::-webkit-calendar-picker-indicator {
  opacity: 1;
}

#eventModalForm input[type="date"]:focus::-webkit-calendar-picker-indicator {
  opacity: 1;
  filter: invert(0);
}

#eventModalForm input[type="text"]:hover,
#eventModalForm input[type="datetime-local"]:hover,
#eventModalForm input[type="date"]:hover,
#eventModalForm select:hover {
  border-color: rgba(0, 0, 0, 0.12);
  background: color-mix(in srgb, var(--card) 95%, var(--accent) 5%);
}

#eventModalForm input[type="text"]:focus,
#eventModalForm input[type="datetime-local"]:focus,
#eventModalForm input[type="date"]:focus,
#eventModalForm select:focus {
  border-color: var(--accent, #c9ad6a);
  background: var(--card);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent, #c9ad6a) 10%, transparent);
}

:root[data-theme="dark"] #eventModalForm input[type="text"],
:root[data-theme="dark"] #eventModalForm input[type="datetime-local"],
:root[data-theme="dark"] #eventModalForm input[type="date"],
:root[data-theme="dark"] #eventModalForm select {
  border-color: rgba(255, 255, 255, 0.08);
  background: var(--card);
  color: var(--text);
}



:root[data-theme="dark"] #eventModalForm input[type="date"]::-webkit-calendar-picker-indicator {
  filter: invert(0.8);
  opacity: 0.7;
}

:root[data-theme="dark"] #eventModalForm input[type="date"]:hover::-webkit-calendar-picker-indicator {
  opacity: 1;
}

:root[data-theme="dark"] #eventModalForm input[type="date"]:focus::-webkit-calendar-picker-indicator {
  opacity: 1;
  filter: invert(1);
}

:root[data-theme="dark"] #eventModalForm input[type="text"]:hover,
:root[data-theme="dark"] #eventModalForm input[type="datetime-local"]:hover,
:root[data-theme="dark"] #eventModalForm input[type="date"]:hover,
:root[data-theme="dark"] #eventModalForm select:hover {
  border-color: rgba(255, 255, 255, 0.12);
  background: color-mix(in srgb, var(--card) 95%, var(--accent) 5%);
}

:root[data-theme="dark"] #eventModalForm input[type="text"]:focus,
:root[data-theme="dark"] #eventModalForm input[type="datetime-local"]:focus,
:root[data-theme="dark"] #eventModalForm input[type="date"]:focus,
:root[data-theme="dark"] #eventModalForm select:focus {
  border-color: var(--accent, #b78f40);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent, #b78f40) 12%, transparent);
}

/* Timezone section styling */
#timezoneSection {
  margin-top: 12px;
  margin-bottom: 12px;
}

#timezoneSection label {
  display: block;
  font-size: 13px;
  color: var(--muted, #6b7280);
  margin-bottom: 6px;
  height: auto;
}

#timezoneSection select {
  width: 80%;
}

.ec-row {
  display: flex;
  gap: 12px
}

.ec-row>div {
  flex: 1
}

.ec-color-picker {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.ec-color-picker label {
  font-size: 13px;
  color: var(--muted, #6b7280);
  font-weight: 500;
}

.ec-reminder-section {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.ec-reminder-section label.ec-inline {
  font-size: 13px;
  color: var(--muted, #6b7280);
  font-weight: 500;
  margin-top: 10px;
  height: auto;
}

#reminderOptions {
  padding: 12px;
  padding-bottom: 0;
}

#reminderOptions .ec-row {
  margin-top: 0;
}

#reminderOptions label {
  margin-top: 0;
  height: auto;
}

#reminderOptions input[type="number"],
#reminderOptions select {
  width: 90%;
  margin-top: 6px;
  padding: 8px 12px;
  border: 1px solid rgba(0, 0, 0, 0.06);
  border-radius: 8px;
  background: var(--card);
  color: var(--text);
  font-size: 0.95rem;
  transition: all .16s ease;
  outline: none;
}

#reminderOptions input[type="number"]:focus,
#reminderOptions select:focus {
  border-color: var(--accent, #b78f40);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent, #b78f40) 12%, transparent);
}

:root[data-theme="dark"] #reminderOptions {
  background: var(--card, #1f2937);
  border-color: rgba(255, 255, 255, 0.1);
}

:root[data-theme="dark"] #reminderOptions input[type="number"],
:root[data-theme="dark"] #reminderOptions select {
  background: var(--card, #1f2937);
  border-color: rgba(255, 255, 255, 0.1);
  color: var(--text, #f9fafb);
}

.color-palette-wrapper {
  display: flex;
  align-items: center;
  gap: 8px;
}

.color-palette {
  display: flex;
  gap: 10px;
  flex-wrap: nowrap;
  padding: 8px;
  overflow-x: auto;
  overflow-y: hidden;
  scroll-behavior: smooth;
  max-width: 100%;
  flex: 1;
  min-width: 0;
}

.color-palette::-webkit-scrollbar {
  height: 4px;
}

.color-palette::-webkit-scrollbar-track {
  background: transparent;
}

.color-palette::-webkit-scrollbar-thumb {
  background: rgba(0, 0, 0, 0.2);
  border-radius: 2px;
}

.color-palette::-webkit-scrollbar-thumb:hover {
  background: rgba(0, 0, 0, 0.3);
}

.color-option {
  width: 38px;
  height: 38px;
  border-radius: 50%;
  border: 1px solid rgba(0, 0, 0, 0.15);
  cursor: pointer;
  transition: all 0.16s ease;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1);
  position: relative;
  padding: 0;
  flex-shrink: 0;
}

.color-option:hover {
  transform: scale(1.14);
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.22);
  border-color: rgba(0, 0, 0, 0.28);
}

.color-option.active {
  border-color: rgba(0, 0, 0, 0.32);
  border-width: 2px;
  box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.8), 0 0 0 2.5px rgba(0, 0, 0, 0.2), 0 4px 12px rgba(0, 0, 0, 0.12);
  transform: scale(1.08);
}

.color-option.active::after {
  content: '✓';
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  color: white;
  font-weight: 700;
  font-size: 18px;
  text-shadow: 0 2px 6px rgba(0, 0, 0, 0.35);
  line-height: 1;
}

:root[data-theme="dark"] .color-option {
  border-color: rgba(255, 255, 255, 0.18);
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.38);
}

:root[data-theme="dark"] .color-option:hover {
  border-color: rgba(255, 255, 255, 0.35);
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.48);
}

:root[data-theme="dark"] .color-option.active {
  border-color: rgba(255, 255, 255, 0.32);
  box-shadow: 0 0 0 2px rgba(0, 0, 0, 0.4), 0 0 0 3.5px rgba(255, 255, 255, 0.15), 0 4px 12px rgba(0, 0, 0, 0.3);
}

.color-option-custom {
  background: transparent;
  border: 2px dashed rgba(0, 0, 0, 0.3);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--txt, #2c3e50);
  position: relative;
  overflow: hidden;
}

.custom-color-input {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  opacity: 0;
  cursor: pointer;
  border: none;
}

.color-option-custom svg {
  pointer-events: none;
  position: relative;
  z-index: 1;
}

.color-option-custom:hover {
  border-color: var(--accent, #c9ad6a);
  background: rgba(201, 173, 106, 0.1);
}

.color-option-temp {
  position: relative;
  overflow: hidden;
  animation: slideIn 0.2s ease;
}

@keyframes slideIn {
  from {
    opacity: 0;
    transform: scale(0.5);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}

:root[data-theme="dark"] .color-option-custom {
  border-color: rgba(255, 255, 255, 0.3);
  color: var(--txt, #e4e6eb);
}

:root[data-theme="dark"] .color-option-custom:hover {
  border-color: var(--accent, #c9ad6a);
  background: rgba(201, 173, 106, 0.15);
}

.ec-inline {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-top: 10px;
  font-size: 14px
}

.ec-inline input[type="checkbox"] {
  width: 18px;
  height: 18px;
  cursor: pointer;
  appearance: none;
  -webkit-appearance: none;
  background: #ffffff;
  border: 2px solid rgba(0, 0, 0, 0.15);
  border-radius: 4px;
  position: relative;
  transition: all 0.18s ease;
}

.ec-inline input[type="checkbox"]:checked {
  background: #ffffff;
  border-color: var(--accent, #c9ad6a);
}

.ec-inline input[type="checkbox"]:checked::after {
  content: '';
  position: absolute;
  left: 5px;
  top: 2px;
  width: 4px;
  height: 8px;
  border: solid var(--accent, #c9ad6a);
  border-width: 0 2px 2px 0;
  transform: rotate(45deg);
}

:root[data-theme="dark"] .ec-inline input[type="checkbox"] {
  background: var(--bg);
  border-color: rgba(255, 255, 255, 0.2);
}

:root[data-theme="dark"] .ec-inline input[type="checkbox"]:checked {
  border-color: var(--accent, #b78f40);
}

:root[data-theme="dark"] .ec-inline input[type="checkbox"]:checked::after {
  border-color: var(--accent, #b78f40);
}

.ec-actions {
  display: flex;
  gap: 8px;
  justify-content: flex-end;
  margin-top: 14px
}

.btn-primary {
  background: var(--accent, #c9ad6a);
  color: #fff;
  border: none;
  padding: 8px 12px;
  border-radius: 8px;
  cursor: pointer;
  font-weight: 500;
  transition: all .14s ease;
  box-shadow: 0 4px 12px rgba(201, 173, 106, 0.2);
}

.btn-primary:hover {
  background: color-mix(in srgb, var(--accent, #c9ad6a) 90%, black 10%);
  box-shadow: 0 6px 16px rgba(201, 173, 106, 0.28);
  transform: translateY(-1px);
}

.btn-primary:active {
  transform: translateY(0);
  box-shadow: 0 2px 8px rgba(201, 173, 106, 0.16);
}

:root[data-theme="dark"] .btn-primary {
  background: var(--accent, #b78f40);
  box-shadow: 0 4px 12px rgba(183, 143, 64, 0.24);
}

:root[data-theme="dark"] .btn-primary:hover {
  background: color-mix(in srgb, var(--accent, #b78f40) 90%, black 10%);
  box-shadow: 0 6px 16px rgba(183, 143, 64, 0.32);
}

:root[data-theme="dark"] .btn-primary:active {
  box-shadow: 0 2px 8px rgba(183, 143, 64, 0.2);
}

.btn-ghost {
  background: transparent;
  border: 1px solid rgba(11, 18, 32, 0.06);
  padding: 8px 12px;
  border-radius: 8px;
  cursor: pointer;
  color: var(--text)
}

/* Event modal tabs */
.ec-tabs {
  display: flex;
  gap: 8px;
  margin: 4px 0 12px 0;
  border-bottom: 1px solid rgba(0,0,0,0.08);
}
.ec-tab {
  background: transparent;
  border: none;
  border-bottom: 2px solid transparent;
  padding: 8px 10px;
  border-radius: 6px 6px 0 0;
  color: var(--text);
  cursor: pointer;
  font-weight: 500;
}
.ec-tab:hover { background: rgba(0,0,0,0.04); }
.ec-tab.active {
  border-bottom-color: var(--accent, #c9ad6a);
  color: var(--text);
}
.ec-tabpanel { margin-top: 6px; }

:root[data-theme="dark"] .ec-tabs { border-bottom-color: rgba(255,255,255,0.08); }
:root[data-theme="dark"] .ec-tab:hover { background: rgba(255,255,255,0.06); }

/* Calendar picker list inside modal */
.calendar-picker { display: flex; flex-direction: column; gap: 10px; margin-top: 12px; }
.calendar-picker-info { color: var(--muted, #6b7280); font-size: 13px; margin-bottom: 0;
margin-top: 8px; }
.calendar-picker-list { display: flex; gap: 10px; flex-wrap: nowrap; overflow-x: auto; padding: 6px 2px; align-items: center; }
.calendar-picker-list::-webkit-scrollbar { height: 4px; }
.calendar-picker-list::-webkit-scrollbar-track { background: transparent; }
.calendar-picker-list::-webkit-scrollbar-thumb { background: rgba(0,0,0,0.2); border-radius: 2px; }
.calendar-picker-list::-webkit-scrollbar-thumb:hover { background: rgba(0,0,0,0.3); }
.calendar-picker-item { display: inline-flex; align-items: center; gap: 10px; font-size: 14px; line-height: 1.2; padding: 10px 13px; border: 1px solid rgba(0,0,0,0.08); border-radius: 12px; background: color-mix(in srgb, var(--card, #fff) 92%, #f7f2e9 8%); white-space: nowrap; box-shadow: 0 6px 16px rgba(0,0,0,0.04); transition: all .18s ease; cursor: pointer; }
.calendar-picker-item:hover { border-color: rgba(0,0,0,0.16); box-shadow: 0 10px 20px rgba(0,0,0,0.08); transform: translateY(-1px); }
.calendar-picker-item:has(input:checked) { border-color: var(--accent, #c9ad6a);  background: color-mix(in srgb, var(--card, #fff) 88%, var(--accent, #c9ad6a) 12%); }
.calendar-picker-item input[type="checkbox"] {
  width: 18px;
  height: 18px;
  cursor: pointer;
  appearance: none;
  -webkit-appearance: none;
  border: 2px solid rgba(0,0,0,0.16);
  border-radius: 6px;
  background: #fff;
  position: relative;
  transition: all .16s ease;
  margin: 0;
  flex-shrink: 0;
  display: grid;
  place-items: center;
}
.calendar-picker-item input[type="checkbox"]:hover {
  border-color: rgba(0,0,0,0.3);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent, #c9ad6a) 12%, transparent);
}
.calendar-picker-item input[type="checkbox"]:checked {
  border-color: var(--accent, #c9ad6a);
  background: #fff;
}
:root[data-theme="dark"] .calendar-picker-item input[type="checkbox"]:checked {
  background: var(--bg);
}
:root[data-theme="dark"] .calendar-picker-item input[type="checkbox"]{
  background: var(--bg);
}
.calendar-picker-item input[type="checkbox"]:checked::after {
  content: '';
  position: absolute;
  left: 5px;
  top: 2px;
  width: 4px;
  height: 8px;
  border: solid var(--accent, #c9ad6a);
  border-width: 0 2px 2px 0;
  transform: rotate(45deg);
}
.calendar-picker-dot {
  width: 16px;
  height: 16px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(0,0,0,0.18);
  background: var(--accent, #c9ad6a);
  box-shadow: inset 0 0 0 2px rgba(255,255,255,0.9), 0 0 0 2px rgba(255,255,255,0.65);
  flex-shrink: 0;
}
.calendar-picker-item:has(input:checked) .calendar-picker-dot {
  border-color: var(--accent, #c9ad6a);
  box-shadow: inset 0 0 0 2px rgba(255,255,255,0.85);
}
.calendar-picker-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; letter-spacing: 0.1px; color: var(--text, #0b121f); line-height: 1.2; display: inline-flex; align-items: center; }
.calendar-picker-hint { color: var(--muted, #6b7280); font-size: 12px; }

@media (max-width: 520px) {
  .calendar-picker-list { flex-wrap: wrap; }
  .calendar-picker-item { width: calc(50% - 6px); }
}

@media (max-width:520px) {
  .ec-row {
    flex-direction: column
  }

  .ec-panel {
    padding: 12px
  }
}

.toggle-btn {
  cursor: pointer;
  font-size: 22px;
  margin-right: 10px;
  user-select: none;
}

/* === Calendar day hover effect === */
.fc .fc-daygrid-day {
  border-color: rgba(0, 0, 0, 0.04) !important;
  transition: all 0.2s ease;
}

.fc .fc-daygrid-day:not(.fc-day-other):hover {
  background: linear-gradient(135deg, var(--fc-highlight-color) 0%, color-mix(in srgb, var(--accent, #c9ad6a) 5%, transparent) 100%);
  cursor: pointer;
  transform: scale(1.01);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
}

:root[data-theme="dark"] .fc .fc-daygrid-day {
  border-color: rgba(255, 255, 255, 0.03) !important;
}

:root[data-theme="dark"] .fc .fc-daygrid-day:not(.fc-day-other):hover {
  background: linear-gradient(135deg, rgba(255, 255, 255, 0.08) 0%, color-mix(in srgb, var(--accent, #b78f40) 8%, transparent) 100%);
  box-shadow: 0 2px 12px rgba(0, 0, 0, 0.2);
}

/* === SETTINGS & NOTIFICATIONS MODALS === */
.settings-modal {
  position: fixed;
  inset: 0;
  z-index: 15000;
  display: flex;
  align-items: flex-start;
  justify-content: flex-start;
  pointer-events: none;
  padding: 0;
}
.settings-modal:not(:has(.notifications-panel)) {
  align-items: center;
  justify-content: center;
}

.settings-modal[hidden] {
  display: none !important;
}

.settings-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.4);
  z-index: 15000;
  display: none;
}

.settings-modal:not([hidden]) .settings-backdrop {
  display: block;
}

:root[data-theme="dark"] .settings-backdrop {
  background: rgba(0, 0, 0, 0.6);
}

.settings-panel {
  position: relative;
  background: var(--card);
  border-radius: 12px;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.2);
  width: min(600px, 90vw);
  max-height: 80vh;
  overflow-y: auto;
  z-index: 15010;
  display: flex;
  flex-direction: column;
  animation: none;
  pointer-events: auto;
}

.notifications-panel {
  width: min(480px, 92vw);
  position: absolute;
}

.notifications-content {
  max-height: 60vh;
  overflow-y: auto;
}

/* Position notifications modal near the trigger (bell) */
.notifications-modal {
  display: block;
  pointer-events: none;
}

.notifications-modal .settings-panel {
  position: absolute;
  pointer-events: auto;
  animation: none;
  margin: 0;
  box-shadow: 0 8px 32px rgba(0,0,0,0.18);
}

.notifications-modal .settings-backdrop {
  display: block;
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.4);
  z-index: 15000;
}

:root[data-theme="dark"] .notifications-modal .settings-backdrop {
  background: rgba(0, 0, 0, 0.6);
}

.settings-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 24px;
  border-bottom: 1px solid rgba(0, 0, 0, 0.06);
}

.settings-header h2 {
  margin: 0;
  font-size: 20px;
  font-weight: 600;
}

.ics-actions {
  display: flex;
  flex-direction: row;
  gap: 12px;
  flex-wrap: wrap;
}

.ics-actions .btn,
.ics-actions label.btn {
  flex: 1;
  min-width: 140px;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 12px 20px;
  font-size: 14px;
  font-weight: 500;
  border-radius: 8px;
  transition: all 0.2s ease;
}

.ics-actions .btn:hover,
.ics-actions label.btn:hover {
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}

:root[data-theme="dark"] .ics-actions .btn:hover,
:root[data-theme="dark"] .ics-actions label.btn:hover {
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
}

.ics-actions .btn svg,
.ics-actions label.btn svg {
  margin-right: 8px;
  flex-shrink: 0;
}

.ics-status {
  min-height: 20px;
  font-size: 13px;
  line-height: 1.4;
}

.settings-close-btn {
  width: 36px;
  height: 36px;
  border: none;
  background: transparent;
  font-size: 24px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 6px;
  transition: background-color 0.15s ease;
}

.settings-close-btn:hover {
  background-color: rgba(0, 0, 0, 0.06);
}

:root[data-theme="dark"] .settings-close-btn:hover {
  background-color: rgba(255, 255, 255, 0.08);
}

.settings-content {
  flex: 1;
  padding: 24px;
}

.settings-group {
  margin-bottom: 20px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.settings-group:last-child {
  margin-bottom: 0;
}

.settings-group label {
  font-weight: 500;
  font-size: 14px;
}

.colors-settings-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(35px, 1fr));
  gap: 16px; /* Increased gap between colors */
  padding: 8px 0;
}

.color-toggle-btn {
  width: 35px;
  height: 35px;
  border-radius: 6px;
  border: 2px solid rgba(0, 0, 0, 0.12);
  cursor: pointer;
  transition: all 0.2s ease;
  position: relative;
  opacity: 1;
}

.color-toggle-btn:hover {
  transform: scale(1.1);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}

.color-toggle-btn.hidden {
  opacity: 0.5;
  border-style: dashed;
}

:root[data-theme="dark"] .color-toggle-btn {
  border-color: rgba(255, 255, 255, 0.18);
}

:root[data-theme="dark"] .color-toggle-btn:hover {
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.35);
}

.settings-select {
  padding: 10px 12px;
  padding-right: 36px;
  border: 1px solid rgba(0, 0, 0, 0.1);
  border-radius: 8px;
  background: var(--card);
  color: var(--text, #0b1220);
  font-size: 14px;
  cursor: pointer;
  transition: all 0.15s ease;
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23666' d='M6 9L1 4h10z'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 12px center;
  background-size: 12px;
  width: 100%;
}

.settings-select:hover {
  border-color: rgba(0, 0, 0, 0.2);
  background-color: color-mix(in srgb, var(--card) 95%, var(--accent) 5%);
}

.settings-select:focus {
  outline: none;
  border-color: var(--primary, #2b6ef6);
  box-shadow: 0 0 0 3px rgba(43, 110, 246, 0.1);
}

:root[data-theme="dark"] .settings-select {
  border-color: rgba(255, 255, 255, 0.1);
  color: var(--text, #e9ece9);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23ccc' d='M6 9L1 4h10z'/%3E%3C/svg%3E");
}

:root[data-theme="dark"] .settings-select:hover {
  border-color: rgba(255, 255, 255, 0.2);
  background-color: color-mix(in srgb, var(--card) 95%, var(--accent) 5%);
}

:root[data-theme="dark"] .settings-group label {
  color: var(--text, #e9ece9);
}

.settings-footer {
  display: flex;
  gap: 12px;
  justify-content: flex-end;
  padding: 24px;
  border-top: 1px solid rgba(0, 0, 0, 0.06);
}

:root[data-theme="dark"] .settings-header,
:root[data-theme="dark"] .settings-footer {
  border-color: rgba(255, 255, 255, 0.06);
}

:root[data-theme="dark"] .settings-panel {
  background: var(--card);
}

@keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

@keyframes slideInUp {
  from {
    opacity: 0;
    transform: translateY(20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* ==================== FLATPICKR CUSTOMIZATION ==================== */

/* Light Mode Flatpickr Styling */
.flatpickr-calendar {
  background: var(--card, #ffffff);
  border: 1px solid rgba(0, 0, 0, 0.08);
  border-radius: 6px;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
  font-family: "SF Pro Display", -apple-system, BlinkMacSystemFont, sans-serif;
  font-size: 0.85rem;
  width: 280px;
}

.flatpickr-calendar.open {
  animation: slideInUp 0.22s ease;
}

.flatpickr-monthDropdown-months,
.flatpickr-monthDropdown-months .flatpickr-monthDropdown-month {
  background-color: var(--card, #ffffff);
  color: var(--text, #1f2933);
}

.flatpickr-prev,
.flatpickr-next {
  color: var(--text, #1f2933);
  fill: var(--text, #1f2933);
  border-radius: 3px;
  transition: 0.22s ease;
  width: 24px;
  height: 24px;
  padding: 2px;
  font-size: 0.75rem;
}

.flatpickr-prev:hover,
.flatpickr-next:hover {
  background: var(--black-overlay, rgba(0, 0, 0, 0.04));
  color: var(--accent, #c9ad6a);
  fill: var(--accent, #c9ad6a);
}

.flatpickr-current-month {
  color: var(--text, #1f2933);
  font-weight: 500;
  font-size: 0.9rem;
}

.flatpickr-weekdays {
  background: var(--card, #ffffff);
}

.flatpickr-weekday {
  color: var(--muted, #8897a6);
  font-weight: 500;
  font-size: 0.7rem;
  padding: 4px 0;
}

.flatpickr-day {
  color: var(--text, #1f2933);
  border-radius: 3px;
  transition: 0.16s ease;
  font-size: 0.8rem;
  width: 32px;
  height: 32px;
  line-height: 32px;
  padding: 0;
}

.flatpickr-day:hover {
  background: var(--black-overlay, rgba(0, 0, 0, 0.04));
  border-color: transparent;
  color: var(--accent, #c9ad6a);
}

.flatpickr-day.today {
  border-color: var(--accent, #c9ad6a);
  color: var(--accent, #c9ad6a);
  font-weight: 500;
}

.flatpickr-day.selected,
.flatpickr-day.startRange,
.flatpickr-day.endRange,
.flatpickr-day.selected.inRange {
  background: var(--accent, #c9ad6a);
  border-color: var(--accent, #c9ad6a);
  color: var(--white, #ffffff);
}

.flatpickr-day.selected:hover,
.flatpickr-day.startRange:hover,
.flatpickr-day.endRange:hover {
  background: color-mix(in srgb, var(--accent, #c9ad6a) 90%, black);
  border-color: color-mix(in srgb, var(--accent, #c9ad6a) 90%, black);
}

.flatpickr-day.inRange {
  background: color-mix(in srgb, var(--accent, #c9ad6a) 15%, transparent);
  border-color: transparent;
}

.flatpickr-day.disabled,
.flatpickr-day.prevMonthDay,
.flatpickr-day.nextMonthDay {
  color: var(--muted, #8897a6);
}

.flatpickr-time {
  background: var(--card, #ffffff);
  border-top: 1px solid rgba(0, 0, 0, 0.08);
}

.flatpickr-time input {
  color: var(--text, #1f2933);
  background: transparent;
  font-size: 0.85rem;
  font-weight: 500;
}

.flatpickr-hour,
.flatpickr-minute,
.flatpickr-second {
  color: var(--text, #1f2933);
  background: transparent;
  font-size: 0.85rem;
  font-weight: 500;
}

.flatpickr-hour input,
.flatpickr-minute input,
.flatpickr-second input {
  color: var(--text, #1f2933);
  background: var(--black-overlay, rgba(0, 0, 0, 0.04));
  border: 1px solid rgba(0, 0, 0, 0.08);
  border-radius: 3px;
  padding: 4px 6px;
  font-size: 0.85rem;
  font-weight: 500;
  width: 40px;
  text-align: center;
  transition: 0.16s ease;
}

/* Strzałki spinner buttons - light mode */
.flatpickr-hour input::-webkit-outer-spin-button,
.flatpickr-minute input::-webkit-outer-spin-button,
.flatpickr-second input::-webkit-outer-spin-button,
.arrowUp {
  -webkit-appearance: none;
  appearance: none;
  margin: 0;
  width: 18px;
  height: 100%;
  cursor: pointer;
  background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 6"><path d="M8 5L5 2L2 5" stroke="%23c9ad6a" stroke-width="1" fill="none" stroke-linecap="round" stroke-linejoin="round"/></svg>') center no-repeat;
  background-size: 6px 4px;
  border: none;
  padding: 0;
}

.flatpickr-hour input::-webkit-inner-spin-button,
.flatpickr-minute input::-webkit-inner-spin-button,
.flatpickr-second input::-webkit-inner-spin-button,
.arrowDown {
  -webkit-appearance: none;
  appearance: none;
  margin: 0;
  width: 18px;
  height: 100%;
  cursor: pointer;
  background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 6"><path d="M2 1L5 4L8 1" stroke="%23c9ad6a" stroke-width="1" fill="none" stroke-linecap="round" stroke-linejoin="round"/></svg>') center no-repeat;
  background-size: 6px 4px;
  border: none;
  padding: 0;
}

.flatpickr-hour input:hover,
.flatpickr-minute input:hover,
.flatpickr-second input:hover,
.flatpickr-hour input:focus,
.flatpickr-minute input:focus,
.flatpickr-second input:focus {
  background: var(--white, #ffffff);
  border-color: var(--accent, #c9ad6a);
  outline: none;
  box-shadow: 0 0 0 2px rgba(201, 173, 106, 0.1);
}

.flatpickr-time .flatpickr-am-pm {
  color: var(--text, #1f2933);
  background: transparent;
  font-size: 0.8rem;
  font-weight: 500;
  padding: 0 6px;
}

.flatpickr-time .flatpickr-am-pm:hover,
.flatpickr-time .flatpickr-am-pm:focus {
  background: var(--black-overlay, rgba(0, 0, 0, 0.04));
  border-radius: 3px;
}

/* Dark Mode Flatpickr Styling */
:root[data-theme="dark"] .flatpickr-calendar {
  background: var(--card, #1f2e42);
  border: 1px solid rgba(255, 255, 255, 0.08);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.24);
  font-size: 0.85rem;
  width: 280px;
}

:root[data-theme="dark"] .flatpickr-monthDropdown-months,
:root[data-theme="dark"] .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month {
  background-color: var(--card, #1f2e42);
  color: var(--text, #e6e6e2);
}

:root[data-theme="dark"] .flatpickr-prev,
:root[data-theme="dark"] .flatpickr-next {
  color: var(--text, #e6e6e2);
  fill: var(--text, #e6e6e2);
  width: 24px;
  height: 24px;
  padding: 2px;
  font-size: 0.75rem;
}

:root[data-theme="dark"] .flatpickr-prev:hover,
:root[data-theme="dark"] .flatpickr-next:hover {
  background: rgba(255, 255, 255, 0.08);
  color: var(--accent, #b78f40);
  fill: var(--accent, #b78f40);
}

:root[data-theme="dark"] .flatpickr-current-month {
  color: var(--text, #e6e6e2);
  font-weight: 500;
  font-size: 0.9rem;
}

:root[data-theme="dark"] .flatpickr-weekday {
  color: var(--muted, #a0b0bf);
  font-size: 0.7rem;
  padding: 4px 0;
}

:root[data-theme="dark"] .flatpickr-day {
  color: var(--text, #e6e6e2);
  font-size: 0.8rem;
  width: 32px;
  height: 32px;
  line-height: 32px;
  padding: 0;
}

:root[data-theme="dark"] .flatpickr-day:hover {
  background: rgba(255, 255, 255, 0.08);
  color: var(--accent, #b78f40);
}

:root[data-theme="dark"] .flatpickr-day.today {
  border-color: var(--accent, #b78f40);
  color: var(--accent, #b78f40);
}

:root[data-theme="dark"] .flatpickr-day.selected,
:root[data-theme="dark"] .flatpickr-day.startRange,
:root[data-theme="dark"] .flatpickr-day.endRange,
:root[data-theme="dark"] .flatpickr-day.selected.inRange {
  background: var(--accent, #b78f40);
  border-color: var(--accent, #b78f40);
  color: var(--bg, #0f1720);
}

:root[data-theme="dark"] .flatpickr-day.selected:hover,
:root[data-theme="dark"] .flatpickr-day.startRange:hover,
:root[data-theme="dark"] .flatpickr-day.endRange:hover {
  background: color-mix(in srgb, var(--accent, #b78f40) 110%, white);
  border-color: color-mix(in srgb, var(--accent, #b78f40) 110%, white);
}

:root[data-theme="dark"] .flatpickr-day.inRange {
  background: color-mix(in srgb, var(--accent, #b78f40) 15%, transparent);
}

:root[data-theme="dark"] .flatpickr-day.disabled,
:root[data-theme="dark"] .flatpickr-day.prevMonthDay,
:root[data-theme="dark"] .flatpickr-day.nextMonthDay {
  color: var(--muted, #a0b0bf);
}

:root[data-theme="dark"] .flatpickr-time {
  background: var(--card, #1f2e42);
  border-top: 1px solid rgba(255, 255, 255, 0.08);
}

:root[data-theme="dark"] .flatpickr-time input {
  color: var(--text, #e6e6e2);
  background: transparent;
  font-size: 0.85rem;
  font-weight: 500;
}

:root[data-theme="dark"] .flatpickr-hour,
:root[data-theme="dark"] .flatpickr-minute,
:root[data-theme="dark"] .flatpickr-second {
  color: var(--text, #e6e6e2);
  background: transparent;
  font-size: 0.85rem;
  font-weight: 500;
}

:root[data-theme="dark"] .flatpickr-hour input,
:root[data-theme="dark"] .flatpickr-minute input,
:root[data-theme="dark"] .flatpickr-second input {
  color: var(--text, #e6e6e2);
  background: rgba(255, 255, 255, 0.06);
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: 3px;
  padding: 4px 6px;
  font-size: 0.85rem;
  font-weight: 500;
  width: 40px;
  text-align: center;
  transition: 0.16s ease;
}

/* Strzałki spinner buttons - dark mode */
:root[data-theme="dark"] .flatpickr-hour input::-webkit-outer-spin-button,
:root[data-theme="dark"] .flatpickr-minute input::-webkit-outer-spin-button,
:root[data-theme="dark"] .flatpickr-second input::-webkit-outer-spin-button,
:root[data-theme="dark"] .arrowUp {
  -webkit-appearance: none;
  appearance: none;
  margin: 0;
  width: 18px;
  height: 100%;
  cursor: pointer;
  background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 6"><path d="M8 5L5 2L2 5" stroke="%23b78f40" stroke-width="1" fill="none" stroke-linecap="round" stroke-linejoin="round"/></svg>') center no-repeat;
  background-size: 6px 4px;
  border: none;
  padding: 0;
}

:root[data-theme="dark"] .flatpickr-hour input::-webkit-inner-spin-button,
:root[data-theme="dark"] .flatpickr-minute input::-webkit-inner-spin-button,
:root[data-theme="dark"] .flatpickr-second input::-webkit-inner-spin-button,
:root[data-theme="dark"] .arrowDown {
  -webkit-appearance: none;
  appearance: none;
  margin: 0;
  width: 18px;
  height: 100%;
  cursor: pointer;
  background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 6"><path d="M2 1L5 4L8 1" stroke="%23b78f40" stroke-width="1" fill="none" stroke-linecap="round" stroke-linejoin="round"/></svg>') center no-repeat;
  background-size: 6px 4px;
  border: none;
  padding: 0;
}

:root[data-theme="dark"] .flatpickr-hour input:hover,
:root[data-theme="dark"] .flatpickr-minute input:hover,
:root[data-theme="dark"] .flatpickr-second input:hover,
:root[data-theme="dark"] .flatpickr-hour input:focus,
:root[data-theme="dark"] .flatpickr-minute input:focus,
:root[data-theme="dark"] .flatpickr-second input:focus {
  background: rgba(255, 255, 255, 0.08);
  border-color: var(--accent, #b78f40);
  outline: none;
  box-shadow: 0 0 0 2px rgba(183, 143, 64, 0.15);
}

:root[data-theme="dark"] .flatpickr-time .flatpickr-am-pm {
  color: var(--text, #e6e6e2);
  background: transparent;
  font-size: 0.8rem;
  font-weight: 500;
  padding: 0 6px;
}

:root[data-theme="dark"] .flatpickr-time .flatpickr-am-pm:hover,
:root[data-theme="dark"] .flatpickr-time .flatpickr-am-pm:focus {
  background: rgba(255, 255, 255, 0.08);
  border-radius: 3px;
}

.sidebar-toggle-arrow {
  position: absolute;
  top: 50%;
  right: -16px;
  transform: translateY(-50%);
  width: 32px;
  height: 32px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: none !important;
  border: none !important;
  border-radius: 0;
  cursor: pointer;
  box-shadow: none !important;
  transition: all 0.22s ease;
  backdrop-filter: none;
  z-index: 110;
  padding: 0;
  outline: none !important;
}

.sidebar-toggle-arrow::before {
  content: '';
  position: absolute;
  width: 100%;
  height: 100%;
  background: radial-gradient(circle, rgba(0,0,0,0.08) 0%, transparent 70%);
  border-radius: 50%;
  opacity: 0;
  transition: opacity 0.22s ease;
}

.sidebar-toggle-arrow:hover::before {
  opacity: 1;
}

.sidebar-toggle-arrow:active {
  transform: translateY(-50%) scale(0.95);
}

.sidebar-toggle-arrow:focus-visible {
  outline: none;
  box-shadow: none;
  border: none;
}

:root[data-theme="dark"] .sidebar-toggle-arrow:focus-visible {
  outline: none;
  box-shadow: none;
  border: none;
}

.sidebar-toggle-arrow svg {
  width: 20px;
  height: 20px;
  stroke: var(--text, #1f2933);
  stroke-width: 2.5;
  fill: none;
  stroke-linecap: round;
  stroke-linejoin: round;
  transition: all 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
  opacity: 0;
}

.left-fixed-sidebar:hover .sidebar-toggle-arrow svg {
  opacity: 1;
}

/* Tablets: always show sidebar toggle arrow */
@media (min-width: 769px) and (max-width: 1024px) {
  .sidebar-toggle-arrow svg {
    opacity: 1;
  }
}

.sidebar-toggle-arrow:hover svg {
  filter: drop-shadow(0 4px 12px rgba(31, 41, 51, 0.15));
}

.left-fixed-sidebar.collapsed .sidebar-toggle-arrow svg {
  transform: scaleX(-1);
}

:root[data-theme="dark"] .sidebar-toggle-arrow {
  background: none;
  border: none;
  box-shadow: none;
}

:root[data-theme="dark"] .sidebar-toggle-arrow::before {
  background: radial-gradient(circle, rgba(255,255,255,0.06) 0%, transparent 70%);
}

:root[data-theme="dark"] .sidebar-toggle-arrow svg {
  stroke: var(--text, #e6e6e2);
}

:root[data-theme="dark"] .left-fixed-sidebar:hover .sidebar-toggle-arrow svg {
  filter: drop-shadow(0 4px 12px rgba(0, 0, 0, 0.4));
}
/* ============================================
   SIDEBAR STYLES
   ============================================ */

:root {
  --sidebar-open: 252px;
  --sidebar-collapsed: 252px;
  --sidebar-transition: 0.22s ease;
}

/* === HEADER LAYOUT === */
.site-header .header-inner {
  display: grid;
  grid-template-columns: 1fr auto auto;
  align-items: center;
  height: 100%;
}

/* LOGO – center */
.site-header .brand-left {
  grid-column: 2;
  justify-self: center;
}

/* RIGHT SIDE */
.site-header .brand-right {
  grid-column: 3;
  justify-self: end;
  display: flex;
  align-items: center;
  gap: 12px;
}

/* LOGO max height */
.site-header svg {
  max-height: 56px;
}

/* Make SVG logo responsive and limit width */
.brand-left svg {
  max-width: 320px;
  width: 100%;
  height: auto;
  display: block;
}

/* === SIDEBAR CONTAINER === */
.left-fixed-sidebar {
  position: fixed;
  left: 0;
  top: var(--header-height, 72px);
  width: var(--sidebar-open);
  height: calc(100vh - var(--header-height, 72px) - var(--footer-height, 48px));
  background: var(--card, #fff);
  border-right: 1px solid rgba(0, 0, 0, 0.04);
  transition: width var(--sidebar-transition);
  box-sizing: border-box;
  z-index: 20;
}

:root[data-theme="dark"] .left-fixed-sidebar {
  background: var(--card);
  border-right: 1px solid rgba(255, 255, 255, 0.08);
}

.left-fixed-sidebar.collapsed {
  width: 64px;
  min-width: 64px;
  transition: width var(--sidebar-transition);
  overflow-x: visible;
}

.calendar-layout.sidebar-collapsed {
  margin-left: 64px !important;
  transition: margin-left var(--sidebar-transition);
}

.sidebar-toggle-arrow {
  z-index: 110;
}

/* === TOGGLE BUTTON === */
.sidebar-toggle {
  position: absolute;
  top: 16px;
  right: 0;
  width: 36px;
  height: 36px;
  border-radius: 8px;
  background: #fff;
  border: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 6px 16px rgba(0, 0, 0, .08);
  z-index: 100;
  transition: all 0.2s ease;
}

:root[data-theme="dark"] .sidebar-toggle {
  background: var(--card);
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.4);
  border: 1px solid rgba(255, 255, 255, 0.1);
}

:root[data-theme="dark"] .sidebar-toggle:hover {
  background: rgba(255, 255, 255, 0.08);
  box-shadow: 0 8px 20px rgba(0, 0, 0, 0.5);
}

/* Arrow – chevron */
.sidebar-toggle .arrow {
  width: 10px;
  height: 10px;
  border-right: 2px solid #333;
  border-bottom: 2px solid #333;
  transform: rotate(135deg);
  transition: transform var(--sidebar-transition);
}

:root[data-theme="dark"] .sidebar-toggle .arrow {
  border-right-color: var(--text);
  border-bottom-color: var(--text);
}

.left-fixed-sidebar.collapsed .arrow {
  transform: rotate(-45deg);
}

/* === SIDEBAR INNER === */
.sidebar-inner {
  display: flex;
  flex-direction: column;
  height: 100%;
}

/* Event Search */
.sidebar-search-wrapper {
  position: relative;
  margin-bottom: 8px;
}

.sidebar-search-input {
  width: 90%;
  padding: 5px 36px 5px 12px;
  border: 1px solid rgba(0, 0, 0, 0.08);
  border-radius: 8px;
  background: var(--card, #fff);
  color: var(--text, #1f2933);
  font-size: 14px;
  transition: all 0.16s ease;
  outline: none;
}

.sidebar-search-input:focus {
  border-color: var(--accent, #c9ad6a);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent, #c9ad6a) 12%, transparent);
}

.sidebar-search-icon {
  position: absolute;
  right: 12px;
  top: 50%;
  transform: translateY(-50%);
  width: 18px;
  height: 18px;
  color: var(--muted, #6f756f);
  pointer-events: none;
}

.sidebar-search-results {
  margin-top: 8px;
  max-height: 300px;
  overflow-y: auto;
  border: 1px solid rgba(0, 0, 0, 0.08);
  border-radius: 8px;
  background: var(--card, #fff);
}

:root[data-theme="dark"] .sidebar-search-results {
  border-color: rgba(255, 255, 255, 0.1);
  background: var(--card);
}

.sidebar-search-result-item {
  padding: 10px 12px;
  border-bottom: 1px solid rgba(0, 0, 0, 0.05);
  cursor: pointer;
  transition: background 0.16s ease;
}

:root[data-theme="dark"] .sidebar-search-result-item {
  border-bottom-color: rgba(255, 255, 255, 0.08);
}

.sidebar-search-result-item:last-child {
  border-bottom: none;
}

.sidebar-search-result-item:hover {
  background: rgba(0, 0, 0, 0.03);
}

:root[data-theme="dark"] .sidebar-search-result-item:hover {
  background: rgba(255, 255, 255, 0.06);
}

.sidebar-search-result-title {
  font-weight: 500;
  font-size: 14px;
  color: var(--text, #1f2933);
  margin-bottom: 4px;
}

.sidebar-search-result-date {
  font-size: 12px;
  color: var(--muted, #6f756f);
}

.sidebar-search-no-results {
  padding: 16px;
  text-align: center;
  color: var(--muted, #6f756f);
  font-size: 14px;
}

:root[data-theme="dark"] .sidebar-search-input {
  background: var(--card, #1f2937);
  border-color: rgba(255, 255, 255, 0.1);
  color: var(--text, #f9fafb);
}

:root[data-theme="dark"] .sidebar-search-input:focus {
  border-color: var(--accent, #b78f40);
}

:root[data-theme="dark"] .sidebar-search-results {
  border-color: rgba(255, 255, 255, 0.1);
  background: var(--card, #1f2937);
}

:root[data-theme="dark"] .sidebar-search-result-item {
  border-bottom-color: rgba(255, 255, 255, 0.05);
}

:root[data-theme="dark"] .sidebar-search-result-item:hover {
  background: rgba(255, 255, 255, 0.05);
}

.sidebar-block {
  padding: 6px 8px;
}

.sidebar-accordion-row {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 0;
  background: none !important;
  box-shadow: none !important;
}

.sidebar-accordion {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 8px;
  border: none !important;
  background: none !important;
  color: var(--muted, #6f756f);
  padding: 6px 10px;
  border-radius: 8px;
  font-weight: 700;
  letter-spacing: 0.03em;
  text-transform: none;
  font-size: 0.86rem;
  transition: color 0.16s ease;
  appearance: none;
  box-shadow: none !important;
  outline: none !important;
}

.sidebar-icon-btn {
  width: 28px;
  height: 28px;
  display: grid;
  place-items: center;
  border: none !important;
  background: none !important;
  color: var(--muted, #6f756f);
  border-radius: 0;
  font-size: 1.1rem; /* slightly smaller to match tighter padding */
  font-weight: 700;
  line-height: 1;
  transition: color 0.16s ease;
  padding: 0 !important;
  appearance: none;
}

#calendarAddBtn {
  background: none !important;
  border: none !important;
  box-shadow: none !important;
  outline: none !important;
}

#calendarAddBtn:hover,
#calendarAddBtn:focus,
#calendarAddBtn:active,
#calendarAddBtn:focus-visible {
  background: none !important;
  border: none !important;
  box-shadow: none !important;
  outline: none !important;
}

.sidebar-icon-btn:hover {
  color: color-mix(in srgb, var(--muted, #6f756f) 70%, transparent 30%);
  background: none !important;
}

:root[data-theme="dark"] .sidebar-icon-btn:hover {
  color: color-mix(in srgb, var(--muted, #9aa3a6) 70%, transparent 30%);
  background: none !important;
}

.sidebar-icon-btn:focus-visible,
.sidebar-icon-btn:active {
  outline: none !important;
  box-shadow: none !important;
  background: none !important;
}

.sidebar-accordion:hover {
  color: var(--text, #1f2933);
}

:root[data-theme="dark"] .sidebar-accordion:hover {
  color: var(--text, #e6e6e2);
}

.sidebar-accordion:focus-visible {
  outline: none;
  box-shadow: none !important;
}

.accordion-caret {
  font-size: 0.9rem;
  color: var(--muted, #6f756f);
  transition: transform 0.2s ease, color 0.16s ease;
}

.sidebar-accordion.open .accordion-caret,
.sidebar-accordion[aria-expanded="true"] .accordion-caret {
  transform: rotate(90deg);
  color: var(--text, #1f2933);
}

.sidebar-accordion-label {
  flex: 1;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}


/* Make the calendar icon sit tightly next to the label text */
.sidebar-accordion-label .icon-calendar {
  width: 18px;
  height: 18px;
  margin-right: 6px;
  color: var(--muted, #6f756f);
  vertical-align: -2px;
}

/* Bell icon spacing same as calendar */
.sidebar-accordion-label .icon-bell {
  width: 18px;
  height: 18px;
  margin-right: 6px;
  color: var(--muted, #6f756f);
  vertical-align: -1px; /* slightly lower to align with text baseline */
  transform: translateY(1px);
}

/* Search icon spacing same as calendar and bell */
.sidebar-accordion-label .icon-search {
  width: 18px;
  height: 18px;
  margin-right: 6px;
  color: var(--muted, #6f756f);
  vertical-align: -1px;
  transform: translateY(1px);
}

.sidebar-accordion-panel {
  padding: 12px 14px 0 14px;
}

/* Collapsed sidebar: show only the icon, slightly larger */
.left-fixed-sidebar.collapsed .accordion-caret { display: none; }
.left-fixed-sidebar.collapsed .sidebar-accordion-label { display: inline-flex; align-items: center; justify-content: center; width: 100%; }
.left-fixed-sidebar.collapsed .sidebar-accordion-label .label-text { display: none; }
.left-fixed-sidebar.collapsed .sidebar-accordion-label .icon-calendar { width: 32px; height: 32px; margin-right: 0; }
.left-fixed-sidebar.collapsed .sidebar-accordion-label .icon-bell { width: 32px; height: 32px; margin-right: 0; }
.left-fixed-sidebar.collapsed .sidebar-accordion-label .icon-search { width: 32px; height: 32px; margin-right: 0; cursor: pointer; }

/* When sidebar is expanded, hide search toggle button and show only search input */
.left-fixed-sidebar:not(.collapsed) .sidebar-search-toggle-row {
  display: none;
}

.left-fixed-sidebar:not(.collapsed) #searchPanel {
  display: block !important;
}
/* Hide the + add button in collapsed mode */
.left-fixed-sidebar.collapsed #calendarAddBtn { display: none !important; }

/* Notifications row should visually match the Calendars accordion */
#sidebarNotifications .sidebar-accordion {
  color: var(--muted, #6f756f);
}
#sidebarNotifications .sidebar-accordion:hover {
  color: var(--text, #1f2933);
}
#sidebarNotifications .sidebar-accordion svg {
  width: 18px;
  height: 18px;
}

/* Override bell size in collapsed sidebar despite #sidebarNotifications base sizing */
.left-fixed-sidebar.collapsed #sidebarNotifications .sidebar-accordion svg {
  width: 30px;
  height: 30px;
}

.calendar-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.calendar-item:not(.calendar-selected) .calendar-name {
  color: rgba(0, 0, 0, 0.45);
  font-weight: 500;
}
.calendar-item:not(.calendar-selected) .calendar-dot {
  background: rgba(0, 0, 0, 0.18);
}
.calendar-item:not(.calendar-selected) .calendar-check {
  border-color: rgba(0, 0, 0, 0.22);
  background: #f8f8f8;
}

.calendar-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 4px 2px;
  border-radius: 8px;
  background: transparent;
  box-shadow: none;
  cursor: move; /* Show move cursor on draggable items */
  user-select: none; /* Prevent text selection during drag */
  transition: background-color 0.2s ease;
}

.calendar-item.dragging {
  opacity: 0.5;
}

.calendar-item.drag-over {
  background: var(--hover-bg, rgba(0, 0, 0, 0.08));
  border-top: 2px solid var(--primary-color, #c9ad6a);
}

:root[data-theme="dark"] .calendar-item.drag-over {
  background: rgba(255, 255, 255, 0.1);
  border-top-color: var(--primary-color, #c9ad6a);
}

/* Dark theme: "not selected" states */
:root[data-theme="dark"] .calendar-item:not(.calendar-selected) .calendar-name {
  color: rgba(255, 255, 255, 0.65);
}
:root[data-theme="dark"] .calendar-item:not(.calendar-selected) .calendar-dot {
  background: rgba(255, 255, 255, 0.35);
}
:root[data-theme="dark"] .calendar-item:not(.calendar-selected) .calendar-check {
  border-color: rgba(255, 255, 255, 0.2);
  background: var(--card);
}
.calendar-select {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  cursor: pointer;
}

.calendar-check {
  width: 18px;
  height: 18px;
  cursor: pointer;
  appearance: none;
  -webkit-appearance: none;
  background: #ffffff;
  border: 2px solid rgba(0, 0, 0, 0.15);
  border-radius: 4px;
  position: relative;
  transition: all 0.18s ease;
}

.calendar-check:focus,
.calendar-check:focus-visible,
.calendar-check:active {
  outline: none;
  box-shadow: none;
}

.calendar-check:checked {
  background: #ffffff;
  border-color: var(--accent, #c9ad6a);
}

.calendar-check:checked::after {
  content: '';
  position: absolute;
  left: 5px;
  top: 2px;
  width: 4px;
  height: 8px;
  border: solid var(--accent, #c9ad6a);
  border-width: 0 2px 2px 0;
  transform: rotate(45deg);
}

:root[data-theme="dark"] .calendar-check {
  background: var(--card);
  border-color: rgba(255, 255, 255, 0.2);
}

:root[data-theme="dark"] .calendar-check:checked {
  border-color: var(--accent, #b78f40);
}

:root[data-theme="dark"] .calendar-check:checked::after {
  border-color: var(--accent, #b78f40);
}

.calendar-check:hover,
:root[data-theme="dark"] .calendar-check:hover {
  box-shadow: none;
}

.calendar-item.calendar-selected .calendar-name {
  color: var(--text, #1f2933);
  font-weight: 700;
}

:root[data-theme="dark"] .calendar-item.calendar-selected .calendar-name {
  color: var(--text, #e6e6e2);
}

:root[data-theme="dark"] .calendar-item {
  background: transparent;
  box-shadow: none;
}

.calendar-item:hover {
  background: var(--black-overlay, rgba(0, 0, 0, 0.04));
}

:root[data-theme="dark"] .calendar-item:hover {
  background: rgba(255, 255, 255, 0.06);
}

.calendar-dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: var(--accent, #c9ad6a);
  box-shadow: none;
}

.calendar-name {
  font-weight: 600;
  color: var(--text, #1f2933);
}

/* Three-dots action button in calendar list */
.calendar-more-btn {
  margin-left: auto;
  width: 30px;
  height: 30px;
  border-radius: 6px;
  border: 1px solid rgba(0, 0, 0, 0.08);
  background: var(--card, #ffffff);
  color: var(--text, #1f2933);
  display: none; /* hidden by default; shown on hover in expanded mode */
  align-items: center;
  justify-content: center;
  line-height: 1;
  font-size: 16px;
  cursor: pointer;
  transition: border-color 0.15s ease, box-shadow 0.15s ease, transform 0.08s ease;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
}
.left-fixed-sidebar:not(.collapsed) .calendar-item:hover .calendar-more-btn,
.left-fixed-sidebar:not(.collapsed) .calendar-item:focus-within .calendar-more-btn {
  display: inline-flex;
}
.calendar-more-btn:hover {
  background: var(--card, #ffffff);
  border-color: rgba(0, 0, 0, 0.16);
}
.calendar-more-btn:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent, #c9ad6a) 28%, transparent);
  border-color: var(--accent, #c9ad6a);
}
.calendar-more-btn:active {
  transform: translateY(1px);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12) inset;
}

:root[data-theme="dark"] .calendar-more-btn {
  background: var(--card, #0f1a22);
  color: var(--text, #e6e6e2);
  border-color: rgba(255, 255, 255, 0.10);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.35);
}
:root[data-theme="dark"] .calendar-more-btn:hover {
  background: var(--card, #0f1a22);
  border-color: rgba(255, 255, 255, 0.18);
}

/* Hide per-item actions in collapsed sidebar */
.left-fixed-sidebar.collapsed .calendar-more-btn,
.left-fixed-sidebar.collapsed .calendar-list .calendar-more-btn,
.left-fixed-sidebar.collapsed .calendar-item .calendar-more-btn {
  display: none !important;
}
/* Also hide when layout carries collapsed state (safety) */
.calendar-layout.sidebar-collapsed .calendar-more-btn {
  display: none !important;
}

/* Hide calendar list when sidebar is collapsed */
/* Animate calendar list when sidebar collapses/expands */
#calendarListPanel {
  overflow: hidden;
  max-height: 520px; /* reasonable cap; adjust if list larger */
  opacity: 1;
  transform-origin: top;
  transition: max-height 220ms ease, opacity 180ms ease, transform 180ms ease;
}
.left-fixed-sidebar.collapsed #calendarListPanel {
  max-height: 0;
  opacity: 0;
  transform: translateY(-4px);
  pointer-events: none;
}

.left-fixed-sidebar.collapsed .sidebar-accordion {
  justify-content: center;
  padding: 10px 8px;
}

.left-fixed-sidebar.collapsed .sidebar-accordion-label {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
}

.left-fixed-sidebar.collapsed .sidebar-accordion-panel {
  box-shadow: none; 
  outline: none;
}

.left-fixed-sidebar.collapsed .sidebar-accordion-row {
  justify-content: center;
}

/* In collapsed mode, show only the icon (hide text), enlarge slightly */
.left-fixed-sidebar.collapsed .sidebar-accordion-label .label-text { display: none; }
.left-fixed-sidebar.collapsed .sidebar-accordion-label .icon-bell {
  width: 30px;
  height: 30px;
  margin-right: 0;
  transform: translateY(0); /* reset tweak for centered collapsed icon */
}

/* === SIDEBAR USER SECTION === */
.sidebar-user {
  position: absolute;
  bottom: 12px;
  box-shadow: none; 
  outline: none;
  width: 100%;
  padding: 10px 8px;
  box-sizing: border-box;
  border-top: 1px solid;
  border-color: rgba(0, 0, 0, .06);
  background: transparent;
}

.sidebar-user-wrapper {
  position: relative;
  width: 100%;
}

.sidebar-user-btn {
  width: 100%;
  text-align: center;
  border: none;
  background: transparent;
  color: var(--muted-text, #cfcfcf);
  font-size: 14px;
  padding: 6px 8px;
  cursor: pointer;
  display: inline-block;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  transition: background-color 0.15s ease;
}

.sidebar-user-btn:hover {
  background-color: rgba(0, 0, 0, .04);
}

.sidebar-user-btn:focus {
  outline: 2px solid rgba(100, 150, 250, 0.2);
  outline-offset: 2px;
}

:root[data-theme="dark"] .sidebar-user-btn:hover {
  background-color: rgba(255, 255, 255, .08);
}

/* === USER MENU DROPDOWN === */
.sidebar-user-menu {
  position: absolute;
  bottom: 100%;
  left: 8px;
  width: 220px;
  background: var(--card, #fff);
  border: 1px solid rgba(0, 0, 0, .06);
  border-radius: 8px;
  box-shadow: 0 10px 32px rgba(0, 0, 0, 0.12);
  margin-bottom: 8px;
  z-index: 2000;
  overflow: hidden;
  animation: slideUp 0.2s ease-out;
}

.sidebar-user-menu[hidden] {
  display: none;
}

.sidebar-logout-btn {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  border: none;
  background: transparent;
  color: var(--text, #222);
  font-size: 14px;
  cursor: pointer;
  text-align: left;
  transition: background-color 0.15s ease;
}

#sidebar-settings-btn {
  border-bottom: 1px solid rgba(0, 0, 0, .06);
}

#sidebar-settings-btn svg {
  stroke: var(--text);
  stroke-width: 1.5;
}

:root[data-theme="dark"] #sidebar-settings-btn {
  border-bottom-color: rgba(255, 255, 255, .06);
}

:root[data-theme="dark"] #sidebar-settings-btn svg {
  stroke: white;
}

.sidebar-logout-btn:hover {
  background-color: rgba(0, 0, 0, .04);
}

.sidebar-logout-btn:focus {
  outline: 2px solid var(--primary, #7b8c72);
  outline-offset: -2px;
}

.sidebar-logout-btn:active {
  background-color: rgba(0, 0, 0, .08);
}

.sidebar-logout-btn .icon-small {
  width: 18px;
  height: 18px;
  flex-shrink: 0;
}

:root[data-theme="dark"] .sidebar-user-menu {
  background: var(--card, #181c19);
  border: 1px solid rgba(255, 255, 255, .08);
  box-shadow: 0 10px 32px rgba(0, 0, 0, 0.45);
}

:root[data-theme="dark"] .sidebar-logout-btn:hover {
  background-color: rgba(255, 255, 255, .08);
}

:root[data-theme="dark"] .sidebar-logout-btn {
  color: var(--text, #e9ece9);
}

@keyframes slideUp {
  from {
    opacity: 0;
    transform: translateY(8px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* ============================================
   MOBILE RESPONSIVE STYLES
   ============================================ */

/* MOBILE: convert fixed sidebar into overlay drawer */
@media (max-width: 768px) {
  /* Header adjustments - hamburger left, logo centered */
  .site-header {
    height: 56px;
  }

  .site-header .header-inner {
    padding: 0 8px;
    display: grid;
    grid-template-columns: auto 1fr auto;
    gap: 8px;
  }

  .mobile-menu-btn {
    grid-column: 1;
    position: static !important;
    left: auto !important;
    display: inline-grid !important;
    margin-right: 0;
    z-index: 1001;
  }

  .mobile-menu-btn svg {
    width: 20px;
    height: 20px;
    display: block;
  }

  .brand-left {
    grid-column: 2;
    justify-self: center;
    display: flex;
    justify-content: center;
  }

  .brand-right {
    grid-column: 3;
    justify-self: end;
  }

  .brand-left svg {
    max-height: 40px;
  }

  .icon-btn {
    width: 40px;
    height: 40px;
    padding: 8px;
  }

  .fc .fc-toolbar {
    flex-wrap: nowrap;
    gap: 8px;
    margin-bottom: 16px;
    padding: 0 4px;
    justify-content: space-between;
  }

  .fc .fc-toolbar-chunk:first-child {
    order: 0;
    flex-shrink: 0;
  }

  .fc .fc-toolbar-title {
    font-size: 1rem;
    order: 1;
    flex: 1;
    text-align: center;
    margin: 0;
    padding: 0 4px;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .fc .fc-toolbar-chunk:last-child {
    order: 2;
    flex-shrink: 0;
  }

  .fc .fc-toolbar-chunk {
    gap: 4px;
    display: flex;
    align-items: center;
  }

  /* Ensure prev/next buttons are visible */
  .fc .fc-button-prev,
  .fc .fc-button-next {
    display: inline-flex !important;
    padding: 6px 10px;
    font-size: 0.85rem;
    min-width: 36px;
  }

  .fc .fc-button {
    padding: 6px 8px;
    font-size: 0.75rem;
    white-space: nowrap;
  }

  .fc .fc-button-group {
    border-radius: 8px;
    flex-shrink: 1;
    min-width: 0;
    overflow: hidden;
  }

  .fc .fc-button-group > .fc-button {
    padding: 6px 6px !important;
    font-size: 0.7rem !important;
    min-width: 0;
  }

  .fc .fc-button-prev .fc-icon,
  .fc .fc-button-next .fc-icon {
    font-size: 0.9rem;
  }

  /* Calendar layout */
  .calendar-layout {
    margin-left: 0 !important;
    padding-left: 0 !important;
    min-height: calc(100vh - 56px);
  }

  .calendar-layout.sidebar-collapsed {
    margin-left: 0 !important;
    padding-left: 0 !important;
  }

  .calendar-content {
    padding: 8px 4px !important;
    min-height: calc(100vh - 56px);
  }

  #calendar {
    padding: 8px 4px;
    border-radius: 8px;
  }

  /* Sidebar as overlay drawer */
  .left-fixed-sidebar {
    width: 85%;
    max-width: 320px;
    transform: translateX(-110%);
    transition: transform .28s cubic-bezier(0.4, 0, 0.2, 1), box-shadow .28s ease;
    top: 56px;
    left: 0;
    z-index: 1200;
    height: calc(100vh - 56px);
    box-shadow: 0 20px 48px rgba(0, 0, 0, 0.5);
    border-right: 1px solid rgba(255, 255, 255, 0.1);
  }

  :root[data-theme="dark"] .left-fixed-sidebar {
    box-shadow: 0 20px 48px rgba(0, 0, 0, 0.8);
  }

  .left-fixed-sidebar.open {
    transform: translateX(0);
  }

  /* FullCalendar mobile adjustments */
  .fc .fc-daygrid-day {
    min-height: 60px;
  }

  .fc .fc-daygrid-day-number {
    font-size: 0.85rem;
    padding: 4px 6px;
  }

  .fc .fc-col-header-cell-cushion {
    font-size: 0.7rem;
    padding: 8px 4px;
  }

  .fc .fc-daygrid-event {
    font-size: 0.7rem;
    padding: 2px 4px;
    margin: 1px 0;
  }

  /* Event modal mobile - smaller with proper padding */
  .ec-panel {
    width: 95%;
    max-width: 95%;
    padding: 16px 12px;
    max-height: 90vh;
    border-radius: 12px;
  }

  #eventModalForm {
    padding: 0;
  }

  #eventModalForm .form-group {
    margin-bottom: 14px;
  }

  #eventModalForm label {
    font-size: 12px;
    margin-top: 8px;
    margin-bottom: 4px;
  }

  #eventModalForm input[type="text"],
  #eventModalForm input[type="datetime-local"],
  #eventModalForm input[type="date"],
  #eventModalForm textarea,
  #eventModalForm select {
    padding: 10px 12px;
    width: 100%;
    font-size: 16px; /* Prevents zoom on iOS */
    box-sizing: border-box;
  }

  #eventModalForm textarea {
    min-height: 50px;
    resize: vertical;
  }

  .ec-panel h3 {
    font-size: 16px;
    margin-bottom: 10px;
  }

  .ec-modal-header {
    margin-bottom: 10px;
  }

  /* Event detail panel mobile - opens up or down based on position */
  .event-detail-panel {
    width: 88% !important;
    max-width: 88% !important;
    min-width: auto !important;
    max-height: 70vh;
    left: 6% !important;
    right: 6% !important;
  }

  .event-detail-panel.open-up {
    bottom: auto !important;
    top: 8% !important;
    transform-origin: top center;
  }

  .event-detail-panel.open-down {
    top: auto !important;
    bottom: 8% !important;
    transform-origin: bottom center;
  }

  /* Ensure panel fits on screen */
  .event-detail-panel {
    overflow-y: auto;
  }

  .event-detail-body {
    max-height: calc(70vh - 80px);
    overflow-y: auto;
  }

  /* Edit calendar modal mobile */
  #editCalendarModal .modal-content {
    width: 92%;
    max-width: 92%;
    padding: 20px;
  }

  /* Profile modal mobile */
  #profileModal .modal-content {
    width: 92%;
    max-width: 92%;
    max-height: 90vh;
    padding: 20px;
    overflow-y: auto;
    overflow-x: hidden;
  }

  /* Settings modal mobile */
  .settings-panel {
    width: 96%;
    max-width: 96%;
    padding: 16px;
  }

  /* Notifications modal mobile */
  .notifications-panel {
    width: 96%;
    max-width: 96%;
    padding: 16px;
  }

  /* Calendar item mobile */
  .calendar-item {
    padding: 6px 4px;
  }

  .calendar-name {
    font-size: 0.9rem;
  }

  /* Sidebar search mobile */
  .sidebar-search-input {
    width: 100%;
    font-size: 16px; /* Prevents zoom on iOS */
  }

  /* Button groups mobile */
  .btn-primary,
  .btn-ghost {
    padding: 10px 16px;
    font-size: 0.9rem;
  }

  /* Toast mobile */
  .toast {
    min-width: auto;
    width: calc(100% - 32px);
    max-width: 400px;
  }

  /* Backdrop for mobile sidebar */
  #sidebarBackdrop {
    position: fixed;
    inset: 0;
    z-index: 1150;
    background: rgba(0, 0, 0, 0.5);
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
  }

  :root[data-theme="dark"] #sidebarBackdrop {
    background: rgba(0, 0, 0, 0.7);
  }
}

/* Smaller mobile devices (phones in portrait) */
@media (max-width: 480px) {
  .site-header {
    height: 52px;
  }

  .site-header .header-inner {
    padding: 0 8px;
  }

  .brand-left svg {
    max-height: 36px;
  }

  .icon-btn {
    width: 36px;
    height: 36px;
    padding: 6px;
  }

  .fc .fc-toolbar-title {
    font-size: 0.9rem;
    padding: 0 2px;
  }

  .fc .fc-button {
    padding: 5px 5px;
    font-size: 0.68rem;
  }

  .fc .fc-button-group > .fc-button {
    padding: 5px 3px !important;
    font-size: 0.63rem !important;
    min-width: 0;
  }

  .fc .fc-button-prev,
  .fc .fc-button-next {
    padding: 5px 6px;
    min-width: 28px;
  }

  .calendar-content {
    padding: 4px 2px !important;
  }

  #calendar {
    padding: 4px 2px;
  }

  .fc .fc-daygrid-day {
    min-height: 50px;
  }

  .fc .fc-daygrid-day-number {
    font-size: 0.8rem;
    padding: 3px 4px;
  }

  .fc .fc-col-header-cell-cushion {
    font-size: 0.65rem;
    padding: 6px 2px;
  }

  .ec-panel {
    padding: 12px;
  }

  .event-detail-panel {
    width: 95% !important;
    max-width: 95% !important;
    left: 2.5% !important;
    right: 2.5% !important;
  }

  .event-detail-title {
    font-size: 20px;
  }

  #editCalendarModal .modal-content,
  #profileModal .modal-content {
    padding: 16px;
    max-height: 90vh;
    overflow-y: auto;
    overflow-x: hidden;
  }

  .calendar-name {
    font-size: 0.85rem;
  }
}

/* Very small devices */
@media (max-width: 360px) {
  .fc .fc-toolbar-title {
    font-size: 1rem;
  }

  .fc .fc-button {
    padding: 4px 6px;
    font-size: 0.7rem;
  }

  .fc .fc-daygrid-day {
    min-height: 45px;
  }

  .left-fixed-sidebar {
    width: 90%;
    max-width: 90%;
  }
}

/* Landscape orientation on mobile */
@media (max-width: 768px) and (orientation: landscape) {
  .site-header {
    height: 48px;
  }

  .calendar-content {
    padding: 4px 2px !important;
  }

  .fc .fc-toolbar {
    margin-bottom: 12px;
  }

  .fc .fc-toolbar-title {
    font-size: 1.1rem;
  }

  .ec-panel {
    max-height: 85vh;
  }

  .event-detail-panel {
    max-height: 75vh;
  }
}

a{
  text-decoration: none;
}

select{
  cursor: pointer;
}

/* Custom Delete Alert Modal */
.alert-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.5);
  display: none;
  align-items: center;
  justify-content: center;
  z-index: 99999;
  animation: fadeIn 0.2s ease;
}

.alert-overlay.show {
  display: flex;
}

@keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

.alert-modal {
  background: var(--card);
  border-radius: 12px;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
  padding: 32px;
  max-width: 480px;
  width: 90%;
  animation: slideUp 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
}

:root[data-theme="dark"] .alert-modal {
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.6);
}

@keyframes slideUp {
  from {
    opacity: 0;
    transform: translateY(20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.alert-icon {
  width: 56px;
  height: 56px;
  margin: 0 auto 20px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: rgba(168, 75, 71, 0.12);
  color: var(--danger);
  font-size: 24px;
  font-weight: 700;
}

.alert-icon::before {
  content: '!';
}

.alert-title {
  font-size: 1.25rem;
  font-weight: 700;
  color: var(--text);
  margin: 0 0 12px 0;
  text-align: center;
}

.alert-message {
  font-size: 0.95rem;
  color: var(--muted);
  margin: 0 0 28px 0;
  text-align: center;
  line-height: 1.5;
}

.alert-buttons {
  display: flex;
  gap: 12px;
  justify-content: flex-end;
}

.alert-btn {
  padding: 10px 20px;
  border-radius: 8px;
  border: none;
  font-weight: 600;
  font-size: 0.95rem;
  cursor: pointer;
  transition: all 0.2s ease;
  min-width: 100px;
}

.alert-btn.cancel {
  background: var(--black-overlay);
  color: var(--text);
}

.alert-btn.cancel:hover {
  background: var(--black-overlay-dark);
  transform: translateY(-1px);
}

.alert-btn.cancel:active {
  transform: translateY(0);
}

.alert-btn.delete {
  background: var(--danger);
  color: #fff;
}

.alert-btn.delete:hover {
  background: #922d28;
  box-shadow: 0 4px 12px rgba(168, 75, 71, 0.25);
  transform: translateY(-1px);
}

.alert-btn.delete:active {
  transform: translateY(0);
  box-shadow: 0 2px 6px rgba(168, 75, 71, 0.2) inset;
}

:root[data-theme="dark"] .alert-btn.cancel {
  background: rgba(255, 255, 255, 0.1);
}

:root[data-theme="dark"] .alert-btn.cancel:hover {
  background: rgba(255, 255, 255, 0.15);
}

/* ============ NOTIFICATION BELL ============ */
.notification-bell {
  position: absolute;
  right: 18px;
  top: 50%;
  transform: translateY(-50%);
}

.notification-bell svg {
  width: 24px;
  height: 24px;
}

.notification-badge {
  position: absolute;
  top: -6px;
  right: -8px;
  background: var(--danger, #a84b47);
  color: #fff;
  border-radius: 50%;
  width: 20px;
  height: 20px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  font-weight: 700;
  border: 2px solid var(--card);
}

.notification-panel {
  position: absolute;
  top: 100%;
  right: 0;
  margin-top: 12px;
  width: 380px;
  max-width: calc(100vw - 32px);
  background: var(--card);
  border: 1px solid rgba(0, 0, 0, 0.08);
  border-radius: 12px;
  box-shadow: 0 12px 32px rgba(15, 23, 42, 0.14);
  z-index: 1000;
  display: flex;
  flex-direction: column;
  max-height: 500px;
  opacity: 0;
  visibility: hidden;
  transform: translateY(-8px);
  transition: all 0.2s ease;
  pointer-events: none;
}

.notification-panel:not([hidden]) {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
  pointer-events: auto;
}

:root[data-theme="dark"] .notification-panel {
  border-color: rgba(255, 255, 255, 0.1);
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.5);
}

:root[data-theme="dark"] .notification-panel:not([hidden]) {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
  pointer-events: auto;
}

.notification-panel-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 16px;
  border-bottom: 1px solid rgba(0, 0, 0, 0.08);
  flex-shrink: 0;
}

:root[data-theme="dark"] .notification-panel-header {
  border-bottom-color: rgba(255, 255, 255, 0.1);
}

.notification-panel-header h3 {
  margin: 0;
  font-size: 16px;
  font-weight: 600;
  color: var(--text);
}

.notification-list {
  flex: 1;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
}

.notification-placeholder {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 32px 16px;
  color: var(--muted);
  font-size: 14px;
  text-align: center;
}

.notification-item {
  padding: 12px 16px;
  border-bottom: 1px solid rgba(0, 0, 0, 0.04);
  transition: background 0.12s ease;
}

:root[data-theme="dark"] .notification-item {
  border-bottom-color: rgba(255, 255, 255, 0.05);
}

.notification-item:hover {
  background: rgba(0, 0, 0, 0.02);
}

:root[data-theme="dark"] .notification-item:hover {
  background: rgba(255, 255, 255, 0.02);
}

.notification-item:last-child {
  border-bottom: none;
}

.notification-item-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 6px;
}

.notification-item-header strong {
  color: var(--text);
  font-weight: 600;
}

.notification-item-role {
  display: inline-block;
  background: color-mix(in srgb, var(--accent, #c9ad6a) 15%, transparent);
  color: var(--accent, #c9ad6a);
  padding: 2px 8px;
  border-radius: 4px;
  font-size: 11px;
  font-weight: 500;
  text-transform: uppercase;
}

.notification-item-subtitle {
  font-size: 13px;
  color: var(--muted);
  margin-bottom: 10px;
}

.notification-item-actions {
  display: flex;
  gap: 8px;
}

.btn-sm {
  padding: 6px 12px;
  font-size: 12px;
}

/* ============ INVITE MODAL ============ */
#inviteModal {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background: var(--card);
  border-radius: 12px;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.2);
  z-index: 2000;
  max-width: 450px;
  width: 90%;
  max-height: 90vh;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
}

:root[data-theme="dark"] #inviteModal {
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.6);
}

#inviteModalBackdrop {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.4);
  z-index: 1999;
}

.modal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  border-bottom: 1px solid rgba(0, 0, 0, 0.08);
  flex-shrink: 0;
}

:root[data-theme="dark"] .modal-header {
  border-bottom-color: rgba(255, 255, 255, 0.1);
}

.modal-header h2 {
  margin: 0;
  font-size: 18px;
  color: var(--text);
  font-weight: 600;
}

.btn-close {
  background: transparent;
  border: none;
  font-size: 20px;
  cursor: pointer;
  color: var(--text);
  padding: 4px;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: color 0.12s ease;
}

.btn-close:hover {
  color: var(--muted);
}

#inviteForm {
  padding: 20px;
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.form-group {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.form-group label {
  font-weight: 500;
  font-size: 14px;
  color: var(--text);
}

#inviteCalendarSelect,
#inviteRoleSelect,
#inviteUserInput {
  padding: 10px 12px;
  border: 1px solid rgba(0, 0, 0, 0.1);
  border-radius: 8px;
  background: var(--card);
  color: var(--text);
  font-size: 14px;
  transition: border-color 0.12s ease;
}

#inviteCalendarSelect:focus,
#inviteRoleSelect:focus,
#inviteUserInput:focus {
  outline: none;
  border-color: var(--accent);
  box-shadow: 0 0 0 3px rgba(201, 173, 106, 0.1);
}

:root[data-theme="dark"] #inviteCalendarSelect,
:root[data-theme="dark"] #inviteRoleSelect,
:root[data-theme="dark"] #inviteUserInput {
  background: #0f1a22;
  border-color: rgba(255, 255, 255, 0.1);
}

:root[data-theme="dark"] #inviteCalendarSelect:focus,
:root[data-theme="dark"] #inviteRoleSelect:focus,
:root[data-theme="dark"] #inviteUserInput:focus {
  border-color: var(--accent);
}

/* ============ CREATE CALENDAR MODAL ============ */
#createCalendarModal {
  position: fixed;
  background: var(--card);
  border-radius: 12px;
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12), 0 2px 8px rgba(0, 0, 0, 0.08);
  z-index: 2000;
  width: 340px;
  animation: slideDown 0.2s ease-out;
  overflow: hidden;
  border: 1px solid rgba(0, 0, 0, 0.06);
}

@keyframes slideDown {
  from {
    opacity: 0;
    transform: translateY(-10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

:root[data-theme="dark"] #createCalendarModal {
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.6), 0 2px 8px rgba(0, 0, 0, 0.4);
  border-color: rgba(255, 255, 255, 0.1);
}

#createCalendarModalBackdrop {
  position: fixed;
  inset: 0;
  background: transparent;
  z-index: 1999;
}

/* Profile Modal Styles */
#profileModal {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 20000;
  display: none;
}

#profileModal .modal-content {
  min-width: 400px;
  max-width: 500px;
  max-height: 90vh;
  background: var(--card);
  border-radius: 16px;
  box-shadow: 0 12px 48px rgba(0, 0, 0, 0.15), 0 4px 16px rgba(0, 0, 0, 0.1);
  padding: 24px;
  position: relative;
  border: 1px solid rgba(0, 0, 0, 0.06);
  overflow-y: auto;
  overflow-x: hidden;
  display: flex;
  flex-direction: column;
}

:root[data-theme="dark"] #profileModal .modal-content {
  border-color: rgba(255, 255, 255, 0.08);
  box-shadow: 0 12px 48px rgba(0, 0, 0, 0.4), 0 4px 16px rgba(0, 0, 0, 0.3);
}

#profileModal .modal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 24px;
  border-bottom: none;
}

#profileModal .modal-header h2 {
  margin: 0;
  font-size: 20px;
  font-weight: 600;
  color: var(--text);
  letter-spacing: -0.2px;
}

#profileModal .btn-close {
  background: none;
  border: none;
  font-size: 24px;
  cursor: pointer;
  color: var(--muted);
  padding: 4px;
  line-height: 1;
  transition: color 0.2s ease;
  width: 32px;
  height: 32px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 6px;
}

#profileModal .btn-close:hover {
  color: var(--text);
  background: rgba(0, 0, 0, 0.04);
}

:root[data-theme="dark"] #profileModal .btn-close:hover {
  background: rgba(255, 255, 255, 0.08);
}

#profileModal .form-group {
  margin-bottom: 20px;
}

#profileModal .form-group label {
  display: block;
  font-size: 14px;
  font-weight: 500;
  color: var(--text);
  margin-bottom: 8px;
}

#profileModal .form-group input {
  width: 100%;
  padding: 10px 12px;
  border: 1px solid rgba(0, 0, 0, 0.06);
  border-radius: 8px;
  background: var(--card);
  color: var(--text);
  font-size: 14px;
  transition: all 0.16s ease;
  outline: none;
  font-family: inherit;
  box-sizing: border-box;
}

#profileModal .form-group .password-field-wrapper {
  position: relative;
  width: 100%;
}

#profileModal .form-group .password-field-wrapper input {
  padding-right: 45px;
}

#profileModal .password-strength {
  margin-top: 4px;
  font-size: 0.85rem;
  display: none;
  margin-bottom: 2px;
}

#profileModal .password-strength.show {
  display: block;
}

#profileModal .password-strength-weak { 
  color: var(--danger, #dc2626); 
}

#profileModal .password-strength-medium { 
  color: #f59e0b; 
}

#profileModal .password-strength-strong { 
  color: var(--success, #28a745); 
}

#profileModal .password-requirements {
  font-size: 0.8rem;
  color: var(--muted, #666);
  display: none;
  text-align: left;
  margin-block: 0;
  margin-top: 8px;
}

#profileModal .password-requirements.show {
  display: block;
}

#profileModal .password-requirements li {
  list-style: none;
  margin: 4px 0;
}

#profileModal .password-requirements .valid {
  color: var(--success, #28a745);
}

#profileModal .password-requirements .invalid {
  color: var(--danger, #dc2626);
}

#profileModal #profilePasswordStrength:empty,
#profileModal #profilePasswordMatchMsg:empty {
  display: none !important;
}

#profileModal .form-group input:focus {
  border-color: var(--accent, #c9ad6a);
  box-shadow: 0 0 0 3px rgba(201, 173, 106, 0.1);
}

:root[data-theme="dark"] #profileModal .form-group input {
  border-color: rgba(255, 255, 255, 0.1);
}

:root[data-theme="dark"] #profileModal .form-group input:focus {
  border-color: var(--accent, #c9ad6a);
  box-shadow: 0 0 0 3px rgba(201, 173, 106, 0.15);
}

#profileModalBackdrop {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.4);
  z-index: 19999;
  display: none;
}

:root[data-theme="dark"] #profileModalBackdrop {
  background: rgba(0, 0, 0, 0.6);
}

.profile-sessions-section {
  margin-top: 30px;
  padding-top: 30px;
  border-top: 1px solid var(--border-color, #e0e0e0);
}

:root[data-theme="dark"] .profile-sessions-section {
  border-top-color: rgba(255, 255, 255, 0.1);
}

.sessions-list {
  margin-bottom: 15px;
}

.sessions-items {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.session-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 16px;
  background: var(--card, #fff);
  border: 1px solid var(--border-color, #e0e0e0);
  border-radius: 8px;
  transition: all 0.2s ease;
}

:root[data-theme="dark"] .session-item {
  background: var(--card, #1a1a1a);
  border-color: rgba(255, 255, 255, 0.1);
}

.session-item:hover {
  border-color: var(--accent, #c9ad6a);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}

:root[data-theme="dark"] .session-item:hover {
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
}

.session-item.session-current {
  border-color: var(--accent, #c9ad6a);
  background: rgba(201, 173, 106, 0.05);
}

:root[data-theme="dark"] .session-item.session-current {
  background: rgba(201, 173, 106, 0.1);
}

.session-item.session-revoked {
  opacity: 0.6;
  background: var(--card, #f5f5f5);
}

:root[data-theme="dark"] .session-item.session-revoked {
  background: rgba(255, 255, 255, 0.05);
}

.session-info {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.session-header {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.session-device {
  font-weight: 500;
  color: var(--text, #333);
  font-size: 14px;
}

:root[data-theme="dark"] .session-device {
  color: var(--text, #fff);
}

.session-details {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  font-size: 12px;
  color: var(--text-secondary, #666);
}

:root[data-theme="dark"] .session-details {
  color: rgba(255, 255, 255, 0.6);
}

.session-ip,
.session-date {
  display: inline-block;
}

.session-badge {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 12px;
  font-size: 11px;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}

.session-badge-current {
  background: rgba(201, 173, 106, 0.2);
  color: var(--accent, #c9ad6a);
}

.session-badge-revoked {
  background: rgba(211, 47, 47, 0.2);
  color: #d32f2f;
}

.session-badge-expired {
  background: rgba(158, 158, 158, 0.2);
  color: #9e9e9e;
}

.session-revoke-btn {
  margin-left: 12px;
  white-space: nowrap;
}

.btn-small {
  padding: 6px 12px;
  font-size: 12px;
}

.btn-danger {
  background: #d32f2f;
  color: white;
  border: none;
}

.btn-danger:hover {
  background: #b71c1c;
}

.btn-danger:disabled {
  opacity: 0.6;
  cursor: not-allowed;
}

.sessions-loading,
.sessions-error,
.sessions-empty {
  text-align: center;
  padding: 20px;
  color: var(--text-secondary, #666);
}

:root[data-theme="dark"] .sessions-loading,
:root[data-theme="dark"] .sessions-error,
:root[data-theme="dark"] .sessions-empty {
  color: rgba(255, 255, 255, 0.6);
}

.sessions-error {
  color: var(--error-color, #d32f2f);
}

@media (max-width: 768px) {
  .session-item {
    flex-direction: column;
    align-items: flex-start;
    gap: 12px;
  }
  
  .session-revoke-btn {
    margin-left: 0;
    width: 100%;
  }
  
  .session-header {
    width: 100%;
  }
  
  .session-details {
    width: 100%;
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
  }
}

.modal-header-compact {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 18px;
  border-bottom: 1px solid rgba(0, 0, 0, 0.06);
  background: var(--card);
}

.modal-header-compact h2 {
  margin: 0;
  font-size: 16px;
  font-weight: 600;
  color: var(--text);
}

:root[data-theme="dark"] .modal-header-compact {
  border-bottom-color: rgba(255, 255, 255, 0.08);
}

#createCalendarForm {
  padding: 18px;
  display: flex;
  flex-direction: column;
  gap: 18px;
}

#createCalendarForm .form-group {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

#createCalendarForm .form-group label {
  font-size: 13px;
  font-weight: 500;
  color: var(--text);
  margin-bottom: 2px;
}

#calendarNameInput {
  padding: 8px 10px;
  border: 1px solid rgba(0, 0, 0, 0.12);
  border-radius: 8px;
  background: var(--bg);
  color: var(--text);
  font-size: 14px;
  transition: all 0.15s ease;
  font-family: inherit;
  max-width: 280px;
}

#calendarNameInput::placeholder {
  color: var(--muted);
  opacity: 0.6;
}

#calendarNameInput:focus {
  outline: none;
  border-color: var(--accent);
  box-shadow: 0 0 0 3px rgba(201, 173, 106, 0.12);
  background: var(--card);
}

:root[data-theme="dark"] #calendarNameInput {
  background: #0f1a22;
  border-color: rgba(255, 255, 255, 0.12);
}

:root[data-theme="dark"] #calendarNameInput:focus {
  border-color: var(--accent);
  background: #1a2730;
}

.color-palette-compact {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 10px;
  padding: 4px 0;
}

.color-palette-compact .color-option {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  border: 2px solid transparent;
  cursor: pointer;
  transition: all 0.2s ease;
  position: relative;
  padding: 0;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

.color-palette-compact .color-option:hover {
  transform: scale(1.1);
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
}

.color-palette-compact .color-option.active {
  border-color: var(--accent);
  box-shadow: 0 0 0 2px var(--card), 0 0 0 3px var(--accent);
  transform: none;
}

.color-palette-compact .color-option.active::after {
  content: '';
}

.modal-actions {
  display: flex;
  gap: 8px;
  padding-top: 6px;
}

.modal-actions .btn {
  flex: 1;
  padding: 10px 16px;
  font-size: 14px;
  font-weight: 500;
  border-radius: 8px;
  cursor: pointer;
  transition: all 0.15s ease;
  border: none;
  font-family: inherit;
}

.modal-actions .btn-primary {
  background: var(--accent);
  color: var(--bg);
}

.modal-actions .btn-primary:hover {
  background: #b89950;
  transform: translateY(-1px);
  box-shadow: 0 4px 8px rgba(201, 173, 106, 0.3);
}

.modal-actions .btn-secondary {
  background: transparent;
  color: var(--text);
  border: 1px solid rgba(0, 0, 0, 0.12);
}

.modal-actions .btn-secondary:hover {
  background: rgba(0, 0, 0, 0.04);
  border-color: rgba(0, 0, 0, 0.2);
}

:root[data-theme="dark"] .modal-actions .btn-secondary {
  border-color: rgba(255, 255, 255, 0.12);
}

:root[data-theme="dark"] .modal-actions .btn-secondary:hover {
  background: rgba(255, 255, 255, 0.06);
  border-color: rgba(255, 255, 255, 0.2);
}

a.small{
  color: #551A8B;
}
a.small:hover{
  color: #0000EE;
}

/* Skip links for accessibility */
.skip-link {
  position: absolute;
  top: -40px;
  left: 0;
  background: var(--primary, #c9ad6a);
  color: #fff;
  padding: 8px 16px;
  text-decoration: none;
  z-index: 10000;
  border-radius: 0 0 4px 0;
  font-weight: 600;
}

.skip-link:focus {
  top: 0;
  outline: 2px solid var(--accent, #c9ad6a);
  outline-offset: 2px;
}

/* Touch-friendly improvements - minimum 44x44px touch targets */

/* Checkboxes and radios should not be forced to 44px - they have their own sizing */
input[type="checkbox"], input[type="radio"] {
  min-height: auto;
  min-width: auto;
  padding: 0;
}

/* Ensure small buttons have adequate touch area */
.icon-btn {
  padding: 10px;
}

/* Screen reader only text */
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border-width: 0;
}

/* Aria-live regions - only hide screen reader only elements */
.sr-only[aria-live] {
  position: absolute;
  left: -10000px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

/* Optimizations for very small screens (< 320px) */
@media (max-width: 320px) {
  .site-header .header-inner {
    padding: 8px 12px;
  }
  
  .brand-left svg {
    width: 200px;
    height: auto;
  }
  
  .left-fixed-sidebar {
    width: 100%;
    max-width: 100%;
  }
  
  .calendar-layout {
    flex-direction: column;
  }
  
  #calendar {
    width: 100%;
    margin: 0;
  }
  
  .fc-toolbar {
    flex-wrap: wrap;
    gap: 4px;
  }
  
  .fc-toolbar-title {
    font-size: 1rem;
  }
  
  .fc-button {
    padding: 4px 8px;
    font-size: 0.75rem;
  }
  
  button, .btn {
    min-height: 40px;
    padding: 6px 10px;
    font-size: 0.875rem;
  }
}

.calendar-item, .calendar-selected{
  padding: 4px;
}

span{
  color: var(--text);
}

:root[data-theme="dark"] .btn-secondary{
  color: var(--accent) !important;
}

:root[data-theme="dark"] #evtDescription, #emailVerificationStatus{
  border-color: var(--border-color) !important;
}
kbd{
  color: var(--text);
}