/*
 * الهيدر والقائمة الجانبية.
 *
 * حركة فتح القائمة: ألواح رأسية تدخل واحدًا بعد الآخر من أعلى وأسفل
 * بالتناوب حتى تتجمّع وتكوّن خلفية القائمة، ثم تظهر الروابط بالترتيب.
 * كل التأخير الزمني محسوب من المتغير --i المطبوع على كل عنصر في القالب،
 * فلا يوجد أي جافاسكربت يحرّك الألواح.
 */

/* ------------------------------------------------------------------ */
/* شريط الهيدر                                                          */
/* ------------------------------------------------------------------ */

.dm-header {
  position: absolute;
  inset-inline: 0;
  top: 0;
  z-index: 80;
  transition: background-color 0.35s var(--dm-ease), box-shadow 0.35s var(--dm-ease),
    transform 0.35s var(--dm-ease);
}

.dm-header.is-sticky {
  position: fixed;
}

.dm-header__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  height: var(--dm-header-h);
}

/* الهيدر شفاف فوق الانترو فقط */
body:not(.dm-has-portal) .dm-header,
.dm-header.is-solid {
  background: rgba(var(--dm-bg-rgb), 0.96);
  box-shadow: var(--dm-shadow-sm);
  backdrop-filter: blur(10px);
}

/* إخفاء الهيدر عند النزول السريع وإظهاره عند الصعود */
.dm-header.is-hidden {
  transform: translateY(-100%);
}

.dm-header__logo {
  display: block;
  flex: 0 0 auto;
}

.dm-header__logo img {
  width: auto;
  height: var(--dm-logo-h-bar);
  object-fit: contain;
  transition: height 0.35s var(--dm-ease);
}

.dm-header__name {
  font-size: 1.3rem;
  font-weight: 700;
  color: var(--dm-dark);
}

/* تبديل نسخة الشعار حسب حالة الهيدر */
.dm-header__logo-light { display: none; }

body.dm-has-portal .dm-header:not(.is-solid) .dm-header__logo-dark { display: none; }
body.dm-has-portal .dm-header:not(.is-solid) .dm-header__logo-light { display: block; }

.dm-header__actions {
  display: flex;
  align-items: center;
  gap: 14px;
}

.dm-header__phone {
  height: var(--dm-control-h);
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-weight: 600;
  font-size: 0.9rem;
  color: var(--dm-dark);
  direction: ltr;
}

.dm-header__phone i {
  color: var(--dm-primary);
}

body.dm-has-portal .dm-header:not(.is-solid) .dm-header__phone,
body.dm-has-portal .dm-header:not(.is-solid) .dm-burger {
  color: #fff;
}

body.dm-has-portal .dm-header:not(.is-solid) .dm-header__phone i {
  color: var(--dm-secondary);
}

/* ------------------------------------------------------------------ */
/* زر القائمة                                                          */
/* ------------------------------------------------------------------ */

.dm-burger {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  height: var(--dm-control-h);
  padding-inline: 18px;
  border-radius: var(--dm-control-radius);
  font-weight: 600;
  font-size: 0.88rem;
  color: var(--dm-dark);
  border: 1.5px solid currentColor;
  transition: color 0.25s var(--dm-ease), background-color 0.25s var(--dm-ease);
}

.dm-burger:hover {
  color: #fff;
  background: var(--dm-primary);
  border-color: var(--dm-primary);
}

.dm-burger__lines {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  width: 20px;
  height: 13px;
}

.dm-burger__lines span {
  display: block;
  height: 2px;
  border-radius: 2px;
  background: currentColor;
  transition: width 0.3s var(--dm-ease);
}

.dm-burger__lines span:nth-child(1) { width: 100%; }
.dm-burger__lines span:nth-child(2) { width: 70%; }
.dm-burger__lines span:nth-child(3) { width: 85%; }

.dm-burger:hover .dm-burger__lines span {
  width: 100%;
}

