@charset "UTF-8";

/* ====================================
   Hero
==================================== */
.hero {
    position: relative;
    z-index: 1;
    height: 100vh;
    overflow: hidden;
    background-color: #1a2a3a;
}

.hero-bg {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100vh;
    object-fit: cover;
    object-position: top;
    will-change: transform, filter;
}

.hero-bg-fireworks {
    z-index: 1;
    opacity: 0;
    filter: blur(10px);
    animation: heroFadeIn 1.8s cubic-bezier(0.4, 0, 0.2, 1) 0.2s forwards;
}

.hero-bg-players {
    z-index: 2;
    object-position: bottom;
    opacity: 0;
    transform: translateY(30px);
    animation: heroSlideUp 1.5s cubic-bezier(0.4, 0, 0.2, 1) 0.5s forwards;
}

/* Hero開始アニメーション */
@keyframes heroFadeIn {
    0% {
        opacity: 0;
        filter: blur(10px);
    }
    100% {
        opacity: 1;
        filter: blur(0);
    }
}

@keyframes heroTitleFadeIn {
    0% {
        opacity: 0;
        filter: blur(8px);
    }
    100% {
        opacity: 1;
        filter: blur(0);
    }
}

@keyframes heroSlideUp {
    0% {
        opacity: 0;
        transform: translateY(30px);
    }
    100% {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes heroSlideLeft {
    0% {
        opacity: 0;
        transform: translateX(-25px);
    }
    100% {
        opacity: 1;
        transform: translateX(0);
    }
}

.hero-color-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100vh;
    background-color: #2c3437;
    opacity: 0;
    z-index: 0;
    pointer-events: none;
    will-change: opacity;
    mix-blend-mode: multiply;
}

.hero-content {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    z-index: 10;
    display: flex;
    align-items: center;
    height: 100vh;
    padding: 0 80px;
    pointer-events: none;
}

.hero-content * {
    pointer-events: auto;
}

.hero-fireworks-dots {
    position: absolute;
    right: 10%;
    top: 50%;
    transform: translateY(-50%);
    width: 262px;
    height: 262px;
    will-change: opacity, filter, transform;
}

.hero-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0px;
    width: 66%;
    align-items: center;
}

.hero-title {
    font-size: 48px;
    font-weight: bold;
    color: #eaedf1;
    margin-bottom: 20px;
    opacity: 0;
    filter: blur(8px);
    animation: heroTitleFadeIn 1.6s cubic-bezier(0.4, 0, 0.2, 1) 0.8s forwards;
    will-change: opacity, filter, transform;
}

.hero-text {
    font-size: 16px;
    color: #fff;
    padding-left: 3vw;
    opacity: 0;
    animation: heroSlideLeft 1.4s cubic-bezier(0.4, 0, 0.2, 1) 1.1s forwards;
    will-change: opacity, filter, transform;
}

@media (max-width: 768px) {
    .hero-grid {
        grid-template-columns: 1fr;
        text-align: center;
    }

    .hero-title {
        font-size: 32px;
    }

    .hero-content {
        padding: 0 20px;
    }
}

/* ====================================
   Information
==================================== */
.information {
    position: relative;
    background: transparent;
    padding: 80px 0;
}

.information .container {
    position: relative;
    z-index: 1;
}

.information h2,
.information .info-date,
.information .info-title,
.information .btn-outline-dark {
    color: #eaedf1;
}

/* セクションタイトルラッパー */
.section-title-wrap {
    position: relative;
}

.info-fireworks-dots {
    position: absolute;
    left: 5%;
    top: 50%;
    transform: translateY(-50%);
    width: 262px;
    height: 262px;
}

@media (max-width: 768px) {
    .info-fireworks-dots {
        display: none;
    }
}

.information h2::before {
    content: '';
    display: block;
    width: 45px;
    height: 45px;
    margin: 0 auto 30px;
    background: url('../img/common/icon_fireworks_dots.svg') no-repeat center center;
    background-size: contain;
}

