/* ===================================
   1. Reset & Base Settings
=================================== */

*,
*::before,
*::after {
	box-sizing: border-box;
}

:root {
	/* ===================================
	   Design Tokens (NON preset)
	   NOTE:
	   - Do NOT redefine --wp--preset--*
	   - Presets are defined ONLY in theme.json
	=================================== */

	/* Base Colors */
	--gs-color-bg: #FBF7F0;        /* Kinari */
	--gs-color-text: #1C1C1C;      /* Sumi */
	--gs-color-text-sub: #AFAFB0;  /* Ginnezumi */
	--gs-color-border: #D6D6D6;    /* Usuzumi */

	/* Brand helpers (reference presets) */
	--gs-color-primary: var(--wp--preset--color--g-aiiro);
	--gs-color-accent: var(--wp--preset--color--g-asagi);

	/* Spacing helpers (visual only) */
	--gs-spacing-vertical: 6rem;
	--gs-spacing-horizontal: 1.5rem;

	/* Header */
	--header-height-desktop: 72px;
	--header-height-mobile: 60px;
	--header-height-sticky: 72px;

	/* Floating button */
	--floating-button-bottom: 6rem;
	--floating-button-right: 0.5rem;

	/* Z-index */
	--z-header: 10;
	--z-pagetop: 2;

	/* Effects */
	--shadow-elevated: 0 4px 6px rgba(0, 0, 0, 0.3);
	--transition-standard: 0.3s ease;
	--border-radius-circle: 50%;

	/* Mobile */
	--tap-target-minimum: 44px;
	--font-size-mobile-base: 16px;
}

/* Reset block margins (theme.json spacing is authoritative) */
/*:root :where(.is-layout-flow) > *,
:root :where(.is-layout-constrained) > * {
	margin-block-start: 0;
	margin-block-end: 0;
}*/

html {
	scroll-behavior: smooth;
}

body {
	color: var(--gs-color-text);
	padding: 0;
}

/* ===================================
   2. Base Elements
=================================== */

a {
	text-decoration: none;
}

a:not(.wp-element-button) {
	background: linear-gradient(currentColor 0 0) 0 100% / var(--d, 0) 1px no-repeat;
	transition: background-size var(--transition-standard);
}

a:not(.wp-element-button):hover {
	--d: 100%;
}

a:focus-visible {
	outline: 2px solid var(--gs-color-primary);
	outline-offset: 2px;
}

iframe {
	width: 100%;
}

/* ===================================
   3. Header / Footer (structural exceptions)
=================================== */

header,
footer {
	padding-inline: 0;
}

header > div:not(.wp-block-navigation__responsive-container),
header .wp-block-group > div:not(.wp-block-navigation__responsive-container) {
	width: 100%;
	height: var(--header-height-desktop);
	display: flex;
	align-items: center;
	justify-content: space-between;
}

header.is-position-sticky {
	height: var(--header-height-sticky);
	background-color: rgba(255, 255, 255, 0.75);
}

header .wp-block-group {
	padding: 0;
}

header ul,
header li,
header figure {
	margin-block-end: 0;
	padding-left: 0;
}

footer {
	color: var(--wp--preset--color--white);
	background-color: var(--wp--preset--color--g-aiiro);
	margin-block-start: 0;
}

footer a:not(.wp-element-button) {
	color: var(--wp--preset--color--white);
}

/* ===================================
   4. Main Area
   NOTE:
   - Do NOT control layout width here
   - Padding is block responsibility
=================================== */

.wp-site-blocks > main {
	padding: 0;
	margin-block-start: 0;
}

/* ===================================
   5. WordPress Blocks (visual only)
=================================== */

.wp-block-table {
	border-collapse: collapse;
}

.wp-block-table td {
	vertical-align: top;
	border-bottom: 1px dotted;
	padding: 0.75rem 1rem;
}

.wp-block-table thead {
	border-bottom: 2px solid;
}

