/* ==========================================
   HERO ULTRA RUMBLE TIMER
   style.css  Part1
========================================== */

:root{

    --theme:#2D8CFF;
    --theme2:#62B4FF;

    --bg:#05070c;

    --glass:rgba(18,22,30,.72);

    --border:rgba(255,255,255,.10);

    --text:#ffffff;

    --sub:#bfc7d4;

}

/* ---------- リセット ---------- */

*{

    margin:0;

    padding:0;

    box-sizing:border-box;

}

html{

    scroll-behavior:smooth;

}

body{

    background:var(--bg);

    color:var(--text);

    font-family:

        "Segoe UI",

        "Noto Sans JP",

        sans-serif;

    min-height:100vh;

    overflow-x:hidden;

}

/* ---------- 背景 ---------- */

#background{

    position:fixed;

    inset:0;

    z-index:-2;

    background-size:cover;

    background-position:center;

    background-repeat:no-repeat;

    filter:

        brightness(.18)

        blur(10px);

    transform:scale(1.12);

    transition:

        background-image .8s ease,

        filter .6s ease;

}

/* 黒オーバーレイ */

#background::after{

    content:"";

    position:absolute;

    inset:0;

    background:

    linear-gradient(

        rgba(0,0,0,.15),

        rgba(0,0,0,.70)

    );

}

/* ---------- カード ---------- */

.card{

    width:min(92%,900px);

    margin:35px auto;

    padding:28px;

    border-radius:28px;

    background:var(--glass);

    backdrop-filter:blur(18px);

    border:2px solid var(--theme);

    box-shadow:

        0 0 30px rgba(0,0,0,.45),

        0 0 20px var(--theme);

    transition:.35s;

}

.card:hover{

    box-shadow:

        0 0 40px var(--theme),

        0 0 60px rgba(0,0,0,.55);

}

/* ---------- タイトル ---------- */

h1{

    text-align:center;

    color:var(--theme);

    font-size:32px;

    letter-spacing:4px;

    margin-bottom:18px;

    text-shadow:

        0 0 12px var(--theme),

        0 0 28px var(--theme);

}

/* ---------- 時計 ---------- */

.clock{

    text-align:center;

    color:var(--sub);

    font-size:18px;

    margin-bottom:24px;

}

/* ---------- 現在ステージ ---------- */

.current-stage{

    display:flex;

    flex-direction:column;

    align-items:center;

}

.current-stage h2{

    color:var(--theme);

    font-size:36px;

    margin-bottom:18px;

    text-shadow:

        0 0 10px var(--theme);

}

/* ---------- マップ画像 ---------- */

.image-box{

    width:100%;

    overflow:hidden;

    border-radius:22px;

    border:3px solid var(--theme);

    background:#111;

    box-shadow:

        0 0 25px var(--theme);

}

.image-box img{

    width:100%;

    display:block;

    aspect-ratio:16/9;

    object-fit:cover;

    transition:

        transform .45s ease,

        opacity .45s ease;

}

.image-box:hover img{

    transform:scale(1.04);

}

/* ---------- 進行バー ---------- */

.progress-section{

    margin-top:26px;

}

.progress-text{

    display:flex;

    justify-content:space-between;

    margin-bottom:10px;

    font-size:17px;

}

.progress-bar{

    width:100%;

    height:20px;

    border-radius:999px;

    overflow:hidden;

    background:#181818;

    border:1px solid rgba(255,255,255,.08);

}

#progressFill{

    height:100%;

    width:0%;

    border-radius:999px;

    background:

    linear-gradient(

        90deg,

        var(--theme),

        var(--theme2)

    );

    box-shadow:

        0 0 15px var(--theme);

    transition:

        width .8s ease;

}

/* ---------- カウントダウン ---------- */

.countdown{

    text-align:center;

    margin-top:28px;

}

.countdown h3{

    color:var(--sub);

    margin-bottom:8px;

}