.information .info-item {
    border-bottom-color: rgba(234,237,241,0.3);
}

.information .info-item a {
    color: #eaedf1;
}

.information .btn-outline-dark {
    border-color: #eaedf1;
}

.information .btn-outline-dark:hover {
    background: #fff;
    color: #333;
}

.info-lead {
    font-size: 18px;
    margin-bottom: 30px;
    color: #fff;
}

/* イベント開催情報 */
.event-info {
    margin: 0;
    padding: 0;
}

.event-info-item {
    display: flex;
    /* border-bottom: 1px solid rgba(234,237,241,0.3); */
    padding: 5px 0;
    color: #fff;
    font-weight: normal;
    gap: 2em;
}

.event-info-item dt {
    width: 5.5em;
    flex-shrink: 0;
    font-weight: 500;
    text-align: justify;
    text-align-last: justify;
    color: #adb9c9;
}

.event-info-item dd {
    margin: 0;
    flex: 1;
}

@media (max-width: 768px) {
    .event-info-item {
        /* flex-direction: column; */
        gap: 5px;
    }

    .event-info-item dt {
        /* width: 100%; */
    }
}

/* ロゴエリア */
.logo-area {
    margin-top: 0;
}

.logo-area .main-logo {
    max-width: 280px;
    height: auto;
    filter: brightness(0) invert(1);
}

/* スライダー */
.info-slider-wrap {
    margin-top: 60px;
    overflow: hidden;
}

.info-slider {
    margin: 0 -10px;
}

.info-slider-item {
    padding: 0 10px;
}

.info-slider-item img {
    width: 100%;
    height: auto;
    background: #fff;
    box-shadow: 0 4px 20px rgba(0,0,0,0.2);
}

.info-slider .slick-dots {
    bottom: -40px;
}

.info-slider .slick-dots li button:before {
    color: rgba(234,237,241,0.5);
    font-size: 10px;
}

.info-slider .slick-dots li.slick-active button:before {
    color: #eaedf1;
}

@media (max-width: 768px) {
    .logo-area .main-logo {
        max-width: 200px;
    }
}

/* ====================================
   What's
==================================== */
.whats,
.guest,
.description,
.contact,
.footer {
    position: relative;
    z-index: 1;
}

.whats {
    background: #325078;
    padding: 100px 0;
    color: #fff;
    overflow: visible;
}

.whats h2 {
    color: #fff;
    margin-bottom: 0 !important;
}

.whats p {
    color: #fff;
}

.whats h2::before {
    content: '';
    display: block;
    width: 45px;
    height: 45px;
    margin: 0 auto 30px;
    background: url('../img/common/icon_fireworks_dots.svg') no-repeat center center;
    background-size: contain;
}

.whats-title-wrap {
    position: relative;
}

.whats-fireworks-dots {
    position: absolute;
    right: 5%;
    top: 50%;
    transform: translateY(-50%);
    width: 210px;
    height: 210px;
    opacity: 0;
}

.whats-fireworks-dots.is-active {
    animation: whats-fw-fadeInUp 1s ease-out forwards;
}

@keyframes whats-fw-fadeInUp {
    0% {
        opacity: 0;
        transform: translateY(calc(-50% + 30px));
    }
    100% {
        opacity: 1;
        transform: translateY(-50%);
    }
}

/* SPでも表示 */

/* whats-guest境界の花火 */
.whats-guest-fireworks-dots {
    position: absolute;
    left: 5%;
    bottom: -300px;
    width: 260px;
    height: 260px;
    z-index: 2;
    opacity: 0;
}

.whats-guest-fireworks-dots.is-active {
    animation: whats-fw-fadeInUp 1s ease-out forwards;
}

/* SPでも表示 */

/* ====================================
   Guest Artist
==================================== */
.guest {
    background: transparent;
    padding: 120px 0;
    overflow: visible;
}

.guest h2,
.guest p {
    color: #eaedf1;
}

