/* === Base Reset === */
html, body {
    margin: 0;
    width: 100vw;
    height: 100vh;
    overflow: hidden;
    touch-action: pan-y;
}

img {
    width: 100%;
    height: auto;
}

.noselect {
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}

/* === Global Toggle Classes === */
.hide {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}

.show {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
}

/* === Image Layers === */
.img_base {
    position: absolute;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    object-fit: cover;
    pointer-events: none;
}

.img_name {
    transition: opacity 1s;
}

.img_name.dim {
    opacity: 0.01;
}

.anim_op {
    animation: dimmer 30s infinite;
}

.anim_flick {
    animation: flicker 60s infinite;
}

@keyframes dimmer {
    0%, 60%, 80%, 100% { opacity: 0; }
    70% { opacity: 0.5; }
}

@keyframes flicker {
    0%, 100% { opacity: 0; }
    50.1%, 50.3%, 50.5% { opacity: 0.8; }
    50.0%, 50.2%, 50.4%, 52% { opacity: 0; }
}

/* === Menu Styles === */
.menu-container {
    position: absolute;
    top: 5%;
    right: 15%;
    z-index: 900;
}

.hamburger-menu {
    cursor: pointer;
    width: 24px;
    height: 24px;
    text-align: center;
}

.hamburger-menu .bar {
    width: 100%;
    height: 2px;
    background-color: white;
}

.bar_anim {
    transform: translate3d(0, 11px, 0) rotateZ(270deg);
    transform-style: preserve-3d;
    transition: transform 0.8s cubic-bezier(.1,0,0,1);
}

.bar_static {
    transform: translate3d(0, 12px, 0);
    transform-style: preserve-3d;
}

.rotated {
    transform: translate3d(0, 11px, 0) rotateZ(0deg);
}

/* === Menu Content === */
.menu-content {
    visibility: hidden;
    position: absolute;
    top: 40px;
    right: 0;
    background-color: rgba(0, 0, 0, 0.3);
    padding: 7px 30px;
    border-radius: 5px;
    font-family: "Open Sans", sans-serif;
    font-weight: 600;
    opacity: 0;
    transform: translateY(-7.5%);
    transition: opacity 0.5s, transform 0.5s, visibility 0.5s;
}

.menu-content.show {
    visibility: visible;
    opacity: 1;
    transform: translateY(0%);
}

.menu-content.hide {
    opacity: 0;
    transform: translateY(-7.5%);
    visibility: hidden;
}

.menu-content ul {
    list-style-type: none;
    margin: 0;
    padding: 0;
}

.menu-content ul li {
    margin: 10px 0;
}

.menu-content ul li span {
    cursor: pointer;
    color: white;
    text-decoration: none;
}

.menu-content ul li span:active {
    color: gray;
}

/* === Vimeo Modal === */
.vimeo-container {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%) scale(.95);
    z-index: 999;
    display: flex;
    justify-content: center;
    align-items: center;
    width: 70%;
    max-height: 80%;
    min-width: 300px;
    min-height: 200px;
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.2s, transform 0.2s, visibility 0.2s;
}

.vimeo-container.show {
    visibility: visible;
    opacity: 1;
    transform: translate(-50%, -50%) scale(1);
}

.vimeo-box {
    position: relative;
    width: 100%;
    padding-top: 56.25%;
    overflow: hidden;
}

.vimeo-box iframe {
    position: absolute;
    top: 0; left: 0;
    width: 100%; height: 100%;
    border: none;
    border-radius: 15px;
}

/* === About Panel === */
.img_about,
.img_photo_1 {
    visibility: hidden;
    opacity: 0;
    transition: opacity 1s ease, visibility 1s ease;
}

.img_about.show,
.img_photo_1.show {
    visibility: visible;
    opacity: 1;
}

.about-anim,
.photo-anim {
    position: absolute;
    top: 45%;
    left: 50%;
    transform: translate(-50%, -50%);
    opacity: 0;
    visibility: hidden;
    color: white;
    font-family: "Bitter", serif;
    font-weight: 500;
    font-style: normal;
}

.about-anim.show,
.photo-anim.show {
    visibility: visible;
    opacity: 1;
    transition: transform 1.2s cubic-bezier(0,1,0,1), opacity 1.2s, visibility 1.2s;
    transition-delay: 0s, .1s, .1s;
}

.about-anim.show.up,
.photo-anim.show.up {
    transform: translate(-50%, -25vh);
}

.about-anim.show.right,
.photo-anim.show.right {
    transform: translate(17.5vw, -50%);
}

.about-anim.hide,
.photo-anim.hide {
    opacity: 0;
    visibility: hidden;
    transition: transform 1.2s cubic-bezier(1,0,1,1), opacity .4s, visibility .4s;
    transition-delay: 0s, .15s, .15s;
}

.close-about,
.close-photo {
    background: rgba(235,229,217,.5);
    color: black;
    font-family: "Bitter", serif;
    font-weight: 900;
    font-size: 75%;
    cursor: pointer;
    text-decoration: none;
}

.close-about:hover,
.close-photo:hover {
    background: rgba(235,180,180,.5);
}

.close-about:active,
.close-photo:active {
    background: rgba(235,50,50,.5);
}

.email-url {
    color: white;
    font-family: "Bitter", serif;
    font-weight: 200;
    font-style: italic;
    text-decoration: none;
}

.email-url span {
    font-style: normal;
}

.email-url:hover {
    background: rgba(180,180,235,.2);
    text-decoration: underline;
}