@media (max-width: 680px) {
  /* يبقى النص مخفيًا لكن الأيقونة تحتفظ بمساحة لمس كاملة. */
  .dm-header__phone {
    justify-content: center;
    min-width: var(--dm-control-h);
  }

  .dm-header__phone span,
  .dm-burger__label,
  .dm-header__cta {
    display: none;
  }

  /*
   * شعارا الهيدر والقائمة يتبعان مقاس الجوال معًا عبر المتغيّر،
   * فلا يبقى أحدهما كبيرًا داخل شريط أقصر منه فيفيض من طرفيه.
   */
  :root {
    --dm-logo-h-bar: var(--dm-logo-h-mobile);
    --dm-header-h: max(68px, calc(var(--dm-logo-h-mobile) + 22px));
  }
}

/* ------------------------------------------------------------------ */
/* القائمة الجانبية                                                     */
/* ------------------------------------------------------------------ */

.dm-side {
  position: fixed;
  inset: 0;
  z-index: 100;
  visibility: hidden;
  pointer-events: none;
}

.dm-side.is-open {
  visibility: visible;
  pointer-events: auto;
}

/* --- الألواح المتجمّعة --- */

.dm-side__panels {
  position: absolute;
  inset: 0;
  display: flex;
}

.dm-side__panel {
  flex: 1 1 0;
  background: var(--dm-dark);
  transform: translateY(-101%);
  transition: transform 0.55s var(--dm-ease-out);
  /* عند الإغلاق تخرج الألواح بترتيب معكوس فتبدو كأنها تتفكك */
  transition-delay: calc((var(--n) - var(--i) - 1) * 45ms);
}

/* الألواح الفردية تأتي من الأسفل، فيبدو التجميع متشابكًا لا خطًا واحدًا */
.dm-side__panel:nth-child(even) {
  transform: translateY(101%);
  background: var(--dm-dark-soft);
}

.dm-side.is-open .dm-side__panel {
  transform: translateY(0);
  transition-delay: calc(var(--i) * 70ms);
}

/* سرعات الحركة من اللوحة */
.dm-side[data-speed="fast"] .dm-side__panel { transition-duration: 0.4s; }
.dm-side[data-speed="fast"].is-open .dm-side__panel { transition-delay: calc(var(--i) * 45ms); }

.dm-side[data-speed="slow"] .dm-side__panel { transition-duration: 0.75s; }
.dm-side[data-speed="slow"].is-open .dm-side__panel { transition-delay: calc(var(--i) * 100ms); }

/* --- محتوى القائمة --- */

.dm-side__inner {
  position: relative;
  display: flex;
  flex-direction: column;
  height: 100%;
  padding-inline: var(--dm-gutter);
  color: #fff;
  opacity: 0;
  transition: opacity 0.4s var(--dm-ease);
}

.dm-side.is-open .dm-side__inner {
  opacity: 1;
  /* ينتظر تجمّع الألواح أولًا */
  transition-delay: 0.36s;
}

.dm-side__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  height: var(--dm-header-h);
  max-width: var(--dm-container);
  width: 100%;
  margin-inline: auto;
}

.dm-side__logo img {
  width: auto;
  height: var(--dm-logo-h-bar);
  object-fit: contain;
}

/*
 * الشعار يُعرض كما رفعه صاحب الموقع: لا خلفية ولا إطار ولا فلتر.
 * أي طبقة نضعها تحته تظهر دخيلة مع أي شعار غير الذي جرّبناه عليه،
 * والتحكم في ظهوره فوق الخلفيات الداكنة يكون برفع نسخة فاتحة منه
 * من: الهوية والألوان ← شعار الأسطح الداكنة.
 */
.dm-side__logo,
.dm-footer__logo {
  display: inline-block;
}

.dm-side__close {
  display: grid;
  place-items: center;
  width: 46px;
  height: 46px;
  border-radius: 50%;
  font-size: 1.2rem;
  color: #fff;
  border: 1px solid rgba(255, 255, 255, 0.24);
  transition: transform 0.35s var(--dm-ease), background-color 0.25s var(--dm-ease);
}

