@charset "UTF-8";

html{
	scroll-behavior: smooth;
}

body{
	position: relative;
	padding: var(--margin-base);
	font-family: var(--font-primary);
	font-weight: 500;
	overflow-x: hidden;
	background-color: var(--color-base);
	color: var(--color-text);
}

html, body, * {
  letter-spacing: -0.03em !important;
}

a#return{
	display: block;
	position: fixed;
	bottom: 3rem;
	right: 3rem;
	font-size: 3em;
	line-height: 1;
	color: var(--color-accent);
}

a{
	color: var(--color-main);
}

/* コンテンツエリア */
section{
	max-width: 110rem;
	margin: 0 auto var(--margin-base);
}

section:last-of-type{
	margin-bottom: 1.3em;
}

/* プロフ */
#prof > *{
	margin: 0 auto;
	width: fit-content;
}

#prof h1{
	font-size: 1em;
	line-height: 1.8em;
	letter-spacing: 0.5rem;
	font-weight: 600;
}

#prof h1 a {
  font-size: 2em; /* 親の h1 と同じサイズにする */
  line-height: 1.8em;
  text-decoration: none; /* 下線を消す場合 */
}

h1{
	font-family: "Neonderthaw", cursive;
	font-weight: 400;
	font-style: normal;
}

#prof #icon{
	margin-right: 0.7em;
	width: 1.8em;
	aspect-ratio: 1 / 1;
	border-radius:50%;
	vertical-align: middle;
	object-fit:cover;
	background-color: var(--color-accent);
}

#prof .text{
	margin: 2em auto 2.5em;
	width: fit-content;
}

#menu{
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 1.4em 2em;
	margin-top: 2em;
}

#menu a{
	display: block;
	text-align: center;
	font-weight: 600;
	color: var(--color-text);
	text-decoration: none;
}

#menu a i{
	display: block;
	margin-bottom: -0.1em;
	width: 2.5em;
	height: 2.5em;
	font-size: 1.8em;
	line-height: 2.5em;
	border-radius:50%;
}

#menu a span{
	font-size: 1em;
	letter-spacing: 0.1em;
}

#menu a:nth-child(odd) i{
	background-color: var(--color-main);
}

#menu a:nth-child(even) i{
	background-color: var(--color-accent);
}

#menu a:hover i{
	color: var(--color-base);
}

#menu a:hover:nth-child(odd) i,
#menu a:hover:nth-child(even) i{
	background-color: var(--color-text);
}

#footer a {
  text-decoration: underline;
}

/* ボックスの中 */

.parent-element {
  overflow: visible;
}

/* 共通BOXスタイル */
.box {
  background: #fff;
  padding: 20px;
  margin-bottom: 20px;
  border: 1px solid #696969; /* シャープな影代わり */
  border-radius: 15px;     /* 角を少し丸く */
  box-shadow: 4px 4px 0 rgba(0, 0, 0, 0.2); /* シャープな影 */
max-width: 900px; /* 最大幅を設定 */
  margin: 0 auto;
}
.box{
	padding: var(--margin-base);
	background-color: var(--color-light);
	border-radius: var(--border-radius);
	border: 1px solid #696969; /* シャープな影代わり */
	border-radius: 15px;
}

.box h2{
	padding-bottom: 0.2em;
	font-size: 1.2em;
	font-weight: 600;
	border-bottom: solid 1px var(--color-main);
}



.box p + h2,
.box ul + h2,
.box dl + h2{
	margin-top: 1.5em;
}

.box h3{
	padding-bottom: 0.2em;
	width: fit-content;
	font-size: 1.1em;
	font-weight: 600;
	border-bottom: solid 1px var(--color-accent);
}



.box p + h3,
.box ul + h3,
.box dl + h3{
	margin-top: 2.2em;
}

.box > p{
	margin: 0;
}

.box > div{
	margin: 2em 0;
}

.box > *:first-child{
	margin-top: 0;
}

.box > *:last-child{
	margin-bottom: 1.3em;
}

.box strong{
	font-weight: 600;
	background:linear-gradient(transparent 60%, var(--color-marker) 60%);
}

.text a{
	text-decoration: underline;
	font-weight: 600;
}

.text a::after{
	margin-left: 0.2em;
	font-family: var(--font-icon);
	content: "f35d";
	font-weight: 900;
}

dl,ul{
	margin: 1.4em 0;
	padding-left: 1.6em;
}

dt,li{
	position: relative;
}

ul{
	column-gap: var(--margin-base);
}

