/* Custom font import and variables for a Kawaii theme */
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@100..900&family=Fredoka:wght=300..700&display=swap');

:root {
    --color-primary-bg: #f9eef4; /* Soft grey background */
    --color-accent-pink: #ff69b4; /* Hot Pink (Kawaii pink) */
    --color-pink-mid: #fabbd8; /* middle pink*/
    --color-title-pink: #faa1c9; /* New color for the main title */
    --color-title-white: #ffffff; /* white text */
    --color-text-dark: #374151;  /* Dark gray for readability */
    --color-grey: #fbf9fb;  /* Dark gray for readability */
}

/* --- Page Loader Overlay (full white screen with centered GIF, then fade out) --- */
/* Uses a pseudo-element so no extra HTML is required. It will auto-fade after a short delay. */
body::before {
    content: "";
    position: fixed;
    inset: 0; /* top:0; right:0; bottom:0; left:0; */
    background-color: #fbf9fb;
    background-image: url("img/Gif/load.gif");
    background-repeat: no-repeat;
    background-position: center;
    background-size: 160px; /* size of the GIF */
    z-index: 99999;
    opacity: 1;
    pointer-events: all; /* block interaction while visible */
    transition: opacity 450ms ease-in-out, visibility 450ms ease-in-out;
    /* Show loader for ~900ms, then fade during 450ms; adjust timings as needed */
    animation: loaderHoldFade 1.35s ease-in-out forwards;
}

@keyframes loaderHoldFade {
    0%   { opacity: 1; visibility: visible; }
    70%  { opacity: 1; visibility: visible; }
    100% { opacity: 0; visibility: hidden; pointer-events: none; }
}

/* If user prefers reduced motion, skip the animated delay and hide immediately after a tiny fade */
@media (prefers-reduced-motion: reduce) {
    body::before {
    animation: loaderHoldFadeReduced 500ms linear forwards;
    }
    @keyframes loaderHoldFadeReduced {
    0%   { opacity: 1; visibility: visible; }
    100% { opacity: 0; visibility: hidden; pointer-events: none; }
    }
}

/* Ensure the overlay sits above your fixed header/banner, etc. */
header, #floating-image, .fixed { z-index: 10; } /* lower than the overlay */

font-face {
  font-family: 'MyCuteFont';
  src: url('fonts/Cheeky Rabbit.ttf') format('truetype');
  font-weight: normal;
  font-style: normal;
}
.font-cute {
  font-family: 'MyCuteFont', sans-serif;
}

body {
    font-family: 'Inter', sans-serif;
    background-color: var(--color-primary-bg);
    color: var(--color-text-dark);
    scroll-behavior: smooth;
    cursor: default; /* Ensure cursor is visible */
}

/* Use Fredoka for headlines for a playful look */
.font-fredoka {
    font-family: 'Fredoka', sans-serif;
}

.text-pink-accent {
    color: var(--color-accent-pink);
}

.color-pink-mid {
    color: var(--color-pink-mid);
}

.text-title-white {
    color: var(--color-title-white);
}

.text-accent {
    color: var(--color-accent-pink);
}

.text-title-pink {
    color: var(--color-title-pink);
}

.bg-title-pink {
    background-color: var(--color-title-pink);
}

.bg-grey {
    background-color: var(--color-grey);
}

.bg-pink-accent {
    background-color: var(--color-accent-pink);
}

/* Custom Button Style */
.btn-commission {
    transition: all 0.3s ease;
    box-shadow: 0 4px 0 0 #fdf2f8; /* Darker pink for 'pop' effect */
}
.btn-commission:hover {
    transform: translateY(-2px);
    box-shadow: 0 6px 0 0 #fabbd8;
}
.btn-commission:active {
    transform: translateY(2px);
    box-shadow: 0 0 0 0 #fabbd8;
}
/* Custom form field styling */
.form-input {
    @apply w-full p-3 rounded-lg border-2 border-pink-200 focus:border-pink-accent focus:ring-1 focus:ring-pink-accent transition duration-150;
}

/* Hide steps initially except the first one */
.form-step {
    display: none;
}
.form-step.active {
    display: block;
}

/* --- Heart Trail CSS for subtle flowy movement --- */
.trail-element {
    position: fixed;
    pointer-events: none;
    z-index: 9999;
    opacity: 0;
    transform-origin: center;
    line-height: 1;
}

