@charset "utf-8";

/* ページ内リンクの移動を滑らかに */
html {
	scroll-behavior: smooth;
	scroll-padding-top: var(--hd-hight);
}

:root {
	--main-color: #22adad;
	--sub-color: #50acb7;
  --orange-color: #ff9502;

	--font-jp: 'Noto Sans JP';
	--font-en: 'Montserrat';

	--main-txt: 1.6rem;
	--font-24: 2.4rem;
	--wid-1280: 1280px;
  --wid-320: 320px;
  --hd-hight: 80px; 
}

@media screen and (max-width: 1024px) {
  :root {
    --hd-hight: 60px;
  }
}

@media screen and (max-width: 767px) {
  :root {
    --main-txt: 1.4rem;
		--font-24: 2rem;
    --wid-1280: 90%;
		--wid-320: 100%;
    --hd-hight: 56px;
  }
}


body {
	font-size: 1.6rem;
	line-height: 1.8;
	letter-spacing: 0;
	font-weight: 400;
}


a{
	transition: all .3s;
}

h1,h2,h3,h4,h5,h6{
	margin: 0;
}
.text-wrap {
	display: inline-block;
}
img {
	max-width: 100%;
	height: auto;
}

.bold {
  font-weight: 700;
}

.red {
  color: red;
}

.center{
  text-align: center;
}

.pc_block {
	display: block;
}

.sp_block {
	display: none;
}
.flex{
  display: flex;
  justify-content: center;
  align-items: center;
}

:target::before{
	content: '';
	margin-top: -60px;
	height: 60px;
	display: block;
	visibility: hidden;
}
/* ==========================
インデント
============================= */
.indent {
	text-indent: -1em;
	padding-left: 1em;
}
.indent_span{
	display: block;
	text-indent: -1em;
	padding-left: 1em;
}


/* アニメーション
======================================================= */
/* 初期は非表示 */
.fade [data-fade-title],
.fade [data-fade-rest] {
	opacity: 0;
	transform: translateY(12px);
	transition: opacity .5s ease, transform .5s ease;
	will-change: opacity, transform;
}

/* 表示状態 */
.fade [data-fade-title].is-visible,
.fade [data-fade-rest].is-visible {
	opacity: 1;
	transform: none;
}

/* モーション軽減 */
@media (prefers-reduced-motion: reduce) {
	.fade [data-fade-title],
	.fade [data-fade-rest] {
		transition: none;
		transform: none;
	}
}
@media screen and (max-width: 1279px) {
/* タブレット閲覧時、横幅可変 */
	body {
		width: 1280px;
	}
}


@media screen and (max-width: 767px) {
/* スマホ閲覧時 */
	body {
		width: 100%;
		font-size: 1.4rem;
	}
	.pc_block {
		display: none;
	}
	.sp_block {
		display: block;
	}
}



/* ==========================
header
============================= */
#header {
  background: #fff;
  width: 100%;
  height: var(--hd-hight);
  padding: 1rem 6rem;
	position: fixed;
	top: 0;
	z-index: 1050;
}
.h_inner{
  height: 100%;
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.header_logo img {
  height: auto;
}
.pc_nav--list{
  display: flex;
  gap: 0;
  align-items: center;
}
.pc_nav--item {
  position: relative;
}
.pc_nav--item + .pc_nav--item::before {
  content: '';
  position: absolute;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
  width: 1px;
  height: 1.4rem;
  background: #ccc;
}
.pc_nav--item a {
  white-space: nowrap;
  color: #333;
  text-decoration: none;
  padding: 0.5rem 1.4rem;
  display: block;
  position: relative;
}
.pc_nav--item a::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%) scaleX(0);
  width: 80%;
  height: 2px;
  background: var(--main-color);
  transition: transform 0.3s ease;
}
.pc_nav--item a:hover {
  color: var(--main-color);
}
.pc_nav--item a:hover::after {
  transform: translateX(-50%) scaleX(1);
}

/* LINE・無料相談ボタン */
.pc_nav--line,
.pc_nav--cont {
  margin-left: 0.8rem;
}
.pc_nav--line a {
  white-space: nowrap;
  font-weight: 600;
  display: block;
  padding: 0.6rem 1.6rem;
  border-radius: 4px;
  text-decoration: none;
  background: #06c755;
  color: #fff;
  transition: opacity 0.3s ease;
}
.pc_nav--line a:hover {
  opacity: 0.8;
}
.pc_nav--cont a {
  white-space: nowrap;
  font-weight: 600;
  display: block;
  padding: 0.6rem 1.6rem;
  border-radius: 4px;
  text-decoration: none;
  background: var(--orange-color);
  color: #fff;
  transition: opacity 0.3s ease;
}
.pc_nav--cont a:hover {
  opacity: 0.8;
}

