@charset "UTF-8";
/* ============================================================
   CCA Theme - Front Page Stylesheet
   - PC基準のデザインをベースにタブレット/スマホ対応
   - 色: 黒 #000 / 白 #FFF / 薄グレー #777 / 濃グレー #191919 / グリーン #6A9070
   ============================================================ */


/* ============================================================
   Hero Section
   ============================================================ */
.hero {
    box-sizing: border-box;
    min-height: 100vh;
    min-height: 100svh;      /* モバイルの動的ツールバー対策 */
    max-height: 500px;       /* 上限 */
    display: flex;
    flex-direction: column;
    justify-content: center; /* 中身を縦中央に */
    padding: 150px 40px 80px;
    background-color: #000000;
}
@media screen and (max-width:1030px) {
.hero {
padding:170px 24px 60px;
min-height: 0;
min-height: 0;
max-height: none; 
justify-content: flex-start;
}
}
@media screen and (max-width:757px) {
.hero {
padding: 100px 20px 70px;
min-height: 100svh;
max-height: none;    /* スマホは縦積みで自然な高さに */
justify-content: flex-start;
}
}


.hero__inner {
display:grid;
grid-template-columns:minmax(0, 30vw) minmax(0, 1fr);
gap:70px;
width: 100%;
max-width:1400px;
margin:0 auto;
align-items: start;
}
@media screen and (max-width:1800px) {
.hero__inner {
grid-template-columns:minmax(0, 530px) minmax(0, 1fr);
max-width:1200px;
}
}
@media screen and (max-width:1030px) {
.hero__inner {
gap:40px;
grid-template-columns:1fr 1fr;
}
}
@media screen and (max-width:757px) {
.hero__inner {
grid-template-columns:1fr;
gap:32px;
}
}


/* 動画できるまでの仮画像 */
.hero__video-img {
    width: 100%;
    height: 100%;
    object-fit: cover;   
    object-position: center;
    display: block;
}


/* ヒーロー動画エリア：正方形にトリミング */
.hero__video {
position:relative;
width:100%;
aspect-ratio:1 / 1;
background-color:#191919;
overflow:hidden;
}

/* iframe を格納するインナー（絶対配置の基準） */
.hero__video-inner {
position:absolute;
inset:0;
}

/* iframe：正方形切り抜き維持 + ホバー無効化 */
.hero__video-iframe {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 177.78%;
    height: 100%;
    transform: translate(-50%, -50%);
    border: 0;
    display: block;
    pointer-events: none;   /* ← 追加：ホバーで YouTube UI が出ないように */
}

/* クリック遷移用の透明オーバーレイ */
.hero__video-link {
    position: absolute;
    inset: 0;
    z-index: 10;
    cursor: pointer;
    /* 見た目は透明 */
}

.hero__text {
color:#FFFFFF;
}

.hero__lead {
font-family: 'Helvetica Neue';
color:#6A9070;
font-size:32px;
letter-spacing: 0.05em;
margin-bottom:70px;
font-weight:100;
}
@media screen and (max-width:1030px) {
.hero__lead {
margin-bottom:40px;
}
}
@media screen and (max-width:757px) {
.hero__lead {
font-size:28px;
margin-top:20px;
margin-bottom:40px;
}
}

/* 親にコンテナクエリの基準を設定
   （.hero__title の幅 = .hero__text の幅をベースにサイズ可変させる） */
.hero__text {
container-type:inline-size;
}

/* タイトルを横幅に応じて可変
   - 最長行「クリエイティブの⼒で」＝全角10文字
   - letter-spacing:-0.1em を考慮すると実効幅 ≈ 9em
   - よって font-size ≒ コンテナ幅 / 9 ≒ 11cqi で横いっぱいに収まる
   - clamp で下限・上限を設けて極端なサイズを抑制 */
.hero__title {
font-size:clamp(22px, 11cqi, 120px);
font-weight:200;
line-height:1;
letter-spacing:-0.1em;
}

.kakko {
   margin-left:-30px;
}
@media screen and (max-width:757px) {
.kakko {
   margin-left:-15px;
}
}

.hero__cta {
float:right;
margin-top:130px;
width:260px;
}
@media screen and (max-width:1030px) {
.hero__cta {
margin-top:60px;
}
}
@media screen and (max-width:757px) {
.hero__cta {
flex-direction:column;
align-items:flex-start;
margin-top:50px;
width:100%;
}
}

