/* ==========================================================================
   MAIN MENU (burger) — Desktop (1280px – 1920px)
   Design reference: 1920x922. Sizes are in rem so the menu scales
   proportionally with the viewport width (see global.css fluid scale).
   ========================================================================== */

/* Mobile-only elements (see menu.mobile.css) — hidden here so they
   don't leak through on desktop. */
.menu-mobile-logo,
.menu-mobile-lang-switch {
    display: none;
}

/* Burger trigger — a 46x46 square holding a 2x2 grid of dots, same
   component/animation as shattics.engine's menu button (see
   css/engine.desktop.css for the original). Two color schemes:
   default (was the black MENU_DESKTOP_OPEN icon, used on 24 pages) and
   --light (was the white MENU_DESKTOP_WHITE icon, used on contact.html
   + feedback.html's dark-photo heroes). Open state looks the same
   either way: white square, black dots, still animating.

   The dots are always declared white + mix-blend-mode: difference
   (isolated from the square behind them), so overlapping dots always
   read black on their own. filter: invert(1) on the wrapper is what
   flips "white dot / black overlap" into "black dot / white overlap"
   per state below — no separate dark-mode dot color needed. */
.main-menu-trigger-btn {
    display: block;
    position: absolute;
    top: 5rem;
    right: 5rem;
    width: 4.6rem;
    height: 4.6rem;
    padding: 0;
    appearance: none;
    outline: none;
    box-sizing: border-box;
    background-color: #000000;
    border: 0.1rem solid transparent;
    border-radius: 1rem;
    cursor: pointer;
    z-index: 6001;
    transition: background-color 0.3s ease, border-color 0.3s ease;
}

.menu-dots-invert {
    position: absolute;
    inset: 0;
    transition: filter 0.3s ease;
}

.menu-dots {
    position: absolute;
    inset: 0;
    isolation: isolate;
    will-change: transform, filter;
}

.menu-dot {
    position: absolute;
    width: 1rem;
    height: 1rem;
    border-radius: 50%;
    background-color: #ffffff;
    mix-blend-mode: difference;
}

.menu-dot-1 { left: 1.1rem; top: 1.1rem; }
.menu-dot-2 { left: 2.3rem; top: 1.1rem; }
.menu-dot-3 { left: 1.1rem; top: 2.3rem; }
.menu-dot-4 { left: 2.3rem; top: 2.3rem; }

/* Default scheme: black square at rest, hollow black-bordered square
   + inverted (black) dots on hover, white square + inverted (black)
   dots when open. */
.main-menu-trigger-btn:hover {
    background-color: transparent;
    border-color: #000000;
}

.main-menu-trigger-btn:hover .menu-dots-invert {
    filter: invert(1);
}

.main-menu-trigger-btn.is-open {
    background-color: #ffffff;
    border-color: transparent;
}

.main-menu-trigger-btn.is-open .menu-dots-invert {
    filter: invert(1);
}

/* --light scheme (contact.html, feedback.html): white square at rest
   with already-inverted (black) dots, hollow white-bordered square +
   plain white dots on hover, same white/black-inverted look when
   open as the default scheme. */
.main-menu-trigger-btn--light {
    background-color: #ffffff;
    border-color: transparent;
}

.main-menu-trigger-btn--light .menu-dots-invert {
    filter: invert(1);
}

.main-menu-trigger-btn--light:hover {
    background-color: transparent;
    border-color: #ffffff;
}

.main-menu-trigger-btn--light:hover .menu-dots-invert {
    filter: none;
}

.main-menu-trigger-btn--light.is-open {
    background-color: #ffffff;
    border-color: transparent;
}

.main-menu-trigger-btn--light.is-open .menu-dots-invert {
    filter: invert(1);
}

/* Animation only runs while hovering or open — both schemes, both
   states share the same triggers. */
.main-menu-trigger-btn:hover .menu-dots,
.main-menu-trigger-btn.is-open .menu-dots {
    animation: menu-dot-spin 5s linear infinite;
}

.main-menu-trigger-btn:hover .menu-dot-1,
.main-menu-trigger-btn.is-open .menu-dot-1 {
    animation: menu-dot-swap-a 6s ease-in-out infinite;
}

