/* =========================================================
   ALAPAR — PREMIUM JALALI DATE PICKER
   ========================================================= */

jdp-overlay {
  width: 0;
  height: 0;
}

@media only screen and (max-width: 481px) {
  jdp-overlay {
    position: fixed;
    inset: 0;
    width: 100%;
    height: 100%;
    background: rgba(15, 23, 42, 0.58);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
    display: none;
    z-index: 9998;
  }
}

/* =========================================================
   CONTAINER
   ========================================================= */

jdp-container {
  --jdp-day-size: 43px;

  --jdp-color-0: #ffffff;
  --jdp-color-1: #f8fafc;
  --jdp-color-2: #e2e8f0;
  --jdp-color-3: #cbd5e1;
  --jdp-color-4: #64748b;
  --jdp-color-5: #0f172a;

  --jdp-primary: #4f46e5;
  --jdp-primary-light: #eef2ff;
  --jdp-primary-dark: #4338ca;

  --jdp-green: #16a34a;
  --jdp-red: #ef4444;

  position: absolute;

  max-width: calc(
    var(--jdp-day-size) * 7 + 0.6rem
  );

  min-width: calc(
    var(--jdp-day-size) * 7 + 0.6rem
  );

  background:
    linear-gradient(
      145deg,
      rgba(255, 255, 255, 0.98),
      rgba(248, 250, 252, 0.98)
    );

  display: none;

  direction: rtl;

  padding: 0.65rem 0;

  border: 1px solid rgba(226, 232, 240, 0.9);

  border-radius: 18px;

  box-shadow:
    0 20px 50px rgba(15, 23, 42, 0.14),
    0 8px 20px rgba(15, 23, 42, 0.08),
    inset 0 1px 0 rgba(255, 255, 255, 0.9);

  overflow: hidden;

  touch-action: manipulation;

  user-select: none;
  -webkit-user-select: none;

  animation:
    jdpOpenAnimation
    0.28s
    cubic-bezier(0.22, 1, 0.36, 1);
}

/* =========================================================
   MOBILE
   ========================================================= */

@media only screen and (max-width: 481px) {
  jdp-container {
    max-width: 100%;
    width: 100%;

    left: 50% !important;
    bottom: 0 !important;
    top: unset !important;

    transform: translateX(-50%) !important;

    min-width: 280px;

    border-radius: 24px 24px 0 0;

    border-bottom: none;

    box-shadow:
      0 -15px 50px rgba(15, 23, 42, 0.2);

    animation:
      jdpOpenAnimationMobile
      0.35s
      cubic-bezier(0.22, 1, 0.36, 1);
  }
}

/* =========================================================
   BOX SIZING
   ========================================================= */

jdp-container,
jdp-container *,
jdp-container *:after,
jdp-container *:before {
  box-sizing: border-box;
}

/* =========================================================
   PLUS / MINUS
   ========================================================= */

jdp-container .jdp-icon-plus,
jdp-container .jdp-icon-minus {
  display: inline-flex;

  align-items: center;
  justify-content: center;

  text-align: center;

  cursor: pointer;

  overflow: hidden;

  flex: none;

  text-decoration: none;

  border: 1px solid var(--jdp-color-2);

  border-radius: 10px;

  background: var(--jdp-color-0);

  transition:
    all 0.2s ease;
}

jdp-container .jdp-icon-plus:hover,
jdp-container .jdp-icon-minus:hover {
  background: var(--jdp-primary-light);

  border-color: var(--jdp-primary);

  color: var(--jdp-primary);

  transform: translateY(-1px);

  box-shadow:
    0 4px 10px rgba(79, 70, 229, 0.12);
}

jdp-container .jdp-icon-plus:active,
jdp-container .jdp-icon-minus:active {
  transform: scale(0.94);
}

jdp-container .jdp-icon-plus svg,
jdp-container .jdp-icon-minus svg {
  width: 1.5rem;
  height: 100%;

  padding: 0.25rem;

  vertical-align: middle;
}