.hero__deadline {
font-size:16px;
color:#777777;
margin-top:10px;
text-align: center;
}





/* 仮メッセージ */
.hero__message {
    position: relative;
    width: 100%;
    max-width: 530px;
    aspect-ratio: 1 / 1;
    background: transparent;
    overflow: hidden;
}

.hero__lang {
    position: absolute;
    top: 50%;
    left: 0;
    right: 0;
    transform: translateY(-50%);
    padding: 8% 15%;
    box-sizing: border-box;
    transition: opacity 0.6s ease;
}
@media screen and (max-width:1030px) {
.hero__lang {
    padding: 8% 10%;
}
}
.hero__lang.is-fading { opacity: 0; }

.hero__lang-block {
    font-size: clamp(15px, 1.15vw, 20px);
    line-height: 1.95;
    color: #FFFFFF;
    margin: 0;
    min-height: 1.95em;
}
@media screen and (max-width:1030px) {
.hero__lang-block {
    font-size: clamp(13px, 1.15vw, 19px);
}
}
.hero__lang-block + .hero__lang-block { margin-top: 1.8em; }

.hero__lang--en .hero__lang-block {
    font-family: 'Helvetica Neue', 'Arial', sans-serif;
    line-height: 1.85;
}

/* 点滅カーソル */
.hero__lang-block.is-typing::after {
    content: "";
    display: inline-block;
    width: 0.55em;
    height: 1em;
    vertical-align: -0.12em;
    margin-left: 2px;
    background: #FFFFFF;
    animation: heroCursorBlink 1s steps(1) infinite;
}
@keyframes heroCursorBlink { 50% { opacity: 0; } }

@media (prefers-reduced-motion: reduce) {
    .hero__lang-block.is-typing::after { animation: none; }
}



/* ============================================================
   Card Section (CONCEPT / ABOUT / PROCESS / JUDGES)
   ============================================================ */
.card-section {
padding:50px 40px;
background-color:#000000;
}
@media screen and (max-width:757px) {
.card-section {
padding:15px 12px;
}
}

.card-section.first {
padding-top:0;
}
.card-section.last{
padding-bottom:0;
}

.card-section__card {
max-width:1200px;
margin:0 auto;
background-color:#191919;
border: solid 1px #777;
padding:110px 100px;
}
@media screen and (max-width:1030px) {
.card-section__card {
padding:60px 50px;
}
}
@media screen and (max-width:757px) {
.card-section__card {
padding:40px 20px 70px 20px;
}
}

.card-section__label {
color:#777;
font-size:18px;
font-weight:700;
margin-bottom:50px;
}
@media screen and (max-width:757px) {
.card-section__label {
font-size:16px;
margin-bottom:30px;
}
}

.card-section__heading {
font-size:40px;
font-weight:200;
line-height:1.1;
letter-spacing:-0.1em;
margin-bottom:50px;
color:#FFFFFF;
}
@media screen and (max-width:757px) {
.card-section__heading {
font-size:28px;
margin-bottom:30px;
}
}

.card-section__body {
margin-top:30px;
color:#FFFFFF;
}

.card-section__body p + p {
margin-top:1.4em;
}



/* ============================================================
   Expandable (more ボタン + グラデーションフェード)
   初期表示は4行、下部グラデーション → more で全文表示
   ============================================================ */
.expandable {
position:relative;
}

.expandable__clamp {
position:relative;
max-height:calc(1.8em * 4); /* 4行分 */
overflow:hidden;
transition:max-height 0.5s ease;
font-size:18px;
line-height:1.8;
color:#FFFFFF;
}
@media screen and (max-width:757px) {
.expandable__clamp {
font-size:16px;
}
}


.expandable__clamp::after {
content:"";
position:absolute;
left:0;
right:0;
bottom:0;
height:70px;
background:linear-gradient(to bottom, rgba(25,25,25,0) 0%, rgba(25,25,25,1) 100%);
pointer-events:none;
transition:opacity 0.3s ease;
}

.expandable.is-open .expandable__clamp {
max-height:2000px;
}

.expandable.is-open .expandable__clamp::after {
opacity:0;
}


/* ============================================================
   more Button
   ============================================================ */
.more-btn {
display:inline-block;
margin-top:0px;
font-size:16px;
font-weight:700;
color:#FFFFFF;
position:relative;
float:right;
text-decoration: underline;
}

