/* 共通部分 */
h1, h2, h3, p, span {
    cursor: default;
}
body {
    font-family: "Noto Sans JP" ,"メイリオ","Meiryo","MS Pゴシック","MS Pgothic","Osaka","sans-serif","Helvetica", "Helvetica Neue", "Arial", "Verdana";
}
section, footer {
    padding: 120px 12%;
}
.br-sp {
    display: none;
}
.btn-area {
    width: max-content;
}
/* ボタンの共通クラス */
.btn {
    display: block;
    position: relative;
    top: 3px;
    padding: 12px 0;
    border-radius: 5px;
    color: #fff;
    text-align: center;
    text-decoration: none;
    cursor: pointer;
}
/* ボタンに重なる影部分 */
.btn:after {
    content: "";
    position: absolute;
    top: -3px;
    left: -3px;
    z-index: 1;
    width: 100%;
    height: 100%;
    border-radius: 5px;
    transition: .2s;
    transform: translate3d(0,0,0);
}
/* ボタンの文字 */
.btn-span {
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    top: -3px;
    z-index: 2;
    transition: .2s;
    cursor: pointer;
    color: #041B42;
    font-weight: 600;
}
.btn-icon {
    width: max-content !important;
    height: 24px; /* アイコンの高さ */
    margin-left: 8px; /* アイコンとテキストの間の余白 */
    vertical-align: middle;
    position: relative;
    top: 1px;
}
/* 白いボタン */
.btn-white {
    background: #0A347F;
}
.btn-white:after {
    background: #fff;
    border: 1px solid #0A347F;
}
/* 黄色いボタン */
.btn-yellow {
    background: #BE9C00;
}
.btn-yellow:after {
    background: #FDD001;
}
.btn-span:after {
    content: "";
    position: absolute;
    top: 50%;
    right: 30px;
    width: 8px;
    height: 8px;  
    margin: -4px 0 0 0;
    transform: translateX(5px) rotate(45deg);
    transition: .3s .1s;
}
/* マウスオーバー時 */
.btn:hover {
    top: 3px;
}
.btn:hover:after {
    top: 0;
    left: 0;
}
.btn-yellow:hover:after {
    background: #FDD001;
}
.btn-white:hover:after {
    background: #fff;
}
.btn:hover span {
    top: 0;
    left: 0;
}
.btn:hover span:after {
    right: 27px;
}
.report-btn {
    width: max-content;
    margin: 16px 0;
    padding: 12px 48px;
}
.under-line-yellow {
    border-bottom: 5px solid #FDD001;
}
/* -- 各セクションのタイトル -- */
h2 {
    font-size: 56px;
    font-weight: 500;
    text-align: center;
}
.title {
    position: relative;
}
/* タイトル文字 */
.title h2 {
    position: absolute;
    top: 0px;
    line-height: 110px;
    width: 100%;
}
/* 背景色が濃い色の場合はタイトル文字色は白 */
.cl-white {
    color: #ffffff;
}
/* 各セクションのタイトルに重なる薄い文字 */
.title-bg {
    width: 100%;
    opacity: 0.15;
    font-size: 100px;
    font-weight: 500;
    line-height: 110px;
    letter-spacing: 0.02em;
    text-align: center;
    color: #FDD001;
}
/* 各セクションタイトル下の横線 */
.title h2::after{
    position: absolute;
    content: "";
    width: 100px;
    bottom: 0px;
    left: 50%;
    transform: translateX(-50%);
    border-bottom: 4px solid #041B42;
}
/* 背景色が濃い色の場合は各セクションタイトル下の横線は白 */
.feature .title h2::after, .review .title h2::after {
    border-color: #ffffff;
}
/* 横線の下の小さい文字 */
.sm-title {
    display: block;
    font-size: 20px;
    line-height: 30px;
    letter-spacing: 0.1em;
    text-align: center;
    margin-top: 24px;
}
/* 各セクションのコンテンツを囲んだdiv */
.contents-wrap {
    margin-top: 60px;
}
/* アルファベットの文字間隔 */
.alphabet {
    letter-spacing: 0.1em; 
}
/* firstview全体 */
.head {
    color: #ffffff;
    background: linear-gradient(rgba(4, 27, 66, 0.4), rgba(4, 27, 66, 0.4)),url("../img/header_bg_img.png");
    background-repeat: no-repeat;
    background-size: 100vw 100%; 
    height: 100vh;
    font-weight: 500;
}
/* header部分 */
header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 20px 12%;
    font-weight: 500;
    background-color: #041B42;
    position: sticky;
    top: 0px;
    z-index: 999;
    color: #ffffff;
}
/* 画面幅狭くなった時のハンバーガーアイコン
　 初期は非表示*/
.three-lines-icon {
    display: none;
}
header ul {
    display: flex;
}
header li {
    display: flex;
    align-items: center;
    margin-left: 30px;
}
/* headerメニューリンク */
.menu-list {
    line-height: 30px;
}
.menu-list:hover {
    position: relative; 
    top: 1px;
    left: 1px; 
}
.inq {
    padding: 6px 24px;
    white-space: nowrap;
}
.catchcopy {
    padding: 150px 12%;
}
.total-prize-money {
    font-weight: 700;
    font-size: 24px;
    padding: 16px 60px;
    border: 1px solid #fff;
    width: max-content;
    margin-bottom: 32px;
    background-color: rgba(237, 239, 240, 0.1);
}
h1 {
    font-size: 70px;
    letter-spacing: 0.05em;
    margin-bottom: 10px;
}
.catchcopy ul {
    padding: 50px 0 50px 25px;
    list-style-type: disc;
}
.catchcopy li {
    line-height: 43.2px;
    font-size: 24px;
    color: #FDD001;
}
.schedule {
    color: #ffffff;
}
.catchcopy .btn {
    padding: 12px 40px;
    font-size: 24px;
    letter-spacing: 0.1em;
}