jdp-container .jdp-icon-plus.not-in-range,
jdp-container .jdp-icon-minus.not-in-range {
  cursor: not-allowed;
}

jdp-container .jdp-icon-plus.not-in-range svg,
jdp-container .jdp-icon-minus.not-in-range svg {
  opacity: 0.3;
}

/* =========================================================
   YEAR / MONTH
   ========================================================= */

jdp-container .jdp-years,
jdp-container .jdp-months {
  display: inline-flex;

  align-items: center;

  margin: 0 2.5%;

  font-size: 120%;

  color: var(--jdp-color-5);

  fill: var(--jdp-color-5);
}

jdp-container .jdp-months {
  width: 50%;
}

jdp-container .jdp-years {
  width: 40%;
}

jdp-container .jdp-year,
jdp-container .jdp-year input,
jdp-container .jdp-year select,
jdp-container .jdp-month,
jdp-container .jdp-month input,
jdp-container .jdp-month select,
jdp-container .jdp-time,
jdp-container .jdp-time input,
jdp-container .jdp-time select {
  width: 100%;
  height: auto;

  text-align: center;

  background: transparent;

  border: none;

  border-radius: 0;

  padding: 0;

  margin: 0;

  display: inline-block;

  font-size: inherit;

  font-family: inherit;

  vertical-align: initial;

  font-weight: 700;

  color: inherit;

  line-height: inherit;

  outline: none;
}

jdp-container .jdp-year:focus,
jdp-container .jdp-year:active,
jdp-container .jdp-year input:focus,
jdp-container .jdp-year input:active,
jdp-container .jdp-year select:focus,
jdp-container .jdp-year select:active,
jdp-container .jdp-month:focus,
jdp-container .jdp-month:active,
jdp-container .jdp-month input:focus,
jdp-container .jdp-month input:active,
jdp-container .jdp-month select:focus,
jdp-container .jdp-month select:active,
jdp-container .jdp-time:focus,
jdp-container .jdp-time:active,
jdp-container .jdp-time input:focus,
jdp-container .jdp-time input:active,
jdp-container .jdp-time select:focus,
jdp-container .jdp-time select:active {
  outline: none;
}

jdp-container .jdp-year:hover,
jdp-container .jdp-month:hover,
jdp-container .jdp-time:hover {
  filter: none;
}

/* =========================================================
   DAYS HEADER
   ========================================================= */

jdp-container .jdp-days-header {
  width: 100%;

  padding: 0.35rem 0.3rem;

  margin-top: 0.55rem;

  background:
    linear-gradient(
      90deg,
      #f8fafc,
      #eef2ff,
      #f8fafc
    );

  border-top:
    1px solid rgba(226, 232, 240, 0.7);

  border-bottom:
    1px solid rgba(226, 232, 240, 0.7);
}

/* =========================================================
   DAYS GRID
   ========================================================= */

jdp-container .jdp-days {
  padding: 0.4rem 0.45rem 0.55rem;

  outline: 0;

  text-align: left;

  width: 100%;

  display: flex;

  flex-wrap: wrap;

  justify-content: space-around;
}

/* =========================================================
   DAY
   ========================================================= */

jdp-container .jdp-day,
jdp-container .jdp-day-name {
  background: transparent;

  border: 1px solid transparent;

  font-weight: 500;

  width: 14.2857143%;

  flex-basis: 14.2857143%;

  height: calc(var(--jdp-day-size) - 11px);

  line-height: calc(var(--jdp-day-size) - 11px);

  margin: 2px 0;

  display: inline-block;

  position: relative;

  justify-content: center;

  text-align: center;

  color: var(--jdp-color-5);
}

/* =========================================================
   TODAY
   ========================================================= */

jdp-container .jdp-day.today,
jdp-container .jdp-day-name.today {
  border-color: var(--jdp-primary);

  color: var(--jdp-primary);

  font-weight: 900;

  border-radius: 12px;

  background:
    rgba(79, 70, 229, 0.04);
}

