@charset "UTF-8";

/* pest-page.css メリハリ強化版 */

.pestPage{
  --pp-text:#000000;
  --pp-muted:#526174;
  --pp-line:#d6e0ea;
  --pp-soft:#f7fbff;

  --pp-primary:#2f6fb3;
  --pp-primary-dark:#1f5d9f;
  --pp-primary-soft:#eaf4ff;

  --pp-green:#5c8f43;
  --pp-green-dark:#456f32;
  --pp-green-soft:#edf7e8;

  --pp-orange:#d98a1f;
  --pp-orange-dark:#b56f11;
  --pp-orange-soft:#fff4e4;

  --pp-note-bg:#fff8df;
  --pp-note-border:#efd58b;

  --pp-card-shadow:0 6px 18px rgba(18,38,63,.08);
  --pp-card-shadow-sm:0 4px 12px rgba(18,38,63,.06);
}

/* Base */
.pestPage,
.pestPage *{
  box-sizing:border-box;
}
.pestPage{
  color:var(--pp-text);
  line-height:1.85;
  font-size:16px;
  background:#fff;
  -webkit-text-size-adjust:100%;
}
.pestPage img{
  max-width:100%;
  height:auto;
  display:block;
}
.pestPage a{
  color:inherit;
  text-decoration:none;
}
.pestPage :focus-visible{
  outline:3px solid rgba(47,111,179,.3);
  outline-offset:3px;
  border-radius:10px;
}

/* Main */
.pestPage__main{
  width:100%;
  max-width:100%;
}

/* Inner */
.pestPage .pestPage__inner{
  max-width:1120px;
  margin:0 auto;
  padding:0 20px;
}