.guest h2::before {
    content: '';
    display: block;
    width: 45px;
    height: 45px;
    margin: 0 auto 30px;
    background: url('../img/common/icon_fireworks_dots.svg') no-repeat center center;
    background-size: contain;
}

.guest .card {
    border: none;
    background: transparent;
    border-radius: 0;
}

.guest .card-img-top {
    border-radius: 0;
}

.guest .card-body {
    color: #eaedf1;
    padding: 20px 0;
}

.guest .card-title {
    font-size: 18px;
    font-weight: normal;
    margin-bottom: 5px;
    color: #eaedf1;
    margin-top: 5px;
}

.guest .card-role {
    font-size: 15px;
    color: #fff;
    margin-bottom: 15px;
}

.guest .card-text {
    font-size: 15px;
    line-height: 1.8;
    color: #eaedf1;
    text-align: justify;
}

/* ====================================
   Description
==================================== */
.description {
    background: #eaedf1;
    padding: 120px 0;
    color: #325078;
    overflow: hidden;
}

.description h2 {
    color: #325078;
    margin-bottom: 5px;
}

.description h2::before {
    content: '';
    display: block;
    width: 45px;
    height: 45px;
    margin: 0 auto 30px;
    background: url('../img/common/icon_fireworks_dots.svg') no-repeat center center;
    background-size: contain;
    filter: brightness(0) saturate(100%) invert(24%) sepia(32%) saturate(878%) hue-rotate(175deg) brightness(95%) contrast(91%);
}

.description-heading {
    /* font-size: 24px; */
    font-weight: bold;
    margin-bottom: 5px;
    text-align: center;
}

.description-subheading {
    font-size: 14px;
    /* color: #666; */
    margin-bottom: 20px;
    text-align: center;
}

.description-content {
    font-size: 15px;
    line-height: 1.8;
}

.description-list {
    margin: 0;
    padding: 0;
}

.description-list-item {
    margin-bottom: 12px;
}

.description-list-item dt {
    font-weight: bold;
    font-size: 15px;
    margin: .75rem 0;
}

.description-list-item dd {
    margin: 0 0 2.25rem;
    font-size: 15px;
    text-align: justify;
}

.notice {
    display: block;
}

.notice.important {
    color: #c85078;
}

.noticeList {
    list-style: none;
    padding-left: 1em;
    margin: 0;
}

.noticeList li {
    position: relative;
}

.noticeList li::before {
    content: '※';
    position: absolute;
    left: -1em;
}

.mark-circle {
    color: #98a7bb;
    font-size: 12px;
}

.description-video {
    width: 100%;
    /* max-width: 300px; */
    margin: 0 auto;
}

.description-video iframe {
    width: 100%;
    /* height: 615px; */
    border: 0;
    border-radius:8px;
    aspect-ratio: 1 / 1.79;
}

.description-block {
    margin-bottom: 40px;
}

.description-block:last-child {
    margin-bottom: 0;
}

/* ボタン */
.btn_wrap {
    margin-top: 20px;
}

.btn_wrap .btn {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    padding: 20px 40px;
    background: #fff;
    border: 1px solid #c1cad6;
    color: #325078;
    font-size: 15px;
    text-decoration: none;
    position: relative;
    transition: all 0.3s ease;
    font-weight: 500;
}

.btn_wrap .btn::after {
    content: '';
    position: absolute;
    right: 20px;
    width: 8px;
    height: 8px;
    border-top: 1px solid #325078;
    border-right: 1px solid #325078;
    transform: rotate(45deg);
    transition: border-color 0.3s ease;
}

.btn_wrap .btn:hover {
    background: #325078;
    color: #fff;
    border-color: #325078;
}

.btn_wrap .btn:hover::after {
    border-color: #fff;
}

.btn_wrap.w-300{
    width: 300px;
    margin:auto;
}


.btn_wrap.c-line-frame .btn {
    background: #325078;
    border: 1px solid #fff;
    color: #fff;
    text-decoration: none;
    position: relative;
    transition: all 0.3s ease;
    font-weight: 500;
}

