/*
 * 神津牧場テーマ メインスタイル * 
 */

:root {
  /* カラーパレット */
  --color-green-dark: #304e41;
  --color-green-deep: #1a3322;
  --color-green-map: #1a3a2a;
  --color-gold: #b99e6b;
  --color-gold-deep: #a47a2b;
  --color-gold-icon: #b89047;
  --color-gold-heading: #b78e43;
  --color-gold-en: #91691d;
  --color-brown: #583e27;
  --color-brown-gray: #706155;
  --color-brown-text: #796a4f;
  --color-bg-gray: #f9f8f6;
  --color-bg-beige: #f3f0ec;
  --color-border-brown: rgba(112, 92, 56, 0.4);

  /* フォント */
  --font-serif: "Noto Serif JP", serif;
  --font-sans: "Noto Sans JP", sans-serif;
  --font-en: "Playfair Display", serif;
}

* {
  box-sizing: border-box;
}

body {
  margin: 0;
  color: var(--color-brown-gray);
  background: #fff;
  font-family: var(--font-sans);
  line-height: 1.7;
  -webkit-font-smoothing: antialiased;
}

img {
  max-width: 100%;
  height: auto;
}

a {
  color: inherit;
  text-decoration: none;
}

h1,
h2,
h3,
h4,
p,
ol,
ul,
li {
  margin: 0;
  padding: 0;
}

li {
  list-style: none;
}

/* 表示切替 */
.pc-only {
  display: none !important;
}
.sp-only {
  display: block !important;
}
span.sp-only,
br.sp-only {
  display: inline !important;
}

@media (min-width: 768px) {
  .pc-only {
    display: block !important;
  }
  .sp-only,
  span.sp-only,
  br.sp-only {
    display: none !important;
  }
  span.pc-only,
  br.pc-only,
  a.pc-only {
    display: inline !important;
  }
  img.pc-only {
    display: block !important;
  }
}

/* ============================================================
   ヘッダー(HTML納品版:ロゴのみ)
   ============================================================ */
.site-header {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  z-index: 100;
  display: flex;
  align-items: center;
  padding: 8px 20px;
}

.site-header__logo {
  width: 70px;
}

.site-header__logo img {
  display: block;
  width: 100%;
}

@media (min-width: 768px) {
  .site-header {
    padding: 10px 48px;
  }

  .site-header__logo {
    width: 100px;
  }
}

/* ============================================================
   メインビジュアル
   ============================================================ */
.mv {
  position: relative;
  height: 165vw; /* SP: 645/390 */
  max-height: 645px;
  overflow: hidden;
  z-index: 1;
}

.mv__slide {
  position: absolute;
  inset: 0;
}

.mv__slide-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center top;
  opacity: 0;
  transition: opacity 1.5s ease-in-out;
}

.mv__slide-img.is-active {
  opacity: 1;
}

.mv__catch {
  position: absolute;
  left: 20px;
  top: 68.7%; /* 443/645 */
  color: #fff;
  font-family: var(--font-serif);
  font-size: 20px;
  line-height: 30px;
  letter-spacing: 3px;
  text-shadow: 1.6px 1.6px 4.1px rgba(0, 0, 0, 0.4);
  white-space: nowrap;
}

.mv__titles {
  position: absolute;
  top: 16.4%; /* 106/645 */
  right: 10vw;
  display: flex;
  align-items: flex-start;
  gap: 19px;
}

.mv__title-img {
  width: 39px;
  height: auto;
  margin-top: 10px;
}

.mv__title-sub {
  writing-mode: vertical-rl;
  font-family: var(--font-serif);
  color: #fff;
  font-size: 20px;
  line-height: 1;
  letter-spacing: 7.3px;
  text-shadow: 1.4px 1.4px 3.5px rgba(0, 0, 0, 0.4);
}

