/* =========================================================
   Button System
   Docs: docs/BUTTONS.md（ブロックエディター運用）
         docs/CHILD-THEME.md（子テーマ）

   Block editor — ボタンブロック「追加 CSS クラス」に指定:
   ┌─────────────────────────────────────────────────────┐
   │ Style    │ btn-primary  │ btn-precision            │
   │ Size     │ btn-small    │                          │
   │ Shape    │ radius-pill  │ btn-full                 │
   │ Icon     │ icon-arrow-fill │ icon-arrow │ icon-mail … │
   └─────────────────────────────────────────────────────┘
   Example: btn-primary btn-small radius-pill icon-arrow-fill

   HTML: class="btn btn-primary" | "btn btn-precision" | "btn-txt"
   Auto:  header/footer CTA, pagination, archive cards（編集不要）
========================================================= */

/* --- selector groups --- */

.wp-block-button .wp-block-button__link,
.wp-block-button__link {
	text-decoration: none !important;
	text-decoration-line: none !important;
}

/* ボタン共通：タイトルと同じ display 書体 */
:is(
	.btn,
	.button,
	.wp-block-button__link,
	.wp-element-button:not(.wp-block-search__button),
	.front-more-link,
	.btn-txt,
	.link-arrow,
	.site-cta .cta-menu > li > a,
	.footer-cta-menu > li > a,
	.pagination-nav .page-numbers.prev,
	.pagination-nav .page-numbers.next,
	.archive-pagination .page-numbers.prev,
	.archive-pagination .page-numbers.next,
	.goto-top a,
	.nav-toggle,
	.drawer-close
) {
	font-family: var(--font-family-display);
	font-weight: var(--font-weight-bold);
}

:is(
	.btn,
	.button,
	.wp-block-button__link,
	.wp-element-button:not(.wp-block-search__button),
	.front-more-link,
	.btn-txt,
	.link-arrow,
	.site-cta .cta-menu > li > a,
	.footer-cta-menu > li > a
):is(:link, :visited, :hover) {
	text-decoration: none !important;
	text-decoration-line: none !important;
}

:is(
	.btn-primary,
	.wp-block-button.btn-primary .wp-block-button__link,
	.wp-block-button.is-style-fill .wp-block-button__link,
	.footer-cta-menu > li > a,
	.site-cta .cta-menu > li > a,
	.front-more-link
) {
	position: relative;
	z-index: 1;
	overflow: hidden;

	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.5em;

	min-height: 3rem;
	padding: 0.9rem 1.6rem !important;

	border: 0;
	border-radius: var(--radius-m);
	outline: none !important;

	background: var(--color-button-bg) !important;
	color: var(--color-button-text) !important;

	font-size: var(--font-size-base);
	line-height: var(--line-height-tight);
	text-align: center;
	text-decoration: none !important;
	white-space: nowrap;

	cursor: pointer;
	box-shadow: var(--shadow-s);
	transition: var(--transition-base);
}

:is(
	.btn-precision,
	.wp-block-button.btn-precision .wp-block-button__link,
	.wp-block-button.is-style-outline .wp-block-button__link,
	.wp-block-button[class*="is-style-outline"] .wp-block-button__link
) {
	position: relative;
	z-index: 1;
	overflow: hidden;

	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.5em;

	min-height: 3rem;
	padding: 0.9rem 1.6rem !important;

	border: none !important;
	border-radius: var(--radius-m);
	outline: none !important;

	background: transparent !important;
	color: var(--color-main) !important;
	box-shadow: inset 0 0 0 1px rgba(11, 30, 138, 0.24) !important;

	font-size: var(--font-size-base);
	line-height: 1.3;
	letter-spacing: 0.03em;
	text-align: center;
	text-decoration: none !important;
	white-space: nowrap;

	cursor: pointer;
	transition: var(--transition-base);
}

/* =========================================================
   Base Button
========================================================= */

:is(.btn, .button, .wp-block-button__link, .wp-element-button:not(.wp-block-search__button)) {
	position: relative;
	z-index: 1;
	overflow: hidden;

	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.5em;

	min-height: 3rem;
	padding: 1rem 2rem;

	border: 0;
	border-radius: var(--radius-m);

	background: var(--color-button-bg) !important;
	color: var(--color-button-text) !important;

	font-size: var(--font-size-base);
	line-height: var(--line-height-tight);
	text-align: center;

	cursor: pointer;
	box-shadow: var(--shadow-s);
	transition: var(--transition-base);
}

:is(.btn, .button, .wp-block-button__link, .wp-element-button:not(.wp-block-search__button)):hover {
	background: var(--color-button-hover-bg) !important;
	color: var(--color-button-hover-text) !important;
	transform: translateY(-1px);
}

:is(.btn, .button, .wp-block-button__link, .wp-element-button:not(.wp-block-search__button)):active {
	transform: translateY(0);
}

:is(.btn, .button, .wp-block-button__link, .wp-element-button:not(.wp-block-search__button)):focus-visible {
	outline: 2px solid var(--color-accent);
	outline-offset: 3px;
}

