
/* =========================================================
   TYTOZ GALLERY
   Components Stylesheet
   Tattoo Artist: Akash Kumar
   Part 20.2 — Clean Components + Gallery Media
========================================================= */


/* =========================================================
   BUTTON COMPONENT
========================================================= */

.btn {
    position: relative;
    overflow: hidden;
}


/* =========================================================
   SECTION HEADING
========================================================= */

.section-heading {
    position: relative;
}


/* =========================================================
   GALLERY CARD
========================================================= */

.gallery-item {
    position: relative;
    isolation: isolate;
}


.gallery-item::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;

    background:
        linear-gradient(
            to top,
            rgba(0, 0, 0, 0.35),
            transparent 45%
        );

    opacity: 0;

    transition:
        opacity 0.3s ease;
}


.gallery-item:hover::before {
    opacity: 1;
}


.gallery-item-content {
    position: relative;
    z-index: 2;
}


/* =========================================================
   ART CARD
========================================================= */

.art-card {
    position: relative;
    overflow: hidden;
}


/* =========================================================
   GALLERY IMAGE / VIDEO
========================================================= */

.art-card img,
.art-card video {
    display: block;

    width: 100%;
    height: 100%;

    object-fit: cover;

    transition:
        transform 0.45s ease;
}


.art-card:hover img,
.art-card:hover video {
    transform: scale(1.03);
}


/* =========================================================
   VIDEO
========================================================= */

.art-card video {
    background: #000000;

    object-position: center;

    cursor: pointer;

    aspect-ratio: 4 / 3;
}


/* Prevent video controls from changing
   the gallery card appearance. */

.art-card video::-webkit-media-controls {
    display: none !important;
}


/* =========================================================
   ADMIN GALLERY MEDIA
========================================================= */

.admin-art-card img,
.admin-art-card video {
    display: block;

    width: 100%;
    height: 100%;

    object-fit: cover;
}


/* =========================================================
   SERVICE CARD
========================================================= */

.service-card {
    position: relative;
    overflow: hidden;
}


.service-card::before {
    content: "";

    position: absolute;

    top: 0;
    left: 0;

    width: 100%;
    height: 2px;

    background: var(--accent);

    transform: scaleX(0);
    transform-origin: center;

    transition:
        transform 0.3s ease;
}


.service-card:hover::before {
    transform: scaleX(1);
}


/* =========================================================
   CONTACT CARD
========================================================= */

.contact-card {
    transition:
        transform 0.3s ease,
        border-color 0.3s ease,
        box-shadow 0.3s ease;
}


.contact-card:hover {
    transform: translateY(-4px);

    border-color:
        rgba(212, 175, 55, 0.35);

    box-shadow:
        0 10px 35px rgba(0, 0, 0, 0.3);
}


/* =========================================================
   FORM COMPONENT
========================================================= */

.form-group {
    position: relative;
}


.form-group input,
.form-group select,
.form-group textarea {
    appearance: none;
    -webkit-appearance: none;
}


.form-group select {
    cursor: pointer;
}


/* =========================================================
   HERO BUTTON GROUP
========================================================= */

.hero-buttons .btn,
.contact-buttons .btn {
    min-width: 170px;
}


/* =========================================================
   FOOTER LINKS
========================================================= */

.footer-links a {
    position: relative;
}


.footer-links a::after {
    content: "";

    position: absolute;

    left: 0;
    bottom: -4px;

    width: 0;
    height: 1px;

    background: var(--accent);

    transition:
        width 0.3s ease;
}


.footer-links a:hover::after {
    width: 100%;
}


/* =========================================================
   MOBILE MENU COMPONENT
========================================================= */

.menu-toggle {
    position: relative;
    flex-shrink: 0;
}


.menu-toggle span {
    transform-origin: center;
}


/* =========================================================
   BACK TO TOP COMPONENT
========================================================= */

.back-to-top {
    user-select: none;

    -webkit-tap-highlight-color:
        transparent;
}


/* =========================================================
   LOADING COMPONENT
========================================================= */

.loader {
    user-select: none;
}


.loader-logo {
    animation:
        loaderPulse 1.4s ease-in-out infinite;
}


@keyframes loaderPulse {

    0%,
    100% {
        opacity: 0.45;

        transform:
            scale(0.98);
    }

    50% {
        opacity: 1;

        transform:
            scale(1);
    }

}


/* =========================================================
   SELECTION
========================================================= */

::selection {
    background: var(--accent);

    color: #111111;
}


/* =========================================================
   SCROLLBAR
========================================================= */

::-webkit-scrollbar {
    width: 8px;
}


::-webkit-scrollbar-track {
    background: #080808;
}


::-webkit-scrollbar-thumb {
    background: #333333;

    border-radius: 999px;
}


::-webkit-scrollbar-thumb:hover {
    background: var(--accent);
}


/* =========================================================
   GALLERY MEDIA ERROR
========================================================= */

.gallery-media-error {
    width: 100%;
    min-height: 220px;

    display: flex;

    align-items: center;
    justify-content: center;

    padding: 20px;

    background: #111111;

    color: #888888;

    font-size: 0.85rem;

    text-align: center;
}


/* =========================================================
   MOBILE GALLERY MEDIA
========================================================= */

@media (max-width: 760px) {

    .art-card img,
    .art-card video {
        object-fit: cover;
    }

}


/* =========================================================
   REDUCED MOTION
========================================================= */

@media (prefers-reduced-motion: reduce) {

    .art-card img,
    .art-card video {
        transition: none;
    }

}


/* =========================================================
   END
========================================================= */