ul.column2{
	column-count: 2;
}

ul.column3{
	column-count: 3;
}

li{
	margin-bottom: 0.3em;
}

dd{
	margin-bottom: 1em;
}

dt::before,
li::before{
	position: absolute;
	left: -1.6em;
	font-family: var(--font-icon);
	content: "f058";
	font-weight: 400;
	color: var(--color-accent);
}

dt.like::before,
li.like::before{
	content: "f004";
	color: var(--color-main);
	font-weight: 900;
}

dt.dislike::before,
li.dislike::before{
	content: "f7a9";
	font-weight: 900;
}

p.person:before {
	font-family: 'Material Icons';
    content: "person";  /* ligature 形式 */
    font-size: 1.2em;
    vertical-align: middle;
}

.link dt::before,
.link li::before{
	content: "f35d";
	font-weight: 900;
}



/* ↓イラスト */
#illustlog{
	display: flex;
	flex-wrap: wrap;
	gap: 1.5em;
}

#illustlog .illust{
	width: calc(20% - 1.5em * 4 / 5);
	aspect-ratio: 1 / 1;
}

#illustlog .illust > a{
	position: relative;
	display: block;
	width: 100%;
	height: 100%;
	overflow: hidden;
}

#illustlog .illust > a::before{
	content: "";
	display: block;
	padding-top: 100%;
}

#illustlog .illust > a > img{
	position: absolute;
	top: 0;
	left: 0;
	height: 100%;
	width: 100%;
	object-fit: cover;
}

/* ↓オフライン書籍リスト */
/* ↓オフライン書籍リスト Grid版 */
.booklist {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); 
  gap: 1.5em;            /* カード間の余白 */
row-gap: 2em;  
margin: 0 auto;
  width: 100%;
  justify-content: center;
  /*  justify-items: stretch; 全カードを均等幅に揃える */
}

.booklist > .book.last-book {
    padding: 1.3em !important;
}

.book:only-child {
  max-width: 300px;
  margin: 0 auto;
}

/* bookカード共通 */
.booklist .book {
  display: flex;
  flex-direction: column; /* 縦並び */
  justify-content: space-between; /* 上下要素を分散 */
  padding: 1.3em;
  border: 1px solid #696969;
  border-radius: 6px;
  box-shadow: 4px 4px 0 rgba(0,0,0,0.2);
  background-color: var(--color-light);
box-sizing: border-box;
}

.book {
  max-width: 100%;   /* 枠いっぱいに広げる */
  margin: 0 auto;    /* 中央寄せ */
}

/* 本の概要部分 */
.book .gaiyou {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.5em;
  position: relative;
}

/* 表紙画像 */
.book .gaiyou img.hyoushi {
width: 100%;
  aspect-ratio: 3 / 4.3;
  object-fit: cover;
  display: block;
}

/* タイトル */
.book h4 {
  font-weight: 600;
	text-align: center;
	border-bottom: 1px solid var(--color-accent);
}

/* 本の情報 */
.book p.product {
  margin: 0.3em 0;
  font-size: 0.8em;
  letter-spacing: 0.1em;
  font-family: var(--font-alphanumeric);
  font-weight: 600;
  color: var(--color-main);
  text-align: center;
}

/* 本の説明 */
.book p.outline {
  font-size: 0.95em;
  line-height: 1.5;
  text-align: left;
}

/* 注文ボタン */
.order {
  display: flex;
  gap: 1em;
  margin-top: 1em;
  width: 100%;
}

.book .order a {
  display: block;
  width: 100%;
  color: var(--color-light);
  background-color: var(--color-accent);
  line-height: 2.4;
  text-align: center;
  font-weight: bold;
  text-decoration: none;
  transition: transform 0.2s, background 0.2s;
  border-radius: 6px;
}

.book .order a:hover {
  background: #ddd;
  transform: translateY(-2px);
}

.book .order a.soldout {
  pointer-events: none;
  background-color: #ECECEC;
  color: #aaa;
  text-decoration: none;
}

/* ↓折り畳み */
summary{
	position: relative;
	display: block;
	margin: 2em auto 0;
	padding: 0 3em;
	width: fit-content;
	height: 2.4em;
	line-height: 2.4em;
	font-weight: 600;
	text-align: center;
	cursor: pointer;
	color: var(--color-accent);
	border: solid 1px var(--color-accent);
	border-radius: 2.4em;
	transition: 0.3s;
}

summary span{
	line-height: 2.4em;
}