.main-menu-trigger-btn:hover .menu-dot-4,
.main-menu-trigger-btn.is-open .menu-dot-4 {
    animation: menu-dot-swap-a-rev 6s ease-in-out infinite;
}

.main-menu-trigger-btn:hover .menu-dot-2,
.main-menu-trigger-btn.is-open .menu-dot-2 {
    animation: menu-dot-swap-b 6s ease-in-out infinite;
}

.main-menu-trigger-btn:hover .menu-dot-3,
.main-menu-trigger-btn.is-open .menu-dot-3 {
    animation: menu-dot-swap-b-rev 6s ease-in-out infinite;
}

@keyframes menu-dot-spin {
    0%   { transform: rotate(0deg);    filter: blur(0); }
    18%  { transform: rotate(60deg);   filter: blur(0); }
    26%  { transform: rotate(420deg);  filter: blur(0.2rem); }
    30%  { transform: rotate(440deg);  filter: blur(0); }
    42%  { transform: rotate(440deg);  filter: blur(0); }
    59%  { transform: rotate(560deg);  filter: blur(0); }
    74%  { transform: rotate(620deg);  filter: blur(0); }
    82%  { transform: rotate(1340deg); filter: blur(0.25rem); }
    86%  { transform: rotate(1360deg); filter: blur(0); }
    100% { transform: rotate(1440deg); filter: blur(0); }
}

@keyframes menu-dot-swap-a {
    0%, 70% { transform: translate(0, 0); }
    85% { transform: translate(1.2rem, 1.2rem); }
    100% { transform: translate(0, 0); }
}

@keyframes menu-dot-swap-a-rev {
    0%, 70% { transform: translate(0, 0); }
    85% { transform: translate(-1.2rem, -1.2rem); }
    100% { transform: translate(0, 0); }
}

@keyframes menu-dot-swap-b {
    0%, 70% { transform: translate(0, 0); }
    85% { transform: translate(-1.2rem, 1.2rem); }
    100% { transform: translate(0, 0); }
}

@keyframes menu-dot-swap-b-rev {
    0%, 70% { transform: translate(0, 0); }
    85% { transform: translate(1.2rem, -1.2rem); }
    100% { transform: translate(0, 0); }
}

.main-menu-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.7);
    backdrop-filter: blur(3rem);
    -webkit-backdrop-filter: blur(3rem);
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.6s ease;
    z-index: 6000;
    user-select: none;
    -webkit-user-select: none;
}

.main-menu-overlay.is-open {
    opacity: 1;
    pointer-events: auto;
}

body.menu-scroll-lock {
    overflow: hidden !important;
}

.menu-section {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
}

.main-menu-overlay.is-open .menu-section-toggle {
    pointer-events: auto;
}

.menu-section-toggle {
    position: absolute;
    left: 10rem;
    width: 50rem;
    height: 6rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 3.2rem 0 9rem;
    box-sizing: border-box;
    background: none;
    border: none;
    cursor: pointer;
    transition: top 0.4s ease;
}

.menu-section-studio .menu-section-toggle { top: 20.2rem; }
.menu-section-studio .menu-section-line { top: 26.2rem; }
.menu-section-world .menu-section-toggle { top: 27.2rem; }
.menu-section-world .menu-section-line { top: 32.7rem; }
.menu-section-studio.is-open ~ .menu-section-world .menu-section-toggle { top: 58.2rem; }
.menu-section-studio.is-open ~ .menu-section-world .menu-section-line { top: 63.7rem; }

.menu-section-juniors .menu-section-toggle { top: 33.7rem; }
.menu-section-juniors .menu-section-line { top: 39.2rem; }
.menu-section-world.is-open ~ .menu-section-juniors .menu-section-toggle { top: 61.2rem; }
.menu-section-world.is-open ~ .menu-section-juniors .menu-section-line { top: 66.7rem; }
.menu-section-studio.is-open ~ .menu-section-juniors .menu-section-toggle { top: 64.7rem; }
.menu-section-studio.is-open ~ .menu-section-juniors .menu-section-line { top: 70.2rem; }