/* -- RSS墓損の特徴 -- */
.feature {
    background: linear-gradient(rgba(10, 52, 127, 0.6), rgba(10, 52, 127, 0.6)), url("../img/feature-bg.png");
    background-size: cover;
    background-position: center;
    background-attachment: fixed;
}
.features-dl-wrap {
    display: flex;
    flex-wrap: wrap;
    gap: 24px;
    margin: 60px auto 0;
}
.feature dl {
    width: 30%;
    background-color: #fff;

}
.feature dd p {
    font-weight: 500;
}
.feature dl figure {
    height: 126px;
}
.dotted-line {
    border: none;
    border-top: 2px dotted #2c3e50;
    height: 1px;
    margin: 0 20px;
}
/* 賞金内訳を見る */
.toggle-prize-btn {
    font-weight: 700;
    color: #041B42;
    display: block;
    width: max-content;
    margin: 0 auto;
    padding: 16px 0 24px;
}
.prize-details {
    padding: 0 20px 16px;
}
.prize-details p {
    color: #041B42;
    font-weight: 700 !important;
    font-size: 18px;
    margin-bottom: 8px;
}
 /* 賞金内訳 */
.prize-table td {
  padding: 5px 0; /* 上下の余白 */
}
/* 金額のセル（2番目のtd）に適用 */
.prize-table td:nth-child(2) {
  text-align: right; /* テキストを右揃えにする */
  padding-left: 2em; /* 左側のセルとの間に余白を作る */
}