.btn_wrap.c-line-frame .btn::after {
    border-color: #fff;
    transition: border-color 0.3s ease;
}

.btn_wrap.c-line-frame .btn::before {
    content: '';
    background-image: url(../img/onevoice/icon_line_white.svg);
    background-repeat: no-repeat;
    width: 25px;
    height: 25px;
    position: absolute;
    left: 1rem;
    transition: filter 0.3s ease;
}

.btn_wrap.c-line-frame .btn:hover {
    background: #fff;
    color: #325078;
    border-color: #325078;
}
.btn_wrap.c-line-frame .btn:hover::after {
    border-color: #325078;
}
.btn_wrap.c-line-frame .btn:hover::before {
    background-image: url(../img/onevoice/icon_line_navy.svg);
}

/* lineカラーのボタン */
.btn_wrap.c-line-color .btn{
    background: #06c755;
}
.btn_wrap.c-line-color .btn::before{
    background-image: url(../img/onevoice/icon_line_white_rime.svg);
}
.btn_wrap.c-line-color.btn_lg .btn::before{
    left: 3rem;
}
.btn_wrap.c-line-color .btn:hover{
    color:#06c755;
    background: #fff;
    border: 1px solid #06c755;
}
.btn_wrap.c-line-color .btn:hover::before{
    background-image: url(../img/onevoice/icon_line_white_rime_nega.svg);
}
.btn_wrap.c-line-color .btn:hover::after {
    border-color: #06c755;
}
@media (max-width: 768px) {
    .btn_wrap.c-line-color{
        width: 300px;
        margin: auto;
    }
    .btn_wrap.c-line-color.btn_lg .btn::before{
        left: 2rem;
        width: 35px;
        height: 35px;
    }
    .btn_wrap.c-line-color .btn {
        padding: 10px 40px;
    }
}


/* mailアイコンのボタン */
.btn_wrap.c-mail-frame .btn{
    background: #fff;
    border: 1px solid #c1cad6;
    color: #325078;
    text-decoration: none;
    position: relative;
    transition: all 0.3s ease;
    font-weight: 500;
}
.btn_wrap.c-mail-frame .btn::before{
    content: '';
    background-image: url(../img/onevoice/icon_mail_navy.svg);
    background-repeat: no-repeat;
    width: 25px;
    height: 25px;
    position: absolute;
    left: 1rem;
    transition: filter 0.3s ease;
}
.btn_wrap.c-mail-frame .btn:hover{
    border: 1px solid #fff;
    background: #325078;
    color: #fff;
}
.btn_wrap.c-mail-frame .btn:hover::before{
    background-image: url(../img/onevoice/icon_mail_white.svg);
}







.descript_border {
    border-top: 1px solid #98a7bb;
    margin: 80px 0;
}

@media (max-width: 768px) {
    .description .col-12:first-child {
        margin-bottom: 40px;
    }
}

/* ====================================
   Contact
==================================== */
.contact {
    background: #325078;
    padding: 120px 0;
    color: #fff;
}

.contact h2::before {
    content: '';
    display: block;
    width: 45px;
    height: 45px;
    margin: 0 auto 30px;
    background: url('../img/common/icon_fireworks_dots.svg') no-repeat center center;
    background-size: contain;
}

/* ====================================
   Info List（汎用お知らせリスト）
==================================== */
.info-list {
    list-style: none;
    margin: 0;
    padding: 0;
    max-width: 900px;
    margin: 0 auto;
}

.info-item {
    border-bottom: 1px solid #ddd;
}

.info-item a {
    display: flex;
    align-items: center;
    gap: 20px;
    padding: 20px 0;
    color: #333;
    transition: opacity 0.3s ease;
}

.info-item a:hover {
    opacity: 0.7;
}

.info-date {
    font-size: 14px;
    color: #666;
    flex-shrink: 0;
}

.info-category {
    display: inline-block;
    padding: 4px 12px;
    background: #333;
    color: #eaedf1;
    font-size: 12px;
    border-radius: 3px;
    flex-shrink: 0;
}