/* Typography */
.pestPage__h2{
  margin:0 0 12px;
  padding:14px 18px;
  font-size:28px;
  line-height:1.45;
  letter-spacing:0;
  color:#17324d;
  background:linear-gradient(135deg, #dff0ff 0%, #f4faff 100%);
  border-left:8px solid var(--pp-primary);
  border-radius:14px;
  box-shadow:0 4px 12px rgba(47,111,179,.08);
}
.pestPage__h4{
  margin:0 0 8px;
  font-size:18px;
  line-height:1.65;
  font-weight:700;
}
.pestPage__muted{
  color:var(--pp-muted);
  font-size:16px;
}

/* Sections */
.pestPage__section{
  padding:42px 0;
}
.pestPage__sectionHead{
  margin-bottom:20px;
}
.pestPage__sectionLead{
  margin:0;
  color:var(--pp-muted);
  max-width:75ch;
  font-size:16px;
  line-height:1.8;
}

/* 背景でセクションに差をつける */
.pestPage__sectionMuted{
  background:linear-gradient(to bottom, #f8fcff 0%, #eef6ff 100%);
  border-top:1px solid #dfeaf5;
  border-bottom:1px solid #dfeaf5;
}

#pestIndoor{
  background:linear-gradient(to bottom, #ffffff 0%, #f9fcff 100%);
}

#pestOutdoor{
  background:linear-gradient(to bottom, #f7fbf4 0%, #edf7e8 100%);
  border-top:1px solid #dbe8d3;
  border-bottom:1px solid #dbe8d3;
}

.pestPage__seasonal{
  background:linear-gradient(to bottom, #fffaf2 0%, #fff2df 100%);
  border-top:1px solid #f0dec1;
  border-bottom:1px solid #f0dec1;
}

/* Hero */
.pestPage__hero{
  background:transparent;
  border-bottom:none;
}
.pestPage__heroInner{
  display:block;
  padding:22px 22px 14px;
  background:linear-gradient(135deg, #edf6ff 0%, #dceeff 100%);
  border:1px solid #cfe2f3;
  border-radius:18px;
  box-shadow:0 8px 24px rgba(47,111,179,.10);
}
.pestPage__lead{
  margin:0;
  color:#3f5367;
  font-size:17px;
  line-height:1.95;
}

/* Buttons */
.pestPage__btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:12px 16px;
  border-radius:12px;
  border:1px solid transparent;
  font-weight:700;
  line-height:1.2;
  min-height:44px;
  font-size:16px;
  transition:background-color .2s ease, color .2s ease, border-color .2s ease, box-shadow .2s ease, transform .2s ease;
}
.pestPage__btn:hover{
  transform:translateY(-1px);
}
.pestPage__btnPrimary{
  background:linear-gradient(135deg, var(--pp-primary) 0%, var(--pp-primary-dark) 100%);
  color:#fff;
  box-shadow:0 6px 14px rgba(47,111,179,.18);
}

a.pestPage__btnPrimary{
  color:#fff;
}
.pestPage__btnPrimary:hover{
  filter:brightness(.98);
}
.pestPage__btnGhost{
  background:#fff;
  border-color:#bdd1e5;
  color:var(--pp-primary-dark);
  box-shadow:0 4px 10px rgba(47,111,179,.08);
}
.pestPage__btnGhost:hover{
  background:var(--pp-primary-soft);
}

/* Place blocks */
.pestPage__place{
  margin-top:22px;
  background:#fff;
  border:1px solid var(--pp-line);
  border-radius:18px;
  padding:20px;
  box-shadow:var(--pp-card-shadow);
}
.pestPage__place + .pestPage__place{
  margin-top:20px;
}

.pestPage__placeTitle{
  margin:0 0 12px;
  font-size:24px;
  line-height:1.4;
  color:var(--pp-primary-dark);
  font-weight:800;
  padding-left:12px;
  border-left:6px solid var(--pp-primary);
}
#pestOutdoor .pestPage__placeTitle{
  color:var(--pp-green-dark);
  border-left-color:var(--pp-green);
}
.pestPage__placeFigure{
  margin:0 0 14px;
}
.pestPage__placeImg{
  width:100%;
  height:auto;
  border-radius:14px;
  border:1px solid var(--pp-line);
}
.pestPage__placeMeta{
  margin:0 0 16px;
  color:#44586d;
  font-size:15px;
  line-height:1.85;
  background:linear-gradient(135deg, #f7fbff 0%, #edf5fc 100%);
  border:1px solid #dce7f1;
  border-radius:12px;
  padding:11px 13px;
}
#pestOutdoor .pestPage__placeMeta{
  background:linear-gradient(135deg, #f7fbf4 0%, #edf6e7 100%);
  border-color:#dbe8d2;
}

/* Items grid */
.pestPage__items{
  display:grid;
  gap:16px;
}
.pestPage__items3{
  grid-template-columns:repeat(3, minmax(0,1fr));
}
.pestPage__items2{
  grid-template-columns:repeat(2, minmax(0,1fr));
}

/* Item cards */
.pestPage__itemCard{
  background:linear-gradient(180deg, #ffffff 0%, #fbfdff 100%);
  border:1px solid var(--pp-line);
  border-radius:16px;
  overflow:hidden;
  box-shadow:var(--pp-card-shadow-sm);
}
#pestOutdoor .pestPage__itemCard{
  background:linear-gradient(180deg, #ffffff 0%, #f9fcf7 100%);
}
.pestPage__itemMedia{
  width:100%;
  aspect-ratio:16 / 10;
  background:#eef5fb;
  border-bottom:1px solid var(--pp-line);
}
#pestOutdoor .pestPage__itemMedia{
  background:#eef6ea;
}
.pestPage__itemImg{
  width:100%;
  height:100%;
  object-fit:cover;
}
.pestPage__itemBody{
  padding:15px;
}
.pestPage__itemHow{
  margin:0;
  color:#4e6276;
  font-size:15px;
  line-height:1.9;
}

/* Note */
.pestPage__note{
  margin-top:14px;
  padding:14px 15px;
  border-radius:12px;
  border:1px solid var(--pp-note-border);
  background:linear-gradient(135deg, #fffdf4 0%, var(--pp-note-bg) 100%);
}
.pestPage__noteTitle{
  margin:0 0 6px;
  font-size:14px;
  color:#93611a;
  font-weight:800;
}

/* Seasonal */
.pestPage__seasonalNav{
  display:flex;
  gap:10px;
  flex-wrap:wrap;
  margin:14px 0 18px;
}
.pestPage__seasonalNavLink{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:10px 16px;
  border-radius:999px;
  border:1px solid #e3c999;
  background:linear-gradient(135deg, #fff8eb 0%, #fff 100%);
  color:#8b5e16;
  font-weight:800;
  font-size:15px;
  box-shadow:0 3px 8px rgba(180,120,20,.08);
  transition:background-color .2s ease, color .2s ease, border-color .2s ease, transform .2s ease;
}
.pestPage__seasonalNavLink:hover{
  background:#ffe9bf;
  color:#6c4f1c;
  border-color:#d7b16c;
  transform:translateY(-1px);
}

.pestPage__pest{
  margin-top:18px;
  background:linear-gradient(180deg, #fffefb 0%, #fff 100%);
  border:1px solid #ecd8b4;
  border-radius:18px;
  padding:18px;
  box-shadow:0 6px 16px rgba(120,85,20,.06);
}
.pestPage__pest + .pestPage__pest{
  margin-top:16px;
}

.pestPage__pestHead{
  border-bottom:1px solid #eddcbf;
  padding-bottom:10px;
  margin-bottom:14px;
}
.pestPage__pestTitle{
  margin:0 0 6px;
  font-size:24px;
  line-height:1.4;
  color:var(--pp-orange-dark);
  font-weight:800;
}
.pestPage__pestMeta{
  margin:0;
  color:#5c6775;
  font-size:15px;
  line-height:1.8;
}

.pestPage__calendar{
  margin:0;
}
.pestPage__calendarImg{
  width:100%;
  height:auto;
  border-radius:14px;
  border:1px solid #ead8bb;
  background:#fff;
  box-shadow:0 3px 10px rgba(120,85,20,.05);
}

.pestPage__set{
  margin-top:16px;
  background:linear-gradient(135deg, #fff6e8 0%, #fffdf7 100%);
  border:1px solid #efd5a5;
  border-radius:16px;
  padding:15px;
}
.pestPage__setHead{
  margin-bottom:12px;
}

.pestPage__products{
  display:grid;
  grid-template-columns:repeat(2, minmax(0,1fr));
  gap:14px;
}
.pestPage__product{
  background:#fff;
  border:1px solid #ecd7b3;
  border-radius:14px;
  overflow:hidden;
  display:flex;
  flex-direction:column;
  min-height:100%;
  box-shadow:0 4px 10px rgba(120,85,20,.05);
}
.pestPage__productMedia{
  aspect-ratio:16 / 10;
  background:#fff3df;
  border-bottom:1px solid #ecd7b3;
}
.pestPage__productImg{
  width:100%;
  height:100%;
  object-fit:cover;
}
.pestPage__productBody{
  padding:14px;
}
.pestPage__productTitle{
  margin:0 0 8px;
  font-size:18px;
  line-height:1.6;
  font-weight:800;
}
.pestPage__productText{
  margin:0;
  color:#5b6876;
  font-size:15px;
  line-height:1.9;
}

/* CTA */
.pestPage__cta{
  background:transparent;
}
.pestPage__ctaInner{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  flex-wrap:wrap;
  background:linear-gradient(135deg, #dff0ff 0%, #f1f8ff 100%);
  border:1px solid #c8ddef;
  border-radius:18px;
  padding:22px;
  box-shadow:0 8px 22px rgba(47,111,179,.10);
}
.pestPage__ctaActions{
  display:flex;
  gap:10px;
  flex-wrap:wrap;
}

/* Anchor offset */
.pestPage :where(
  #room-living,
  #room-kitchen,
  #room-bedroom,
  #place-balcony,
  #place-entrance,
  #place-outing,
  #pestIndoor,
  #pestOutdoor,
  #seasonal,
  #pest-mosquito,
  #pest-cockroach,
  #pest-mite,
  #pest-gnat
){
  scroll-margin-top:90px;
}

/* Single map */
.pestPage__singleMap{
  max-width:960px;
  margin:0 auto;
}
.pestPage__singleMapFigure{
  margin:0 0 24px;
}
.pestPage__singleMapImg{
  display:block;
  width:100%;
  height:auto;
  border-radius:16px;
  border:1px solid #d2dfeb;
  box-shadow:0 6px 16px rgba(47,111,179,.08);
}
.pestPage__singleMapButtons{
  display:flex;
  flex-wrap:wrap;
  gap:12px;
  justify-content:center;
}

.pestPage__singleMapButtons{
  display:flex;
  flex-wrap:wrap;
  gap:12px;
  justify-content:center;
}

.pestPage__singleMapButtons{
  display:flex;
  flex-wrap:wrap;
  gap:12px;
  justify-content:center;
}

.pestPage a.pestPage__singleMapBtn{
  --map-btn-bg:#5c8f43;
  --map-btn-bg2:#456f32;
  --map-btn-text:#ffffff;
  --map-btn-border:#3f652d;
  --map-btn-shadow:rgba(69,111,50,.28);
  --map-btn-bottom:#355426;

  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:120px;
  min-height:48px;
  padding:12px 18px;
  margin:0;

  color:var(--map-btn-text);
  font-weight:800;
  font-size:15px;
  line-height:1.4;
  text-align:center;
  letter-spacing:.02em;
  text-decoration:none;

  background:linear-gradient(180deg, var(--map-btn-bg) 0%, var(--map-btn-bg2) 100%);
  border:1px solid var(--map-btn-border);
  border-radius:14px;

  box-shadow:
    0 4px 0 var(--map-btn-bottom),
    0 8px 16px var(--map-btn-shadow);

  text-shadow:0 1px 0 rgba(0,0,0,.12);
  transition:transform .18s ease, box-shadow .18s ease, filter .18s ease;
}

.pestPage a.pestPage__singleMapBtn:hover,
.pestPage a.pestPage__singleMapBtn:focus{
  color:var(--map-btn-text);
  filter:brightness(1.05);
  transform:translateY(-2px);
}

.pestPage a.pestPage__singleMapBtn:active{
  color:var(--map-btn-text);
  transform:translateY(2px);
  box-shadow:
    0 2px 0 var(--map-btn-bottom),
    0 4px 8px var(--map-btn-shadow);
}

.pestPage a.pestPage__singleMapBtn.pestPage__singleMapBtn--living{
  --map-btn-bg:#00A99D;
  --map-btn-bg2:#00897f;
  --map-btn-border:#00786f;
  --map-btn-bottom:#00665f;
  --map-btn-shadow:rgba(0,169,157,.25);
}

.pestPage a.pestPage__singleMapBtn.pestPage__singleMapBtn--kitchen{
  --map-btn-bg:#22B573;
  --map-btn-bg2:#17965d;
  --map-btn-border:#127f4f;
  --map-btn-bottom:#0f6a42;
  --map-btn-shadow:rgba(34,181,115,.25);
}

.pestPage a.pestPage__singleMapBtn.pestPage__singleMapBtn--bedroom{
  --map-btn-bg:#29ABE2;
  --map-btn-bg2:#158fc3;
  --map-btn-border:#1178a4;
  --map-btn-bottom:#0e6488;
  --map-btn-shadow:rgba(41,171,226,.25);
}

.pestPage a.pestPage__singleMapBtn.pestPage__singleMapBtn--balcony{
  --map-btn-bg:#0071BC;
  --map-btn-bg2:#005f9f;
  --map-btn-border:#005086;
  --map-btn-bottom:#00426f;
  --map-btn-shadow:rgba(0,113,188,.25);
}

.pestPage a.pestPage__singleMapBtn.pestPage__singleMapBtn--entrance{
  --map-btn-bg:#2E3192;
  --map-btn-bg2:#252876;
  --map-btn-border:#1f2162;
  --map-btn-bottom:#191b51;
  --map-btn-shadow:rgba(46,49,146,.25);
}

.pestPage a.pestPage__singleMapBtn.pestPage__singleMapBtn--outing{
  --map-btn-bg:#662D91;
  --map-btn-bg2:#542579;
  --map-btn-border:#461f66;
  --map-btn-bottom:#3a1954;
  --map-btn-shadow:rgba(102,45,145,.25);
}

@media (max-width: 767px){
  .pestPage__singleMapButtons{
    gap:8px;
  }

  .pestPage a.pestPage__singleMapBtn{
    min-width:calc(50% - 4px);
    padding:10px 8px;
    font-size:14px;
  }
}

#room-living .pestPage__placeTitle{
  color:#00A99D;
  border-left-color:#00A99D;
}

#room-kitchen .pestPage__placeTitle{
  color:#22B573;
  border-left-color:#22B573;
}

#room-bedroom .pestPage__placeTitle{
  color:#29ABE2;
  border-left-color:#29ABE2;
}

#place-balcony .pestPage__placeTitle{
  color:#0071BC;
  border-left-color:#0071BC;
}

#place-entrance .pestPage__placeTitle{
  color:#2E3192;
  border-left-color:#2E3192;
}

#place-outing .pestPage__placeTitle{
  color:#662D91;
  border-left-color:#662D91;
}

/* Tablet */
@media (max-width: 960px){
  .pestPage .pestPage__inner{
    padding:0 16px;
  }

  .pestPage__h2{
    font-size:24px;
    padding:13px 15px;
  }

  .pestPage__items3,
  .pestPage__items2,
  .pestPage__products{
    grid-template-columns:1fr;
  }

  .pestPage__place,
  .pestPage__pest,
  .pestPage__ctaInner{
    border-radius:16px;
  }
}

/* Smartphone */
@media (max-width: 767px){
  .pestPage{
    font-size:15px;
    line-height:1.85;
  }

  .pestPage .pestPage__inner{
    padding:0 14px;
  }

  .pestPage__section{
    padding:30px 0;
  }

  .pestPage__sectionHead{
    margin-bottom:14px;
  }

  .pestPage__h2{
    padding:12px 13px;
    font-size:21px;
    line-height:1.45;
    border-left-width:6px;
    border-radius:12px;
    margin-bottom:10px;
  }

  .pestPage__h4{
    font-size:17px;
    line-height:1.65;
  }

  .pestPage__lead,
  .pestPage__sectionLead,
  .pestPage__muted,
  .pestPage__itemHow,
  .pestPage__productText,
  .pestPage__pestMeta,
  .pestPage__placeMeta{
    font-size:14px;
    line-height:1.85;
  }

  .pestPage__heroInner{
    padding:16px 14px 10px;
    border-radius:16px;
    box-shadow:0 6px 16px rgba(47,111,179,.10);
  }

  .pestPage__place{
    margin-top:16px;
    padding:14px;
    border-radius:15px;
    box-shadow:0 5px 14px rgba(18,38,63,.07);
  }

  .pestPage__place + .pestPage__place{
    margin-top:16px;
  }

  .pestPage__placeTitle{
    font-size:20px;
    margin-bottom:10px;
    padding-left:10px;
    border-left-width:5px;
  }

  .pestPage__placeFigure{
    margin-bottom:12px;
  }

  .pestPage__placeImg{
    border-radius:12px;
  }

  .pestPage__placeMeta{
    margin-bottom:12px;
    padding:10px 11px;
    border-radius:10px;
  }

  .pestPage__items{
    gap:12px;
  }

  .pestPage__itemCard,
  .pestPage__product{
    border-radius:13px;
  }

  .pestPage__itemMedia,
  .pestPage__productMedia{
    aspect-ratio:16 / 10;
  }

  .pestPage__itemBody,
  .pestPage__productBody{
    padding:12px;
  }

  .pestPage__note{
    padding:11px 12px;
    margin-top:12px;
    border-radius:10px;
  }

  .pestPage__noteTitle{
    font-size:13px;
  }

  .pestPage__seasonalNav{
    gap:8px;
    margin:12px 0 14px;
  }

  .pestPage__seasonalNavLink{
    width:calc(50% - 4px);
    min-height:42px;
    padding:10px 8px;
    font-size:14px;
    border-radius:999px;
  }

  .pestPage__pest{
    padding:14px;
    border-radius:15px;
    margin-top:14px;
  }

  .pestPage__pest + .pestPage__pest{
    margin-top:14px;
  }

  .pestPage__pestTitle{
    font-size:20px;
  }

  .pestPage__pestHead{
    margin-bottom:12px;
    padding-bottom:9px;
  }

  .pestPage__calendarImg{
    border-radius:12px;
  }

  .pestPage__set{
    margin-top:12px;
    padding:12px;
    border-radius:12px;
  }

  .pestPage__ctaInner{
    padding:14px;
    border-radius:15px;
  }

  .pestPage__ctaActions{
    width:100%;
    flex-direction:column;
  }

  .pestPage__btn{
    width:100%;
    min-height:44px;
    padding:12px 14px;
    font-size:15px;
  }

  .pestPage__singleMapFigure{
    margin:0 0 16px;
  }

  .pestPage__singleMapImg{
    border-radius:12px;
  }

  .pestPage__singleMapButtons{
    gap:8px;
  }

  .pestPage__singleMapBtn{
    min-width:calc(50% - 4px);
    padding:10px 8px;
    font-size:14px;
  }

  #pestMain > .pestPage__inner > img.width-u-100,
  #pestMain > .pestPage__inner > h1.mod-head01{
    margin-left:-14px;
    margin-right:-14px;
  }

  #pestMain > .pestPage__inner > img.width-u-100{
    display:block;
    width:calc(100% + 28px);
    max-width:none;
  }

  #pestMain > .pestPage__inner > h1.mod-head01{
    padding-left:14px;
    padding-right:14px;
    box-sizing:border-box;
  }
}