/*
 * えちごや：サイトのデザイン設定
 * 2スペースでインデント。設定値・ルールの順序は変更していません。
 * 同じ指定が複数ある場合、後半の「最終調整」が優先されることがあります。
 * Ctrl+Fで「FVの最終調整」「ヘッダーの最終調整」などを検索してください。
 * @mediaは画面幅別の設定です。例：max-width:700px＝スマホ向け。
 */

/* ==================================================
   01 共通設定：色・角丸・サイト最大幅（--max）
   ================================================== */
:root {
  --ink: #243c34;
  --green: #155c38;
  --green-dark: #113e29;
  --sage: #eff6e9;
  --cream: #fffaf2;
  --peach: #fff0df;
  --blue: #edf6fb;
  --orange: #984607;
  --line: #d9e2d9;
  --radius: 18px;
  --max: 1300px
}

/* ==================================================
   02 基本設定：本文・見出し・リンク・共通余白
   ================================================== */
* {
  box-sizing: border-box
}

html {
  scroll-behavior: smooth;
  scroll-padding-top: 110px
}

body {
  margin: 0;
  background: #fff;
  color: var(--ink);
  font-family: "Noto Sans JP","Hiragino Kaku Gothic ProN","Yu Gothic",Meiryo,sans-serif;
  font-weight: 400;
  font-size: 18px;
  line-height: 1.9;
  overflow-wrap: anywhere
}

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

a {
  color: var(--green);
  text-underline-offset: .22em
}

button,input {
  font: inherit
}

a,button {
  -webkit-tap-highlight-color: transparent
}

a: focus-visible,button:focus-visible {
  outline: 3px solid #a34808;
  outline-offset: 5px
}

h1,h2,h3,h4,p {
  margin: 0
}

h1,h2,h3,h4 {
  line-height: 1.5;
  font-weight: 700;
  color: var(--green-dark)
}

h2 {
  font-size: clamp(27px,3vw,38px);
  letter-spacing: .035em
}

h3 {
  font-size: 28px
}

h4 {
  font-size: 20px
}

p+p {
  margin-top: 1em
}

ul,ol {
  padding-left: 1.5em
}

li+li {
  margin-top: .6em
}

.wrap {
  width: min(var(--max),calc(100% - 64px));
  margin-inline: auto
}

.section {
  padding-block: 80px
}

.centered {
  text-align: center
}

.section-heading {
  margin-bottom: 36px
}

.section-kicker {
  font-size: 16px;
  font-weight: 700;
  color: #6e522d;
  letter-spacing: .1em;
  margin-bottom: 10px
}

/* ごあいさつの補足見出しだけを小さくする（装飾用spanには適用しない） */
.about .section-heading h2 span {
  font-size: .73em
}

.icon {
  width: 36px;
  height: 36px;
  flex: none
}

.screen-reader-text {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0,0,0,0);
  white-space: nowrap;
  border: 0
}

.skip-link {
  position: fixed;
  left: 16px;
  top: -100px;
  z-index: 100;
  background: white;
  padding: 12px 20px
}

.skip-link:focus {
  top: 12px
}

[hidden] {
  display: none!important
}

/* ==================================================
   03 ヘッダー：ロゴ・メニュー・電話
   ================================================== */
.site-header {
  position: sticky;
  top: 0;
  z-index: 30;
  background: rgba(255,255,255,.97);
  border-bottom: 1px solid #e9ece7
}

.admin-bar .site-header {
  top: 32px
}

.header-inner {
  max-width: 1400px;
  margin: auto;
  min-height: 94px;
  padding: 14px 28px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px
}

.brand,.custom-logo-link {
  display: inline-flex;
  flex-shrink: 0
}

.brand img,.custom-logo {
  width: 190px;
  height: auto;
  max-height: 70px;
  object-fit: contain
}

.nav-list {
  display: flex;
  gap: 22px;
  padding: 0;
  margin: 0;
  list-style: none;
  font-size: 15px;
  font-weight: 700
}

.nav-list li+li {
  margin: 0
}

.nav-list a {
  display: block;
  padding: 10px 0;
  text-decoration: none
}

.nav-list a:hover {
  text-decoration: underline
}

.header-phone {
  font-size: 24px;
  font-weight: 800;
  line-height: 1.3;
  text-decoration: none;
  white-space: nowrap
}

.header-phone small {
  display: block;
  font-size: 15px;
  text-align: center;
  margin-top: 3px;
}

.menu-toggle {
  border: 1px solid var(--line);
  background: #fff;
  border-radius: 8px;
  color: var(--green-dark);
  padding: 10px 12px;
  font-size: 15px;
  cursor: pointer
}

/* ==================================================
   04 FVの基本設定 ※後半の「FVの最終調整」も参照
   ================================================== */
.hero {
  position: relative;
  min-height: 560px;
  background: var(--cream);
  isolation: isolate;
  display: flex;
  align-items: center
}

.hero-art {
  position: absolute;
  inset: 0;
  z-index: -2
}

.hero-art img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center
}

.hero:after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg,rgba(255,252,245,.97) 0%,rgba(255,252,245,.93) 30%,rgba(255,252,245,.55) 48%,transparent 64%);
  z-index: -1
}

.hero-content {
  padding-block: 56px
}

.hero-content>p:not(.eyebrow) {
  max-width: 490px;
  font-weight: 600
}

.eyebrow {
  font-size: 16px;
  background: #ffe2c6;
  padding: 7px 14px;
  border-radius: 24px;
  display: table;
  max-width: 540px;
  font-weight: 700
}

.hero h1 {
  font-size: clamp(32px,3.4vw,49px);
  line-height: 1.55;
  max-width: 650px;
  margin: 22px 0
}

.hero-contact {
  position: relative;
  margin-top: -18px;
  background: #fff;
  border-radius: var(--radius);
  padding: 24px 32px;
  box-shadow: 0 4px 22px #16332114
}

.hero-contact>p {
  text-align: center;
  margin-top: 8px;
  font-size: 16px
}

.contact-buttons {
  display: flex;
  align-items: stretch;
  justify-content: center;
  gap: 24px
}

.button {
  min-height: 72px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 18px;
  padding: 14px 28px;
  border-radius: 12px;
  text-decoration: none;
  font-weight: 700;
  background: var(--green);
  color: white;
  line-height: 1.45;
  transition: background .15s
}

.button:hover {
  background: #0d4328
}

.button-phone {
  background: transparent;
  color: var(--green-dark);
  flex: 1
}

.button-phone:hover {
  background: var(--sage)
}

.button-phone small {
  font-size: 15px;
  display: block
}

.button-phone strong {
  font-size: clamp(25px,3.2vw,40px);
  white-space: nowrap
}

.button-line {
  flex: 1;
  background: #087b32
}

.line-label {
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: #fff;
  color: #087b32;
  width: 46px;
  height: 46px;
  font-size: 13px;
  flex-shrink: 0
}

/* ==================================================
   05 毎日の困った：基本設定 ※後半に囲み・幅の最終調整あり
   ================================================== */
.problems {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 70px;
  align-items: center
}

.problems h2 {
  font-size: clamp(25px,2.8vw,34px)
}

.basket-art {
  max-width: 250px;
  max-height: 210px;
  object-fit: contain;
  margin-top: 20px
}

.check-list {
  list-style: none;
  margin: 0;
  padding: 0;
  font-size: 21px;
  font-weight: 700
}

.check-list li {
  position: relative;
  padding-left: 43px
}

.check-list li:before {
  content: "\2713";
  position: absolute;
  left: 0;
  top: 4px;
  display: grid;
  place-items: center;
  width: 29px;
  height: 29px;
  border-radius: 50%;
  background: var(--green);
  color: white;
  font-size: 19px
}

.check-list li+li {
  margin-top: 24px
}

/* ==================================================
   06 ごあいさつ・本文
   ================================================== */
.about {
  background: var(--cream)
}

.reading-layout {
  display: grid;
  grid-template-columns: 300px 1fr;
  gap: 70px
}

.clover {
  width: 85px;
  height: 85px;
  object-fit: contain;
  margin-top: 24px
}

.prose {
  max-width: 780px;
  line-height: 2.1
}

.prose p+p {
  margin-top: 1.15em
}

/* ==================================================
   07 サービス・料金表
   ================================================== */
.services {
  background: #fff
}

.service-links {
  display: grid;
  grid-template-columns: repeat(3,1fr);
  gap: 16px;
  margin-bottom: 32px
}

.service-links a {
  border: 1px solid var(--line);
  border-bottom: 4px solid var(--green);
  padding: 16px 10px;
  border-radius: 10px;
  text-align: center;
  font-weight: 700;
  text-decoration: none;
  background: var(--sage)
}

.service-links a:nth-child(2) {
  background: var(--peach);
  border-bottom-color: #b95b18;
  color: #803806
}

.service-links a:nth-child(3) {
  background: var(--blue);
  border-bottom-color: #2b739b;
  color: #165577
}

