html{scroll-behavior: smooth;}

*{
    font-family: "Noto Serif JP", serif;
    font-optical-sizing: auto;
    font-weight: 400;
    font-style: normal;
    color: #fff;
    line-height: 1.5em;
}

.pc{display: block;}
.sp{display: none;}

.inner {
    width: 1200px;
    margin: 0 auto;
    box-sizing: border-box;
}

.headWrap {
    padding: 20px 50px;
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.headBtnWrap {
    display:flex;
    gap: 30px;
}

.headBtn {
    display: flex;
    flex-direction: column;
    justify-content: center;
    position: relative;
    font-size: 15px;
    font-weight: 500;
    text-align: center;
    width: 320px;
    padding: 0.75em 1em;
    transition: .3s;
}

.headBtn:hover{
    opacity:.5;
}

.headBtn span{
    position: absolute;
    font-size: 20px;
    right: 5px;
    top: calc(50% - 10px);
}

.headBtn span.bold{
    position: static;
    font-size: 15px;
    display: block;
    font-weight: bold;
}

.headBtn.tfm {
    background: #20396f;
}

.headBtn.oji {
    background: #127152;
}

header.fixed {
    position: fixed;
    top:0;
    width:100%;
    background:#ffffffd1;
    animation: fadeIn .3s cubic-bezier(0.33, 1, 0.68, 1) forwards;
    box-shadow: 0 0 10px 1px #0000004f;
    z-index: 1;
}

header.fixed + #top {
    margin-top:100px;
}

@keyframes fadeIn {
  0% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}


#top img {
    width: 100%;
}

#btnBox {
    background: #000011;
    padding: 50px 0;
}

#btnBox .inner {
    display: flex;
    justify-content: center;
    gap: 50px;
}

#btnBox a.btn {
    width: 30%;
    text-align: center;
    font-size: 18px;
    padding: 15px;
    display: flex;
    flex-direction: column;
    transition:.3s;
}

#btnBox a.btn:hover{
    opacity: .5;
}

#btnBox a .bold {
    display: block;
    font-weight: 700;
}

#btnBox a.tfm {
    background: #20396f;
}

#btnBox a.oji {
    background: #127152;
}

#btnBox a.graduation314-315{
    background:#7f331f;
}

.ticketBtn span.small {
    font-size: 14px;
    position: static;
}

#btnBox a .material-symbols-sharp {
    margin-top: 15px;
}

.title-wrap {
    text-align:center;
    padding: 50px 0;
    border-top: 10px solid;
    border-image: linear-gradient(to right, #EFC825, #917500) 1;
}

#tfm .title-wrap {
    background: linear-gradient(#20396f 75%, #102044);
}

#tfm .detail-wrap {
    background: #102044;
}

#oji .title-wrap {
    background: linear-gradient(#127152 75%, #254539);
}

#oji .detail-wrap {
    background: #254539;
}

.title-wrap .star {
    width: 70px;
    margin: 15px 0;
}

h2 {
    font-size: 28px;
}

h2 span {
    font-weight: 700;
    display: block;
}

.title-wrap .date {
    font-size: 22px;
}

.date span {
    font-size: 1.25em;
    font-weight: 700;
    margin: 0.1em;
}

section.photo {
    text-align: center;
}

.detail-wrap section {
    margin-bottom: 50px;
}

.detail-wrap section:last-child {
    margin-bottom: 0;
}

h3 img {
    width: 15px;
    margin-right: 10px;
}

h3 {
    display: flex;
    font-size: 26px;
    font-weight: 500;
    padding-bottom: 7px;
    margin-bottom: 15px;
    width: 100%;
    border-bottom: 1px solid #fff;
}

.indent {
    margin-left: 25px;
}

.player li {
    font-size: 20px;
    margin-bottom: 10px;
}

.player li span {
    font-size: 1.2em;
    margin-left: 0.75em;
    font-weight: 700;
}

