:root {
	--font-gothic: "游ゴシック体", "Yu Gothic", YuGothic, "ヒラギノ角ゴシック Pro", "Hiragino Kaku Gothic Pro", "メイリオ", Meiryo, Osaka, "ＭＳ Ｐゴシック", "MS PGothic", sans-serif;

	/* カラーパレット */
	--color-primary:       #10bb88;
	--color-primary-light: #f0faf6;
	--color-primary-dark:  #0e9f73;
	--color-text:          #1a1a1a;
	--color-text-secondary:#666;
	--color-text-meta:     #aaa;
	--color-bg:            #f9f9f9;
	--color-bg-card:       #fff;
	--color-border:        #e0e0e0;
	--color-heading-bg:    #f0faf6;
	--color-heading-text:  #1a3a2a;
	--color-content:       #016540;

	/* その他 */
	--color-muted:  #999;
	--radius-sm:   4px;
	--radius-md:   8px;
	--shadow-card: 0 2px 8px rgba(0, 0, 0, 0.06);
}

html, body, div, span, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, i, dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td {
	margin: 0;
	padding: 0;
	border: 0;
	outline: 0;
	font-size: 100%;
	vertical-align: baseline;
	background: transparent;
}
body {
	text-align: left;
	background-color: var(--color-bg);
	color: var(--color-text);
	padding: 0px;
	padding-top: 50px;
	margin: 0px;
	line-height: 1.6;
}
header {
	width: 100%;
	z-index: 100;
	background-color: var(--color-primary);
	position: fixed;
	top: 0px;
	left: 0px;
	margin: 0px;
	padding: 10px 16px;
	box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1);
}
header a#site_title {
	color: #fff;
	text-decoration: none;
	margin: 0px;
	padding-bottom: 0px;
	font-family: var(--font-gothic);
}
header #httpTitle {
	color: #fff;
	font-size: small;
	margin: 0px;
	padding: 0px;
	font-family: var(--font-gothic);
}
header a.headerButton {
	color: var(--color-primary);
	background-color: #fff;
	margin: 0px 5px 0px 5px;
	padding: 0px 5px 0px 5px;
	text-decoration: none;
}
footer {
	width: 100%;
	background-color: var(--color-primary);
	padding: 20px 16px;
	text-align: center;
	color: #fff;
	font-size: 0.875rem;
	margin: 0px;
}
footer span#footer_title a {
	color: #fff;
	text-decoration: none;
	font-family: var(--font-gothic);
}
h1, h2, h3 {
	font-family: var(--font-gothic);
	padding: 5px 0px 0px 5px;
}
h1 {
	border-left: 5px solid var(--color-primary);
	background-color: var(--color-heading-bg);
	color: var(--color-heading-text);
	margin: 16px 0;
	padding: 12px 16px;
	font-size: 1.25rem;
	line-height: 1.5;
}
h2 {
	font-size: medium;
	color: var(--color-muted);
	border-bottom: 2px solid var(--color-muted);
}
/* common rule */
strong {
	font-size: larger;
}
.pr {
	color: #980065;
}
.alert {
	color: #980000;
}
.smaller {
	font-size: small;
}
.larger {
	font-size: large;
	font-weight: bold;
}
.greenlarger {
	font-size: x-large;
	color: green;
}
.stronger {
	font-size: x-large;
}
.center {
	text-align: center;
}
.hidden {
	display: none;
}
/* common rule, End; */

section#mainflame{
	background-color: var(--color-bg);
	color: var(--color-content);
	margin: 0px;
	padding: 5px;
}
img {
	max-width: 100%;
	height: auto;
}
ul, li {
	list-style-type: none;
	padding-left: 0px;
}
ul.list li{
	list-style-type: circle;
	margin-left: 20px;
}
hr {
	border: dashed 0px var(--color-primary);
	margin-bottom: 30px;
}
div.navi_contents {
	padding: 5px;
}
a.from_person, ul.person_list a, a.volume_name, ul.volume_list a {
	color: var(--color-text-meta);
	border-bottom: dashed var(--color-text-meta) 1px;
	text-decoration: none;
	padding: 0px;
}
a.from_person:hover, ul.person_list a:hover, a.volume_name:hover, ul.volume_list a:hover {
	color: var(--color-text);
}
ul.person_list, ul.volume_list {
	display: flex;
	flex-wrap: wrap;
	justify-content: flex-start;
	align-content: space-between;
}
ul.person_list li, ul.volume_list li {
	margin: 5px;
}
ul.person_list a, ul.volume_list a {
	padding: 5px;
}
ul.person_list a.navi_contents_clicked, ul.person_list a.navi_contents_clicked:hover, ul.volume_list a.navi_contents_clicked, ul.volume_list a.navi_contents_clicked:hover {
	color: var(--color-text);
}
.flex {
	display: flex;
	justify-content: space-between;
}
.dialogue {
	position: relative;
	overflow: hidden;
	background-color: var(--color-bg-card);
	border: 1px solid var(--color-border);
	border-left: 4px solid var(--color-primary);
	border-radius: var(--radius-md);
	padding: 20px 20px 16px 24px;
	margin: 20px 0;
	box-shadow: var(--shadow-card);
	font-family: Verdana, Meiryo, sans-serif;
}