.service-card {
  --accent: var(--green);
  --tint: var(--sage);
  border: 1px solid #d6e2d1;
  border-top: 5px solid var(--accent);
  border-radius: var(--radius);
  padding: 36px;
  margin-top: 28px;
  scroll-margin-top: 110px
}

.delivery {
  --accent: #a94d09;
  --tint: var(--peach);
  border-color: #eedbc7
}

.same-day {
  --accent: #1a6691;
  --tint: var(--blue);
  border-color: #ccdfed
}

.service-intro {
  display: grid;
  grid-template-columns: 300px 1fr;
  gap: 36px;
  align-items: start
}

.service-intro h3 {
  display: flex;
  gap: 18px;
  align-items: center;
  color: var(--accent)
}

.service-intro h3 .icon {
  width: 46px;
  height: 46px
}

.service-intro h3 small {
  display: block;
  font-size: 14px;
  letter-spacing: .15em;
  margin-bottom: 3px
}

.service-intro p {
  margin: 0
}

.service-intro p+p {
  margin-top: 12px
}

.service-details {
  display: grid;
  grid-template-columns: 1fr 1.1fr;
  gap: 32px;
  margin-top: 28px
}

.price-box {
  background: var(--tint);
  padding: 22px;
  border-radius: 12px
}

.price-box p {
  margin-top: 8px
}

.price {
  font-size: 42px;
  line-height: 1.4;
  white-space: nowrap;
  color: var(--ink)
}

.price span {
  font-size: 23px
}

.note-list {
  font-size: 17px;
  margin: 0;
  padding: 0;
  list-style: none
}

.note-list li {
  padding-left: 1.2em;
  position: relative
}

.note-list li::before {
  content: "\203B";
  position: absolute;
  left: 0px;
}

.delivery-details {
  display: grid;
  grid-template-columns: .8fr 1fr;
  gap: 40px;
  margin-top: 28px;
  align-items: start
}

.price-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 18px
}

.price-table th,.price-table td {
  padding: 10px 16px;
  border-bottom: 1px solid #eadccd;
  text-align: left
}

.price-table thead {
  background: var(--peach)
}

.price-table tbody th {
  font-weight: 400
}

.price-table td {
  font-weight: 700;
  white-space: nowrap
}

/* ==================================================
   08 対応地域
   ================================================== */
.area {
  background: var(--blue)
}

.area-layout {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 40px
}

.area-name {
  font-size: clamp(22px,2.6vw,30px);
  font-weight: 700;
  margin-top: 22px
}

.area-art {
  max-width: 40%;
  max-height: 280px;
  object-fit: contain
}

/* ==================================================
   09 受付・ご利用の流れ
   ================================================== */
.reception-info {
  display: flex;
  justify-content: center;
  gap: 60px;
  margin: 0 0 32px
}

.reception-info>div {
  display: flex;
  align-items: center;
  gap: 20px
}

.reception-info dt {
  font-size: 16px
}

.reception-info dd {
  margin: 0;
  font-size: 27px;
  font-weight: 700
}

.callback-note,.line-url {
  text-align: center;
  font-size: 16px;
  margin-top: 18px
}

.flow {
  background: var(--cream)
}

.steps {
  list-style: none;
  display: grid;
  grid-template-columns: repeat(3,1fr);
  gap: 28px;
  padding: 0;
  margin: 0;
  counter-reset: steps
}

.steps li {
  position: relative;
  margin: 0;
  padding: 30px 26px;
  border: 1px solid #ece1d0;
  background: #fff;
  border-radius: var(--radius)
}

.step-number {
  display: inline-grid;
  place-items: center;
  width: 45px;
  height: 45px;
  background: #ffdfbf;
  border-radius: 50%;
  font-weight: 700;
  margin-right: 20px
}

.steps .icon {
  color: var(--green);
  vertical-align: middle
}

.steps h3 {
  font-size: 22px;
  margin: 22px 0 14px
}

.steps p {
  font-size: 18px
}

/* ==================================================
   10 安心・安全／大切なお知らせ
   ================================================== */
.assurance-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 30px
}

.assurance,.notices {
  padding: 34px;
  border-radius: var(--radius)
}

.assurance {
  background: var(--sage)
}

.notices {
  background: var(--blue)
}

.assurance-grid h2 {
  font-size: 26px;
  margin-bottom: 22px
}

.assurance .icon {
  width: 65px;
  height: 65px;
  color: var(--green);
  margin-bottom: 18px
}

.notices ul {
  margin-bottom: 0
}

/* ==================================================
   11 お問い合わせ・最後のごあいさつ
   ================================================== */
.contact {
  background: #fff5d8
}

.contact-hours {
  text-align: center;
  margin-top: 22px;
  font-size: 21px
}

.closing {
  max-width: 850px
}

/* ==================================================
   12 フッター
   ================================================== */
.site-footer {
  border-top: 1px solid var(--line);
  background: #fff;
  padding: 40px 0
}

.footer-inner {
  display: flex;
  gap: 30px;
  align-items: center;
  flex-wrap: wrap
}

.footer-inner p {
  font-size: 14px;
  margin: 0
}

.footer-inner small {
  font-size: 13px;
  margin-left: auto
}

.footer-landscape {
  max-width: 38%;
  max-height: 150px;
  object-fit: contain
}

.privacy-link {
  margin-top: 20px;
  font-size: 14px
}

.mobile-contact {
  display: none
}

/* ==================================================
   13 通常ページ・投稿
   ================================================== */
.document-page {
  min-height: 60vh;
  max-width: 900px
}

.entry+.entry {
  margin-top: 60px
}

.entry-content {
  margin-top: 32px
}

.entry-content iframe {
  max-width: 100%
}

.entry-content .alignwide {
  max-width: 100%
}

/* 毎日の困った：参考画像に合わせた配置 */
.problems {
  grid-template-columns: 1fr 1fr;
  gap: 48px;
  padding-block: 52px 44px;
  align-items: center;
  background: #fff
}

.problems h2 {
  font-size: clamp(26px,2.7vw,38px);
  line-height: 1.5;
  letter-spacing: .015em
}

.problems-visual {
  display: flex;
  align-items: center;
  gap: 32px;
  margin-top: 10px;
  max-width: 520px
}

.problems .basket-art {
  display: block;
  width: 235px;
  max-width: 48%;
  height: auto;
  max-height: none;
  margin: 0;
  object-fit: contain
}

.problems-message {
  position: relative;
  color: var(--green-dark);
  font-size: 19px;
  font-weight: 500;
  line-height: 1.9;
  letter-spacing: .12em;
  transform: rotate(-7deg);
  margin: 0;
  white-space: nowrap
}

.problems-rays {
  position: absolute;
  width: 24px;
  height: 52px;
  left: -30px;
  top: 4px;
  transform: rotate(7deg)
}

.problems-rays i {
  position: absolute;
  display: block;
  left: 5px;
  top: 25px;
  width: 16px;
  height: 3px;
  background: #edb72d;
  border-radius: 4px
}

.problems-rays i:first-child {
  top: 8px;
  transform: rotate(-45deg)
}

.problems-rays i:last-child {
  top: 42px;
  transform: rotate(35deg)
}

.problems .check-list {
  border-left: 1px solid #b3c3b9;
  padding: 2px 0 2px 40px;
  font-size: 21px;
  line-height: 1.7
}

.problems .check-list li {
  padding-left: 43px
}

.problems .check-list li+li {
  margin-top: 30px
}

/* ==================================================
   14 画面幅に応じた基本調整：大きなPC → タブレット → スマホ
   ================================================== */
@media(min-width:1500px) {
  .hero {
    min-height: 650px
  }

}

@media(max-width:1100px) {
  .header-phone {
    display: none
  }

  .header-inner {
    gap: 18px
  }

  .nav-list {
    gap: 16px
  }

  .service-intro {
    grid-template-columns: 260px 1fr
  }

  .reading-layout {
    grid-template-columns: 240px 1fr;
    gap: 40px
  }

}

@media(max-width:980px) {
  .header-inner {
    flex-wrap: wrap;
    min-height: 78px;
    padding: 10px 22px
  }

  .brand img,.custom-logo {
    width: 155px;
    max-height: 55px
  }

  #primary-nav {
    width: 100%
  }

  .nav-list {
    flex-wrap: wrap;
    justify-content: center
  }

  .has-menu-js #primary-nav {
    display: none
  }

  .has-menu-js #primary-nav.is-open {
    display: block
  }

  .has-menu-js .menu-toggle {
    margin-left: auto
  }

  .hero-content>p:not(.eyebrow) {
    max-width: 430px
  }

  .hero h1 {
    max-width: 520px
  }

  .hero {
    min-height: 560px
  }

  .hero:after {
    background: linear-gradient(90deg,#fffcf5 0%,#fffcf5eb 35%,#fffcf58c 56%,transparent 85%)
  }

  .contact-buttons {
    gap: 16px
  }

  .button {
    padding: 14px 20px
  }

  .button-phone strong {
    font-size: 30px
  }

  .reading-layout {
    grid-template-columns: 1fr
  }

  .reading-layout .section-heading {
    margin-bottom: 0
  }

  .clover {
    display: none
  }

  .prose {
    max-width: none
  }

  .service-intro {
    grid-template-columns: 1fr;
    gap: 20px
  }

  .steps {
    gap: 16px
  }

  .steps li {
    padding: 22px 18px
  }

  .reception-info {
    gap: 30px
  }

  .reception-info>div {
    display: block
  }

  .assurance-grid {
    gap: 20px
  }

  .assurance,.notices {
    padding: 26px
  }

}