@media (min-width: 768px) {
  .mv {
    height: 61.3vw; /* 1168/1905 */
    max-height: none;
  }

  .mv__catch {
    left: 10.6vw; /* 203/1905 */
    top: 44.3%; /* 521/1168 */
    font-size: 28px;
    line-height: 48px;
    letter-spacing: 10.8px;
    text-shadow: 2px 2px 5px rgba(0, 0, 0, 0.4);
  }

  .mv__titles {
    top: 18.2%; /* 205/1168 */
    right: 16.9vw;
    gap: 34px;
  }

  .mv__title-img {
    width: 57px;
    margin: 5px -2px 0 0;
  }

  .mv__title-sub {
    font-size: 30px;
    letter-spacing: 10px;
  }
}

/* ============================================================
   イントロダクション
   ============================================================ */
.intro {
  position: relative;
  z-index: 2;
  margin-top: -21vw; /* SPで波形がMVに重なる */
  padding: 38vw 20px 10vw;
}

/* 波背景:*/
.intro__bg {
  position: absolute;
  z-index: 0;
  top: 0;
  left: 0;
  right: 0;
  bottom: -2vw;
  background-image:
    url(../img/wave-beige-sp.svg), url(../img/wave-light-sp.svg),
    url(../img/wave-base-sp.svg);
  background-position:
    0 8.3vw,
    0 8.6vw,
    0 0;
  background-size:
    100% calc(100% - 8.3vw),
    100.7% 42.1vw,
    100.7% 55.5vw;
  background-repeat: no-repeat;
  pointer-events: none;
  overflow: hidden;
}

.intro__bg::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 30vw;
  background: url(../img/wave-beige-sp.svg) no-repeat 0 100%;
  background-size: 100% 328.08vw;
}

.intro__ripple {
  position: absolute;
  right: -4vw;
  top: 4vw;
  width: 43vw;
  height: 30vw;
  background: url(../img/ripple-texture.png) no-repeat;
  background-size: contain;
  -webkit-mask-image: radial-gradient(
    ellipse 50% 50% at 50% 50%,
    #000 40%,
    transparent 100%
  );
  mask-image: radial-gradient(
    ellipse 50% 50% at 50% 50%,
    #000 40%,
    transparent 100%
  );
}

.intro__inner {
  position: relative;
  display: flex;
  flex-direction: column-reverse;
  gap: 30px;
  max-width: 350px;
  margin: 0 auto;
}

.intro__text {
  text-align: center;
  margin-top: 10px; /* 指示:SPのみテキストBOXを10px下へ */
}

.intro__heading {
  font-family: var(--font-serif);
  font-weight: 400;
  color: var(--color-gold-heading);
  font-size: 24px;
  line-height: 36px;
  letter-spacing: 3px;
  padding-bottom: 30px;
}

.intro__body p {
  color: var(--color-brown-text);
  font-size: 14px;
  line-height: 24px;
}

.intro__body p + p {
  margin-top: 24px;
}

/* イラストエリア:写真3枚を合成した透過PNG(intro-illust.png)をそのまま表示。SP/PC共通 */
.intro__illust {
  position: relative;
  width: 100%;
  max-width: 350px;
  aspect-ratio: 779 / 738; /* intro-illust-sp.png の実寸比(SP専用・幅は共通) */
  margin: 0 auto;
}

.intro__illust-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

