@-webkit-keyframes passing-through{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%,70%{opacity:1;-webkit-transform:translateY(0px);-moz-transform:translateY(0px);-ms-transform:translateY(0px);-o-transform:translateY(0px);transform:translateY(0px)}100%{opacity:0;-webkit-transform:translateY(-40px);-moz-transform:translateY(-40px);-ms-transform:translateY(-40px);-o-transform:translateY(-40px);transform:translateY(-40px)}}@-moz-keyframes passing-through{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%,70%{opacity:1;-webkit-transform:translateY(0px);-moz-transform:translateY(0px);-ms-transform:translateY(0px);-o-transform:translateY(0px);transform:translateY(0px)}100%{opacity:0;-webkit-transform:translateY(-40px);-moz-transform:translateY(-40px);-ms-transform:translateY(-40px);-o-transform:translateY(-40px);transform:translateY(-40px)}}@keyframes passing-through{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%,70%{opacity:1;-webkit-transform:translateY(0px);-moz-transform:translateY(0px);-ms-transform:translateY(0px);-o-transform:translateY(0px);transform:translateY(0px)}100%{opacity:0;-webkit-transform:translateY(-40px);-moz-transform:translateY(-40px);-ms-transform:translateY(-40px);-o-transform:translateY(-40px);transform:translateY(-40px)}}@-webkit-keyframes slide-in{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%{opacity:1;-webkit-transform:translateY(0px);-moz-transform:translateY(0px);-ms-transform:translateY(0px);-o-transform:translateY(0px);transform:translateY(0px)}}@-moz-keyframes slide-in{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%{opacity:1;-webkit-transform:translateY(0px);-moz-transform:translateY(0px);-ms-transform:translateY(0px);-o-transform:translateY(0px);transform:translateY(0px)}}@keyframes slide-in{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%{opacity:1;-webkit-transform:translateY(0px);-moz-transform:translateY(0px);-ms-transform:translateY(0px);-o-transform:translateY(0px);transform:translateY(0px)}}@-webkit-keyframes pulse{0%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}10%{-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-ms-transform:scale(1.1);-o-transform:scale(1.1);transform:scale(1.1)}20%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}}@-moz-keyframes pulse{0%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}10%{-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-ms-transform:scale(1.1);-o-transform:scale(1.1);transform:scale(1.1)}20%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}}@keyframes pulse{0%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}10%{-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-ms-transform:scale(1.1);-o-transform:scale(1.1);transform:scale(1.1)}20%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}}.dropzone,.dropzone *{box-sizing:border-box}.dropzone{min-height:150px;border:2px solid rgba(0,0,0,.3);background:#fff;padding:20px 20px}.dropzone.dz-clickable{cursor:pointer}.dropzone.dz-clickable *{cursor:default}.dropzone.dz-clickable .dz-message,.dropzone.dz-clickable .dz-message *{cursor:pointer}.dropzone.dz-started .dz-message{display:none}.dropzone.dz-drag-hover{border-style:solid}.dropzone.dz-drag-hover .dz-message{opacity:.5}.dropzone .dz-message{text-align:center;margin:2em 0}.dropzone .dz-message .dz-button{background:none;color:inherit;border:none;padding:0;font:inherit;cursor:pointer;outline:inherit}.dropzone .dz-preview{position:relative;display:inline-block;vertical-align:top;margin:16px;min-height:100px}.dropzone .dz-preview:hover{z-index:1000}.dropzone .dz-preview:hover .dz-details{opacity:1}.dropzone .dz-preview.dz-file-preview .dz-image{border-radius:20px;background:#999;background:linear-gradient(to bottom, #eee, #ddd)}.dropzone .dz-preview.dz-file-preview .dz-details{opacity:1}.dropzone .dz-preview.dz-image-preview{background:#fff}.dropzone .dz-preview.dz-image-preview .dz-details{-webkit-transition:opacity 0.2s linear;-moz-transition:opacity 0.2s linear;-ms-transition:opacity 0.2s linear;-o-transition:opacity 0.2s linear;transition:opacity 0.2s linear}.dropzone .dz-preview .dz-remove{font-size:14px;text-align:center;display:block;cursor:pointer;border:none}.dropzone .dz-preview .dz-remove:hover{text-decoration:underline}.dropzone .dz-preview:hover .dz-details{opacity:1}.dropzone .dz-preview .dz-details{z-index:20;position:absolute;top:0;left:0;opacity:0;font-size:13px;min-width:100%;max-width:100%;padding:2em 1em;text-align:center;color:rgba(0,0,0,.9);line-height:150%}.dropzone .dz-preview .dz-details .dz-size{margin-bottom:1em;font-size:16px}.dropzone .dz-preview .dz-details .dz-filename{white-space:nowrap}.dropzone .dz-preview .dz-details .dz-filename:hover span{border:1px solid rgba(200,200,200,.8);background-color:rgba(255,255,255,.8)}.dropzone .dz-preview .dz-details .dz-filename:not(:hover){overflow:hidden;text-overflow:ellipsis}.dropzone .dz-preview .dz-details .dz-filename:not(:hover) span{border:1px solid transparent}.dropzone .dz-preview .dz-details .dz-filename span,.dropzone .dz-preview .dz-details .dz-size span{background-color:rgba(255,255,255,.4);padding:0 .4em;border-radius:3px}.dropzone .dz-preview:hover .dz-image img{-webkit-transform:scale(1.05, 1.05);-moz-transform:scale(1.05, 1.05);-ms-transform:scale(1.05, 1.05);-o-transform:scale(1.05, 1.05);transform:scale(1.05, 1.05);-webkit-filter:blur(8px);filter:blur(8px)}.dropzone .dz-preview .dz-image{border-radius:20px;overflow:hidden;width:120px;height:120px;position:relative;display:block;z-index:10}.dropzone .dz-preview .dz-image img{display:block}.dropzone .dz-preview.dz-success .dz-success-mark{-webkit-animation:passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);-moz-animation:passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);-ms-animation:passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);-o-animation:passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);animation:passing-through 3s cubic-bezier(0.77, 0, 0.175, 1)}.dropzone .dz-preview.dz-error .dz-error-mark{opacity:1;-webkit-animation:slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);-moz-animation:slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);-ms-animation:slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);-o-animation:slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);animation:slide-in 3s cubic-bezier(0.77, 0, 0.175, 1)}.dropzone .dz-preview .dz-success-mark,.dropzone .dz-preview .dz-error-mark{pointer-events:none;opacity:0;z-index:500;position:absolute;display:block;top:50%;left:50%;margin-left:-27px;margin-top:-27px}.dropzone .dz-preview .dz-success-mark svg,.dropzone .dz-preview .dz-error-mark svg{display:block;width:54px;height:54px}.dropzone .dz-preview.dz-processing .dz-progress{opacity:1;-webkit-transition:all 0.2s linear;-moz-transition:all 0.2s linear;-ms-transition:all 0.2s linear;-o-transition:all 0.2s linear;transition:all 0.2s linear}.dropzone .dz-preview.dz-complete .dz-progress{opacity:0;-webkit-transition:opacity 0.4s ease-in;-moz-transition:opacity 0.4s ease-in;-ms-transition:opacity 0.4s ease-in;-o-transition:opacity 0.4s ease-in;transition:opacity 0.4s ease-in}.dropzone .dz-preview:not(.dz-processing) .dz-progress{-webkit-animation:pulse 6s ease infinite;-moz-animation:pulse 6s ease infinite;-ms-animation:pulse 6s ease infinite;-o-animation:pulse 6s ease infinite;animation:pulse 6s ease infinite}.dropzone .dz-preview .dz-progress{opacity:1;z-index:1000;pointer-events:none;position:absolute;height:16px;left:50%;top:50%;margin-top:-8px;width:80px;margin-left:-40px;background:rgba(255,255,255,.9);-webkit-transform:scale(1);border-radius:8px;overflow:hidden}.dropzone .dz-preview .dz-progress .dz-upload{background:#333;background:linear-gradient(to bottom, #666, #444);position:absolute;top:0;left:0;bottom:0;width:0;-webkit-transition:width 300ms ease-in-out;-moz-transition:width 300ms ease-in-out;-ms-transition:width 300ms ease-in-out;-o-transition:width 300ms ease-in-out;transition:width 300ms ease-in-out}.dropzone .dz-preview.dz-error .dz-error-message{display:block}.dropzone .dz-preview.dz-error:hover .dz-error-message{opacity:1;pointer-events:auto}.dropzone .dz-preview .dz-error-message{pointer-events:none;z-index:1000;position:absolute;display:block;display:none;opacity:0;-webkit-transition:opacity 0.3s ease;-moz-transition:opacity 0.3s ease;-ms-transition:opacity 0.3s ease;-o-transition:opacity 0.3s ease;transition:opacity 0.3s ease;border-radius:8px;font-size:13px;top:130px;left:-10px;width:140px;background:#be2626;background:linear-gradient(to bottom, #be2626, #a92222);padding:.5em 1.2em;color:#fff}.dropzone .dz-preview .dz-error-message:after{content:"";position:absolute;top:-6px;left:64px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #be2626}/* --- 1. Main Dropzone Container --- */
#my-dropzone {
    min-height: 220px;
    display: flex;
    flex-direction: row; 
    justify-content: start; 
    align-items: center;     
    padding: 10px;
    margin: 10px;
    overflow-x: auto;  
    overflow-y: hidden;
    border: 2px dashed rgba(255,255,255,0.2);
    border-radius: 8px;
    gap: 10px;
}

