* {
    box-sizing: border-box
}

html {
    scroll-behavior: smooth
}

body {
    margin: 0;
    background: #09050b;
    color: #fff;
    font-family: "Zen Kaku Gothic New", sans-serif;
    overflow-x: hidden
}

a {
    color: inherit;
    text-decoration: none
}

.noise {
    position: fixed;
    inset: 0;
    pointer-events: none;
    opacity: .035;
    background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
    z-index: 20
}

.site-header {
    height: 82px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 12px 5vw;
    border-bottom: 1px solid #281426;
    position: sticky;
    top: 0;
    z-index: 10;
    background: rgba(9, 5, 11, .84);
    backdrop-filter: blur(18px)
}

.brand img {
    width: 100px;
    height: 56px;
    object-fit: contain
}

.site-header nav {
    display: flex;
    gap: 38px;
    font-family: Orbitron, sans-serif;
    font-size: 11px;
    letter-spacing: 2px
}

.site-header nav a {
    opacity: .55;
    transition: .25s
}

.site-header nav a:hover, .site-header nav .active {
    opacity: 1;
    color: #ff3dbb
}

.mini-cta {
    border: 1px solid #ff3dbb;
    padding: 10px 16px;
    border-radius: 999px;
    font: 700 10px Orbitron;
    letter-spacing: 1px;
    color: #ff69c8
}

