.h1_text { width:95%; }
@media screen and (min-width: 1025px) {
  .h1_wrappers { margin-top:100px; }
  .h1_text { width:auto; margin:-70px 0 70px 300px; }
}
@media screen and (min-width:1120px){
}

footer { margin:0; }
@media screen and (min-width: 769px) {
  footer {
    padding-top: 10px;
  }
}

.footer_wrapper_title { display:none; }
@media screen and (min-width:769px){
  .footer_links { display:none; }
}
@media screen and (min-width:1025px){
  .footer_menu { width:auto; padding-bottom:0; position:absolute; top:20px; left:240px; }
  .footer_menu_list { display:flex; gap:10px; }
  .footer_nav { margin:0; padding:0 10px 0 0; }
  .footer_nav span.footer_nav_number { display:none; }
  .footer_nav span.footer_nav_title { width:auto; border-right:none; font-weight:normal; }
  .footer_nav span.footer_nav_text { display:none; }
}
@media screen and (min-width:1120px){
  .footer_menu_list { gap:20px; }
}
@media screen and (min-width:1240px){
  .footer_menu_list { gap:30px; }
  .footer_nav { padding:0 10px 0 0; }
}
@media screen and (min-width:1420px){
  .footer_menu { left:300px; }
  .footer_nav { padding:0 15px 0 0; }
}

.rail { position:relative; z-index:3; height:auto; min-height:calc(100vh - 320px); --row-h:calc((100vh - 320px)/4); overflow:hidden; cursor:grab; touch-action:pan-y; /* 縦スワイプはブラウザに任せ、横だけJSで奪う */ }
.rail.dragging { cursor:grabbing; }
@media screen and (min-width:769px){
  .rail { min-height:calc(100vh - 270px); --row-h:calc((100vh - 270px)/5); }
}
@media screen and (min-width:769px) and (orientation:portrait){
  .rail { min-height:50vh; --row-h:calc(50vh/5); }
}

.track { position:absolute; top:0; left:0; z-index:1; width:100%; height:100%; display:flex; align-items:stretch; padding:0; will-change:transform; }