.menu-section-projects .menu-section-toggle { top: 40.2rem; }
.menu-section-projects .menu-section-line { top: 46.2rem; }
.menu-section-juniors.is-open ~ .menu-section-projects .menu-section-toggle { top: 60.7rem; }
.menu-section-juniors.is-open ~ .menu-section-projects .menu-section-line { top: 66.7rem; }
.menu-section-world.is-open ~ .menu-section-projects .menu-section-toggle { top: 67.7rem; }
.menu-section-world.is-open ~ .menu-section-projects .menu-section-line { top: 73.7rem; }
.menu-section-studio.is-open ~ .menu-section-projects .menu-section-toggle { top: 71.2rem; }
.menu-section-studio.is-open ~ .menu-section-projects .menu-section-line { top: 77.2rem; }

.menu-section-title {
    position: relative;
    top: -0.5rem;
    font-family: 'Atyp Display', sans-serif;
    font-weight: 400;
    font-size: 3.5rem;
    line-height: 3.5rem;
    letter-spacing: 0;
    text-transform: uppercase;
    color: #ffffff;
    opacity: 1;
}

.menu-section-arrow {
    width: 0.8rem;
    height: 1.4rem;
    display: block;
    transform: rotate(0deg);
    transition: transform 0.3s ease;
}

.menu-section.is-open .menu-section-arrow {
    transform: rotate(90deg);
}

.menu-section-line {
    position: absolute;
    left: 10rem;
    width: 50rem;
    height: 0.1rem;
    background-color: #ffffff;
    opacity: 1;
    transition: top 0.4s ease;
}

.menu-sub-item {
    position: absolute;
    left: 10rem;
    width: 50rem;
    height: 2.9rem;
    display: block;
    text-decoration: none;
    cursor: pointer;
    opacity: 0;
    transform: translateY(-0.8rem);
    pointer-events: none;
    transition: opacity 0.18s ease, transform 0.18s ease;
}

.menu-section-studio .menu-section-items .menu-sub-item:nth-child(1) { transition-delay: 0.175s; }
.menu-section-studio .menu-section-items .menu-sub-item:nth-child(2) { transition-delay: 0.15s; }
.menu-section-studio .menu-section-items .menu-sub-item:nth-child(3) { transition-delay: 0.125s; }
.menu-section-studio .menu-section-items .menu-sub-item:nth-child(4) { transition-delay: 0.1s; }
.menu-section-studio .menu-section-items .menu-sub-item:nth-child(5) { transition-delay: 0.075s; }
.menu-section-studio .menu-section-items .menu-sub-item:nth-child(6) { transition-delay: 0.05s; }
.menu-section-studio .menu-section-items .menu-sub-item:nth-child(7) { transition-delay: 0.025s; }
.menu-section-studio .menu-section-items .menu-sub-item:nth-child(8) { transition-delay: 0s; }

.menu-section-world .menu-section-items .menu-sub-item:nth-child(1) { transition-delay: 0.15s; }
.menu-section-world .menu-section-items .menu-sub-item:nth-child(2) { transition-delay: 0.125s; }
.menu-section-world .menu-section-items .menu-sub-item:nth-child(3) { transition-delay: 0.1s; }
.menu-section-world .menu-section-items .menu-sub-item:nth-child(4) { transition-delay: 0.075s; }
.menu-section-world .menu-section-items .menu-sub-item:nth-child(5) { transition-delay: 0.05s; }
.menu-section-world .menu-section-items .menu-sub-item:nth-child(6) { transition-delay: 0.025s; }
.menu-section-world .menu-section-items .menu-sub-item:nth-child(7) { transition-delay: 0s; }

.menu-section-juniors .menu-section-items .menu-sub-item:nth-child(1) { transition-delay: 0.1s; }
.menu-section-juniors .menu-section-items .menu-sub-item:nth-child(2) { transition-delay: 0.075s; }
.menu-section-juniors .menu-section-items .menu-sub-item:nth-child(3) { transition-delay: 0.05s; }
.menu-section-juniors .menu-section-items .menu-sub-item:nth-child(4) { transition-delay: 0.025s; }
.menu-section-juniors .menu-section-items .menu-sub-item:nth-child(5) { transition-delay: 0s; }

.menu-section-projects .menu-section-items .menu-sub-item:nth-child(1) { transition-delay: 0s; }