@media (min-width: 768px) {
  .intro {
    margin-top: -16.5vw;
    padding: 22.5vw clamp(24px, 2.5vw, 48px) 6vw;
  }

  .intro__bg {
    bottom: -6.8vw;
    background-image: linear-gradient(
      var(--color-bg-beige),
      var(--color-bg-beige)
    );
    background-position: 0 33vw;
    background-size: 100% calc(100% - 63vw);
  }

  .intro__bg::before,
  .intro__bg::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    background: url(../img/wave-top-pc.png) no-repeat;
    background-size: 100% auto;
  }

  .intro__bg::before {
    top: 0;
    height: 35vw;
    background-position: 0 0;
  }

  .intro__bg::after {
    bottom: 0;
    height: 32vw;
    background-position: 0 100%;
  }

  .intro__ripple {
    display: none;
  }

  .intro__inner {
    flex-direction: row;
    align-items: flex-start;
    justify-content: flex-start;
    gap: clamp(40px, 6vw, 100px);
    max-width: 1490px;
    margin-right: 190px;
  }

  .intro__illust {
    flex: 0 1 779px;
    max-width: 779px;
    aspect-ratio: 779 / 644; /* intro-illust.png の実寸比 */
    margin: 0;
  }

  .intro__text {
    flex: 1 1 auto;
    max-width: 671px;
    text-align: left;
    margin-top: 0;
    padding-top: 27px;
  }

  .intro__heading {
    font-size: clamp(24px, 1.89vw, 36px);
    line-height: 1.56;
    letter-spacing: 0.11em;
    padding-bottom: 50px;
  }

  .intro__body p {
    font-size: 16px;
    line-height: 28px;
  }

  .intro__body p + p {
    margin-top: 28px;
  }
}

/* ============================================================
   牧場紹介 / GOLDEN MILK & BUTTER
   ============================================================ */
.dairy {
  position: relative;
  z-index: 1;
}

/* 緑:牧場写真セクション */
.dairy__farm {
  position: relative;
  background: var(--color-green-dark);
  overflow: hidden;
  margin-top: -6.9vw;
  padding: 150px 20px;
}

.dairy__farm-bg {
  position: absolute;
  inset: 0;
  pointer-events: none;
}

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

.dairy__farm-overlay {
  position: absolute;
  inset: 0;
  background: rgba(39, 51, 46, 0.5);
}

.dairy__farm-content {
  position: relative;
  max-width: 350px;
  margin: 0 auto;
  text-align: center;
}

.dairy__heading {
  font-family: var(--font-serif);
  font-weight: 500;
  color: #fff;
  font-size: 24px;
  line-height: 36px;
  letter-spacing: 4px;
  padding-bottom: 40px;
}

.dairy__body p {
  color: #fff;
  font-size: 14px;
  line-height: 24px;
}

.dairy__body p + p {
  margin-top: 24px;
}

/* 金:プロダクトセクション */
.dairy__products {
  position: relative;
  margin-top: -9.1vw;
  z-index: 2;
}

.dairy__wave {
  display: block;
  width: 100%;
  height: 9.08vw;
}

.dairy__products-inner {
  background: var(--color-gold);
  padding: 70px 20px;
  margin-top: -1px;
  display: flex;
  flex-direction: column;
  align-items: center;
}

.dairy__products-inner .dairy__heading {
  font-weight: 400;
  text-align: center;
  padding-bottom: 30px;
}

.dairy__body--products {
  max-width: 350px;
  text-align: center;
  padding-bottom: 40px;
}

/* 商品行 */
.product-row {
  display: flex;
  gap: 16px;
  align-items: flex-start;
  width: 100%;
  max-width: 350px;
  border-top: 1px solid var(--color-border-brown);
  padding: 26px 10px 25px;
}

.product-row__img {
  position: relative;
  flex-shrink: 0;
  width: 104px;
  height: 104px;
  background: #fff;
  overflow: hidden;
}

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

.product-row--reverse {
  flex-direction: row-reverse;
}

.product-row__text {
  flex: 1;
}

.product-row__en {
  font-family: var(--font-en);
  color: var(--color-gold-en);
  font-size: 11px;
  font-weight: 400;
  line-height: 1.4;
  letter-spacing: 4px;
  text-transform: uppercase;
}

.product-row__title {
  font-family: var(--font-serif);
  font-weight: 600;
  color: var(--color-brown);
  font-size: 18px;
  line-height: 24px;
  padding-bottom: 8px;
}