.wp-block-query li > div {
	padding: 1rem 0;
}

.wp-block-navigation:not(.has-background)
.wp-block-navigation__responsive-container.is-menu-open {
	padding: var(--wp--preset--spacing--40);
}

.wp-block-navigation__responsive-container-close {
	right: 16px;
	top: 8px;
}

.wp-block-post-date {
	padding: 1rem 0;
}

/* Hero Cover (visual exception) */
section.wp-block-cover.alignfull.has-parallax.hero {
	min-height: calc(96vh + var(--header-height-sticky));
	margin-block-start: calc(-1 * var(--header-height-sticky)
		+ var(--wp-admin--admin-bar--position-offset, 0px));
}

section.wp-block-cover.alignfull.has-parallax.hero
.wp-block-cover__inner-container {
	padding-block-start: var(--header-height-sticky);
}

/* ===================================
   6. Typography (visual only)
=================================== */

h1.wp-block-heading,
h2.wp-block-heading {
	margin-block-end: 1.875rem;
}

h3.wp-block-heading {
	margin-block-end: 1.75rem;
}

h4.wp-block-heading,
h5.wp-block-heading,
h6.wp-block-heading {
	margin-block-end: 1.5rem;
}

p,
figure {
	margin-block-end: 1.5rem;
}

li {
	margin-block-end: 0.25rem;
}

/* ===================================
   7. Icons (SVG background)
=================================== */

.icon-svg {
	position: relative;
	padding-left: 2.5rem;
	font-size: 1.25rem;
	line-height: 1.5;
}

.icon-svg::before {
	content: "";
	position: absolute;
	left: 0;
	top: 50%;
	transform: translateY(-50%);
	width: 32px;
	aspect-ratio: 1;
	background-repeat: no-repeat;
	background-position: center;
	background-size: contain;
}

.icon-pc::before { background-image: url('../images/icon_pc.svg'); }
.icon-value::before { background-image: url('../images/icon_value.svg'); }
.icon-checked::before { background-image: url('../images/icon_checked.svg'); }
.icon-ai-robo::before { background-image: url('../images/icon_robo.svg'); }
.icon-hint::before { background-image: url('../images/icon_hint.svg'); }

/* ===================================
   8. Utility
=================================== */

.gs-hidden {
	display: none;
}

body.is-paginated .wp-block-cover.alignfull {
	display: none;
}

hr,
.wp-block-separator {
	width: 100%;
	margin-block: var(--wp--preset--spacing--60);
}

/* ===================================
   9. Page Top Button
=================================== */

.pagetop {
	position: fixed;
	right: var(--floating-button-right);
	bottom: var(--floating-button-bottom);
	z-index: var(--z-pagetop);
	width: 3rem;
	aspect-ratio: 1;
	background: var(--gs-color-primary);
	border: 2px solid var(--wp--preset--color--white);
	border-radius: var(--border-radius-circle);
	box-shadow: var(--shadow-elevated);
	display: flex;
	align-items: center;
	justify-content: center;
	transition: border-color var(--transition-standard);
}

.pagetop a { padding: 0;}

/* ===================================
   10. Accessibility
=================================== */

@media (prefers-reduced-motion: reduce) {
	html {
		scroll-behavior: auto;
	}

	a:not(.wp-element-button),
	.pagetop {
		transition: none;
	}
}

/* ===================================
   11. Mobile (<= 768px)
=================================== */