.heart-trail {
    color: var(--color-accent-pink);
    font-size: 18px;
    animation: heartFloat 3.5s cubic-bezier(0.25, 1, 0.5, 1) forwards; 
    text-shadow: 0 0 5px rgba(255, 105, 180, 0.5); 
}

@keyframes heartFloat {
    0% { transform: translate(0, 0) scale(0.5) rotate(var(--rot-start)); opacity: 0.9; }
    100% { transform: translate(var(--dx), var(--dy)) scale(1.3) rotate(var(--rot-end)); opacity: 0; }
}

/* --- Click Heart Effect --- */
.click-heart {
    color: var(--color-accent-pink);
    font-size: 50px; 
    animation: clickPop 0.6s ease-out forwards;
    text-shadow: 0 0 15px var(--color-accent-pink);
}

@keyframes clickPop {
    0% { transform: scale(0.1); opacity: 1; }
    50% { transform: scale(1.6); opacity: 1; }
    100% { transform: scale(1.1); opacity: 0; }
}

/* --- Heart Spinner CSS --- */
.heart-spinner {
    display: inline-block;
    animation: pulse 1s infinite alternate;
}
@keyframes pulse {
    0% { transform: scale(1); opacity: 0.8; }
    100% { transform: scale(1.15); opacity: 1; }
}
.center-logo {
    text-align: center; /* Ensures the image is centered within its flex container */
    width: 30%; 
}

.logo-img {
    max-height: 80px; /* Adjust size to fit neatly in your header */
    width: auto;
    /* Optional: Ensure the image is block-level for margin auto centering if needed */
    display: block; 
    margin: 0 auto;
}
/* slideshow styles */
.mySlides {display: none}
img {vertical-align: middle;}

/* Style for the images inside the slideshow */
.mySlides img {
  width: 100%;
  height: 550px; /* Adjust this height to fit your design */
  object-fit: cover; /* This will scale the image to cover the container, cropping if necessary */
}

/* Slideshow container */
.slideshow-container {
  max-width: 100%;
  position: relative;
  margin: auto;
}

/* Color overlay for the slideshow */
.slideshow-container::after {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: #4e2e3e;
    opacity: 0.5; /* Adjust this value (0 to 1) to make it darker or lighter */
}

/* Next & previous buttons */
.prev, .next {
  cursor: pointer;
  position: absolute;
  top: 50%;
  width: auto;
  padding: 16px;
  margin-top: -22px;
  color: #374151;
  font-weight: bold;
  font-size: 18px;
  transition: 0.6s ease;
  border-radius: 0 3px 3px 0;
  user-select: none;
}

/* Position the "next button" to the right */
.next {
  right: 0;
  border-radius: 3px 0 0 3px;
}

/* On hover, add a black background color with a little bit see-through */
.prev:hover, .next:hover {
  color: #ff69b4;
}

/* Caption text */
.text {
  color: #000000;
  font-size: 15px;
  padding: 8px 12px;
  position: absolute;
  bottom: 8px;
  width: 100%;
  text-align: center;
}

/* Number text (1/3 etc) */
.numbertext {
  color: #000000;
  font-size: 12px;
  padding: 8px 12px;
  position: absolute;
  top: 0;
}

/* The dots/bullets/indicators */
.dot {
  cursor: pointer;
  height: 15px;
  width: 15px;
  margin: 0 2px;
  background-color: #bbb;
  border-radius: 50%;
  display: inline-block;
  transition: background-color 0.6s ease;
}

.active, .dot:hover {
  background-color: #717171;
}

/* Fading animation */
.fade {
  animation-name: fade;
  animation-duration: 1.5s;
}

@keyframes fade {
  from {opacity: .4} 
  to {opacity: 1}
}

.image-container {
  position: relative;
  margin-top: 8px;
  overflow: visible;              /* or remove overflow if you don't need it */
  transition: transform 0.2s ease-in-out;
}

.image-container img {
  width: 100%;                    /* scale image to column width */
  height: auto;                   /* keep aspect ratio */
  display: block;
  object-fit: contain;            /* or remove object-fit entirely */
}


/* decorative outline that follows the heart shape */
.image-container::after{
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    background-size: 100% 100%;
    background-repeat: no-repeat;
}

/* On smaller screens, decrease text size */
@media only screen and (max-width: 300px) {
  .prev, .next,.text {font-size: 11px}
}
/* end slideshow styles */