/* =========================================================
   SELECTED
   ========================================================= */

jdp-container .jdp-day.selected,
jdp-container .jdp-day-name.selected {
  background:
    linear-gradient(
      135deg,
      var(--jdp-primary),
      var(--jdp-primary-dark)
    ) !important;

  color: #fff !important;

  opacity: 1 !important;

  border-radius: 12px !important;

  border-color: transparent !important;

  font-weight: 900;

  box-shadow:
    0 6px 15px rgba(79, 70, 229, 0.3);

  transform: scale(1.04);
}

/* =========================================================
   RANGE
   ========================================================= */

jdp-container .jdp-day.in-range,
jdp-container .jdp-day-name.in-range {
  background:
    var(--jdp-primary-light);

  color: var(--jdp-primary);

  border-radius: 8px;
}

jdp-container .jdp-day.range-start,
jdp-container .jdp-day-name.range-start {
  border-radius: 12px 0 0 12px;
}

jdp-container .jdp-day.range-end,
jdp-container .jdp-day-name.range-end {
  border-radius: 0 12px 12px 0;
}

/* =========================================================
   HOLIDAY
   ========================================================= */

jdp-container .jdp-day.last-week,
jdp-container .jdp-day.holiday-day,
jdp-container .jdp-day.holly-day,
jdp-container .jdp-day-name.last-week,
jdp-container .jdp-day-name.holiday-day,
jdp-container .jdp-day-name.holly-day {
  color: var(--jdp-red);
}

/* =========================================================
   NOT IN MONTH
   ========================================================= */

jdp-container .jdp-day.not-in-month {
  opacity: 0.28;
}

/* =========================================================
   DISABLED
   ========================================================= */

jdp-container .jdp-day.disabled-day {
  opacity: 0.2;

  cursor: not-allowed;

  text-decoration: line-through;
}

/* =========================================================
   DAY HOVER
   ========================================================= */

jdp-container .jdp-day:not(.disabled-day) {
  cursor: pointer;

  border-radius: 12px;

  transition:
    transform 0.15s ease,
    background 0.15s ease,
    color 0.15s ease,
    box-shadow 0.15s ease;
}

jdp-container .jdp-day:not(.disabled-day):hover {
  background:
    var(--jdp-primary-light);

  color:
    var(--jdp-primary);

  transform:
    scale(1.1);

  z-index: 2;

  box-shadow:
    0 4px 10px rgba(79, 70, 229, 0.08);
}

/* =========================================================
   DAY NAME
   ========================================================= */

jdp-container .jdp-day-name {
  border-radius: 8px;

  font-weight: 900;

  font-size: 82%;

  cursor: default;

  color: #64748b;
}

/* =========================================================
   FOOTER
   ========================================================= */

jdp-container .jdp-footer {
  padding: 0.6rem 0.65rem 0.2rem;

  outline: 0;

  width: 100%;

  display: flex;

  justify-content: space-between;

  gap: 0.5rem;

  border-top:
    1px solid rgba(226, 232, 240, 0.75);
}

@media only screen and (max-width: 481px) {
  jdp-container .jdp-footer {
    margin: 0.5rem 0 0.2rem;

    padding:
      0.75rem 0.8rem
      env(safe-area-inset-bottom);
  }
}

/* =========================================================
   FOOTER BUTTONS
   ========================================================= */

jdp-container .jdp-btn-today,
jdp-container .jdp-btn-empty,
jdp-container .jdp-btn-close {
  background:
    linear-gradient(
      135deg,
      var(--jdp-primary),
      var(--jdp-primary-dark)
    );

  font-size: 88%;

  padding: 0.5em 0.9em;

  border-radius: 10px;

  font-weight: 700;

  display: inline-flex;

  align-items: center;

  justify-content: center;

  text-align: center;

  color: #fff;

  cursor: pointer;

  border: none;

  transition:
    all 0.2s ease;

  box-shadow:
    0 4px 10px rgba(79, 70, 229, 0.18);
}

