/*
Custom Property
*/

:root {
    --color-primary: 51 51 51; /* Black */
    --color-secondary: 255 218 1; /* Yellow */
    --color-tertiary: 0 154 83; /* Green */
    --color-quaternary: 0 163 233; /* Blue */
    --color-bg: 255 255 255; /* White */
    --color-att: 230 0 18; /* Red */
    --gfont-jp: "Noto Sans JP";
    --gfont-en: "Roboto";
    --border: 2px solid rgb(51 51 51);
    --transition-opacity: opacity 0.2s ease-in-out;
    --transition-all: all 0.2s ease-in-out;
    --transition-width: width 0.3s ease-in-out;
    --link-transition-width: width 0.2s ease-in-out;
    --link-transform-scale: scale(1.2);
    --fade-opacity: 0.7;
    --padding-rl-sm: 6.4vw;
    --width-pc: 880px;
    --cover-delay: 0.8s;
}

/*
SP Img Copyguard
Font & List Set
Device Set
*/

/* SP Img Copyguard ==================== */
img {
    -webkit-touch-callout: none; -webkit-user-select: none; -moz-touch-callout: none; -moz-user-select: none; -ms-user-select: none;
    user-select: none;
}

/* Font & List Set ==================== */
html { font-size: 10px; }
.fsSS { font-size: 75%; }
.fsS, .indentS { font-size: 87.5%; }
.fsL { font-size: 112.5%; }
.fsLL { font-size: 125%; }
.fwN { font-weight: 400; }
.fwB { font-weight: 700; }
.fc-att { color: rgb(var(--color-att)); }
.fc-attB { color: rgb(var(--color-att)); font-weight: bold; }

.taC { text-align: center; }
.taL { text-align: left; }
.taR { text-align: right; }

.indent, .indentS {
    padding-left: 1em;
    text-indent: -1em;
    padding-top: 2px;
    padding-bottom: 2px;
}

.indent-3em {
    padding-left: 2.6em;
    text-indent: -2.6em;
    padding-top: 2px;
    padding-bottom: 2px;
}

.li-disc li { list-style-type: disc; margin-left: 1.8em; }
.li-circle li { list-style-type: circle; margin-left: 1.8em; }
.li-square li { list-style-type: square; margin-left: 1.8em; }
.li-decimal li, ol.li-decimal li { list-style-type: decimal; margin-left: 1.8em; }
.li-decimalzero li { list-style-type: decimal-leading-zero; margin-left: 3em; }
.li-lalpha li { list-style-type: lower-alpha; margin-left: 3em; }

.indent li, .indentS li, .indentS-pc, .indent-3em li,
.li-disc li, .li-circle li, .li-square li, .li-decimal li, .li-decimalzero li, .li-lalpha li {
padding-top: 2px;
padding-bottom: 2px;
}

.li-pt10 li { padding-top: 10px; }
.li-pt20 li { padding-top: 20px; }
.li-pt10 li:first-child, .li-pt20 li:first-child { padding-top: 0; }

.pt10 { padding-top: 10px !important;}


/* Device Set ==================== */
.sp { display: block !important; }
.sp-tab { display: block !important; }
.tab { display: none !important; }
.tab-pc { display: none !important; }
.pc { display: none !important; }
.pt-original { padding-top: 30px; }
.mt-original { margin-top: 30px; }

@media (min-width: 720px) {
    .sp { display: none !important; }
    .tab { display: block !important;}
    .tab-pc { display: block !important; }
    .tab-pc-taC { text-align: center; }
    .tab-pc-fsL { font-size: 112.5%; }
    .pt-original { padding-top: 40px; }
    .mt-original { margin-top: 40px; }
}

@media (min-width: 960px) {
    .sp-tab { display: none !important;}
    .tab { display: none !important; }
    .pc { display: block !important; }
    .pc-taC { text-align: center; }
}


/*
====================
Page Style
HEADER & COVER & NAVI
CONTENTS
FOOTER
====================
*/

::selection {
    background-color: rgb(var(--color-primary));
    color: rgb(var(--color-bg));
}