.more-btn:hover {
color:#6A9070;
}

.more-btn:hover::after {
background-color:#6A9070;
}


/* ============================================================
   Circle Row（ABOUT / PROCESS 装飾）
   ============================================================ */
.circle-row {
display:flex;
align-items:center;
justify-content:center;
gap:60px;
margin:80px 0;
}
@media screen and (max-width:1030px) {
.circle-row {
        gap: 20px;
}
}
@media screen and (max-width:757px) {
.circle-row {
        flex-direction: column;
        align-items: center;     /* 横方向の中央 */
        justify-content: center; /* 縦方向の中央 */
        gap: 30px;
        margin: 36px 0;
}
}

/* =====  Circle Step（ABOUT のステップ表現）  =====*/
.circle-step {
    position: relative;
    flex-shrink: 0;
    width: 270px;
    height: 270px;
    padding: 0 24px;
    border: 1px solid rgba(255, 255, 255, 0.5);
    border-radius: 50%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    color: #FFFFFF;
    box-sizing: border-box;
}
@media screen and (max-width: 1030px) {
.circle-step {
width: 32%;
height: auto;
aspect-ratio: 1 / 1;
}
}
@media screen and (max-width: 757px) {
.circle-step {
width: 80%;
height: auto;
aspect-ratio: 1 / 1;
}
}

/* 01 / 02 / 03 ナンバー */
.circle-step__number {
    font-family: 'Helvetica Neue';
    font-size: 50px;
    font-weight: 100;
    letter-spacing: 0.05em;
    color: #6A9070;
    line-height: 1.5;
    margin-top: -5px;
}
@media screen and (max-width: 1030px) {
    .circle-step__number {
        font-size: 40px;
    }
}
@media screen and (max-width: 757px) {
    .circle-step__number {
        font-size: 45px;
       margin-top: -5px;
    }
}

/* メインタイトル（1〜3行） */
.circle-step__title {
    font-size: clamp(17px, 2vw, 25px);
    font-weight: 400;
    line-height: 1.2;
    color: #FFFFFF;
    margin: 0 0 16px;

    /* 追加: 3行分の高さを確保して中央寄せ */
    min-height: calc(1.2em * 3);
    display: flex;
    align-items: center;
    justify-content: center;
}
@media screen and (max-width: 1030px) {
    .circle-step__title {
    font-size: clamp(15px, 2vw, 20px);
    margin: 0 0 10px;
    }
}
@media screen and (max-width: 757px) {
    .circle-step__title {
        font-size: 20px;
    }
}

/* サブラベル（発見・創造・変化） */
.circle-step__sub {
    position: relative;
    padding-top: 14px;
}
@media screen and (max-width: 1030px) {
.circle-step__sub {
    padding-top: 5px;
    }
}
@media screen and (max-width: 757px) {
.circle-step__sub {
    padding-top: 14px;
    }
}

.circle-step__sub::before {
    content: "";
    position: absolute;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 160px;
    height: 1px;
    background-color: #777;
}
@media screen and (max-width: 1030px) {
    .circle-step__sub::before {
        width: 120px;
    }
}
@media screen and (max-width: 757px) {
    .circle-step__sub::before {
        width: 150px;
    }
}

.circle-step__sub-label {
    font-size: 16px;
    font-weight: 600;
    color: #6A9070;
}
@media screen and (max-width: 1030px) {
    .circle-step__sub-label {
        font-size: 15px;
    }
}
@media screen and (max-width: 757px) {
    .circle-step__sub-label {
        font-size: 16px;
    }
}



/* ▼ 削除：旧 .circle-row .arrow 定義（font-size / color 系）すべて */
/* ▼ 新：サイズを確実に大きくするため flex-shrink:0 も追加 */
.circle-row .arrow {
position:relative;
display:inline-block;
flex-shrink:0;
width:90px;
height:90px;
margin-right: 5px;
margin-left: -15px;
font-size:0; /* 中に文字が残っていても非表示化するセーフガード */
}
@media screen and (max-width:1024px) {
.circle-row .arrow {
width: 40px;
height: 40px;
margin-right: -15px;
margin-left: -25px;
}
}
@media screen and (max-width:757px) {
.circle-row .arrow {
width:80px;
height:80px;
margin-right: 0px;
margin-left: 0px;
margin-top: -20px;
margin-bottom: 0px;
}
}