.playlist li {
    margin-bottom: 30px;
}

.playlist h4 {
    font-size: 22px;
    margin-bottom: 7px;
}

.playlist p {
    font-size: 18px;
}

section.catch {text-align: center;}

section.catch h3 {
    display: block;
    border: none;
    line-height: 1.75em;
}

a.access-link {
    color: #fbf4cf;
    text-decoration: underline;
    font-weight: bold;
    transition: .3s;
}

a.access-link:hover {
    opacity: .5;
}

.map-col {
    display: flex;
    gap: 30px;
    margin-top: 30px;
}

.map-col div {
    width: calc(50% - 15px);
}

iframe.map {
    width: calc(50% - 15px);
    height: 500px;
}

.stage-img {
    height: 500px;
}

.stage-img img {width: 100%;height: 100%;object-fit: cover;}

section p {
    font-size: 22px;
}

span.small {
    font-size: 0.75em;
}

.access span.small {
    display: block;
    line-height: 1.75em;
}

.detail-wrap {
    padding-bottom: 75px;
}

.ticketBtnBox {
    display: flex;
    justify-content: center;
    flex-direction: column;
    align-items: center;
    gap: 15px;
}

.ticketBtn {
    position: relative;
    background: #fff;
    border: 1px solid #fff;
    font-size: 22px;
    font-weight: 600;
    width: 630px;
    padding: 20px;
    text-align: center;
    transition: .3s;
}

.ticketBtn span {
    font-size: 28px;
    font-weight: 600;
    position: absolute;
    top: calc(50% - 14px);
    right: 20px;
}

#tfm .ticketBtn,#tfm .ticketBtn span {
    color: #102044;
}

#tfm .ticketBtn:hover {
    background: none;
    color: #fff;
}

#tfm .ticketBtn:hover span {
    color: #fff;
}

#oji .ticketBtn,#tfm .ticketBtn span {
    color: #254539;
}

#oji .ticketBtn:hover {
    background: none;
    color: #fff;
}

#oji .ticketBtn:hover span {
    color: #fff;
}

#graduation314-315 h2 {
    font-weight: 700;
}

#graduation314-315 h2 span {
    display: inline;
    font-weight: 500;
}

#graduation314-315 .ticketBtn,#graduation314-315 .ticketBtn span {
    color: #51180C;
}

#graduation314-315 .ticketBtn:hover {
    background: none;
    color: #fff;
}

#graduation314-315 .ticketBtn:hover span {
    color: #fff;
}

#graduation314-315 .title-wrap {
    background: linear-gradient(#7F331F 75%, #51180C);
}

#graduation314-315 .detail-wrap {
    background: #51180C;
}