html {
    background-color: rgb(var(--color-bg));
    scroll-behavior: smooth;
}

body {
    color: rgb(var(--color-primary));
    font-family: var(--gfont-jp), "Hiragino Kaku Gothic ProN", "Hiragino Sans", "Noto Sans JP", Meiryo, sans-serif;
    font-size: 1.4em;
    font-weight: 400;
    font-optical-sizing: auto;
    line-height: 1.8;
    overflow-wrap: anywhere;
    word-break: normal;
    line-break: strict;
    overflow-x: hidden;
    position: relative;
    text-size-adjust: 100%;
    -webkit-text-size-adjust: 100%;
}

@media (min-width: 720px) {
    body { font-size: 1.6em; }
}

a:link, a:visited {
    background: linear-gradient(transparent 50%, #FFDA01 0%);
    color: rgb(var(--color-primary));
    font-weight: 700;
    text-decoration: none;
}

@media (any-hover: hover) {
    a:active, a:hover {
        background: linear-gradient(transparent 0%, #FFDA01 0%);
    }
}


/* HEADER ==================== */
#header__cover {
    display: flex;
    justify-content: center;
    align-items: center;
    width: 100%;
    height: 100svh;
    position: relative;

    h1 {
        background: url(../img/logo_ylse.svg) center center no-repeat;
        background-size: 100% auto;
        aspect-ratio: 240 / 106;
        width: 62%;
        margin: 0;
        text-indent: 100%;
        white-space: nowrap;
        overflow: hidden;
    }
}

@media (min-width: 720px) {
    #header__cover {
        h1 {
            background-size: 560px auto;
            width: 560px;
        }
    }
}

#scroll-down {
    font-family: var(--gfont-en), sans-serif;
    font-weight: 700;
    font-size: 1.4rem;
    line-height: 1;
    text-align: center;
    width: 50px;
    height: 100px;
    position: absolute;
    left: 50%;
    bottom: -100%;
    transform: translateX(-50%);
    animation: scrolldownAnimeDelay 0.3s ease-in-out var(--cover-delay) forwards;

    &::before, &::after {
        content: "";
        display: block;
        position: absolute;
        left: 50%;
        bottom: 0;
        transform: translateX(-50%);
    }

    &::before {
        width: 4px;
        height: 80px;
        background-color: rgb(var(--color-primary));        
    }

    &::after {
        width: 12px;
        height: 12px;
        background-color: rgb(var(--color-secondary));
        border-radius: 50%;
        animation: 
            scrolldownAnime 1.5s ease-in-out var(--cover-delay) infinite,
            scrolldownAnimeHide 1.5s ease-in-out var(--cover-delay) infinite;
        opacity: 0;
    }
}

@media (max-height: 440px) {
    #scroll-down { opacity: 0; }
}

@keyframes scrolldownAnimeDelay {
    0% { bottom: -100px; }
    100% { bottom: 20px; }
}

@keyframes scrolldownAnime {
    0% { top: 20px; }
    100% { top: 88%; }
}

@keyframes scrolldownAnimeHide {
    0% { opacity: 0; }
    20% { opacity: 1; }
    80% { opacity: 0.9; }
    100% { opacity: 0; }
}


/* NAVI */
#nav {
    background-color: rgb(var(--color-bg));
    display: flex;
    flex-direction: column;
    justify-content: center;
    width: 100%;
    height: 100dvh;
    position: fixed;
    top: 0;
    left: 0;
    transform: translateX(100%);
    transition: var(--transition-all);
    z-index: 10;

    &.js-open {
        background-color: rgb(var(--color-bg) / 96%);
        transform: translateX(0);
    }

    .nav__list {
        display: flex;
        flex-direction: column;
        justify-content: center;
        align-items: center;
        gap: 10px;

        li {
            a {
                background: transparent;
                display: block;
                color: #fff;
                font-family: var(--gfont-en), sans-serif;
                font-size: 3.2rem;
                font-weight: 800;
                letter-spacing: 0.02em;
            }
        }
    }
}