.product-row__desc {
  color: var(--color-brown);
  font-weight: 400;
  font-size: 13px;
  line-height: 21px;
}

@media (min-width: 768px) {
  .dairy {
    display: flex;
    align-items: stretch;
  }

  .dairy__farm {
    width: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-top: 0;
    padding: 0 40px 220px;
  }

  .dairy__farm-content {
    max-width: 500px;
    margin: 236px auto 134px;
  }

  .dairy__heading {
    font-size: 36px;
    line-height: 56px;
  }

  .dairy__body p {
    font-size: 16px;
    line-height: 28px;
  }

  .dairy__body p + p {
    margin-top: 28px;
  }

  .dairy__products {
    width: 50%;
    margin-top: 0;
  }

  .dairy__products-inner {
    height: 100%;
    justify-content: center;
    padding: 128px 40px 295px;
  }

  .dairy__products-inner .dairy__heading {
    padding-bottom: 40px;
  }

  .dairy__body--products {
    max-width: 500px;
    padding-bottom: 60px;
  }

  .product-row {
    max-width: 500px;
    gap: 30px;
    padding: 31px 10px 30px;
  }

  .product-row__img {
    width: 146px;
    height: 146px;
  }

  .product-row__title {
    font-size: 22px;
    line-height: 28px;
  }

  .product-row__desc {
    font-size: 15px;
    line-height: 25px;
  }
}

/* ============================================================
   所在地
   ============================================================ */
.location {
  position: relative;
  z-index: 3;
  margin-top: -9.1vw;
}

.location__wave img {
  display: block;
  width: 100%;
  height: 9.08vw;
}

.location__body {
  background: var(--color-bg-gray);
  margin-top: 0;
  padding: 80px 40px 120px 40px;
}

.location__inner {
  display: flex;
  flex-direction: column;
  gap: 75px;
  max-width: 1185px;
  margin: 0 auto;
}

.eyebrow {
  font-family: var(--font-en);
  color: var(--color-gold-deep);
  font-size: 11px;
  line-height: 1.4;
  letter-spacing: 4px;
  text-transform: uppercase;
}

.label-en {
  font-family: var(--font-en);
  font-weight: 400;
  color: var(--color-gold-deep);
  font-size: 10px;
  line-height: 1.4;
  letter-spacing: 2.4px;
  text-transform: uppercase;
}

.location__heading {
  font-family: var(--font-serif);
  font-weight: 400;
  color: var(--color-green-deep);
  font-size: 24px;
  line-height: 36px;
  letter-spacing: 4.8px;
}

.location__org {
  font-family: var(--font-serif);
  font-weight: 400;
  color: var(--color-green-deep);
  font-size: 20px;
  line-height: 34px;
  letter-spacing: 1.8px;
  border-top: 1px solid var(--color-border-brown);
  margin-top: 10px;
  padding-top: 20px;
}

.location__block {
  padding-top: 20px;
}

.location__address {
  color: var(--color-brown-gray);
  font-size: 14px;
  line-height: 1.6;
  padding-top: 8px;
}

.location__tel {
  display: flex;
  align-items: center;
  gap: 9px;
  color: var(--color-brown-gray);
  font-size: 14px;
  line-height: 1.3;
  padding-top: 7px;
}

.location__tel i {
  color: var(--color-gold-icon);
  font-size: 13px;
}

.sns-circle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  border: 0.8px solid rgba(185, 158, 107, 0.8);
  border-radius: 9999px;
}

.sns-circle i {
  color: var(--color-gold-icon);
  font-size: 20px;
}

.sns-circle img {
  width: 18px;
  height: 18px;
}

/* MAPカード */
.map-card {
  overflow: hidden;
}