@media (max-width: 768px) {
	:root {
		--floating-button-bottom: 1.5rem;
		--floating-button-right: 1rem;
		--header-height-sticky: var(--header-height-mobile);
	}

	body {
		font-size: var(--font-size-mobile-base);
		line-height: 1.6;
	}

	header > div:not(.wp-block-navigation__responsive-container),
	header .wp-block-group > div:not(.wp-block-navigation__responsive-container) {
		height: var(--header-height-mobile);
		/*padding-inline: 0.5rem;*/
	}

	header img {
		max-height: 40px;
	}

	footer {
		padding: 0;
		font-size: 0.9375rem;
	}

	/* Responsive tables */
	thead {
		display: none;
	}

	tr {
		display: flex;
		flex-direction: column;
	}

	.wp-block-table td {
		padding: 1rem 0.75rem;
	}

	/* Buttons */
	.wp-element-button,
	.wp-block-button__link {
		min-height: 48px;
		padding: 0.875rem 1.5rem;
	}

	/* Icons */
	.icon-svg {
		font-size: 1rem;
		padding-left: 2.75rem;
	}
}

header .wp-block-site-title {
	/*display: none;*/
}

header nav ul.wp-block-navigation {
	flex-wrap: nowrap;
}

header nav ul.wp-block-navigation li {
	white-space: nowrap;
}

/* wpcf 7*/
/* 1. テキスト入力・メール・電話・メッセージ欄をまとめて指定 */
.wpcf7-form input[type="text"],
.wpcf7-form input[type="email"],
.wpcf7-form input[type="tel"],
.wpcf7-form input[type="url"],
.wpcf7-form textarea {
    width: 100%;            /* 横幅いっぱい */
    padding: 12px 15px;     /* 内側の余白 */
    margin-bottom: 20px;    /* 項目ごとの間隔 */
    border: 1px solid #ddd; /* 枠線の色 */
    border-radius: 6px;     /* 角を少し丸く */
    background-color: #fff; /* 背景色 */
    font-size: 16px;        /* 文字サイズ（16px以上がスマホで崩れないコツ） */
    box-sizing: border-box; /* 余白を含めたサイズ調整 */
    transition: all 0.3s;   /* 変化を滑らかに */
}

/* 2. 入力中の状態（フォーカス時） */
.wpcf7-form input:focus,
.wpcf7-form textarea:focus {
    border-color: #007bff;            /* 枠線を好みの色に（例：青） */
    box-shadow: 0 0 8px rgba(0,123,255,0.2); /* ぼんやり光らせる */
    outline: none;                    /* ブラウザ標準の枠線を消す */
}

/* 3. 送信ボタンのスタイル */
.wpcf7-submit {
    display: block;
    width: 250px;           /* ボタンの横幅（好みで調整） */
    margin: 20px auto;      /* 中央寄せ */
    padding: 15px;
    background-color: #007bff; /* ボタンの色 */
    color: #fff;
    font-weight: bold;
    border: none;
    border-radius: 30px;    /* カプセル型 */
    cursor: pointer;
    transition: 0.3s;
}

/* 4. 送信ボタンのホバー（マウスを乗せた時） */
.wpcf7-submit:hover {
    background-color: #0056b3;
    transform: translateY(-2px); /* 軽く浮き上がらせる */
}

/* 送信ボタンの基本スタイル */
.wpcf7-submit {
	width: 100%;
	background-color: #1e293b;
	color: #fff;
	padding: 16px 32px;
	border: none;
	border-radius: 3px;
	font-size: 16px;
	cursor: pointer;
	transition: 0.3s;
}

/* マウスを乗せた時（ホバー） */
.wpcf7-submit:hover {
	background-color: #555;
	opacity: 0.8;
}

/* add */
header h2 {padding: 0 !important;}

.link-text-same a::after {
	content: "";
	display: inline-block;
	width: 1em;
	height: 1em;
	margin-left: 4px;
	vertical-align: middle;
	background-image: url("https://www.garan.ne.jp/gskeleton/files/2025/12/window-open-same.svg");
	background-size: contain;
	background-repeat: no-repeat;
}

.link-text-new a::after {
	content: "";
	display: inline-block;
	width: 1em;
	height: 1em;
	margin-left: 4px;
	vertical-align: middle;
	background-image: url("https://www.garan.ne.jp/gskeleton/files/2025/12/window-open-new.svg");
	background-size: contain;
	background-repeat: no-repeat;
}