.menu-section.is-open .menu-section-items .menu-sub-item:nth-child(1) { transition-delay: 0s; }
.menu-section.is-open .menu-section-items .menu-sub-item:nth-child(2) { transition-delay: 0.04s; }
.menu-section.is-open .menu-section-items .menu-sub-item:nth-child(3) { transition-delay: 0.08s; }
.menu-section.is-open .menu-section-items .menu-sub-item:nth-child(4) { transition-delay: 0.12s; }
.menu-section.is-open .menu-section-items .menu-sub-item:nth-child(5) { transition-delay: 0.16s; }
.menu-section.is-open .menu-section-items .menu-sub-item:nth-child(6) { transition-delay: 0.2s; }
.menu-section.is-open .menu-section-items .menu-sub-item:nth-child(7) { transition-delay: 0.24s; }
.menu-section.is-open .menu-section-items .menu-sub-item:nth-child(8) { transition-delay: 0.28s; }

.menu-section.is-open .menu-sub-item {
    opacity: 1;
    transform: translateY(0);
    transition: opacity 0.35s ease, transform 0.35s ease;
}

.main-menu-overlay.is-open .menu-section.is-open .menu-sub-item:not(.is-disabled) {
    pointer-events: auto;
}

.menu-sub-item.is-disabled {
    cursor: default;
    pointer-events: none;
}

.menu-sub-item.is-disabled .menu-sub-num,
.menu-sub-item.is-disabled .menu-sub-label {
    opacity: 0.5;
    text-decoration: line-through;
}

.menu-sub-bg {
    position: absolute;
    top: 0.2rem;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 1;
    background: linear-gradient(to right, rgba(255, 255, 255, 0.7), rgba(255, 255, 255, 0));
    opacity: 0;
    transition: opacity 0.2s ease;
}

.menu-sub-item:hover .menu-sub-bg {
    opacity: 1;
}

.menu-sub-num,
.menu-sub-label {
    position: absolute;
    top: 0.8rem;
    z-index: 2;
    font-family: 'Atyp Display', sans-serif;
    font-weight: 400;
    font-size: 1.5rem;
    line-height: 1.5rem;
    letter-spacing: 0;
    text-transform: uppercase;
    color: #ffffff;
    opacity: 1;
    transition: color 0.2s ease;
}

.menu-sub-num { left: 9rem; }
.menu-sub-label { left: 14rem; }

.menu-sub-item:hover .menu-sub-num,
.menu-sub-item:hover .menu-sub-label {
    color: #000000;
}

.menu-section-studio .menu-section-items .menu-sub-item:nth-child(1) { top: 29.4rem; }
.menu-section-studio .menu-section-items .menu-sub-item:nth-child(2) { top: 32.9rem; }
.menu-section-studio .menu-section-items .menu-sub-item:nth-child(3) { top: 36.4rem; }
.menu-section-studio .menu-section-items .menu-sub-item:nth-child(4) { top: 39.9rem; }
.menu-section-studio .menu-section-items .menu-sub-item:nth-child(5) { top: 43.4rem; }
.menu-section-studio .menu-section-items .menu-sub-item:nth-child(6) { top: 46.9rem; }
.menu-section-studio .menu-section-items .menu-sub-item:nth-child(7) { top: 50.4rem; }
.menu-section-studio .menu-section-items .menu-sub-item:nth-child(8) { top: 53.9rem; }

.menu-section-world .menu-section-items .menu-sub-item:nth-child(1) { top: 36.5rem; }
.menu-section-world .menu-section-items .menu-sub-item:nth-child(2) { top: 40rem; }
.menu-section-world .menu-section-items .menu-sub-item:nth-child(3) { top: 43.5rem; }
.menu-section-world .menu-section-items .menu-sub-item:nth-child(4) { top: 47rem; }
.menu-section-world .menu-section-items .menu-sub-item:nth-child(5) { top: 50.5rem; }
.menu-section-world .menu-section-items .menu-sub-item:nth-child(6) { top: 54rem; }
.menu-section-world .menu-section-items .menu-sub-item:nth-child(7) { top: 57.5rem; }

.menu-section-juniors .menu-section-items .menu-sub-item:nth-child(1) { top: 43rem; }
.menu-section-juniors .menu-section-items .menu-sub-item:nth-child(2) { top: 46.5rem; }
.menu-section-juniors .menu-section-items .menu-sub-item:nth-child(3) { top: 50rem; }
.menu-section-juniors .menu-section-items .menu-sub-item:nth-child(4) { top: 53.5rem; }
.menu-section-juniors .menu-section-items .menu-sub-item:nth-child(5) { top: 57rem; }