@media (min-width: 720px) {
    #nav {
        .nav__list {
            gap: 12px;

            li  a { font-size: 3.6rem; }
        }
    }
}

/* Drawer */
#drawer-btn {
    border: 0;
    margin: 0;
    padding: 0;
    aspect-ratio: 1 / 1;
    width: 40px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    row-gap: 8px;
    position: fixed;
    top: 20px;
    right: var(--padding-rl-sm);
    z-index: 20;

    span {
        background-color: rgb(var(--color-primary));
        width: 40px;
        height: 4px;
        transition: all 0.3s ease-in-out;
    }

    &.js-open {
        span:nth-child(1) { transform: rotate(-135deg); }
        span:nth-child(2) { opacity: 0; }
        span:nth-child(3) { transform: rotate(135deg); }
        span {
            position: absolute;
            top: 50%;
            left: 0;
        }
    }
}

@media (min-width: 720px) {
    #drawer-btn {
        width: 50px;
        row-gap: 10px;
        top: 40px;

        span { width: 50px; }
    }
}

@media (min-width: 960px) {
    #drawer-btn { right: 4.6vw; }
}

@media (any-hover: hover) {
    #drawer-btn:hover span {
        background-color: rgb(var(--color-secondary));
    }
}


/* MAIN ==================== */
.contents {
    width: 100%;
    margin: 0 auto;
    padding: 80px var(--padding-rl-sm) 0;
}

.hgroup__h2 {
    line-height: 1.4;
    padding: 80px 0 60px;
    text-align: center;

    h2 {
        font-family: var(--gfont-en), sans-serif;
        font-size: 4.8rem;
        font-weight: 800;
        letter-spacing: 0.02em;
    }

    h2 > span { position: relative; }
    p { font-weight: 700; }
}

.li-original > li {
    padding-left: 20px;
    position: relative;
}

.li-original > li::before {
    border-radius: 50%;
    content: "";
    display: inline-block;
    width: 8px;
    aspect-ratio: 1 / 1;
    position: absolute;
    top: 9px;
    left: 4px;
}

.li-original > li:nth-child(odd)::before {
    background-color: rgb(var(--color-tertiary));
}

.li-original > li:nth-child(even)::before {
    background-color: rgb(var(--color-quaternary));
}

.li-att > li { padding-bottom: 20px; }

.js-inview.anime-bounce span {
    display: inline-block;
    animation: bounce 0.4s ease-in-out forwards;
}

@media (any-hover: hover) {
    #nav a:hover span {
        display: inline-block;
        animation: bounce 0.4s ease-in-out forwards;
    }
}

@keyframes bounce {
  0%, 100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-15px);
  }
}

@media (min-width: 720px) {
    .contents { padding: 100px var(--padding-rl-sm) 0; }

    .hgroup__h2 {
        padding: 100px 0 80px;
        h2 { font-size: 6.4rem; }
    }

    .li-original > li::before { top: 12px; }
}

@media (min-width: 960px) {
    .contents {
        width: var(--width-pc);
        padding: 100px 0 0;
    }
}


/* Schedule */
.schedule__list {
    display: flex;
    flex-wrap: wrap;
    flex-direction: column;
    row-gap: 40px;
    font-weight: 700;

    li {
        text-align: center;

        p.schedule__date {
            font-size: 2rem;
            span { font-size: 1.6rem;}
        }

        p.schedule__place { font-size: 3rem; }
    }
}

@media (min-width: 720px) {
    .schedule__list {
        flex-direction: row;
        row-gap: 60px;

        li { width: 50%; }
    }
}


/* Ticket */
.ticket__list {
    border-top: 2px solid rgb(var(--color-primary));
    margin-top: 30px;
    padding: 30px 0 10px;

    li {
        font-size: 1.6rem;
        font-weight: 700;

        span { font-size: 1.4rem; }
    }
}

@media (min-width: 720px) {
    .ticket__wrap {
        width: 440px;
        margin: 0 auto;
    }
}