#countdown{

    font-size:52px;

    font-weight:bold;

    color:var(--theme);

    text-shadow:

        0 0 16px var(--theme);

}

#nextStage{

    margin-top:12px;

    font-size:22px;

}
/* ==========================================
   PART 2
   Schedule / Animation / Responsive
========================================== */

/* ---------- スケジュール ---------- */

.schedule{

    margin-top:34px;

}

.schedule h2{

    color:var(--theme);

    font-size:24px;

    text-align:center;

    margin-bottom:18px;

    text-shadow:0 0 10px var(--theme);

}

.schedule-list{

    max-height:340px;

    overflow-y:auto;

    border-radius:18px;

    background:rgba(255,255,255,.05);

    border:1px solid rgba(255,255,255,.08);

}

/* ---------- 予定 ---------- */

.schedule-item{

    display:flex;

    justify-content:space-between;

    align-items:center;

    gap:15px;

    padding:15px 18px;

    border-bottom:1px solid rgba(255,255,255,.06);

    transition:.25s;

}

.schedule-item:last-child{

    border-bottom:none;

}

.schedule-item:hover{

    background:rgba(255,255,255,.08);

}

.schedule-item span:first-child{

    color:#d6d6d6;

    font-size:15px;

}

.schedule-item span:last-child{

    color:white;

    font-weight:bold;

}

/* ---------- 現在の予定 ---------- */

.schedule-item.active{

    background:

        linear-gradient(

            90deg,

            rgba(45,140,255,.28),

            rgba(45,140,255,.08)

        );

    border-left:6px solid var(--theme);

    box-shadow:

        inset 0 0 15px rgba(255,255,255,.08),

        0 0 18px var(--theme);

}

/* ---------- スクロールバー ---------- */

.schedule-list::-webkit-scrollbar{

    width:9px;

}

.schedule-list::-webkit-scrollbar-track{

    background:#111;

}

.schedule-list::-webkit-scrollbar-thumb{

    background:var(--theme);

    border-radius:999px;

}

/* ---------- フェード ---------- */

.card{

    animation:fadeIn .7s ease;

}

@keyframes fadeIn{

    from{

        opacity:0;

        transform:translateY(25px);

    }

    to{

        opacity:1;

        transform:translateY(0);

    }

}

/* ---------- ステージ名 ---------- */

.current-stage h2{

    animation:glow 2s infinite alternate;

}

@keyframes glow{

    from{

        text-shadow:

            0 0 10px var(--theme);

    }

    to{

        text-shadow:

            0 0 18px var(--theme),

            0 0 32px var(--theme);

    }

}

/* ---------- カードの光 ---------- */

.card::before{

    content:"";

    position:absolute;

    inset:0;

    border-radius:28px;

    pointer-events:none;

    background:

        linear-gradient(

            135deg,

            rgba(255,255,255,.10),

            transparent 30%

        );

}

/* カードを基準にする */

.card{

    position:relative;

    overflow:hidden;

}

/* ---------- スマホ ---------- */

@media(max-width:700px){

    .card{

        width:95%;

        margin:15px auto;

        padding:18px;

    }

    h1{

        font-size:23px;

        letter-spacing:2px;

    }

    .current-stage h2{

        font-size:28px;

    }

    #countdown{

        font-size:40px;

    }

    #nextStage{

        font-size:18px;

    }

    .schedule-item{

        flex-direction:column;

        align-items:flex-start;

        gap:6px;

    }

}

/* ---------- 超小型スマホ ---------- */

@media(max-width:420px){

    h1{

        font-size:19px;

    }

    .current-stage h2{

        font-size:23px;

    }

    #countdown{

        font-size:34px;

    }

}

/* ---------- テーマカラー切替 ---------- */

body,
.card,
.image-box,
.current-stage h2,
#countdown,
h1{

    transition:

        color .5s,

        border-color .5s,

        box-shadow .5s,

        background-color .5s;

}