.card { position:relative; flex:0 0 auto; width:min(64vw, 420px); height:78%; border-radius:2px; display:flex; flex-direction:column; justify-content:flex-end; padding:1.6rem; user-select:none; -webkit-user-select:none; background:linear-gradient(160deg, var(--card-a), var(--card-b)); }
.card .num { position:absolute; top:1.4rem; left:1.6rem; font-size:.72rem; letter-spacing:.1em; color:rgba(255,255,255,.75); }
.card h3 { font-size:1.35rem; color:#fff; margin:0 0 .4rem; }
.card p { font-size:.82rem; color:rgba(255,255,255,.72); margin:0; }

.progress { position:absolute; left:6vw; right:6vw; bottom:1.1rem; height:2px; background:#ddd6c8; }
.progress-bar { position:absolute; top:0; left:0; height:100%; background:#b5502e; width:20%; will-change:transform, width; }

/* ===== stats board: photos scattered over ruled lines + watermark ===== */
.stat-board { position:relative; flex:0 0 auto; width:max-content; height:100%; display:flex; }

/* railに1つだけ配置し、画面に見えている固定枠の中だけで帯を流し続ける(trackの複製とは独立) */
.board-bg { position:absolute; inset:0; z-index:0; overflow:hidden; pointer-events:none; background-image:repeating-linear-gradient(to bottom, #808080 0, #808080 1px, transparent 1px, transparent var(--row-h)); border-bottom:1px solid #808080; }
.board-bg .wm-line { position:absolute; left:0; right:0; height:var(--row-h); overflow:hidden; white-space:nowrap; font-weight:700; font-size:calc(var(--row-h) * 0.82); line-height:var(--row-h); letter-spacing:.02em; color:#e3e3e3; user-select:none; }
.board-bg .wm-line:nth-child(1) { top:calc(var(--row-h)*0); }
.board-bg .wm-line:nth-child(2) { top:calc(var(--row-h)*1); }
.board-bg .wm-line:nth-child(3) { top:calc(var(--row-h)*2); }
.board-bg .wm-line:nth-child(4) { top:calc(var(--row-h)*3); }
.board-bg .wm-line:nth-child(5) { display:none; }
@media screen and (min-width:769px){
  .board-bg .wm-line:nth-child(5) { display:block; top:calc(var(--row-h)*4); }
}

/* 透かし文字を段ごとに左右交互へ流し続ける(ドラッグ操作とは独立して常時ループ) */
.board-bg .wm-track { display:inline-flex; width:max-content; white-space:nowrap; animation-timing-function:linear; animation-iteration-count:infinite; will-change:transform; }
.board-bg .wm-track-inner { display:inline-block; white-space:nowrap; }
.board-bg .wm-line--left .wm-track { animation-name:wm-scroll-left; }
.board-bg .wm-line--right .wm-track { animation-name:wm-scroll-right; }

@keyframes wm-scroll-left {
  from { transform:translateX(0); }
  to   { transform:translateX(-50%); }
}
@keyframes wm-scroll-right {
  from { transform:translateX(-50%); }
  to   { transform:translateX(0); }
}
@media (prefers-reduced-motion: reduce) {
  .board-bg .wm-track { animation:none; }
}

.stat-row { position:relative; z-index:1; display:flex; align-items:flex-end; gap:3vw; padding:0 1.5vw; }

.stat-photo-link { position:relative; flex:0 0 auto; display:block; width:calc(var(--row-h) * (1 + 0.25 * var(--size, 1))); margin-bottom:calc(var(--row-h) * var(--offset, 0)); }
.stat-photo { display:block; width:100%; height:auto; object-fit:cover; border:1px solid var(--ink, #1c1a17); background:var(--bg-raised, #fff); user-select:none; -webkit-user-select:none; -webkit-user-drag:none; cursor:pointer; }
.stat-photo-caption { width:100%; padding:10px; position:absolute; inset:0; z-index:1; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:.5em; padding:0.6em; text-align:center; line-height:1.2; color:#fff; background:rgba(0,0,0,.7); opacity:0; transition:0.3s; pointer-events:none; }
.stat-photo-num strong { font-weight:700; font-size:3.2rem; line-height:1.2; }
.stat-photo-title { width:100%; margin-top:10px; padding-top:20px; display:block; font-size:14px; border-top:1px solid rgba(255,255,255,.7); }
@media screen and (min-width:769px){
  .stat-photo-link { width:calc(var(--row-h) * (1.8 + 0.35 * var(--size, 1))); margin-bottom:calc(var(--row-h) * var(--offset, 0)); }
  .stat-photo-link:hover { transform:rotate(-2deg); transform-origin:left bottom; transition:.3s; }
  .stat-photo-link:hover .stat-photo-caption { opacity:1; }
}

/* ===== willcolor list: スマホではlightboxの代わりに全件を常時下に表示する ===== */
.willcolor-list { display:block; padding:10vh 0; }
@media screen and (min-width:840px){
  .willcolor-list { display:none; } /* PCはlightboxで見せるので一覧は非表示 */
}

.willcolor-list-item { scroll-margin-top:80px; display:flex; flex-direction:column; padding:60px 0; border-top:1px solid #808080; }
.willcolor-list-item:first-child { border-top:none; }
.willcolor-list-illust-wrap { position:relative; overflow:hidden; display:block; width:100%; margin:0 auto 16px auto; padding:20px 20%; background:rgba(0,0,0,.03); border-bottom:1px solid #e0e0e0; }
.willcolor-list-illust { position:relative; z-index:1; display:block; width:100%; max-width:160px; height:auto; margin:0 auto; }
.willcolor-list-title { margin:0 0 8px; font-size:1.1rem; color:var(--ink, #1c1a17); }
.willcolor-list-text { margin:0 0 16px; line-height:1.85; color:var(--ink-soft, #808080); text-align:justify; }
.willcolor-list-text span { color:#FC523A; font-weight:bold; font-size:18px; }
.willcolor-list-photo-wrap { display:flex; align-items:stretch; justify-content:center; gap:10px; overflow:hidden; }
.willcolor-list-photo { display:block; width:auto; min-width:0; max-width:100%; }

/* ===== lightbox ===== */
.lightbox { position:fixed; inset:0; z-index:1000; display:flex; align-items:center; justify-content:center; padding:6vh 5vw; opacity:0; visibility:hidden; pointer-events:none; transition:opacity .35s ease, visibility .35s ease; }
.lightbox.is-open { opacity:1; visibility:visible; pointer-events:auto; }

.lightbox-overlay { position:absolute; inset:0; background:rgba(20,18,16,.82); }

.lightbox-panel { position:relative; z-index:1; width:100%; height:80vh; overflow:visible; background:var(--bg-raised, #fff); display:flex; flex-direction:column; opacity:0; transform:translateY(16px) scale(.97); transition:opacity .35s ease, transform .35s ease; }
.lightbox.is-open .lightbox-panel { border:2px solid #000; opacity:1; transform:translateY(0) scale(1); }

.lightbox-close { display:flex; justify-content:center; align-items:center; position:absolute; z-index:2; top:-36px; right:0; width:36px; height:36px; background:#000; font-size:1.3rem; line-height:1; cursor:pointer; color:var(--ink, #fff); }
.lightbox-close::before { content:''; width:14px; height:2px; display:block; background:#fff; transform:rotate(-45deg); position:absolute; }
.lightbox-close::after { content:''; width:14px; height:2px; display:block; background:#fff; transform:rotate(45deg); position:absolute; }

.lightbox-nav { display:flex; align-items:center; justify-content:center; position:absolute; z-index:2; top:50%; transform:translateY(-50%); width:36px; height:36px; background:var(--bg-raised, #000); font-size:1.6rem; line-height:1; cursor:pointer; color:var(--ink, #000); }
.lightbox-nav img { width:8px; }
.lightbox-prev { left:-18px; }
.lightbox-prev img { transform:rotate(180deg); }
.lightbox-next { right:-18px; }

.lightbox-inside { position:relative; z-index:1; width:100%; flex:1 1 auto; min-height:0; display:flex; flex-direction:column; overflow-y:auto; }
.lightbox-media { position:relative; overflow:hidden; display:block; }
.lightbox-media img { position:relative; z-index:1; display:block; width:100%; max-width:100%; height:auto; object-fit:cover; }
.lightbox-media img[src=""] { display:none; }

/* board-bgと同じ見た目の透かし文字だが、こちらは動かさず静止表示。5段に分け、段ごとに開始位置だけずらす */
.lightbox-media-bg { position:absolute; inset:0; z-index:0; overflow:hidden; pointer-events:none; user-select:none; background-image:repeating-linear-gradient(to bottom, #ccc 0, #ccc 1px, transparent 1px, transparent 20%); opacity:0.4; }
.lightbox-media-bg .wm-line { position:absolute; left:0; right:0; height:20%; display:flex; align-items:center; overflow:hidden; white-space:nowrap; font-weight:700; font-size:2rem; letter-spacing:.02em; color:#e3e3e3; }
.lightbox-media-bg .wm-line:nth-child(1) { top:0%; }
.lightbox-media-bg .wm-line:nth-child(2) { top:20%; }
.lightbox-media-bg .wm-line:nth-child(3) { top:40%; }
.lightbox-media-bg .wm-line:nth-child(4) { top:60%; }
.lightbox-media-bg .wm-line:nth-child(5) { top:80%; }
@media screen and (min-width:769px){
  .lightbox-media-bg .wm-line { font-size:2.6rem; }
}

.lightbox-body { width:90%; margin:20px auto; }
.lightbox-title { margin:0; font-size:1.2rem; }
.lightbox-title::after { content:''; width:40px; height:2px; margin:10px 0; display:block; background:#000; }
.lightbox-text { margin:0; display:block; text-align:justify; line-height:1.85; white-space:pre-wrap; }
a.lightbox-text-link { margin-top:15px; padding-right:15px; display:table; position:relative; line-height:1.2; transition:0.3s; }
a.lightbox-text-link:hover { opacity:0.7; transition:0.3s; }
a.lightbox-text-link::before { content:''; width:4px; height:100%; background:url(../img/arrow_b.svg) no-repeat 100% 50%; position:absolute; right:0; }
a.lightbox-text-link::after { content:''; width:100%; height:1px; display:block; background:currentColor; position:absolute; left:0; bottom:-2px; transform:scaleX(0); transform-origin:left; transition:transform 0.3s ease; }
a.lightbox-text-link:hover::after { transform:scaleX(1); }
.lightbox-text span { color:#FC523A; font-weight:bold; font-size:18px; }
.lightbox-photo { width:100%; margin:20px 0 0 0; display:flex; align-items:stretch; justify-content:center; gap:10px; overflow:hidden; }
.lightbox-photo:empty { display:none; }
.lightbox-photo img { display:block; width:auto; min-width:0; max-width:100%; }

@media screen and (min-width:769px){
  .lightbox-panel { width:min(90%,1200px); height:min(90%,500px); }
  .lightbox-inside { flex-direction:row; overflow-y:hidden; }
  .lightbox-media { width:min(25%,280px); display:flex; align-items:center; justify-content:center; align-self:stretch; border-right:2px solid var(--ink, #000); }
  .lightbox-media img { width:min(80%,240px); height:auto; margin:0 auto; }
  .lightbox-body { width:75%; height:100%; box-sizing:border-box; margin:0 2.5%; padding:30px 0 20px; display:flex; align-items:center; justify-content:space-around; overflow-y:auto; }
  .lightbox-texts { width:min(40%,300px); }
  .lightbox-photo { width:min(55%,560px); margin:0; display:flex; align-items:stretch; justify-content:center; gap:10px; overflow:hidden; }
}