@media(max-width:700px) {
  html {
    scroll-padding-top: 95px
  }

  .wrap {
    width: calc(100% - 36px)
  }

  body {
    font-size: 18px;
    padding-bottom: calc(78px + env(safe-area-inset-bottom))
  }

  .section {
    padding-block: 52px
  }

  .admin-bar .site-header {
    top: 46px
  }

  .header-inner {
    padding-inline: 18px
  }

  .nav-list {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0 18px;
    font-size: 16px
  }

  .nav-list a {
    padding: 12px 0
  }

  .hero {
    display: flex;
    flex-direction: column;
    min-height: 0;
    background: var(--cream)
  }

  .hero-art {
    position: relative;
    order: 0;
    width: 100%;
    height: 235px;
    z-index: 0
  }

  .hero-art img {
    object-position: 85% center
  }

  .hero:after {
    display: none
  }

  .hero-content {
    order: 1;
    padding: 26px 0 42px
  }

  .hero h1 {
    font-size: 30px;
    margin: 18px 0;
    line-height: 1.55
  }

  .eyebrow {
    font-size: 15px;
    padding: 7px 12px;
    border-radius: 8px
  }

  .desktop-break {
    display: none
  }

  .hero-content>p:not(.eyebrow) {
    max-width: none;
    font-weight: 400
  }

  .hero-contact {
    margin-top: 0;
    padding: 20px;
    box-shadow: none;
    border: 1px solid var(--line);
    margin-block: 22px 0
  }

  .contact-buttons {
    flex-direction: column;
    gap: 12px
  }

  .button {
    width: 100%;
    min-height: 72px;
    padding: 14px 16px
  }

  .button-phone strong {
    font-size: 32px
  }

  .button-line {
    font-size: 19px
  }

  .problems {
    grid-template-columns: 1fr;
    gap: 26px
  }

  .problems h2 {
    font-size: 27px
  }

  .check-list {
    font-size: 18px
  }

  .check-list li+li {
    margin-top: 18px
  }

  .basket-art {
    max-width: 180px
  }

  .service-links {
    grid-template-columns: 1fr;
    gap: 10px
  }

  .service-links a {
    text-align: left;
    padding: 12px 18px;
    border-bottom-width: 2px
  }

  .section-heading {
    margin-bottom: 26px
  }

  .service-card {
    padding: 24px 20px;
    margin-top: 22px
  }

  .service-intro h3 {
    font-size: 26px
  }

  .service-intro h3 .icon {
    width: 38px;
    height: 38px
  }

  .service-details,.delivery-details {
    grid-template-columns: 1fr;
    gap: 24px;
    margin-top: 22px
  }

  .price-box {
    padding: 18px
  }

  .price {
    font-size: 38px
  }

  .price-table {
    font-size: 16px
  }

  .price-table th,.price-table td {
    padding: 10px 8px
  }

  .note-list {
    font-size: 17px
  }

  .area-layout {
    display: block
  }

  .area-art {
    max-width: 100%;
    margin-top: 22px
  }

  .reception-info {
    display: block
  }

  .reception-info>div {
    display: flex;
    gap: 18px;
    margin-top: 14px
  }

  .reception-info dd {
    font-size: 24px
  }

  .steps {
    grid-template-columns: 1fr;
    gap: 18px
  }

  .steps li {
    padding: 25px
  }

  .steps h3 {
    margin-top: 18px;
    font-size: 22px
  }

  .assurance-grid {
    grid-template-columns: 1fr
  }

  .callback-note {
    text-align: left
  }

  .line-url {
    font-size: 16px
  }

  .contact .section-heading p {
    text-align: left
  }

  .footer-inner {
    gap: 20px
  }

  .footer-inner small {
    width: 100%;
    margin: 0
  }

  .footer-landscape {
    max-width: 100%;
    width: 100%
  }

  .footer-inner p {
    font-size: 14px
  }

  .mobile-contact {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1px;
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    z-index: 40;
    background: #fff;
    box-shadow: 0 -2px 12px #0000000e;
    padding-bottom: env(safe-area-inset-bottom)
  }

  .mobile-contact a {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 72px;
    color: white;
    background: var(--green);
    text-decoration: none;
    font-size: 18px;
    font-weight: 700;
    line-height: 1.5
  }

  .mobile-contact a:last-child {
    background: #087b32
  }

  .mobile-contact span {
    font-size: 12px;
    font-weight: 400
  }

  .document-page {
    min-height: 50vh
  }

  .closing .prose {
    font-size: 18px
  }

}

@media(max-width:380px) {
  .button-phone strong {
    font-size: 27px
  }

  .hero h1 {
    font-size: 27px
  }

  .service-card {
    padding: 20px 15px
  }

  .price-table {
    font-size: 15px
  }

  .service-intro h3 {
    font-size: 23px
  }

}

@media(max-width:980px) and (min-width:701px) {
  .problems {
    gap: 24px
  }

  .problems h2 {
    font-size: 26px
  }

  .problems-visual {
    gap: 24px
  }

  .problems-message {
    font-size: 15px;
    letter-spacing: .06em
  }

  .problems .check-list {
    padding-left: 24px;
    font-size: 18px
  }

  .problems .check-list li {
    padding-left: 38px
  }

}

@media(max-width:700px) {
  .problems {
    grid-template-columns: 1fr;
    gap: 24px;
    padding-block: 40px
  }

  .problems h2 {
    font-size: clamp(23px,6.3vw,29px)
  }

  .problems-visual {
    gap: 28px;
    margin-top: 0px;
    max-width: 440px
  }

  .problems .basket-art {
    width: 190px;
    max-width: 48%
  }

  .problems-message {
    font-size: 16px;
    letter-spacing: .08em
  }

  .problems .check-list {
    border-left: 0;
    border-top: 1px solid #d6e0d9;
    padding: 24px 0 0;
    font-size: 18px
  }

  .problems .check-list li+li {
    margin-top: 20px
  }

}

@media(max-width:360px) {
  .problems-message {
    font-size: 14px;
    letter-spacing: .03em
  }

  .problems-visual {
    gap: 24px
  }

  .problems-rays {
    left: -25px
  }

}

@media(prefers-reduced-motion:reduce) {
  html {
    scroll-behavior: auto
  }

  * {
    transition: none!important
  }

}

/* FVの最終調整：画像を切り取らず、本来の縦横比で表示 */
.hero {
  display: grid;
  grid-template-columns: minmax(0,1fr);
  min-height: 0;
  align-items: center
}

.hero-art {
  position: relative;
  inset: auto;
  grid-area: 1/1;
  width: 100%;
  height: auto;
  align-self: start;
  z-index: -2
}

.hero-art img {
  display: block;
  width: 100%;
  height: auto;
  max-height: none;
  object-fit: contain;
  object-position: center
}

.hero-content {
  grid-area: 1/1;
  position: relative;
  padding-block: 36px
}

@media(max-width:980px) {
  .hero {
    display: flex;
    flex-direction: column;
    min-height: 0
  }

  .hero-art {
    position: relative;
    order: 0;
    height: auto;
    z-index: 0
  }

  .hero:after {
    display: none
  }

  .hero-content {
    order: 1;
    padding-block: 26px 42px
  }

  .hero-content>p:not(.eyebrow),.hero h1 {
    max-width: none
  }

}

/* ヘッダー：LINEボタンとスマホ配置 */
.header-inner {
  gap: 18px
}

.header-line {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 48px;
  padding: 10px 14px;
  border-radius: 10px;
  background: #087b32;
  color: #fff;
  text-decoration: none;
  font-size: 14px;
  font-weight: 700;
  white-space: nowrap;
  flex-shrink: 0;
  line-height: 1.4
}

.header-line:hover {
  background: #08632b
}

.header-line-icon {
  display: grid;
  place-items: center;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: #fff;
  color: #087b32;
  font-size: 9px
}

@media(min-width:981px) and (max-width:1250px) {
  .site-header .brand img,.site-header .custom-logo {
    width: 155px
  }

  .site-header .nav-list {
    gap: 12px;
    font-size: 14px
  }

  .header-phone {
    font-size: 20px
  }

  .header-inner {
    gap: 14px
  }

}

@media(max-width:980px) {
  .site-header .brand,.site-header .custom-logo-link {
    order: 0
  }

  .header-line {
    order: 1;
    margin-left: auto
  }

  .site-header .menu-toggle {
    order: 2;
    margin-left: 0
  }

  .site-header #primary-nav {
    order: 3
  }

}