/* Centering logic for few items, scrolling logic for many */
#my-dropzone::before,
#my-dropzone::after {
    content: '';
    margin: auto;
}

/* --- 2. Preview Item Wrapper --- */
.dropzone .dz-preview {
    position: relative !important;
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    width: 140px;
    flex-shrink: 0 !important;
    margin: 20px 15px !important;
    overflow: visible !important;
    background: transparent !important;
}

/* --- 3. The Circular Image --- */
.dropzone .dz-preview .dz-image {
    width: 120px !important;
    height: 120px !important;
    border-radius: 50% !important;
    overflow: hidden !important;
    border: 2px solid #77D7FF;
    display: flex !important;
    justify-content: center !important;
    align-items: center !important;
    background: #f8f9fa;
    z-index: 10;
    margin-bottom: 8px !important;
}

.dropzone .dz-preview .dz-image img {
    min-width: 100% !important;
    min-height: 100% !important;
    object-fit: cover !important;
    display: block !important;
    margin: 0 !important;
    transition: filter 0.2s ease;
}

/* --- 4. Filename & Details --- */
.dropzone .dz-preview .dz-details {
    opacity: 1 !important;
    position: static !important;
    text-align: center !important;
    width: 100% !important;
    padding: 0 !important;
    background: transparent !important;
    color: #0077B6 !important;
}