/* Bring */
.bring__h3 {
    margin: 40px 0 20px;
    position: relative;

    span {
        background-color: rgb(var(--color-primary));
        color: rgb(var(--color-bg));
        display: inline-block;
        font-size: 1.6rem;
        font-weight: 700;
        line-height: 1.4;
        padding: 10px 16px;
        position: relative;
    }

    span::after {
        background-color: rgb(var(--color-secondary));
        content: '';
        width: 100%;
        height: 100%;
        position: absolute;
        top: 6px;
        left: 6px;
        z-index: -1;
    }
}

.bring__h3::after {
    background-color: rgb(var(--color-primary));
    content: '';
    display: block;
    width: 100%;
    height: 2px;
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    z-index: -2;
}

@media (min-width: 720px) {
    .bring__h3 {
        margin: 60px 0 30px;

        span {
            font-size: 1.8rem;
            padding: 10px 20px;
            position: relative;
        }

        span::after {
            background-color: rgb(var(--color-secondary));
            content: '';
            width: 100%;
            height: 100%;
            position: absolute;
            top: 6px;
            left: 6px;
            z-index: -1;
        }
    }

    .bring__h3::after {
        background-color: rgb(var(--color-primary));
        content: '';
        display: block;
        width: 100%;
        height: 2px;
        position: absolute;
        top: 50%;
        transform: translateY(-50%);
        z-index: -2;
    }
}


/* Reception */
#reception__time {
    display: flex;
    flex-wrap: wrap;
    flex-direction: column;
    row-gap: 50px;
    padding-top: 60px;

    .reception__time-inner {
        border: var(--border);
        text-align: center;
        padding: 40px 10px 30px;
        position: relative;

        dt {
            position: absolute;
            top: -20px;
            left: 50%;
            transform: translateX(-50%);

            span {
                background-color: rgb(var(--color-primary));
                color: rgb(var(--color-bg));
                display: inline-block;
                font-size: 1.6rem;
                line-height: 1.4;
                margin: 0 auto;
                padding: 10px 16px;
                position: relative;
            }
            
            span::after {
                background-color: rgb(var(--color-secondary));
                content: '';
                display: block;
                width: 100%;
                height: 100%;
                position: absolute;
                top: 6px;
                left: 6px;
                z-index: -1;
            }
        }

        dd {
            font-size: 1.8rem;
            font-weight: 700;
        }
    }
}

@media (min-width: 720px) {
    #reception__time {
        flex-direction: row;
        column-gap: 40px;

        .reception__time-inner {
            width: calc((100% - 40px) / 2);

            dt {
                position: absolute;
                top: -22px;

                span {
                    font-size: 1.8rem;
                    padding: 10px 20px;
                }
                
                span::after {
                    top: 8px;
                    left: 8px;
                }
            }

            dd { font-size: 2rem; }
        }
    }
}

@media (min-width: 960px) {
    #reception__time {
        column-gap: 60px;

        .reception__time-inner { width: calc((100% - 60px) / 2); }
    }
}


/* Official Item */
.official-item__qo {
    border: var(--border);
    margin:60px 0 40px;
    padding: 50px 20px 30px;
    position: relative;

    h3 {
        text-align: center;
        position: absolute;
        top: -32px;
        left: 50%;
        transform: translateX(-50%);

        span {
            background-color: rgb(var(--color-primary));
            color: rgb(var(--color-bg));
            display: inline-block;
            font-size: 1.6rem;
            line-height: 1.4;
            min-width: 224px;
            padding: 10px 16px;
            position: relative;
        }
        
        span::after {
            background-color: rgb(var(--color-secondary));
            content: '';
            display: block;
            width: 100%;
            height: 100%;
            position: absolute;
            top: 6px;
            left: 6px;
            z-index: -1;
        }
    }
}

.official-item__payment {
    display: flex;
    flex-wrap: wrap;
    flex-direction: column;
    row-gap: 20px;
    padding-bottom: 10px;
}

