/* =============================================================
   Portal — Mount Inc. inspired editorial theme
   ============================================================= */

:root {
	--z-base: 1;
	--z-raised: 2;
	--z-dropdown: 100;
	--z-sticky: 900;
	--z-header: 1000;
	--z-overlay: 1001;
	--z-progress: 9000;
	--z-modal: 10000;
}

/* Material Symbols Outlined — base style */
.material-symbols-outlined {
	font-family: 'Material Symbols Outlined', sans-serif;
	font-weight: 200;
	font-style: normal;
	font-size: 1em;
	line-height: 1;
	letter-spacing: normal;
	text-transform: none;
	display: inline-block;
	white-space: nowrap;
	word-wrap: normal;
	direction: ltr;
	-webkit-font-feature-settings: 'liga';
	-webkit-font-smoothing: antialiased;
	font-variation-settings: 'FILL' 0, 'wght' 200, 'GRAD' 0, 'opsz' 24;
	vertical-align: middle;
}
.novel-card__action .material-symbols-outlined { font-size: 16px; }
.novel-action-btn .material-symbols-outlined { font-size: 16px; }
.novel-nav .material-symbols-outlined { font-size: 14px; }
.site-back .material-symbols-outlined { font-size: 14px; }
.back-to-top .material-symbols-outlined { font-size: 20px; }

/* --- Inline format helpers (editor toolbar) ----------------------- */
mark.has-inline-marker {
	background-color: transparent; /* override default <mark> yellow — gradient set via inline style */
	color: inherit;
	padding: 0;
}
.has-inline-bg-color {
	padding: 0.1em 0.2em;
	border-radius: 2px;
}
ruby { ruby-align: center; letter-spacing: 0; }
ruby rt { font-size: 0.5em; font-weight: normal; letter-spacing: 0; }
ruby rp { font-size: 0; }

/* --- Reset & base ------------------------------------------------- */
*,
*::before,
*::after {
	box-sizing: border-box;
}

/* 斜体を全面禁止 */
em, i, cite, dfn, var, address {
	font-style: normal;
}

html {
	-webkit-text-size-adjust: 100%;
	font-size: 16px;
	scroll-behavior: smooth;
	overflow-x: hidden;
}

