@charset "utf-8";

.page-bg{
    position: relative;
    height: 100vh;
    overflow: hidden;
    z-index: 0;
    min-width: 1200px;
    margin-top: 80px;
    & .page-bg__sky{
        position: absolute;
        inset: 0;
        background: url("../../../../assets/img/game/joypico/index/sky.svg")  top center no-repeat;
        background-color: #b5f5ff;
        background-size: 100% auto;
        z-index: 1;
        height: 260px;
    }

    & .page-bg__clouds{
        position: absolute;
        top: 60px;
        inset: 0;
        opacity: .7;
        background: url("../../../../assets/img/game/joypico/index/clouds.svg") repeat-x;
        background-size: auto 220px;
        animation: clouds-drift 150s linear infinite;
        transform: translateZ(0) scale(1.05); /* 端のチラ見え防止 */
        z-index: 2;
    }
    & .bg-stage__city{
        position:absolute;
        left:0;
        right:0;
        top: 5px;
        height: 100vh;
        background:url("../../../../assets/img/game/joypico/index/city.png") top no-repeat;
        background-size: 110% auto;
        transform: translateZ(0);
        z-index: 3;
    }
    & .bg-stage__street{
        position:absolute;
        left:0;
        right:0;
        top: 440px;
        height: 100vh;
        background:url("../../../../assets/img/game/joypico/index/street.png") top no-repeat;
        background-size: 102% auto;
        transform: translateZ(0);
        z-index: 3;
    }
}

@keyframes clouds-drift{
  from{ background-position: 0 30px; }
  to  { background-position: -2000px 30px; }
}

/* 既存コンテンツを背景より前に */
.wrap{
  position: relative;
  z-index: 1;
  margin-top: -100vh;
  min-height: 100vh;
  display: flex;
  flex-direction: column;

  & header{
    background: transparent;
  }
}

/* top_info ------------------------------------------------ */
.top_info{
    max-width: var(--max-width);
    width: var(--max-width);
    margin: 1rem auto;
    box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
    border-radius: 8px;
    background: url("../../../../assets/img/game/joypico/icon_info.svg")  top 0.8rem left 0.8rem no-repeat;
    background-color: #fff;
    background-size: 26px;
    padding: 0.3rem;
    box-sizing: border-box;
    & a{
        color: var(--link-txt);
        font-size: 0.8em;
        padding: 0.4rem 1rem;
        margin: 0 auto;
        display: flex;
        justify-content:center;
        align-items:center;
        width: 90%;
        & .day{
            color: #666;
            padding-right: 1rem;
            font-size: 0.8em;
            flex: 0 0 120px;
        }
        & .text{
            color: var(--link-txt);
            flex: 1;
        }
    }
}