.info-title {
    font-size: 15px;
    flex: 1;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

@media (max-width: 768px) {
    .info-item a {
        flex-wrap: wrap;
        gap: 10px;
    }

    .info-date {
        font-size: 13px;
    }

    .info-title {
        width: 100%;
        white-space: normal;
    }
}

.bubble-wrap {
    background: #325078;
    width: 100%;
    /* max-width: 300px; */
    margin: 0 auto;
    padding: 20px 25px;
    border-radius: 8px;
    position: relative;
    margin-top: 20px;
}
.bubble-wrap::before {
    content: '';
    width: 20px;
    height: 20px;
    background-color: #325078;
    display: block;
    position: absolute;
    top: -5px;
    left: 50%;
    transform: rotate(45deg);
}
.bubble-wrap p{
    color: #fff;
    margin: 0;
    text-align: center;
}

.footer_btn_area {
    display: grid;
    grid-template-columns: 1fr 1fr;
    align-items: start;
    width: 620px;
    margin: auto;
    gap: 20px;
}
@media (max-width: 768px) {
    .footer_btn_area {
        display: block;
        margin: unset;
        width: unset;
    }
    .footer_btn_area .btn_wrap.mt-50:nth-child(2){
        margin-top: 20px !important;
    }
    

}

/* ====================================
   SP（スマートフォン）専用スタイル
   max-width: 768px
==================================== */
@media (max-width: 768px) {
    /* Hero */
    .hero-fireworks-dots {
        display: none;
    }
    /* SP: 開始アニメーション無効化（スクロール時のブラーはJSで適用） */
    .hero-bg-fireworks {
        animation: none;
        opacity: 1;
    }
    .hero-bg-players {
        animation: none;
        opacity: 1;
        transform: none;
    }
    .hero-color-overlay {
        display: none;
    }
    .hero-grid {
    grid-template-columns: 1fr;
    text-align: center;
    width: 100%;
}
.hero-text {
    font-size: 16px;
    color: #fff;
    padding-left: 3vw;
    text-align: justify;
    transform: translateY(20px);
    animation: heroSlideUp 1.4s cubic-bezier(0.4, 0, 0.2, 1) 1.1s forwards;
}
.hero-title {
    font-size: 32px;
    margin: 1rem .5rem;
}
.hero-content {
    padding: 0px 20px 10vh;
}
.information {
    position: relative;
    background: transparent;
    padding: 80px 1rem 60px;
}
.whats-text-area {
    margin-top: 30px !important;
    padding: 0 2rem;
    text-align: justify;
}
.logo-area {
    margin-top: 0;
    margin: 40px auto 10px !important;
}
.event-info-item {
    /* flex-direction: column; */
    gap: 1.25em;
}
.whats-fireworks-dots {
    position: absolute;
    right: -7%;
    top: -40px;
    transform: translateY(-50%);
    width: 110px;
    height: 110px;
    opacity: 0;
}
.whats {
    background: #325078;
    padding: 70px 0 50px;
    color: #fff;
    overflow: visible;
}
.whats h2 {
    color: #fff;
    margin-bottom: 0 !important;
    line-height: 1.25;
    margin-bottom: .5rem !important;
}
.whats-guest-fireworks-dots {
    display: none;
}
.guest {
    background: transparent;
    padding: 80px 0 40px;
    overflow: visible;
}
.artist-list {
    margin-top: 0 !important;
    padding: 0 1.5rem;
}
.description {
    background: #eaedf1;
    padding: 60px 0;
    color: #325078;
}
.description-wrap{

}
.description-list {
    margin: .5rem 1.5rem;
    padding: 5px 0 60px;
    border-bottom: 1px solid #98a7bb;
}
.right-wrap {
    margin-top: 20px;
}
.right-wrap .description-list{
    padding-bottom: 50px;
    margin-bottom: 70px;
}
.contact {
    background: #325078;
    padding: 70px 0 120px;
    color: #fff;
}
.contact-lead{
    text-align: justify;
    padding: 0 1.5rem;
}
}