/* =========================================================
   Primary（塗り / CTA / is-style-fill）
========================================================= */

:is(.footer-cta-menu > li > a, .site-cta .cta-menu > li > a) {
	border-radius: var(--radius-pill) !important;
	background-color: var(--color-button-bg) !important;
}

.pagination-nav .page-numbers.prev,
.pagination-nav .page-numbers.next,
.archive-pagination .page-numbers.prev,
.archive-pagination .page-numbers.next {
	position: relative;
	z-index: 1;
	overflow: hidden;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.35em;
	min-height: auto;
	min-width: auto;
	padding: 0.4rem 0.75rem !important;
	border: 0;
	border-radius: var(--radius-pill);
	outline: none !important;
	background: var(--color-button-bg) !important;
	color: var(--color-button-text) !important;
	font-size: var(--font-size-xs) !important;
	line-height: 1.3;
	text-align: center;
	text-decoration: none !important;
	white-space: nowrap;
	cursor: pointer;
	box-shadow: var(--shadow-s);
	transition: var(--transition-base);
}

.pagination-nav .page-numbers.next::after,
.archive-pagination .page-numbers.next::after {
	content: ">";
	display: inline-block;
	font-family: var(--font-family-display);
	font-size: 0.85em;
	font-weight: 700;
	line-height: 1;
	pointer-events: none;
	transition: transform var(--transition-base);
}

.pagination-nav .page-numbers.prev::before,
.archive-pagination .page-numbers.prev::before {
	content: "<";
	display: inline-block;
	font-family: var(--font-family-display);
	font-size: 0.85em;
	font-weight: 700;
	line-height: 1;
	pointer-events: none;
	transition: transform var(--transition-base);
}

.pagination-nav .page-numbers.prev:hover::before,
.pagination-nav .page-numbers.next:hover::after,
.archive-pagination .page-numbers.prev:hover::before,
.archive-pagination .page-numbers.next:hover::after {
	transform: translateX(2px);
}

.pagination-nav .page-numbers.prev:hover::before,
.archive-pagination .page-numbers.prev:hover::before {
	transform: translateX(-2px);
}

/* Header CTA（サイズはここで一元管理） */
.site-cta .cta-menu > li > a {
	min-height: 2.25rem !important;
	padding: 0.4rem 0.75rem !important;
	font-size: var(--font-size-s) !important;
}

.site-header.is-compact .site-cta .cta-menu > li > a {
	min-height: 2rem !important;
	padding: 0.35rem 1.1rem !important;
}

:is(
	.btn-primary,
	.wp-block-button.btn-primary .wp-block-button__link,
	.wp-block-button.is-style-fill .wp-block-button__link,
	.footer-cta-menu > li > a,
	.site-cta .cta-menu > li > a,
	.pagination-nav .page-numbers.prev,
	.pagination-nav .page-numbers.next,
	.archive-pagination .page-numbers.prev,
	.archive-pagination .page-numbers.next,
	.front-more-link
):hover {
	background: var(--color-button-hover-bg) !important;
	color: var(--color-button-hover-text) !important;
	text-decoration: none !important;
	transform: translateY(-1px);
}

:is(
	.btn-primary,
	.wp-block-button.btn-primary .wp-block-button__link,
	.wp-block-button.is-style-fill .wp-block-button__link,
	.footer-cta-menu > li > a,
	.site-cta .cta-menu > li > a,
	.pagination-nav .page-numbers.prev,
	.pagination-nav .page-numbers.next,
	.archive-pagination .page-numbers.prev,
	.archive-pagination .page-numbers.next,
	.front-more-link
):active {
	transform: translateY(0);
}

:is(
	.btn-primary,
	.wp-block-button.btn-primary .wp-block-button__link,
	.wp-block-button.is-style-fill .wp-block-button__link,
	.footer-cta-menu > li > a,
	.site-cta .cta-menu > li > a,
	.pagination-nav .page-numbers.prev,
	.pagination-nav .page-numbers.next,
	.archive-pagination .page-numbers.prev,
	.archive-pagination .page-numbers.next,
	.front-more-link
):focus-visible {
	outline: 2px solid var(--color-accent) !important;
	outline-offset: 3px;
}

:is(
	.btn-primary.btn-small,
	.wp-block-button.btn-small.btn-primary .wp-block-button__link,
	.wp-block-button.btn-small.is-style-fill .wp-block-button__link
) {
	min-height: 2.25rem;
	padding: 0.55rem 1rem !important;
	font-size: var(--font-size-s);
}

:is(
	.btn-primary.radius-pill,
	.wp-block-button.radius-pill.btn-primary .wp-block-button__link,
	.wp-block-button.radius-pill.is-style-fill .wp-block-button__link,
	.footer-cta-menu.radius-pill > li > a,
	.site-cta .cta-menu.radius-pill > li > a
) {
	border-radius: var(--radius-pill) !important;
}

/* =========================================================
   Precision（輪郭 / is-style-outline）
========================================================= */