.dropzone .dz-preview .dz-details .dz-filename {
    display: block !important;
    max-width: 140px !important;
    margin: 0 auto !important;
    overflow: hidden !important;
}

.dropzone .dz-preview .dz-details .dz-filename span {
    display: block !important;
    font-size: 0.75rem;
    font-weight: 600;
    color: #0077B6 !important;
    white-space: nowrap !important;    
    overflow: hidden !important;
}

.dropzone .dz-preview .dz-size {
    display: none !important;
}

/* --- 5. Progress Bar --- */
.dropzone .dz-preview .dz-progress {
    position: absolute !important;
    left: 50% !important;
    top: 80px !important; 
    transform: translateX(-50%) !important;
    width: 80px !important;
    height: 10px !important;
    background: rgba(0, 0, 0, 0.15) !important;
    z-index: 30 !important;

    margin: 0 !important;
    border-radius: 5px !important;
    overflow: hidden !important;
}

.dropzone .dz-preview .dz-progress .dz-upload { /* The Fill (Inner) */
    display: block !important; /* This was likely the gray-out culprit */
    height: 100% !important;
    background: #0077B6 !important; /* Sapphire blue fill */
    width: 0%; /* Dropzone's JS will move this from 0 to 100 */
    transition: width 0.3s ease;
}