/* テーマ */
/* テーマ部分背景画像(審査基準部分でも使う) */
.theme-detail {
    background: linear-gradient(rgba(10, 52, 127, 0.6), rgba(10, 52, 127, 0.6)), url("../img/theme_detail_bg_img.png");
    background-size: cover;
}
.theme {
    background-color: #EDEFF0;
}
.theme-des {
    font-size: 18px;
    line-height: 32.4px;
    letter-spacing: 0.1em;
    text-align: center;
    margin-bottom: 60px;
}
.theme h3 {
    margin-top: 60px;
    font-size: 32px;
    font-weight: 500;
    line-height: 48px;
    letter-spacing: 0.05em;
    text-align: center;
}
/* テーマ部分：Xへのリンク */
.theme-x {
    display: flex;
    align-items: center;
    width: max-content;
    margin: 16px auto 0 auto;
    cursor: pointer;
}
.theme-x p {
    font-size: 24px;
    margin-left: 16px;
    cursor: pointer;
}
/* -- ハッカソンとは -- */
.dl-part {
    margin: 60px auto 30px auto;
    display: flex;
}
/* 画像を左に配置する場合は順番を入れ替える */
.r-rev {
    flex-direction: row-reverse;
}
.dl-part figure, .dl-part div, .dl-part dl {
    width: 50%;
}
.dl-part img {
    width: 100%;
}
.dl-part dl, .comp-inf dl div {
    margin: 0 24px;
    font-size: 32px;
    color: #041B42;
    line-height: 48px;
    letter-spacing: 0.05em;
}
.dl-part dd {
    margin-top: 16px;
    font-size: 18px;
    line-height: 32.4px;
    letter-spacing: 0.1em;
}