.map-card__head {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.map-card__title {
  font-family: var(--font-en);
  font-weight: 500;
  color: var(--color-green-map);
  font-size: 22px;
  line-height: 28px;
  letter-spacing: 1px;
}

.map-card__route {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  align-self: flex-start;
  border: 0.8px solid rgba(26, 58, 42, 0.3);
  border-radius: 9999px;
  color: var(--color-brown-gray);
  font-size: 13px;
  line-height: 16px;
  padding: 6px 16px;
  white-space: nowrap;
}

.map-card__route i {
  color: var(--color-gold-icon);
  font-size: 14px;
}

.map-card__map {
  position: relative;
  height: 200px;
  background: #f0f4f1;
  border: 0.8px solid rgba(26, 58, 42, 0.1);
  margin-top: 20px;
  overflow: hidden;
}

.map-card__map > img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: left top;
}

.map-card__map::before {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(26, 58, 42, 0.05);
  pointer-events: none;
}

.map-card__gmap {
  position: absolute;
  right: 13px;
  bottom: 13px;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: #fff;
  border-radius: 9999px;
  padding: 9px 21px;
  font-weight: 700;
  color: var(--color-green-map);
  font-size: 11px;
  letter-spacing: 1px;
  white-space: nowrap;
  filter: drop-shadow(0 9px 7px rgba(0, 0, 0, 0.1))
    drop-shadow(0 3.5px 2.7px rgba(0, 0, 0, 0.1));
}

.map-card__gmap i {
  color: var(--color-gold-icon);
  font-size: 11px;
}

.map-card__note {
  display: flex;
  align-items: center;
  gap: 8px;
  color: var(--color-brown-gray);
  font-size: 14px;
  line-height: 1.4;
  padding-top: 15px;
}

.map-card__note i {
  color: var(--color-gold-icon);
  font-size: 16px;
}

.location__cta {
  display: flex;
  justify-content: center;
  padding-top: 50px;
}

.btn-gold {
  display: inline-block;
  background: var(--color-gold);
  color: #fff;
  font-family: var(--font-serif);
  font-weight: 600;
  font-size: 15px;
  line-height: 1.3;
  letter-spacing: 1.4px;
  text-align: center;
  padding: 16px 32px;
  transition: opacity 0.3s ease;
}

.btn-gold:hover {
  opacity: 0.85;
}

@media (min-width: 768px) {
  .location__body {
    padding: 110px 48px 177px;
  }

  .location__inner {
    flex-direction: row;
    gap: 77px;
  }

  .location__info {
    flex: 0 1 40%;
  }

  .location__map {
    flex: 1 1 60%;
  }

  .eyebrow {
    font-size: 14px;
    line-height: 20px;
  }

  .label-en {
    font-size: 12px;
    letter-spacing: 3px;
  }

  .location__heading {
    font-size: 36px;
    line-height: 48px;
  }

  .location__org {
    font-size: 24px;
    letter-spacing: 2.8px;
    margin-top: 11px;
    padding-top: 31px;
  }

  .location__block {
    padding-top: 33px;
  }

  .location__address,
  .location__tel {
    font-size: 16px;
  }

  .map-card {
    background: rgba(255, 255, 255, 0.5);
    padding: 20px 40px;
  }

  .map-card__head {
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
  }

  .map-card__title {
    font-size: 24px;
  }

  .map-card__route {
    font-size: 14px;
    padding: 6px 21px; /* PCは従来どおり */
  }

  .map-card__map {
    height: 320px;
    margin-top: 24px;
  }

  .map-card__map > img {
    object-position: center;
  }

  .map-card__gmap {
    right: 24px;
    bottom: 24px;
    font-size: 12px;
    letter-spacing: 1.2px;
    padding: 10px 24px;
  }

  .map-card__gmap i {
    font-size: 12px;
  }

  .map-card__note {
    padding-top: 24px;
  }

  .btn-gold {
    font-size: 16px;
  }
}

/* ============================================================
   フッター
   ============================================================ */
.site-footer {
  background: var(--color-bg-gray);
  border-top: 0.8px solid #e2e2e2;
  padding: 60px 20px 25px;
}

