/* Smart Contract Page Styles cloned for Dedicated Lab */
/* Based on Figma design: Smart Contract Development page */

/* Global Styles */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

body {
  font-family: 'Sora', sans-serif;
  background-color: #121212;
  color: #FFFFFF;
  line-height: 1.6;
}

/* Prevent horizontal scrolling globally */
html, body { overflow-x: hidden; }

/* Hero Banner Section Styles */
/* Thiết kế theo Figma: Hero banner với background image, overlay gradient và content */

/* Container chính của hero banner */
.hero-banner {
  position: relative;
  width: 100%;
  height: 800px;
  overflow: visible; /* Thay đổi từ hidden thành visible để text không bị cắt */
}

/* Background section với image và overlay */
.hero-banner__background {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

/* Background image */
/* Lật ảnh background 180 độ bằng transform: rotate(180deg) */
/* Sử dụng pseudo-element để không ảnh hưởng đến layout của .hero-banner__image */
.hero-banner__image {
  position: absolute;
  width: 100%;
  height: 100%;
  background-image: url('../../assets/images/hero-bg-s.webp');
  background-size: cover;
  background-position:  center; 
  background-repeat: no-repeat;
}

.hero-banner__overlay {
  position: absolute;
  width: 100%; /* Thay đổi từ 1096px cố định thành 100% */
  height: 100%;
  left: 0px;
  bottom: 0px;
  background-image:
      url('../../assets/images/sandtexture.svg'),
      linear-gradient(
          90deg,
          #252525 0%, /* Bắt đầu từ 0% thay vì 77.33% */
          #252525 40%, /* Tạo vùng tối rõ ràng */
          rgba(37, 37, 37, 0.9) 60%,
          rgba(37, 37, 37, 0.7) 70%,
          rgba(37, 37, 37, 0.5) 80%,
          rgba(37, 37, 37, 0.3) 90%,
          rgba(37, 37, 37, 0.1) 95%,
          rgba(37, 37, 37, 0) 100% /* Kết thúc hoàn toàn trong suốt */
      );
  background-size: cover, 100% 100%;
  background-position: center, left center;
  background-repeat: no-repeat, no-repeat;
}

/* Decorative ellipse */
.hero-banner__background::before {
  content: '';
  position: absolute;
  top: -303px;
  left: 71px;
  width: 746px;
  height: 746px;
  background: radial-gradient(
      circle,
      rgba(217, 217, 217, 1) 0%,
      rgba(115, 115, 115, 0) 100%
  );
  opacity: 0.5;
  border-radius: 50%;
}

/* Decorative overlay element */
.hero-banner__decor {
  position: absolute;
  left: 71px;
  z-index: 1;
  opacity: 1;
}

.hero-banner__decor img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

/* Content section chính */
.hero-banner__content {
  position: relative;
  z-index: 2;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  height: 100%;
  max-width: 1440px;
  margin: 0 auto;
  padding: 0 64px;
}

.hero-banner__title {
  font-size: 80px;
  font-weight: 700;
  line-height: 1.2em;
  letter-spacing: -0.02em;
  color: #FFFFFF;
  max-width: 772px;
  margin-bottom: 32px;
}

.hero-banner__description {
  font-size: 24px;
  font-weight: 300;
  line-height: 1.5em;
  color: #A5A5A5;
  max-width: 772px;
  margin-bottom: 48px;
}

.hero-banner__description span {
  color: #FFFFFF;
  font-weight: 400;
}



/* Bottom section với status và binary text */
.hero-banner__bottom {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 69.52px;
  background: rgba(0, 0, 0, 0.03);
  backdrop-filter: blur(20px);
  display: flex;
  align-items: center;
  justify-content: space-between;
}

/* Status section bên trái */
.hero-banner__status {
  display: flex;
  align-items: center;
  gap: 7px;
  margin-left:64px ;
}

.hero-banner__status-icon {
  width: 20px;
  height: 20px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.hero-banner__status-icon svg {
  width: 20px;
  height: 20px;
}

.hero-banner__status-icon path {
  stroke: #A5A5A5;
}

.hero-banner__status-text {
  font-family: 'Sora', sans-serif;
  font-weight: 400;
  font-size: 12px;
  line-height: 1.26em;
  color: #3D3D3D;
}

/* Hiển thị cả khoảng trắng (white space) trong binary text section */
/* Sử dụng white-space: pre để giữ nguyên khoảng trắng và xuống dòng nếu có */
.code-patterns {
  display: flex;
  flex-direction: row;
  gap: 0;
  font-family: 'Sora', sans-serif;
  font-weight: 400;
  font-size: 12px;
  line-height: 1.26em;
  color: #727272;
  text-align: center;
  flex: 1;
  justify-content: center;
  min-width: 0; /* allow shrinking inside flex */
  overflow: hidden; /* prevent long lines from expanding container */
}

.code-line {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 20px;
  /* Đảm bảo hiển thị khoảng trắng trong nội dung */
  white-space: pre;
  max-width: 100%;
  overflow: hidden;
}

/* Vector element bên phải */
.hero-banner__vector {
  display: flex;
  align-items: center;
  justify-content: center;
  margin-right: 64px;
}

/* Right Sidebar Section */
.right-sidebar {
  padding: 100px 64px;
  background-color: #121212;
  display: flex;
  justify-content: center;
}

.right-sidebar__container {
  max-width: 1440px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  align-items: center;
}

.right-sidebar__card {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0;
  width: 100%;
  justify-content: center;
}

.right-sidebar__header {
  background-image: url('../../assets/images/card-image.jpg');
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  padding: 48px;
  width: 100%;
  max-width: 1312px;
  height: 240px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  gap: 20px;
  align-items: center;
  margin-left: auto;
  margin-right: auto;
}

.right-sidebar__title {
  font-size: 40px;
  font-weight: 600;
  line-height: 1.6em;
  text-transform: uppercase;
  text-align: center;
  color: #FFFFFF;
}

.right-sidebar__subtitle {
  font-size: 24px;
  font-weight: 300;
  line-height: 1.6em;
  text-align: center;
  color: #A5A5A5;
}

.right-sidebar__items {
  display: flex;
  flex-wrap: wrap;
  gap: 0;
  justify-content: center;
  width: 100%;
}

.right-sidebar__item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 100px;
  padding: 64px 32px;
  width: 328px;
  height: 400px;
  border: 1px solid #232325;
  justify-content: center;
}

.right-sidebar__item-icon {
  width: 64px;
  height: 64px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.right-sidebar__item-text {
  font-size: 20px;
  font-weight: 300;
  line-height: 1.6em;
  text-align: center;
  color: #FFFFFF;
  max-width: 373px;
}


/* Process Section */
.process-section {
  padding: 120px 64px;
  background-color: #121212;
  display: flex;
  justify-content: center;
}

.process-section__container {
  max-width: 1312px;
  width: 100%;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 48px;
}

.process-section__title {
  font-family: 'Sora', sans-serif;
  font-weight: 700;
  font-size: 40px;
  line-height: 150%;
  text-transform: uppercase;
  color: #FFFFFF;
  text-align: center;
}

/* Timeline grid */
.process-timeline {
  position: relative;
  width: 100%;
  overflow-x: clip; /* avoid contributing to page width */
  display: grid;
  /* Design tokens for this component */
  --timeline-line-color: #6C6C6C;
  --timeline-item-width: 360px;
  --timeline-gap: 160px;
  /* Keep current visual alignment: -5% of item width */
  --timeline-offset-percent: -5%;
  --top-connector-height: 150px; /* preserves current look */
  --top-connector-bottom-offset: 80%; /* preserves current look */
  --bottom-connector-height: 150px; /* preserves current look */
  --bottom-connector-top-offset: 80%; /* preserves current look */
  --marker-size: 19px;
  --marker-ring: 6px;

  grid-template-rows: auto var(--timeline-gap) auto;
}

/* Rows to group top and bottom items so they can wrap */
.process-timeline__row {
  position: relative;
  display: flex;
  flex-wrap: wrap;
  gap: 80px;
}

.process-timeline__row--top { grid-row: 1; left: 5%;top:30%; }
.process-timeline__row--bottom { grid-row: 3; left: 20%;top:30%; }

/* Horizontal dashed line */
.process-timeline::before {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  top: 58%;
  border-top: 1px dashed var(--timeline-line-color);
  pointer-events: none;
  z-index: 0;
}

/* Hide optional guide lines if present */
.process-timeline__vline { display: none; }

.process-timeline__item {
  position: relative;
  padding: 0 8px;
  width: var(--timeline-item-width);
  z-index: 1;
}



/* Connector to the center dashed line */
.process-timeline__item--top::after {
  content: '';
  position: absolute;
  left: var(--timeline-offset-percent);
  bottom: calc(var(--top-connector-bottom-offset) * -1);
  width: 0;
  height: var(--top-connector-height);
  border-left: 1px dashed var(--timeline-line-color);
  pointer-events: none;
}

.process-timeline__item--bottom::after {
  content: '';
  position: absolute;
  left: var(--timeline-offset-percent);
  top: calc(var(--bottom-connector-top-offset) * -1);
  width: 0;
  height: var(--bottom-connector-height);
  border-left: 1px dashed var(--timeline-line-color);
  pointer-events: none;
}

/* Circle marker at the connection point */
.process-timeline__marker {
  position: absolute;
  left: 50%;
  width: var(--marker-size);
  height: var(--marker-size);
  border-radius: 50%;
  background: #FFFFFF;
  transform: translateX(-50%);
  box-shadow: 0 0 0 var(--marker-ring) #212121; /* outer ring on dark bg */
  z-index: 2;
}

.process-timeline__item--top .process-timeline__marker {
  top: 5px;
  left: var(--timeline-offset-percent);
}

.process-timeline__item--bottom .process-timeline__marker {
  top: 65%;
  left: var(--timeline-offset-percent);
}

.process-step__title {
  font-family: 'Sora', sans-serif;
  font-weight: 600;
  font-size: 24px;
  line-height: 1.26em;
  color: #FFFFFF;
  margin-bottom: 12px;
}

.process-step__description {
  font-family: 'Sora', sans-serif;
  font-weight: 300;
  font-size: 16px;
  line-height: 160%;
  color: #BABABA;
}

/* Responsive fallback: keep desktop visuals; simplify on smaller screens */
@media (max-width: 1024px) {
  .process-timeline {
    display: block;
  }
  .process-timeline::before {
    display: none;
  }
  .process-timeline__row {
    left: 0;
    gap: 32px;
  }
  .process-timeline__item {
    width: 100%;
    padding-left: 0;
  }
  .process-timeline__item::after,
  .process-timeline__marker {
    display: none;
  }
  .process-step__title {
    font-size: 22px;
  }
  .process-step__description {
    font-size: 15px;
  }
}




/* Details Section */
.details-section {
  padding: 100px 64px;
  background-color: #121212;
  display: flex;
  justify-content: center;
}

.details-section__container {
  max-width: 1440px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  align-items: center;
}

.details-section__card {
  display: flex;
  flex-direction: row;
  gap: 0;
  width: 100%;
  align-self: stretch;
  justify-content: center;
}

.details-section__header {
  background-image: url('../../assets/images/card-image.jpg');
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  padding: 48px;
  width: 100%;
  max-width: 400px;
  height: 800px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 20px;
  align-items: center;
}

.details-section__title {
  font-size: 40px;
  font-weight: 700;
  line-height: 1.6em;
  text-transform: uppercase;
  text-align: center;
  color: #FFFFFF;
}

.details-section__content {
  display: flex;
  flex-direction: column;
  width: 100%;
  max-width: 912px; /* Match item width for perfect centering */
  margin-left: auto;
  margin-right: auto;
}

.details-section__item {
  display: flex;
  flex-direction: column;
  align-self: stretch;
  gap: 0;
  padding: 48px;
  border-width: 1px;
  border-style: solid;
  border-color: #232325;
  width: 100%;
  width: 912px;
  height: 200px;
  justify-content: space-between;
}


.details-section__item-title {
  font-size: 20px;
  font-weight: 300;
  line-height: 1.26em;
  color: #BABABA;
}

.details-section__item-text {
  font-size: 24px;
  font-weight: 300;
  line-height: 1.26em;
  color: #FFFFFF;
}

/* === ACHIEVEMENTS SECTION === */
.achievements {
  width: 100%;
  max-width: 1312px; /* Figma width */
  background: #161616;
  display: flex;
  justify-content: center;
  align-items: center;
  padding: 64px; /* Figma padding */
  overflow: hidden;
  position: relative;
  margin-left: auto;
  margin-right: auto;
  min-height: 598px; /* Figma height */
}

.achievements-background {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: url('../../assets/images/achievement.webp') center/cover no-repeat;
  background-size: cover;
  opacity: 0.4;
}

.achievements-content {
  position: relative;
  z-index: 2;
  display: flex;
  flex-direction: column; /* top row then bottom column */
  align-items: stretch;
  justify-content: flex-start;
  gap: 100px; /* layout_8S5HDO */
  width: 100%;
}

.section-title{
  font-family: Sora;
  font-weight: 600;
  font-style: SemiBold;
  font-size: 40px;
  line-height: 150%;
  letter-spacing: 0%;
  text-transform: uppercase;
  width: auto; /* avoid forcing a new line in top row */
}

.achievements-text {
  display: flex;
  flex-direction: row; /* top row */
  justify-content: space-between; /* title on left, badge on right */
  align-items: center;
  gap: 64px; /* layout_KI126C */
  width: 100%;
}

.achievements-badge {
  position: relative;
  width: 444px;
  height: 80px;
  background: #212121; /* Vector 3347 fill */
  border-radius: 10px;
  display: inline;
  align-items: center;
  justify-content: flex-end; /* text aligns right inside */
  padding: 8px 16px;
}

.achievements-badge__text {
  font-family: 'Sora', sans-serif;
  font-size: 16px; /* style_JLEB1H */
  font-weight: 300;
  line-height: 1.9375em; /* 31px */
  color: #FFFFFF;
  text-align: right;
}

.achievements-cta {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 40px; /* layout_809UOE */
 
}

.achievements-cta__description {
  font-family: 'Sora', sans-serif;
  font-size: 32px; /* style_9JS453 */
  font-weight: 300;
  line-height: 1.5em;
  color: #FFFFFF;
  max-width: 1184px;
  height: 192px;
}

.achievements-cta__button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  height: 64px;
  padding: 12px 40px; /* layout_BYSXM4 */
  border-radius: 1623.375px;
  background: transparent;
  color: #FFFFFF;
  font-size: 24px; /* style_VN7AE4 */
  font-weight: 700;
  line-height: 1.666em;
  text-decoration: none;
  border: 1px solid rgba(255,255,255,0.44);
  box-shadow: inset 0px 6.5px 6.5px rgba(255,255,255,0.2);
  transition: background 0.2s ease, transform 0.1s ease;
}

.achievements-cta__button:hover {
  background: rgba(255, 255, 255, 0.06);
}

.achievements-cta__button:active {
  transform: translateY(1px);
}

/* === CASE STUDIES SECTION === */
.case-studies-section {
  width: 100%;
  max-width: 1312px;
  background-color: transparent;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 64px;
  margin: 0 auto;
  margin-top: 10%;
  margin-bottom: 10%;
}

.case-studies-container {
  max-width: 1312px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 100%;
}

.case-studies-header {
  display: flex;
  align-items: center;
  opacity: 1;
  border: 1px solid #232325;
  width: inherit;
}

.case-studies-left {
  width: 500px;
  height: 400px;
  background-image: url('../../assets/images/card-image.webp');
}

.highlight-icon-container {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  width: 100%;
  height: 100%;
}

.highlight-icon {
  width: 53.13px;
  height: 60px;
}

.highlight-icon-center {
  width: 270px;
  height: auto;
}

.highlight-info {
  display: flex;
  flex-direction: column;
  align-self: stretch;
  gap: 18px;
}

.highlight-vector-icon {
  width: 53.13px;
  height: 60px;
  margin-top: 20px;
}

.highlight-years {
  font-family: Sora, sans-serif;
  font-size: 32px;
  font-weight: 400;
  color: #FFFFFF;
  line-height: 1.399999976158142;
  width: fit-content;
  height: fit-content;
  text-align: left;
}

.highlight-label {
  font-family: Sora, sans-serif;
  font-size: 20px;
  font-weight: 400;
  color: #A5A5A5;
  line-height: 1.4;
  text-transform: uppercase;
  width: 755px;
  height: fit-content;
  text-align: left;
}

.case-studies-right {
  display: flex;
  flex-direction: column;
  width: calc(100% - 500px); /* keep total within container with left at 500px */
  height: 400px;
  justify-content: space-around;
  padding: 0 40px;
  box-sizing: border-box;
}

.case-studies-title {
  font-family: Sora, sans-serif;
  font-weight: 600;
  font-size: 40px;
  font-style: normal;
  color: #FFFFFF;
  text-transform: uppercase;
  line-height: 1.5;
  letter-spacing: 0;
  text-align: left;
}

.case-studies-description {
  display: flex;
  flex-direction: column;
  align-self: stretch;
}

.case-studies-main {
  font-size: 24px;
  font-weight: 300;
  color: #FFFFFF;
  line-height: 1.5;
  text-align: left;
  margin: 0;
  margin-top: 32px;
}

.case-studies-sub {
  font-size: 20px;
  font-weight: 300;
  color: #A5A5A5;
  line-height: 1.5;
  text-align: left;
  margin:0;
}

.case-studies-content {
  width: 100%;
  height: 648px;
  background-color: #191919;
  position: relative;
  overflow: hidden;
}

.projects-grid {
  position: relative;
  width: 1312px;
  height: 600px;
  top: 21px;
}

.project-item {
  position: absolute;
  left: calc(50% + var(--x));
  top: calc(50% + var(--y));
  transform: translate(-50%, -50%);
}

.project-placeholder {
  width: 566px;
  height: 304px;
  background: linear-gradient(45deg, #333, #555);
  border: 2px dashed;
  border-image: linear-gradient(45deg, 
      rgba(255, 255, 255, 0.52) 0%,
      rgba(255, 255, 255, 0.1) 31.77%,
      rgba(255, 255, 255, 0.05) 66.67%,
      rgba(255, 255, 255, 0.44) 100%
  ) 1;
  border-radius: 4px;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
}

/* --- Basic Reset & Dark Mode Setup --- */
:root {
  --bg-light: #ffffff;
  --bg-dark:#121212; /* A dark gray similar to neutral-900 */
  --ring-light: rgba(64, 64, 64, 0.1);
  --ring-dark: rgba(82, 82, 82, 0.3); /* Lighter ring for dark mode */
  --demo-bg-light: rgba(3, 7, 18, 0.05);
  --demo-bg-dark: #1f2937; /* neutral-800 */
  --grid-line-light: rgba(0, 0, 0, 0.2);
  --grid-line-dark: rgba(255, 255, 255, 0.2);
  --grid-line-gradient: linear-gradient(162.93deg, rgba(255, 255, 255, 0.52) 8.56%, rgba(255, 255, 255, 0.1) 37.36%, rgba(255, 255, 255, 0.05) 69%, rgba(255, 255, 255, 0.44) 99.22%);
}

body {
  margin: 0;
  font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
      Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif,
      "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol",
      "Noto Color Emoji";
  background-color: var(--bg-light);
  color: #111827;
  transition: background-color 0.3s, color 0.3s;
}

@media (prefers-color-scheme: dark) {
  body {
      background-color: var(--bg-dark);
      color: #f9fafb;
  }
}

/* --- Animations --- */
@keyframes marquee-even-animation {
  from {
      transform: translateY(100px);
  }
  to {
      transform: translateY(-100px);
  }
}

@keyframes marquee-odd-animation {
  from {
      transform: translateY(-100px);
  }
  to {
      transform: translateY(100px);
  }
}

/* --- Main Component Styles --- */

/* Corresponds to the main div in the ThreeDMarqueeDemo component */
.demo-container {
  margin: 2.5rem auto;
  width: 100%;
  max-width: 1312px;
  height: 648px;
  border-radius: 1.5rem;
  padding: 0.5rem;
  background-color: var(--demo-bg-light);
  box-shadow: 0 0 0 1px var(--ring-light);
}

@media (prefers-color-scheme: dark) {
  .demo-container {
      background-color: var(--demo-bg-dark);
      box-shadow: 0 0 0 1px var(--ring-dark);
  }
}

/* Corresponds to the top-level div in the ThreeDMarquee component */
.marquee-container {
  margin-left: auto;
  margin-right: auto;
  display: block;
  width: 100%;
  max-width: 1312px;
  height: 648px;
  overflow: hidden;
}

/* Stack case studies header on small screens to avoid overflow */
@media (max-width: 1024px) {
  .case-studies-header {
    flex-direction: column;
  }
  .case-studies-left,
  .case-studies-right {
    width: 100%;
    height: auto;
    padding: 16px 20px;
    box-sizing: border-box;
  }
}
@media (max-width: 639px) {
  .marquee-container {
      height: 400px; /* Adjusted from h-100 */
  }
}

.marquee-wrapper {
  display: flex;
  width: 100%;
  height: 100%;
  align-items: center;
  justify-content: center;
}

.marquee-scaling-container {
  width: 1720px;
  height: 1720px;
  flex-shrink: 0;
  transform: scale(0.5); /* Default scale */
  transition: transform 0.5s ease;
}
@media (min-width: 640px) {
  .marquee-scaling-container {
      transform: scale(0.75); /* sm:scale-75 */
  }
}
@media (min-width: 1024px) {
  .marquee-scaling-container {
      transform: scale(1); /* lg:scale-100 */
  }
}

.marquee-grid {
  position: relative;
  top: 20rem; /* top-96 */
  right: 75%;
  display: grid;
  width: 100%;
  height: 100%;
  transform-origin: top left;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 2rem;
  transform-style: preserve-3d;
  transform: rotateX(55deg) rotateY(0deg) rotateZ(-45deg);
}

.marquee-column {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 2rem;
  position: relative;
}

.marquee-column.even {
  animation: marquee-even-animation 10s infinite alternate;
}

.marquee-column.odd {
  animation: marquee-odd-animation 15s infinite alternate;
}

.image-container {
  position: relative;
  width: 100%;
  /* Đảm bảo container có kích thước cố định */
  aspect-ratio: 970 / 700;
  overflow: hidden;
  border-radius: 0.5rem;
}

.marquee-image {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  border-radius: 0.5rem;
  transition: transform 0.3s ease-in-out, box-shadow 0.3s ease-in-out;
  /* Custom border gradient */
  border: 0.97px solid;
  border-image-source: linear-gradient(162.93deg, rgba(255, 255, 255, 0.52) 8.56%, rgba(255, 255, 255, 0.1) 37.36%, rgba(255, 255, 255, 0.05) 69%, rgba(255, 255, 255, 0.44) 99.22%);
  border-image-slice: 1;
}

/* Thêm fallback cho ảnh không load được */
.marquee-image:not([src]), 
.marquee-image[src=""],
.marquee-image[src*="undefined"] {
  background: linear-gradient(45deg, #f0f0f0, #e0e0e0);
  display: flex;
  align-items: center;
  justify-content: center;
  color: #666;
  font-size: 14px;
}

/* Placeholder cho ảnh không load được */
.image-placeholder {
  width: 100%;
  height: 100%;
  background: linear-gradient(45deg, #f0f0f0, #e0e0e0);
  display: flex;
  align-items: center;
  justify-content: center;
  color: #666;
  font-size: 14px;
  border-radius: 0.5rem;
  border: 0.97px solid;
  border-image-source: linear-gradient(162.93deg, rgba(255, 255, 255, 0.52) 8.56%, rgba(255, 255, 255, 0.1) 37.36%, rgba(255, 255, 255, 0.05) 69%, rgba(255, 255, 255, 0.44) 99.22%);
  border-image-slice: 1;
}

/* Responsive cho mobile */
@media (max-width: 639px) {
  .image-container {
    aspect-ratio: 4 / 3; /* Tỉ lệ khác cho mobile */
  }
}

/* Dark mode cho placeholder */
@media (prefers-color-scheme: dark) {
  .image-placeholder {
    background: linear-gradient(45deg, #2a2a2a, #1a1a1a);
    color: #999;
  }
}

.marquee-image:hover {
  transform: translateY(-10px);
  box-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.25); /* shadow-2xl */
}

/* --- Grid Line Styles --- */
.grid-line {
  position: absolute;
  z-index: 30;
  -webkit-mask-composite: exclude;
  mask-composite: exclude;
  border: 1px solid;
  border-image-source: linear-gradient(162.93deg, rgba(255, 255, 255, 0.52) 8.56%, rgba(255, 255, 255, 0.1) 37.36%, rgba(255, 255, 255, 0.05) 69%, rgba(255, 255, 255, 0.44) 99.22%);
  border-image-slice: 1;
}

.grid-line-horizontal {
  --offset: 20px;
  --background: var(--bg-light);
  --color: var(--grid-line-light);
  --height: 1px;
  --width: 5px;
  --fade-stop: 90%;
  
  top: -1rem; /* -top-4 */
  left: calc(var(--offset) / 2 * -1);
  height: var(--height);
  width: calc(100% + var(--offset));
  background-image: linear-gradient(to right, var(--color), var(--color) 50%, transparent 0, transparent);
  background-size: var(--width) var(--height);
  -webkit-mask: linear-gradient(to left, var(--background) var(--fade-stop), transparent), linear-gradient(to right, var(--background) var(--fade-stop), transparent), linear-gradient(black, black);
  mask: linear-gradient(to left, var(--background) var(--fade-stop), transparent), linear-gradient(to right, var(--background) var(--fade-stop), transparent), linear-gradient(black, black);
  border: 1px solid;
  border-image-source: linear-gradient(162.93deg, rgba(255, 255, 255, 0.52) 8.56%, rgba(255, 255, 255, 0.1) 37.36%, rgba(255, 255, 255, 0.05) 69%, rgba(255, 255, 255, 0.44) 99.22%);
  border-image-slice: 1;
}

.grid-line-vertical {
  --offset: 80px;
  --background: var(--bg-light);
  --color: var(--grid-line-light);
  --height: 5px;
  --width: 1px;
  --fade-stop: 90%;

  left: -1rem; /* -left-4 */
  top: calc(var(--offset) / 2 * -1);
  height: calc(100% + var(--offset));
  width: var(--width);
  background-image: linear-gradient(to bottom, var(--color), var(--color) 50%, transparent 0, transparent);
  background-size: var(--width) var(--height);
  -webkit-mask: linear-gradient(to top, var(--background) var(--fade-stop), transparent), linear-gradient(to bottom, var(--background) var(--fade-stop), transparent), linear-gradient(black, black);
  mask: linear-gradient(to top, var(--background) var(--fade-stop), transparent), linear-gradient(to bottom, var(--background) var(--fade-stop), transparent), linear-gradient(black, black);
  border: 1px solid;
  border-image-source: linear-gradient(162.93deg, rgba(255, 255, 255, 0.52) 8.56%, rgba(255, 255, 255, 0.1) 37.36%, rgba(255, 255, 255, 0.05) 69%, rgba(255, 255, 255, 0.44) 99.22%);
  border-image-slice: 1;
}

@media (prefers-color-scheme: dark) {
  .grid-line-horizontal {
      --background: var(--bg-dark);
      --color: var(--grid-line-dark);
  }
  .grid-line-vertical {
      --background: var(--bg-dark);
      --color: var(--grid-line-dark);
  }
} 