/* -- 審査基準 -- */
.st-title {
    font-size: 18px;
    letter-spacing: 0.1em;
    text-align: center;
    margin: 60px 0 40px;
}
.standards {
    display: flex;
    flex-wrap: wrap;
    gap: 32px;
}
.standards dl {
    width: calc(50% - 18px);
    background-color: #EDEFF0;
    border-radius: 5px;
    padding: 30px 40px;
}
.standards dt {
    width: max-content;
    margin: 0 auto;
    color: #2b2b2b;
    font-size: 32px;
    font-weight: 500;
    line-height: 48px;
    letter-spacing: 0.05em; 
}
.standards dd {
    margin-top: 20px;
    font-size: 18px;
    line-height: 32.4px;
    letter-spacing: 0.1em;
}
/* -- 参加資格 -- */
.qualifi {
    background: #EDEFF0;
}
.qualifi ul {
    margin: 80px auto 0 auto;
    display: grid;
    grid-template-rows: 50% 50%;
    grid-template-columns: 50% 50%;
    justify-items: center;
}
.qualifi ul li {
    position: relative;
    margin: 40px 0 40px 0;
    width: 100%;
}
.qualifi ul li div {
    background-color: #ffffff;
    border-radius: 5px;
    height: 170px;
    width: 90%;
    padding: 20px 30px;
    margin: 0 auto; 
    box-shadow: 3px 2px 8px 0px #2C2C2C1A;
}
.condi {
    font-size: 18px;
    font-weight: 500;
    line-height: 32.4px;
    letter-spacing: 0.1em;
    display: inline;
}
.condi-det {
line-height: 28.8px;
letter-spacing: 0.1em;
}
/* -- 参加概要 -- */
.out {
    display: flex;
    flex-wrap: wrap;
    gap: 16px;
    margin: 60px auto 0px auto;
}
.feature dl,
.outline dl {
    min-width: 320px;
    max-width: 450px;
    box-shadow: 3px 2px 8px 0px #2C2C2C1A;
    border-radius: 4px;
    flex-grow: 1;
    margin: 0 auto;
}
.outline dl {
    width: 32%;
}
.feature dt,
.outline dt {
    margin: 16px auto;
    text-align: center;
    font-size: 24px;
}
.feature dl figure,
.outline dl figure {
    background-color: #EDEFF0;
    position: relative;
}
.outline dl figure {
    height: 140px;
}
.feature dl img,
.outline dd img  {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}
.feature-number,
.outline-number {
    font-weight: 500;
    font-size: 20px;
}
.feature-title,
.outline-title {
    font-weight: 700;
    font-size: 24px;
    margin: 16px 0 24px;
}
.outline .date {
    margin: 0 16px;
    padding: 30px 0 16px;
    text-align: center;
    font-weight: 500;
    line-height: 28.8px;
    letter-spacing: 0.05em;
    border-bottom: 1px solid #041B42;
    min-height: 6.5625rem; 
}
.out-det {
    line-height: 32.4px;
    letter-spacing: 0.1em;
    padding: 16px 20px;
    color: #2b2b2b;
}
/* -- 参加資格 -- */
.rule-wrap {
    width: 100%;
    display: flex;
    flex-wrap: wrap;
    gap: 16px;
    justify-content: space-between;
    margin-bottom: 30px;
}
.qualification-wrap {
    display: flex;
    flex-wrap: wrap;
    gap: 24px;
}
.qualification, .precaution {
    display: flex;
    align-items: center;
    padding: 32px 40px;
    background-color: #ffffff;
    border-radius: 5px;
    box-shadow: 72px 59px 26px 0px rgba(44, 44, 44, 0.00), 
                46px 38px 24px 0px rgba(44, 44, 44, 0.01), 
                26px 21px 20px 0px rgba(44, 44, 44, 0.05), 
                11px 10px 15px 0px rgba(44, 44, 44, 0.09), 
                3px 2px 8px 0px rgba(44, 44, 44, 0.10);
}
.qualification-1 {
    width: 100%;
    align-items: start;
}
.qualification-1 div, .rule-wrap p {
    margin-left: 16px;
}
.qualification-title, .precaution p {
    font-weight: 700;
}
.rule-wrap div {
    width: 49%;
}
.rule-wrap p, .qualification-1 p {
    font-size: 20px;
    line-height: 180%;
}
/* 注意事項 */
.text-decoration-yellow {
    text-decoration: underline;
    text-decoration-thickness: 4px;
    text-decoration-color: #FDD001;
    text-decoration-skip-ink: none;
}
/* エントリー */
.entry {
    background: linear-gradient(rgba(10, 52, 127, 0.6), rgba(10, 52, 127, 0.6)),url("../img/entry-background.png");
    background-size: cover;
    background-position: 35% 75%;
    height: max-content;
    color: #ffffff;
    text-align: center;
    font-weight: 500;
}
.entry p {
line-height: 90px;
letter-spacing: 0.05em;
}
.en-btn {
    margin: 60px auto 0 auto;
}
/* ボタン内のアイコン位置調整 */
.entry .btn-icon {
    top: 2px;
}
.ent-p, .coming {
    font-size: 100px;
    opacity: 0.15;
}
.entry-p {
    margin-top: 40px;
    font-size: 60px;
}
.entry a {
    display: block;
    font-size: 20px;
    letter-spacing: 0.1em;
    padding: 15px 50px;
    margin: 16px auto;
    width: max-content; 
}
/* Q&A */
.qa ul {
    margin-right: auto;
    margin-left: auto;
}
.qa li {
    margin-bottom: 16px;
}
.qa ul li .accordion {
    font-weight: 500;
}
.qa ul li .accordion, .qa ul li .panel {
    border-radius: 10px;
    padding: 20px 40px;
    font-size: 18px;
    letter-spacing: 0.1em;
}
.qa ul li .qa-icon {
    flex-shrink: 0;
    display: inline-block;
    line-height: 40px;
    width: 46px;
    height: 46px;
    text-align: center;
    font-size: 24px;
    border-radius: 50%;
    margin-right: 16px;
}
.qa ul li .q {
    color: #ffffff;
    background-color: #041B42;
}
.qa ul li .a {
    color: #041B42;
    border: solid 1px #041B42;
}
.qa ul li div:nth-child(2n+1) {
    background-color: #EDEFF0;
}
.accordion {
    background-color: #f5ebe0;
    cursor: pointer;
    display: flex;
    align-items: center;
  }
.panel {
    max-height: max-content;
    align-items: flex-start;
    display: none;
}
.panel p {
    width: 95%;
    line-height: 180%;
}
.panel a {
    color:#0A347F;
    border-bottom: 1px solid #0A347F;
    font-weight: 500;
}
  .symbol {
    width: 30px;
    display: flex;
    flex-shrink: 0;
    margin-left: auto;
  }
  .symbol span {
    display: block;
    background-color: #041B42;
    width: 100%;
    height: 1px;
    transition: all 0.4s ease;
  }
  .symbol span:nth-of-type(1) {
    transform: translateX(15px);
  }
  .symbol span:nth-of-type(2) {
    transform: rotate(-90deg);
  }
  .accordion.active .symbol span:nth-of-type(2) {
    transform: rotate(0deg);
  }