.site-footer__inner {
  max-width: 1500px;
  margin: 0 auto;
}

.site-footer__cols {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.site-footer__name {
  font-family: var(--font-serif);
  font-weight: 600;
  color: var(--color-green-deep);
  font-size: 22px;
  line-height: 28px;
  letter-spacing: 6px;
}

.site-footer__name-en {
  font-family: var(--font-en);
  color: var(--color-brown-gray);
  font-size: 9px;
  line-height: 1.5;
  letter-spacing: 3.6px;
  text-transform: uppercase;
  padding-top: 2px;
}

/* 店舗情報(ゴシック体)
   SP: 通常フローで折り返しは行頭へ(営業時間の2行目が左端に揃う)。
       所在地の行だけ2列グリッドで、2行目を値の位置に揃える */
.site-footer__shop {
  font-family: var(--font-sans);
  color: var(--color-brown-gray);
  font-size: 14px;
  line-height: 1.7;
  letter-spacing: 1.2px;
  padding-top: 13px;
}

.site-footer__shop-row {
  display: block;
}

.site-footer__shop dt,
.site-footer__shop dd {
  display: inline;
  margin: 0; /* ブラウザ既定の margin-inline-start を打ち消す */
}

.site-footer__shop-row--address {
  display: grid;
  grid-template-columns: max-content 1fr;
  column-gap: 7px;
}

.site-footer__photo {
  max-width: 353px;
}

.site-footer__photo img {
  display: block;
  width: 100%;
}

.site-footer__links {
  display: flex;
}

.site-footer__col {
  width: 170px;
  display: flex;
  flex-direction: column;
}

.site-footer__col-title {
  font-family: var(--font-en);
  color: var(--color-gold-deep);
  font-size: 14px;
  line-height: 16px;
  letter-spacing: 2.7px;
  text-transform: uppercase;
  padding: 20px 0 8px;
}

.site-footer__col a {
  font-family: var(--font-serif);
  color: var(--color-brown-gray);
  font-size: 14px;
  line-height: 1.3;
  letter-spacing: 0.6px;
  padding-top: 12px;
}

.site-footer__sns-icons {
  display: flex;
  gap: 10px;
  padding-top: 10px;
}

.sns-circle--plain {
  width: 30px;
  height: 30px;
  border: 0;
}

.site-footer__bottom {
  border-top: 1px solid rgba(226, 226, 226, 0.6);
  margin-top: 30px;
  padding-top: 21px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
}

.site-footer__copyright {
  color: var(--color-brown-gray);
  font-size: 10px;
  line-height: 15px;
  letter-spacing: 0.5px;
  text-align: center;
}

@media (min-width: 768px) {
  .site-footer {
    padding: 64px 50px;
  }

  .site-footer__cols {
    flex-direction: row;
    justify-content: flex-start;
    align-items: flex-start;
    gap: 40px;
  }

  .site-footer__brand {
    flex: 0 1 580px;
  }

  .site-footer__photo {
    flex: 0 0 352px;
    max-width: 352px;
  }

  .site-footer__sns {
    margin-left: auto;
  }

  /* PC: 全行を2列グリッドにしてラベル列・値列を整列 */
  .site-footer__shop {
    display: grid;
    grid-template-columns: max-content 1fr;
    column-gap: 16px;
    font-size: 15px;
  }

  .site-footer__shop-row {
    display: contents;
  }

  .site-footer__shop dt {
    white-space: nowrap;
  }

  .site-footer__shop dd {
    white-space: nowrap;
  }

  .site-footer__col {
    width: 227px;
  }

  .site-footer__col-title {
    font-size: 16px;
  }

  .site-footer__sns {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
  }

  .site-footer__sns .site-footer__col-title {
    font-family: var(--font-serif);
    font-weight: 400;
    padding-bottom: 16px;
  }

  .site-footer__bottom {
    margin-top: 64px;
    padding-top: 33px;
  }
}