.dateBox .date {justify-content: center;align-items: baseline;width: auto;border: none;color: #FFE299;padding: 0;margin-bottom: 5px;}

.dateBox .date span {
    color: #FFE299;
}

.dateBox {
    text-align: center;
    font-size: 22px;
}

.dateBox .star{
    width:70px;
    margin:30px 0;
}

.detailBox {
    background: #79453A;
    border: 1px solid #A08940;
    padding: 50px;
    box-shadow: 0 0 11px 3px #00000052;
    margin-bottom:50px;
}

.inner.detail-inner {width: 1000px;}

.detail-wrap .detailBox section {
    text-align: center;
}

.detail-wrap .detailBox h4 {
    font-size: 26px;
    font-weight: 600;
    margin-bottom:10px;
}

section.box316 {
    background: #5B2C24;
    padding: 30px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
}

.box316 .left{
    width:100%;
}

.box316 .right{
    width:100%;
    text-align: left;
}
    
h5 {
    display: flex;
    font-size: 26px;
    font-weight: 500;
    padding-bottom: 7px;
    margin-bottom: 15px;
    width: 100%;
    border-bottom: 1px solid #fff;
}

h5 img {
    width: 15px;
    margin-right: 10px;
}

footer {
    background: #000;
    text-align: center;
    padding: 2em 1em;
}

footer p {
    font-family: "Noto Sans JP", serif;
    font-size: 18px;
    line-height: 1.75em;
}

.player.no-name li span {
    margin-left: 0;
}

p.hall {
    font-size: 22px;
    margin-top: 15px;
}

@media only screen and (max-width: 1200px){
    .inner {
        width: 100%;
        padding: 0 35px;
    }
    
    #btnBox {
        padding: 30px;
    }
    
    #btnBox a.btn {
        width: calc(50% - 25px);
        font-size: 16px;
        padding: 0.5em;
    }
    
    #btnBox a .material-symbols-sharp {
        margin-top: 5px;
    }
    
    h2 {
        font-size: 24px;
    }
    
    .title-wrap .star {
        width: 60px;
    }
    
    .title-wrap .date {
        font-size: 20px;
    }

    h3 {
        font-size: 22px;
    }
    
    section p {
        font-size: 20px;
    }
    
    .player li {
        font-size: 16px;
    }
    
    .playlist h4 {
        font-size: 18px;
    }
    
    .playlist p {
        font-size: 16px;
    }
    
    .ticketBtn {
        font-size: 20px;
    }
    
    .dateBox {
        font-size: 20px;
    }
    
    .dateBox .star {
        width: 60px;
    }
    
    .detail-wrap .detailBox h4 {
        font-size: 22px;
    }

    h5 {
        font-size: 22px;
    }

    footer p {
        font-size: 16px;
    }

    p.hall {
        font-size: 20px;
    }

}

@media only screen and (max-width: 1000px){
    .inner.detail-inner {
        width: 100%;
    }

    .headWrap {
        padding: 20px 30px;
    }
    
    .logo {
        width: 30vw;
        margin-right: 30px;
    }
    
    .logo img {
        width: 100%;
    }
    
    .headBtnWrap{
        gap: 15px;
    }
    
    .headBtn {
        width: 30vw;
        padding: 0.5em 0.75em;
        font-size: 14px;
    }
    
    .headBtn span {
        right: 0;
    }
    
    .headBtn span.bold {
        font-size: 14px;
    }
}

@media only screen and (max-width: 726px){
    .pc{display: none;}
    .sp{display: block;}

    .headBtnWrap {
        position: fixed;
        bottom: 0;
        left: 0;
        width: 100%;
        gap: 0;
        box-shadow: 0 0 10px 1px #0000004f;
        z-index: 1;
    }
    
    .headBtn {
        width: 50%;
        font-size: 12px;
        padding: 0.75em;
    }
    
    .headWrap {
        padding: 3.5vw;
    }
    
    .logo {
        width: 100%;
        margin: 0;
        text-align: center;
    }
    
    .logo img {
        max-width: 220px;
    }
    
    header.fixed + #top {
        margin-top:calc(7vw + 34px);
    }
    
    section.photo img {
        width: 100%;
    }

    .inner {
        padding: 0 5vw;
    }
    
    #btnBox .inner {
        flex-direction: column;
        gap: 5vw;
    }
    
    #btnBox a.btn {
        width: 100%;
        font-size: 14px;
    }
    
    #btnBox a .material-symbols-sharp {
        font-size: 16px;
    }
    
    h2 {
        font-size: 20px;
    }
    
    .title-wrap .star {
        width: 50px;
    }
    
    .title-wrap .date {
        font-size: 18px;
    }
    
    .title-wrap {
        padding: 10vw 0;
    }
    
    h3{
        font-size:20px;
    }
    
    h3 img {
        width: 10px;
        margin-right: 7px;
    }
    
    .indent {
        margin-left: 17px;
    }
    
    .player li {
        font-size: 14px;
    }
    
    .playlist h4 {
        font-size: 16px;
    }
    
    .playlist p {
        font-size: 14px;
    }
    
    section p {
        font-size: 16px;
    }
    
    iframe.map {
        width:100%;
        height: 300px;
    }
    
    .ticketBtn {
        width: 100%;
        font-size: 16px;
        padding: 1em;
    }
    
    .ticketBtn span {
        font-size: 22px;
        top: calc(50% - 11px);
    }
    
    .detailBox {
        padding: 5vw;
    }
    
    .dateBox .star {
        width: 50px;
        margin: 15px 0;
    }
    
    .dateBox {
        font-size: 18px;
    }
    
    .detail-wrap section {
        margin-bottom: 30px;
    }
    
    .detail-wrap .detailBox h4 {
        font-size: 18px;
    }
    
    section.box316 {
        padding: 3vw;
        flex-direction: column;
    }
    
    .box316 .left,.box316 .right {
        width: 100%;
    }
    
    h5{
        font-size: 18px;
    }
    
    h5 img {
        width: 10px;
        margin-right: 7px;
    }
    
    section.box316 .indent {
        margin-left: 15px;
    }
    
    .detail-wrap {
        padding-bottom: 50px;
    }
    
    footer p {
        font-size: 14px;
    }

    p.hall {
        font-size: 18px;
    }

    .map-col {
        flex-direction: column;
    }

    .map-col div {
        width: 100%;
    }

    .stage-img {
        height: auto;
    }

    dl.credits__list {
        flex-direction: column;
        align-items: center;
        gap: 15px;
    }
}