.dm-side__close:hover {
  background: var(--dm-primary);
  transform: rotate(90deg);
}

.dm-side__body {
  flex: 1;
  display: grid;
  grid-template-columns: 1.1fr 0.9fr;
  align-items: center;
  gap: clamp(30px, 6vw, 80px);
  max-width: var(--dm-container);
  width: 100%;
  margin-inline: auto;
  padding-block: 20px 40px;
  overflow-y: auto;
}

/* --- الروابط --- */

.dm-side__menu {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.dm-side__menu > li > a {
  display: inline-block;
  padding-block: 6px;
  font-size: clamp(1.5rem, 4vw, 2.6rem);
  font-weight: 700;
  line-height: 1.4;
  color: rgba(255, 255, 255, 0.88);
  transition: color 0.25s var(--dm-ease), transform 0.35s var(--dm-ease);
}

.dm-side__menu > li > a:hover {
  color: var(--dm-secondary);
  transform: translateX(-10px);
}

.dm-side__menu .sub-menu {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 18px;
  margin-top: 4px;
  padding-inline-start: 4px;
}

.dm-side__menu .sub-menu a {
  font-size: 0.92rem;
  color: rgba(255, 255, 255, 0.6);
}

.dm-side__menu .sub-menu a:hover {
  color: #fff;
}

/* ظهور كل رابط بعد الذي قبله */
.dm-side__menu > li {
  opacity: 0;
  transform: translateY(26px);
  transition: opacity 0.5s var(--dm-ease-out), transform 0.5s var(--dm-ease-out);
}

.dm-side.is-open .dm-side__menu > li {
  opacity: 1;
  transform: none;
  transition-delay: calc(0.42s + var(--i, 0) * 70ms);
}

/* --- العمود الجانبي داخل القائمة --- */

.dm-side__aside {
  display: flex;
  flex-direction: column;
  gap: 18px;
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.5s var(--dm-ease-out), transform 0.5s var(--dm-ease-out);
}

.dm-side.is-open .dm-side__aside {
  opacity: 1;
  transform: none;
  transition-delay: 0.6s;
}

/*
 * لوحة صور القائمة: الصور مكدّسة في نفس المكان، والظاهرة منها
 * واحدة فقط. التبديل بالشفافية لا بتغيير src حتى لا يومض الفراغ
 * بين صورة وأخرى.
 */
.dm-side__media {
  position: relative;
  border-radius: var(--dm-radius);
  overflow: hidden;
  height: clamp(220px, 34vh, 340px);
  background: rgba(255, 255, 255, 0.06);
}

.dm-side__media-layer {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0;
  transform: scale(1.06);
  transition: opacity 0.45s var(--dm-ease), transform 0.7s var(--dm-ease-out);
}

.dm-side__media-layer.is-active {
  opacity: 1;
  transform: none;
}

/* لمن يفضّل تقليل الحركة: التبديل يبقى، والتقريب يُلغى. */
@media (prefers-reduced-motion: reduce) {
  .dm-side__media-layer {
    transform: none;
    transition: opacity 0.2s linear;
  }
}

.dm-side__text {
  margin: 0;
  font-size: 0.95rem;
  color: rgba(255, 255, 255, 0.72);
}

.dm-side__contact {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 22px;
  font-weight: 600;
}

.dm-side__contact a {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: rgba(255, 255, 255, 0.86);
}

.dm-side__contact a:hover {
  color: var(--dm-secondary);
}

.dm-side__aside .dm-social a {
  color: rgba(255, 255, 255, 0.7);
}

.dm-side-backdrop {
  position: fixed;
  inset: 0;
  z-index: 99;
  background: rgba(var(--dm-dark-rgb), 0.5);
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.4s var(--dm-ease), visibility 0.4s;
}

body.dm-side-open .dm-side-backdrop {
  opacity: 1;
  visibility: visible;
}

@media (max-width: 900px) {
  .dm-side__body {
    grid-template-columns: 1fr;
    align-content: start;
    gap: 28px;
  }

  .dm-side__image {
    display: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .dm-side__panel,
  .dm-side__inner,
  .dm-side__menu > li,
  .dm-side__aside {
    transition-duration: 0.01ms !important;
    transition-delay: 0ms !important;
  }
}

/* ------------------------------------------------------------------ */
/* القائمة الجانبية بلا سكرول رأسي                                       */
/* اللوحة نفسها لا تتحرك أبدًا. لو زادت الروابط عن المساحة، عمود الروابط  */
/* وحده هو اللي بيعمل سكرول بشريط رفيع بلون الموقع، والعمود الثاني بيصغر  */
/* مع ارتفاع الشاشة بدل ما يطوّل اللوحة.                                   */
/* ------------------------------------------------------------------ */
.dm-side__body {
  min-height: 0;                       /* يسمح للعنصر المرن أن يصغر عن محتواه */
  overflow: hidden;
  grid-template-rows: minmax(0, 1fr);
}

.dm-side__nav {
  max-height: 100%;
  overflow-y: auto;
  overscroll-behavior: contain;        /* السكرول لا يتسرّب للصفحة تحت القائمة */
  padding-inline-end: 6px;             /* مسافة بين الكلام والشريط */
  scrollbar-width: thin;
  scrollbar-color: rgba(var(--dm-secondary-rgb), 0.55) transparent;
}

.dm-side__nav::-webkit-scrollbar {
  width: 5px;
}

.dm-side__nav::-webkit-scrollbar-track {
  background: transparent;
}

.dm-side__nav::-webkit-scrollbar-thumb {
  background: rgba(var(--dm-secondary-rgb), 0.55);
  border-radius: 99px;
}

.dm-side__nav::-webkit-scrollbar-thumb:hover {
  background: var(--dm-secondary);
}

.dm-side__aside {
  max-height: 100%;
  min-height: 0;
}

/* الصورة تصغر مع ارتفاع الشاشة حتى يدخل العمود كله بلا سكرول. */
.dm-side__media {
  height: clamp(110px, calc(100svh - 470px), 340px);
}

@media (max-height: 600px) {
  .dm-side__media {
    display: none;
  }
}

/* الجوال والتابلت: عمود واحد — الروابط تأخذ المساحة المتبقية، والعمود الثاني مختصر. */
@media (max-width: 900px) {
  .dm-side__body {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 22px;
    padding-block: 12px 24px;
  }

  .dm-side__nav {
    flex: 1 1 auto;
    min-height: 0;
  }

  .dm-side__aside {
    flex: 0 0 auto;
  }

  .dm-side__media {
    display: none;                     /* زخرفية فقط، وتاخد نص الشاشة على الجوال */
  }
}

@media (max-width: 900px) and (max-height: 760px) {
  .dm-side__aside .dm-qr,              /* مسح كود على نفس الجوال اللي بيعرضه مالوش معنى */
  .dm-side__text {
    display: none;
  }
}

/* ------------------------------------------------------------------ */
/* خلفية القائمة الجانبية = صورة البوابة مقسّمة على الألواح               */
/* كل لوح جواه نسخة من الصورة بعرض الشاشة كلها، متزحزحة بحيث يظهر منها    */
/* الجزء اللي قصاده بس؛ فحركة تجمّع الألواح نفسها هي اللي بتركّب الصورة.  */
/* ------------------------------------------------------------------ */
.dm-side.has-bg .dm-side__panel {
  position: relative;
  overflow: hidden;
  background: var(--dm-dark);          /* يظهر لحظة لو الصورة لسه بتتحمّل */
}

.dm-side__slice {
  position: absolute;
  top: 0;
  bottom: 0;
  width: calc(var(--n) * 100%);        /* عرض الشاشة كلها */
  inset-inline-start: calc(var(--i) * -100%); /* يمين الشاشة في rtl = أول لوح */
  background: var(--dm-side-bg) center / cover no-repeat;
}

/* التعتيم على كل جزء، فالصورة المتركّبة كلها بنفس الدرجة. */
.dm-side__slice::after {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(var(--dm-overlay-rgb), 0.82);
}