.circle-row .arrow::before,
.circle-row .arrow::after {
content:"";
position:absolute;
top:50%;
width:40%;
aspect-ratio:1 / 1;
border-top:1.5px solid #777;
border-right:1.5px solid #777;
transform:translate(-50%, -50%) scaleY(1) rotate(45deg);
}
@media screen and (max-width: 757px) {
.circle-row .arrow::before,
.circle-row .arrow::after {
top: 50%;
left: 50%;
transform: translate(-50%, -50%) rotate(135deg);
}
}

.circle-row .arrow::before {
left:44%;
}
@media screen and (max-width: 757px) {
.circle-row .arrow::before {
top: 44%;
left: 50%;
}
}

.circle-row .arrow::after {
left:56%;
}
@media screen and (max-width: 757px) {
.circle-row .arrow::after {
top: 56%;
left: 50%;
}
}


.circle-row--process {
gap:0px;
}
@media screen and (max-width:1030px) {
.circle-row--process {
gap:20px;
}
}
@media screen and (max-width:757px) {
.circle-row--process {
gap:10px;
}
}


.circle-row__divider {
display: none;
flex-shrink:0;
width:1px;
align-self:stretch;
background-color:#777;
}
@media screen and (max-width: 757px) {
    .circle-row__divider {
        width: 80%;         /* 中央寄せが見えやすいよう短めの横線に */
        height: 1px;
        align-self: center; /* 中央配置 */
    }
}


/* ============================================================
   Judges Grid
   ============================================================ */
.judges-grid {
display:grid;
grid-template-columns:repeat(3, 1fr);
gap:80px 80px;
margin-top:40px;
}
@media screen and (max-width:1300px) {
.judges-grid {
grid-template-columns:repeat(3, 1fr);
gap:40px 25px;
}
}
@media screen and (max-width:820px) {
.judges-grid {
grid-template-columns:repeat(2, 1fr);
gap: 30px 20px;
}
}

.judge-card {
display:flex;
flex-direction:column;
}

.judge-card__photo {
width:100%;
aspect-ratio:1 / 1;
background-color:#000000;
overflow:hidden;
margin-bottom:18px;
}

.judge-card__photo img {
width:100%;
height:100%;
object-fit:cover;
filter:grayscale(20%);
}

.judge-card__role {
color:#6A9070;
font-size:15px;
font-weight:200;
margin-bottom:12px;
}
@media screen and (max-width:757px) {
.judge-card__role {
font-size:14px;
margin-bottom:10px;
}
}

.judge-card__name {
font-size:23px;
font-weight:700;
margin-bottom:0px;
color:#FFFFFF;
}
@media screen and (max-width:757px) {
.judge-card__name {
font-size:15px;
}
}

.judge-card__title {
font-size:13px;
color:#777777;
margin-bottom:10px;
line-height:1.5;
/* 1行でも必ず2行ぶんの高さを確保し、下の __comment の開始位置を揃える */
min-height:calc(1.5em * 2);
display:-webkit-box;
-webkit-box-orient:vertical;
-webkit-line-clamp:2;
overflow:hidden;
}
@media screen and (max-width:757px) {
.judge-card__title {
font-size:10px;
margin-bottom: 13px;
}
}

.judge-card__comment {
position:relative;
font-size:14px;
color:#FFFFFF;
line-height:1.8;
text-align: justify;
max-height:calc(1.8em * 3); /* 4行分 */
overflow:hidden;
}
@media screen and (max-width:757px) {
.judge-card__comment {
font-size:12px;
}
}

.judge-card__comment::after {
content:"";
position:absolute;
left:0;
right:0;
bottom:0;
height:50px;
background:linear-gradient(to bottom, rgba(25,25,25,0) 0%, rgba(25,25,25,1) 100%);
pointer-events:none;
}

.judge-card .more-btn {
text-align: right;
}





/* ============================================================
   CTA Section
   ============================================================ */
.cta {
padding:40px;
background-color:#000000;
}
@media screen and (max-width:1030px) {
.cta {
padding:50px;
}
}
@media screen and (max-width:757px) {
.cta {
padding:40px 20px 40px;
}
}

.cta__inner {
max-width:1100px;
margin:0 auto;
display:flex;
align-items:center;
justify-content:space-between;
flex-wrap:wrap;
gap:32px;
}
@media screen and (max-width:757px) {
.cta__inner {
flex-direction:column;
align-items:flex-start;
gap:24px;
}
}

