/* styles.css — アートボード1再現：連続ブルーグラデ／非対称モザイク */
:root{
  --bg:#ffffff;
  --ink:#0e1013;
  --muted:#586070;
  --accent-red:#e6002e;
  --line:#e5e7eb;
  --max:1000px;
  --gap:20px;
  --blue-left:#c4d7ef;
  --blue-right:#4496d3;
  --cap:#ffffff;
}

html,body{
  margin:0;
  background:var(--bg);
  color:var(--ink);
  font-family:system-ui,"BIZ UDPMincho", serif;;
  line-height:1.75;
  -webkit-font-smoothing:antialiased;
      overflow-x: hidden;
}

img{max-width:100%;height:auto;display:block}
figure{margin:0}
figcaption{font-size:13px;color:var(--muted);margin-top:8px}
h1,h2,h3,p{margin:0}

.container{max-width:var(--max);margin-inline:auto;padding:clamp(16px,2vw,24px)}
.mv{background-color: #000;}
.full-bleed{width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);}

/* Header */
.site-header{position: absolute; z-index: 2;left: 30px;}

/* MV video */
.aspect-16x9{position:relative;}
.mv__frame video{width: 100%;}
.mv__frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0}

/* Info block (under MV) */
.info-block{display:grid;gap:10px;justify-items:center;text-align:center;margin-top:20px;padding-bottom: 50px;}
.rule{width: 80%;height:1px;background:#231815;border:0;margin:8px 0}
.info-kicker{font-size:14px;letter-spacing:.18em;color:#2a2f3a;max-width: 900px;width: 100%;}
.info-heading{font-size: 2.3rem;
    line-height: 1.35;
    margin-top: 0px;
    text-align: center;
    font-family: "BIZ UDPMincho", serif;
    font-weight: normal;
    letter-spacing: 10px;}
.info-lead{margin-top: 20px;
    color: #1b1f26;
    font-family: "BIZ UDPMincho", serif;
    font-size: 1.2rem;
    margin-bottom: 50px;
    line-height: 45px;
    letter-spacing: 1px;}
.badges{display:flex;flex-wrap:wrap;gap:12px;margin-top:8px;justify-content:center}
.badge{font-weight:700}
.year{color:var(--accent-red);font-weight:800;margin-right:.4em}

/* Exterior */
figure{position: relative;}
figure img{width:100%;height:auto;object-fit:cover}
.cap{position: absolute;
    padding-left: 0;
    padding-right: 35px;
    color: var(--cap)!important;
    bottom: 0;
    right: 0;
    font-weight: bold;
    
    font-size: 1rem;
      text-shadow:
    2px 0   3px rgba(0,0,0,0.4),   /* 右 */
   -2px 0   3px rgba(0,0,0,0.4),   /* 左 */
    0   2px 3px rgba(0,0,0,0.4),   /* 下 */
    0  -2px 3px rgba(0,0,0,0.4),   /* 上 */
    2px 2px 3px rgba(0,0,0,0.4),   /* 右下 */
   -2px 2px 3px rgba(0,0,0,0.4),   /* 左下 */
    2px -2px 3px rgba(0,0,0,0.4),  /* 右上 */
   -2px -2px 3px rgba(0,0,0,0.4);  /* 左上 */
}
.box-cap{
  color: var(--inc);
  padding-left: 10px;
  
  width: 100%;
      white-space: nowrap;
}
.exterior{
      padding-left: 0;
    padding-right: 0;
}
.exterior .container{
  position: relative;
}
.exterior-text{
  position: absolute;
  top: 20px;
  margin: auto;
  left: 0;
  right: 0;
    z-index: 2;
    text-align: center;
}
.exterior picture{
  display: block;
    margin-left: -100px;
    margin-right: -40px;
}
.exterior img{
  width: 100%;
}
.exterior .cap {
  position: absolute;
    bottom: 10px;
    right: 30px;
}
/* Blue gradient wrapper (continuous, no gaps) */
.blue-wrap{
  background: linear-gradient(to right, var(--blue-left), var(--blue-right));
  color:#0b1a2a;
  padding-top: 28px;
  padding-bottom: 28px;
}
.blue-wrap .section-title,
.blue-wrap .eyebrow,
.blue-wrap .desc,
.blue-wrap figcaption{color:#0b1a2a} /* 濃いめの文字色で読みやすく */

.block{padding-top:18px;padding-bottom:18px} /* section間の余白は内側paddingに集約 */
.block + .block{border-top:0} /* 白隙間が出ないように */

/* Headings in blue band */
.eyebrow{color:var(--accent-red);font-weight:800;letter-spacing:.08em;font-size:12px;margin-bottom:6px}
.section-title{font-size:2.3rem;line-height:1.35;margin-bottom:10px;font-family: "BIZ UDPMincho", serif;display: block;text-align: center;letter-spacing:10px;font-weight: normal;margin: 100px auto 80px;position: relative;z-index: 1;}
.section-title:before{
  position: absolute;
  content: "";
  background-image: url(../img/i01.svg);
  background-repeat: no-repeat;
  background-size: 100%;
    z-index: -1;
    width: 150px;
    height: 120px;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  margin: auto;
}
.section-title.i02:before{
    background-image: url(../img/i02.svg);
}
.section-title.i03:before{
    background-image: url(../img/i03.svg);
}

.desc{ margin-top: 4px;
    margin-bottom: 20px;
    font-size: 1.3rem;
    }

/* Mosaic common */
.mosaic{margin-top:14px}
.tile img{width:100%;height:auto;object-fit:cover}
.tile figcaption{color:var(--inc);padding: 0 10px 10px 10px;font-size: 1rem;}

/* 01/02 layout: 
   Row1: lg spans all 3 columns
   Row2: md spans col1-2; sm-top at col3
   Row3: md continues col1-2; sm-bottom at col3  */
.mosaic-01-02{
  display:grid;
  grid-template-columns: 1.1fr 0.2fr 0.9fr;
  grid-template-areas:
    "lg lg lg"
    "md md smtop"
    "md md smbot";
  gap:16px;
}
.mosaic-01-02 .lg{grid-area:lg;margin-bottom: 50px;}
.mosaic-01-02 .md{grid-area:md}
.mosaic-01-02 .sm-top{grid-area:smtop}
.mosaic-01-02 .sm-bottom{grid-area:smbot}

/* 03 layout: Row1 lg full; Row2 md-left + md-right (slightly narrow) */
.mosaic-03{display:grid;gap:16px}
.mosaic-03 .lg{grid-column:1/-1; margin-bottom: 50px;}
.mosaic-03 .row2{display:flex;gap:16px}
.mosaic-03 .row2 .left{flex:0 0 55%}
.mosaic-03 .row2 .right{flex:0 0 43%}

/* Video (before comment) */
.video .frame{position:relative;width:100%;background:#000;}
.video iframe{width:100%;height:500px;border:0;background-color: #000;vertical-align:bottom;}
video{vertical-align: bottom;}
/* Comment */
.comment{margin-top:calc(var(--gap) * 1.2)}
.comment h3{font-size:22px;margin-bottom:8px}
.comment .panel{white-space:pre-wrap;color:var(--ink)}

/* CTA */
.cta{margin-top:calc(var(--gap) * 1.2);display:flex;gap:12px;flex-wrap:wrap}
.btn{display:inline-block;padding:12px 16px;border:1px solid #d0d0d0;background:#fff;color:var(--ink);font-weight:700;text-decoration:none}

/* Footer */
.site-footer{margin-top:calc(var(--gap) * 2);padding-bottom:24px;border-top:30px solid;border-image: linear-gradient(to right, var(--blue-left), var(--blue-right)) 30;}
.site-footer .container{font-size:13px;text-align:center}
.site-footer img{margin: auto;}
.site-footer ul{
  display: flex;
  background-color: #f0f0f0;
    margin-top: 0;
    justify-content: center;
  color: #000;
  gap: 30px;
  font-size: 0.8rem;
  padding: 10px;
  margin-bottom: 50px;
}
.site-footer ul a{color:#000;}
li{list-style: none;}
a{text-decoration: none}

/* Responsive */
/* @media (max-width:960px){
  .section-title{font-size:24px}
  .mosaic-01-02{
    grid-template-columns:1fr;
    grid-template-areas:
      "lg"
      "md"
      "smtop"
      "smbot";
  }
  .mosaic-03 .row2{flex-direction:column}
  .mosaic-03 .row2 .left,
  .mosaic-03 .row2 .right{flex:1 1 auto}
} */

/* === Bottom alignment fixes === */
:root{
  --cap-h: 28px; /* 統一キャプション高さ（1行想定）。必要なら調整可 */
}

/* For all mosaic figures: stack vertically and let image fill available height */
.mosaic figure{
  display:block;
  flex-direction:column;
}
#sec02 .mosaic figure.sm-top{
  display: flex;
}
/* Images fill figure height; bottom edges align */
.mosaic figure img{
  flex:1 1 auto;
  width:100%;
  height:100%;
  object-fit:cover;
}

/* Captions get a consistent min-height so画像下端が揃う */
.mosaic figure span{
  min-height: var(--inc);
  display:flex;
  align-items:flex-start;
  padding: 10px;
  
}
.mosaic span{
  
  padding: 10px;
}

/* 01/02 rows become equal heights so md (left) == sm-top+sm-bottom */
.mosaic-01-02{
  grid-template-rows: auto 1fr 1fr; /* Row2 == Row3 */
  align-items: stretch;
}

/* 03: row2 items same height; captions normalized */
.mosaic-03 .row2{
  align-items: stretch;
}
.mosaic-03 .row2 figure figcaption{
  min-height: var(--cap-h);
}
.comment{
  margin-top:60px;
  text-align:center;
  border-bottom: solid 1px;
  border-image: linear-gradient(to right,#0075c1,#042275)1;
  position: relative;
}
.comment h3{
    display: inline-block;
    background: linear-gradient(to right, #0075c1, #042275);
    color: #fff;
    padding: 5px 60px;
    font-size: 18px;
    font-weight: 700;
    margin-bottom: 24px;
    
    letter-spacing: 2px;
    position: relative;
}
.comment:before{
  position: absolute;
  content: "";
  height: 1px;
  width: 100%;
  top: 42px;
  left: 0;
  right: 0;
  margin: auto;
  border-bottom: solid 1px;
  border-image: linear-gradient(to right,#0075c1,#042275)1;
  z-index: 0;
}
.comment .panel{
  background:#fff;
  padding:28px 32px;
  border-radius:6px;
  text-align:left;
  line-height:1.9;
  
}
/* CTA under comment */
.comment + .cta{
  margin-top:40px;
  padding-top:30px;
  display:flex;
  justify-content:center;
}
.btn{
    display: inline-flex;
    align-items: center;
    gap: 25px;
    padding: 15px 10px 15px 35px;
    border-radius: 6px;
    background: #fff;
    color: #111;
    font-weight: 600;
    text-decoration: none;
    font-size: 16px;
    text-align: center;
    
    letter-spacing: 1px;
}
.btn::after{
  content:"▶";
  font-size:14px;
  color: #727171;
}
.pc{display: block;}
.sp{display: none;}
@media screen and (max-width:767px) {
  .pc{display: none;}
  .sp{display: block;}
  .container {
    padding: 10px;
    padding-bottom: 10px;
  }
  .cap{
    font-size: 0.6rem;
  }
  .site-header{
    left: 10px;
  }
  .site-header img{
    max-width: 80px;
  }
  .mv {
    padding: 20px 0;
  }
  .rule{width: 100%;}
  .video iframe{
    height: 300px;
  }
  .exterior{
    padding: 0;
  }
  .exterior .container{
    margin-top: 20px;
    padding: 0;
  }
  .exterior picture{
    margin-left: -30px;
    margin-right: -10px;
  }
  .exterior-text{
    top: 0px;
  }
  .info-heading{
    font-size: 1.5rem;
    letter-spacing: 5px;
    margin-top: 30px;
  }
  .info-lead{
    font-size: 0.8rem;
    line-height: 30px;
  }
  .section-title {
    font-size: 1.5rem;
    letter-spacing: 1px;
    margin: 30px auto 60px;
  }
  .section-title:before {
    width: 110px;
    height: 85px;
  }
  .desc {
    font-size: 0.9rem;
    width: 90%;
    margin: auto;
  }
  .mosaic-03 .row2{gap:5px;}
  .mosaic span,.tile figcaption{font-size: 0.6rem;
        grid-column: 1 / -1;
        letter-spacing: 0px;
        padding: 0;
      text-align: center;}
  .mosaic-01-02{column-gap: 10px;}
  #sec01 .mosaic figure.sm-top { display:flex; }
  #sec01 .mosaic-01-02{
    gap: 5px;
  }
  div#sec01,div#sec02 {
    margin-bottom: 50px;
  }
  .lg{
    margin: 0 calc(50% - 50vw);
    width: 100vw;
  }
  #sec02 .mosaic-01-02{
    display: grid;
    grid-template-columns: 1fr 1fr;              /* 2カラム */
    grid-template-rows: auto 1fr auto;           /* 行高さ */
    grid-template-areas:
      "lg    lg"
      "md    md"
      "smtop smbot";
    gap: 10px;                                   
  }
  #sec02 .mosaic-01-02 .md{
    margin-bottom: 30px;
  }
  #sec02 .sm img {
    height: 200px;
  }
  .mosaic figure span{
    justify-content: center;
  }
  .tile .cap {
    font-size: 0.5rem;
    padding: 0px;
    letter-spacing: 0px;
  }
  .tile.lg .cap{
    padding-right: 10px;
  }
  #sec01 .md .cap{
    left: 10px;
  }
  .comment{
    width: 90%;
    padding: 0;
  }
  .comment:before{
    top: -20px;
  }
  .comment h3{
    margin-bottom: 0;
  }
  .comment .panel {
    background: #fff;
    padding: 28px 10px;
    font-size: 0.9rem;
  }
  .site-footer ul{
    gap: 15px;
    flex-wrap: wrap;
  }
  .site-footer li {
      width: 45%;
      text-align: center;
              font-size: 0.7rem;
  }
    .site-footer img {
    width: 80%;
  }
  .site-footer .container {
    font-size: 11px;
  }
}