body,
body.custom-background {
	margin: 0;
	overflow-x: hidden;
	background: var(--portal-bg, #ffffff);
	color: var(--portal-text, #1a1a1a);
	font-family: var(--portal-body-font, "Inter", "Noto Sans JP", "Yu Gothic", sans-serif);
	font-size: var(--portal-body-size, 1rem);
	font-weight: 400;
	line-height: var(--portal-line-height, 1.8);
	letter-spacing: 0.04em;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

h1, h2, h3, h4, h5, h6 {
	font-family: var(--portal-heading-font, var(--portal-body-font, "Inter", "Noto Sans JP", "Yu Gothic", sans-serif));
}

button,
input,
select,
textarea,
nav,
.site-nav,
.back-to-top,
.novel-filter__toggle,
.tag-pill,
.clap-widget {
	letter-spacing: normal;
}

img,
picture,
svg,
video {
	display: block;
	max-width: 100%;
	height: auto;
}

a {
	color: inherit;
	text-decoration: none;
	-webkit-tap-highlight-color: transparent;
	transition: opacity 0.6s ease-in-out, transform 0.6s ease-in-out;
}

a:hover,
a:focus-visible {
	opacity: 0.5;
}

/* コンテンツ内リンク — Customizer「リンクカラー」連動 */
.novel-body a,
.post-single a,
.distribute-body a,
.wp-block-group a {
	color: var(--portal-link, inherit);
}

ul,
ol {
	list-style: none;
	margin: 0;
	padding: 0;
}

dl,
dt,
dd {
	margin: 0;
}

button {
	font: inherit;
	cursor: pointer;
	-webkit-tap-highlight-color: transparent;
}

.skip-link {
	position: absolute;
	left: -9999px;
}
.skip-link:focus {
	left: 0;
	top: 0;
	background: var(--portal-accent, #1a1a1a);
	color: var(--portal-accent-text, #ffffff);
	padding: 12px 16px;
	z-index: 1000;
}
.screen-reader-text {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
}

/* --- Layout primitives -------------------------------------------- */
.container,
.site-header__inner,
.site-footer__inner,
.hero__inner,
.latest__inner,
.genre-index__inner,
.archive-head__inner,
.archive-body__inner,
.novel-head__inner,
.novel-body__inner,
.novel-nav__inner {
	max-width: var(--portal-content-max, 1100px);
	margin: 0 auto;
	padding-left: clamp(20px, 6vw, 80px);
	padding-right: clamp(20px, 6vw, 80px);
}

/* --- Info bar (announcement) ------------------------------------- */
.info-bar {
	width: 100%;
	overflow: hidden;
}
.info-bar a {
	color: inherit;
	text-decoration: none;
}
.info-bar a:hover,
.info-bar a:focus-visible {
	opacity: 0.7;
}
.info-bar__serial {
	display: block;
	font-size: 0.8em;
	font-weight: 400;
	opacity: 0.65;
	line-height: 1.3;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.info-bar__chapter {
	display: block;
	font-weight: 700;
	line-height: 1.3;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.info-bar a {
	display: inline-block;
	max-width: 100%;
	vertical-align: middle;
}

/* Static (centered) */
.info-bar--static .info-bar__inner {
	max-width: 1100px;
	margin: 0 auto;
	padding: 12px 56px 12px clamp(20px, 6vw, 80px);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.12em;
	line-height: 1.6;
	text-align: center;
}

/* Marquee (scrolling loop) */
.info-bar--marquee .info-bar__viewport {
	display: flex;
	overflow: hidden;
	padding: 12px 56px 12px 0;
}
.info-bar--marquee .info-bar__track {
	display: inline-flex;
	flex-shrink: 0;
	gap: 60px;
	padding-right: 60px;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.12em;
	line-height: 1.6;
	white-space: nowrap;
	animation: marquee var(--marquee-duration, 30s) linear infinite;
}
.info-bar--marquee:hover .info-bar__track {
	animation-play-state: paused;
}
.info-bar--marquee .info-bar__item {
	flex-shrink: 0;
}
@keyframes marquee {
	from { transform: translateX(0); }
	to   { transform: translateX(-50%); }
}

/* --- Back link (lower pages) ------------------------------------- */
.site-back {
}
.site-back__inner {
	max-width: var(--portal-content-max, 1100px);
	margin: 0 auto;
	padding: 24px clamp(20px, 6vw, 80px);
}
.site-back a {
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.2em;
	text-transform: uppercase;
}

/* --- Header ------------------------------------------------------- */
.site-header {
	position: relative;
	z-index: 1001;
	border-bottom: 1px solid var(--portal-border, #e0e0e0);
}
.site-header--has-overlay .site-header__inner {
	position: relative;
	z-index: 1;
}
.site-header__overlay {
	position: absolute;
	inset: 0;
	z-index: 0;
	pointer-events: none;
}
.site-header__logo {
	display: block;
	height: var(--logo-pc, 32px);
	width: auto;
	max-width: 100%;
}
@media (max-width: 720px) {
	.site-header__logo {
		height: var(--logo-sp, 28px);
	}
}
.site-header__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	min-height: 80px;
	padding-top: 24px;
	padding-bottom: 24px;
	gap: 32px;
}

/* Layout: logo-center */
.site-header--logo-center .site-header__inner {
	flex-direction: column;
	gap: 12px;
}
.site-header--logo-center .site-header__brand {
	order: 0;
}
.site-header--logo-center .site-header__nav {
	order: 1;
}
/* Layout: logo-right */
.site-header--logo-right .site-header__inner {
	flex-direction: row-reverse;
}

.site-header__brand a {
	display: inline-flex;
	flex-direction: column;
	gap: 2px;
}
.site-header__name {
	font-size: 18px;
	font-weight: 700;
	letter-spacing: 0.08em;
}
.site-header__name-en {
	font-size: 10px;
	font-weight: 300;
	letter-spacing: 0.25em;
	text-transform: uppercase;
	color: var(--portal-muted, rgba(26, 26, 26, 0.6));
}

.site-nav__list {
	display: flex;
	gap: 40px;
}
.site-nav__list a {
	font-size: 12px;
	font-weight: 400;
	letter-spacing: 0.18em;
	text-transform: uppercase;
}

/* グローバルナビゲーション（wp_nav_menu） */
.site-header__nav-list {
	display: flex;
	align-items: center;
	gap: 32px;
	margin: 0;
	padding: 0;
	list-style: none;
}
.site-header__nav-list > li > a {
	display: block;
	font-size: 12px;
	font-weight: 400;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	text-decoration: none;
	color: inherit;
	opacity: 0.8;
	transition: opacity 0.15s;
}
.site-header__nav-list > li > a:hover,
.site-header__nav-list > li.current-menu-item > a {
	opacity: 1;
}

/* Site Header Hamburger */
.site-header__burger {
	display: none;
	background: none;
	border: none;
	padding: 6px;
	cursor: pointer;
	flex-direction: column;
	justify-content: center;
	gap: 5px;
	margin-left: auto;
	color: inherit;
}
.site-header__burger-line {
	display: block;
	width: 22px;
	height: 2px;
	background: currentColor;
	border-radius: 1px;
	transition: transform 0.25s, opacity 0.25s;
}
.site-header__burger[aria-expanded="true"] .site-header__burger-line:nth-child(1) {
	transform: translateY(7px) rotate(45deg);
}
.site-header__burger[aria-expanded="true"] .site-header__burger-line:nth-child(2) {
	opacity: 0;
}
.site-header__burger[aria-expanded="true"] .site-header__burger-line:nth-child(3) {
	transform: translateY(-7px) rotate(-45deg);
}
@media (min-width: 641px) {
	.site-header__nav {
		display: block;
	}
}
@media (max-width: 640px) {
	.site-header__inner {
		flex-wrap: wrap;
	}
	.site-header__burger {
		display: flex;
		position: relative;
		z-index: 1001;
	}
	body.site-header-nav-open .site-header__burger {
		position: fixed;
		top: calc(12px + env(safe-area-inset-top, 0));
		right: 12px;
		width: 44px;
		height: 44px;
		align-items: center;
		justify-content: center;
		border: 1px solid var(--portal-border, rgba(26,26,26,0.16));
		background: color-mix(in srgb, var(--portal-bg, #fff) 74%, transparent);
		-webkit-backdrop-filter: blur(14px) saturate(1.3);
		backdrop-filter: blur(14px) saturate(1.3);
	}
	.site-header__nav {
		display: none;
		position: fixed;
		top: 0;
		left: 0;
		right: 0;
		bottom: 0;
		z-index: 1000;
		background: color-mix(in srgb, var(--portal-bg, #fff) 85%, transparent);
		-webkit-backdrop-filter: blur(16px) saturate(1.4);
		backdrop-filter: blur(16px) saturate(1.4);
		color: var(--portal-text, #1a1a1a);
		overflow-y: auto;
		-webkit-overflow-scrolling: touch;
	}
	.site-header__nav.is-open {
		display: block;
	}
	.site-header__nav-list {
		flex-direction: column;
		align-items: stretch;
		gap: 0;
		padding: 48px 0 32px;
	}
	.site-header__nav-list > li > a {
		padding: 10px clamp(20px, 6vw, 80px);
		font-size: var(--portal-body-size, 15px);
		border-top: 1px solid var(--portal-border, rgba(255,255,255,0.15));
	}
}

/* --- Hero --------------------------------------------------------- */
.hero {
	position: relative;
	padding: 240px 0 120px;
}
@media (max-width: 720px) {
	.hero {
		padding: 80px 0 60px;
	}
}
.hero--has-image {
	background-size: cover;
	background-position: center;
}
.hero__overlay {
	position: absolute;
	inset: 0;
	z-index: 0;
	pointer-events: none;
}
.hero--has-image .hero__inner {
	position: relative;
	z-index: 1;
}
.site-header--transparent {
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	z-index: 100;
	background: transparent !important;
	border-bottom: none;
	background-image: none !important;
}
.hero__inner {
	display: grid;
	grid-template-columns: repeat(24, 1fr);
	row-gap: 32px;
}
.hero__eyebrow {
	grid-column: 1 / 25;
	margin: 0;
	font-size: 10px;
	font-weight: 300;
	letter-spacing: 0.3em;
	text-transform: uppercase;
	color: var(--portal-muted, rgba(26, 26, 26, 0.6));
}
.hero__title {
	grid-column: 1 / 22;
	margin: 0;
	font-size: var(--portal-hero-size, clamp(44px, 9vw, 110px));
	font-weight: 700;
	line-height: 1.1;
	letter-spacing: 0.01em;
}
.hero__lede {
	grid-column: 4 / 22;
	margin: 0;
	font-size: 14px;
	max-width: 60ch;
}
.hero__cta {
	grid-column: 1 / 25;
	margin: 0;
}

/* --- Section heads ----------------------------------------------- */
.section-head {
	display: flex;
	align-items: baseline;
	gap: 24px;
	border-bottom: 1px solid var(--portal-border, #e0e0e0);
	padding-bottom: 24px;
	margin-bottom: 60px;
}
.section-head__num {
	margin: 0;
	font-size: 10px;
	font-weight: 300;
	letter-spacing: 0.3em;
	color: var(--portal-muted, rgba(26, 26, 26, 0.6));
}
.section-head__title {
	margin: 0;
	font-size: 28px;
	font-weight: 700;
	letter-spacing: 0.04em;
}

/* --- Widget areas (top / bottom) --------------------------------- */
.portal-widget-area {
	padding: 60px 0;
}
.portal-widget-area__inner {
	max-width: var(--portal-content-max, 1100px);
	margin: 0 auto;
	padding: 0 clamp(20px, 6vw, 80px);
}
.portal-widget + .portal-widget {
	margin-top: 60px;
}
.portal-widget__title {
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.3em;
	text-transform: uppercase;
	margin: 0 0 24px;
}

/* Recent chapters widget */
.portal-recent-chapters {
	list-style: none;
	margin: 0;
	padding: 0;
}
.portal-recent-chapters li {
	border-bottom: 1px solid var(--portal-border, #e0e0e0);
	padding: 12px 0;
}
.portal-recent-chapters a {
	display: flex;
	flex-direction: column;
	gap: 4px;
}
.portal-recent-chapters__work {
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.08em;
}
.portal-recent-chapters__chapter {
	font-size: 11px;
	color: var(--portal-muted, rgba(26, 26, 26, 0.6));
}

/* --- Sidebar layout (genre as left/right rail) ------------------- */
.layout-sidebar__inner {
	max-width: var(--portal-content-max, 1100px);
	margin: 0 auto;
	padding: 0 clamp(20px, 6vw, 80px);
	display: grid;
	grid-template-columns: 240px 1fr;
	gap: 60px;
}
.layout-sidebar--right .layout-sidebar__inner {
	grid-template-columns: 1fr 240px;
}
.layout-sidebar--right .layout-sidebar__aside {
	order: 2;
}
.layout-sidebar--right .layout-sidebar__main {
	order: 1;
	min-width: 0;
}
.layout-sidebar__aside .genre-index,
.layout-sidebar__aside .genre-index__inner {
	padding: 0;
}
.layout-sidebar__aside {
	position: sticky;
	top: 24px;
	align-self: start;
}
.layout-sidebar__main .latest__inner,
.layout-sidebar__aside .genre-index__inner {
	padding-left: 0;
	padding-right: 0;
	max-width: none;
}
@media (max-width: 880px) {
	.layout-sidebar__inner {
		grid-template-columns: 1fr;
		gap: 0;
	}
	.layout-sidebar__aside {
		position: static;
	}
}

/* --- Latest section --------------------------------------------- */
.latest,
.genre-index {
	padding: 0 0 120px;
}
.latest__more {
	margin: 24px 0 0;
	text-align: center;
}
.latest__more-link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 42px;
	padding: 0 18px;
	border: 1px solid var(--portal-border, #e0e0e0);
	color: var(--portal-text, #1a1a1a);
	background: var(--portal-bg, #ffffff);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-decoration: none;
}
.latest__more-link:hover,
.latest__more-link:focus-visible {
	border-color: var(--portal-accent, #1a1a1a);
	background: var(--portal-accent, #1a1a1a);
	color: var(--portal-accent-text, #ffffff);
}

/* --- Novel list (compact row style) ------------------------------ */
.novel-list {
	list-style: none;
	margin: 0;
	padding: 0;
}
.novel-list-item {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 8px 16px;
	padding: 20px 0;
	border-bottom: 1px solid var(--portal-border, #e0e0e0);
}
.novel-list-item:first-child {
	border-top: 1px solid var(--portal-border, #e0e0e0);
}
.novel-list-item__title {
	font-size: 16px;
	font-weight: 700;
	letter-spacing: 0.02em;
	color: var(--portal-text, #1a1a1a);
	text-decoration: none;
}
a.novel-list-item__title:hover {
	text-decoration: underline;
}
.novel-list-item__status {
	display: inline-flex;
	gap: 4px;
}
.novel-list-item__structure {
	font-size: 11px;
	font-weight: 300;
	letter-spacing: 0.1em;
	color: var(--portal-muted, rgba(26, 26, 26, 0.6));
}
.novel-list-item__excerpt {
	width: 100%;
	margin: 4px 0 0;
	font-size: 13px;
	line-height: 1.7;
	color: var(--portal-muted, rgba(26, 26, 26, 0.6));
}
.novel-list-item--draft .novel-list-item__title {
	color: var(--portal-muted, rgba(26, 26, 26, 0.4));
}

/* --- Novel filter ------------------------------------------------ */
.novel-filter {
	display: flex;
	justify-content: flex-end;
	position: relative;
	margin-bottom: 0;
}
.novel-filter__toggle {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	border: 1px solid var(--portal-border, #e0e0e0);
	border-radius: 0;
	background: transparent;
	cursor: pointer;
	color: var(--portal-text, #1a1a1a);
	transition: background 0.15s;
}
.novel-filter__toggle:hover,
.novel-filter__toggle[aria-expanded="true"] {
	background: var(--portal-accent, #1a1a1a);
	border-color: var(--portal-accent, #1a1a1a);
	color: var(--portal-accent-text, #ffffff);
}
.novel-filter__toggle .material-symbols-outlined {
	font-size: 20px;
}
.novel-filter__panel {
	position: absolute;
	top: 100%;
	right: 0;
	z-index: 10;
	min-width: 280px;
	max-width: 400px;
	padding: 16px;
	background: var(--portal-card-bg, #ffffff);
	color: var(--portal-card-text, var(--portal-text, #1a1a1a));
	border: 1px solid var(--portal-border, #e0e0e0);
	box-shadow: 0 4px 16px rgba(0,0,0,0.08);
}
.novel-filter__panel[hidden] { display: none; }
.novel-filter__group { margin-bottom: 12px; }
.novel-filter__group:last-of-type { margin-bottom: 16px; }
.novel-filter__label {
	margin: 0 0 6px;
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	color: var(--portal-muted, rgba(26,26,26,0.4));
}
.novel-filter__chips {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
}
.novel-filter__chip {
	display: inline-block;
	padding: 3px 10px;
	font-size: 12px;
	font-weight: 500;
	border: 1px solid var(--portal-border, #e0e0e0);
	border-radius: 2px;
	background: transparent;
	color: var(--portal-card-text, var(--portal-text, #1a1a1a));
	cursor: pointer;
	transition: background 0.15s, color 0.15s, border-color 0.15s;
}
.novel-filter__chip:hover {
	background: var(--portal-accent, #1a1a1a);
	border-color: var(--portal-accent, #1a1a1a);
	color: var(--portal-accent-text, #ffffff);
}
.novel-filter__chip.is-active {
	background: var(--portal-card-text, var(--portal-text, #1a1a1a));
	border-color: var(--portal-card-text, var(--portal-text, #1a1a1a));
	color: var(--portal-card-bg, #fff);
}
.novel-filter__clear {
	display: block;
	padding: 0;
	border: none;
	background: none;
	font-size: 12px;
	color: var(--portal-muted, rgba(26,26,26,0.4));
	cursor: pointer;
	text-decoration: underline;
}
.novel-filter__clear:hover {
	color: var(--portal-card-text, var(--portal-text, #1a1a1a));
}
.novel-filter__footer {
	display: flex;
	align-items: center;
	justify-content: space-between;
}
.novel-filter__search-link {
	display: inline-flex;
	align-items: center;
	gap: 2px;
	padding: 0;
	font-size: 12px;
	font-weight: 400;
	color: var(--portal-muted, rgba(26,26,26,0.5));
	text-decoration: none;
	transition: color 0.15s;
}
.novel-filter__search-link span:last-child {
	text-decoration: underline;
}
.novel-filter__search-link .material-symbols-outlined {
	font-size: 14px;
	text-decoration: none;
}
.novel-filter__search-link:hover {
	color: var(--portal-card-text, var(--portal-text, #1a1a1a));
}
.novel-card.is-filtered-out,
.novel-card.is-paged-out {
	display: none;
	grid-column: span 1 !important;
}
.post-list__item.is-paged-out,
.post-card.is-paged-out,
.novel-chapters > li.is-paged-out,
.novel-series__item.is-paged-out {
	display: none;
}

/* --- Novel pager ------------------------------------------------- */
.novel-pager {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	padding: 0 0 20px;
}
.novel-pager:empty {
	display: none;
}
.novel-pager__btn {
	display: inline-block;
	padding: 0;
	border: none;
	background: transparent;
	color: var(--portal-sub, #999);
	font-size: 0.85rem;
	line-height: 1.6;
	cursor: pointer;
	transition: color 0.15s;
}
.novel-pager__btn:hover {
	color: var(--portal-text, #1a1a1a);
}
.novel-pager__btn.is-current {
	color: var(--portal-text, #1a1a1a);
	font-weight: 600;
}

/* --- Novel grid -------------------------------------------------- */
.novel-grid {
	display: grid;
	grid-template-columns: repeat(var(--portal-grid-cols, 2), 1fr);
	grid-auto-flow: dense;
	min-width: 0;
}
/* gap=0: 罫線スタイル */
.novel-grid:not(.novel-grid--gapped) {
	border-top: 1px solid var(--portal-border, #e0e0e0);
	border-left: 1px solid var(--portal-border, #e0e0e0);
}
.novel-grid:not(.novel-grid--gapped) > .novel-card {
	border-right: 1px solid var(--portal-border, #e0e0e0);
	border-bottom: 1px solid var(--portal-border, #e0e0e0);
}
/* gap>0: column-gapで横間隔、margin-bottomで縦間隔。subgrid不使用 */
.novel-grid--gapped {
	column-gap: var(--portal-card-gap, 0px);
}
.novel-grid--gapped > .novel-card {
	border: 1px solid var(--portal-border, #e0e0e0);
	margin-bottom: var(--portal-card-gap, 0px);
	grid-row: auto;
	grid-template-rows: auto 1fr auto;
}
.novel-grid--gapped > .novel-card > .novel-card__body {
	display: flex;
	flex-direction: column;
	gap: 0;
}
.novel-grid--gapped > .novel-card--has-eyecatch {
	grid-row: auto;
}
.novel-grid--gapped .novel-card__excerpt {
	flex: 1;
}
.layout-sidebar__main .novel-grid {
	overflow: hidden;
}
@media (max-width: 640px) {
	.novel-grid {
		grid-template-columns: 1fr;
	}
	.novel-grid > .novel-card[style*="grid-column"] {
		grid-column: span 1 !important;
	}
}

.novel-card {
	background: var(--portal-card-bg, #ffffff);
	color: var(--portal-card-text, var(--portal-text, #1a1a1a));
	position: relative;
	display: grid;
	grid-template-rows: subgrid;
	border-radius: var(--portal-card-radius, 0px);
	overflow: hidden;
	grid-row: span 7;  /* badge, title, tags, keywords, excerpt, caption, actions */
	border-top: 3px solid var(--novel-card-color, transparent);
}
.novel-card__body {
	display: grid;
	grid-template-rows: subgrid;
	grid-row: span 6;
	padding: 40px 32px 40px;
}
.novel-card__body > * {
	margin: 0 0 24px;
	align-self: start;
}
.novel-card__body > .novel-card__status-badge,
.novel-card__body > .novel-card__status-badges {
	margin-bottom: 20px;
}
.novel-card__body > .novel-card__title {
	margin-bottom: 20px;
}
.novel-card__body > .novel-card__tags {
	margin-bottom: 8px;
}
.novel-card__body > .novel-card__keywords {
	margin-bottom: 24px;
}
.novel-card__body > .novel-card__excerpt {
	margin-bottom: 24px;
}
.novel-card__body > .novel-card__caption {
	margin-bottom: 0;
}
.novel-card__body > *:last-child {
	margin-bottom: 0;
}
/* badge / tags / caption は内容幅で収める（伸縮しない） */
.novel-card__body > .novel-card__status-badge,
.novel-card__body > .novel-card__status-badges,
.novel-card__body > .novel-card__tags,
.novel-card__body > .novel-card__keywords,
.novel-card__body > .novel-card__caption {
	justify-self: start;
}
/* Eyecatch variant: 8 rows (eyecatch + 6 body rows + actions) */
.novel-card--has-eyecatch {
	grid-row: span 8;
}
.novel-card--has-eyecatch > .novel-card__body {
	padding: 12px 24px 20px;
}
.novel-card--has-eyecatch:not(:has(.novel-card__eyecatch)) > .novel-card__body {
	padding-top: 40px;
}
.novel-card--has-eyecatch > .novel-card__body:not(:has(.novel-card__title)) {
	padding-top: 16px;
}
.novel-card--has-eyecatch .novel-card__title {
	font-size: 20px;
}
.novel-card--has-eyecatch .novel-card__body > .novel-card__status-badges {
	margin-bottom: 8px;
}
.novel-card--has-eyecatch .novel-card__body > * {
	margin-bottom: 16px;
}
.novel-card--has-eyecatch .novel-card__body > .novel-card__title {
	margin-bottom: 4px;
}
/* ジャンル or キーワードがある場合はアイキャッチなしと同じ余白 */
.novel-card--has-eyecatch .novel-card__body:has(.novel-card__tags, .novel-card__keywords) > .novel-card__status-badges {
	margin-bottom: 20px;
}
.novel-card--has-eyecatch .novel-card__body:has(.novel-card__tags, .novel-card__keywords) > .novel-card__title {
	margin-bottom: 20px;
}
.novel-card--has-eyecatch .novel-card__body > .novel-card__tags {
	margin-bottom: 8px;
}
.novel-card__eyecatch {
	display: block;
	overflow: hidden;
	line-height: 0;
}
.novel-card__eyecatch img {
	width: 100%;
	height: auto;
	aspect-ratio: 16 / 9;
	object-fit: cover;
}
.portal-no-image {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	box-sizing: border-box;
	width: 100%;
	min-height: 100%;
	aspect-ratio: 16 / 9;
	border: 1px solid color-mix(in srgb, var(--portal-border, #e0e0e0) 78%, transparent);
	background:
		linear-gradient(135deg, color-mix(in srgb, var(--portal-bg, #fff) 94%, var(--portal-text, #1a1a1a) 6%), color-mix(in srgb, var(--portal-bg, #fff) 82%, var(--portal-accent, #1a1a1a) 18%));
	color: color-mix(in srgb, var(--portal-text, #1a1a1a) 62%, transparent);
	line-height: 1;
	text-decoration: none;
}
.portal-no-image::before {
	content: "";
	position: absolute;
	inset: 12px;
	border: 1px solid color-mix(in srgb, currentColor 18%, transparent);
	pointer-events: none;
}
.portal-no-image__label {
	position: relative;
	z-index: 1;
	font-size: 10px;
	font-weight: 700;
	letter-spacing: 0.18em;
	white-space: nowrap;
}
.portal-no-image__rule {
	position: relative;
	z-index: 1;
	display: block;
	width: clamp(18px, 18%, 48px);
	height: 1px;
	background: currentColor;
	opacity: 0.45;
}
.portal-no-image--portrait {
	aspect-ratio: 3 / 4;
	flex-direction: column;
	gap: 12px;
}
.portal-no-image--portrait .portal-no-image__rule {
	width: 34px;
}
/* Empty slot placeholder — keeps subgrid alignment when an element is missing */
.novel-card__slot {
	display: block;
	min-height: 0;
	margin: 0 !important;
}
.novel-card__status-badge {
	display: inline-flex;
	align-items: center;
	box-sizing: border-box;
	margin: 0;
	height: 26px;
	padding: 1px 10px 0;
	font-size: 10px;
	font-weight: 700;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	background: var(--portal-accent, #1a1a1a);
	color: var(--portal-accent-text, #ffffff);
	border: 0;
	line-height: 1;
}
/* In card body (column flex) — keep badge at start, prevent stretching */
.novel-card__body > .novel-card__status-badge {
	align-self: flex-start;
}
/* 複数ステータスを横並び */
.novel-card__status-badges {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	margin: 0;
	align-self: flex-start;
}
.novel-card__status-badges .novel-card__status-badge {
	margin: 0;
}
.novel-card__tag-badge {
	display: inline-flex;
	align-items: center;
	box-sizing: border-box;
	max-width: 100%;
	margin: 0;
	min-height: 26px;
	padding: 5px 10px 4px;
	font-size: 10px;
	font-weight: 700;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	background: #e6c619;
	color: #1a1a1a;
	border: 0;
	line-height: 1.2;
	overflow-wrap: anywhere;
	white-space: normal;
}

/* Like / clap button — borderless, pinned to card top-right */
.like-btn,
.novel-card .like-btn,
button.like-btn {
	position: absolute !important;
	top: 16px !important;
	right: 16px !important;
	z-index: 2;
	display: inline-flex !important;
	flex-direction: column !important;
	align-items: center !important;
	gap: 2px;
	width: auto !important;
	padding: 4px 8px !important;
	background: none !important;
	background-color: transparent !important;
	border: 0 !important;
	box-shadow: none !important;
	appearance: none;
	-webkit-appearance: none;
	color: var(--portal-heart, #1a1a1a);
	cursor: pointer;
	overflow: visible;
	-webkit-tap-highlight-color: transparent;
	font: inherit;
}
.like-btn:hover,
.like-btn:focus-visible {
	opacity: 1;
}
.like-btn__count {
	font-size: 10px;
	font-weight: 700;
	letter-spacing: 0.1em;
	line-height: 1;
	color: rgba(26, 26, 26, 0.7);
}
.like-btn__icon {
	font-size: 28px !important;
	flex-shrink: 0;
	display: block;
	transition: transform 0.2s ease-out;
}
.like-btn:hover .like-btn__icon,
.like-btn:focus-visible .like-btn__icon {
	transform: scale(1.08);
}
.like-btn.is-popping .like-btn__icon {
	animation: heart-pop 0.45s ease-out;
}
@keyframes heart-pop {
	0%   { transform: scale(1); }
	30%  { transform: scale(1.35); }
	60%  { transform: scale(0.92); }
	100% { transform: scale(1); }
}

/* Confetti burst */
.like-confetti {
	position: absolute;
	left: 50%;
	top: 40%;
	width: 6px;
	height: 6px;
	border-radius: 50%;
	pointer-events: none;
	transform: translate(-50%, -50%);
	animation: confetti-burst 0.7s cubic-bezier(0.18, 0.71, 0.36, 1) forwards;
}
@keyframes confetti-burst {
	0%   { transform: translate(-50%, -50%) translate(0, 0) scale(1); opacity: 1; }
	60%  { opacity: 1; }
	100% { transform: translate(-50%, -50%) translate(var(--dx), var(--dy)) scale(0.4); opacity: 0; }
}
/* 連載中・執筆中: 黒 */
.novel-card__status-badge--serializing,
.novel-card__status-badge--writing {
	background: var(--portal-accent, #1a1a1a);
	color: var(--portal-accent-text, #ffffff);
	border: 0;
}
/* 完結: 白＋黒枠 */
.novel-card__status-badge--completed {
	background: #ffffff;
	color: #1a1a1a;
	border: 1px solid var(--portal-accent, #1a1a1a);
}
/* 応募中: 白＋点線枠（薄グレー文字） */
.novel-card__status-badge--submitted {
	background: #ffffff;
	color: var(--portal-muted, rgba(26, 26, 26, 0.6));
	border: 1px dashed rgba(26, 26, 26, 0.4);
}
/* 構想中 */
.novel-card__status-badge--planning {
	background: var(--portal-accent, #1a1a1a);
	color: var(--portal-accent-text, #ffffff);
	border: 0;
}
/* Web非公開: 黒枠＋黒文字（薄め） */
.novel-card__status-badge--private {
	background: #ffffff;
	color: rgba(26, 26, 26, 0.7);
	border: 1px solid rgba(26, 26, 26, 0.5);
}
/* サイト限定: デフォルト黒のまま（基底クラスで対応） */
.novel-card__title {
	margin: 0;
	font-size: 24px;
	font-weight: 700;
	line-height: 1.3;
	letter-spacing: 0.02em;
	overflow-wrap: anywhere;
}
.novel-card__title a {
	display: inline-block;
	max-width: 100%;
	overflow-wrap: anywhere;
}

/* 構想中：カード内テキスト・枠線を薄く（バッジは対象外） */
.novel-card--draft .novel-card__title,
.novel-card--draft .novel-card__excerpt,
.novel-card--draft .novel-card__caption,
.novel-card--draft .novel-card__keywords,
.novel-card--draft .novel-card__actions {
	opacity: 0.4;
}
.novel-card--draft .novel-card__title span {
	display: inline-block;
}
/* 構想中タグピル */
.novel-card--draft .tag-pill {
	opacity: 0.5;
}
/* 構想中ハート */
.novel-card--draft .like-btn,
.novel-card--draft .like-btn__count,
.novel-card--draft .like-btn__icon {
	opacity: 1 !important;
}
.novel-card--draft .like-btn__count {
	color: rgba(26, 26, 26, 0.72) !important;
}
.novel-card__excerpt {
	margin: 0;
	font-size: 13px;
	color: inherit;
	opacity: 0.9;
	flex-grow: 1;
}
/* Genre tag pills */
.novel-card__tags,
.novel-head__tags {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 6px;
	margin: 0;
	padding: 0;
	list-style: none;
}
.novel-card__tags li,
.novel-head__tags li {
	display: inline-flex;
	align-items: center;
	margin: 0;
	padding: 0;
	line-height: 1;
}
.tag-pill {
	display: inline-flex;
	align-items: center;
	box-sizing: border-box;
	max-width: 100%;
	min-height: 26px;
	padding: 5px 10px 4px;
	font-size: 10px;
	font-weight: 700;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	border: 1px solid var(--portal-accent, #1a1a1a);
	color: var(--portal-card-text, var(--portal-text, #1a1a1a));
	background: var(--portal-card-bg, #ffffff);
	line-height: 1.2;
	overflow-wrap: anywhere;
	white-space: normal;
}
a.tag-pill:hover,
a.tag-pill:focus-visible {
	opacity: 1;
	background: var(--portal-accent, #1a1a1a);
	color: var(--portal-accent-text, #ffffff);
}
@media (max-width: 640px) {
	.novel-card__tags,
	.novel-head__tags {
		flex-wrap: wrap;
		gap: 6px;
		overflow: visible;
		max-width: 100%;
		padding: 0;
	}
	.novel-card__tags li,
	.novel-head__tags li {
		flex: 0 1 auto;
	}
	.tag-pill {
		min-height: 26px;
		padding: 5px 10px 4px;
		font-size: 10px;
		line-height: 1.2;
		letter-spacing: 0.18em;
		border-radius: 2px !important;
		white-space: normal;
	}
}

/* Keywords */
.novel-card__keywords {
	margin: 0;
	font-size: 11px;
	font-weight: 300;
	letter-spacing: 0.06em;
	color: inherit;
	opacity: 0.6;
	line-height: 1.6;
}

/* Caption row (構成 / レーティング / 文字数) */
.novel-card__chars {
	font-variant-numeric: tabular-nums;
}
.novel-card__caption {
	margin: 0;
	font-size: 10px;
	font-weight: 300;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: inherit;
	opacity: 0.6;
	display: flex;
	gap: 16px;
	flex-wrap: wrap;
	max-width: 100%;
	overflow-wrap: anywhere;
}
.novel-card__rating {
	font-weight: 700;
	color: inherit;
}

/* Action row at bottom of card — always 3 columns */
.novel-card__actions {
	display: grid;
	grid-template-columns: 1fr 1fr 1fr;
	border-top: 1px solid var(--portal-border, #e0e0e0);
}
.novel-card__action {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	min-height: 72px;
	padding: 12px 8px;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: none;
	line-height: 1.4;
	border-right: 1px solid var(--portal-border, #e0e0e0);
	background: var(--portal-card-bg, #ffffff);
	text-align: center;
	color: var(--portal-card-text, var(--portal-text, #1a1a1a));
	hyphens: auto;
	overflow-wrap: anywhere;
}
.novel-card__action:last-child {
	border-right: 0;
}
.novel-card__action--site:hover,
.novel-card__action--site:focus-visible {
	opacity: 0.5;
	background: #ffffff;
	color: #1a1a1a;
}
.novel-card__action-role {
	font-size: 14px;
	letter-spacing: 0;
}
.novel-card__action--disabled,
.novel-card__action--empty {
	color: rgba(26, 26, 26, 0.35);
	cursor: default;
}

/* --- Genre / term list ------------------------------------------- */
.term-list {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 0;
	border-top: 1px solid var(--portal-border, #e0e0e0);
}
@media (max-width: 720px) {
	.term-list {
		display: flex;
		flex-wrap: wrap;
		gap: 0 24px;
		border-top: none;
	}
	.term-list li {
		border: none !important;
	}
	.term-list a {
		gap: 4px;
		padding: 6px 0;
	}
	.term-list__count::before { content: '（'; }
	.term-list__count::after  { content: '）'; }
}
.term-list li {
	border-bottom: 1px solid var(--portal-border, #e0e0e0);
	border-right: 1px solid var(--portal-border, #e0e0e0);
}
.term-list li:nth-child(3n) {
	border-right: 0;
}
.term-list a {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	padding: 24px 16px;
}
.term-list__name {
	font-size: 14px;
	font-weight: 400;
	letter-spacing: 0.06em;
}
.term-list__count {
	font-size: 10px;
	font-weight: 300;
	letter-spacing: 0.25em;
	color: var(--portal-muted, rgba(26, 26, 26, 0.6));
}

/* --- Archive header ---------------------------------------------- */
.archive-head {
	padding: 240px 0 60px;
	border-bottom: 1px solid var(--portal-border, #e0e0e0);
}
.archive-head__eyebrow {
	margin: 0 0 16px;
	font-size: 10px;
	font-weight: 300;
	letter-spacing: 0.3em;
	text-transform: uppercase;
	color: var(--portal-muted, rgba(26, 26, 26, 0.6));
}
.archive-head__title {
	margin: 0;
	font-size: clamp(40px, 7vw, 80px);
	font-weight: 700;
	line-height: 1.1;
	letter-spacing: 0.02em;
}
.archive-head__desc {
	margin: 24px 0 0;
	font-size: 13px;
	max-width: 60ch;
}

.archive-body {
	padding: 60px 0 240px;
}

/* --- Single novel ------------------------------------------------ */
.novel-head {
	padding: 240px 0 60px;
	width: 100vw;
	margin-left: calc(50% - 50vw);
	margin-right: calc(50% - 50vw);
}
.novel-head__inner {
	display: flex;
	gap: 48px;
	align-items: start;
}
.novel-head__text {
	flex: 1;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 24px;
}
.novel-head__image {
	flex-shrink: 0;
}
.novel-head--has-image .novel-head__image {
	width: clamp(200px, 28vw, 400px);
}
.novel-head--portrait .novel-head__image {
	width: clamp(140px, 18vw, 240px);
}
.novel-head__hero-img {
	width: 100%;
	height: auto;
	display: block;
	border: 1px solid var(--portal-border, #e0e0e0);
}
.novel-head__credit {
	display: block;
	margin-top: 4px;
	font-size: 11px;
	color: var(--portal-text-muted, #888);
	text-align: right;
}
@media (max-width: 720px) {
	.novel-head__inner {
		flex-direction: column;
		gap: 32px;
	}
	.novel-head--has-image .novel-head__image {
		width: 100%;
		max-width: 280px;
	}
	.novel-head__image {
		order: -1;
	}
	article.novel > .clap-widget,
	article.post-single > .clap-widget,
	article.novel > .like-btn,
	article.post-single > .like-btn {
		position: static !important;
		display: flex !important;
		justify-content: flex-end;
		margin-top: 8px;
	}
	.novel-head__inner > .reading-trigger {
		position: static;
		align-self: flex-end;
		margin-top: 4px;
	}
}
.novel-head__eyebrow {
	margin: 0;
	font-size: 10px;
	font-weight: 300;
	letter-spacing: 0.3em;
	text-transform: uppercase;
	color: var(--portal-muted, rgba(26, 26, 26, 0.6));
}
.novel-head__title {
	margin: 0;
	font-size: clamp(40px, 7vw, 90px);
	font-weight: 700;
	line-height: 1.15;
	letter-spacing: 0.02em;
}
.novel-head__meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 16px 24px;
	margin: 0;
}
.novel-head__tags {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	margin: 0;
	padding: 0;
	list-style: none;
}
@media (max-width: 640px) {
	.novel-head__tags {
		flex-wrap: wrap;
		gap: 6px;
		overflow: visible;
		max-width: 100%;
		padding: 0;
	}
	.novel-head__tags li {
		flex: 0 1 auto;
	}
}
.novel-head__caption {
	margin: 0;
	font-size: 11px;
	font-weight: 300;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: var(--portal-muted, rgba(26, 26, 26, 0.6));
	display: flex;
	gap: 16px;
}

/* 文字数・読了時間 */
.novel-head__reading-meta {
	display: flex;
	align-items: center;
	gap: 6px;
	margin: 0;
	font-size: 13px;
	font-weight: 300;
	letter-spacing: 0.04em;
	color: var(--portal-muted, rgba(26, 26, 26, 0.6));
}
.novel-head__reading-meta .material-symbols-outlined {
	font-size: 16px;
	opacity: 0.7;
}
.novel-head__reading-meta-sep {
	opacity: 0.4;
}

/* Meta row: status badge + tags + caption */
.novel-meta-row {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 16px 24px;
	margin: 0 0 60px;
}
.novel-meta-row:not(:has(> *)) {
	display: none;
}
.novel-head__inner .novel-meta-row {
	margin: 0;
}
.novel-head:not(:has(.novel-meta-row > *)) {
	padding-bottom: 36px;
}
.novel-head__lede {
	margin: 0;
	font-size: 14px;
	max-width: 60ch;
}
/* カードでは「|d|」用の改行を非表示（詳細のみ改行したいパターン） */
.novel-card__title br.break-detail {
	display: none;
}
/* 詳細では「|c|」用の改行を非表示（カードのみ改行したいパターン） */
.novel-head__title br.break-card {
	display: none;
}

@media (max-width: 720px) {
	/* SPでは｜による強制改行を無効に */
	.novel-head__title br,
	.novel-card__title br {
		display: none;
	}
}

.novel-body {
	padding: 60px 0 120px;
	border-top: 1px solid var(--portal-border, #e0e0e0);
}
.novel-body__inner {
	/* single column — left spec sidebar removed */
}

/* Site link buttons in the header */
.novel-actions__list {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
	gap: 12px;
	margin: 12px 0 0;
	padding: 0;
	list-style: none;
}
.novel-action-btn {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	width: 100%;
	min-height: 44px;
	padding: 10px 24px;
	border: 1px solid var(--portal-border, #e0e0e0);
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.08em;
	color: var(--portal-card-text, var(--portal-text, #1a1a1a));
	background: var(--portal-card-bg, #ffffff);
	line-height: 1.35;
	text-align: center;
	overflow-wrap: anywhere;
}
.novel-action-btn__arrow {
	flex: 0 0 auto;
	font-size: 13px;
	line-height: 1;
	opacity: 0.4;
}
/* ロゴ付きサイトボタン */
.novel-action-btn--logo {
	padding: 10px 20px;
}
.novel-action-btn__logo {
	height: 20px;
	width: auto;
	object-fit: contain;
}
.novel-action-btn--kakuyomu .novel-action-btn__logo,
.novel-action-btn--narou .novel-action-btn__logo,
.novel-action-btn--booth .novel-action-btn__logo {
	height: 24px;
}
.novel-spec dl {
	display: grid;
	grid-template-columns: 1fr;
	gap: 16px;
}
.novel-spec dt {
	font-size: 10px;
	font-weight: 300;
	letter-spacing: 0.3em;
	text-transform: uppercase;
	color: var(--portal-muted, rgba(26, 26, 26, 0.6));
	margin-bottom: 4px;
}
.novel-spec dd {
	font-size: 13px;
	border-bottom: 1px solid var(--portal-border, #e0e0e0);
	padding-bottom: 12px;
}
.novel-section {
	margin: 0 0 60px;
}
.novel-section h2,
.novel-section__heading {
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.3em;
	text-transform: uppercase;
	margin: 0 0 24px;
}
.novel-section__theme {
	font-weight: 400;
	line-height: 1.9;
	letter-spacing: 0.04em;
	margin: 0 0 1.6em;
}
.novel-chapters {
	list-style: none;
	margin: 0;
	padding: 0;
}
.novel-chapters li {
	display: grid;
	grid-template-columns: 56px 1fr auto auto;
	align-items: baseline;
	gap: 16px;
	padding: 16px 0;
	border-bottom: 1px solid var(--portal-border, #e0e0e0);
	font-size: 14px;
	line-height: 1.6;
}
.novel-chapters__num {
	font-size: 10px;
	font-weight: 300;
	letter-spacing: 0.2em;
	color: var(--portal-muted, rgba(26, 26, 26, 0.6));
}
.novel-chapters li.is-unpublished {
	color: rgba(26, 26, 26, 0.4);
}
.novel-chapters__title-cell {
	display: flex;
	align-items: baseline;
	gap: 0;
	min-width: 0;
}
.novel-chapters__title {
	font-weight: 400;
}
.novel-chapters__tag {
	margin-left: 12px;
	font-size: 10px;
	font-weight: 700;
	letter-spacing: 0.15em;
	border: 1px solid var(--portal-muted, rgba(26, 26, 26, 0.4));
	color: var(--portal-muted, rgba(26, 26, 26, 0.6));
	padding: 1px 6px;
}
.novel-chapters__external {
	margin-left: 4px;
	font-size: 11px;
	color: var(--portal-muted, rgba(26, 26, 26, 0.4));
}
a.novel-chapters__title {
	text-decoration: none;
	color: inherit;
}
a.novel-chapters__title:hover {
	text-decoration: underline;
}
.novel-chapters__badge {
	margin-left: 16px;
	font-size: 10px;
	font-weight: 700;
	letter-spacing: 0.25em;
	text-transform: uppercase;
	background: var(--portal-accent, #1a1a1a);
	color: var(--portal-accent-text, #ffffff);
	padding: 2px 8px;
}
.novel-chapters__keywords {
	font-size: 12px;
	font-weight: 400;
	color: var(--portal-muted, rgba(26, 26, 26, 0.5));
	letter-spacing: 0.04em;
	margin-left: 8px;
}
.novel-chapters__date {
	margin-left: 12px;
	font-size: 10px;
	font-weight: 300;
	letter-spacing: 0.2em;
	color: var(--portal-muted, rgba(26, 26, 26, 0.6));
}
@media (max-width: 600px) {
	.novel-chapters li {
		grid-template-columns: 40px 1fr auto;
		gap: 4px 12px;
	}
	.novel-chapters__num {
		grid-row: 1 / 3;
		align-self: start;
		padding-top: 2px;
	}
	.novel-chapters__title {
		grid-column: 2 / -1;
	}
	.novel-chapters__keywords {
		grid-column: 2;
		margin-left: 0;
	}
	.novel-chapters__date {
		grid-column: 3;
		margin-left: 0;
	}
}
/* Freeform editorial area (Gutenberg post body) — user composes anything here */
.novel-free {
	margin: 0 0 60px;
}
.novel-prose,
.novel-section,
.post-single .novel-prose,
.distribute-body,
.page-content {
	max-width: 100%;
	overflow-wrap: anywhere;
}
.novel-prose a,
.novel-section a,
.post-single .novel-prose a,
.distribute-body a,
.page-content a {
	overflow-wrap: anywhere;
	word-break: break-word;
}
.novel-prose img,
.novel-prose video,
.novel-prose iframe,
.novel-prose embed,
.novel-prose object,
.novel-section img,
.novel-section video,
.novel-section iframe,
.novel-section embed,
.novel-section object,
.post-single .novel-prose img,
.post-single .novel-prose video,
.post-single .novel-prose iframe,
.post-single .novel-prose embed,
.post-single .novel-prose object,
.distribute-body img,
.distribute-body video,
.distribute-body iframe,
.distribute-body embed,
.distribute-body object,
.page-content img,
.page-content video,
.page-content iframe,
.page-content embed,
.page-content object {
	max-width: 100%;
	height: auto;
}
.novel-prose figure,
.novel-section figure,
.post-single .novel-prose figure,
.distribute-body figure,
.page-content figure {
	max-width: 100%;
}
.novel-prose pre,
.novel-section pre,
.post-single .novel-prose pre,
.distribute-body pre,
.page-content pre {
	max-width: 100%;
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
	white-space: pre;
}
.novel-prose code,
.novel-section code,
.post-single .novel-prose code,
.distribute-body code,
.page-content code {
	overflow-wrap: anywhere;
}
.novel-free .novel-prose img,
.novel-free .novel-prose figure {
	margin: 1.6em 0;
	max-width: 100%;
}
.novel-free .novel-prose figure img {
	margin: 0;
}
.novel-free .novel-prose figcaption {
	font-size: 11px;
	letter-spacing: 0.15em;
	text-transform: uppercase;
	color: var(--portal-muted, rgba(26, 26, 26, 0.6));
	margin-top: 8px;
}
.novel-prose h2,
.novel-prose h3,
.novel-free .novel-prose h2,
.novel-free .novel-prose h3 {
	font-weight: 700;
	letter-spacing: 0.05em;
	margin: 5em 0 0.8em;
	border: 0;
	padding: 0;
	text-transform: none;
}
.novel-prose h2,
.novel-free .novel-prose h2 {
	font-size: 22px;
}
.novel-prose h3,
.novel-free .novel-prose h3 {
	font-size: 17px;
}
.novel-free .novel-prose blockquote {
	margin: 1.6em 0;
	padding: 0 0 0 24px;
	border-left: 1px solid #1a1a1a;
	font-style: normal;
	color: #1a1a1a;
}
.novel-prose p,
.novel-section p {
	font-size: var(--portal-body-size, 16px);
	line-height: var(--portal-line-height, 1.8);
	margin: 0 0 var(--portal-paragraph-gap, 1.6em);
}

/* Novel links list */
.novel-links__item {
	display: grid;
	grid-template-columns: 200px 1fr;
	align-items: baseline;
	padding: 16px 0;
	border-bottom: 1px solid var(--portal-border, #e0e0e0);
	gap: 24px;
}
@media (max-width: 720px) {
	.novel-links__item {
		grid-template-columns: 1fr;
		gap: 8px;
	}
}
.novel-links__site {
	font-size: 13px;
	letter-spacing: 0.08em;
}
.novel-links__url {
	font-size: 11px;
	letter-spacing: 0.2em;
	text-transform: uppercase;
}
.novel-links__url--none {
	color: rgba(26, 26, 26, 0.4);
}

/* Novel series */
.novel-series {
	border-top: 1px solid var(--portal-border, #e0e0e0);
	padding: 48px 0;
}
.novel-series__inner {
	max-width: var(--portal-body-width, 720px);
	margin: 0 auto;
	padding: 0 var(--portal-gutter, 24px);
}
.novel-series__heading {
	font-size: 16px;
	font-weight: 700;
	margin-bottom: 20px;
}
.novel-series__heading-sub {
	font-weight: 400;
	font-size: 12px;
	color: var(--portal-muted, rgba(26, 26, 26, 0.6));
	margin-left: 8px;
}
.novel-series__list {
	list-style: none;
	padding: 0;
	margin: 0;
}
.novel-series__item + .novel-series__item {
	border-top: 1px solid var(--portal-border, #e0e0e0);
}
.novel-series__item a {
	display: flex;
	align-items: baseline;
	gap: 0;
	padding: 14px 0;
}
.novel-series__item-title {
	font-size: 14px;
	font-weight: 400;
}
.novel-series__item-num {
	flex-shrink: 0;
	font-size: 10px;
	font-weight: 300;
	letter-spacing: 0.2em;
	color: var(--portal-muted, rgba(26, 26, 26, 0.6));
	margin-right: 1.2em;
	min-width: 4em;
}
.novel-series__item-meta {
	font-size: 12px;
	color: var(--portal-muted, rgba(26, 26, 26, 0.6));
}

/* Novel nav */
.novel-nav {
	border-top: 1px solid var(--portal-border, #e0e0e0);
	padding: 60px 0 240px;
}
.novel-nav__inner {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 32px;
}
@media (max-width: 720px) {
	.novel-nav__inner {
		grid-template-columns: 1fr;
	}
	.novel-nav__next {
		grid-column: auto;
	}
}
.novel-nav a {
	display: block;
	border: 1px solid var(--portal-border, #e0e0e0);
	padding: 24px 32px;
	min-height: 96px;
}
.novel-nav__next {
	text-align: right;
	grid-column: 2;
}
.novel-nav span {
	display: block;
	font-size: 10px;
	font-weight: 300;
	letter-spacing: 0.3em;
	text-transform: uppercase;
	color: var(--portal-muted, rgba(26, 26, 26, 0.6));
	margin-bottom: 8px;
}
.novel-nav__title-row {
	display: flex;
	align-items: baseline;
	gap: 0.8em;
}
.novel-nav__title-row--right {
	justify-content: flex-end;
}
.novel-nav__chapter-num {
	font-size: 10px;
	font-weight: 300;
	letter-spacing: 0.2em;
	color: var(--portal-muted, rgba(26, 26, 26, 0.6));
	flex-shrink: 0;
}
.novel-nav strong {
	font-size: 14px;
	font-weight: 700;
}

/* --- Buttons ----------------------------------------------------- */
.btn-ghost {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	height: 48px;
	padding: 0 32px;
	border: 1px solid var(--portal-accent, #1a1a1a);
	background: transparent;
	color: #1a1a1a;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.25em;
	text-transform: uppercase;
}
.btn-ghost:hover,
.btn-ghost:focus-visible {
	opacity: 1;
	background: var(--portal-accent, #1a1a1a);
	color: var(--portal-accent-text, #ffffff);
}

/* --- Pagination -------------------------------------------------- */
.pagination,
.nav-links {
	margin-top: 60px;
	display: flex;
	justify-content: center;
	gap: 4px;
	flex-wrap: wrap;
}
.page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 48px;
	height: 48px;
	padding: 0 12px;
	border: 1px solid var(--portal-border, #e0e0e0);
	font-size: 12px;
	letter-spacing: 0.1em;
}
.page-numbers.current {
	background: var(--portal-accent, #1a1a1a);
	color: var(--portal-accent-text, #ffffff);
	border-color: var(--portal-accent, #1a1a1a);
}
/* ページ区切り（wp_link_pages） */
.page-links {
	margin-top: 40px;
	display: flex;
	justify-content: center;
	gap: 4px;
	flex-wrap: wrap;
}
.page-links .post-page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 40px;
	height: 40px;
	padding: 0 10px;
	border: 1px solid var(--portal-border, #e0e0e0);
	font-size: 12px;
	letter-spacing: 0.1em;
	text-decoration: none;
	color: inherit;
}
.page-links .post-page-numbers.current .page-numbers,
.page-links > .page-numbers {
	background: var(--portal-accent, #1a1a1a);
	color: var(--portal-accent-text, #ffffff);
	border-color: var(--portal-accent, #1a1a1a);
}

/* --- Footer ------------------------------------------------------ */
.site-footer {
	border-top: 1px solid var(--portal-border, #e0e0e0);
	padding: 60px 0;
}
.site-footer__inner {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 20px;
	text-align: center;
}
.site-footer__brand {
	margin: 0;
	font-size: 14px;
	font-weight: 700;
	letter-spacing: 0.08em;
}
.site-footer__search-link {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	margin: 12px 0 0;
	font-size: 12px;
	color: var(--portal-muted, rgba(26,26,26,0.5));
	text-decoration: none;
	transition: color 0.15s;
}
.site-footer__search-link .material-symbols-outlined {
	font-size: 16px;
}
.site-footer__search-link:hover {
	color: var(--portal-text, #1a1a1a);
}
.site-footer__copy {
	margin: 0;
	font-size: 10px;
	font-weight: 300;
	letter-spacing: 0.25em;
	color: var(--portal-muted, rgba(26, 26, 26, 0.6));
}
.site-footer__social {
	display: flex;
	gap: 16px;
	align-items: center;
}
.site-footer__social-link {
	display: flex;
	align-items: center;
	color: var(--portal-text, #1a1a1a);
	opacity: 0.6;
	transition: opacity 0.15s;
}
.site-footer__social-link:hover {
	opacity: 1;
}
.site-footer__nav-list {
	display: flex;
	flex-wrap: wrap;
	gap: 4px 20px;
	margin: 0;
	padding: 0;
	list-style: none;
	justify-content: center;
}
.site-footer__nav-list a {
	font-size: 11px;
	letter-spacing: 0.12em;
	color: var(--portal-muted, rgba(26,26,26,0.6));
	text-decoration: none;
	transition: color 0.15s;
}
.site-footer__nav-list a:hover {
	color: var(--portal-text, #1a1a1a);
}

/* スクロールプログレスバー */
.hm-progress-bar {
	position: fixed;
	top: 0;
	left: 0;
	height: 2px;
	width: 0%;
	background: var(--portal-accent, #1a1a1a);
	z-index: 9999;
	transition: width 0.1s linear;
	pointer-events: none;
}
/* --- Ko-fi section (under By Genre) ----------------------------- */
.kofi-section {
	padding: 0 0 120px;
	text-align: center;
}
.kofi-section__inner {
	max-width: var(--portal-content-max, 1100px);
	margin: 0 auto;
	padding-left: clamp(20px, 6vw, 80px);
	padding-right: clamp(20px, 6vw, 80px);
}
.kofi-link {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	padding: 14px 28px;
	border: 1px solid var(--portal-accent, #1a1a1a);
	font-size: 13px;
	font-weight: 700;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: #1a1a1a;
	background: #ffffff;
}
.kofi-link:hover,
.kofi-link:focus-visible {
	opacity: 1;
	background: var(--portal-accent, #1a1a1a);
	color: var(--portal-accent-text, #ffffff);
	transform: translateY(-4px);
}
.kofi-link__icon {
	width: 20px;
	height: 20px;
	flex-shrink: 0;
}
.kofi-link__label {
	line-height: 1;
}

/* --- Back to top ------------------------------------------------- */
.back-to-top {
	position: fixed;
	right: 24px;
	bottom: 24px;
	z-index: 100;
	display: inline-flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 4px;
	width: 64px;
	height: 64px;
	background: var(--portal-bg, #ffffff);
	border: 1px solid var(--portal-accent, #1a1a1a);
	color: var(--portal-text, #1a1a1a);
	font-size: 10px;
	font-weight: 700;
	letter-spacing: 0.25em;
	text-transform: uppercase;
	transition: opacity 0.6s ease-in-out, transform 0.6s ease-in-out;
}
.back-to-top:hover,
.back-to-top:focus-visible {
	opacity: 1;
	background: var(--portal-accent, #1a1a1a);
	color: var(--portal-accent-text, #ffffff);
	transform: translateY(-4px);
}
.back-to-top__arrow {
	font-size: 14px;
	line-height: 1;
}
.back-to-top__label {
	line-height: 1;
}
@media (max-width: 720px) {
	.back-to-top {
		right: 16px;
		bottom: 16px;
		width: 52px;
		height: 52px;
	}
}
@media (max-width: 640px) {
	.back-to-top {
		display: none;
	}
}

/* --- Banner shortcode -------------------------------------------- */
.portal-banner {
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: center;
	gap: 12px;
	color: var(--portal-text, #1a1a1a);
	text-decoration: none;
	transition: opacity 0.4s ease, transform 0.4s ease;
	margin: 2.5em 0;
	box-sizing: border-box;
	position: relative;
	max-width: 100%;
	min-width: 0;
}
.portal-banner--bordered {
	border: 1px solid var(--portal-accent, #1a1a1a);
}
.portal-banner--align-left {
	align-items: flex-start;
	text-align: left;
}
.portal-banner--align-right {
	align-items: flex-end;
	text-align: right;
}
.portal-banner--align-center {
	text-align: center;
}
/* Image background → dark overlay + white text */
.portal-banner--has-image {
	color: #ffffff;
	position: relative;
	overflow: hidden;
	isolation: isolate;
}
.portal-banner--has-image::before {
	content: "";
	position: absolute;
	inset: 0;
	background: var(--banner-overlay, #000000);
	opacity: var(--banner-overlay-opacity, 0.45);
	z-index: -1;
}
.portal-banner__icon {
	font-size: 28px;
	display: block;
	position: relative;
}
.portal-banner__text {
	font-size: 22px;
	font-weight: 700;
	letter-spacing: 0.08em;
	line-height: 1.4;
	display: block;
	position: relative;
	max-width: 100%;
	overflow-wrap: anywhere;
}
.portal-banner__sub {
	font-size: 13px;
	font-weight: 400;
	letter-spacing: 0.05em;
	opacity: 0.85;
	display: block;
	position: relative;
	max-width: 100%;
	overflow-wrap: anywhere;
}
a.portal-banner:hover,
a.portal-banner:focus-visible {
	opacity: 1;
	transform: translateY(-3px);
}

/* --- Banner Group (grid) ----------------------------------------- */
.portal-banner-group {
	display: grid;
	margin: 2.5em 0;
	max-width: 100%;
	min-width: 0;
}
.portal-banner-group .portal-banner {
	margin: 0;
	min-height: 100%;
	min-width: 0;
}

/* --- Article-level like (top right of single page) --------------- */
article.novel,
article.post-single {
	position: relative;
	max-width: var(--portal-content-max, 1100px);
	margin-left: auto;
	margin-right: auto;
}
article.novel > .like-btn,
article.post-single > .like-btn {
	top: 24px !important;
	right: 0 !important;
}
article.novel > .clap-widget,
article.post-single > .clap-widget {
	position: absolute !important;
	top: 24px !important;
	right: 0 !important;
	z-index: 2;
}
article.novel > .clap-widget .clap-btn,
article.post-single > .clap-widget .clap-btn {
	color: var(--portal-heart, #1a1a1a);
}
article.novel > .clap-widget .clap-btn:hover,
article.post-single > .clap-widget .clap-btn:hover {
	color: var(--portal-heart-active, #C11920);
}

/* --- Single post (お知らせ・日記) -------------------------------- */
.post-single__cats {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	margin: 0;
}
/* 投稿本文は問答無用で 16px */
.post-single .novel-prose,
.post-single .novel-prose p,
.post-single .novel-prose li {
	font-size: 16px !important;
	line-height: var(--portal-line-height, 1.8);
}
/* 本文エリアの最大幅（投稿/固定ページ/作品詳細）— Heroやアクション・ナビは含めない */
body.single-post .novel-body__inner,
body.page .novel-body__inner,
body.page .distribute-body__inner,
body.single-novel .novel-body__inner {
	max-width: var(--portal-article-max, 1100px);
}

/* --- Distribute page template ------------------------------------ */
.distribute-head {
	padding: 240px 0 60px;
	border-bottom: 1px solid var(--portal-border, #e0e0e0);
}
.distribute-head__inner {
	max-width: var(--portal-content-max, 1100px);
	margin: 0 auto;
	padding: 0 clamp(20px, 6vw, 80px);
}
.distribute-head__eyebrow {
	margin: 0 0 16px;
	font-size: 10px;
	font-weight: 300;
	letter-spacing: 0.3em;
	text-transform: uppercase;
	color: var(--portal-muted, rgba(26, 26, 26, 0.6));
}
.distribute-head__title {
	margin: 0;
	font-size: clamp(40px, 7vw, 80px);
	font-weight: 700;
	line-height: 1.1;
	letter-spacing: 0.02em;
}
.distribute-head__lede {
	margin: 24px 0 0;
	font-size: 14px;
	max-width: 60ch;
}
.distribute-body {
	padding: 60px 0 240px;
}
.distribute-body__inner {
	max-width: var(--portal-content-max, 1100px);
	margin: 0 auto;
	padding: 0 clamp(20px, 6vw, 80px);
}

/* ============================================================
   Block Support — ネイティブ枠線・背景 (wp-block-styles 未宣言の補完)
   ============================================================ */

.hm-width-article,
.hm-width-site,
.hm-width-full {
	position: relative;
	left: 50%;
	box-sizing: border-box;
	max-width: none;
	transform: translateX(-50%);
}
.hm-width-article {
	width: min(var(--portal-article-max, 1100px), calc(100vw - 40px));
}
.hm-width-site {
	width: min(var(--portal-content-max, 1100px), calc(100vw - 40px));
}
.hm-width-full {
	width: 100vw;
	padding-left: clamp(20px, 5vw, 60px);
	padding-right: clamp(20px, 5vw, 60px);
}

/* ネイティブ境界線コントロールで color のみ設定した場合に border-style が欠落するのを補う */
.has-border-color {
	border-style: solid;
}
/* 個別辺 */
.has-border-top-color    { border-top-style: solid; }
.has-border-right-color  { border-right-style: solid; }
.has-border-bottom-color { border-bottom-style: solid; }
.has-border-left-color   { border-left-style: solid; }

/* ============================================================
   Block Style Variations
   Gutenberg のブロック「スタイル」オプションで適用される装飾
   ============================================================ */

/* 共通: パディングと外マージン */
.wp-block-group[class*="is-style-"],
.wp-block-column[class*="is-style-"],
.wp-block-columns[class*="is-style-"] {
	margin: 2.5em 0;
}

/* 枠付きグループ内の最終要素: 下マージンをゼロにして上下余白を均等に見せる */
.wp-block-group[class*="is-style-"] > *:last-child,
.wp-block-column[class*="is-style-"] > *:last-child,
.wp-block-columns[class*="is-style-"] > *:last-child {
	margin-bottom: 0;
}

/* レスポンシブ改行 */
span.portal-br-pc { display: block; font-size: 0; line-height: 0; height: 0; overflow: hidden; }
span.portal-br-sp { display: none; font-size: 0; line-height: 0; height: 0; overflow: hidden; }
@media (max-width: 767px) {
	span.portal-br-pc { display: none; }
	span.portal-br-sp { display: block; font-size: 0; line-height: 0; height: 0; overflow: hidden; }
}

/* リスト: ブロックエディタ用デフォルト復元（グローバル ul,ol reset の上書き） */
ul.wp-block-list { list-style: disc; padding-left: 1.6em; margin-bottom: 1.6em; }
ol.wp-block-list { list-style: decimal; padding-left: 1.6em; margin-bottom: 1.6em; }
.wp-block-list li { margin-bottom: 0.4em; }

/* リスト: 注記（※）スタイル */
.wp-block-list.is-style-note {
	list-style: '※ ';
	padding-left: 1.6em;
	font-size: 0.875em;
	color: #1a1a1a;
	margin-bottom: 0;
}
.wp-block-list.is-style-note li {
	font-size: inherit !important;
}

/* リスト: 小注記（※グレー） */
.wp-block-list.is-style-note-muted {
	list-style: '※ ';
	padding-left: 1.6em;
	font-size: 0.8em;
	color: rgba(26,26,26,0.65);
	margin-bottom: 0;
}
.wp-block-list.is-style-note-muted li {
	font-size: inherit !important;
}
.wp-block-list.is-style-note-muted li::marker {
	font-size: 1.2em;
}

/* Group / Column: 枠なし（余白のみ） */
.wp-block-group.is-style-plain,
.wp-block-column.is-style-plain,
.wp-block-columns.is-style-plain {
	padding: 32px;
}

/* Group / Column: カード（黒枠） */
.wp-block-group.is-style-card,
.wp-block-column.is-style-card,
.wp-block-columns.is-style-card {
	border: 1px solid var(--portal-accent, #1a1a1a);
	padding: 32px;
}
.wp-block-group.is-style-card > :first-child,
.wp-block-column.is-style-card > :first-child { margin-top: 0; }

/* Group / Column: カード（グレー枠） */
.wp-block-group.is-style-card-muted,
.wp-block-column.is-style-card-muted,
.wp-block-columns.is-style-card-muted {
	border: 1px solid var(--portal-border, #e0e0e0);
	padding: 32px;
}
.wp-block-group.is-style-card-muted > :first-child,
.wp-block-column.is-style-card-muted > :first-child { margin-top: 0; }

/* Group / Column: 薄背景（グレー） */
.wp-block-group.is-style-highlight,
.wp-block-column.is-style-highlight,
.wp-block-columns.is-style-highlight {
	background: #f6f7f7;
	padding: 32px;
}

/* Group / Column: 反転（黒背景） */
.wp-block-group.is-style-inverse,
.wp-block-column.is-style-inverse,
.wp-block-columns.is-style-inverse {
	background: var(--portal-accent, #1a1a1a);
	color: var(--portal-accent-text, #ffffff);
	padding: 32px;
}
.wp-block-group.is-style-inverse a,
.wp-block-column.is-style-inverse a {
	color: inherit;
	text-decoration: underline;
}

/* Paragraph: リード文 */
.wp-block-paragraph.is-style-lead,
p.is-style-lead {
	font-size: 18px;
	font-weight: 700;
	line-height: 1.7;
	letter-spacing: 0.04em;
	margin: 0 0 1.6em;
}

/* Paragraph: キャプション */
.wp-block-paragraph.is-style-caption,
p.is-style-caption {
	font-size: 12px;
	color: var(--portal-muted, rgba(26, 26, 26, 0.6));
	letter-spacing: 0.1em;
}

/* Paragraph: indent helpers */
.wp-block-paragraph.is-style-indent,
p.is-style-indent {
	text-indent: 1em;
}
.wp-block-paragraph.is-style-hanging-indent,
p.is-style-hanging-indent {
	padding-left: 1em;
	text-indent: -1em;
}

/* Quote: 枠線なし */
.wp-block-quote.is-style-borderless {
	border: 0;
	padding: 0;
	margin: 2.5em 0;
	font-style: normal;
}
.wp-block-quote.is-style-borderless cite {
	font-size: 12px;
	color: var(--portal-muted, rgba(26, 26, 26, 0.6));
}

/* List: チェックリスト */
.wp-block-list.is-style-check,
ul.is-style-check {
	list-style: none;
	padding-left: 0;
}
.wp-block-list.is-style-check li,
ul.is-style-check li {
	position: relative;
	padding-left: 28px;
	margin-bottom: 8px;
}
.wp-block-list.is-style-check li::before,
ul.is-style-check li::before {
	content: "✓";
	position: absolute;
	left: 0;
	top: 0;
	color: var(--portal-accent, #1a1a1a);
	font-weight: 700;
}

/* List: CJK numbered list */
ol.wp-block-list.is-style-cjk-decimal,
ol.is-style-cjk-decimal,
.wp-block-list.is-style-cjk-decimal,
.is-style-cjk-decimal > ol,
.is-style-cjk-decimal ol {
	list-style-type: cjk-ideographic;
	padding-left: 2.2em;
}

/* Image: 枠線付き */
.wp-block-image.is-style-bordered img {
	border: 1px solid var(--portal-border, #e0e0e0);
	padding: 6px;
	background: #ffffff;
}

/* Image: ポラロイド風 */
.wp-block-image.is-style-polaroid {
	background: #ffffff;
	padding: 12px 12px 40px;
	box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}
.wp-block-image.is-style-polaroid figcaption {
	font-family: "Noto Sans JP", sans-serif;
	text-align: center;
	font-size: 13px;
	margin-top: 8px;
}

/* DownloadCard用に Group ブロックへ追加クラス `wp-block-group--card` を付与してもらう */
.wp-block-group.wp-block-group--card {
	border: 1px solid var(--portal-border, #e0e0e0);
	padding: 40px;
	margin: 2.5em 0;
}
.wp-block-group.wp-block-group--card .wp-block-image {
	margin: 0 0 24px;
}
.wp-block-group.wp-block-group--card h2,
.wp-block-group.wp-block-group--card h3 {
	margin: 0 0 12px;
	font-size: 22px;
	font-weight: 700;
	letter-spacing: 0.04em;
	border: 0;
	padding: 0;
	text-transform: none;
}
.wp-block-group.wp-block-group--card .wp-block-buttons {
	margin-top: 24px;
}
.wp-block-button__link {
	border: 1px solid var(--portal-accent, #1a1a1a) !important;
	background: transparent !important;
	color: var(--portal-accent, #1a1a1a) !important;
	border-radius: 0 !important;
	padding: 12px 28px !important;
	font-size: 12px !important;
	font-weight: 700 !important;
	letter-spacing: 0.18em !important;
	text-transform: uppercase !important;
}
.wp-block-button__link:hover {
	background: var(--portal-accent, #1a1a1a) !important;
	color: var(--portal-accent-text, #ffffff) !important;
}
.wp-block-buttons {
	display: flex;
	flex-wrap: wrap;
	gap: 10px 12px;
	align-items: center;
}
.wp-block-button {
	max-width: 100%;
}
.wp-block-button__link {
	box-sizing: border-box;
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	max-width: 100%;
	min-height: 42px;
	line-height: 1.35 !important;
	text-align: center;
	white-space: normal;
	overflow-wrap: anywhere;
}

/* --- Misc -------------------------------------------------------- */
.empty {
	font-size: 13px;
	color: var(--portal-muted, rgba(26, 26, 26, 0.6));
	padding: 40px clamp(18px, 5vw, 48px);
	text-align: center;
	border: 1px solid var(--portal-border, #e0e0e0);
	background: color-mix(in srgb, var(--portal-bg, #ffffff) 88%, transparent);
	line-height: 1.8;
}
.post-list__item {
	border-bottom: 1px solid var(--portal-border, #e0e0e0);
	padding: 20px 0;
}
.post-list__item a {
	display: flex;
	align-items: baseline;
	gap: 16px;
	text-decoration: none;
	color: inherit;
}
.post-list__item a:hover h2 {
	text-decoration: underline;
}
.post-list__date {
	flex-shrink: 0;
	font-size: 12px;
	letter-spacing: 0.04em;
	color: var(--portal-muted, rgba(26, 26, 26, 0.5));
}
.post-list__item h2 {
	margin: 0;
	font-size: 16px;
	font-weight: 700;
}
.post-list__item:first-child {
	border-top: 1px solid var(--portal-border, #e0e0e0);
}

/* --- Post card grid (category archives) -------------------------- */
.post-card-grid {
	display: grid;
	grid-template-columns: repeat(var(--portal-grid-cols, 2), 1fr);
	gap: 0;
	list-style: none;
	margin: 0;
	padding: 0;
	border-top: 1px solid var(--portal-border, #e0e0e0);
	border-left: 1px solid var(--portal-border, #e0e0e0);
}
.post-card {
	border-right: 1px solid var(--portal-border, #e0e0e0);
	border-bottom: 1px solid var(--portal-border, #e0e0e0);
}
.post-card__link {
	display: flex;
	flex-direction: column;
	text-decoration: none;
	color: inherit;
	height: 100%;
}
.post-card__thumb {
	aspect-ratio: 16 / 9;
	overflow: hidden;
}
.post-card__thumb img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}
.post-card__thumb--empty {
	height: auto;
}
.post-card__body {
	padding: 20px 24px;
	display: flex;
	flex-direction: column;
	gap: 6px;
	flex: 1;
}
.post-card__cat {
	margin: 0;
	font-size: 10px;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--portal-muted, rgba(26, 26, 26, 0.5));
}
.post-card__title {
	margin: 0;
	font-size: 16px;
	font-weight: 700;
	line-height: 1.5;
}
.post-card__link:hover .post-card__title {
	text-decoration: underline;
}
.post-card__excerpt {
	margin: 0;
	font-size: 13px;
	line-height: 1.7;
	color: var(--portal-muted, rgba(26, 26, 26, 0.6));
}
.post-card__date {
	margin-top: auto;
	font-size: 11px;
	letter-spacing: 0.04em;
	color: var(--portal-muted, rgba(26, 26, 26, 0.5));
}
@media (max-width: 640px) {
	.post-card-grid {
		grid-template-columns: 1fr;
	}
}

/* --- 文章区切りブロック (harmonica/page-break) -------------------- */
.hm-break {
	border: 0;
	background: transparent;
	height: auto;
	max-width: none;
	width: 100%;
}
.hm-break--blank {
	margin: 4.8em auto;
}
.hm-break--blank-large {
	margin: 9em auto;
}
.hm-break--asterism,
.hm-break--scene-dots {
	margin: 4.8em auto;
	text-align: center;
	color: rgba(26, 26, 26, 0.5);
	letter-spacing: 1.2em;
	font-size: 14px;
}
.hm-break--asterism::before {
	content: "＊＊＊";
}
.hm-break--scene-dots::before {
	content: "・・・";
}
.hm-break--line-long,
.hm-break--line-short {
	margin: 4.8em auto;
	height: 0;
	border-top: 1px solid rgba(26, 26, 26, 0.2);
}
.hm-break--line-long {
	width: 100%;
	max-width: 100%;
}
.hm-break--line-short {
	width: 3em;
	max-width: 3em;
}

/* --- 区切り線 (core/separator) ------------------------------------ */
.wp-block-separator[class*="is-style-"] {
	border: none;
	width: 100%;
	max-width: 100%;
	margin-left: auto;
	margin-right: auto;
}
.wp-block-separator.is-style-thin {
	border-top: 1px solid rgba(26, 26, 26, 0.2);
	height: 0;
}
.wp-block-separator.is-style-dotted {
	border-top: 1px dotted rgba(26, 26, 26, 0.35);
	height: 0;
}
.wp-block-separator.is-style-dot-row {
	height: 4px;
	background-image: radial-gradient(circle, rgba(26, 26, 26, 0.35) 1.5px, transparent 1.5px);
	background-size: 14px 4px;
	background-repeat: repeat-x;
	background-position: center;
}
.wp-block-separator.is-style-fade {
	height: 1px;
	background: linear-gradient(to right, transparent, rgba(26, 26, 26, 0.3) 25%, rgba(26, 26, 26, 0.3) 75%, transparent);
}
.wp-block-separator.is-style-thick {
	border-top: 3px solid rgba(26, 26, 26, 0.75);
	height: 0;
}
.wp-block-separator.is-style-double {
	border-top: 3px double rgba(26, 26, 26, 0.45);
	height: 0;
}

/* --- Info bar: ALL → link --------------------------------------- */
.info-bar {
	position: relative;
}
.info-bar__more {
	position: absolute;
	top: 50%;
	right: 0;
	transform: translateY(-50%);
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 2px;
	padding: 10px 18px;
	color: inherit;
	text-decoration: none;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.18em;
	background: rgba(0, 0, 0, 0.15);
	z-index: 2;
	line-height: 1;
}
.info-bar__more:hover,
.info-bar__more:focus-visible {
	opacity: 0.7;
}
.info-bar__more-stack {
	display: inline-block;
	text-align: right;
	line-height: 1;
}
.info-bar__more-label {
	display: block;
	letter-spacing: 0.18em;
	/* trailing letter-spacing 相殺 */
	margin-right: -0.18em;
}
.info-bar__more-icon {
	display: block;
	font-size: 14px;
	letter-spacing: normal;
	margin-top: 4px;
}
/* ALL→ボタンの幅ぶんviewport/innerに右余白を入れて文字が被らないように */
.info-bar:has(.info-bar__more) .info-bar__inner {
	padding-right: 100px;
}
.info-bar:has(.info-bar__more) .info-bar__viewport {
	padding-right: 100px;
}
@media (max-width: 720px) {
	.info-bar__more {
		padding: 0 14px;
		font-size: 10px;
	}
	.info-bar:has(.info-bar__more) .info-bar__inner,
	.info-bar:has(.info-bar__more) .info-bar__viewport {
		padding-right: 80px;
	}
	.info-bar--static .info-bar__inner {
		text-align: left;
	}
	/* スマホ静止モード：aを容器幅に広げ、中の行を自動省略させる */
	.info-bar--static .info-bar__inner > a {
		display: block;
		width: 100%;
		max-width: 100%;
	}
}

/* --- Global burger (independent nav toggle) --------------------- */
.global-burger {
	position: fixed;
	top: 0;
	right: 0;
	z-index: 1001;
	color: var(--burger-fg, var(--portal-text, #1a1a1a));
}
.global-burger__btn {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 5px;
	background: color-mix(in srgb, var(--burger-bg, var(--portal-bg, #fff)) 70%, transparent);
	backdrop-filter: blur(8px);
	-webkit-backdrop-filter: blur(8px);
	border: none;
	border-radius: 0 0 0 6px;
	cursor: pointer;
	padding: 12px 16px;
	color: inherit;
	height: 100%;
}
.global-burger__home {
	text-decoration: none;
	color: inherit;
}
.global-burger__home .material-symbols-outlined {
	font-size: 22px;
	line-height: 1;
}
.global-burger__line {
	display: block;
	width: 20px;
	height: 2px;
	background: currentColor;
	border-radius: 1px;
	transition: transform 0.25s, opacity 0.25s;
}
.global-burger__btn[aria-expanded="true"] .global-burger__line:nth-child(1) {
	transform: translateY(7px) rotate(45deg);
}
.global-burger__btn[aria-expanded="true"] .global-burger__line:nth-child(2) {
	opacity: 0;
}
.global-burger__btn[aria-expanded="true"] .global-burger__line:nth-child(3) {
	transform: translateY(-7px) rotate(-45deg);
}
/* Dropdown nav */
.global-burger-nav {
	display: none;
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 1000;
	background: var(--portal-bg, #fff);
	color: var(--burger-fg, var(--portal-text, #1a1a1a));
	overflow-y: auto;
	-webkit-overflow-scrolling: touch;
}
.global-burger-nav.is-open {
	display: block;
}
.global-burger-nav__list {
	list-style: none;
	margin: 0 auto;
	padding: 48px 0 32px;
	display: flex;
	flex-direction: column;
	align-items: stretch;
	max-width: 1100px;
}
.global-burger-nav__list > li > a {
	display: block;
	padding: 10px clamp(20px, 6vw, 80px);
	font-size: var(--portal-body-size, 15px);
	font-weight: 700;
	letter-spacing: 0.12em;
	color: var(--burger-fg, var(--portal-text, #1a1a1a));
	text-decoration: none;
	border-top: 1px solid var(--portal-border, #e0e0e0);
}
.global-burger-nav__list > li:first-child > a {
	border-top: none;
}
.global-burger-nav__list > li > a:hover,
.global-burger-nav__list > li > a:focus-visible {
	opacity: 0.6;
}

/* --- News page (page-news.php) ---------------------------------- */
.news-page-intro {
	margin: 0 0 32px;
	color: rgba(26, 26, 26, 0.7);
	font-size: 14px;
	line-height: 1.8;
}
.news-section {
	margin: 0 0 56px;
}
.news-section__title {
	margin: 0 0 16px;
	font-size: 16px;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	border-bottom: 1px solid var(--portal-border, #e0e0e0);
	padding-bottom: 8px;
}
.news-filter {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	list-style: none;
	margin: 0 0 20px;
	padding: 0;
}
.news-filter__item a {
	display: inline-block;
	padding: 4px 12px;
	border: 1px solid var(--portal-border, #e0e0e0);
	font-size: 12px;
	color: rgba(26, 26, 26, 0.7);
	text-decoration: none;
}
.news-filter__item.is-active a {
	background: var(--portal-accent, #1a1a1a);
	color: var(--portal-accent-text, #ffffff);
	border-color: var(--portal-accent, #1a1a1a);
}
.news-filter__item a:hover {
	opacity: 0.7;
}
.news-list {
	list-style: none;
	margin: 0;
	padding: 0;
}
.news-list__item {
	border-bottom: 1px solid var(--portal-border, #e0e0e0);
}
.news-list__item a {
	display: grid;
	grid-template-columns: 100px 1fr;
	gap: 16px;
	align-items: center;
	padding: 14px 0;
	color: inherit;
	text-decoration: none;
}
.news-list__item a:hover {
	opacity: 0.7;
}
.news-list__date {
	font-size: 12px;
	color: rgba(26, 26, 26, 0.6);
	letter-spacing: 0.06em;
}
.news-list__body {
	display: grid;
	grid-template-columns: 120px 1fr;
	gap: 12px;
	align-items: center;
}
.news-list__cat {
	font-size: 11px;
	letter-spacing: 0.1em;
	padding: 2px 8px;
	border: 1px solid var(--portal-border, #e0e0e0);
	color: rgba(26, 26, 26, 0.6);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	text-align: center;
}
.news-list__title {
	font-size: 14px;
	font-weight: 400;
	display: block;
}
.news-list__serial {
	display: block;
	font-size: 11px;
	letter-spacing: 0.06em;
	color: rgba(26, 26, 26, 0.55);
	margin-bottom: 2px;
}
@media (max-width: 720px) {
	.news-list__item a {
		grid-template-columns: 1fr;
		gap: 4px;
	}
}

.news-pagination {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 24px;
	margin-top: 40px;
	padding: 20px 0;
}
.news-pagination__link {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.08em;
	color: var(--portal-text, #1a1a1a);
	text-decoration: none;
	transition: opacity 0.15s;
}
.news-pagination__link:hover {
	opacity: 0.6;
}
.news-pagination__link .material-symbols-outlined {
	font-size: 16px;
}
.news-pagination__current {
	font-size: 12px;
	color: var(--portal-muted, rgba(26,26,26,0.5));
	letter-spacing: 0.08em;
}

/* カラム内のグループ・スタイル付きブロック: マージンリセット＋高さ伸長 */
.wp-block-columns > .wp-block-column > .wp-block-group {
	flex: 1;
	margin-top: 0;
	margin-bottom: 0;
}
.wp-block-columns .wp-block-group[class*="is-style-"],
.wp-block-column[class*="is-style-"] {
	margin-top: 0;
	margin-bottom: 0;
}

/* --- Search page (page-search.php) ------------------------------- */
.page-template-page-search .archive-body__inner {
	max-width: 680px;
}
.search-page__title {
	margin: 0 0 28px;
	font-size: 20px;
	font-weight: 700;
	letter-spacing: 0.08em;
}
.search-page__form {
	display: flex;
	gap: 8px;
	margin: 0 0 40px;
}
.search-page__input-wrap {
	flex: 1;
	display: flex;
	align-items: center;
	gap: 8px;
	background: var(--portal-bg-alt, #f5f5f5);
	padding: 0 12px;
}
.search-page__icon {
	font-size: 20px;
	color: var(--portal-muted, rgba(26,26,26,0.4));
	flex-shrink: 0;
}
.search-page__input {
	flex: 1;
	border: none;
	background: transparent;
	padding: 12px 0;
	font-size: 15px;
	outline: none;
	color: var(--portal-text, #1a1a1a);
	font-family: inherit;
}
.search-page__input::placeholder {
	color: var(--portal-muted, rgba(26,26,26,0.4));
}
.search-page__submit {
	padding: 0 20px;
	font-size: 14px;
	font-weight: 600;
	letter-spacing: 0.06em;
	background: var(--portal-accent, #1a1a1a);
	color: var(--portal-accent-text, #fff);
	border: none;
	cursor: pointer;
	transition: opacity 0.15s;
}
.search-page__submit:hover {
	opacity: 0.8;
}
.search-page__section {
	margin: 0 0 36px;
}
.search-page__heading {
	margin: 0 0 12px;
	font-size: 14px;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--portal-muted, rgba(26,26,26,0.5));
}
.search-page__tags {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}
.search-page__tag {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 5px 12px;
	font-size: 13px;
	font-weight: 500;
	border: 1px solid var(--portal-border, #e0e0e0);
	border-radius: 2px;
	background: transparent;
	color: var(--portal-text, #1a1a1a);
	text-decoration: none;
	transition: background 0.15s, border-color 0.15s;
}
.search-page__tag:hover {
	border-color: var(--portal-text, #1a1a1a);
	background: var(--portal-bg-alt, #f5f5f5);
}
.search-page__count {
	font-size: 11px;
	color: var(--portal-muted, rgba(26,26,26,0.4));
}
.search-page__empty {
	border-top: 1px solid var(--portal-border, #e0e0e0);
	border-bottom: 1px solid var(--portal-border, #e0e0e0);
	padding: 28px 0;
	color: var(--portal-muted, rgba(26,26,26,0.6));
}
.search-page__empty-title {
	margin: 0 0 8px;
	font-size: 14px;
	font-weight: 700;
	color: var(--portal-text, #1a1a1a);
}
.search-page__empty-text {
	margin: 0;
	font-size: 13px;
	line-height: 1.8;
}
@media (max-width: 640px) {
	.search-page__form {
		flex-direction: column;
	}
	.search-page__submit {
		padding: 12px;
	}
}

/* --- Column vertical alignment ----------------------------------- */
/* カラム自体を flex コンテナ化して内部の縦揃えを justify-content で制御 */
.wp-block-columns > .wp-block-column {
	display: flex;
	flex-direction: column;
	justify-content: flex-start;
}
.wp-block-columns.are-vertically-aligned-top    { align-items: stretch; }
.wp-block-columns.are-vertically-aligned-center { align-items: stretch; }
.wp-block-columns.are-vertically-aligned-bottom { align-items: stretch; }
.wp-block-column.is-vertically-aligned-top    { justify-content: flex-start; }
.wp-block-column.is-vertically-aligned-center { justify-content: center; }
.wp-block-column.is-vertically-aligned-bottom { justify-content: flex-end; }

/* --- Blog Card --------------------------------------------------- */
.hm-blog-card {
	display: flex;
	gap: 16px;
	border: 1px solid var(--portal-border, #e0e0e0);
	padding: 16px;
	margin: 1.6em 0;
	color: inherit;
	text-decoration: none;
	transition: box-shadow 0.2s;
}
.hm-blog-card:hover { box-shadow: 0 2px 12px rgba(0,0,0,0.08); opacity: 1; }
.hm-blog-card__thumb {
	flex-shrink: 0;
	width: 120px;
	height: 80px;
	overflow: hidden;
}
.hm-blog-card__thumb img { width: 100%; height: 100%; object-fit: cover; }
.hm-blog-card__body { flex: 1; min-width: 0; }
.hm-blog-card__title { font-size: 15px; font-weight: 700; line-height: 1.4; margin-bottom: 6px; }
.hm-blog-card__desc {
	font-size: 12px;
	color: var(--portal-muted, rgba(26,26,26,0.6));
	line-height: 1.5;
	margin-bottom: 6px;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}
.hm-blog-card__site { font-size: 11px; color: var(--portal-muted, rgba(26,26,26,0.5)); }

/* --- Ad Block ---------------------------------------------------- */
.hm-ad { margin: 1.6em 0; }
.hm-ad--center { text-align: center; }
.hm-ad--right   { text-align: right; }

/* --- Members Only ------------------------------------------------ */
.hm-members-gate {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 12px;
	padding: 48px 24px;
	border: 1px solid var(--portal-border, #e0e0e0);
	margin: 1.6em 0;
	text-align: center;
}
.hm-members-gate__icon { font-size: 40px; color: var(--portal-muted, rgba(26,26,26,0.4)); }
.hm-members-gate__message { margin: 0; }
.hm-members-gate__link {
	display: inline-block;
	padding: 10px 28px;
	border: 1px solid var(--portal-accent, #1a1a1a);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: inherit;
}
.hm-members-gate__link:hover { background: var(--portal-accent, #1a1a1a); color: var(--portal-accent-text, #fff); opacity: 1; }

/* --- Post List Block --------------------------------------------- */
.hm-post-list { margin: 1.6em 0; }

/* list */
.hm-post-list--list .hm-post-list__item {
	display: flex;
	gap: 16px;
	align-items: flex-start;
	padding: 16px 0;
	border-bottom: 1px solid var(--portal-border, #e0e0e0);
}
.hm-post-list--list .hm-post-list__item:first-child { border-top: 1px solid var(--portal-border, #e0e0e0); }
.hm-post-list--list .hm-post-list__thumb {
	flex-shrink: 0;
	width: 80px;
	height: 60px;
	overflow: hidden;
}
.hm-post-list--list .hm-post-list__thumb img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* card */
.hm-post-list--card {
	display: grid;
	grid-template-columns: repeat(var(--hm-pl-cols, 2), 1fr);
	gap: 20px;
}
.hm-post-list--card .hm-post-list__item,
.hm-post-list--card-compact .hm-post-list__item,
.hm-post-list--magazine .hm-post-list__item { display: flex; flex-direction: column; }
.hm-post-list--card .hm-post-list__thumb,
.hm-post-list--card-compact .hm-post-list__thumb,
.hm-post-list--magazine .hm-post-list__thumb {
	aspect-ratio: 16 / 9;
	overflow: hidden;
	margin-bottom: 10px;
	border-radius: var(--portal-card-radius, 0px);
}
.hm-post-list--card .hm-post-list__thumb img,
.hm-post-list--card-compact .hm-post-list__thumb img,
.hm-post-list--magazine .hm-post-list__thumb img { width: 100%; height: 100%; object-fit: cover; }
.hm-post-list--card-compact {
	display: grid;
	grid-template-columns: repeat(var(--hm-pl-cols, 2), 1fr);
	gap: 12px;
}
.hm-post-list--card-compact .hm-post-list__item {
	border: 1px solid var(--portal-border, #e0e0e0);
	border-radius: var(--portal-card-radius, 0px);
	background: var(--portal-card-bg, #fff);
	color: var(--portal-card-text, var(--portal-text, #1a1a1a));
	overflow: hidden;
}
.hm-post-list--card-compact .hm-post-list__thumb {
	margin-bottom: 0;
	border-radius: 0;
}
.hm-post-list--card-compact .hm-post-list__body {
	padding: 12px 14px 14px;
}
.hm-post-list--card-compact .hm-post-list__title {
	font-size: 13px;
	margin-bottom: 6px;
}
.hm-post-list--magazine {
	display: grid;
	grid-template-columns: repeat(var(--hm-pl-cols, 2), 1fr);
	gap: 20px;
}
.hm-post-list--magazine .hm-post-list__item {
	border-bottom: 1px solid var(--portal-border, #e0e0e0);
	padding-bottom: 14px;
}
.hm-post-list--magazine .hm-post-list__item:first-child {
	grid-column: 1 / -1;
	display: grid;
	grid-template-columns: minmax(0, 1.25fr) minmax(220px, 0.9fr);
	gap: 20px;
	align-items: end;
	border: 1px solid var(--portal-border, #e0e0e0);
	border-radius: var(--portal-card-radius, 0px);
	background: var(--portal-card-bg, #fff);
	padding: 16px;
	overflow: hidden;
}
.hm-post-list--magazine .hm-post-list__item:first-child .hm-post-list__thumb {
	margin-bottom: 0;
}
.hm-post-list--magazine .hm-post-list__item:first-child .hm-post-list__title {
	font-size: clamp(18px, 3vw, 28px);
	line-height: 1.35;
}
@media (max-width: 600px) {
	.hm-post-list--card,
	.hm-post-list--card-compact,
	.hm-post-list--magazine { grid-template-columns: 1fr; }
	.hm-post-list--magazine .hm-post-list__item:first-child { grid-template-columns: 1fr; }
}

/* slider */
.hm-post-list--slider {
	display: flex;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	gap: 16px;
	padding-bottom: 8px;
	-webkit-overflow-scrolling: touch;
}
.hm-post-list--slider .hm-post-list__item {
	flex: 0 0 260px;
	scroll-snap-align: start;
	display: flex;
	flex-direction: column;
}
.hm-post-list--slider .hm-post-list__thumb {
	aspect-ratio: 16 / 9;
	overflow: hidden;
	margin-bottom: 10px;
}
.hm-post-list--slider .hm-post-list__thumb img { width: 100%; height: 100%; object-fit: cover; }
.hm-post-list--slider::-webkit-scrollbar { height: 4px; }
.hm-post-list--slider::-webkit-scrollbar-thumb { background: var(--portal-border, #ccc); border-radius: 2px; }

/* news（日付＋タイトル） */
.hm-post-list--news {
	list-style: none;
	margin: 0;
	padding: 0;
}
.hm-post-list__news-item + .hm-post-list__news-item {
	border-top: 1px solid var(--portal-border, #e0e0e0);
}
.hm-post-list__news-item a {
	display: grid;
	grid-template-columns: 100px 1fr;
	align-items: baseline;
	gap: 0 16px;
	padding: 14px 0;
	text-decoration: none;
	color: inherit;
}
.hm-post-list__news-item a:hover .hm-post-list__news-title {
	text-decoration: underline;
}
.hm-post-list__news-date {
	font-size: 12px;
	letter-spacing: 0.06em;
	color: var(--portal-muted, rgba(26, 26, 26, 0.55));
	white-space: nowrap;
}
.hm-post-list__news-title {
	font-size: 15px;
	font-weight: 400;
	line-height: 1.6;
}
@media (max-width: 480px) {
	.hm-post-list__news-item a {
		grid-template-columns: 1fr;
		gap: 4px;
		padding: 12px 0;
	}
}

/* もっと見る */
.hm-post-list__more {
	margin-top: 28px;
	text-align: center;
}

/* ダッシュ・リーダー連続時のletter-spacingを打ち消す */
.hm-punct {
	letter-spacing: 0;
	white-space: nowrap;
}

/* empty */
.hm-post-list__empty {
	padding: 32px clamp(18px, 5vw, 40px);
	text-align: center;
	color: var(--portal-muted, rgba(26,26,26,0.55));
	font-size: 13px;
	line-height: 1.8;
	border: 1px solid var(--portal-border, #e0e0e0);
	background: color-mix(in srgb, var(--portal-bg, #ffffff) 88%, transparent);
}

/* 共通 */
.hm-post-list__title {
	font-size: 14px;
	font-weight: 700;
	margin: 0 0 4px;
	line-height: 1.5;
}
.hm-post-list__title a { color: inherit; }
.hm-post-list__date {
	font-size: 11px;
	color: var(--portal-muted, rgba(26,26,26,0.55));
	letter-spacing: 0.04em;
}
.hm-post-list__cats { display: flex; gap: 4px; flex-wrap: wrap; margin-bottom: 4px; }
.hm-post-list__cat {
	font-size: 10px;
	padding: 2px 6px;
	border: 1px solid var(--portal-border, #e0e0e0);
	letter-spacing: 0.05em;
}

/* --- Fullwide Section -------------------------------------------- */
.hm-fullwide {
	width: 100vw;
	position: relative;
	left: 50%;
	right: 50%;
	margin-left: -50vw;
	margin-right: -50vw;
}
.hm-fullwide--sm { padding: 40px 0; }
.hm-fullwide--md { padding: 80px 0; }
.hm-fullwide--lg { padding: 120px 0; }
.hm-fullwide--xl { padding: 200px 0; }
.hm-fullwide__inner {
	max-width: var(--portal-content-max, 1100px);
	margin: 0 auto;
	padding: 0 clamp(20px, 6vw, 80px);
}

/* --- TOC Block --------------------------------------------------- */
.harmonica-toc {
	margin: 2em 0;
	padding: 24px 28px;
	border: 1px solid var(--portal-border, #e0e0e0);
	border-radius: 4px;
	background: var(--portal-bg, #ffffff);
}
.harmonica-toc__list {
	list-style: none;
	margin: 0;
	padding: 0;
	counter-reset: toc;
}
.harmonica-toc__list li {
	counter-increment: toc;
	padding: 5px 0;
	font-size: 14px;
	line-height: 1.5;
}
.harmonica-toc__list li::before {
	content: counter(toc) ". ";
	font-size: 11px;
	color: var(--portal-muted, rgba(26,26,26,0.5));
	margin-right: 4px;
}
.harmonica-toc__item--h3 {
	padding-left: 1.4em;
	font-size: 13px !important;
}
.harmonica-toc__item--h3::before {
	content: "" !important;
}
.harmonica-toc__list a {
	color: inherit;
	text-decoration: none;
	border-bottom: 1px solid transparent;
	transition: border-color 0.2s;
}
.harmonica-toc__list a:hover {
	border-bottom-color: var(--portal-accent, #1a1a1a);
	opacity: 1;
}

/* --- Table styles ------------------------------------------------ */
.wp-block-table {
	display: block;
	max-width: 100%;
	margin: 2em 0;
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
}
.wp-block-table table {
	width: 100%;
	border-collapse: collapse;
	font-size: 14px;
	line-height: 1.6;
}
.wp-block-table td,
.wp-block-table th {
	padding: 10px 14px;
	border: 0;
	text-align: left;
	vertical-align: top;
}
.wp-block-table thead th {
	font-weight: 700;
	border-bottom: 2px solid var(--portal-accent, #1a1a1a);
	font-size: 12px;
	letter-spacing: 0.06em;
}
/* bordered */
.wp-block-table.is-style-bordered td,
.wp-block-table.is-style-bordered th {
	border: 1px solid var(--portal-border, #e0e0e0);
}
/* stripe */
.wp-block-table.is-style-stripe tbody tr:nth-child(odd) td {
	background: #f6f7f7;
}
/* scroll */
.wp-block-table.is-style-scroll {
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
	display: block;
}
.wp-block-table.is-style-scroll table { min-width: 600px; }
@media (max-width: 640px) {
	.wp-block-table table {
		min-width: 560px;
	}
	.wp-block-table figcaption {
		min-width: 560px;
	}
}

/* --- List styles ------------------------------------------------- */
.wp-block-list.is-style-arrow,
ul.is-style-arrow {
	list-style: none;
	padding-left: 0;
}
.wp-block-list.is-style-arrow li,
ul.is-style-arrow li {
	position: relative;
	padding-left: 1.4em;
	margin-bottom: 6px;
}
.wp-block-list.is-style-arrow li::before,
ul.is-style-arrow li::before {
	content: '→';
	position: absolute;
	left: 0;
	color: var(--portal-accent, #1a1a1a);
}
.wp-block-list.is-style-none,
ul.is-style-none,
ol.is-style-none {
	list-style: none;
	padding-left: 0;
}

/* --- TOC design variants ----------------------------------------- */
.harmonica-toc.is-style-simple {
	border: 0;
	padding: 0;
	background: transparent;
}
.harmonica-toc.is-style-accent {
	border: 0;
	border-top: 2px solid var(--portal-accent, #1a1a1a);
	border-radius: 0;
	padding: 20px 0 0;
	background: transparent;
}

/* --- Steps ------------------------------------------------------- */
.hm-steps {
	margin: 2em 0;
	counter-reset: hm-step;
}
.hm-step {
	display: flex;
	gap: 20px;
	position: relative;
	padding-bottom: 32px;
}
.hm-step:last-child { padding-bottom: 0; }

/* 縦ライン */
.hm-step:not(:last-child) .hm-step__marker::after {
	content: '';
	position: absolute;
	left: 19px;
	top: 40px;
	bottom: 0;
	width: 1px;
	background: var(--portal-border, #e0e0e0);
}

/* マーカー共通 */
.hm-step__marker {
	flex-shrink: 0;
	width: 40px;
	height: 40px;
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	position: relative;
	z-index: 1;
}

/* number */
.hm-steps--number .hm-step__marker {
	counter-increment: hm-step;
	background: var(--portal-accent, #1a1a1a);
	color: var(--portal-accent-text, #ffffff);
	font-size: 13px;
	font-weight: 700;
	letter-spacing: 0.02em;
}
.hm-steps--number .hm-step__marker::before {
	content: counter(hm-step, decimal-leading-zero);
}

/* check */
.hm-steps--check .hm-step__marker {
	background: var(--portal-accent, #1a1a1a);
	color: var(--portal-accent-text, #ffffff);
}
.hm-steps--check .hm-step__marker::before {
	content: '';
	width: 10px;
	height: 6px;
	border-left: 2px solid currentColor;
	border-bottom: 2px solid currentColor;
	transform: rotate(-45deg) translateY(-2px);
}

/* dot */
.hm-steps--dot .hm-step__marker {
	background: #ffffff;
	border: 2px solid var(--portal-accent, #1a1a1a);
}
.hm-steps--dot .hm-step__marker::before {
	content: '';
	width: 10px;
	height: 10px;
	border-radius: 50%;
	background: var(--portal-accent, #1a1a1a);
}

.hm-step__body { padding-top: 8px; flex: 1; min-width: 0; }
.hm-step__title {
	font-size: 16px;
	font-weight: 700;
	margin-bottom: 8px;
	line-height: 1.4;
}
.hm-step__content { line-height: 1.8; }
.hm-step__content > *:first-child { margin-top: 0; }
.hm-step__content > *:last-child  { margin-bottom: 0; }

/* --- Accordion --------------------------------------------------- */
.hm-accordion {
	border: 1px solid var(--portal-border, #e0e0e0);
	margin: 1.6em 0;
	border-radius: 2px;
}
.hm-accordion--accent {
	border-top: 2px solid var(--portal-accent, #1a1a1a);
}
.hm-accordion--filled > .hm-accordion__title {
	background: #f6f7f7;
}
.hm-accordion__title {
	display: flex;
	justify-content: space-between;
	align-items: center;
	padding: 14px 18px;
	cursor: pointer;
	font-weight: 700;
	font-size: 15px;
	list-style: none;
	gap: 12px;
	user-select: none;
}
.hm-accordion__title::-webkit-details-marker { display: none; }
.hm-accordion__title::after {
	content: '＋';
	flex-shrink: 0;
	font-size: 16px;
	font-weight: 400;
	transition: transform 0.2s;
}
.hm-accordion[open] > .hm-accordion__title::after {
	content: '－';
}
.hm-accordion__body {
	padding: 4px 18px 18px;
	font-size: 14px;
	line-height: 1.8;
}
.hm-accordion__body > *:first-child { margin-top: 0; }
.hm-accordion__body > *:last-child  { margin-bottom: 0; }
.hm-accordion__item > *:first-child { margin-top: 0; }
.hm-accordion__item > *:last-child  { margin-bottom: 0; }
.hm-accordion__item:not(:first-child) { padding-top: 1.2em; }
.hm-accordion__body--div-line   .hm-accordion__item:not(:first-child) { border-top: 1px solid rgba(26,26,26,0.18); }
.hm-accordion__body--div-thick  .hm-accordion__item:not(:first-child) { border-top: 2px solid rgba(26,26,26,0.25); }
.hm-accordion__body--div-dotted .hm-accordion__item:not(:first-child) { border-top: 1px dotted rgba(26,26,26,0.35); }

/* --- Q&A --------------------------------------------------------- */
.hm-qa {
	margin: 1.6em 0;
}
.hm-qa__q,
.hm-qa__a {
	display: flex;
	gap: 14px;
	align-items: flex-start;
	padding: 14px 0;
}
.hm-qa__q {
	border-bottom: 1px solid var(--portal-border, #e0e0e0);
}
.hm-qa__label {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 28px;
	height: 28px;
	flex-shrink: 0;
	font-size: 14px;
	font-weight: 700;
	border-radius: 50%;
	line-height: 1;
}
.hm-qa__label--q {
	background: var(--portal-accent, #1a1a1a);
	color: var(--portal-accent-text, #ffffff);
}
.hm-qa__label--a {
	background: transparent;
	color: var(--portal-accent, #1a1a1a);
	border: 1px solid var(--portal-accent, #1a1a1a);
}
.hm-qa__text {
	line-height: 1.8;
	padding-top: 4px;
}
.hm-qa__text p { margin: 0; }
.hm-qa__text--bold { font-weight: 700; }
.hm-qa-group { margin: 1.6em 0; }
.hm-qa-group > .hm-qa { margin: 0; }
.hm-qa-group > .hm-qa + .hm-qa,
.hm-qa-group > details.hm-qa--collapse + details.hm-qa--collapse { border-top: 1px solid var(--portal-border, #e0e0e0); }

/* collapse variant */
details.hm-qa--collapse { margin: 1.6em 0; }
details.hm-qa--collapse > summary.hm-qa__q {
	cursor: pointer;
	list-style: none;
	position: relative;
	padding-right: 32px;
}
details.hm-qa--collapse > summary.hm-qa__q::-webkit-details-marker { display: none; }
details.hm-qa--collapse > summary.hm-qa__q::after {
	content: '';
	position: absolute;
	right: 4px;
	top: 50%;
	width: 8px;
	height: 8px;
	border-right: 2px solid currentColor;
	border-bottom: 2px solid currentColor;
	transform: translateY(-65%) rotate(45deg);
	transition: transform 0.2s;
}
details.hm-qa--collapse[open] > summary.hm-qa__q::after {
	transform: translateY(-35%) rotate(-135deg);
}

/* --- Decoration Boxes -------------------------------------------- */
.hm-box {
	margin: 2em 0;
	padding: 24px 28px;
}
.hm-box h2,
.hm-box h3,
.hm-box .wp-block-heading {
	margin-top: 0;
	font-size: 15px;
}
.hm-box--simple {
	border: 1px solid var(--portal-border, #e0e0e0);
}
.hm-box--simple .hm-box__title {
	padding-bottom: 12px;
	margin-bottom: 14px !important;
	border-bottom: 1px solid var(--portal-border, #e0e0e0);
}
.hm-box--accent {
	border: 1px solid var(--portal-border, #e0e0e0);
	border-top: 2px solid var(--portal-accent, #1a1a1a);
}
.hm-box--accent .hm-box__title {
	margin-bottom: 14px !important;
}

/* --- Icon Box ---------------------------------------------------- */
.hm-icon-box {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	padding: 12px 16px;
	border: 1px solid var(--portal-border, #e0e0e0);
	margin: 1.6em 0;
}
.hm-icon-box--filled {
	background: #f6f7f7;
	border-color: transparent;
}
.hm-icon-box--warning {
	border-top: 2px solid var(--portal-accent, #1a1a1a);
}
.hm-icon-box__icon {
	font-size: 22px;
	flex-shrink: 0;
	margin-top: 1px;
	color: var(--portal-accent, #1a1a1a);
}
.hm-icon-box__text {
	margin: 0;
	font-size: 14px;
	line-height: 1.7;
}
.hm-icon-box__text p { margin: 0; }

/* --- Fukidashi (Speech Bubble) Block ----------------------------- */
.fukidashi-block {
	margin: 1.6em 0;
}
.fukidashi__inner {
	display: flex;
	align-items: flex-start;
	gap: 16px;
}
.fukidashi--right .fukidashi__inner {
	flex-direction: row-reverse;
}
.fukidashi__avatar {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 6px;
	flex-shrink: 0;
	width: 72px;
}
.fukidashi__avatar img {
	width: 64px;
	height: 64px;
	border-radius: 50%;
	object-fit: cover;
	border: 2px solid var(--portal-border, #e0e0e0);
}
.fukidashi__avatar-empty {
	width: 64px;
	height: 64px;
	border-radius: 50%;
	background: var(--portal-border, #e0e0e0);
}
.fukidashi__name {
	font-size: 11px;
	font-weight: 400;
	letter-spacing: 0.04em;
	text-align: center;
	line-height: 1.3;
}
.fukidashi__bubble {
	position: relative;
	background: var(--fukidashi-bg, #f0f0f0);
	border: 1px solid var(--fukidashi-border, #e0e0e0);
	border-radius: 8px;
	padding: 14px 18px;
	flex: 0 0 64%;
	min-width: 0;
}
.fukidashi__bubble p {
	margin: 0;
	font-size: 14px;
	line-height: 1.8;
}
.fukidashi--left .fukidashi__bubble::before {
	content: '';
	position: absolute;
	left: -9px;
	top: 18px;
	border-top: 8px solid transparent;
	border-bottom: 8px solid transparent;
	border-right: 9px solid var(--fukidashi-border, #e0e0e0);
}
.fukidashi--left .fukidashi__bubble::after {
	content: '';
	position: absolute;
	left: -8px;
	top: 18px;
	border-top: 8px solid transparent;
	border-bottom: 8px solid transparent;
	border-right: 9px solid var(--fukidashi-bg, #f0f0f0);
}
.fukidashi--right .fukidashi__bubble::before {
	content: '';
	position: absolute;
	right: -9px;
	top: 18px;
	border-top: 8px solid transparent;
	border-bottom: 8px solid transparent;
	border-left: 9px solid var(--fukidashi-border, #e0e0e0);
}
.fukidashi--right .fukidashi__bubble::after {
	content: '';
	position: absolute;
	right: -8px;
	top: 18px;
	border-top: 8px solid transparent;
	border-bottom: 8px solid transparent;
	border-left: 9px solid var(--fukidashi-bg, #f0f0f0);
}
.fukidashi--wide .fukidashi__bubble {
	flex: 1 1 0%;
}
.fukidashi--compact .fukidashi__bubble {
	flex: 0 0 40%;
}
.fukidashi__avatar-icon {
	width: 64px;
	height: 64px;
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	overflow: hidden;
}
.fukidashi__avatar-icon img {
	width: 48px;
	height: 48px;
	filter: brightness(0) invert(1);
	opacity: 0.85;
	border: none;
}
.fukidashi-group {
	margin: 1.6em 0;
}
.fukidashi-group .fukidashi-block {
	margin: 0;
}
.fukidashi-group .fukidashi-block + .fukidashi-block {
	margin-top: 8px;
}
@media (max-width: 600px) {
	.fukidashi__avatar {
		width: 48px;
	}
	.fukidashi__avatar img {
		width: 40px;
		height: 40px;
	}
	.fukidashi__avatar-empty {
		width: 40px;
		height: 40px;
	}
	.fukidashi__avatar-icon {
		width: 40px;
		height: 40px;
	}
	.fukidashi__avatar-icon img {
		width: 30px;
		height: 30px;
	}
	.fukidashi__inner {
		gap: 10px;
	}
	.fukidashi__name {
		display: none;
	}
	.fukidashi__bubble {
		padding: 10px 14px;
		border-radius: 18px;
	}
	.fukidashi--left .fukidashi__bubble::before,
	.fukidashi--left .fukidashi__bubble::after,
	.fukidashi--right .fukidashi__bubble::before,
	.fukidashi--right .fukidashi__bubble::after {
		display: none;
	}
}

/* --- Profile Card Block ------------------------------------------ */
.hm-profile-card {
	display: flex;
	align-items: flex-start;
	gap: 24px;
	padding: 24px;
	border: 1px solid var(--portal-border, #e0e0e0);
	border-radius: 4px;
	margin: 2em 0;
}
.hm-profile--vertical {
	flex-direction: column;
	align-items: center;
	text-align: center;
}
.hm-profile__avatar-wrap {
	flex-shrink: 0;
}
.hm-profile__avatar {
	width: 80px;
	height: 80px;
	border-radius: 50%;
	object-fit: cover;
	border: 2px solid var(--portal-border, #e0e0e0);
	display: block;
}
.hm-profile__avatar--empty {
	background: var(--portal-border, #e0e0e0);
}
.hm-profile__body {
	flex: 1;
	min-width: 0;
}
.hm-profile__name {
	margin: 0 0 2px;
	font-size: 16px;
	font-weight: 700;
	line-height: 1.4;
}
.hm-profile__role {
	margin: 0 0 12px;
	font-size: 11px;
	letter-spacing: 0.08em;
	color: var(--portal-muted, rgba(26,26,26,0.5));
}
.hm-profile__bio {
	font-size: 13px;
	line-height: 1.8;
	color: var(--portal-text, #1a1a1a);
}
.hm-profile__bio p { margin: 0 0 0.6em; }
.hm-profile__bio p:last-child { margin-bottom: 0; }
.hm-profile__links {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin: 12px 0 0;
	padding: 0;
	list-style: none;
}
.hm-profile__link {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	font-size: 12px;
	color: var(--portal-text, #1a1a1a);
	text-decoration: none;
	padding: 4px 10px;
	border: 1px solid var(--portal-border, #e0e0e0);
	border-radius: 2px;
	transition: border-color 0.15s;
}
.hm-profile__link:hover { border-color: #999; }
@media (max-width: 480px) {
	.hm-profile-card { flex-direction: column; }
	.hm-profile__avatar-wrap { align-self: center; }
}

/* --- SNS Share Buttons ------------------------------------------- */
.hm-share {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 16px;
	padding: 24px 0;
	margin: 32px 0;
}
.hm-share__label {
	margin: 0;
	font-size: 11px;
	letter-spacing: 0.12em;
	font-weight: 600;
	text-transform: uppercase;
	color: var(--portal-muted, rgba(26,26,26,0.5));
	flex-shrink: 0;
}
.hm-share__btns {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}
.hm-share__btn {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 7px 14px;
	border: 1px solid var(--portal-muted, #999);
	border-radius: 3px;
	font-size: 12px;
	font-weight: 500;
	text-decoration: none;
	color: var(--portal-text, #1a1a1a);
	background: transparent;
	cursor: pointer;
	transition: border-color 0.15s, background 0.15s;
	line-height: 1;
}
.hm-share__btn:hover { border-color: var(--portal-text, #1a1a1a); }
.hm-share__btn--x:hover { border-color: currentColor; }
.hm-share__btn--copy.is-copied { border-color: var(--portal-accent, #1a1a1a); }
.hm-share__btn .material-symbols-outlined { font-size: 15px; }

/* --- Breadcrumb --------------------------------------------------- */
.hm-breadcrumb {
	max-width: var(--portal-content-max, 1100px);
	margin: 0 auto;
	padding: 12px clamp(20px, 6vw, 80px);
}
.hm-breadcrumb__list {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0;
	margin: 0;
	padding: 0;
	list-style: none;
}
.hm-breadcrumb__item {
	display: flex;
	align-items: center;
	font-size: 11px;
	color: var(--portal-muted, rgba(26,26,26,0.5));
	min-width: 0;
}
.hm-breadcrumb__item--current {
	color: var(--portal-text, #1a1a1a);
}
@media (max-width: 600px) {
	.hm-breadcrumb__item--current {
		white-space: nowrap;
		overflow: hidden;
		text-overflow: ellipsis;
		max-width: 60vw;
	}
}
.hm-breadcrumb__link {
	color: inherit;
	text-decoration: none;
	white-space: nowrap;
}
.hm-breadcrumb__link:hover { text-decoration: underline; }
.hm-breadcrumb__sep {
	margin: 0 6px;
	opacity: 0.5;
	flex-shrink: 0;
}

/* --- 404 Page ---------------------------------------------------- */
.error-404 {
	padding: 80px 0 120px;
}
.error-404__inner {
	max-width: 600px;
	margin: 0 auto;
	padding: 0 clamp(20px, 5vw, 40px);
	text-align: center;
}
.error-404__code {
	margin: 0 0 16px;
	font-size: clamp(80px, 15vw, 140px);
	font-weight: 700;
	line-height: 1;
	letter-spacing: 0;
	color: var(--portal-border, #e0e0e0);
}
.error-404__title {
	margin: 0 0 12px;
	font-size: 22px;
	font-weight: 700;
}
.error-404__message {
	margin: 0 0 32px;
	font-size: 14px;
	color: var(--portal-muted, rgba(26,26,26,0.6));
}
.error-404__actions {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 16px;
}
.error-404__btn {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 12px 24px;
	border: 1px solid var(--portal-text, #1a1a1a);
	color: var(--portal-text, #1a1a1a);
	text-decoration: none;
	font-size: 13px;
	font-weight: 600;
	letter-spacing: 0.06em;
	transition: background 0.15s, color 0.15s;
}
.error-404__btn:hover {
	background: var(--portal-text, #1a1a1a);
	color: #fff;
}
.error-404__search {
	display: flex;
	width: 100%;
	max-width: 400px;
	border: 1px solid var(--portal-border, #e0e0e0);
}
.error-404__search input {
	flex: 1;
	padding: 10px 14px;
	border: none;
	outline: none;
	font-size: 14px;
	background: transparent;
}
.error-404__search button {
	padding: 10px 14px;
	border: none;
	background: none;
	cursor: pointer;
	color: var(--portal-text, #1a1a1a);
	display: flex;
	align-items: center;
}

/* --- Landing Page Template --------------------------------------- */
.lp-page {
	background: #fff;
}
/* ── LP Header ── */
.lp-header {
	padding: 16px 0;
	border-bottom: 1px solid var(--portal-border, #e0e0e0);
}
.lp-header__inner {
	max-width: var(--portal-content-max, 1100px);
	margin: 0 auto;
	padding: 0 clamp(20px, 5vw, 60px);
	display: flex;
	align-items: center;
	gap: 24px;
}
.lp-header__brand {
	margin: 0;
	flex-shrink: 0;
}
.lp-header__brand a {
	text-decoration: none;
	color: inherit;
}
.lp-header__name {
	font-size: 18px;
	font-weight: 700;
	letter-spacing: 0.05em;
}
.lp-header__logo {
	height: 32px;
	width: auto;
}

/* Layout: logo-left (default) — logo left, nav + CTA right */
.lp-header--logo-left .lp-header__nav {
	margin-left: auto;
}
.lp-header--logo-left .lp-header__cta {
	flex-shrink: 0;
}

/* Layout: logo-center — centered logo, nav below or hidden */
.lp-header--logo-center .lp-header__inner {
	flex-direction: column;
	text-align: center;
}
.lp-header--logo-center .lp-header__nav {
	margin-left: 0;
}

/* Layout: minimal — back link only */
.lp-header--minimal .lp-header__inner {
	justify-content: flex-start;
}
.lp-header__back {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	text-decoration: none;
	color: inherit;
	font-size: 14px;
	font-weight: 500;
}
.lp-header__back:hover {
	opacity: 0.7;
}

/* LP Nav */
.lp-header__nav-list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-wrap: nowrap;
	gap: 20px;
	font-size: 14px;
}
.lp-header__nav-list li {
	white-space: nowrap;
}
.lp-header__nav-list a {
	text-decoration: none;
	color: inherit;
}
.lp-header__nav-list a:hover {
	opacity: 0.7;
}

/* LP Nav Style: inline (default) — no extra rules needed, base styles apply */

/* LP Nav Style: wrap — allow 2-row wrapping */
.lp-header__nav--wrap .lp-header__nav-list {
	flex-wrap: wrap;
}

/* LP Nav Style: box — card/button style links */
.lp-header__nav--box .lp-header__nav-list {
	flex-wrap: wrap;
	gap: 8px;
}
.lp-header__nav--box .lp-header__nav-list a {
	display: block;
	padding: 8px 16px;
	border: 1px solid currentColor;
	border-radius: 4px;
	font-size: 13px;
	transition: opacity 0.2s;
}
.lp-header__nav--box .lp-header__nav-list a:hover {
	opacity: 0.7;
}

/* LP Nav Style: burger (PC) — hide nav, show burger on all widths */
.lp-header__nav--burger {
	display: none;
	width: 100%;
	order: 10;
}
.lp-header__nav--burger.is-open {
	display: block;
}
.lp-header__nav--burger .lp-header__nav-list {
	flex-direction: column;
	gap: 0;
	padding: 8px 0;
}
.lp-header__nav--burger .lp-header__nav-list li {
	border-top: 1px solid var(--portal-border, rgba(0,0,0,0.1));
}
.lp-header__nav--burger .lp-header__nav-list a {
	display: block;
	padding: 10px 0;
}
/* Show burger button when nav style is burger (PC) */
.lp-header--nav-burger .lp-header__inner {
	flex-wrap: wrap;
}
.lp-header--nav-burger .lp-header__burger {
	display: flex;
}

/* LP Hamburger button */
.lp-header__burger {
	display: none;
	background: none;
	border: none;
	padding: 6px;
	cursor: pointer;
	flex-direction: column;
	justify-content: center;
	gap: 5px;
	margin-left: auto;
}
.lp-header__burger-line {
	display: block;
	width: 22px;
	height: 2px;
	background: currentColor;
	border-radius: 1px;
	transition: transform 0.25s, opacity 0.25s;
}
.lp-header__burger[aria-expanded="true"] .lp-header__burger-line:nth-child(1) {
	transform: translateY(7px) rotate(45deg);
}
.lp-header__burger[aria-expanded="true"] .lp-header__burger-line:nth-child(2) {
	opacity: 0;
}
.lp-header__burger[aria-expanded="true"] .lp-header__burger-line:nth-child(3) {
	transform: translateY(-7px) rotate(-45deg);
}

/* SP: all styles collapse to hamburger */
@media (max-width: 768px) {
	.lp-header__inner {
		flex-wrap: wrap;
	}
	.lp-header__burger {
		display: flex;
	}
	.lp-header__nav {
		display: none;
		width: 100%;
		order: 10;
	}
	.lp-header__nav.is-open {
		display: block;
	}
	.lp-header__nav-list {
		flex-direction: column;
		flex-wrap: nowrap;
		gap: 0;
		padding: 8px 0;
	}
	.lp-header__nav-list li {
		border-top: 1px solid var(--portal-border, rgba(255,255,255,0.15));
	}
	.lp-header__nav-list a {
		display: block;
		padding: 10px 0;
		border: none;
		border-radius: 0;
	}
	.lp-header__cta {
		order: 5;
	}
}

/* CTA Button */
.lp-header__cta {
	display: inline-block;
	padding: 8px 24px;
	font-size: 14px;
	font-weight: 600;
	text-decoration: none;
	border-radius: 4px;
	transition: opacity 0.2s;
	white-space: nowrap;
}
.lp-header__cta:hover {
	opacity: 0.85;
}
.lp-header__cta--primary {
	background: var(--lp-cta-color, var(--portal-accent, #1a1a1a));
	color: #fff;
}
.lp-header__cta--outline {
	background: transparent;
	border: 1.5px solid var(--lp-cta-color, currentColor);
	color: var(--lp-cta-color, inherit);
}
.lp-header__cta--ghost {
	background: transparent;
	color: var(--lp-cta-color, inherit);
	padding: 8px 12px;
}
.lp-main {
	--lp-content-max: var(--portal-content-max, 1100px);
	max-width: var(--lp-content-max);
	margin: 0 auto;
	padding: 0 clamp(20px, 5vw, 60px);
}
.lp-footer {
	margin-top: 80px;
	padding: 32px 0;
	border-top: 1px solid var(--portal-border, #e0e0e0);
	text-align: center;
}
.lp-footer__copy {
	margin: 0;
	font-size: 11px;
	letter-spacing: 0.08em;
	color: var(--portal-muted, rgba(26,26,26,0.5));
}

/* LP ページ内の全幅ブロックはコンテナを突き抜ける */
.lp-main > .alignfull,
.lp-main > .wp-block-group.alignfull,
.lp-main > .hm-fullwide,
.lp-main > .hm-hero,
.lp-main > .hm-slider {
	max-width: none;
	width: 100vw;
	margin-left: calc(50% - 50vw);
	margin-right: calc(50% - 50vw);
	padding-left: 0;
	padding-right: 0;
}

/* --- Caption Block ----------------------------------------------- */
.hm-caption-block {
	margin: 2em 0;
	padding: 0;
}
.hm-caption__text {
	display: block;
	margin-top: 8px;
	font-size: 12px;
	line-height: 1.6;
	color: var(--portal-muted, rgba(26,26,26,0.6));
}
.hm-caption__text--left   { text-align: left; }
.hm-caption__text--center { text-align: center; }
.hm-caption__text--right  { text-align: right; }

/* --- Hero Block --------------------------------------------------- */
.hm-hero {
	position: relative;
	display: flex;
	align-items: center;
	margin: 0 0 2em;
	overflow: hidden;
}
.hm-hero--align-left   { justify-content: flex-start; }
.hm-hero--align-center { justify-content: center; }
.hm-hero--align-right  { justify-content: flex-end; }

.hm-hero__overlay {
	position: absolute;
	inset: 0;
	pointer-events: none;
}
.hm-hero__content {
	position: relative;
	z-index: 1;
	width: min(700px, 90%);
	padding: 40px 32px;
}
.hm-hero__content--full {
	width: 100%;
}
.hm-hero--align-left   .hm-hero__content { text-align: left; }
.hm-hero--align-center .hm-hero__content { text-align: center; }
.hm-hero--align-right  .hm-hero__content { text-align: right; }

.hm-hero__heading {
	margin: 0 0 0.5em;
	font-size: clamp(24px, 4vw, 48px);
	font-weight: 700;
	line-height: 1.2;
	letter-spacing: 0.02em;
	color: inherit;
}
.hm-hero__sub {
	margin: 0 0 1.5em;
	font-size: 15px;
	line-height: 1.8;
	color: inherit;
	opacity: 0.9;
}
.hm-hero__btn {
	display: inline-block;
	padding: 12px 32px;
	background: transparent;
	border: 2px solid currentColor;
	color: inherit;
	font-size: 13px;
	font-weight: 600;
	letter-spacing: 0.12em;
	text-decoration: none;
	transition: background 0.2s, color 0.2s;
}
.hm-hero__btn:hover {
	background: currentColor;
	color: var(--portal-accent, #1a1a1a);
}

/* --- Slider ------------------------------------------------------ */
.hm-slider {
	position: relative;
	overflow: hidden;
	margin: 0 0 2em;
}
.hm-slider__track {
	display: flex;
	transition: transform 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94);
	will-change: transform;
}
.hm-slide {
	min-width: 100%;
	position: relative;
	min-height: 400px;
	display: flex;
	align-items: center;
}
.hm-slide--align-left   { justify-content: flex-start; }
.hm-slide--align-center { justify-content: center; }
.hm-slide--align-right  { justify-content: flex-end; }
.hm-slide__overlay {
	position: absolute;
	inset: 0;
	pointer-events: none;
}
.hm-slide__content {
	position: relative;
	z-index: 1;
	width: min(600px, 90%);
	padding: 40px 32px;
}
.hm-slide--align-left   .hm-slide__content { text-align: left; }
.hm-slide--align-center .hm-slide__content { text-align: center; }
.hm-slide--align-right  .hm-slide__content { text-align: right; }
.hm-slide__heading {
	margin: 0 0 0.5em;
	font-size: clamp(22px, 3.5vw, 42px);
	font-weight: 700;
	line-height: 1.2;
	color: inherit;
}
.hm-slide__sub {
	margin: 0 0 1.5em;
	font-size: 14px;
	line-height: 1.8;
	color: inherit;
	opacity: 0.9;
}
.hm-slide__btn {
	display: inline-block;
	padding: 10px 28px;
	border: 2px solid currentColor;
	color: inherit;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.12em;
	text-decoration: none;
	transition: background 0.2s, color 0.2s;
}
.hm-slide__btn:hover {
	background: currentColor;
	color: var(--portal-accent, #1a1a1a);
}
.hm-slider__prev,
.hm-slider__next {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	z-index: 10;
	background: rgba(255,255,255,0.15);
	border: none;
	color: #fff;
	cursor: pointer;
	padding: 10px 8px;
	display: flex;
	align-items: center;
	transition: background 0.2s;
}
.hm-slider__prev:hover,
.hm-slider__next:hover {
	background: rgba(255,255,255,0.3);
}
.hm-slider__prev { left: 12px; }
.hm-slider__next { right: 12px; }
.hm-slider__prev .material-symbols-outlined,
.hm-slider__next .material-symbols-outlined {
	font-size: 24px;
}
.hm-slider__dots {
	position: absolute;
	bottom: 16px;
	left: 50%;
	transform: translateX(-50%);
	display: flex;
	gap: 6px;
	z-index: 10;
}
.hm-slider__dot {
	width: 8px;
	height: 8px;
	border-radius: 50%;
	border: none;
	background: rgba(255,255,255,0.5);
	cursor: pointer;
	padding: 0;
	transition: background 0.2s, transform 0.2s;
}
.hm-slider__dot.is-active {
	background: #fff;
	transform: scale(1.3);
}

/* --- Responsive Image Block -------------------------------------- */
.hm-responsive-image {
	margin: 1.5em 0;
}
.hm-responsive-image picture {
	display: block;
}
.hm-responsive-image img {
	display: block;
	max-width: 100%;
	height: auto;
}
.hm-responsive-image__caption {
	margin-top: 0.5em;
	font-size: 0.85em;
	color: #666;
	text-align: center;
}

/* --- Responsive Layout Block ------------------------------------- */
.hm-responsive-layout > .hm-responsive-layout__slot--sp {
	display: none;
}

/* --- Slider: Book (portrait) ------------------------------------- */
.hm-slider--book {
	max-width: 480px;
	margin-left: auto;
	margin-right: auto;
}
.hm-slider--book .hm-slide {
	min-height: 480px;
	align-items: flex-end;
}
@supports (aspect-ratio: 3/4) {
	.hm-slider--book .hm-slide { min-height: 0; aspect-ratio: 3 / 4; }
}
.hm-slider--book .hm-slide__content {
	width: 100%;
	padding: 24px 20px;
	background: linear-gradient(to top, rgba(0,0,0,.55) 0%, transparent 100%);
}
.hm-slider--book .hm-slide__heading {
	font-size: clamp(18px, 3vw, 28px);
}
.hm-slider--book .hm-slide__sub {
	font-size: 13px;
}
.hm-slide__caption {
	position: absolute;
	bottom: 8px;
	right: 12px;
	font-size: 11px;
	color: rgba(255, 255, 255, 0.6);
	margin: 0;
	pointer-events: none;
}
@media (max-width: 720px) {
	.hm-slider--book { max-width: 360px; }
}

/* --- Mobile Bottom Navigation ------------------------------------ */
.hm-bottom-nav {
	display: none;
}
.hm-mobile-menu {
	display: none;
}
.hm-search-panel {
	display: none;
}
@media (max-width: 640px) {
	html,
	body,
	body.custom-background {
		max-width: 100%;
		overflow-x: hidden;
	}
	.portal-banner-group {
		grid-template-columns: minmax(0, 1fr) !important;
		width: 100%;
	}
	.portal-banner {
		width: 100%;
	}
	.novel-head {
		width: 100%;
		margin-left: 0;
		margin-right: 0;
	}
	.hm-bottom-nav {
		display: flex;
		position: fixed;
		bottom: 0;
		left: 0;
		right: 0;
		z-index: 900;
		background: color-mix(in srgb, var(--portal-bg, #fff) 88%, transparent);
		backdrop-filter: blur(18px) saturate(1.2);
		-webkit-backdrop-filter: blur(18px) saturate(1.2);
		border-top: 1px solid var(--portal-border, #e0e0e0);
		height: 56px;
		padding-bottom: env(safe-area-inset-bottom, 0);
		transform: translateY(0);
		transition: transform 0.22s ease, box-shadow 0.22s ease;
		will-change: transform;
		box-shadow: 0 -6px 18px rgba(0, 0, 0, 0.04);
	}
	body:has(.hm-bottom-nav) .site-main {
		padding-bottom: calc(64px + env(safe-area-inset-bottom, 0));
	}
	.hm-bottom-nav.is-hidden {
		transform: translateY(calc(100% + env(safe-area-inset-bottom, 0)));
	}
	@media (prefers-reduced-motion: reduce) {
		.hm-bottom-nav {
			transition: none;
		}
	}
	.hm-bottom-nav__item {
		flex: 1;
		display: flex;
		flex-direction: column;
		align-items: center;
		justify-content: center;
		gap: 2px;
		text-decoration: none;
		color: var(--portal-text, #1a1a1a);
		font-size: 9px;
		letter-spacing: 0.06em;
		border: none;
		background: none;
		cursor: pointer;
		padding: 0;
		transition: color 0.15s;
	}
	.hm-bottom-nav__item:hover,
	.hm-bottom-nav__item.is-active {
		color: var(--portal-accent, #1a1a1a);
	}
	.hm-bottom-nav__item .material-symbols-outlined {
		font-size: 22px;
	}
	.hm-bottom-nav__item span:not(.material-symbols-outlined) {
		display: block;
		max-width: 100%;
		overflow: hidden;
		text-overflow: ellipsis;
		white-space: nowrap;
	}
	/* ボトムナビ分のスペースをフッターに確保 */
	body:has(.hm-bottom-nav) .site-footer {
		display: none;
	}
	/* モバイルメニュードロワー */
	.hm-mobile-menu {
		display: none;
		position: fixed;
		inset: 0;
		z-index: 950;
		bottom: calc(56px + env(safe-area-inset-bottom, 0));
		background: color-mix(in srgb, var(--portal-bg, #fff) var(--portal-mobile-glass-overlay-mix, 24%), transparent);
		backdrop-filter: blur(var(--portal-mobile-glass-blur, 28px)) saturate(var(--portal-mobile-glass-saturate, 1.4));
		-webkit-backdrop-filter: blur(var(--portal-mobile-glass-blur, 28px)) saturate(var(--portal-mobile-glass-saturate, 1.4));
	}
	.hm-mobile-menu.is-open {
		display: flex;
		flex-direction: column;
	}
	.hm-mobile-menu__panel {
		flex: 1;
		position: relative;
		background: color-mix(in srgb, var(--portal-bg, #fff) var(--portal-mobile-glass-panel-mix, 18%), transparent);
		backdrop-filter: blur(var(--portal-mobile-glass-blur, 28px)) saturate(var(--portal-mobile-glass-saturate, 1.4));
		-webkit-backdrop-filter: blur(var(--portal-mobile-glass-blur, 28px)) saturate(var(--portal-mobile-glass-saturate, 1.4));
		padding: calc(72px + env(safe-area-inset-top, 0)) 24px calc(88px + env(safe-area-inset-bottom, 0));
		overflow-y: auto;
	}
	.hm-mobile-menu__close {
		display: flex;
		align-items: center;
		justify-content: center;
		position: absolute;
		top: calc(14px + env(safe-area-inset-top, 0));
		right: 14px;
		width: 44px;
		height: 44px;
		background: color-mix(in srgb, var(--portal-bg, #fff) 42%, transparent);
		border: none;
		border-radius: 50%;
		cursor: pointer;
		color: var(--portal-text, #1a1a1a);
		padding: 0;
	}
	.hm-mobile-menu__close span:not(.material-symbols-outlined) {
		display: none;
	}
	.hm-mobile-menu__close .material-symbols-outlined {
		font-size: 24px;
		line-height: 1;
	}
	.hm-mobile-menu__nav {
		list-style: none;
		margin: 0;
		padding: 0;
	}
	.hm-mobile-menu__nav li {
		border-bottom: 1px solid color-mix(in srgb, var(--portal-text, #1a1a1a) 14%, transparent);
	}
	.hm-mobile-menu__nav li:last-child {
		border-bottom: none;
	}
	.hm-mobile-menu__nav a {
		display: block;
		margin: 4px 0;
		padding: 14px 12px;
		font-size: 15px;
		color: var(--portal-text, #1a1a1a);
		background: color-mix(in srgb, var(--portal-bg, #fff) 34%, transparent);
		text-decoration: none;
	}
	/* 検索パネル（ボトムシート） */
	.hm-search-panel {
		display: none;
		position: fixed;
		inset: 0;
		z-index: 950;
		bottom: calc(56px + env(safe-area-inset-bottom, 0));
		background: color-mix(in srgb, var(--portal-bg, #fff) var(--portal-mobile-glass-overlay-mix, 24%), transparent);
		backdrop-filter: blur(var(--portal-mobile-glass-blur, 28px)) saturate(var(--portal-mobile-glass-saturate, 1.4));
		-webkit-backdrop-filter: blur(var(--portal-mobile-glass-blur, 28px)) saturate(var(--portal-mobile-glass-saturate, 1.4));
	}
	.hm-search-panel.is-open {
		display: flex;
		flex-direction: column;
	}
	.hm-search-panel__panel {
		flex: 1;
		position: relative;
		background: color-mix(in srgb, var(--portal-bg, #fff) var(--portal-mobile-glass-panel-mix, 18%), transparent);
		backdrop-filter: blur(var(--portal-mobile-glass-blur, 28px)) saturate(var(--portal-mobile-glass-saturate, 1.4));
		-webkit-backdrop-filter: blur(var(--portal-mobile-glass-blur, 28px)) saturate(var(--portal-mobile-glass-saturate, 1.4));
		padding: calc(72px + env(safe-area-inset-top, 0)) 24px calc(88px + env(safe-area-inset-bottom, 0));
		overflow-y: auto;
	}
	.hm-search-panel__close {
		display: flex;
		align-items: center;
		justify-content: center;
		position: absolute;
		top: calc(14px + env(safe-area-inset-top, 0));
		right: 14px;
		width: 44px;
		height: 44px;
		background: color-mix(in srgb, var(--portal-bg, #fff) 42%, transparent);
		border: none;
		border-radius: 50%;
		cursor: pointer;
		color: var(--portal-text, #1a1a1a);
		padding: 0;
	}
	.hm-search-panel__close span:not(.material-symbols-outlined) {
		display: none;
	}
	.hm-search-panel__close .material-symbols-outlined {
		font-size: 24px;
		line-height: 1;
	}
	.hm-search-panel__form {
		margin-bottom: 20px;
	}
	.hm-search-panel__input-wrap {
		display: flex;
		align-items: center;
		gap: 8px;
		background: color-mix(in srgb, var(--portal-bg, #fff) 42%, transparent);
		border: 1px solid color-mix(in srgb, var(--portal-text, #1a1a1a) 12%, transparent);
		border-radius: 8px;
		padding: 0 12px;
	}
	.hm-search-panel__icon {
		font-size: 20px;
		color: var(--portal-muted, rgba(26,26,26,0.4));
		flex-shrink: 0;
	}
	.hm-search-panel__input {
		flex: 1;
		border: none;
		background: transparent;
		padding: 12px 0;
		font-size: 15px;
		outline: none;
		color: var(--portal-text, #1a1a1a);
		font-family: inherit;
	}
	.hm-search-panel__input::placeholder {
		color: var(--portal-muted, rgba(26,26,26,0.4));
	}
	.hm-search-panel__section {
		margin-bottom: 16px;
	}
	.hm-search-panel__section:last-child {
		margin-bottom: 0;
	}
	.hm-search-panel__heading {
		font-size: 12px;
		font-weight: 700;
		color: var(--portal-muted, rgba(26,26,26,0.5));
		margin: 0 0 8px;
		letter-spacing: 0.08em;
	}
	.hm-search-panel__tags {
		display: flex;
		flex-wrap: wrap;
		gap: 8px;
	}
	.hm-search-panel__tag {
		display: inline-block;
		padding: 6px 12px;
		font-size: 13px;
		line-height: 1.3;
		color: var(--portal-text, #1a1a1a);
		background: color-mix(in srgb, var(--portal-bg, #fff) 34%, transparent);
		border: 1px solid color-mix(in srgb, var(--portal-text, #1a1a1a) 12%, transparent);
		border-radius: 2px;
		text-decoration: none;
		transition: background 0.15s;
	}
	.hm-search-panel__tag:hover {
		background: color-mix(in srgb, var(--portal-bg, #fff) 52%, transparent);
	}
	body.rs-bg-dark .hm-bottom-nav,
	body.rs-bg-dark .hm-mobile-menu,
	body.rs-bg-dark .hm-search-panel {
		--portal-bg: #161616;
		--portal-text: #e8e4dc;
		--portal-muted: rgba(232, 228, 220, 0.62);
		--portal-border: rgba(232, 228, 220, 0.18);
	}
}

/* =============================================================
   Tabs Block
   ============================================================= */
.hm-tabs {
	margin: 2em 0;
}
.hm-tabs__nav {
	display: flex;
	gap: 0;
	border-bottom: 1px solid var(--portal-border, #e0e0e0);
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
}
.hm-tabs__btn {
	flex-shrink: 0;
	padding: 10px 20px;
	border: none;
	background: transparent;
	font-size: 13px;
	font-weight: 700;
	letter-spacing: 0.06em;
	color: var(--portal-text, #1a1a1a);
	opacity: 0.5;
	cursor: pointer;
	border-bottom: 2px solid transparent;
	margin-bottom: -1px;
	transition: opacity 0.2s, border-color 0.2s;
}
.hm-tabs__btn:hover {
	opacity: 0.8;
}
.hm-tabs__btn--active {
	opacity: 1;
	border-bottom-color: var(--portal-accent, #1a1a1a);
}
.hm-tabs__panels {
	padding: 20px 0;
}
.hm-tabs__panel {
	display: none;
}
.hm-tabs__panel:first-child,
.hm-tabs__panel:not(.hm-tabs__panel--hidden) {
	display: block;
}
.hm-tabs__panel--hidden {
	display: none;
}

/* ===== Hero Block Patterns ========================================= */
.hm-hero {
	position: relative;
	padding: 120px 24px;
	text-align: center;
}
@media (max-width: 720px) {
	.hm-hero { padding: 64px 16px; }
}
.hm-hero__eyebrow {
	margin: 0 0 12px;
	font-size: 13px;
	font-weight: 300;
	letter-spacing: 0.15em;
	text-transform: uppercase;
}
.hm-hero__title {
	margin: 0 0 16px;
	font-size: clamp(36px, 7vw, 64px);
	font-weight: 700;
	line-height: 1.15;
	letter-spacing: 0.01em;
}
.hm-hero__lede {
	margin: 0 auto;
	font-size: 15px;
	line-height: 1.8;
	max-width: 48ch;
}
.hm-theme-lp-hero {
	box-sizing: border-box;
	min-height: min(680px, calc(100svh - 72px));
	display: grid;
	align-content: center;
	justify-items: center;
	padding-inline: clamp(20px, 6vw, 72px);
}
.hm-theme-lp-hero .hm-hero__title {
	font-size: clamp(42px, 7.5vw, 96px);
	max-width: min(100%, 14ch);
	overflow-wrap: anywhere;
}
.hm-theme-lp-hero .hm-hero__lede {
	max-width: min(100%, 68ch);
}
.hm-theme-lp-actions {
	justify-content: flex-start;
	margin-top: 18px;
}
.hm-theme-lp-actions .wp-block-button__link {
	min-width: min(220px, 100%);
	padding-inline: 22px !important;
}
@media (max-width: 520px) {
	.hm-theme-lp-actions {
		align-items: stretch;
	}
	.hm-theme-lp-actions .wp-block-button,
	.hm-theme-lp-actions .wp-block-button__link {
		width: 100%;
	}
}

/* Dark */
.hm-hero--dark {
	background: #1a1a1a;
	color: #fff;
}
.hm-hero--dark .hm-hero__eyebrow { color: #a2c4c9; }
.hm-hero--dark .hm-hero__lede { color: #ccc; }

/* Minimal */
.hm-hero--minimal {
	background: #fff;
	color: #1a1a1a;
}
.hm-hero--minimal .hm-hero__eyebrow { color: rgba(26,26,26,0.5); }
.hm-hero--minimal .hm-hero__lede { color: rgba(26,26,26,0.7); }

/* Accent */
.hm-hero--accent {
	background: var(--portal-accent, #1a1a1a);
	color: #fff;
}
.hm-hero--accent .hm-hero__eyebrow { opacity: 0.7; }
.hm-hero--accent .hm-hero__lede { opacity: 0.85; }

/* Image (Cover block) */
.hm-hero--image .wp-block-cover__inner-container { text-align: center; }
.hm-hero--image .hm-hero__eyebrow { color: rgba(255,255,255,0.7); }
.hm-hero--image .hm-hero__title { color: #fff; }
.hm-hero--image .hm-hero__lede { color: rgba(255,255,255,0.85); }

/* Gradient */
.hm-hero--gradient {
	background: linear-gradient(135deg, #1a1a1a 0%, #2c3e50 50%, #34495e 100%);
	color: #fff;
}
.hm-hero--gradient .hm-hero__eyebrow { color: rgba(255,255,255,0.6); }
.hm-hero--gradient .hm-hero__lede { color: rgba(255,255,255,0.8); }

/* Split (2-column: text + image) */
.hm-hero--split {
	display: flex;
	align-items: center;
	gap: 0;
	text-align: left;
	padding: 0;
	background: #fff;
	color: #1a1a1a;
}
.hm-hero--split .hm-hero__text {
	flex: 1;
	padding: 80px 48px;
	min-width: 0;
}
.hm-hero--split .hm-hero__media {
	flex: 1;
	min-height: 400px;
	background: #f0f0f0;
	overflow: hidden;
}
.hm-hero--split .hm-hero__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}
.hm-hero--split .hm-hero__eyebrow { color: rgba(26,26,26,0.5); }
.hm-hero--split .hm-hero__lede { max-width: none; }
.hm-hero--split .hm-hero__title {
	font-size: clamp(28px, 5vw, 48px);
}
@media (max-width: 720px) {
	.hm-hero--split {
		flex-direction: column;
	}
	.hm-hero--split .hm-hero__text {
		padding: 48px 24px;
		order: 2;
	}
	.hm-hero--split .hm-hero__media {
		min-height: 240px;
		order: 1;
		width: 100%;
	}
}

/* Left-aligned */
.hm-hero--left {
	text-align: left;
	background: #fff;
	color: #1a1a1a;
}
.hm-hero--left .hm-hero__lede { margin-left: 0; max-width: 48ch; }
.hm-hero--left .hm-hero__eyebrow { color: rgba(26,26,26,0.5); }

.hm-cookie-banner {
	display: none;
	position: fixed;
	bottom: 0;
	left: 0;
	width: 100%;
	background: rgba(26,26,26,0.95);
	color: #fff;
	z-index: 9000;
	padding: 16px;
	box-sizing: border-box;
}
.hm-cookie-banner__inner {
	max-width: 1200px;
	margin: 0 auto;
	display: flex;
	align-items: center;
	gap: 16px;
	flex-wrap: wrap;
}
.hm-cookie-banner__text {
	flex: 1;
	margin: 0;
	font-size: 0.875rem;
	line-height: 1.6;
}
.hm-cookie-banner__text a {
	color: #a2c4c9;
	text-decoration: underline;
}
.hm-cookie-banner__btn {
	flex-shrink: 0;
	background: #2f4f4f;
	color: #fff;
	border: none;
	border-radius: 4px;
	padding: 8px 20px;
	font-size: 0.875rem;
	cursor: pointer;
	white-space: nowrap;
}
.hm-cookie-banner__btn:hover {
	background: #3d6b6b;
}
.is-r18-gated .hm-cookie-banner { display: none; }

/* ============================================================
   R18 年齢確認ゲート
   ============================================================ */
.is-r18-gated .novel-body,
.is-r18-gated .post-single .novel-body,
.is-r18-gated .book-single__body {
	visibility: hidden;
}

.hm-r18-gate {
	position: fixed;
	inset: 0;
	z-index: 10000;
	background: rgba(0, 0, 0, 0.95);
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 1.5rem;
}

.hm-r18-gate__dialog {
	background: #fff;
	border-radius: 8px;
	padding: 2.5rem 2rem;
	max-width: 420px;
	width: 100%;
	text-align: center;
}

.hm-r18-gate__label {
	display: inline-block;
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	color: #fff;
	background: #C11920;
	border-radius: 4px;
	padding: 0.2em 0.7em;
	margin-bottom: 1rem;
}

.hm-r18-gate__title {
	font-size: 1.25rem;
	font-weight: 700;
	margin: 0 0 0.75rem;
	color: #1a1a1a;
}

.hm-r18-gate__body {
	font-size: 0.9rem;
	line-height: 1.7;
	color: #444;
	margin: 0 0 1.75rem;
}

.hm-r18-gate__actions {
	display: flex;
	flex-direction: column;
	gap: 0.75rem;
}

.hm-r18-gate__btn {
	display: block;
	width: 100%;
	padding: 0.8em 1.25em;
	border: none;
	border-radius: 6px;
	font-size: 0.95rem;
	font-weight: 600;
	cursor: pointer;
	transition: opacity 0.15s;
}

.hm-r18-gate__btn:hover {
	opacity: 0.82;
}

.hm-r18-gate__btn--ok {
	background: #2f4f4f;
	color: #fff;
}

.hm-r18-gate__btn--back {
	background: transparent;
	color: #888;
	border: 1px solid #ddd;
}

/* --- Slider: book-link variant ------------------------------ */
a.hm-slide--book-link {
	text-decoration: none;
	color: inherit;
	cursor: pointer;
}

/* =============================================================
   Book — Single & Archive
   ============================================================= */

/* --- Single: header ------------------------------------------ */
.book-single__header {
	border-bottom: 1px solid var(--portal-border, #e0e0e0);
	padding: 60px 0;
}
.book-single__header-inner {
	max-width: var(--portal-content-max, 1100px);
	margin: 0 auto;
	padding-left: clamp(20px, 6vw, 80px);
	padding-right: clamp(20px, 6vw, 80px);
	display: grid;
	grid-template-columns: 220px 1fr;
	gap: 48px;
	align-items: start;
}
@media (max-width: 720px) {
	.book-single__header-inner {
		grid-template-columns: 1fr;
		gap: 32px;
	}
}
.book-single__cover img {
	width: 100%;
	height: auto;
	display: block;
	border: 1px solid var(--portal-border, #e0e0e0);
}
.book-single__cover {
	max-width: 220px;
	min-width: 0;
}
.book-single__cover-placeholder {
	width: 100%;
	max-width: 220px;
}
.book-single__cover-caption {
	font-size: 11px;
	color: var(--portal-muted, rgba(26, 26, 26, 0.5));
	margin: 6px 0 0;
	text-align: right;
	line-height: 1.6;
	overflow-wrap: anywhere;
}
.book-single__eyebrow {
	font-size: 10px;
	font-weight: 300;
	letter-spacing: 0.3em;
	text-transform: uppercase;
	color: var(--portal-muted, rgba(26, 26, 26, 0.6));
	margin: 0 0 12px;
}
.book-single__title {
	font-size: clamp(20px, 3vw, 28px);
	font-weight: 700;
	line-height: 1.4;
	letter-spacing: 0.04em;
	margin: 0 0 20px;
	overflow-wrap: anywhere;
}
.book-single__meta {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	align-items: center;
	margin-bottom: 20px;
	font-size: 13px;
}
.book-single__pages {
	color: var(--portal-muted, rgba(26, 26, 26, 0.6));
}
.book-single__price {
	font-weight: 700;
	overflow-wrap: anywhere;
}
.book-single__genres {
	margin-top: 4px;
}

/* --- Single: body -------------------------------------------- */
.book-single__body {
	padding: 60px 0 120px;
	border-top: 1px solid var(--portal-border, #e0e0e0);
}
.book-single__body-inner {
	max-width: var(--portal-content-max, 1100px);
	margin: 0 auto;
	padding-left: clamp(20px, 6vw, 80px);
	padding-right: clamp(20px, 6vw, 80px);
}

/* --- Archive: layout ----------------------------------------- */
.book-archive__header {
	border-bottom: 1px solid var(--portal-border, #e0e0e0);
	padding: 60px 0 40px;
}
.book-archive__header-inner,
.book-archive__body-inner {
	max-width: var(--portal-content-max, 1100px);
	margin: 0 auto;
	padding-left: clamp(20px, 6vw, 80px);
	padding-right: clamp(20px, 6vw, 80px);
}
.book-archive__title {
	font-size: clamp(28px, 4vw, 40px);
	font-weight: 700;
	letter-spacing: 0.06em;
	margin: 0;
}
.book-archive__body {
	padding: 60px 0 120px;
}
.book-archive__grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 40px 32px;
}
@media (max-width: 960px) {
	.book-archive__grid {
		grid-template-columns: repeat(2, 1fr);
	}
}
@media (max-width: 600px) {
	.book-archive__grid {
		grid-template-columns: 1fr;
	}
}

/* --- Book card ----------------------------------------------- */
.book-card {
	display: flex;
	flex-direction: column;
	gap: 0;
	text-decoration: none;
	color: inherit;
	transition: opacity 0.3s ease;
	min-width: 0;
}
.book-card:hover,
.book-card:focus-visible {
	opacity: 0.75;
}
.book-card__cover {
	position: relative;
	aspect-ratio: 3 / 4;
	overflow: hidden;
	background: var(--portal-border, #e0e0e0);
	margin-bottom: 16px;
}
.book-card__cover img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}
.book-card__cover-placeholder {
	width: 100%;
	height: 100%;
}
.book-card__cover-caption {
	position: absolute;
	left: 8px;
	right: 8px;
	bottom: 8px;
	box-sizing: border-box;
	padding: 4px 6px;
	border-radius: 2px;
	font-size: 10px;
	line-height: 1.45;
	color: rgba(255, 255, 255, 0.9);
	background: rgba(0, 0, 0, 0.42);
	text-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);
	pointer-events: none;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
	overflow-wrap: anywhere;
}
.book-card__body {
	display: flex;
	flex-direction: column;
	gap: 6px;
	min-width: 0;
}
.book-card__type {
	font-size: 10px;
	font-weight: 300;
	letter-spacing: 0.3em;
	text-transform: uppercase;
	color: var(--portal-muted, rgba(26, 26, 26, 0.6));
	margin: 0;
}
.book-card__title {
	font-size: 15px;
	font-weight: 700;
	line-height: 1.5;
	letter-spacing: 0.03em;
	margin: 0;
	overflow-wrap: anywhere;
}
.book-card__price {
	font-size: 13px;
	color: var(--portal-muted, rgba(26, 26, 26, 0.6));
	margin: 0;
	overflow-wrap: anywhere;
}

/* --- Archive: pagination & empty ----------------------------- */
.book-archive__pagination {
	margin-top: 60px;
}
.book-archive__empty {
	color: var(--portal-muted, rgba(26, 26, 26, 0.6));
	font-size: 14px;
	line-height: 1.8;
	padding: 40px clamp(18px, 5vw, 48px);
	text-align: center;
	border: 1px solid var(--portal-border, #e0e0e0);
	background: color-mix(in srgb, var(--portal-bg, #ffffff) 88%, transparent);
}

/* --- Timeline Block (SNS-style) ------------------------------------- */
.hm-timeline {
	border: 1px solid var(--portal-border, #e0e0e0);
	border-radius: 12px;
	overflow: hidden;
	margin: 2em 0;
}
.hm-tl-post {
	--tl-indent: 0;
	display: flex;
	gap: 12px;
	padding: 16px;
	border-bottom: 1px solid var(--portal-border, #e0e0e0);
	margin-left: min(calc(var(--tl-indent, 0) * 28px), 24%);
}
.hm-tl-post:last-child {
	border-bottom: none;
}
.hm-tl-post--reply {
	background: var(--portal-bg, #ffffff);
	border-bottom: none;
	border-top: 1px solid var(--portal-border, #e0e0e0);
}
.hm-tl-post:has(+ .hm-tl-post--reply) {
	border-bottom: none;
}
.hm-tl-post--reply + .hm-tl-post:not(.hm-tl-post--reply) {
	border-top: 1px solid var(--portal-border, #e0e0e0);
}
.hm-tl-post__avatar {
	flex-shrink: 0;
	width: 44px;
	height: 44px;
}
.hm-tl-post__avatar img,
.hm-tl-post__avatar svg {
	width: 44px;
	height: 44px;
	border-radius: 50%;
	object-fit: cover;
}
.hm-tl-post__avatar-icon {
	width: 44px;
	height: 44px;
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	overflow: hidden;
}
.hm-tl-post__avatar .hm-tl-post__avatar-icon img {
	width: 28px;
	height: 28px;
	object-fit: contain;
	border-radius: 0;
}
.hm-tl-post__body {
	flex: 1;
	min-width: 0;
}
.hm-tl-post__name {
	display: block;
	font-size: 13px;
	font-weight: 700;
	line-height: 1.3;
	margin-bottom: 4px;
}
.hm-tl-post__text {
	font-size: 14px;
	line-height: 1.75;
}
.hm-tl-post__text p {
	margin: 0;
}
.hm-tl-post__meta {
	display: flex;
	gap: 14px;
	margin-top: 8px;
	color: var(--portal-muted, #777777);
	font-size: 12px;
	line-height: 1.4;
}
.hm-tl-post__metric {
	display: inline-flex;
	align-items: center;
	gap: 3px;
	font-variant-numeric: tabular-nums;
}
.hm-tl-post__metric-icon {
	width: 13px;
	height: 13px;
	fill: none;
	stroke: currentColor;
	stroke-width: 1.9;
	stroke-linecap: round;
	stroke-linejoin: round;
}
.hm-timeline__inner {
	display: flex;
	flex-direction: column;
}
.hm-timeline--scroll {
	overflow: hidden;
}
.hm-timeline--scroll .hm-timeline__inner {
	max-height: calc( var(--tl-max-posts, 5) * 90px );
	overflow-y: auto;
	scrollbar-width: thin;
}
.hm-timeline-profile {
	border: 1px solid var(--portal-border, #e0e0e0);
	border-radius: 12px;
	overflow: hidden;
	margin: 2em 0;
	background: var(--portal-bg, #ffffff);
}
.hm-timeline-profile--scroll {
	overflow: hidden;
}
.hm-timeline-profile--scroll .hm-timeline-profile__posts {
	max-height: calc( var(--tl-max-posts, 5) * 90px );
	overflow-y: auto;
	scrollbar-width: thin;
}
.hm-timeline-profile__header {
	display: flex;
	gap: 16px;
	padding: 20px;
	border-bottom: 1px solid var(--portal-border, #e0e0e0);
	background: color-mix(in srgb, var(--portal-bg, #ffffff) 94%, var(--portal-accent, #1a1a1a));
}
.hm-timeline-profile__avatar {
	flex-shrink: 0;
	width: 64px;
	height: 64px;
}
.hm-timeline-profile__avatar img,
.hm-timeline-profile__avatar .hm-tl-post__avatar-icon {
	width: 64px;
	height: 64px;
	border-radius: 50%;
	object-fit: cover;
}
.hm-timeline-profile__avatar .hm-tl-post__avatar-icon img {
	width: 40px;
	height: 40px;
	border-radius: 0;
	object-fit: contain;
}
.hm-timeline-profile__body {
	flex: 1;
	min-width: 0;
}
.hm-timeline-profile__name {
	font-size: 13px;
	font-weight: 700;
	line-height: 1.3;
	margin-bottom: 6px;
}
.hm-timeline-profile__text {
	color: var(--portal-muted, #777777);
	font-size: 14px;
	line-height: 1.75;
	margin: 0;
}
.hm-timeline-profile__stats {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	margin-top: 10px;
	color: var(--portal-muted, #777777);
	font-size: 12px;
	line-height: 1.4;
}
.hm-timeline-profile__stats strong {
	color: var(--portal-text, #1a1a1a);
	font-weight: 700;
	font-variant-numeric: tabular-nums;
}
.hm-timeline-profile__posts {
	display: flex;
	flex-direction: column;
}
.hm-timeline-profile__posts .hm-tl-post:last-child {
	border-bottom: none;
}
@media (max-width: 600px) {
	.hm-timeline-profile__header {
		padding: 16px;
	}
	.hm-timeline-profile__avatar {
		width: 52px;
		height: 52px;
	}
	.hm-timeline-profile__avatar img,
	.hm-timeline-profile__avatar .hm-tl-post__avatar-icon {
		width: 52px;
		height: 52px;
	}
	.hm-timeline-profile__avatar .hm-tl-post__avatar-icon img {
		width: 32px;
		height: 32px;
	}
}

/* ============================================================
   Print
   ============================================================ */
@media print {
	.site-header,
	.site-nav,
	.back-to-top,
	.hm-progress-bar,
	.novel-filter,
	.novel-filter__toggle,
	.reading-trigger,
	.reading-panel,
	.hm-bottom-nav,
	.hm-mobile-menu,
	.hm-search-panel,
	.clap-widget,
	.like-btn,
	.novel-actions,
	.novel-nav,
	.kofi-section,
	.site-footer {
		display: none !important;
	}
	body {
		font-size: 12pt;
		line-height: 1.6;
		color: #000;
		background: #fff;
	}
	.novel-prose {
		max-width: 100%;
	}
	a { color: #000; text-decoration: underline; }
}