@media(max-width:700px) {
  .header-inner {
    gap: 8px;
    padding-inline: 14px
  }

  .site-header .brand img,.site-header .custom-logo {
    width: 125px
  }

  .header-line {
    padding: 8px 10px;
    min-height: 44px
  }

  .header-line-text {
    font-size: 0
  }

  .header-line-text:after {
    content: "LINE相談";
    font-size: 13px
  }

  .header-line-icon {
    display: none
  }

  .site-header .menu-toggle {
    padding: 8px;
    font-size: 13px;
    min-height: 44px
  }

}

@media(max-width:360px) {
  .site-header .brand img,.site-header .custom-logo {
    width: 110px
  }

  .header-inner {
    gap: 6px;
    padding-inline: 12px
  }

}

/* FVの最終調整：キャッチの文字サイズ・黄色い下線・電話バナー */
.hero h1 {
  font-size: clamp(36px,4.17vw,60px);
  font-weight: 800;
  line-height: 1.4;
  letter-spacing: normal;
  max-width: 650px;
  margin: 22px 0 30px
}

/* 行頭のかぎ括弧の空きを補正し、他の行と見た目の左端を揃える */
.hero-quote-line {
  display: inline-block;
  text-indent: -.5em;
}

.hero-catch-mark {
  position: relative;
  display: inline-block;
  isolation: isolate;
  white-space: nowrap
}

.hero-catch-mark:after {
  content: "";
  position: absolute;
  z-index: -1;
  left: -.03em;
  right: -.02em;
  bottom: -.1em;
  height: .13em;
  border-radius: 70% 30% 50% 40%;
  background: #ffd166;
  transform: rotate(-1.4deg)
}

.hero-content>p:not(.eyebrow) {
  font-size: 19px;
  line-height: 1.85;
  max-width: 530px;
  font-weight: 700
}

.hero-content>p:last-child {
  font-size: 16px;
  line-height: 1.8;
  font-weight: 500;
  margin-top: 16px
}

.hero-contact-banner {
  display: grid;
  grid-template-columns: auto auto auto;
  width: fit-content;
  max-width: calc(100% - 64px);
  align-items: center;
  gap: 22px;
  padding: 25px 24px;
  margin-top: -28px;
  border-radius: 20px;
  box-shadow: 0 3px 15px #183b251c
}

.hero-banner-phone {
  display: flex;
  align-items: center;
  gap: 18px;
  color: var(--green-dark);
  text-decoration: none;
  line-height: 1.4
}

.hero-banner-phone .icon {
  width: 40px;
  height: 40px
}

.hero-banner-label {
  font-size: 16px;
  font-weight: 700;
  white-space: nowrap
}

.hero-banner-phone strong {
  font-size: clamp(30px,3.25vw,46px);
  font-weight: 800;
  letter-spacing: -.035em;
  white-space: nowrap
}

.hero-contact-banner>.hero-banner-hours {
  border-inline: 1px solid #b7c9bf;
  padding: 3px 22px;
  font-size: 16px;
  line-height: 1.6;
  text-align: left;
  margin: 0;
  font-weight: 700
}

.hero-banner-hours strong {
  display: block;
  white-space: nowrap
}

.hero-banner-line {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  min-height: 66px;
  background: #087b32;
  color: #fff;
  font-size: 18px;
  font-weight: 700;
  text-decoration: none;
  border-radius: 14px;
  padding: 12px 20px;
  white-space: nowrap
}

.hero-banner-line:hover {
  background: #08632b
}

.hero-banner-phone:hover strong {
  text-decoration: underline
}

.hero-banner-line .line-label {
  width: 36px;
  height: 36px;
  font-size: 11px
}

.hero-banner-line>span:last-child {
  /* 文字のベースラインに依存しない矢印で上下中央に揃える */
  font-size: 0;
  width: 9px;
  height: 9px;
  flex: 0 0 9px;
  border-top: 2px solid currentColor;
  border-right: 2px solid currentColor;
  transform: rotate(45deg);
  margin-right: 3px;
}

/* 問い合わせバナー全体の浮き上がり（マウス操作時のみ） */
.hero-contact-banner {
  transition: translate .2s ease, box-shadow .2s ease;
}

@media (hover: hover) and (pointer: fine) {
  .hero-contact-banner:hover {
    translate: 0 -4px;
    box-shadow: 0 10px 24px #183b252b;
  }
}

@media (prefers-reduced-motion: reduce) {
  .hero-contact-banner:hover {
    translate: none;
  }
}

@media(max-width:1200px) and (min-width:981px) {
  .hero-banner-label {
    font-size: 13px
  }

  .hero-banner-phone {
    gap: 12px
  }

  .hero-contact-banner {
    gap: 14px;
    padding: 14px 18px
  }

  .hero-contact-banner>.hero-banner-hours {
    padding-inline: 14px;
    font-size: 14px
  }

  .hero-banner-line {
    font-size: 16px;
    padding-inline: 14px
  }

  .hero-banner-phone strong {
    font-size: 32px
  }

}

@media(max-width:980px) {
  .hero h1 {
    max-width: none;
    font-size: 42px
  }

  .hero-content>p:not(.eyebrow) {
    max-width: none
  }

  .hero-contact-banner {
    grid-template-columns: 1fr auto;
    margin-top: 0;
    gap: 16px
  }

  .hero-banner-phone {
    justify-content: center
  }

  .hero-contact-banner>.hero-banner-hours {
    border-right: 0
  }

  .hero-banner-line {
    grid-column: 1/-1
  }

}

@media(max-width:700px) {
  .hero h1 {
    font-size: 32px;
    line-height: 1.55;
    margin: 20px 0 28px
  }

  .hero-content>p:not(.eyebrow) {
    font-size: 18px
  }

  .hero-content>p:last-child {
    font-size: 16px
  }

  .hero-contact-banner {
    grid-template-columns: 1fr;
    padding: 18px;
    gap: 12px;
    margin-top: 18px;
    border-radius: 16px
  }

  .hero-banner-phone {
    flex-wrap: wrap;
    gap: 8px 12px
  }

  .hero-banner-label {
    font-size: 14px
  }

  .hero-banner-phone .icon {
    width: 30px;
    height: 30px
  }

  .hero-banner-phone strong {
    font-size: 34px;
    width: 100%;
    text-align: center
  }

  .hero-contact-banner>.hero-banner-hours {
    border: 0;
    padding: 0;
    text-align: center;
    font-size: 15px
  }

  .hero-banner-hours strong {
    display: inline;
    margin-left: 10px
  }

  .hero-banner-line {
    font-size: 18px;
    min-height: 60px
  }

}

@media(max-width:980px) {
  .hero-contact-banner {
    width: min(740px,calc(100% - 64px))
  }

  .hero h1 {
    max-width: 650px
  }

}

@media(max-width:700px) {
  .hero-contact-banner {
    width: calc(100% - 36px);
    max-width: none
  }

}

@media(max-width:360px) {
  .hero h1 {
    font-size: 28px
  }

  .hero-banner-phone strong {
    font-size: 29px
  }

}

/* 毎日の困ったの最終調整：囲み・買い物かご・チェックカード */
.hero-contact-banner {
  width: min(1120px,calc(100% - 64px))
}

.problems {
  width: min(1120px,calc(100% - 64px));
  margin-block: 64px 72px;
  padding: 38px;
  gap: 36px;
  border: 1px solid #eadfcb;
  border-radius: 24px;
  background: #fffcf6;
  box-shadow: 0 5px 20px #51412906
}

.problems h2 {
  font-size: clamp(26px,2.4vw,34px)
}

.problems-visual {
  position: relative;
  isolation: isolate;
  margin-top: 0px;
  gap: 22px
}

.problems-visual:before {
  content: "";
  position: absolute;
  z-index: -1;
  width: 260px;
  max-width: 62%;
  height: 190px;
  left: 0;
  bottom: 0;
  border-radius: 46% 54% 58% 42%;
  background: #fff0d5;
  transform: rotate(-8deg)
}

.problems .basket-art {
  width: 250px;
  max-width: 53%
}

.problems-message {
  font-size: 17px;
  letter-spacing: .06em
}

.problems .check-list {
  border: 0;
  padding: 0;
  font-size: 20px;
  line-height: 1.7
}

.problems .check-list li {
  display: flex;
  align-items: center;
  min-height: 88px;
  padding: 18px 18px 18px 76px;
  border: 1px solid #dce8d7;
  border-radius: 14px;
  background: #fff;
  box-shadow: 0 3px 0 #eaf0e5;
  font-weight: 700
}

.problems .check-list li:before {
  content: "";
  top: 50%;
  left: 19px;
  transform: translateY(-50%);
  width: 39px;
  height: 39px;
  font-size: 26px;
  box-shadow: 0 0 0 5px #edf5e8
}

/* 白いチェックは文字を使わず、線で描いて文字化けを防ぐ */
.problems .check-list li::after {
  content: "";
  position: absolute;
  left: 33px;
  top: calc(50% - 2px);
  width: 10px;
  height: 17px;
  border-right: 3px solid #fff;
  border-bottom: 3px solid #fff;
  transform: translateY(-50%) rotate(45deg);
  pointer-events: none;
}