summary:hover{
	color: var(--color-light);
	background-color: var(--color-accent);
	opacity: 0.6;
}

summary::-webkit-details-marker {
	display: none;
}

details[open] > * {
	animation: fadeIn 0.5s ease;
}

details[open] > summary{
	margin-bottom: 2em;
}

details[open] > summary span{
	display: none;
}

details[open] > summary {
	display: none;
}

@keyframes fadeIn {
	0% {
		opacity: 0; /* 透明 */
	}
	100% {
		opacity: 1;
	}
}

.zen-maru-gothic-medium {
  font-family: "Zen Maru Gothic", sans-serif;
  font-weight: 500;
  font-style: normal;
}

span {
    text-align: center;
    font-size: 0.85rem;
    color: rgb(51, 51, 51);
    flex: 1 1 0%;
    background: rgb(221, 221, 221);
    padding: 0.1rem 0.3rem;
    text-decoration: none;
    border-radius: 15px;
    transition: 0.2s;
}

/* メッセージフォーム全体 */
.message-form {
  max-width: 600px;       /* フォーム全体の最大幅 */
  margin: 2em auto;       /* 上下に余白を取り、中央揃え */
  padding: 0;             /* カード風の背景なし */
	box-sizing: border-box;
	text-align: left;
}

/* 見出し */
.message-form h2 {
  text-align: center;
  font-size: 2em;
  margin-bottom: 2em;     /* 見出しとフォームの間を広く */
  font-weight: 600;
}

/* フォームグループ */
.message-form .form-group {
  display: flex;
  flex-direction: column;
	margin-bottom: 1.5em;   /* 各入力欄の間隔 */
	
}

/* ラベル */
.message-form label {
  font-weight: 500;
  margin-bottom: 0.5em;
	font-size: 1em;
	text-align: left;
}

/* テキスト入力、メール、textarea */
.message-form input[type="text"],
.message-form input[type="email"],
.message-form textarea {
  padding: 0.8em 1em;
  font-size: 1em;
  border: 1px solid #ccc;
  border-radius: 15px;
  box-sizing: border-box;
	transition: border 0.2s;
	text-align: left;
}

.message-form input[type="text"]:focus,
.message-form input[type="email"]:focus,
.message-form textarea:focus {
  border-color: #80989b; /* フォーカス時の色 */
  outline: none;
}

/* テキストエリアの高さ調整 */
.message-form textarea {
  resize: vertical; /* 縦方向だけリサイズ可能 */
  min-height: 120px;
}

/* 送信ボタン */
.message-form .form-group button {
  padding: 0.8em 2em;
  font-size: 1em;
  font-weight: 600;
  color: #fff;
  background-color: #80989b;
  border: none;
  border-radius: 6px;
  cursor: pointer;
  display: block;
  margin: 0 auto;       /* 中央揃え */
  transition: background 0.2s, transform 0.2s;
}

.message-form .form-group button:hover {
  background-color: #6b7f82;
  transform: translateY(-2px);
}

/* レスポンシブ対応 */
@media screen and (max-width: 768px) {
  .message-form {
    width: 90%;
    margin: 1.5em auto;
  }

  .message-form h2 {
    font-size: 1.8em;
    margin-bottom: 1.5em;
  }
  
  .message-form .form-group input,
  .message-form .form-group textarea {
    font-size: 0.95em;
  }

  .message-form .form-group button {
    width: 100%;
  }

}
a.underline {
  text-decoration: underline;
}

.badge-b {
    position: absolute;
    top: 8px;
    left: 8px;
    background: #fff;
    border: 1px solid #dc143c;
    font-size: 0.75rem;
    color: #dc143c;
    padding: 0.2rem 0.4rem;
    box-shadow: 2px 2px 0 #dc143c;
    z-index: 2; /* 念のため重なり順も上に */
}

.popover {
  position: relative;
  display: inline-block;
  cursor: help;
  border-bottom: 1px dotted #333; /* 視覚的にわかりやすく */
}

.popover-text {
  visibility: hidden;
  width: 450px;
  background-color: #333;
  color: #fff;
  text-align: left;
  padding: 8px;
  border-radius: 6px;
  position: absolute;
  z-index: 1;
  bottom: 125%; /* 上に表示 */
  left: 50%;
  transform: translateX(-50%);
  opacity: 0;
  transition: opacity 0.3s;
  font-size: 0.85em;
  line-height: 1.4;
}

.popover:hover .popover-text,
.popover:focus .popover-text {
  visibility: visible;
  opacity: 1;
}
