.text-vertical {
  writing-mode: vertical-rl;
  text-orientation: mixed;
}
.preserve-3d {
  transform-style: preserve-3d;
}
.perspective-1000 {
  perspective: 1000px;
}
.no-scrollbar::-webkit-scrollbar {
  display: none;
}
.no-scrollbar {
  -ms-overflow-style: none;
  scrollbar-width: none;
}
.custom-scrollbar::-webkit-scrollbar {
  width: 4px;
}
.custom-scrollbar::-webkit-scrollbar-track {
  background: rgba(0, 0, 0, 0.05);
}
.custom-scrollbar::-webkit-scrollbar-thumb {
  background: rgba(60, 71, 75, 0.2);
  border-radius: 2px;
}
.custom-scrollbar::-webkit-scrollbar-thumb:hover {
  background: rgba(60, 71, 75, 0.4);
}
.floor-transition {
  transition-property: flex-grow, flex-shrink, flex-basis, filter;
  transition-timing-function: cubic-bezier(0.19, 1, 0.22, 1);
  transition-duration: 1000ms;
  will-change: flex-grow;
}
.anasa-3d-model {
  transform: rotateX(var(--rot-x, 55deg)) rotateZ(var(--rot-z, 45deg)) scale3d(0.8, 0.8, 0.8);
  transition: transform 700ms ease-out;
}
.anasa-3d-model.is-interacting {
  transition-duration: 0ms;
}
.anasa-3d-label {
  transform: rotateZ(var(--rot-z-neg, -45deg)) rotateX(var(--rot-x-neg, -55deg)) translateY(-80px);
}
.room-hovered path {
  fill: rgba(255, 75, 26, 0.15);
  stroke: #FF4B1A;
  stroke-width: 0.6;
}
.room-hovered text {
  opacity: 1;
  font-weight: 800;
}
.info-card {
  opacity: 0;
  transform: translateY(10px);
}
.info-card.is-visible {
  opacity: 1;
  transform: translateY(0);
}
.room-3d-label {
  opacity: 0;
}
.room-3d-hovered .room-3d-label {
  opacity: 1;
}
.room-3d-hovered svg path {
  fill: rgba(255, 75, 26, 0.2) !important;
  stroke: #FF4B1A !important;
}
.backdrop-blur-md {
  -webkit-backdrop-filter: blur(12px) !important;
  backdrop-filter: blur(12px) !important;
}
.backdrop-blur-sm {
  -webkit-backdrop-filter: blur(4px) !important;
  backdrop-filter: blur(4px) !important;
}
.backdrop-blur-xl {
  -webkit-backdrop-filter: blur(24px) !important;
  backdrop-filter: blur(24px) !important;
}
.backdrop-blur-2xl {
  -webkit-backdrop-filter: blur(40px) !important;
  backdrop-filter: blur(40px) !important;
}
@keyframes floorExpand {
  0% { flex: 1; }
  100% { flex: 10; }
}
@keyframes floorCollapse {
  0% { flex: 10; }
  100% { flex: 1; }
}
.animate-floor-expand {
  animation: floorExpand 0.7s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}
.animate-floor-collapse {
  animation: floorCollapse 0.7s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}
@keyframes imageZoomIn {
  0% { transform: scale(1.15); }
  100% { transform: scale(1); }
}
.animate-image-zoom-in {
  animation: imageZoomIn 1.5s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}
@keyframes fadeInUp {
  0% { opacity: 0; transform: translateY(30px); }
  100% { opacity: 1; transform: translateY(0); }
}
@keyframes zoomIn {
  0% { opacity: 0; transform: scale(0.92); }
  100% { opacity: 1; transform: scale(1); }
}
@keyframes float {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-10px); }
}
@keyframes slideLeft {
  0% { transform: translateX(100%); opacity: 0; }
  100% { transform: translateX(0); opacity: 1; }
}
@keyframes slideRight {
  0% { transform: translateX(-100%); opacity: 0; }
  100% { transform: translateX(0); opacity: 1; }
}
@keyframes assembleUp {
  0% { transform: translateZ(-60px); opacity: 0; }
  100% { transform: translateZ(0); opacity: 1; }
}
@keyframes modalPop {
  0% { opacity: 0; transform: scale(0.95) translateY(20px); }
  100% { opacity: 1; transform: scale(1) translateY(0); }
}
@keyframes breathe {
  0%, 100% { font-variation-settings: "wght" 700; }
  50% { font-variation-settings: "wght" 800; }
}
@keyframes spinSlow {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}
.animate-fade-in-up { animation: fadeInUp 1s cubic-bezier(0.16, 1, 0.3, 1) forwards; }
.animate-zoom-in { animation: zoomIn 2s cubic-bezier(0.16, 1, 0.3, 1) forwards; }
.animate-float { animation: float 6s ease-in-out infinite; }
.animate-slide-left { animation: slideLeft 1s cubic-bezier(0.19, 1, 0.22, 1) forwards; }
.animate-slide-right { animation: slideRight 1s cubic-bezier(0.19, 1, 0.22, 1) forwards; }
.animate-assemble-up { animation: assembleUp 1.2s cubic-bezier(0.19, 1, 0.22, 1) forwards; }
.animate-modal-pop { animation: modalPop 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards; }
.animate-breathe { animation: breathe 60s ease-in-out infinite; }
.animate-spin-slow { animation: spinSlow 10s linear infinite; }

.hero-anasa-title {
  display: inline-block;
  max-width: 100%;
  white-space: nowrap;
}

@keyframes breatheMobile {
  0%, 100% { font-variation-settings: "wght" 700; }
  50% { font-variation-settings: "wght" 740; }
}

@media (max-width: 767px) {
  .project-info-wrapper {
    transform: translateY(0) !important;
  }
  .project-location {
    opacity: 1 !important;
  }
  .project-description {
    max-height: 10rem !important;
    padding: 1rem !important;
    border-color: hsla(0, 0%, 100%, 0.1) !important;
  }
}

@media (max-width: 767px) {
  .hero-anasa-title {
    font-size: clamp(3rem, 18vw, 4.5rem);
    letter-spacing: -0.03em;
    line-height: 0.85;
  }

  .hero-anasa-title.animate-breathe {
    animation: breatheMobile 16s ease-in-out infinite;
  }
}