.menu-section-projects .menu-section-items .menu-sub-item:nth-child(1) { top: 49.5rem; }

.menu-side-panel {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.3s ease;
}

.main-menu-overlay.is-open .menu-side-panel {
    opacity: 1;
    transition: opacity 0.4s ease 0.4s;
}

.menu-side-label {
    position: absolute;
    font-family: 'Atyp Display', sans-serif;
    font-weight: 400;
    font-size: 1.5rem;
    line-height: 1.5rem;
    letter-spacing: 0;
    text-transform: uppercase;
    color: #ffffff;
    opacity: 1;
}

.menu-side-email-title  { right: 38.9rem; top: 18.5rem; }
.menu-side-phone-title  { right: 38.9rem; top: 33.5rem; }
.menu-side-social-title { right: 36.5rem; top: 46rem; }

.menu-side-link {
    position: absolute;
    font-family: 'Atyp Display', sans-serif;
    font-weight: 400;
    font-size: 1.5rem;
    line-height: 1.5rem;
    letter-spacing: 0;
    text-transform: uppercase;
    color: #ffffff;
    opacity: 1;
    text-decoration: none;
    cursor: pointer;
    transition: opacity 0.2s ease;
    pointer-events: none;
}

.menu-side-link:hover {
    opacity: 0.5;
}

.main-menu-overlay.is-open .menu-side-link:not(.is-disabled) {
    pointer-events: auto;
}

.menu-side-link.is-disabled {
    text-decoration: line-through;
    opacity: 0.5;
    cursor: default;
    pointer-events: none;
}

.menu-side-link.is-hover-only {
    cursor: default;
}

.menu-side-email-1 { right: 23rem; top: 22rem; }
.menu-side-email-2 { right: 21.9rem; top: 24.5rem; }
.menu-side-email-3 { right: 19.7rem; top: 27rem; }
.menu-side-phone-1 { right: 26.8rem; top: 37rem; }
.menu-side-phone-2 { right: 26.6rem; top: 39.5rem; }
.menu-side-social-behance   { right: 33rem; top: 49.5rem; }
.menu-side-social-instagram { right: 23.5rem; top: 49.5rem; }
.menu-side-social-facebook  { right: 32.1rem; top: 52rem; }
.menu-side-social-linkedin  { right: 24.7rem; top: 52rem; }
.menu-side-social-pinterest { right: 32.6rem; top: 54.5rem; }

.menu-contact-btn {
    position: absolute;
    right: 17.9rem;
    bottom: 11.2rem;
    display: block;
    text-decoration: none;
    cursor: pointer;
    transition: opacity 0.2s ease;
    pointer-events: none;
}

.main-menu-overlay.is-open .menu-contact-btn {
    pointer-events: auto;
}

.menu-contact-btn:hover {
    opacity: 0.5;
}

.menu-contact-title {
    font-family: 'Atyp Display', sans-serif;
    font-weight: 400;
    font-size: 3.5rem;
    line-height: 3.5rem;
    letter-spacing: 0;
    text-transform: uppercase;
    color: #ffffff;
    opacity: 1;
}

.menu-contact-line {
    position: absolute;
    right: 10rem;
    bottom: 10rem;
    width: 30rem;
    height: 0.1rem;
    background-color: #ffffff;
    opacity: 1;
}

/* Line width follows the translated label length (right edge stays put,
   left edge stretches/shrinks). Rough estimate — nudge if it's off. */
html[data-lang="uk"] .menu-contact-line { width: 43.1rem; }
html[data-lang="ja"] .menu-contact-line { width: 28.9rem; }

.menu-contact-arrow {
    position: absolute;
    right: 15.3rem;
    bottom: 11.9rem;
    width: 0.8rem;
    height: 1.4rem;
    display: block;
    transform: rotate(0deg) translateX(0);
    transition: transform 0.3s ease;
}

.menu-contact-btn:hover ~ .menu-contact-arrow {
    transform: rotate(0deg) translateX(0.5rem);
}