/* 主催企業 */
.rss-pic {
    display: flex;
    flex-wrap: wrap;
    width: 100%;
}
.rss-pic figure {
    width: 50%;
    min-width: 300px;
    margin: 0 auto;
}
.rss-pic img   {
    width: 100%;
    object-fit: cover;
}
.comp-inf {
    background-image: url("../img/comp-inf-bg.png");
    background-color:rgba(255,255,255,0.8);
    background-blend-mode:lighten;
}
.table {
    font-size: 18px;
    margin-bottom: 40px;
}
.table .record {
    display: flex;
}
.table .th, .table .td {
    padding: 25px 0;
}
.table .th {
    width: 25%;
    text-align: center;
    border-bottom: 1px solid #041B42;
    font-weight: 400;
}
.table .td  {
    width: 75%;
    border-bottom: 2px solid #EDEFF0;
    padding-left: 50px;
    line-height: 33px;
}
.table .td span {
    display: block;
}
/* お知らせ */
.show-li, .news ul li div {
    display: flex;
}
.news ul li  {
    padding: 24px 85px;
    border-bottom: 2px solid #EDEFF0;
}
.news ul li div time {
    font-size: 18px;
    line-height: 32.4px;
    letter-spacing: 0.1em;
    margin-right: 16px;
}
.news ul li div p:nth-child(2n) {
    font-weight: 500;
    letter-spacing: 0.03em;
    width: 120px;
    height: 35px;
    line-height: 35px;
    text-align: center;
    background-color: #EDEFF0;
    margin-right: 16px;
}
.news ul li .news-title {
    font-size: 18px;
    font-weight: 500;
    line-height: 32.4px;
    letter-spacing: 0.1em;
}
.event-inf {
    color: #041B42;
}
.show-btn {
    display: block;
    width: max-content;
    margin: 40px auto 0 auto;
    padding: 12px 60px;
    color: #ffffff;
}
.hidden-li{
    display: none;
}
.hidden-li.open{
    display: flex;
}
/* フッター */
footer {
    background-color: #041B42;
    color: #ffffff;
}
footer div div, footer ul {
    display: flex;
}
footer .f-cr, footer .footer-menu {
    margin: 0 auto;
}
footer .footer-menu {
    margin-bottom: 25px;
    justify-content: space-between;
}
.footer-menu p {
    font-size: 24px;
}
.f-cr img {
    margin-right: 16px;
}
small {
    width: 100%;
    text-align: center;
    font-size: 14px;
    display: inline-block;
    font-weight: 300;
}
footer li {
    padding: 0 30px;
}
footer li:not(:last-child) {
    border-right: 1px solid #ffffff;
}
.c-black {
    color: #2b2b2b;
}
/* 参加規約 */
.policy_head {
    position: fixed;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 100%;
}
.policy_section {
    text-align: center;
    text-align: left;
}
.policy_article {
    font-weight: 700;
    font-size: 32px;
    line-height: 57.6px;
    border-bottom: 4px solid #EDEFF0;
    margin: 3rem auto 3rem auto;
}
.article {
    font-weight: 700;
    line-height: 57.6px;
    font-size: 24px;
    margin: 0 auto;
}
.article_bottom {
    margin-bottom: 3em;
}
.text {
    font-size: 18px;
    line-height: 36px;
    width: 100%;
    margin: 0 auto;
}
ul.sublist, ul.mainlist, ul.detaillist {
    font-size: 18px;
    line-height: 36px;
    margin-left: 20px;
    width: 100%;
    list-style-position: inside;
    margin: 0 auto;
}
ul.sublist {
    text-indent: -3em;
    padding-left: 3em;
}
ul.detaillist {
    text-indent: -1em;
    padding-left: 2.3em;
}
ul.mainlist {
    text-indent: -1.3em;
    padding-left: 2.3em;
}
.text_right {
    text-align: right;
}
.text_center {
    text-align: center;
}
.personal_information {
    padding-left: 1em;
    margin: 0 auto;
}
.create_date {
    margin: 0 0 0 18px;
}
