@charset "UTF-8";

/* =========================================
    header
   ========================================= */

.header {
    position: fixed;
    top: 0;
    left: 0;

    width: 100%;
    height: 60px;

    padding: 0 15px;

    background: rgba(255, 255, 255, 0.9);
    backdrop-filter: blur(10px);

    border-bottom: 1px solid var(--border);

    transition:
        background var(--transition-fast),
        box-shadow var(--transition-fast),
        backdrop-filter var(--transition-fast);

    z-index: var(--z-header);
}

.header.scrolled {
    background: rgba(255, 255, 255, 0.95);

    backdrop-filter: blur(14px);

    box-shadow: var(--shadow-md);
}

.header_inner {
    display: flex;
    justify-content: space-between;
    align-items: center;

    height: 100%;

    padding: 0 10px;
}


/* ロゴ */
.header_logo {
    padding-top: 6px;
}

.header_logo img {
    height: 40px;

    filter: saturate(0.95) brightness(0.98);
}

/* 右側 */
.header_right {
    display: flex;
    align-items: center;

    gap: var(--space-sm);
}

/* =========================================
    overlay
   ========================================= */

.overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100vh;

    background: rgba(0, 0, 0, 0.4);

    opacity: 0;
    visibility: hidden;

    transition:
        opacity var(--transition-fast),
        visibility var(--transition-fast);

    pointer-events: none;

    z-index: var(--z-overlay);
}

.overlay.is-open {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
}

/* =========================================
    メニュー（SP）
   ========================================= */

.menu {
    position: fixed;
    top: 0;
    right: 0;

    width: 90%;
    height: 100dvh;

    background: var(--bg-card);
    color: var(--text-main);

    box-shadow: -10px 0 30px rgba(0, 0, 0, 0.15);

    transform: translateX(100%);

    transition:
        transform var(--transition-base),
        opacity var(--transition-base);

    padding: 20px 20px 40px;
    box-sizing: border-box;

    z-index: var(--z-menu);

    overflow-y: auto;
    -webkit-overflow-scrolling: touch;

    scrollbar-width: none;

    opacity: 0;
    pointer-events: none;
}


.menu::-webkit-scrollbar {
    display: none;
}

/* 開いた状態 */
.menu.is-open {
    transform: translateX(0);

    opacity: 1;

    pointer-events: auto;
}

/* body固定 */
body.menu-open {
    overflow: hidden;
    overscroll-behavior: none;
}

/* 背景装飾 */
.menu::before {
    content: "";

    position: absolute;
    inset: 0;

    background:
        radial-gradient(circle at 20% 10%,
            rgba(0, 158, 207, 0.08),
            transparent 60%),
        linear-gradient(to bottom,
            rgba(0, 158, 207, 0.08),
            transparent 40%);

    pointer-events: none;
}

/* =========================================
    hamburger
   ========================================= */

.hamburger {
    position: relative;

    width: 28px;

    cursor: pointer;

    color: var(--text-main);

    border: none;
    background: transparent;
    padding: 0;

    z-index: var(--z-hamburger);

    /* 追加：クリック領域と安定性 */
    display: inline-block;
}

.hamburger span {
    display: block;

    width: 100%;
    height: 3px;

    margin: 5px 0;

    background-color: currentColor;

    transition: var(--transition-fast);

    transform-origin: center;
}

/* active */
.hamburger.is-active span:nth-child(1) {
    transform: rotate(45deg) translate(5px, 5px);
}

.hamburger.is-active span:nth-child(2) {
    opacity: 0;
}

.hamburger.is-active span:nth-child(3) {
    transform: rotate(-45deg) translate(6px, -6px);
}

/* =========================================
    menu list
   ========================================= */

.menu ul {
    margin-top: var(--space-md);
    padding: 0;

    list-style: none;
}

.menu-list {
    padding: var(--space-md) var(--space-sm);

    border-bottom: 1px solid var(--border);
}

.menu li a {
    display: block;
    position: relative;

    color: var(--text-main);
    text-decoration: none;

    font-size: var(--text-heading);
    font-weight: 800;
    letter-spacing: 0.02em;

    transition: var(--transition-fast);
}

.menu li a span {
    display: block;

    margin-top: var(--space-xs);

    font-size: var(--text-small);
    color: var(--text-sub);
}

/* hover */
.menu li a:hover {
    color: var(--primary);

    transform: translateY(-2px);
}

/* active */
.menu li a.active {
    color: var(--primary);
}

/* 虹の下線 */
.menu li a::after {
    content: "";

    position: absolute;
    left: 0;
    bottom: -4px;

    width: 100%;
    height: 2px;

    background: linear-gradient(90deg,
            rgba(255, 0, 76, 0.7),
            rgba(255, 184, 0, 0.7),
            rgba(0, 198, 255, 0.7),
            rgba(124, 255, 0, 0.7));

    transform: scaleX(0);
    transform-origin: left;

    opacity: 0.7;

    transition: transform var(--transition-fast);
}

.menu li a:hover::after,
.menu li a.active::after {
    transform: scaleX(1);
}

/* CTA */
.menu-cta {
    padding-top: var(--space-sm);
}

.menu-cta .entry-btn {
    width: 100%;
    text-align: center;
}

/* =========================================
    responsive
   ========================================= */

/* SP */
@media (max-width: 1023px) {

    .header_right .entry-btn {
        display: none;
    }

    .menu-cta {
        display: block;
    }
}

/* PC */
@media (min-width: 1024px) {

    .header {
        height: 72px;
        backdrop-filter: blur(6px);
        border-bottom: 1px solid var(--border);
    }

    .header_inner {
        justify-content: flex-start;
    }


    .header_logo img {
        height: 48px;
    }

    .header_right {
        margin-left: 32px;
    }

    /* hamburger */
    .hamburger {
        display: none;
    }

    /* overlay */
    .overlay {
        display: none;
    }

    /* menu */
    .menu {
        position: static;

        display: flex;
        align-items: center;

        width: auto;
        height: auto;

        padding: 0;
        margin-left: auto;

        background: none;
        box-shadow: none;

        overflow: visible;

        z-index: auto;

        transform: none;
        opacity: 1;
        pointer-events: auto;
    }

    .menu::before {
        display: none;
    }

    .menu ul {
        display: flex;
        align-items: center;
        gap: 32px;

        margin-top: 0;
    }

    .menu li {
        padding: 0;
        border: none;
    }

    .menu li a {
        font-size: 18px;
        font-weight: 700;

        letter-spacing: 0.04em;
    }

    .menu li a span {
        display: none;
    }

    /* CTA */
    .menu-cta {
        display: none;
    }
}