@media (min-width: 720px) {
    .official-item__qo {
        margin: 80px 0 60px;
        padding: 50px 40px 40px;

        h3 {
            position: absolute;
            top: -22px;

            span {
                font-size: 1.8rem;
                min-width: 454px;
                padding: 10px 20px;
            }
            
            span::after {
                top: 8px;
                left: 8px;
            }
        }
    }

    .official-item__payment {
        flex-direction: row;
        column-gap: 20px;
        
        img { width: calc((100% - 20px) / 2); }
    }
}

.official-item__list {
    display: flex;
    flex-direction: column;
    padding-top: 40px;
}

.official-item__img {
    img { width: 100%; }
}

.official-item__txt {
    padding-top: 20px;

    h4 {
        font-family: var(--gfont-en), sans-serif;
        font-size: 2rem;
        font-weight: 800;
        letter-spacing: 0.02rem;
        line-height: 1.4;

        span {
            font-size: 1.4rem;
            font-weight: 700;
            letter-spacing: 0;
            display: inline-block;
        }
    }

    .official-item__price {
        padding-top: 10px;
        span { font-size: 87.5%; }
    }

    .official-item__intro {
        font-size: 1.2rem;
        padding: 20px 0 10px;
    }

    .official-item__detail {
        font-size: 1.2rem;
        p { padding-top: 10px; }
    }

    .official-item__limit {
        background-color: rgb(var(--color-primary));
        color: rgb(var(--color-bg));
        font-size: 1.4rem;
        font-weight: 700;
        line-height: 2;
        display: inline-block;
        margin-top: 20px;
        padding: 0 10px 2px;
    }
}

@media (min-width: 720px) {
    .official-item__list {
        flex-direction: row;
        column-gap: 40px;
        padding-top: 60px;
    }

    .official-item__img { width: 300px; }

    .official-item__txt {
        flex: 1;
        padding-top: 0;

        h4 {
            font-size: 2.4rem;
            span { font-size: 1.6rem; }
        }

        .official-item__intro { font-size: 1.4rem; }
    }
}

@media (min-width: 960px) {
    .official-item__list { column-gap: 60px; }
}


/* FOOTER ==================== */
#footer {
    border-top: var(--border);
    font-family: var(--gfont-en), sans-serif;
    text-align: center;
    margin-top: 60px;

    #footer__link {
        display: flex;
        flex-direction: column;
        row-gap: 10px;
        padding: 60px var(--padding-rl-sm);

        a { font-weight: 800; }
    }

    small {
        display: block;
        padding-bottom: 60px;
    }
}

@media (min-width: 720px) {
    #footer {
        margin-top: 100px;
        
        #footer__link { padding: 80px var(--padding-rl-sm); }
        small { padding-bottom: 80px; }
    }
}

#page-top {
    aspect-ratio: 1 / 1;
    width: 40px;
    opacity: 0;
    transition: var(--transition-opacity);
    position: fixed;
    right: var(--padding-rl-sm);
    bottom: 50px;

    a {
        background: linear-gradient(transparent);
        background-color: rgb(var(--color-primary));
        border-radius: 50%;
        display: block;
        aspect-ratio: 1 / 1;
        width: 40px;
        text-indent: 100%;
        white-space: nowrap;
        overflow: hidden;
    }

    a::after {
        border-top: 2px solid rgb(var(--color-bg));
        border-left: 2px solid rgb(var(--color-bg));
        content: '';
        display: block;
        aspect-ratio: 1 / 1;
        width: 10px;
        position: absolute;
        top: 42%;
        left: 50%;
        transform: translateX(-50%) rotate(45deg);
    }
}

@media (min-width: 720px) {
    #page-top {
        width: 50px;
        bottom: 60px;

        a { width: 50px; }
        a::after { width: 12px; }
    }
}

@media (min-width: 960px) {
    #page-top { right: 4.6vw; }
}

@media (any-hover: hover) {
    #page-top {
        a:hover {
            background-color: rgb(var(--color-secondary));
        }
        a:hover::after {
            border-color: rgb(var(--color-primary));
        }
    }
}