.problems .check-list li+li {
  margin-top: 18px
}

@media(max-width:980px) {
  .hero-contact-banner,.problems {
    width: min(740px,calc(100% - 64px))
  }

  .problems {
    grid-template-columns: 1fr;
    padding: 32px;
    gap: 28px;
    margin-block: 48px 56px
  }

  .problems-visual {
    max-width: 480px
  }

  .problems .check-list {
    font-size: 20px
  }

  .problems .check-list li {
    min-height: 82px
  }

}

@media(max-width:700px) {
  .hero-contact-banner,.problems {
    width: calc(100% - 36px);
    max-width: none
  }

  .problems {
    padding: 24px 18px;
    margin-block: 42px 48px;
    border-radius: 18px;
    gap: 26px
  }

  .problems h2 {
    font-size: clamp(21px,5.8vw,28px)
  }

  .problems-visual {
    gap: 22px
  }

  .problems .basket-art {
    width: 190px;
    max-width: 52%
  }

  .problems-message {
    font-size: 14px;
    letter-spacing: 0
  }

  .problems-visual:before {
    height: 140px
  }

  .problems .check-list {
    border: 0;
    padding: 0;
    font-size: 18px
  }

  .problems .check-list li {
    padding: 17px 12px 17px 62px;
    min-height: 88px
  }

  .problems .check-list li:before {
    left: 15px;
    width: 32px;
    height: 32px;
    font-size: 23px;
    box-shadow: 0 0 0 4px #edf5e8
  }

  .problems .check-list li::after {
    left: 26px;
    width: 9px;
    height: 15px;
  }

  .problems .check-list li+li {
    margin-top: 16px
  }

}

/* ヘッダーの最終調整：メニュー中央／電話とLINEは右 */
@media(min-width:981px) {
  .header-inner {
    display: grid;
    grid-template-columns: minmax(0,1fr) auto minmax(0,1fr);
    gap: 18px
  }

  .site-header .brand,.site-header .custom-logo-link {
    justify-self: start
  }

  .site-header #primary-nav {
    grid-column: 2
  }

  .header-contacts {
    justify-self: end;
    display: flex;
    align-items: center;
    gap: 18px
  }

}

@media(min-width:1101px) and (max-width:1350px) {
  .header-inner {
    grid-template-columns: auto minmax(0,1fr) auto
  }

  .site-header #primary-nav {
    justify-self: center
  }

}

@media(max-width:980px) {
  .header-contacts {
    order: 1;
    margin-left: auto;
    display: flex;
    align-items: center
  }

  .header-contacts .header-line {
    margin-left: 0
  }

}

/* FV：黄色い対象者案内の帯（hero-smileは削除済み添え書き用・現在非表示） */
.hero .hero-audience {
  display: table;
  max-width: 650px;
  background: #fff0bc;
  color: #143e29;
  border-radius: 14px;
  padding: 12px 20px;
  font-size: clamp(18px,1.65vw,24px);
  line-height: 1.55;
  letter-spacing: 0;
  font-weight: 700
}

.hero-audience span,.hero-audience strong {
  display: block
}

.hero-audience strong {
  font-size: 1.15em
}

.hero-smile {
  position: absolute;
  top: 18px;
  right: 24px;
  margin: 0;
  padding: 12px 24px;
  background: #fff9e9;
  border: 1px solid #ecd7a8;
  border-radius: 52% 48% 48% 52%;
  font-size: 20px;
  line-height: 1.5;
  color: #73502b;
  text-align: center;
  transform: rotate(5deg);
  box-shadow: 0 3px 12px #4834110a
}

.hero-smile:after {
  content: "";
  position: absolute;
  bottom: -8px;
  left: 32%;
  width: 15px;
  height: 15px;
  background: #fff9e9;
  border-right: 1px solid #ecd7a8;
  border-bottom: 1px solid #ecd7a8;
  transform: skew(-15deg) rotate(35deg)
}

@media(min-width:981px) {
  .hero-content {
    padding-block: 24px
  }

  .hero h1 {
    margin-top: 16px;
    margin-bottom: 26px
  }

}

@media(max-width:980px) {
  .hero-smile {
    top: 12px;
    right: 18px;
    font-size: 16px;
    padding: 10px 18px
  }

  .hero .hero-audience {
    font-size: 21px
  }

}

@media(max-width:700px) {
  .hero-smile {
    top: 12px;
    right: auto;
    left: 14px;
    font-size: 14px;
    padding: 10px 16px
  }

  .hero .hero-audience {
    font-size: 18px;
    padding: 12px 14px
  }

  .hero-audience strong {
    font-size: 23px
  }

}

/* 旧添え書きの装飾：現在はHTMLから削除済みのため非表示 */
.hero-smile {
  background: transparent;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  padding: 0 0 8px;
  top: 24px;
  right: 32px;
  font-size: 18px;
  line-height: 1.65;
  letter-spacing: .08em;
  color: #244b37;
  transform: none;
  text-shadow: 0 1px 5px #fff,0 0 12px #fff
}

.hero-smile:after {
  content: "";
  left: 0;
  right: 0;
  bottom: 0;
  width: auto;
  height: 3px;
  border: 0;
  border-radius: 50%;
  background: #e9c775;
  transform: rotate(-3deg)
}

@media(max-width:980px) {
  .hero-smile {
    top: 16px;
    right: 24px;
    font-size: 16px
  }

}

@media(max-width:700px) {
  .hero-smile {
    top: 14px;
    left: 18px;
    right: auto;
    font-size: 13px;
    line-height: 1.6
  }

}

/* 毎日の困ったの最終幅：外枠1300px・中身1120px */
.problems {
  width: min(var(--max),calc(100% - 64px));
  padding-inline: max(38px,calc((min(var(--max),calc(100% - 64px)) - 1122px) / 2))
}

@media(max-width:980px) {
  .problems {
    padding-inline: max(32px,calc((100% - 740px) / 2))
  }

}

@media(max-width:700px) {
  .problems {
    width: calc(100% - 36px);
    padding-inline: 18px
  }

}

/* ==================================================
   ごあいさつの最終調整：タイトルの下に本文を配置
   ================================================== */
.about .reading-layout {
  display: block;
}

/* 前のクリーム色の囲みと区別する、淡いアプリコット色 */
.about {
  background: #fff0e5;
}

.about .section-heading {
  text-align: center;
  margin-bottom: 36px;
}

.about .prose {
  max-width: 850px;
  margin-inline: auto;
}

/* ごあいさつだけ段落間隔をコンパクトにする */
.about .prose p + p {
  margin-top: .8em;
}

/* 文末の署名：右寄せ＋小さなクローバー */
.about .greeting-signature {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 10px;
  font-size: 21px;
  font-weight: 700;
  letter-spacing: .08em;
}

.about .greeting-signature img {
  width: 36px;
  height: 36px;
  object-fit: contain;
}

@media (max-width: 700px) {
  .about .section-heading {
    margin-bottom: 28px;
  }

  .about .section-heading h2 span {
    display: block;
    margin-top: 8px;
  }
}

/* ==================================================
   サービスの最終調整：左にイラスト、中央に説明、右に料金
   原稿の説明・注意事項は省略しない
   ================================================== */
/* サービス欄：淡いグリーンの背景と見出しの手描き風下線 */
:root {
  /* 困ったことの下と、サービス見出しの上に共通の余白 */
  --services-section-space: clamp(56px, 7vw, 100px);
}

.problems {
  /* バナー直下は少し広げ、サービス側の余白との偏りを抑える */
  margin-top: clamp(56px, 6vw, 96px);
  margin-bottom: var(--services-section-space);
}

.services {
  position: relative;
  isolation: isolate;
  overflow: clip;
  background: transparent;
  border-radius: 0;
  padding-top: var(--services-section-space);
}

/* 楕円の両端を画面外へ出し、端の折れ込みを見せない */
.services::before {
  content: "";
  position: absolute;
  z-index: -1;
  pointer-events: none;
  top: 0;
  bottom: 0;
  left: -25%;
  width: 150%;
  background: #f1f7ed;
  border-radius: 50% 50% 0 0 / clamp(100px, 22vw, 420px) clamp(100px, 22vw, 420px) 0 0;
}

.services-title-mark {
  position: relative;
  display: inline-block;
  isolation: isolate;
}

.services-title-mark::after {
  content: "";
  position: absolute;
  z-index: -1;
  left: -1%;
  right: -1%;
  bottom: 0.06em;
  height: 0.19em;
  background: #ffd36b;
  border-radius: 55% 40% 50% 35%;
  transform: rotate(-1deg);
}

.services .service-card {
  display: grid;
  grid-template-columns: 260px minmax(0, 1fr) 290px;
  gap: 16px 32px;
  padding: 28px 0;
  margin-top: 0;
  border: 0;
  border-bottom: 1px solid #b8cdb9;
  border-radius: 0;
  --accent: #17512f;
  --tint: #f0f7ea;
}