.dialogue::before {
	content: "\201C";
	position: absolute;
	top: 4px;
	left: 12px;
	font-size: 3rem;
	color: var(--color-primary);
	opacity: 0.3;
	line-height: 1;
	font-family: Georgia, serif;
}

.dialogue .large {
	color: var(--color-text);
	font-weight: 600;
	line-height: 1.6;
}

.dialogue .small {
	color: var(--color-text-secondary);
	line-height: 1.5;
}

.dialogue .copyright {
	font-size: 0.75rem;
	color: var(--color-text-meta);
	margin-top: 8px;
}
p#page_announce {
	background-color: #ff0;
	padding: 10px;
	margin: 15px -5px;
	color: #f00;
	font-weight: bold;
}
.amazon {
	background-color: #f0f0f0;
	padding: 10px;
	margin: 15px -5px;
	color: #fefefe;
}
.amazon a{
	color: var(--color-text);
	text-decoration: none;
	border-bottom: dashed var(--color-text) 1px;
}
#smartphone {
	display: none;
}
label {
	cursor: pointer;
}
ol.breadcrumbs{
	font-size: small;
	margin-left: 0px;
	margin-bottom: 0px;
	padding-left: 10px;
	background-color: #eee;

}
ol.breadcrumbs a{
	text-decoration: none;
	color: #555;
}
ol.breadcrumbs a:hover{
	text-decoration: underline;
	color: var(--color-text);
}
ol.breadcrumbs li{
	display: inline;
}
ol.breadcrumbs li:before{
	content: " > ";
}
ol.breadcrumbs li:first-child:before{
	content: none;
}
nav.navi form {
	background-color: #fff;
	padding: 5px;
	margin: 0px;
	box-shadow: rgba(113, 135, 164, 0.239216) 3px 1px 3px 1px;
}
nav.navi input[type="text"] {
	width: 98%;
	font-size: 120%;
	background-color: transparent;
	border: none;
	border-bottom: 1px solid #9e9e9e;
	border-radius: 0;
	outline: none;
	height: 3rem;
	width: 100%;
	margin: 0px 0px 0px 0px;
	padding: 0px 0px 0px 5px;
	box-shadow: none;
	box-sizing: content-box;
	transition: all .3s;
}
nav.navi  input[type="text"]:focus, nav.navi input[type="text"]:hover {
	font-size: 130%;
	background-color: #f5faf5;
	border-bottom: 1px solid #88bb88;
}
nav.navi input[type="button"], nav.navi input[type="submit"] {
	width: 100%;
	font-size: 120%;
	margin: 20px 0px;
	padding: 10px;
	background: #efefef;
	border: 1px #eee solid;
	color: var(--color-text);
	-webkit-appearance: none;
	box-shadow: 0 2px 2px var(--color-muted);
}
dt.navi_inline {
	display: inline;
	font-size: large;
}
dd.navi_inline {
	display: inline;
	font-size: xx-large;
}
nav.navi dd {
	padding: 5px;
	margin: 5px;
}
input {
	cursor: pointer;
}
.pager {
    display: flex;
    justify-content: center;
}

.pager ul {
    list-style: none;
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
}

.pager ul li {
    margin: 5px;
}

.pager ul li span,
.pager ul li a {
    display: block;
    font-size: 20px;
    padding: 15px;
    border-radius: 3px;
    border: 1px dashed #5a5;
}

.pager ul li a {
    background: #5a5;
    color: #fff;
    text-decoration: none;
}