jdp-container .jdp-btn-today:hover,
jdp-container .jdp-btn-empty:hover,
jdp-container .jdp-btn-close:hover {
  transform: translateY(-1px);

  box-shadow:
    0 7px 16px rgba(79, 70, 229, 0.25);
}

jdp-container .jdp-btn-today:active,
jdp-container .jdp-btn-empty:active,
jdp-container .jdp-btn-close:active {
  transform: scale(0.96);
}

/* =========================================================
   DISABLED BUTTON
   ========================================================= */

jdp-container .jdp-btn-today.disabled-btn,
jdp-container .jdp-btn-empty.disabled-btn,
jdp-container .jdp-btn-close.disabled-btn {
  opacity: 0.25;

  cursor: not-allowed;

  box-shadow: none;
}

/* =========================================================
   MOBILE BUTTONS
   ========================================================= */

@media only screen and (max-width: 481px) {
  jdp-container .jdp-btn-today,
  jdp-container .jdp-btn-empty,
  jdp-container .jdp-btn-close {
    padding: 0.65em 1em;

    font-size: 100%;

    border-radius: 12px;
  }

  jdp-container .jdp-btn-today {
    min-width: 90px;
  }
}

@media only screen and (max-width: 481px) {
  jdp-container .jdp-btn-today ~ .jdp-btn-empty {
    margin-right: 1em;

    margin-left: auto;
  }
}

/* =========================================================
   TIME
   ========================================================= */

jdp-container .jdp-time-container {
  display: flex;

  padding: 0.35rem 0;
}

jdp-container .jdp-time-container .jdp-time {
  flex: auto;

  margin: 0 0.5rem;

  position: relative;
}

jdp-container .jdp-time-container .jdp-time select {
  padding:
    0.55rem
    1rem
    0.55rem
    7px;

  background:
    var(--jdp-color-1);

  border:
    1px solid var(--jdp-color-2);

  border-radius: 10px;

  color: var(--jdp-color-5);

  font-weight: 700;

  cursor: pointer;

  transition:
    all 0.2s ease;
}

jdp-container .jdp-time-container .jdp-time select:hover {
  border-color:
    var(--jdp-primary);

  background:
    var(--jdp-primary-light);
}

jdp-container .jdp-time-container .jdp-time:after {
  content: ":";

  position: absolute;

  right: -0.7rem;

  top: 50%;

  transform: translateY(-50%);

  font-size: 1.5rem;

  height: 100%;
}

jdp-container
  .jdp-time-container
  .jdp-time:first-child:after {
  display: none;
}

/* =========================================================
   ONLY TIME
   ========================================================= */

jdp-container
  .jdp-time-container.jdp-only-time
  .jdp-time
  select {
  padding:
    0.8rem
    1rem
    0.8rem
    7px;

  font-size: 1.5rem;

  border-radius: 12px;
}

jdp-container
  .jdp-time-container.jdp-only-time
  .jdp-time:after {
  position: absolute;

  right: -0.8rem;

  font-size: 2.3rem;
}

/* =========================================================
   OPEN ANIMATION
   ========================================================= */

@keyframes jdpOpenAnimation {
  0% {
    opacity: 0;

    transform:
      translateY(-8px)
      scale(0.94);
  }

  100% {
    opacity: 1;

    transform:
      translateY(0)
      scale(1);
  }
}

/* =========================================================
   MOBILE OPEN
   ========================================================= */

@keyframes jdpOpenAnimationMobile {
  0% {
    margin-bottom: -25%;

    opacity: 0;
  }

  100% {
    margin-bottom: 0;

    opacity: 1;
  }
}

/* =========================================================
   REDUCE MOTION
   ========================================================= */

@media (prefers-reduced-motion: reduce) {
  jdp-container,
  jdp-container * {
    animation: none !important;

    transition: none !important;
  }
}