/* ハンバーガーボタン・SPナビ（デフォルト非表示） */
.hamburger {
  display: none;
}
.sp_nav {
  display: none;
}

/* ==========================
  タブレット（1024px以下）：ハンバーガー表示
============================= */
@media screen and (max-width: 1024px) {
  #header {
    padding: 1rem 2rem;
  }
  .header_logo img {
    width: 200px;
  }
  .pc_nav {
    display: none;
  }

  /* ハンバーガーボタン */
  .hamburger {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 6px;
    width: 44px;
    height: 44px;
    padding: 0;
    background: none;
    border: none;
    cursor: pointer;
    z-index: 1100;
    position: relative;
    flex-shrink: 0;
  }
  .hamburger__line {
    display: block;
    width: 24px;
    height: 2px;
    background: #333;
    border-radius: 1px;
    transition: transform 0.3s ease, opacity 0.3s ease;
  }
  .hamburger.is-open .hamburger__line:nth-child(1) {
    transform: translateY(8px) rotate(45deg);
  }
  .hamburger.is-open .hamburger__line:nth-child(2) {
    opacity: 0;
  }
  .hamburger.is-open .hamburger__line:nth-child(3) {
    transform: translateY(-8px) rotate(-45deg);
  }

  /* ドロワーナビ */
  .sp_nav {
    display: block;
    position: fixed;
    top: 0;
    right: 0;
    width: 70%;
    max-width: 380px;
    height: 100vh;
    height: 100dvh;
    background: #fff;
    padding: calc(var(--hd-hight) + 2rem) 2.5rem 2rem;
    box-shadow: -2px 0 8px rgba(0,0,0,0.15);
    transform: translateX(100%);
    transition: transform 0.3s ease;
    z-index: 1050;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
  }
  .sp_nav.is-open {
    transform: translateX(0);
  }
  .sp_nav--list {
    list-style: none;
    padding: 0;
    margin: 0;
  }
  .sp_nav--item {
    border-bottom: 1px solid #eee;
  }
  .sp_nav--item a {
    display: block;
    padding: 1.4rem 0;
    color: #333;
    text-decoration: none;
    font-size: 1.5rem;
  }
  .sp_nav--item a:hover {
    color: var(--main-color);
  }
  .sp_nav--line {
    margin-top: 2rem;
  }
  .sp_nav--line a,
  .sp_nav--cont a {
    display: block;
    text-align: center;
    padding: 1.4rem;
    border-radius: 6px;
    font-size: 1.5rem;
    font-weight: 500;
    text-decoration: none;
    margin-bottom: 1rem;
  }
  .sp_nav--line a {
    background: #06c755;
    color: #fff;
  }
  .sp_nav--line a:hover {
    opacity: 0.8;
  }
  .sp_nav--cont a {
    background: var(--main-color);
    color: #fff;
  }
  .sp_nav--cont a:hover {
    opacity: 0.8;
  }

  /* 背景オーバーレイ */
  body.is-nav-open::before {
    content: '';
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 1040;
  }
  body.is-nav-open {
    overflow: hidden;
  }
}

/* ==========================
  スマホ（767px以下）
============================= */
@media screen and (max-width: 767px) {
  #header {
    padding: 0.8rem 1.5rem;
  }
  .header_logo img {
    width: 180px;
  }
  .sp_nav {
    width: 80%;
    max-width: 320px;
    padding: calc(var(--hd-hight) + 1.5rem) 2rem 2rem;
  }
  .sp_nav--item a {
    padding: 1.2rem 0;
    font-size: 1.4rem;
  }
  .sp_nav--line a,
  .sp_nav--cont a {
    font-size: 1.4rem;
    padding: 1.2rem;
  }
}

/* ==========================
footer
============================= */
.ft_inner{
	background: #f6f6f6;
	display: flex;
	justify-content: space-between;
	padding: 6rem;
	position: relative;

  address{
    img {
      margin-bottom: 2rem;
    }
  }

}

.copyright{
	background: #232323;
	color: var(--sub-color);
	font-size: 1.6rem;
	text-align: center;
	letter-spacing: 0;
	font-weight: 500;
	height: 50px;
	display: flex;
	justify-content: center;
	align-items: center;
}

@media screen and (max-width: 767px) {
	.ft_inner{
		padding: 30px 5%;
		flex-wrap: wrap;
		justify-content: start;
		gap: 2rem;

		address{
			padding-top: 2rem;
		}

	}
	.copyright{
		line-height: 1.4;
		padding: 2rem 5%;
	}
}

/* ==========================
main
============================= */
main{
  margin-top: var(--hd-hight);
}

/*============================= 
パンくず
============================= */