/* 料金欄の高さでタイトル行が伸びないよう、余りの高さは説明行へ */
@media (min-width: 1101px) {
  .services .shopping,
  .services .same-day {
    grid-template-rows: max-content 1fr auto;
  }

  .services .shopping .service-intro h3,
  .services .same-day .service-intro h3 {
    min-height: 44px;
  }
}

.service-art {
  grid-column: 1;
  grid-row: 1 / 4;
  width: 100%;
  height: auto;
  border-radius: 14px;
}

.services .service-intro,
.services .service-details {
  display: contents;
}

.services .service-intro h3 {
  grid-column: 2;
  grid-row: 1;
  font-size: 28px;
  display: block;
  padding-left: 60px;
  position: relative;
  align-self: center;
}

.services .service-intro h3 .icon {
  display: none;
}

.services .service-intro h3 small {
  position: absolute;
  left: 0;
  top: 0;
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: #75aa46;
  color: #fff;
  font-size: 23px;
  letter-spacing: 0;
}

.services .service-intro > p,
.services .service-intro > div {
  grid-column: 2;
  grid-row: 2;
  font-size: 18px;
  line-height: 1.8;
}

.services .price-box,
.delivery-start-price {
  grid-column: 3;
  grid-row: 1 / 3;
  border-left: 1px solid #b8cdb9;
  border-radius: 0;
  background: transparent;
  padding: 0 0 0 24px;
  margin: 0;
  align-self: start;
  text-align: center;
}

.services .price-box h4 {
  font-size: 16px;
}

.services .price-box {
  container-type: inline-size;
  min-width: 0;
}

.services .price-box p {
  margin-top: 6px;
  font-size: 16px;
  font-size: min(16px, calc(100cqi / 16));
  white-space: nowrap;
}

/* 長い重量加算の説明は、料金枠の実幅に合わせて縮小 */
.services .price-box p:last-child {
  font-size: min(16px, calc((100cqi - 5px) / 19));
}

/* ①・③の重量加算：通常料金と区別して読み取りやすく */
.services .shopping .price-box p:last-child,
.services .same-day .price-box p:last-child {
  background: #fff1ce;
  border: 1px solid #c49a46;
  color: #493914;
  padding: 10px 12px;
  margin-top: 12px;
  border-radius: 8px;
  font-weight: 700;
}

.services .shopping .price-box p:last-child strong,
.services .same-day .price-box p:last-child strong {
  display: block;
  font-size: 26px;
  line-height: 1.4;
  margin-top: 3px;
}

/* 買い物代行の追加料金：長い説明を縮小せず、枠内で折り返す */
.services .shopping .price-box p.heavy-item-note {
  white-space: normal;
  font-size: 14px;
  line-height: 1.7;
}

.services .shopping .price-box p.heavy-item-note strong {
  font-size: 22px;
}

.services .price-box .price {
  display: block;
  font-size: 42px;
  color: #173f28;
}

.services .note-list {
  margin-top: 20px;
  grid-column: 2 / 4;
  grid-row: 3;
  padding: 14px 18px;
  border: 1px solid #b8cdb9;
  border-radius: 10px;
  background: #fff;
  font-size: 16px;
  line-height: 1.65;
}

/* 定額プラン：利用条件と解約時の説明をひとつの枠で整理 */
.subscription-details > ul {
  list-style: none;
  margin: 0;
  padding: 0;
}

.subscription-details > h4 {
  margin: 18px 0 8px;
  padding-top: 14px;
  border-top: 1px solid #b8cdb9;
  font-size: 18px;
}

.services .subscription-details > p {
  margin: 0;
}

.services .subscription-details > p + p {
  margin-top: 4px;
}

/* 注意書きは文字サイズを保ち、項目間の余白だけを詰める */
.services .note-list li + li {
  margin-top: 4px;
}

.services .delivery-details {
  grid-column: 2 / 4;
  grid-row: 3;
  display: block;
  margin: 0;
  padding: 18px 22px;
  background: #fff;
  border-radius: 10px;
}

.services .delivery-details > div p {
  font-size: 16px;
  margin-bottom: 12px;
}

.services .price-table thead {
  background: #e7f0df;
}

/* 距離の見出し：背景より一段濃いグリーンで料金と区別 */
.services .price-table tbody th {
  background: #dcebcf;
  color: #173f28;
}

.services .price-table th,
.services .price-table td {
  border: 1px solid #78966b;
}

@media (max-width: 1100px) {
  .services .service-card {
    grid-template-columns: 200px minmax(0, 1fr) 230px;
    gap: 16px 22px;
  }

  .services .service-intro h3 {
    font-size: 24px;
    padding-left: 52px;
  }
}

@media (max-width: 1100px) {
  .services .service-card {
    grid-template-columns: 180px minmax(0, 1fr);
  }

  .service-art {
    grid-row: 1 / 3;
  }

  /* SP：見出しと下の説明文の間に余白を確保 */
  #services-title {
    margin-bottom: 24px;
  }

  .services .price-box,
  .delivery-start-price {
    grid-column: 1 / 3;
    grid-row: 3;
    border-left: 0;
    padding: 12px 0;
  }

  .services .note-list,
  .services .delivery-details {
    grid-column: 1 / 3;
    grid-row: 4;
  }
}

@media (max-width: 600px) {
  .services .service-card {
    display: flex;
    flex-direction: column;
    gap: 18px;
    padding-block: 26px;
  }

  .service-art {
    max-width: 380px;
    align-self: center;
  }

  .services .service-intro h3 {
    align-self: stretch;
    min-height: 44px;
    display: flex;
    align-items: center;
  }

  .services .price-box,
  .delivery-start-price {
    align-self: stretch;
    padding: 16px;
    background: #f4f8ef;
    border-radius: 10px;
  }

  .delivery-start-price {
    order: 1;
  }

  .services .delivery-details {
    order: 2;
    padding: 16px;
  }
}

/* 距離別料金：パソコンでは参考画像と同じ横並び、スマートフォンでは縦表 */
@media (min-width: 1101px) {
  .services .price-table thead {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip-path: inset(50%);
  }

  .services .price-table tbody {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    border: 1px solid #78966b;
  }

  .services .price-table tr {
    display: flex;
    flex-direction: column;
    text-align: center;
    background: #fff;
    border-right: 1px solid #78966b;
  }

  .services .price-table tr:last-child {
    border-right: 0;
  }

  .services .price-table th,
  .services .price-table td {
    padding: 12px 5px;
    text-align: center;
    border: 0;
  }

  .services .price-table th {
    font-size: 14px;
    border-bottom: 1px solid #78966b;
  }

  .services .price-table td {
    font-size: 18px;
    font-weight: 700;
  }
}

/* 対応地域・安心安全：同じ背景の帯の中でつなぐ2カラム */
.area-safety-layout {
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: center;
  gap: 48px;
}

.area-safety {
  border-left: 1px solid #9cbdbe;
  padding-left: 48px;
}

.area-safety-heading {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-bottom: 20px;
}

.area-safety-heading .icon {
  width: 56px;
  height: 56px;
  color: var(--green-dark);
}

.area-safety-heading h2 {
  font-size: clamp(24px, 2.2vw, 30px);
}

.area-safety p + p {
  margin-top: 12px;
}

@media (max-width: 768px) {
  .area-safety-layout {
    grid-template-columns: 1fr;
    gap: 28px;
  }

  .area-safety {
    border-left: 0;
    border-top: 1px solid #9cbdbe;
    padding: 28px 0 0;
  }

  .area-safety-heading {
    gap: 12px;
  }

  .area-safety-heading .icon {
    width: 44px;
    height: 44px;
  }
}

/* 地域案内：白背景に囲み＋イラスト、注意事項は直下の帯 */
.area {
  background: #fff;
}

.area-panel {
  grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr);
  padding: 32px;
  border: 1px solid #bdd4ce;
  border-radius: 18px;
  gap: 32px;
}

.area-panel h2 {
  font-size: clamp(24px, 2.3vw, 32px);
}

.area-panel h2::after {
  content: "";
  display: block;
  width: 52px;
  height: 3px;
  background: #ffd166;
  margin-top: 12px;
}

.area-panel .area-name {
  font-size: clamp(20px, 1.6vw, 22px);
  font-weight: 700;
  line-height: 1.6;
  margin-top: 22px;
}

.area-panel p + p {
  margin-top: 8px;
}

/* 配送の説明を地域案内から区切る小見出し */
.area-panel .area-safety-title {
  margin: 24px 0 10px;
  padding-left: 12px;
  border-left: 3px solid var(--green);
  font-size: 20px;
  font-weight: 700;
  line-height: 1.5;
}

.area-delivery-image {
  display: block;
  width: 100%;
  height: auto;
  border-radius: 12px;
}

.area-notices {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: 24px;
  margin-top: 20px;
  padding: 22px 28px;
  background: #fff8ee;
  border: 1px solid #ead8bc;
  border-radius: 14px;
}

