/**
 * Denplan Gallery 表示側スタイル。
 * 本体サイト denplan-sekkei.com（Themify Ultra）のデザイントークンに準拠:
 *   ブランドオレンジ #ef7900 / 濃 #ea570f / 補助ゴールド #f6b428
 *   本文 #111111 / 白背景 / 淡グレー面 #fafafa / Noto Sans JP 500・700
 * （指示書 2.1 / 0仕様「オフィシャルサイトと違和感が無いように」）。
 */
:root {
  --dpg-accent: #ef7900;       /* デンプラン ブランドオレンジ */
  --dpg-accent-dark: #ea570f;  /* 濃いオレンジ（hover/active） */
  --dpg-gold: #f6b428;         /* 補助ゴールド */
  --dpg-ink: #111111;
  --dpg-sub: #555555;
  --dpg-line: #e6e6e6;
  --dpg-bg-soft: #fafafa;
  --dpg-radius: 4px;
  --dpg-gap: 16px;
  --dpg-font: "Noto Sans JP", "Hiragino Kaku Gothic ProN",
              "ヒラギノ角ゴ ProN", Meiryo, sans-serif;
}

/* .dpg-main は全幅（タイトル帯/お問い合わせを edge-to-edge に）。
   一覧/詳細だけ .dpg-gallery で中央寄せ・最大幅。 */
.dpg-main {
  max-width: none; margin: 0; padding: 0;
  font-family: var(--dpg-font);
  color: var(--dpg-ink);
  font-weight: 500;
  line-height: 1.7;
}
.dpg-gallery {
  max-width: 1080px; margin: 0 auto; padding: 40px 20px 56px;
}
.dpg-main, .dpg-gallery { font-family: var(--dpg-font); }
.dpg-empty { color: var(--dpg-sub); padding: 40px 0; text-align: center; }

/* ---------- 詳細 ---------- */
.dpg-detail { position: relative; min-height: 280px; margin-bottom: 32px; }
.dpg-detail.is-loading { opacity: .45; transition: opacity .2s; }

.dpg-work__head {
  display: flex; align-items: baseline; flex-wrap: wrap; gap: 8px 16px;
  margin-bottom: 14px;
}
.dpg-work__title {
  font-size: 1.5rem; margin: 0; color: var(--dpg-ink);
  font-weight: 700; letter-spacing: .02em;
  padding-left: 12px; border-left: 4px solid var(--dpg-accent);
}
.dpg-work__cats { display: flex; gap: 6px; list-style: none; margin: 0; padding: 0; }
.dpg-work__cats li {
  font-size: .72rem; color: #fff; font-weight: 700;
  background: var(--dpg-accent); border-radius: 999px; padding: 3px 12px;
}

.dpg-work__slider {
  position: relative; background: var(--dpg-bg-soft);
  border-radius: var(--dpg-radius); overflow: hidden;
}
/* アスペクト比は画像なりに可変（指示書「入った画像がどんなアスペクト比でも対応」） */
.dpg-slide { display: none; margin: 0; }
.dpg-slide.is-current { display: block; }
.dpg-slide img { display: block; width: 100%; height: auto; }

.dpg-slide-nav {
  position: absolute; top: 50%; transform: translateY(-50%);
  width: 44px; height: 44px; border: 0; cursor: pointer;
  background: rgba(0,0,0,.42); color: #fff; font-size: 1.6rem; line-height: 1;
  border-radius: 50%;
}
.dpg-slide-nav--prev { left: 12px; }
.dpg-slide-nav--next { right: 12px; }
.dpg-slide-nav:hover { background: rgba(0,0,0,.62); }

.dpg-slide-dots {
  position: absolute; bottom: 12px; left: 0; right: 0;
  display: flex; justify-content: center; gap: 8px;
}
.dpg-dot {
  width: 9px; height: 9px; padding: 0; border: 0; border-radius: 50%;
  background: rgba(255,255,255,.55); cursor: pointer;
}
.dpg-dot.is-current { background: #fff; }

.dpg-work__caption {
  margin: 18px 0 0; border: 1px solid var(--dpg-line);
  border-radius: var(--dpg-radius); overflow: hidden;
}
.dpg-work__caption-row { display: flex; border-bottom: 1px solid var(--dpg-line); }
.dpg-work__caption-row:last-child { border-bottom: 0; }
.dpg-work__caption dt {
  flex: 0 0 120px; background: var(--dpg-bg-soft);
  padding: 10px 14px; font-weight: 600; color: var(--dpg-sub); margin: 0;
}
.dpg-work__caption dd { flex: 1; padding: 10px 14px; margin: 0; color: var(--dpg-ink); }
.dpg-work__body { margin-top: 18px; line-height: 1.8; }

/* ---------- 絞り込み ---------- */
.dpg-filter {
  display: flex; flex-wrap: wrap; gap: 8px;
  padding: 16px 0; border-top: 1px solid var(--dpg-line);
}
.dpg-filter__btn {
  border: 1px solid var(--dpg-line); background: #fff; color: var(--dpg-sub);
  padding: 6px 14px; font-size: .82rem; border-radius: 999px; cursor: pointer;
  transition: background .15s, color .15s, border-color .15s;
}
.dpg-filter__btn:hover { border-color: var(--dpg-accent); color: var(--dpg-accent); }
.dpg-filter__btn.is-active {
  background: var(--dpg-accent); border-color: var(--dpg-accent); color: #fff;
}

/* ---------- グリッド（正方形サムネイル・指示書 3.3） ---------- */
.dpg-grid {
  list-style: none; margin: 0; padding: 0;
  display: grid; gap: var(--dpg-gap);
  grid-template-columns: repeat(auto-fill, minmax(132px, 1fr));
}
.dpg-grid__link { display: block; text-decoration: none; color: inherit; }
.dpg-grid__img-wrap {
  display: block; position: relative; aspect-ratio: 1 / 1;
  background: var(--dpg-bg-soft); border-radius: var(--dpg-radius);
  overflow: hidden;
}
.dpg-grid__img-wrap img {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; /* object-position は inline で焦点指定 */
  transition: transform .3s;
}
.dpg-grid__item:hover .dpg-grid__img-wrap img { transform: scale(1.05); }
.dpg-grid__item.is-active .dpg-grid__img-wrap {
  outline: 3px solid var(--dpg-accent); outline-offset: 2px;
}
.dpg-grid__title {
  display: block; font-size: .76rem; color: var(--dpg-sub);
  margin-top: 6px; line-height: 1.35;
  transition: color .15s;
}
.dpg-grid__item:hover .dpg-grid__title,
.dpg-grid__item.is-active .dpg-grid__title { color: var(--dpg-accent-dark); }

/* 当社スタッフ過去実績も含む（ギャラリー下に控えめに） */
.dpg-staff-note {
  margin: 36px 0 0; text-align: center;
  font-size: .72rem; color: #999; font-weight: 500; letter-spacing: .02em;
}

@media (max-width: 680px) {
  .dpg-work__title { font-size: 1.15rem; }
  .dpg-work__caption-row { flex-direction: column; }
  .dpg-work__caption dt { flex-basis: auto; }
  .dpg-grid { grid-template-columns: repeat(auto-fill, minmax(104px, 1fr)); gap: 10px; }
  .dpg-slide-nav { width: 36px; height: 36px; font-size: 1.2rem; }
}