:is(
	.btn-precision,
	.wp-block-button.btn-precision .wp-block-button__link,
	.wp-block-button.is-style-outline .wp-block-button__link,
	.wp-block-button[class*="is-style-outline"] .wp-block-button__link
):hover {
	background: rgba(4, 3, 81, 0.03) !important;
	color: var(--color-main) !important;
	transform: translateY(0);
	box-shadow: inset 0 0 0 1px rgba(11, 30, 138, 0.36) !important;
}

:is(
	.btn-precision.btn-small,
	.wp-block-button.btn-small.btn-precision .wp-block-button__link,
	.wp-block-button.btn-small.is-style-outline .wp-block-button__link
) {
	min-height: 2.25rem;
	padding: 0.55rem 1rem !important;
	font-size: var(--font-size-s);
}

:is(
	.btn-precision.radius-pill,
	.wp-block-button.radius-pill.btn-precision .wp-block-button__link,
	.wp-block-button.radius-pill.is-style-outline .wp-block-button__link
) {
	border-radius: var(--radius-pill) !important;
}

/* =========================================================
   Gutenberg 調整
========================================================= */

:is(
	.wp-block-button.is-style-fill .wp-block-button__link,
	.wp-block-button.btn-primary .wp-block-button__link
) {
	border: none !important;
	box-shadow: var(--shadow-s) !important;
}

.wp-block-button.is-style-fill:not(.btn-primary) .wp-block-button__link {
	border-radius: var(--radius-s) !important;
}

.wp-block-button.btn-primary .wp-block-button__link {
	border-radius: var(--radius-m) !important;
}

:is(
	.wp-block-button[class*="is-style-outline"] .wp-block-button__link,
	.wp-block-button.btn-precision .wp-block-button__link
) {
	border: none !important;
	border-width: 0 !important;
	border-style: none !important;
	border-color: transparent !important;
	border-radius: var(--radius-s) !important;
}

.wp-block-button.is-style-fill .wp-block-button__link:hover,
.wp-block-button.btn-primary .wp-block-button__link:hover {
	background: var(--color-button-hover-bg) !important;
	color: var(--color-button-hover-text) !important;
}

.wp-block-button[class*="is-style-outline--"] .wp-block-button__link {
	border: none !important;
}

/* =========================================================
   Text Button
========================================================= */

:is(.btn-txt, .link-arrow) {
	position: relative;

	display: inline-flex;
	align-items: center;
	gap: 0.35em;

	padding: 0;
	min-height: auto;

	background: transparent !important;
	color: var(--color-main) !important;

	border: 0 !important;
	box-shadow: none !important;

	font-size: var(--font-size-base);
	line-height: 1.5;
	letter-spacing: 0.02em;

	transition: var(--transition-base);
}

:is(.btn-txt, .link-arrow):hover {
	color: var(--color-accent) !important;
	background: transparent !important;
	box-shadow: none !important;
	gap: 0.5em;
}

/* =========================================================
   Modifiers（共通）
========================================================= */

:is(.btn-small, .wp-block-button.btn-small .wp-block-button__link) {
	min-height: 2.25rem;
	padding: 0.55rem 1rem;
	font-size: var(--font-size-s);
}

:is(
	.btn-full,
	.wp-block-button.btn-full .wp-block-button__link,
	.wp-block-button.is-style-full .wp-block-button__link
) {
	width: 100%;
}

:is(.radius-pill, .wp-block-button.radius-pill .wp-block-button__link) {
	border-radius: var(--radius-pill) !important;
}

.wp-block-button.btn-small .wp-block-button__link {
	min-height: 2.25rem !important;
	padding: 0.55rem 1rem !important;
	font-size: var(--font-size-s) !important;
}

.wp-block-button.btn-full .wp-block-button__link {
	width: 100% !important;
}

/* =========================================================
   Wrapper
========================================================= */

.wp-block-buttons {
	gap: 0.75rem;
}

.wp-block-buttons.is-content-justification-center {
	justify-content: center;
}

.wp-block-buttons.is-content-justification-right {
	justify-content: flex-end;
}


/* =========================================================
   Go To Top
========================================================= */

.goto-top {
	position: fixed;
	right: 1rem;
	bottom: 1rem;
	z-index: var(--z-index-goto-top);
	opacity: 0;
	visibility: hidden;
	transform: translateY(0.5rem);
	pointer-events: none;
	transition: var(--transition-base);
}

.goto-top.is-visible {
	opacity: 1;
	visibility: visible;
	transform: translateY(0);
	pointer-events: auto;
}

.goto-top a {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 3rem;
	height: 3rem;
	border-radius: var(--radius-pill);
	background-color: var(--color-button-bg);
	color: var(--color-button-text);
	text-decoration: none;
	box-shadow: var(--shadow-s);
	transition: var(--transition-base);
}

.goto-top a:hover {
	background-color: var(--color-button-hover-bg);
	color: var(--color-button-hover-text);
	transform: translateY(-2px);
}

.goto-top-icon {
	display: block;
	width: 1.25rem;
	height: 1.25rem;
}