.hero {
    min-height: calc(100vh - 82px);
    display: grid;
    grid-template-columns: 1fr 1fr;
    align-items: center;
    padding: 5vh 8vw;
    position: relative;
    overflow: hidden;
    background: radial-gradient(circle at 70% 50%, #42102e 0, #170914 31%, #09050b 62%)
}

.hero-glow {
    position: absolute;
    width: 520px;
    height: 520px;
    right: 7%;
    top: 12%;
    background: #ff2eaf;
    filter: blur(170px);
    opacity: .15
}

.hero-copy {
    position: relative;
    z-index: 2
}

.eyebrow, .section-label {
    font: 700 11px Orbitron, sans-serif;
    letter-spacing: 3px;
    color: #ff57c3
}

.hero h1 {
    font: 900 clamp(64px, 10vw, 150px) Orbitron;
    margin: 12px 0 15px;
    line-height: .9;
    letter-spacing: -7px
}

.hero h1 span, h1 span, h2 span {
    color: #ff4bbb
}

.hero-lead {
    font-size: 19px;
    line-height: 1.8;
    color: #d5c5d0
}

.hero-lead strong {
    color: white
}

.hero-actions {
    display: flex;
    gap: 14px;
    margin-top: 35px
}

.button {
    display: inline-flex;
    align-items: center;
    gap: 18px;
    padding: 16px 24px;
    border-radius: 4px;
    font: 700 11px Orbitron;
    letter-spacing: 1.5px
}

.button.primary {
    background: #ff42b8;
    box-shadow: 0 0 35px #ff42b855
}

.button.ghost {
    border: 1px solid #70405f
}

.hero-visual {
    position: relative;
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 550px
}

.hero-visual img {
    width: min(80%, 540px);
    aspect-ratio: 1;
    object-fit: cover;
    border-radius: 50%;
    position: relative;
    z-index: 2;
    border: 8px solid #ff4bbb33;
    box-shadow: 0 0 0 1px #ff4bbb, 0 0 70px #ff3eae55
}

.orbit {
    position: absolute;
    border: 1px solid #ff55bd77;
    border-radius: 50%;
    transform: rotate(-22deg)
}

.orbit-a {
    width: 85%;
    height: 34%;
}

.orbit-b {
    width: 95%;
    height: 42%;
    transform: rotate(25deg)
}

.spark {
    position: absolute;
    color: #ff5fc5;
    font-size: 30px;
    z-index: 3
}

.s1 {
    top: 12%;
    left: 13%
}

.s2 {
    bottom: 18%;
    right: 9%;
    font-size: 22px
}

.s3 {
    top: 28%;
    right: 4%;
    font-size: 15px
}

.ticker {
    overflow: hidden;
    white-space: nowrap;
    border-top: 1px solid #2b1727;
    border-bottom: 1px solid #2b1727;
    padding: 15px 0;
    color: #ff54c0;
    font: 800 11px Orbitron;
    letter-spacing: 3px
}

.ticker div {
    animation: marquee 22s linear infinite
}

@keyframes marquee {
    to {
        transform: translateX(-50%)
    }
}

.section {
    max-width: 1200px;
    margin: auto;
    padding: 110px 5vw
}

.intro {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 80px
}

.section h2 {
    font: 800 clamp(38px, 5vw, 65px) Orbitron;
    line-height: 1.05;
    margin: 14px 0
}

.intro-text {
    padding-top: 35px;
    font-size: 18px;
    line-height: 1.9
}

.muted {
    color: #9f8c9a
}

.text-link {
    display: inline-block;
    margin-top: 18px;
    color: #ff57c3;
    font: 700 11px Orbitron;
    letter-spacing: 1px
}

.section-head {
    display: flex;
    justify-content: space-between;
    align-items: end;
    margin-bottom: 38px
}

.work-grid {
    display: grid;
    grid-template-columns: 2fr 1fr 1fr;
    gap: 18px
}

.work-card {
    background: #120a12;
    border: 1px solid #352033;
    transition: .3s
}

.work-card:hover {
    transform: translateY(-6px);
    border-color: #ff45b7
}

.card-art {
    height: 260px;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    overflow: hidden
}

.large .card-art {
    height: 350px
}

.card-art span {
    font-size: 70px;
    z-index: 1
}

.card-art small {
    position: absolute;
    bottom: 18px;
    left: 18px;
    font: 700 10px Orbitron;
    letter-spacing: 2px
}

.music-art {
    background: radial-gradient(circle, #ff62c7, #56143f 30%, #120a12 68%)
}

.video-art {
    background: linear-gradient(145deg, #21102d, #ff3eae)
}

.visual-art {
    background: radial-gradient(circle at 30% 30%, #7d4dff, #190b2c 55%)
}

.card-meta {
    padding: 18px;
    display: flex;
    justify-content: space-between;
    font-size: 12px
}

.card-meta span {
    color: #ff57c3
}

.social-banner {
    padding: 100px 8vw;
    background: linear-gradient(115deg, #160a15, #40102e);
    text-align: center;
    border-top: 1px solid #37172c;
    border-bottom: 1px solid #37172c
}

.social-banner .section-label {
    display: block
}

.social-banner h2 {
    margin: 15px 0 30px;
    font: 800 clamp(35px, 5vw, 65px) Orbitron
}

.subpage {
    min-height: calc(100vh - 82px)
}

.page-hero {
    padding: 100px 8vw 70px;
    border-bottom: 1px solid #2b1727;
    background: radial-gradient(circle at 75% 50%, #3c102d, #09050b 55%)
}

.page-hero h1 {
    font: 800 clamp(45px, 7vw, 90px) Orbitron;
    margin: 12px 0
}

.page-hero p:last-child {
    color: #aa96a6
}

.profile-layout {
    display: grid;
    grid-template-columns: 400px 1fr;
    gap: 80px;
    align-items: center
}

.profile-photo img {
    width: 100%;
    aspect-ratio: 1;
    object-fit: cover;
    border-radius: 28px;
    border: 1px solid #ff49b977;
    box-shadow: 0 20px 80px #ff329e20
}

.profile-info h2 {
    font: 800 50px Orbitron;
    margin: 10px 0
}

.profile-copy {
    font-size: 20px;
    line-height: 1.8
}

.facts {
    display: flex;
    gap: 30px;
    border-top: 1px solid #382334;
    margin-top: 35px;
    padding-top: 25px
}

.facts div {
    display: flex;
    flex-direction: column;
    gap: 8px
}

.facts span {
    font: 700 9px Orbitron;
    color: #8f7c8b
}

.facts strong {
    font: 700 11px Orbitron
}

.sns-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 15px
}

.sns-card {
    padding: 22px;
    background: #120a12;
    border: 1px solid #352033;
    display: grid;
    grid-template-columns: 40px 1fr 20px;
    align-items: center;
    gap: 12px;
    transition: .25s
}

.sns-card:hover {
    border-color: #ff4bbb;
    transform: translateY(-3px)
}

.sns-card>span {
    font-size: 23px;
    color: #ff52bd
}

.sns-card div {
    display: flex;
    flex-direction: column;
    gap: 5px
}

.sns-card strong {
    font: 700 12px Orbitron
}

.sns-card small {
    color: #9f8c9a
}

.sns-card b {
    color: #ff52bd
}

.edit-note {
    font-size: 12px;
    color: #806e7b;
    margin-top: 18px
}

.works-section {
    padding-top: 80px
}

.music-list {
    border-top: 1px solid #382334
}

.music-item {
    display: grid;
    grid-template-columns: 50px 70px 1fr 100px;
    align-items: center;
    gap: 15px;
    padding: 20px 10px;
    border-bottom: 1px solid #382334
}

.track-no {
    font: 700 10px Orbitron;
    color: #755d6f
}

.track-icon {
    width: 50px;
    height: 50px;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: #351029;
    color: #ff52bd;
    font-size: 24px
}

.music-item strong {
    display: block;
    font: 700 13px Orbitron
}

.music-item small {
    color: #806e7b
}

.play {
    color: #ff52bd;
    font: 700 10px Orbitron
}

.video-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 18px
}

.video-card {
    background: #120a12;
    border: 1px solid #352033;
    padding-bottom: 18px
}

.video-card:hover {
    border-color: #ff45b7
}

.video-card>strong, .video-card>small {
    display: block;
    padding: 0 18px
}

.video-card>strong {
    font: 700 12px Orbitron;
    margin-top: 17px
}

.video-card>small {
    color: #8e7a89;
    margin-top: 7px
}

.video-thumb {
    height: 220px;
    background: radial-gradient(circle, #ff57c2, #2b0c23 65%);
    display: grid;
    place-items: center;
    position: relative
}

.video-thumb.alt {
    background: linear-gradient(140deg, #35116d, #ff3fae)
}

.video-thumb.third {
    background: linear-gradient(140deg, #111, #7a1f5c)
}

.video-thumb span {
    position: absolute;
    left: 15px;
    top: 15px;
    font: 700 9px Orbitron;
    letter-spacing: 2px
}

.play-circle {
    width: 62px;
    height: 62px;
    border-radius: 50%;
    display: grid;
    place-items: center;
    background: #ffffff22;
    border: 1px solid #fff8;
    font-size: 20px;
    padding-left: 3px
}

footer {
    display: flex;
    justify-content: space-between;
    padding: 25px 5vw;
    border-top: 1px solid #2b1727;
    color: #806e7b;
    font: 700 9px Orbitron;
    letter-spacing: 2px
}

footer a {
    color: #ff57c3
}

@media(max-width:800px) {
    .site-header {
        padding: 10px 4vw
    }

    .site-header nav {
        gap: 14px
    }

    .mini-cta {
        display: none
    }

    .hero {
        grid-template-columns: 1fr;
        padding: 55px 7vw
    }

    .hero-visual {
        min-height: 400px;
        order: -1
    }

    .hero h1 {
        font-size: 18vw
    }

    .intro, .profile-layout {
        grid-template-columns: 1fr;
        gap: 30px
    }

    .work-grid {
        grid-template-columns: 1fr 1fr
    }

    .large {
        grid-column: 1/-1
    }

    .sns-grid, .video-grid {
        grid-template-columns: 1fr
    }

    .profile-photo {
        max-width: 420px;
        margin: auto
    }

    .music-item {
        grid-template-columns: 35px 55px 1fr
    }

    .play {
        grid-column: 3
    }

    .facts {
        flex-wrap: wrap
    }

    .section {
        padding: 75px 7vw
    }

    .page-hero {
        padding: 75px 7vw
    }

    .section-head {
        align-items: start;
        gap: 20px;
        flex-direction: column
    }

    .card-art, .large .card-art {
        height: 240px
    }
}

.credit-note {
  font-size: 0.7em;
  opacity: 0.7;
}

.track-icon.has-thumb {
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  color: transparent;
}
.video-thumb {
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}


/* ============================================================
   LATEST WORKS / WORKS thumbnails
   ============================================================ */
.latest-work-grid {
    grid-template-columns: 1fr;
}
.latest-work-card .card-art.has-thumb {
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
}
.latest-card-meta {
    align-items: center;
}
.latest-card-meta > div {
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.latest-card-meta > div > strong {
    font: 700 14px Orbitron;
}
.latest-description {
    color: #806e7b;
}
.new-label {
    color: #ff52bd;
    font: 800 10px Orbitron;
    letter-spacing: 1px;
    margin-right: 6px;
}
.track-icon.has-thumb {
    overflow: hidden;
}
.track-thumb {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.video-thumb > img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.video-thumb > span {
    z-index: 2;
    text-shadow: 0 1px 4px rgba(0,0,0,.7);
}
@media (max-width: 700px) {
    .latest-card-meta {
        display: block;
    }
    .latest-card-meta > span:last-child {
        display: block;
        margin-top: 12px;
    }
}


/* LATEST WORKS のサムネイル */
.latest-work-card .card-art {
    overflow: hidden;
}
.latest-work-card .card-art > img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.latest-work-card .card-art > small {
    z-index: 2;
    text-shadow: 0 1px 4px rgba(0,0,0,.7);
}