.small {
	font-size: small;
}
.large {
	font-size: large;
}
.x-large {
	font-size: x-large;
}
.xx-large {
	font-size: xx-large;
}
.copyright {
	font-size: small;
	color: var(--color-text-meta);
}
@media screen and (max-width: 360px){
	header a{
		font-size: small;
	}
}
@media screen and (max-width: 728px){
	header {
		width: 100%;
		z-index: 100;
		background-color: var(--color-primary);
		position: fixed;
		top: 0px;
		left: 0px;
		margin: 0px;
		padding: 10px 0px 10px 0px;
	}
	#httpTitle {
		display: block;
	}
	.pager ul li span,
	.pager ul li a {
	    font-size: 15px;
	    padding: 5px;
	}
	dd.navi_inline {
		display: inline;
		font-size: large;
	}
	.small {
		font-size: medium;
	}
	.large {
		font-size: x-large;
	}
	.x-large {
		font-size: xx-large;
	}
	div.fromto, a.volume_name {
		font-size: small;
	}
	body {
		font-size: 16px;
		line-height: 1.7;
		padding-top: 56px;
	}
	div.dialogue {
		margin: 12px -4px;
		padding: 16px;
		border-radius: var(--radius-sm);
	}
	div.dialogue div{
		margin: 5px 0px;
	}
	div.dialogue .small{
		font-size: 0.875rem;
		color: #555;
		line-height: 1.6;
	}
	div.dialogue .large{
		font-size: 1.1rem;
		color: var(--color-text);
		line-height: 1.7;
		font-weight: 600;
	}
	.copyright {
		font-size: xx-small;
		line-height: normal;
		margin: 0px;
	}
	/* タップターゲットの最小サイズ確保（Google推奨48px） */
	ul.person_list a,
	ul.volume_list a {
		display: inline-block;
		padding: 8px 12px;
		min-height: 44px;
		line-height: 28px;
	}
	.pager ul li a,
	.pager ul li span {
		padding: 10px 14px;
		font-size: 1rem;
		min-width: 44px;
		text-align: center;
	}
}
@media screen and (max-width:728px){
	header, footer {
		text-align: center;
	}
	footer {
		margin-top: 30px;
	}
	#smartphone {
		display: inline;
	}
	#menu_icon {
		text-decoration: none;
		background-color: #ffffff;
		color: #000000;
		z-index: 100;
		opacity: 1.0;
		text-align: right;
		border-radius: 5px;
		margin: 5px;
		padding: 5px;
		font-size: small;
		line-height: 30px;
	}
	#menu_list {
		margin-left: 5px;
		padding-left: 5px;
		color: #000000;
		background-color: #f0f0f0;
	}
	#menu_list h1 {
		font-size: medium;
	}
	#mainflame{
		z-index: 50;
		margin-top: 20px;
	}
	.navi_list {
		font-size: small;
	}
	.navi_list li{
		margin: 0px 5px;
	}
	input[type="checkbox"], input[type="radio"] {
		-webkit-appearance: none;
		position: relative;
		border-radius: 5px;
		border: 2px solid #444;
		box-sizing: border-box;
		width: 15px;
		height: 15px;
		background: #fff;
		margin: 5px 3px 5px 0px;
	}
	label {
		margin-right: 10px;
	}
	input[type="checkbox"] {
		vertical-align: -7px;
	}
	input[type="radio"] {
		vertical-align: -6px;
	}
	input[type="checkbox"]:checked, input[type="radio"]:checked {
		padding: 0px;
		background: #444;
	}
	.hidden_mobile {
		display: none;
	}
}
@media screen and (min-width:729px) and (max-width:1023px){
	header, footer {
		text-align: center;
	}
	span.link_amp {
		display: none;
	}
}
div#main_right div.navi_related {
	margin-bottom: 15px;
	padding-bottom: 15px;
	border-bottom: 1px solid var(--color-muted);
}
div#main_right div.navi_related_wrapper {
	display: flex;
	align-items: center;
	gap: 4%;
}
div#main_right div.navi_related_only_text {
	background-color: #fff;
	height: 20px;
	padding: 5px;
	text-align: center;
}
div#main_right div.navi_related_left {
	flex: 0 0 47%;
	overflow: hidden;
	height: 80px;
	position: relative;
}
div#main_right div.navi_related_left img{
	width: 95%;
	float: left;
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
}
div#main_right div.navi_related_right {
	flex: 1 1 auto;
	text-align: left;
}
div#main_right div.navi_related a {
	display: block;
	color: var(--color-text);
	text-decoration: none;
	font-weight: 700;
}
div#main_right div.navi_related a:hover {
	text-decoration: underline;
}
div#main_right div.navi_related strong {
	display: block;
	font-size: small;
}
div#main_right .navi_contents a {
	font-size: small;
}
@media screen and (min-width:1024px){
	header a#site_title {
		padding-left: 15px;
	}
	header #httpTitle {
		margin-left: 15px;
	}
	footer div{
		padding-left: 15px;
	}
	div#main_flame {
		display: flex;
		align-items: flex-start;
	}
	div#main_left {
		flex: 1 1 auto;
		min-width: 0;
	}
	div#main_right {
		flex: 0 0 20%;
		padding-top: 6px;
	}
	.dialogue {
		margin: 20px 0;
		padding: 24px 28px 20px 32px;
	}
	p#page_announce {
		margin-right: 0px;
	}
	.wrap_position {
		position: relative;
	}
	.dialogue_wrapper {
		text-align: center;
		max-width: 900px;
		margin: 0 auto;
	}
	.dialogue_wrapper div {
		text-align: left;
	}
	div.dialogue div.small{
		font-size: 0.9rem;
	}
	div.dialogue div.large{
		font-size: 1.25rem;
	}
	.link_unit {
		width: 728px;
		height: 15px;
	}
	div#characterLinks ul {
		font-size: small;
		margin: 0px 15px;
	}
	div#characterLinks li {
		display: inline;
		padding-right: 5px;
	}
	div#characterLinks a {
		color: #fff;
	}
	span.link_amp {
		display: none;
	}
}
.hr_dialogue {
	border: 1px #ddd solid;
}
.margin_5 {
	margin: 5px;
}
.margin_10 {
	margin: 10px;
}
.orange {
	color: #ff9428;
}
.brown {
	color: #996666;
}
.redbrown {
	color: #d26900;
}
.purple {
	color: #cc00cc;
}
.yellow {
	color: #999900;
}
.bluegreen {
	color: #009999;
}
.inline {
	display: inline;
}