.dropzone .dz-preview.dz-complete .dz-progress {
    display: none !important;
    /*  For debug
    display: block !important;
    opacity: 1 !important;
    visibility: visible !important; */
}

/* --- 6. Success Mark (Top-Right) --- */
.dropzone .dz-preview .dz-success-mark {
    display: block !important;
    position: absolute !important;
    top: 0px !important;
    right: 0px !important;
    left: auto !important;
    transform: none !important; 
    margin: 0 !important;
    width: 32px !important;
    height: 32px !important;
    background-color: #28a745 !important;
    border-radius: 50% !important;
    border: 2px solid #ffffff !important;
    box-shadow: 0 2px 5px rgba(0,0,0,0.2) !important;
    z-index: 50 !important;
    opacity: 0;
    transition: opacity 0.3s ease;
}

.dropzone .dz-preview .dz-success-mark svg { display: none !important; }

/* Success Checkmark Icon (White) */
.dropzone .dz-preview.dz-success .dz-success-mark::after {
    content: '';
    position: absolute;
    left: 11px;
    top: 6px;
    width: 7px;
    height: 12px;
    border: solid white;
    border-width: 0 3px 3px 0;
    transform: rotate(45deg);
}

.dropzone .dz-preview.dz-success .dz-success-mark { opacity: 1 !important; }

/* --- 7. Error Mark (Top-Right) --- */
.dropzone .dz-preview .dz-error-mark {
    display: block !important;
    position: absolute !important;
    top: 0px !important;
    right: 0px !important;
    left: auto !important;
    transform: none !important;
    margin: 0 !important;
    width: 32px !important;
    height: 32px !important;
    background-color: #d9534f !important;
    border-radius: 50% !important;
    border: 2px solid #ffffff !important;
    box-shadow: 0 2px 5px rgba(0,0,0,0.2) !important;
    z-index: 50 !important;
    opacity: 0;
    transition: opacity 0.3s ease;
}

.dropzone .dz-preview .dz-error-mark svg { display: none !important; }

/* Error "X" Icon (White) */
.dropzone .dz-preview.dz-error .dz-error-mark::before,
.dropzone .dz-preview.dz-error .dz-error-mark::after {
    content: '';
    position: absolute;
    left: 14px;
    top: 7px;
    width: 3px;
    height: 16px;
    background-color: white;
}
.dropzone .dz-preview.dz-error .dz-error-mark::before { transform: rotate(45deg); }
.dropzone .dz-preview.dz-error .dz-error-mark::after { transform: rotate(-45deg); }

.dropzone .dz-preview.dz-error .dz-error-mark { opacity: 1 !important; }

/* --- 8. Remove Button & Hover Logic --- */
.dropzone .dz-preview .dz-remove {
    position: absolute !important;
    top: 0px !important;
    left: 0px !important;
    right: auto !important;
    z-index: 60 !important;
    width: 32px !important;
    height: 32px !important;
    background-color: #d9534f !important;
    color: white !important;
    border-radius: 50% !important;
    border: 2px solid #fff !important;
    display: flex !important;
    justify-content: center !important;
    align-items: center !important;
    text-decoration: none !important;
    font-weight: bold !important;
    font-size: 16px !important;
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
    cursor: pointer;
    opacity: 0 !important;
    transform: scale(0.5) !important;
    transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275) !important;
}