/* Back to Top Button Styles */
#back-to-top-btn {
    display: none; /* Hidden by default */
    position: fixed; /* Fixed position */
    bottom: 20px; /* Place the button at the bottom of the page */
    right: 30px; /* Place the button 30px from the right */
    z-index: 99; /* Make sure it does not overlap other elements */
    border: none; /* Remove borders */
    outline: none; /* Remove outline */
    color: white; /* Text color */
    cursor: pointer; /* Add a mouse pointer on hover */
    padding: 15px; /* Some padding */
    border-radius: 50%; /* Rounded corners */
    font-size: 24px; /* Increase font size */
    box-shadow: 0 4px 8px rgba(0,0,0,0.2); /* Add a subtle shadow */
    transition: background-color 0.3s, opacity 0.3s, transform 0.3s; /* Smooth transitions */
    opacity: 0; /* Start fully transparent */
    transform: translateY(20px); /* Start slightly below its final position */
}

#back-to-top-btn:hover {
    transform: translateY(0) scale(1.05); /* Slight lift and scale on hover */
}

/* ✨ New style for the footer image shadow */
.footer-shadow {
    filter: drop-shadow(0 -4px 5px rgba(146, 52, 94, 0.15));
}
.header-lace-wrapper {
  background: transparent;      /* no color */
}

#header {
  background: transparent;      /* make sure the image element itself has no bg */
}
/* Layout basics */
body {
  margin: 0;
  font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

/* Lace header wrapper transparency */
.header-lace-wrapper,
#header-lace {
  background: transparent;
  pointer-events: none;
}

/* Footer & lace smooth animation */
#header-lace,
#floating-footer-image {
  transition: opacity 0.4s ease, transform 0.4s ease;
}

/* Slideshow helpers */
.slideshow-container {
  position: relative;
  margin: 0 auto;
}

.slideshow-controls {
  position: absolute;
  bottom: -15px;
  width: 100%;
  display: flex;
  justify-content: space-between;
  z-index: 999;
}

.slideshow-dots {
  text-align: center;
  position: absolute;
  bottom: 20px;
  width: 100%;
  z-index: 10;
}

/* Contact cards */
.contact-card {
  padding: 1rem;
  background: white;
  border-radius: 0.75rem;
  box-shadow: 0 10px 25px rgba(0, 0, 0, 0.08);
  transition: transform 0.3s, box-shadow 0.3s;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
}

.contact-card:hover {
  transform: scale(1.05);
  box-shadow: 0 16px 35px rgba(0, 0, 0, 0.12);
}

/* Heart trail elements (you likely already have some of this) */
.trail-element {
  position: fixed;
  pointer-events: none;
  z-index: 1000;
}

/* Back to top button */
#back-to-top-btn {
  position: fixed;
  bottom: 1.5rem;
  right: 1.5rem;
  padding: 0.6rem 0.8rem;
  border-radius: 9999px;
  border: none;
  background-color: #ec4899;
  color: white;
  font-size: 1.2rem;
  cursor: pointer;
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.3s ease, transform 0.3s ease;
  z-index: 50;
}
.scroll-box {
  height: 350px;              /* 🔧 change this number to make it taller/shorter */
  width: 300px;
  padding: 8px;
  overflow: auto;
  background-color: #ffffff;
  border-width: 7px;
  border-style: solid;
  border-image: url("https://file.garden/ZmMRACOgiFXI9dml/fb1.png") 7 fill round; /* use your own border image */
}

/* WebKit (Chrome/Edge/Safari) */
.scroll-box::-webkit-scrollbar {
  width: 8px;
}

.scroll-box::-webkit-scrollbar-track {
  background: #ffe4f3;
  border-radius: 4px;
}

.scroll-box::-webkit-scrollbar-thumb {
  background: #ff69b4;
  border-radius: 4px;
}

/* Firefox */
.scroll-box {
  scrollbar-width: thin;
  scrollbar-color: #ff69b4 #ffe4f3;
}

.blinkies-wrapper {
  width: 99%;
  height: 60px;
  margin-top: 5px;
  overflow: hidden;
}

.blinkies-inner {
  display: inline-block;
  white-space: nowrap;
}

.blinkies-track {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  animation: blinkies 50s linear infinite; /* adjust time for speed */
}

.blinkies-track img {
  height: 60px;
  width: auto;
}

@keyframes blinkies {
  0% {
    transform: translateX(0);
  }
  100% {
    transform: translateX(-50%);
  }
}
.blinkies-container {
  width: 99%;
  height: 60px;
  margin-top: 5px;
  overflow: hidden;
}

/* 1.png fills the strip height, scales with window */
.blinkies-main {
  height: 60px;
  width: auto;
}