.area-notices h2 {
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: 22px;
}

.notice-symbol {
  display: grid;
  place-items: center;
  width: 36px;
  height: 36px;
  background: #b96100;
  color: #fff;
  border-radius: 50%;
}

.area-notices ul {
  margin: 0;
  padding-left: 30px;
  border-left: 1px solid #cbbda6;
  font-size: 16px;
  line-height: 1.7;
}

.area-notices li + li {
  margin-top: 4px;
}

@media (max-width: 768px) {
  .area-panel,
  .area-notices {
    grid-template-columns: 1fr;
    padding: 24px 20px;
    gap: 20px;
  }

  .area-delivery-image {
    max-width: 420px;
    margin-inline: auto;
  }

  .area-notices ul {
    border-left: 0;
    border-top: 1px solid #cbbda6;
    padding: 16px 0 0 20px;
  }
}

/* ヘッダー・FVバナーのLINE：支給画像と指定色 */
.header-line,
.hero-banner-line,
.header-line:hover,
.hero-banner-line:hover {
  background: #06c755;
}

img.header-line-icon,
.hero-line-icon {
  object-fit: contain;
  background: transparent;
  border-radius: 0;
  flex-shrink: 0;
  height: auto;
}

img.header-line-icon {
  width: 28px;
}

.hero-line-icon {
  display: block;
  width: 36px;
}

/* ご利用の流れ：水彩イラストと白い3枚のカード */
.flow {
  background: #f1f7ed;
}

.flow .steps {
  gap: 36px;
}

.flow .steps li {
  padding: 28px 26px 32px;
  border: 1px solid #dce7d5;
  box-shadow: 0 4px 14px #183b2508;
}

.flow .step-number {
  margin: 0;
  background: #ffdfbf;
  color: #743d13;
  font-size: 22px;
}

.flow-illustration {
  display: block;
  width: 190px;
  height: 190px;
  object-fit: contain;
  margin: 4px auto 12px;
}

.flow .steps h3 {
  margin: 12px 0;
  /* 画面幅に合わせて18〜20pxで変化。収まらない場合は文章を変えず折り返す */
  font-size: clamp(18px, calc(17px + .21vw), 20px);
  font-weight: 700;
  line-height: 1.5;
  min-height: 0;
  white-space: normal;
  letter-spacing: normal;
}

/* 横並びでは実際の行数を共有。固定の2行分スペースは作らない */
@media (min-width: 981px) {
  .flow .steps li {
    display: grid;
    grid-template-rows: subgrid;
    grid-row: span 4;
    row-gap: 0;
  }
}

.flow .steps li:not(:last-child)::after {
  content: "";
  position: absolute;
  right: -24px;
  top: 50%;
  width: 12px;
  height: 12px;
  border-right: 3px solid #52844b;
  border-top: 3px solid #52844b;
  transform: translateY(-50%) rotate(45deg);
}

@media (max-width: 980px) {
  .flow .steps {
    grid-template-columns: 1fr;
    max-width: 620px;
    margin-inline: auto;
    gap: 32px;
  }

  .flow-illustration {
    width: 160px;
    height: 160px;
  }

  .flow .steps li:not(:last-child)::after {
    right: auto;
    left: calc(50% - 6px);
    top: auto;
    bottom: -22px;
    transform: rotate(135deg);
  }
}

/* えちごやの想い：白背景と淡い街並み */
.about {
  background: #fff;
}

.about .reading-layout {
  display: block;
}

.about .section-heading {
  text-align: left;
  border-bottom: 2px solid #70a569;
  padding-bottom: 14px;
  margin-bottom: 28px;
}

.about .section-heading h2 {
  display: flex;
  align-items: center;
  gap: 16px;
}

.about .section-heading h2::before {
  content: "";
  width: 46px;
  height: 46px;
  flex: 0 0 46px;
  background: url('../images/clover.png') center / contain no-repeat;
}

.about .about-prose {
  display: flow-root;
  max-width: none;
  line-height: 1.9;
}

.about-landscape {
  float: right;
  position: relative;
  width: 38%;
  max-width: 440px;
  margin: 0 0 24px 40px;
}

.about-landscape img {
  display: block;
  width: 100%;
  height: auto;
}

.about-landscape figcaption {
  position: absolute;
  top: 35%;
  left: 15%;
  right: 10%;
  text-align: center;
  color: var(--green-dark);
  font-size: clamp(18px, 1.7vw, 23px);
  font-weight: 500;
  line-height: 1.9;
  letter-spacing: .08em;
  transform: rotate(-6deg);
}

@media (max-width: 768px) {
  .about .about-prose {
    display: flex;
    flex-direction: column;
  }

  .about-landscape {
    float: none;
    order: 1;
    width: min(100%, 280px);
    margin: 28px auto 0;
  }
}

/* 想い：全幅の街並みを下辺・右端へ添える */
.about {
  position: relative;
  isolation: isolate;
  overflow: hidden;
}

.about .reading-layout {
  position: static;
  isolation: auto;
  padding-bottom: clamp(140px, 15vw, 200px);
}

.about .about-prose {
  display: block;
}

.about .about-prose > p {
  max-width: 1100px;
  position: relative;
}

.about .about-landscape {
  position: absolute;
  float: none;
  z-index: -1;
  inset: auto 0 -12px;
  width: 100%;
  max-width: none;
  margin: 0;
  pointer-events: none;
}

.about .about-landscape figcaption {
  top: auto;
  bottom: 24%;
  left: 58%;
  right: 15%;
  font-size: 20px;
}

@media (max-width: 768px) {
  .about .reading-layout {
    padding-bottom: 150px;
  }

  .about .about-landscape figcaption {
    bottom: 75%;
    left: 35%;
    right: 3%;
    font-size: 16px;
    line-height: 1.7;
  }
}

/* ==================================================
   お問い合わせ：深緑の背景・白いパネル・お客様イラスト
   ================================================== */
.contact {
  background: #285b46;
  padding-block: clamp(56px, 6vw, 90px);
}

.contact-panel {
  position: relative;
  background: #fff;
  border: 6px solid #d9e7da;
  border-radius: 26px;
  padding: 46px 44px 76px;
}

.contact .section-heading {
  margin-bottom: 32px;
}

.contact .section-heading p {
  margin-top: 16px;
  text-align: center;
}

.contact-options {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 24px;
  align-items: center;
  text-align: center;
  max-width: 1000px;
  margin-inline: auto;
}

.contact-phone-link {
  display: block;
  color: #164b35;
  text-decoration: none;
}

.contact-option-label {
  display: block;
  font-size: 18px;
  font-weight: 700;
}

.contact-phone-number {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  font-size: clamp(28px, 3vw, 42px);
  font-weight: 800;
  white-space: nowrap;
  letter-spacing: 0;
}

.contact-phone-number svg {
  width: 30px;
  height: 30px;
  flex-shrink: 0;
}

.contact .contact-hours {
  margin-top: 6px;
  font-size: 18px;
}

.contact-line-link {
  display: flex;
  width: min(100%, 350px);
  margin-inline: auto;
  align-items: center;
  justify-content: center;
  gap: 12px;
  min-height: 78px;
  padding: 16px;
  border-radius: 14px;
  background: #06c755;
  color: #fff;
  font-size: 20px;
  font-weight: 700;
  text-decoration: none;
  box-shadow: 0 4px 0 #049940;
  transition: transform .2s, box-shadow .2s;
}

.contact-line-link img {
  width: 42px;
  height: auto;
  flex-shrink: 0;
}

.contact-link-arrow {
  width: 8px;
  height: 8px;
  border-top: 2px solid currentColor;
  border-right: 2px solid currentColor;
  transform: rotate(45deg);
  flex-shrink: 0;
}

.contact-line-option > p {
  margin-top: 14px;
  font-size: 16px;
  line-height: 1.7;
}

.contact .callback-note {
  margin-top: 28px;
  text-align: center;
  font-size: 16px;
  padding-inline: 120px;
}

.contact-customer {
  position: absolute;
  bottom: 0;
  right: 14px;
  width: 210px;
  height: auto;
  pointer-events: none;
}

@media (hover: hover) and (prefers-reduced-motion: no-preference) {
  .contact-line-link:hover {
    transform: translateY(-3px);
    box-shadow: 0 7px 0 #049940;
  }
}

@media (max-width: 1100px) {
  .contact-panel {
    padding: 36px 28px 150px;
  }

  .contact-options {
    gap: 24px;
    margin-inline: auto;
  }

  .contact-customer {
    width: 190px;
  }
}

@media (max-width: 600px) {
  .contact-options {
    grid-template-columns: 1fr;
    gap: 22px;
  }

  .contact .callback-note {
    padding-inline: 0;
    text-align: left;
  }

  .contact-panel {
    padding: 30px 18px 250px;
    border-width: 4px;
    border-radius: 20px;
  }

  .contact-break {
    display: none;
  }

  .contact .section-heading p {
    text-align: left;
  }

  .contact-phone-number {
    font-size: clamp(24px, 6.8vw, 36px);
    gap: 6px;
  }

  .contact-phone-number svg {
    width: 24px;
    height: 24px;
  }

  .contact-line-link {
    font-size: 17px;
    gap: 8px;
    padding-inline: 10px;
  }

  .contact-line-link img {
    width: 34px;
  }

  .contact-customer {
    width: 185px;
    right: 20px;
  }
}