.page-pankuzu {
	display: flex;
	align-items: center;
	li{
		display: flex;
		font-size: 1.3rem;

		&::after{
			content: "＞";
			background-size: contain;
			margin: 0px 3px 0 8px;
		}
	}
	a{
		text-decoration: underline;
		text-underline-offset: 0.2em;
		color: #fff;
		&:hover{
			text-decoration: none;
		}
	}
}
.page-pankuzu .under_contents::after {
	content: none;
}

@media screen and (max-width: 767px){
	.page-pankuzu {
		height: auto;
		font-size: 1.4rem;
		flex-wrap: wrap;
	}
}




/*back_top*/
#page_top {
	width: 56px;
	height: 56px;
	position: fixed;
	bottom: -20rem;
	opacity: 1;
	right: 7.5rem;
	z-index: 40;
	background: url("../img/page_top.svg") no-repeat center;
	-webkit-background-size: contain;
	background-size: contain;
	border-radius: 50%;
	box-shadow: 5px 5px 10px #0000001A;
	transition: .5s;
	border: 1px solid #fff;
}
#page_top.active {
	bottom: 4rem;
}
#page_top a {
	display: block;
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
}


@media screen and (max-width: 767px){
	#page_top.active {
		right: 3rem;
		bottom: 2rem;
	}
}

/* ============================================================
  detail_side - サイドバー
============================================================ */
#aside {
  width: 300px;
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  gap: 3rem;
  align-self: stretch;
}

/* 検索 */
.side_search {
  form {
    display: flex;
    border: 1px solid #ddd;
    border-radius: 2px;
    overflow: hidden;
  }

  input {
    flex: 1;
    padding: 0.9rem 1rem;
    font-size: 1.4rem;
    border: none;
    outline: none;
    font-family: var(--font-jp);
    color: #333;
    min-width: 0;

    &::placeholder { color: #aaa; font-size: 1.3rem; }
  }

  button {
    background: var(--orange-color);
    color: #fff;
    border: none;
    padding: 0 1.2rem;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    transition: opacity 0.2s;

    &:hover { opacity: 0.8; }
  }
}

/* カテゴリ一覧 */
.side_cat {
  ul { 
		list-style: none;
		border-top: 1px solid #e8e8e8; 
	}

  li a {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 1rem 0.6rem;
    border-bottom: 1px solid #e8e8e8;
    color: #333;
    text-decoration: none;
    transition: color 0.2s;

    &::after {
      content: "›";
      color: var(--main-color);
      font-size: 1.8rem;
      line-height: 1;
    }

    &:hover { 
			color: var(--main-color); 
		}
  }
}

/* タグ一覧 */
.side_tag {
  ul {
    list-style: none;
    display: flex;
    flex-wrap: wrap;
    gap: 0.6rem;
  }

  li a {
    display: inline-block;
    padding: 0.4rem 1rem;
    background: #f0f7f7;
    border: 1px solid #d6eded;
    border-radius: 50px;
    font-size: 1.3rem;
    color: var(--main-color);
    text-decoration: none;
    transition: background 0.2s, color 0.2s;

    &:hover {
      background: var(--main-color);
      color: #fff;
      border-color: var(--main-color);
    }
  }
}

.side_tag--title,
.side_cat--title,
.side_rec--title,
.side_pop--title {
  font-weight: 700;
  color: #1a1a1a;
  border-left: 4px solid var(--main-color);
  padding-left: 0.8rem;
  margin-bottom: 1.2rem;
  line-height: 1.4;
}

.side_sticky {
  position: sticky;
  top: calc(var(--hd-hight) + 2rem);
  display: none;
  flex-direction: column;
  gap: 3rem;
}
.side_sticky.is-visible {
  display: flex;
}

@media screen and (max-width: 767px) {
  #aside {  
    width: 100%;
  }
  .side_sticky {
    position: static;
    display: none !important;
  }
}

.side_rec,
.side_pop {
  ul { list-style: none; }

  li {
    border-bottom: 1px solid #e8e8e8;
    &:first-child { border-top: 1px solid #e8e8e8; }

    a {
      display: flex;
      gap: 1rem;
      padding: 1rem 0;
      text-decoration: none;
      color: #333;
      align-items: flex-start;
      transition: opacity 0.2s;
      &:hover { opacity: 0.75; }
    }

    img {
      width: 80px;
      height: 60px;
      object-fit: cover;
      border-radius: 3px;
      flex-shrink: 0;
    }

    p { font-size: 1.3rem; line-height: 1.6; }
  }
}


/* 印刷用設定 */
@media print {
	body {
		width:1280px;
		zoom: 0.68;
		-webkit-print-color-adjust: exact;
	}
}
@page {
	size: A4;
	margin: 5px;
}