/* other images same height so they sit in one row */
.blinkies-small {
  height: 60px;
  width: auto;
}


BUTTON STUFF START

.magic-btn {
  transform-style: preserve-3d;
  transition:
    transform 0.15s ease-out,
    box-shadow 0.15s ease-out,
    filter 0.15s ease-out;
  box-shadow:
    0 12px 0 #f08abf,
    0 18px 25px rgba(0,0,0,0.25);
}

/* pop out on simple hover */
.magic-btn:hover {
  transform: translateY(-4px) scale(1.03);
  box-shadow:
    0 8px 0 #f08abf,
    0 14px 22px rgba(0,0,0,0.25);
}

/* shiny spot that moves with mouse */
.magic-btn::after {
  content: "";
  position: absolute;
  width: 120px;
  height: 120px;
  border-radius: 999px;
  pointer-events: none;
  opacity: 0;
  background: radial-gradient(circle at center,
    rgba(255,255,255,0.9),
    rgba(255,255,255,0) 60%);
  transform: translate3d(-50%, -50%, 0);
  top: calc(var(--y, 0) * 1px);
  left: calc(var(--x, 0) * 1px);
  transition: opacity 0.2s ease-out;
}

/* show sheen while hovered */
.magic-btn:hover::after {
  opacity: 0.7;
}

.magic-btn {
  transform-style: preserve-3d;
  transition:
    transform 0.15s ease-out,
    box-shadow 0.15s ease-out,
    filter 0.15s ease-out;
  box-shadow:
    0 12px 0 #f08abf,
    0 18px 25px rgba(0,0,0,0.25);
}

.magic-btn:hover {
  transform: translateY(-4px) scale(1.03);
  box-shadow:
    0 8px 0 #f08abf,
    0 14px 22px rgba(0,0,0,0.25);
}

/* sheen: horizontal only */
.magic-btn::after {
  content: "";
  position: absolute;
  width: 190px;
  height: 230px;
  border-radius: 999px;
  pointer-events: none;
  opacity: 0;
  /* softer, more faded diagonal band */
  background: linear-gradient(
    135deg,
    rgba(255,255,255,0) 0%,
    rgba(255,255,255,0.55) 40%,
    rgba(255,255,255,0.25) 55%,
    rgba(255,255,255,0) 90%
  );
  filter: blur(8px);                 /* blur edges */
  transform: translate3d(-50%, -50%, 0) rotate(15deg);
  top: calc(50% - 10px);
  left: calc(var(--x, 50) * 1px);
  transition: opacity 0.2s ease-out;
}

.magic-btn:hover::after {
  opacity: 0.55;                     /* lower overall opacity */
}

<style>
  /* ========================
     📷 GALLERY GRID
     ======================== */

  .row {
    display: flex;
    flex-wrap: wrap;
    padding: 0 4px;
  }

  /* Use CSS grid so items display left-to-right, top-to-bottom */
  #gallery {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 8px;
    padding: 0 4px;
    align-items: start;
  }

  #gallery .column {
    width: 100%;
    margin: 0;
  }

  @media screen and (max-width: 800px) {
    #gallery {
      grid-template-columns: repeat(2, minmax(0, 1fr));
    }
  }

  @media screen and (max-width: 600px) {
    #gallery {
      grid-template-columns: 1fr;
    }
  }

  .image-container {
    position: relative;
    margin-top: 8px;
    overflow: hidden;
    transition: transform 0.2s ease-in-out;
  }

  .image-container img,
  .image-container video {
    width: 100%;
    display: block;
    vertical-align: middle;
  }

  .image-container:hover {
    transform: scale(1.05);
    cursor: pointer;
  }

  .image-overlay {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    background: rgba(0,0,0,0.6);
    color: #fff;
    text-align: center;
    padding: 8px 0;
    opacity: 0;
    transition: opacity 0.3s ease;
    font-size: 0.875rem;
  }

  .image-container:hover .image-overlay {
    opacity: 1;
  }
</style>

<script>
  function cleanDisplayName(filename) {
    return filename
      .replace(/\.(png|jpe?g|gif|webp|mp4)$/i, "")
      .replace(/\s*[\[\(]\d{1,2}-\d{1,2}-\d{2,4}[\]\)]\s*/g, "")
      .replace(/\s+\d{1,2}-\d{1,2}-\d{2,4}$/g, "")
      .trim();
  }

  // inside your imageFiles.forEach(file => { ... }) block, use:
  // const displayName = cleanDisplayName(file.name);
</script>