/* トップページ 作品一覧グリッド */
nav.works-grid {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 8px 12px;
	padding: 12px 0;
}
a.works-item {
	display: block;
	padding: 10px 14px;
	background: var(--color-bg-card);
	border: 1px solid var(--color-border);
	border-radius: var(--radius-sm);
	color: var(--color-content);
	text-decoration: none;
	transition: background-color 0.15s, border-color 0.15s;
	font-size: 0.95rem;
	line-height: 1.4;
}
a.works-item:hover {
	background-color: var(--color-primary-light);
	border-color: var(--color-primary);
}
a.works-item strong {
	font-size: 1rem;
	font-weight: 700;
	color: var(--color-heading-text);
}
@media screen and (max-width: 728px) {
	nav.works-grid {
		grid-template-columns: 1fr;
		gap: 6px;
	}
	a.works-item {
		padding: 12px 14px;
		font-size: 1rem;
	}
}
@media screen and (min-width: 1024px) {
	nav.works-grid {
		grid-template-columns: repeat(3, 1fr);
	}
}

/* AdSense CLS防止: 広告ユニットの最小高さを確保してLayout Shiftを抑制 */
.adsbygoogle {
	display: block;
}
.adsbygoogle[data-ad-format="fluid"] {
	min-height: 250px;
}

#novel-link-btn {
    margin: 30px 0;
}

#novel-link-btn a {
    display: block;
    width: 90%;
    max-width: 350px;
    margin: 0 auto;
    padding: 20px 15px;
    font-size: 1.3em;
    font-weight: bold;
    text-align: center;
    text-decoration: none;
    color: #ffffff;
    background-color: var(--color-primary);
    border-radius: var(--radius-md);
    box-shadow: 0 4px 6px rgba(0, 0, 0, 0.15);
    box-sizing: border-box;
    transition: background-color 0.3s ease, transform 0.1s ease;
}

#novel-link-btn a:hover,
#novel-link-btn a:active {
    background-color: var(--color-primary-dark);
    transform: translateY(2px);
    box-shadow: 0 2px 3px rgba(0, 0, 0, 0.15);
}

@media screen and (min-width: 729px) {
    #novel-link-btn a {
        padding: 25px 20px;
        font-size: 1.4em;
    }
}