/* Interaction States */
.dropzone .dz-preview:hover .dz-remove {
    opacity: 1 !important;
    transform: scale(1) !important;
}

.dropzone .dz-preview:hover .dz-image img {
    filter: brightness(0.9) !important; /* Slight dim instead of blur */
}

/* Disable default Dropzone dark overlays */
.dropzone .dz-preview.dz-image-preview { background: transparent !important; }
.dropzone .dz-preview:hover .dz-details { opacity: 1 !important; }

/* --- 9. Scrollbar & Error List --- */
#my-dropzone::-webkit-scrollbar { height: 6px; }
#my-dropzone::-webkit-scrollbar-thumb {
    background: #77D7FF;
    border-radius: 10px;
}

.error-list {
    color: #721c24;
    background-color: #f8d7da;
    border: 1px solid #f5c6cb;
    padding: 15px 20px;
    margin: 20px 10px;
    border-radius: 6px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.05);
}

.error-list strong {
    color: #af233a; /* Slightly darker red for the "Errors:" header */
}

#error-list-items {
    padding-left: 20px;
    margin-top: 10px;
    margin-bottom: 0;
}

#error-list-items li {
    list-style-type: disc;
    line-height: 1.5;
}

/* On file replacement */
/* A subtle fade-and-scale-down for replaced items */
/*.dropzone .dz-preview.dz-leaving {
    opacity: 0;
    transform: scale(0.8);
    transition: all 0.2s ease-in;
}*/

/* Optional: Highlight the new 'Replacing' file with a temporary glow */
/*@keyframes replace-glow {
    0% { box-shadow: 0 0 0px #77D7FF; }
    50% { box-shadow: 0 0 20px #77D7FF; }
    100% { box-shadow: 0 0 0px #77D7FF; }
}

.dropzone .dz-preview.dz-processing .dz-image {
    animation: replace-glow 1s ease-in-out;
}*/

/* Other buttons and links on the card */
.custom-link {
    color: #77D7FF; /* Recommended Sky Blue */
    transition: all 0.3s ease;
    white-space: nowrap;
  }
  .custom-link:hover {
    color: #B2EBFF; /* Becomes a lighter, "hotter" cyan */
    text-shadow: 0 0 8px rgba(119, 215, 255, 0.6); /* Adds a "Neon" glow */
  }
  .custom-link-on-white {
    color: #0077B6; /* Deep Cerulean - pairs perfectly with #77D7FF */
    transition: all 0.3s ease;
    white-space: nowrap;
    font-weight: 500; /* Slight weight boost helps on white backgrounds */
  }

  .custom-link-on-white:hover {
    color: #00B4D8; /* Brightens up, but stays legible */
    text-shadow: none; /* Glows don't work well on white; use color shift instead */
  }

/* Quote button */
  #btn-get-quote {
    background: linear-gradient(45deg, #0077B6, #00B4D8);
    border: none;
    animation: button-appear 0.5s ease-out, pulse-glow 2s infinite;
}

@keyframes button-appear {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}

@keyframes pulse-glow {
    0% { box-shadow: 0 0 0 rgba(119, 215, 255, 0.4); }
    70% { box-shadow: 0 0 15px rgba(119, 215, 255, 0.8); }
    100% { box-shadow: 0 0 0 rgba(119, 215, 255, 0.4); }
}

/* Shake animation for failed actions */
.btn-shake {
    animation: shake 0.5s cubic-bezier(.36,.07,.19,.97) both;
}

@keyframes shake {
    10%, 90% { transform: translate3d(-1px, 0, 0); }
    20%, 80% { transform: translate3d(2px, 0, 0); }
    30%, 50%, 70% { transform: translate3d(-4px, 0, 0); }
    40%, 60% { transform: translate3d(4px, 0, 0); }
}