.cta__text {
font-size:60px;
font-weight:200;
line-height:1;
letter-spacing:-0.1em;
}
@media screen and (max-width:757px) {
.cta__text {
font-size:33px;
margin-bottom:10px;
}
}

.cta__btn-wrap {
display:flex;
align-items:center;
flex-direction:column;
}
@media screen and (max-width:757px) {
.cta__btn-wrap {
width:100%;
}
}



/* ============================================================
   Modal (審査員コメント拡張)
   ============================================================ */
.modal {
position:fixed;
top:0;
left:0;
width:100%;
height:100vh;
z-index:1000;
display:none;
align-items:flex-start;
justify-content:center;
padding:80px;
overflow-y:auto;
}
@media screen and (max-width:1030px) {
.modal {
padding:60px 24px 24px;
}
}
@media screen and (max-width:757px) {
.modal {
padding:60px 14px 24px;
}
}


.modal.is-open {
display:flex;
}

.modal__overlay {
position:fixed;
top:0;
left:0;
width:100%;
height:100%;
background-color:rgba(0,0,0,0.85);
animation:modalFadeIn 0.3s ease;
}

.modal__dialog {
position:relative;
width:100%;
max-width:1200px;
background-color:#191919;
border: #777 solid 1px;
padding:90px;
z-index:1;
animation:modalSlideIn 0.4s ease;
}
@media screen and (max-width:1030px) {
.modal__dialog {
padding:48px 36px;
}
}
@media screen and (max-width:757px) {
.modal__dialog {
padding:50px 20px 50px;
}
}

.modal__close {
position:absolute;
top:30px;
right:30px;
width:60px;
height:60px;
z-index:2;
}
@media screen and (max-width:757px) {
.modal__close {
top:14px;
right:14px;
width:32px;
height:32px;
}
}

.modal__close svg {
width:100%;
height:100%;
}

.modal__body {
display:grid;
grid-template-columns:290px 1fr;
gap:60px;
align-items:flex-start;
margin-bottom:40px;
}
@media screen and (max-width:1030px) {
.modal__body {
grid-template-columns:260px 1fr;
gap:36px;
}
}
@media screen and (max-width:757px) {
.modal__body {
grid-template-columns:1fr;
gap:24px;
margin-top: 10px;
}
}

.modal__photo {
width:100%;
aspect-ratio:1 / 1;
background-color:#000000;
overflow:hidden;
}
@media screen and (max-width:757px) {
.modal__photo {
margin:0 auto;
}
}

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

.modal__role {
color:#6A9070;
font-size:15px;
font-weight:200;
margin-top:-10px;
margin-bottom:10px;
}
@media screen and (max-width:1030px) {
.modal__role {
margin-top:0px;
}
}
@media screen and (max-width:757px) {
.modal__role {
margin-top:0px;
}
}


.modal__name {
font-size:30px;
font-weight:700;
margin-bottom:0px;
color:#FFFFFF;
}
@media screen and (max-width:1030px) {
.modal__name {
font-size:25px;
}
}
@media screen and (max-width:757px) {
.modal__name {
font-size:25px;
}
}

.modal__title {
font-size:15px;
color:#777;
letter-spacing:0.04em;
margin-bottom:20px;
line-height:1.6;
}
@media screen and (max-width:1030px) {
.modal__title {
font-size:13px;
}
}
@media screen and (max-width:757px) {
.modal__title {
font-size:13px;
margin-bottom:20px;
}
}

.modal__comment {
font-size:18px;
line-height:2;
color:#FFFFFF;
font-weight:700;
text-align: justify;
}
@media screen and (max-width:1030px) {
.modal__comment {
font-size:16px;
}
}
@media screen and (max-width:757px) {
.modal__comment {
font-size:16px;
line-height:1.9;
}
}

.modal__bio {
font-size:13px;
color:#777777;
line-height:1.9;
text-align: justify;
white-space:pre-line;
}
@media screen and (max-width:757px) {
.modal__bio {
font-size:13px;
}
}

@keyframes modalFadeIn {
0% { opacity:0; }
100% { opacity:1; }
}
@keyframes modalSlideIn {
0% { opacity:0; transform:translateY(20px); }
100% { opacity:1; transform:translateY(0); }
}