/* ==================================================
   フッター：メッセージを主役に、下端へ淡い街並み
   ================================================== */
.site-footer {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  padding: 32px 0 24px;
  border-top: 0;
  background: #fff;
}

.site-footer::before {
  content: "";
  position: absolute;
  z-index: -1;
  inset: auto 0 0 auto;
  width: min(46%, 640px);
  aspect-ratio: 2164 / 727;
  background: url("../images/about-landscape-wide.png") right bottom / contain no-repeat;
  opacity: .45;
  -webkit-mask-image: linear-gradient(to right, transparent, #000 65%);
  mask-image: linear-gradient(to right, transparent, #000 65%);
  pointer-events: none;
}

.site-footer .footer-inner {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 24px;
  text-align: left;
}

.site-footer .footer-message {
  color: var(--green-dark);
  font-size: clamp(18px, 1.5vw, 22px);
  font-weight: 700;
  line-height: 1.65;
  letter-spacing: .06em;
  margin: 0;
}

.footer-message span {
  position: relative;
  display: inline-block;
  padding-bottom: 3px;
}

.footer-message span::after {
  content: "";
  position: absolute;
  inset: auto 0 0;
  height: 3px;
  border-radius: 50%;
  background: #f2ce68;
}

.site-footer .footer-inner small {
  width: auto;
  margin: 0 0 0 auto;
  font-size: 13px;
}

.site-footer .privacy-link {
  text-align: center;
}

@media (max-width: 600px) {
  .site-footer {
    padding-top: 24px;
  }

  .site-footer .footer-inner {
    gap: 16px;
  }

  .site-footer .footer-inner .brand {
    flex: 0 1 130px;
    min-width: 0;
  }

  .site-footer .footer-message {
    font-size: 16px;
    letter-spacing: 0;
  }

  .site-footer .footer-inner small {
    width: 100%;
    margin: 10px 0 0;
    text-align: center;
  }

  .site-footer::before {
    width: 65%;
  }
}

/* ==================================================
   SP仕上げ：FV・料金・装飾・固定お問い合わせ
   ================================================== */
.hero-mobile-art,
.sp-area-break,
.contact-basket {
  display: none;
}

@media (max-width: 700px) {
  .site-header,
  .admin-bar .site-header {
    top: 0;
  }

  /* SPでは下部固定の導線に集約し、メニューを見やすくする */
  .site-header .header-contacts {
    display: none;
  }

  .site-header .menu-toggle {
    margin-left: auto;
    padding: 10px 14px;
    min-height: 48px;
    font-size: 17px;
    font-weight: 700;
    border: 2px solid var(--green-dark);
    border-radius: 9px;
  }

  .hero {
    position: relative;
    overflow: hidden;
    background: #fffefa;
  }

  .hero .hero-art {
    display: none;
  }

  .hero-mobile-art {
    display: block;
    position: absolute;
    inset: auto 0 0;
    width: 100%;
    height: auto;
    z-index: 0;
    -webkit-mask-image: linear-gradient(to bottom, transparent, #000 14%);
    mask-image: linear-gradient(to bottom, transparent, #000 14%);
  }

  .hero .hero-content {
    z-index: 1;
    width: calc(100% - 40px);
    padding: 24px 0 calc(73vw + 20px);
  }

  .hero .hero-audience {
    font-size: clamp(13px, 3.5vw, 18px);
    padding: 10px 12px;
    margin-bottom: 20px;
  }

  .hero .hero-audience strong {
    font-size: 21px;
  }

  .hero h1 {
    font-size: clamp(27px, 7.2vw, 44px);
    line-height: 1.5;
    margin: 0 0 24px;
    letter-spacing: 0;
  }

  .hero .hero-content > p:not(.eyebrow) {
    font-size: 16px;
    line-height: 1.85;
    margin-top: 18px;
  }

  .problems-intro {
    text-align: center;
  }

  .problems-visual {
    justify-content: center;
    margin-inline: auto;
  }

  .services .price-box,
  .services .delivery-start-price {
    background: #fff;
    border: 1px solid #a6bd99;
    border-radius: 12px;
    padding: 20px 16px;
    text-align: center;
    width: 100%;
  }

  .services .delivery-details > div {
    text-align: center;
  }

  .sp-area-break {
    display: block;
  }

  .area #area-title {
    font-size: clamp(21px, 5.4vw, 28px);
    line-height: 1.6;
  }

  .about .reading-layout {
    padding-bottom: 70px;
  }

  .about {
    padding-bottom: 24px;
  }

  .mobile-contact a:first-child {
    background: #bd4b0b;
    color: #fff;
    font-size: 22px;
    font-weight: 800;
  }

  .mobile-contact a:first-child span {
    font-size: 14px;
    font-weight: 500;
  }

  .mobile-contact a:last-child {
    background: #06c755;
    color: #fff;
  }
}

@media (max-width: 600px) {
  /* ログイン時の管理バーがスクロールで消えた後も隙間を残さない */
  .admin-bar .site-header {
    top: 0;
  }

  /* 買い物かごの背面だけに、淡い楕円を添える */
  .contact-panel::before {
    content: "";
    position: absolute;
    left: 10px;
    bottom: 15px;
    width: 41%;
    max-width: 167px;
    aspect-ratio: 1.25;
    border-radius: 50%;
    background: #fff4de;
    transform: rotate(-10deg);
    pointer-events: none;
  }

  .contact-basket {
    display: block;
    position: absolute;
    bottom: 30px;
    left: 16px;
    width: 38%;
    max-width: 155px;
    height: auto;
    pointer-events: none;
  }

  .contact-customer {
    right: 12px;
    width: 49%;
    max-width: 185px;
  }
}

/* お客様確認後の修正：定休日・最後のごあいさつ */
.hero .hero-audience span > strong {
  display: inline;
  font-size: inherit;
}

@media (min-width: 701px) {
  .hero .hero-audience {
    font-size: clamp(18px, 1.3vw, 22px);
  }
}

.regular-holiday {
  display: block;
  margin-top: 4px;
  font-size: 15px;
  font-weight: 500;
}

.contact-availability {
  position: relative;
  margin: 10px auto 0;
  padding-inline: 120px;
  font-size: 16px;
  line-height: 1.8;
  text-align: center;
}

.closing-message {
  background: #fff;
  padding-block: 48px;
}

.closing-message .prose {
  max-width: var(--max);
  font-size: 17px;
  line-height: 1.3;
}

.closing-signature {
  text-align: right;
}

@media (max-width: 700px) {
  .hero-contact-banner > .hero-banner-hours {
    flex-wrap: wrap;
  }

  .hero-banner-hours .regular-holiday {
    flex-basis: 100%;
    text-align: center;
  }

  .closing-message {
    padding-block: 36px;
  }

  .mobile-contact a:first-child span {
    font-size: 12px;
    line-height: 1.4;
  }
}

@media (max-width: 600px) {
  .contact-availability {
    padding-inline: 0;
    text-align: left;
  }
}

/* PC共通：最大1300pxを保ち、画面の左右に5%ずつ余白 */
/* バナーの重なり28px＋本文との間隔を確保。SP専用FVは維持 */
@media screen and (min-width: 701px) {
  .hero .hero-content {
    padding-bottom: 72px;
  }
}

@media screen and (min-width: 981px) {
  .site-header .header-inner {
    width: min(var(--max), 90%);
    max-width: var(--max);
    padding-inline: 0;
  }

  .wrap:not(.hero-contact-banner) {
    width: min(var(--max), 90%);
  }

  .problems {
    padding-inline: max(38px, calc((min(var(--max), 90vw) - 1122px) / 2));
  }
}

/* 電話バナーと「毎日の困った」をつなぐメッセージ */
.town-message {
  margin-block: clamp(36px, 4vw, 60px) 0;
  color: #174d37;
  font-size: clamp(20px, 1.8vw, 26px);
  font-weight: 600;
  line-height: 1.75;
  letter-spacing: .06em;
  text-align: center;
}

.town-message span {
  display: inline-block;
  padding-bottom: 4px;
  border-bottom: 2px solid #f2ce68;
}

.town-message + .problems {
  margin-top: clamp(24px, 3vw, 40px);
}

@media print {
  .site-header,.mobile-contact,.menu-toggle {
    display: none
  }

  body {
    padding: 0;
    color: #000
  }

  .section {
    padding-block: 25px
  }

  .hero-art {
    opacity: .25
  }

  .hero-contact {
    box-shadow: none
  }

  .service-card,.steps li {
    break-inside: avoid
  }

  .wrap {
    width: 100%
  }

  a {
    color: inherit
  }

  .site-footer {
    padding: 20px 0
  }

}