h3 img.ticketTitle {
    width: 4em;
    height: auto;
    margin-right: 0;
}

img.ticket-d {
    max-width: 225px;
}

/*slide*/
section.photo{
    display:flex;
    justify-content:center;
}

.photoContainer {
    position: relative;
    width: 75%;
    aspect-ratio: 3 / 2;
}
.slide {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    opacity: 0;
    transition: opacity 1s ease-in-out;
}
.slide img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.active {
    opacity: 1;
}

table {
  margin: 20px auto;
}
.tbl-r02 th {
  background: #254539;
  border: solid 1px #ccc;
  color: #fff;
  padding: 10px;
}
.tbl-r02 td {
  border: solid 1px #ccc;
  padding: 10px;
  border: solid 1px #ccc;
  color: #fff;
}
 
@media screen and (max-width: 726px) {
    .photoContainer {
        width: 100%;
    }
}

@media screen and (max-width: 640px) {
  .last td:last-child {
    border-bottom: solid 1px #ccc;
    width: 100%;
  }
  .tbl-r02 .last td:last-child {
    width: auto;
  }
  .tbl-r02-wrap {
    width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
  .tbl-r02 {
    width: 100%;
    min-width: 1080px;
  }
  .tbl-r02 th,
  .tbl-r02 td {
    display: table-cell;
    width: auto;
  }
}

.tbl-r03 th {
  background: #102044;
  border: solid 1px #ccc;
  color: #fff;
  padding: 10px;
}
.tbl-r03 td {
border: solid 1px #ccc;
  padding: 10px;
  border: solid 1px #ccc;
  color: #fff;
}

td.kyouen {
    font-size: 0.85em;
    width: 15%;
}

@media screen and (max-width: 640px) {
  .last td:last-child {
    border-bottom: solid 1px #ccc;
    width: 100%;
  }
  .tbl-r03 .last td:last-child {
    width: auto;
  }
  .tbl-r03-wrap {
    width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
  .tbl-r03 {
    width: 100%;
    min-width: 1080px;
  }
  .tbl-r03 th,
  .tbl-r03 td {
    display: table-cell;
    width: auto;
  }
}

.tbl-r04 th {
  border: solid 1px #ccc;
  color: #fff;
  padding: 10px;
}
.tbl-r04 td {
border: solid 1px #ccc;
  padding: 10px;
  border: solid 1px #ccc;
  color: #fff;
}

@media screen and (max-width: 640px) {
  .tbl-r04 .last td:last-child {
    width: auto;
  }
  .tbl-r04-wrap {
    width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
  .tbl-r04 {
    width: 100%;
    min-width: 1080px;
  }
  .tbl-r04 th,
  .tbl-r04 td {
    display: table-cell;
    width: auto;
  }
}

/*share*/
.share {
    margin-top: 15px;
}

.share ul {
    display: flex;
    justify-content: center;
    gap: 20px;
}

.share a,.share button{
    opacity:1;
    transition:.3s;
}

.share a:hover,.share button:hover{
    opacity:.5;
}

/*0307*/
.player h5 {
    display: inline-block;
    width: auto;
    font-size: 14px;
    border: 0;
    padding: 0.1em 1em;
    color: #6f352c;
    background: #ffffff;
    font-weight: bold;
    margin-bottom: 7px;
}

.part {
    background: #6f352c;
    margin-bottom: 15px;
    padding: 1.5em;
}

.player-box h6 {
    font-size: 22px;
    font-weight:bold;
}

.player-box h6 span {
    margin-left: 1em;
}

.player-box {
    margin-bottom: 1.5em;
}

.player .player-box:last-child{
    margin-bottom:0;
}

.player-box p {
    font-size: 16px;
}

.box316 .player .part {
    padding: 0;
    background: none;
    margin-bottom: 2em;
}

.box316 .player .part:last-child{
    margin:0;
}

.box316 .player h5{
    margin-bottom: 5px;
}

.short {
    text-align: center;
}

a.shortBtn {
    display: inline-flex;
    border: 1px solid #fff;
    background: #fff;
    color: #102044;
    padding: 0.5em 1.5em;
    font-weight: bold;
    font-size: 22px;
    align-items: center;
    transition:.3s;
}

a.shortBtn span {
    color: #102044;
    transition:.3s;
    margin-left:1em;
}

a.shortBtn:hover{
    background:none;
    color:#fff;
}

a.shortBtn:hover span{
    color:#fff;
}

/*26*/
dl.credits__list {
    display: flex;
    gap: 30px;
    justify-content: center;
}

.credits__row dd,.credits__row dt {
    display: inline;
    font-size: 1.2em;
}

.credits__row {
    margin-top: 0.5em;
}

img.credits__logo {
    width: 125px;
}

.credits__row ul {
    display: flex;
    margin-top: 0.25em;
}

.credits__row ul li {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.25em;
    text-align: center;
    font-size:16px;
}
@media screen and (max-width: 450px) {
    .credits__row ul {
        flex-direction: column; 
    }
}

/* 共通：はみ出さない */
.flyer__img{
  display:block;
  max-width:100%;
  height:auto;
  margin:0 auto;
}

/* PCだけ少し小さく（例：最大 860px） */
@media (min-width: 768px){
  .flyer__img{
    max-width: 860px;  /* ←ここを 700px / 800px / 900px など好みで調整 */
    width: 100%;
  }
}
/* 出演者・曲目など 詳細ボタン */
a.detailBtn{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .6em;
  margin-top: 18px;
  padding: 14px 18px;
  border: 1px solid #fff;
  border-radius: 999px;
  background: rgba(255,255,255,.12);
  color: #fff;
  font-size: 18px;
  font-weight: 700;
  text-decoration: none;
  transition: .3s;
  max-width: 100%;
}

a.detailBtn span.material-symbols-sharp{
  color: #fff;
  font-size: 22px;
  position: static; /* 既存の .headBtn span の absolute を受けないように */
}

a.detailBtn:hover{
  background: rgba(255,255,255,.25);
  opacity: 1; /* hoverで薄くしすぎない */
}

@media only screen and (max-width: 726px){
  a.detailBtn{
    width: 100%;
    font-size: 16px;
    padding: 12px 14px;
  }
  a.detailBtn span.material-symbols-sharp{
    font-size: 20px;
  }
}
/* 詳細ボタン：中央寄せ */
.centerBtn{
  text-align: center;
}