/* main ------------------------------------------------ */
main {
    max-width: var(--max-width);
    width: var(--max-width);
    margin-inline: auto;
    margin-block: var(--space-m);
    display: flex;
    justify-content: space-between;
    flex: 1;
    & .top_box{
        flex: 1;
        margin: 0 auto;
        padding: 1rem 0 0;
        height: auto;
    } 
    & .ticket-status{
        flex: 1;
        border-radius:8px;
        max-width:700px;
        margin:0 auto;
        & .msg-box {
            position: relative;
            background: rgba(0, 30, 80, 0.8);
            color: #fff;
            border: 4px solid #fff;
            border-radius: 10px;
            width: 94%;
            padding: 1.3rem 2rem;
            margin: 0 auto 2.5rem;
            box-shadow: 0 10px 25px rgba(0, 0, 0, .15);
            backdrop-filter: blur(4px);
            & .msg{
                margin: 0;
                line-height: 1.6;
                font-size: 0.9em;
                text-align: left;
                white-space: pre-line;
                padding: 0 4rem 0 0;
                min-height: 5rem;
            }
            & .msg-chara{
                position: absolute;
                right: -8px;
                bottom: -10px;
                width: 100px;
                pointer-events: none;
                transform-origin: center bottom;
                animation: chara-breathe 2.4s ease-in-out infinite;
                & img{
                    width: 100%;
                    height: auto;
                    object-fit: contain;
                    display: block;
                }
            }
        }
        & .ticket-status_inner{
            display:flex;
            align-items:center;
            gap:1.6rem;
        }

        & .ticket-status_img{
            flex:0 0 auto;
            position: relative;
            display: inline-block;
            & .ticket-img {
                position: relative;
                width: 120px;
                filter:drop-shadow(0 6px 8px rgba(0,0,0,.15));
                z-index: 2;
                transform: rotate(-15deg);
            }
            & .sparkle {
                position: absolute;
                opacity: 0;
                z-index: 1;
                pointer-events: none;
                animation: howatto 3s infinite;
                width: 16px;
                
                &.s1 { top: 10; left: -10px; animation-delay: 0s; }
                &.s2 { top: -10px; right: 0px; animation-delay: 1s; font-size: 1rem; }
                &.s3 { bottom: -20px; right: 10px; animation-delay: 2s; font-size: 1.2rem; }
            }            
        }

        & .ticket-status_text{
            flex:1;
            text-align:left;

            & .label{
                font-size:1.2em;
                font-weight:bold;
                margin-bottom:var(--space-m);
                display: block;
                text-align: left;
            }

            & .count{
                font-size:1em;
                line-height: 2em;
                text-align: right;
            }

            & .num{
                font-size:3.2em;
                font-weight:bold;
                margin:0 6px;
                color: #1f3c88;
            }

            & .unit{
                font-size:1.5em;
            }

            & .msg{
                margin-left:2%;
                font-size:1.2em;
            }
        }
        & .raffle_link{
            & a.btn{
                display: block;
                width: 200px;
                margin: 0 auto;
                padding: 12% 0;
                background: linear-gradient(90deg, #ff7e5f, #feb47b);
                color: #fff;
                font-size: 1.5em;
                font-weight: bold;
                text-align: center;
                border-radius: 30px;
                box-shadow: 0 4px 12px rgba(0, 0, 0, .1);
                transition: background 0.3s ease;

                &:hover{
                    background: linear-gradient(90deg, #feb47b, #ff7e5f);
                }
            }
            & .go-button {
                position: relative;
                display: inline-flex;
                align-items: center;
                justify-content: center;
                padding: 1.6rem 1rem 1.4rem;
                font-size: 1.4rem;
                font-weight: bold;
                color: #fff;
                text-decoration: none;
                background: linear-gradient(to bottom, #ff7e7e 0%, #ff4b4b 100%); /* 暖色系のグラデーション */
                border-radius: 32px;
                border-bottom: 5px solid #d63030; /* ボタンの厚み（立体感） */
                box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
                transition: all 0.2s;
                overflow: hidden; /* 光の演出用 */
                &::after {
                    content: "";
                    width: 10px;
                    height: 10px;
                    border-top: 3px solid #fff;
                    border-right: 3px solid #fff;
                    transform: rotate(45deg);
                    margin: 0 0.2rem 0 0.4rem;
                    transition: transform 0.3s;
                }
                &:hover {
                    transform: translateY(-2px); 
                    box-shadow: 0 6px 20px rgba(255, 75, 75, 0.4);
                    filter: brightness(1.1);
                    opacity: 1;
                }
                &:hover::after {
                    transform: rotate(45deg) translateY(-2px) translateX(2px); 
                }
                &:active {
                    transform: translateY(2px);
                    border-bottom: 1px solid #d63030;
                }
            }
        }
    }
    & .center {
          max-width: 650px;
          margin: 0 auto;
        & .slide {
            padding: 0;
        }
        & img {
            display: block;
            width: 100%;
            height: auto;
        }
        & .slick-slide {
            transition: transform 0.4s ease, opacity 0.4s ease;
            transform: scale(.92); opacity:.6;
            opacity: 0.6;
            background: transparent;
        }
        & .slick-center {
            transform: scale(1);
            opacity: 1;
        }
        & .slick-prev,
        & .slick-next {
            width: 32px;
            height: 32px;
            border-radius: 999px;
            background: rgba(255,255,255,.92);
            box-shadow: 0 6px 18px rgba(0,0,0,.18);
            z-index: 10;
            display: flex; 
            align-items: center;
            justify-content: center;
            top: 50%;
            transform: translateY(-50%); 
            margin-top: 0 !important;
        }
        & .slick-prev { left: -18px; }
        & .slick-next { right: -18px; }
        & .slick-prev:before,
        & .slick-next:before {
            position: static;
            transform: none;
            font-size:24px;
            line-height:1;
            opacity:1;
            color:#004087;
        }
        & .slick-prev:before,
        & .slick-next:before {
            transform: translateY(-2px) scale(1.05); 
        }
        & .slick-prev:before { content: "‹"; }
        & .slick-next:before { content: "›"; }
        & .slick-dots {
            bottom: -28px;
            & li {
                margin: 0 6px;
                & button:before {
                    font-size: 24px;
                    color: #fff;
                    opacity: 1;
                }
                &.slick-active button:before {
                    opacity: 1;
                    color: #004087;
                } 
            }
        }
    }

.center .slick-center {
  transform: scale(1);
  opacity: 1;
}

    & .note{
        font-size: 0.7em;
        margin-top: var(--space-l);
        color: #555;
        & a{
            color: var(--link-txt);
        }
    }
    .index_ad{
        flex: 0 0 340px;
        width: auto;
        padding: 0 ;
        margin: 0 auto;
        background:url("../../../../assets/img/game/joypico/index/building_0.png") bottom center no-repeat;
        background-size: 85% auto;
        position: relative;
        text-align: center;
        & .ssp_336_280_01{
            border: solid 4px #d5d1ca;
            border-radius: 4px;
            box-sizing: content-box;
            & img{
                width: 100%;
                height: auto;
                display: block;
            }
        }
        & .chara{
            position: absolute;
            right: 4rem;
            bottom: 0;
            width: 70px;
            height: auto;
            transform: rotate(-5deg);
            display:block;
            transform-origin: bottom center;
            animation: chara-jump 3.5s ease-in-out infinite;
        }
        & a.raffle-card{
            & .raffle_cta{
                margin-top: auto;
                align-self: flex-end;
                padding: 10px 16px;
                border-radius: 999px;
                font-weight: 800;
                background: linear-gradient(#ff93af, #ff60a6);
                color: #fff;
                text-shadow: 0 2px #f74f99;
                box-shadow: 0 3px 0 #e53e87 , 0 4px 16px #666;
                position: absolute;
                bottom: 4.5rem;
                width: 70%;
                text-align: center;
                left: 50%;
                margin-left: -35%;                
                & .arrow {
                    margin-left: 6px;
                    font-size: 18px;
                    line-height: 1;
                    position: relative;
                    top: -1px;
                    display: inline-block;
                    animation: arrow-slide 2.6s ease-in-out infinite;
                }
            }
        }
    } 
}

& .games-grid{
    max-width: var(--max-width);
    width: var(--max-width);
    padding-block:var(--space-l);
    margin: 0rem auto 6rem;
    clear: both;

    & .games-grid_head{
        display:flex;
        align-items:flex-end;
        gap:2%;
        margin-bottom:18px;
    }

    & .games-grid_title{
        color: #004087;
        font-size: 1.4em;
        font-weight: bold;
        letter-spacing: .02em;
        margin: 0;
    }

    & .games-grid_desc{
        margin: 0;
        font-size: 0.8em;
        line-height: 1.6;
    }

    & .games-grid_list{
        display:grid;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 2rem;
    }

    /* カード */
    & .game-card{
        display:flex;
        gap:2%;
        padding:0.8rem;
        background: rgba(255,255,255,1);
        border: 1px solid rgba(0,0,0,.08);
        border-radius: 8px;
        box-shadow: 0 8px 18px rgba(0,0,0,.08);
        text-decoration:none;
        color: inherit;
        transition: transform .12s ease, box-shadow .12s ease;
        min-height: 180px;
        &:hover{
        transform: translateY(-2px);
        box-shadow: 0 12px 26px rgba(0,0,0,.12);
        }
        &.soon{
            pointer-events: none;
        }
    }

    & .game-card_thumb{
        flex: 0 0 150px;
        height: 140px;
        position: relative;
        & img{
            position: absolute;
            display:block;
            &.billding{
                bottom: 0;
                left: 45%;
                width: 90%;
                margin-left: -40%;
                height: auto;
            }
            &.character {
                display: block;
                transform-origin: center bottom;
                animation: chara-breathe 3s ease-in-out infinite;
                &:nth-child(odd){
                    animation-delay: .2s;
                }
                &:nth-child(even){
                    animation-delay: 2.6s;
                }
                &:nth-child(3n){
                    animation-delay: 1.3s;
                }
            }
        }
        & .character_pos {
            position: absolute;
            bottom: 3rem;
            left: 2rem;
            width: 40%;
            transform: translateX(-50%);
        }
    }

    & .game-card_body{
        flex:1;
        display:flex;
        flex-direction:column;
        min-width:0;
    }

    &.game-card_name{
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        z-index: 3;
    }

    & .game-card_meta{
        margin: 0;
        font-size: 0.7em;
        padding: 0.4rem 0.4rem 0;
        min-height: 3em;
    }

    & .game-card_cta{
        margin-top:auto;
        align-self:flex-end;
        padding: 10px 16px;
        border-radius: 999px;
        font-weight: 800;
        background: linear-gradient(#ff7e7e, #ff4d4d);
        color:#fff;
        box-shadow: 0 3px 0 #cc3a3a;

        & .arrow{
        margin-left: 6px;
        font-size: 18px;
        line-height: 1;
        position: relative;
        top: -1px;
        }
    }

    /* レスポンシブ */
    @media (max-width: 1024px){
        & .games-grid__list{ grid-template-columns: repeat(2, minmax(0, 1fr)); }
    }
    @media (max-width: 640px){
        & .games-grid__head{ flex-direction:column; align-items:flex-start; }
        & .games-grid__list{ grid-template-columns: 1fr; }
        & .game-card__thumb{ flex-basis: 120px; height: 108px; }
    }
}

@keyframes howatto {
    0% {
        transform: scale(0.5) translateY(0);
        opacity: 0;
    }
    30% {
        transform: scale(1.2) translateY(-10px); /* 少し上に浮きながら大きく */
        opacity: 1;
    }
    60%, 100% {
        transform: scale(1) translateY(-20px);
        opacity: 0;
    }
}

/* ボタンアロー */
@keyframes arrow-slide {
    0%   { transform: translateX(0); }
    10%  { transform: translateX(3px); }
    20%  { transform: translateX(0); }
    30%  { transform: translateX(3px); }
    40%  { transform: translateX(0); }
    100% { transform: translateX(0); }
}

/* キャラ呼吸 */
@keyframes chara-breathe{
    0%   { transform: translateY(0) scaleY(1); }
    50%  { transform: translateY(0) scaleY(0.97); }
    100% { transform: translateY(0) scaleY(1); }
}

/* キャラジャンプ */
@keyframes chara-jump{
    0%   { transform: translateY(0) scaleY(1); }
    5%   { transform: translateY(0) scaleY(0.95); }
    8%   { transform: translateY(-12px) scaleY(1.05); }
    15%  { transform: translateY(0) scaleY(1); }
    100% { transform: translateY(0) scaleY(1); }
}

/* 動きを嫌う設定の人には止める */
@media (prefers-reduced-motion: reduce){
    .msg-chara{ animation: none !important; }
}


/* raffle_pages ------------------------------------------------ */

.raffle_pages{
    width: 100%;
    & .hero{
        text-align: center;
        width: 728px;
        height: 440px;
        margin: 0 auto 1rem;
        background:url("../../../../assets/img/game/joypico/game_bg.png") repeat;
        background-color: #5EDFFF;
        position: relative;
    }
    & .hero_img{
        width: auto;
        height: 100%;
        display: block;
        margin: 0 auto;
    }
    & .hero_anime{
        width:440px;
        height:440px
        display: block;
        margin: 0 auto;
        background: #F6F1E8;
    }
    & .loading{
        & p{
            text-align: center;
            font-size: 0.9rem;
        }
    }
    & .cta{
        text-align: center;
        margin-bottom: 28px;
    }
    & .badge{
        display: block;
        padding: 0.2rem 0 0.4rem;
        width: 30%;
        min-width: 300px;
        border-radius: 999px;
        background: #fff;
        border: 1px solid #e5e7eb;
        font-size: 0.8em;
        margin: 1rem auto;
        & strong{
            font-size: 2em;
            padding: 0 0.2rem;
            vertical-align: sub;
        }
        & span{
            color: #ef4444;
            display: block;
            font-size: 0.9em;
        }
    }
    & .btn{
        width: 50%;
        min-width: 500px;
        border-radius: 16px;
        border: 0;
        padding: 0.6rem 0;
        background: linear-gradient(#ff93af, #ff60a6);
        color: #fff;
        text-shadow: 0 2px #f74f99;
        font-weight: bold;
        font-size: 1.1em;
        letter-spacing: 0.2em;
        cursor: pointer;
        box-shadow: 0 10px 22px rgba(15, 23, 42, .12);
        transition: transform .06s ease, filter .15s ease;
        display: block;
        margin: 0 auto;
        &.inactive{
            background: #999;
        }
        &.wait{
            background: #999;
            pointer-events: none;
        }
    }
    & .btn:hover{ filter: brightness(.95); }
    & .btn:active{ transform: translateY(1px); }
    & .btn:disabled{
        background: #cbd5e1;
        cursor: not-allowed;
        box-shadow: none;
        filter: none;
    }
    & .deadline{
        margin: 1rem 0 0;
        font-size: 0.8em;
    }
    & .notes{
        margin-top: 0.6rem;
        font-size: 0.7em;
        color: #999;
        line-height: 1.7;
    }
    & .notes p{
        margin: 0;
    }
    & .notes p + p{
        margin-top: 4px;
    }
    & .result_txt{
        box-sizing: border-box;
        font-size: 1.5em;
        letter-spacing: 0.1em;
        animation: payon 5s ease-in-out infinite;
        animation-delay: 1s;
        transform-origin: center bottom;
        position: absolute;
        top: 5%;
        left: 50%;
        width: 54%;
        margin-left:-27%;
        color: #ef4444;
        font-weight: bold;
        text-align: center;
        display: inline-block;
        padding: 0.6rem 0;
        border-radius: 999px;
        background:linear-gradient(#fffef8, #fff7d9);
        border: 4px solid #ffd84f;
        box-shadow: 0 6px 0 #e5b947, 0 12px 22px rgba(140, 92, 20, .22), inset 0 3px 0 rgba(255,255,255,.9);        
        &::before {
            content: "";
            position: absolute;
            inset: 6px;
            border-radius: 999px;
            border: 2px solid rgba(255, 220, 90, .45);
            pointer-events: none;
        }
        & span{
            font-weight: bold;
            padding: 0 0.5rem;
        }
        & b{
            font-size: 1.2em;
        }
    }
    & .today_count{
        font-size: 0.9rem;
        margin: 0.8rem;
    }
    & .history_link{
        color: var(--link-txt);
        font-size: 0.8em;
        position: absolute;
        bottom: 2%;
        left: 50%;
        margin-left: -15%;
        background: #fff;
        padding: 1% 2%;
        border-radius: 16px;
        width: 30%;
    }
    & .prize-box{
        background:#fff;
        border-radius:16px;
        padding:2rem 4rem;
        max-width: 70%;
        margin:3.2rem auto 2rem;
        position: relative;
        & .prize-title{
            text-align: center;
            font-size: 1.2em;
            font-weight: bold;
            background: #FFE066;
            padding: 1rem 0;
            border-radius: 4px;
            letter-spacing: 0.2em;
            position: absolute;
            width: 80%;
            left: 50%;
            top: -1rem;
            margin: 0 0 0 -40%;
        }
        & .prize-list{
            list-style:none;
            padding:0;
            margin:1rem 0 3rem;
            display:flex;
            align-items:flex-end;
            justify-content: center;
            gap:2.4rem;
            & li{
                display:flex;
                flex-direction:column;
                align-items:center;
                justify-content:space-between;
                height:120px;
                &:last-child{
                    border-bottom:none;
                }
            }
            & img{
                width: 60px;
                height: 60px;
            }
        }
        & .point{
            font-size:1.5rem;
            font-weight:bold;
            color:#ff4d4d;
            line-height:1;
            display: block;
            &.gold{
                font-size:2.2rem;
            }
        }
        & .unit{
            font-size:1em;
            display: block;
            line-height:1;
            color:#ff4d4d;
            white-space: nowrap; 
        }
    }
    & .list{
        list-style: none;
        padding: 0;
        margin: 0;
        display: grid;
        gap: 1rem;
    }
    & .list li{
        font-size: 0.8em;
        & a {
            color: #658ed4;
        }
    }
}

@keyframes payon {
    0%   { transform: scale(1,1); }
    4%   { transform: scale(1.12,0.88); }
    7%   { transform: scale(0.96,1.06); }
    10%  { transform: scale(1.03,0.97); }
    13%  { transform: scale(1,1); }
    100% { transform: scale(1,1); }
}


/* side_column ------------------------------------------------ */
.side_column {
    flex: 0 0 var(--side_width);      
}

/* history ------------------------------------------------ */
.history{
    flex: 0 0 var(--main_width);
    max-width: var(--main_width);
    background: #fff;
    border-radius: 16px;
    padding: 2rem 2rem 4rem;
    box-sizing: border-box;
    margin-bottom: 4rem;
    & .history-head{
        display:flex;
        align-items:center;
        justify-content:space-between;
        margin-bottom: var(--space-m);
        & .history-title{
            color: #004087;
            font-size: 1.3em;
            font-weight: bold;
            letter-spacing: .02em;
            margin: 0;
        }
        & a{
            font-size: 0.7em;
            color: #658ed4;
            white-space:nowrap;
        }
    }
    & p{
        font-size: 0.7em;
        margin-bottom:  var(--space-m);
    }
    & .history-table{
        width:100%;
        border-collapse:collapse;
        background:#fff;
        border: #ccc 1px solid;
        font-size: 0.9em;

        & thead{
            background:#e7e7e7;
            color:#333;

            & th{
                padding:0.5em;
                font-weight:600;
                text-align:center;
                font-size: 0.9em;
            }
        }

        & tbody{

            & tr{
                border-top:1px solid #ccc;
            }
            & td{
                padding:0.8em;
                font-size:0.8em;
                text-align: left;
                &:first-child{
                    text-align: center;
                }
                &:last-child{
                    text-align:right;
                    padding-right: 3em;
                }
            }
            & .plus{
                font-weight:600;
                color:#22c55e;
            }
            & .minus{
                font-weight:600;
                color:#D32F2F;
            }
            & .empty{
                text-align:center !important;
                padding:3em 0 !important;
                font-size: 0.8em;
            }
        }
    }
    .pager{
        display:flex;
        align-items:center;
        justify-content:center;
        gap:0.75rem;
        margin:1rem auto 0;
        font-size: 0.6em;

        & .pager_list{
            display:flex;
            gap:0.5rem;
            list-style:none;
            padding:0;
            margin:0;
        }

        & .pager_btn,
        & .pager_num{
            display:inline-flex;
            align-items:center;
            justify-content:center;
            height:2rem;
            min-width:2rem;
            padding:0 1rem;
            border-radius:999px;
            background:#fff;
            border:1px solid #ccc; 
            box-shadow:0 2px 6px rgba(0,0,0,.06); 
            color:#2a2a2a;
            text-decoration:none;
            font-weight:700;
            transition: transform .12s ease, box-shadow .12s ease, background .12s ease;
        }

        & .pager_num{
            padding:0;
            width:2.375rem;
        }

        & .pager_btn:hover,
        & .pager_num:hover{
            transform: translateY(-1px); 
            box-shadow:0 4px 10px rgba(0,0,0,.10); 
        }

        & .pager_num.is-active{
            background:#2f5aa8;
            border-color:transparent;
            color:#fff;
            box-shadow:0 0.6px 16px rgba(0,0,0,.12); 
        }

        & .pager_btn.is-disabled{
            opacity:.45;
            pointer-events:none;
            box-shadow:none;
        }

        & .pager_dots{
            display:inline-flex;
            align-items:center;
            justify-content:center;
            height:2rem;
            min-width:2rem;
            color:#666;
        }

        @media (max-width:520px){ 

            gap:0.5rem;

            & .pager_btn{
            padding:0 0.5rem; 
            }

            & .pager_num{
            width:2rem; 
            height:2rem;
            }

            & .pager_dots{
            height:2rem;
            min-width:2rem;
            }

        }
    }
}

/* information ------------------------------------------------ */
.information{
    flex: 0 0 var(--main_width);
    max-width: var(--main_width);
    background: #fff;
    border-radius: 16px;
    padding: 2rem 2rem 4rem;
    box-sizing: border-box;
    margin-bottom: 4rem;
    & .info-head{
        display:flex;
        align-items:center;
        justify-content:space-between;
        margin-bottom: var(--space-m);
        & .info-title{
            color: #004087;
            font-size: 1.3em;
            font-weight: bold;
            letter-spacing: .02em;
            margin: 0 0 1rem;
        }
    }
    & .news-list{
        list-style:none;
        padding:0;
        margin:0;
        display:flex;
        flex-direction:column;
        gap:2rem;
        & .news-item{
            background:#fff;
            padding:1.5rem 1.5rem 2rem;
            border: #ccc 1px solid;
            border-radius: 8px;
        }
        & .news-date{
            display:block;
            font-size:0.65em;
            color:#777;
            margin-bottom:.25rem;
        }
        & .news-title{
            font-size:0.9rem;
            font-weight:bold;
            margin: 0 0 .5rem;
            padding: 0 0 1rem;
            border-bottom: 1px dashed #ccc;
        }
        & .news-body{
            margin:0;
            font-size: 0.8em;
            line-height:1.7;
            padding: 0.5rem 0 0;
            & img{
                display: block;
                margin: 1rem auto;
                max-width: 80%;
            }
            & a{
                color: #658ed4;
            }
            & span.red{
                color: #ff4d4d;
            }
            & strong{
                font-weight: bold;
                color: #222;
            }
        }
    }
    & .news-new{
        margin-left:.4rem;
        font-size:.7rem;
        font-weight:700;
        color:#ff4d4d;
        letter-spacing:.05em;
    }
}

/* about ------------------------------------------------ */
.about{
    & h2.title{
        color: #004087;
        font-size: 1.4em;
        font-weight: bold;
        letter-spacing: .1em;
        margin: 0 0 1rem;
        text-align: center;
    }
    & .ticket-status{
        & .msg-box{
            min-height: 3em;
            & .msg-chara{
                right: 0;
                bottom: -10px;
                width: 88px;
            }
        }
    }
    & .about_hero{
        & .about_hero_intro{
            & .about_hero_head{
                display: flex;
                align-items: flex-end;
                justify-content: center;
                gap: 1.5rem;
                margin-bottom: 1.5rem;

                & h1{
                    flex: 0 1 auto;
                    margin: 0;
                    & img{
                        height: 240px;
                        width: auto;
                        max-width: 100%;
                        margin: 0 auto 1rem;
                    }
                }
                & .side_column{
                    flex: 0 0 auto;
                    width: auto;
                }
            }
            & p{
                font-size: 0.9em;
                padding: 1rem 0;
                line-height: 2.4em;
                text-align: center;
                & b, strong{
                    font-weight: bold;
                    font-size: 1.2em;
                    padding: 0 0.2rem;
                }
            }
        }
    }
    & .about_steps{
        margin: 2rem auto;
        & .step_list{
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            gap: 1.4rem;
            margin-top: 2rem;
        }

        & .step_card{
            background: #fff;
            border-radius: 18px;
            padding: 1.5rem ;
            text-align: center;
            box-shadow: 0 8px 20px rgba(0,0,0,0.06);
            position: relative;
        }

        & .step_no{
            display: inline-block;
            background: #4ECDC4;
            color: #fff;
            font-weight: bold;
            font-size: 0.8em;
            padding: 0.3rem 2rem;
            border-radius: 999px;
            margin-bottom: 1rem;
        }

        & .step_title{
            font-size: 1.2em;
            font-weight: bold;
            color: #1b4b8f;
            margin-bottom: 0.8rem;
        }

        & .step_illust{
            margin: 0.8rem 0;
        }

        & .step_illust img{
            width: 100%;
            max-width: 160px;
            height: auto;
            margin: 0 auto;
        }

        & .step_text{
            font-size: 0.8em;
            line-height: 1.7;
            color: #555;
        }

        & .step_sub_text{
            font-size: 0.8em;
            color: #888;
            margin-top: 0.4rem;
        }
    }
    & .about_raffle{
        margin: 4rem auto;
        & .lottery_card{
            & .lottery_text{
                font-size: 0.9em;
                padding: 0 0 1rem 0;
                line-height: 2.4em;
                text-align: center;
                & b, strong{
                    font-weight: bold;
                    font-size: 1.2em;
                    padding: 0 0.2rem;
                }
                & img{
                    display: block;
                    max-width: 640px;
                    margin: 1rem auto;
                }
            }
            & a.btn{
                width: 50%;
                min-width: 500px;
                border-radius: 16px;
                border: 0;
                padding: 0.6rem 0;
                background: #FF6FAE;
                color: #fff;
                font-weight: bold;
                font-size: 1.1em;
                letter-spacing: 0.2em;
                cursor: pointer;
                box-shadow: 0 10px 22px rgba(15, 23, 42, .12);
                transition: transform .06s ease, filter .15s ease;
                display: block;
                margin: 1.4rem auto;
            }
        }
    }
    & .faq_list{
        display: flex;
        flex-direction: column;
        gap: 1.6rem;
        max-width: 728px;
        margin: 1.4rem auto 6em;
        & .faq_item{
            background: #fff;
            border-radius: 16px;
            padding: 2rem 2.4rem;
            box-shadow: 0 4px 10px rgba(0,0,0,0.05);
        }

        & .faq_q{
            list-style: none;
            font-weight: 600;
            cursor: pointer;
            position: relative;
            line-height:2;
            padding-left: 3rem;
            font-size: 0.9em;
        }

        & .faq_q::-webkit-details-marker{
            display:none;
        }

        & .faq_q::before{
            content:"Q";
            position:absolute;
            left:0;
            top:0;
            letter-spacing: 0;
            width:2rem;
            height:2rem;
            border-radius:8px;
            background:#4fb9b2;
            color:#fff;
            display:flex;
            align-items:center;
            justify-content:center;
            font-weight:bold;
            font-size:1em;
        }

        & .faq_q::after{
            content:"+";
            position:absolute;
            right:0;
            top:50%;
            transform:translateY(-50%);

            width:1.6rem;
            height:1.6rem;

            border-radius:50%;
            background:#e8edf5;

            display:flex;
            align-items:center;
            justify-content:center;

            font-size:1rem;
            font-weight:700;
            color:#4a5c7a;
        }

        & .faq_item[open] .faq_q::after{
            content:"−";
            background:#4fb9b2;
            color:#fff;
        }

        & .faq_a{
            margin-top:2rem;
            padding-left:3rem;
            position:relative;
            line-height:2;
            color:#555;
            font-size: 0.9em;
            & a{
                color: #658ed4;
            }
        }

        & .faq_a::before{
            content:"A";
            position:absolute;
            left:0;
            top:0;
            letter-spacing: 0;
            width:2rem;
            height:2rem;
            border-radius:8px;
            background:#FF6FAE;
            color:#fff;
            display:flex;
            align-items:center;
            justify-content:center;
            font-weight:bold;
            font-size:1em;
        }
    }
}