@charset "utf-8";
/* ==========================================================================
   1. Variables & Reset
   ========================================================================== */ :root {
	--paper: #fffdf5;
	--brown: #64431f;
	--orange: #ff5924;
	--header-height: 72px
}
* {
	box-sizing: border-box
}
/* ==========================================================================
   2. Base
   ========================================================================== */
html {
	scroll-behavior: smooth;
	scroll-padding-top: calc(var(--header-height) + 16px)
}
body {
	margin: 0;
	background: var(--paper);
	color: var(--brown);
	font-family: "M PLUS Rounded 1c", "Hiragino Maru Gothic ProN", "Yu Gothic", sans-serif;
	font-weight: 500;
	line-height: 1.8
}
button, a {
	-webkit-tap-highlight-color: transparent
}
a {
	color: inherit;
	text-decoration: none
}
button {
	font: inherit;
	cursor: pointer;
	border: 0
}
img {
	display: block;
	max-width: 100%;
	height: auto
}
a:focus-visible, button:focus-visible {
	outline: 3px solid #259bba;
	outline-offset: 5px
}
section, footer {
	scroll-margin-top: 30px
}
/* Keep decorative artwork inside the viewport. */
main {
	overflow: clip
}
span.ib{
	display: inline-block;
}

@media (max-width: 600px) {
	html {
		scroll-padding-top: 20px
	}
}
@media (prefers-reduced-motion: reduce) {
	html {
		scroll-behavior: auto
	}
	.character {
		animation: none !important
	}
	* {
		transition: none !important
	}
}
/* ==========================================================================
   3. Layout Utilities
   ========================================================================== */
.inner {
	width: 83.333%;
	max-width: 1600px;
	margin-inline: auto
}
.visually-hidden {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	overflow: hidden;
	clip-path: inset(50%)
}
.skip-link {
	position: fixed;
	top: -80px;
	z-index: 100;
	background: white;
	padding: 12px
}
.skip-link:focus {
	top: 0
}
@media (max-width: 900px) {
	.inner {
		width: 88%
	}
}
/* ==========================================================================
   4. Buttons
   ========================================================================== */
.button {
	display: inline-flex;
	justify-content: center;
	align-items: center;
	gap: 14px;
	border-radius: 100px;
	padding: 12px 30px;
	color: white;
	background: var(--orange);
	font-weight: 700;
	letter-spacing: .08em;
	line-height: 1.6;
	transition: background .2s, box-shadow .2s
}
.button:hover {
	background: #e94613;
	box-shadow: 0 5px 0 #ffcf86
}
.button img {
	width: 30px
}
.button span {
	margin-left: 12px
}
/* Keep the "詳しく見る" detail links on one line at every breakpoint (Activities / Peace). */
.button[data-dialog="activities"], .button[data-dialog="peace"] {
	white-space: nowrap;
	flex-wrap: nowrap;
	gap: clamp(4px, 1vw, 14px);
	padding-inline: clamp(8px, 2vw, 30px)
}
.button[data-dialog="activities"] span, .button[data-dialog="peace"] span {
	flex-shrink: 0;
	margin-left: 0
}
/* ==========================================================================
   5. Character Animations (used in Hero / Activities / Support / Peace / Contact)
   ========================================================================== */
.character {
	transform-origin: 50% 85%;
	animation-play-state: paused !important
}
.character.is-visible {
	animation-play-state: running !important
}
.hop {
	animation: hop 3.6s ease-in-out infinite
}
.sway {
	animation: sway 4.2s ease-in-out infinite
}
.dance {
	animation: dance 3.1s ease-in-out infinite
}
@keyframes hop {
	0%, 42%, 100% {
		transform: translateY(0) rotate(-3deg)
	}
	12% {
		transform: translateY(-6%) rotate(3deg)
	}
	24% {
		transform: translateY(0) rotate(0)
	}
	31% {
		transform: translateY(-3%) rotate(-3deg)
	}
}
@keyframes sway {
	0%, 100% {
		transform: rotate(-6deg)
	}
	50% {
		transform: rotate(6deg)
	}
}
@keyframes dance {
	0%, 100% {
		transform: rotate(-5deg) translateY(0)
	}
	25% {
		transform: rotate(5deg) translateY(-5%)
	}
	50% {
		transform: rotate(-5deg) translateY(0)
	}
	75% {
		transform: rotate(5deg) translateY(-3%)
	}
}
/* ==========================================================================
   6. Header & Navigation
   ========================================================================== */
.header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 20px;
	padding: 9px 1.8%;
	background: var(--paper);
	position: sticky;
	top: 0;
	z-index: 30;
	min-height: 72px
}
.brand {
	width: 23%;
	max-width: 365px
}
.header nav {
	display: flex;
	gap: 24px;
	font-size: 14px;
	white-space: nowrap
}
/* Shared hover color for both header and footer nav links. */
.header nav a:hover, .footer nav a:hover {
	color: var(--orange)
}
.header-actions {
	display: flex;
	align-items: center;
	gap: 15px
}
.telephone {
	width: 185px
}
.social-small {
	width: 40px
}
.header-contact {
	border-radius: 7px;
	font-size: 12px;
	padding: 12px;
	background: #f99b17;
	white-space: nowrap;
	gap: 7px
}
.header-contact img {
	width: 22px
}
.menu-toggle {
	display: none
}
/* Mobile nav panel content (greeting / phone / socials), hidden above the mobile breakpoint. */
.menu-extra {
	display: none
}
@media (min-width: 1600px) {
	:root {
		--header-height: 80px
	}
	.header {
		min-height: 80px
	}
	.header nav {
		font-size: 18px
	}
	.telephone {
		width: 220px
	}
	.header-contact {
		font-size: 15px
	}
	.social-small {
		width: 48px
	}
}
@media (max-width: 1200px) {
	.header {
		gap: 12px;
		padding: 8px 2%
	}
	.header nav {
		gap: 16px;
		font-size: 12px
	}
	.header-actions {
		gap: 10px
	}
	.telephone {
		width: 145px
	}
	.social-small {
		width: 30px
	}
	.header-contact {
		padding: 9px
	}
}
@media (max-width: 900px) {
	:root {
		--header-height: 65px
	}
	.header {
		min-height: 65px
	}
	.brand {
		width: 240px
	}
	.header-actions {
		margin-left: auto
	}
	.header-actions .social-small, .header-contact {
		display: none
	}
	.menu-toggle {
		display: flex;
		order: 3;
		flex-direction: column;
		justify-content: center;
		align-items: center;
		gap: 5px;
		width: 48px;
		height: 48px;
		flex-shrink: 0;
		border: 1px solid #e8ca72;
		border-radius: 47% 53% 48% 52%;
		background: #fff0ab;
		padding: 10px;
		box-shadow: 0 3px 0 #eddc98
	}
	.menu-toggle span {
		height: 2px;
		width: 20px;
		background: var(--brown);
		border-radius: 4px;
		transition: transform .2s, opacity .2s
	}
	.menu-toggle[aria-expanded="true"] span:nth-child(1) {
		transform: translateY(7px) rotate(45deg)
	}
	.menu-toggle[aria-expanded="true"] span:nth-child(2) {
		opacity: 0
	}
	.menu-toggle[aria-expanded="true"] span:nth-child(3) {
		transform: translateY(-7px) rotate(-45deg)
	}
	.header nav {
		display: none;
		position: absolute;
		top: 100%;
		left: 0;
		right: 0;
		background: var(--paper);
		padding: 25px;
		box-shadow: 0 8px 12px #60401d15
	}
	.header nav.is-open {
		display: flex;
		flex-direction: column;
		font-size: 16px
	}
	.header #navigation {
		left: auto;
		right: 3%;
		top: calc(100% + 8px);
		width: min(420px, 94vw);
		max-height: calc(100svh - var(--header-height) - 24px);
		overflow-y: auto;
		overscroll-behavior: contain;
		padding: 24px;
		gap: 0;
		border: 1px solid #efdca3;
		border-radius: 28px 22px 34px 24px;
		background: #fffdf5;
		box-shadow: 0 12px 35px #64431f26
	}
	.header #navigation > a {
		display: flex;
		align-items: center;
		justify-content: space-between;
		min-height: 49px;
		padding: 9px 14px;
		border-bottom: 1px dashed #e7d7ad;
		font-weight: 700
	}
	.header #navigation > a::after {
		content: '→';
		color: #f49b35
	}
	.header #navigation > a:hover {
		background: #fff4d2;
		border-radius: 12px
	}
	.menu-extra {
		display: block
	}
	.menu-greeting {
		display: flex;
		align-items: center;
		justify-content: center;
		gap: 16px;
		padding: 14px 0 8px
	}
	.menu-greeting img {
		width: 85px
	}
	.menu-greeting p {
		font-size: 15px;
		line-height: 1.8;
		letter-spacing: .06em
	}
	.menu-sns-label {
		text-align: center;
		font-size: 12px;
		margin: 0 0 10px;
		color: #8b784d
	}
	.menu-socials {
		display: grid;
		grid-template-columns: 1fr 1fr;
		gap: 10px
	}
	.menu-socials a {
		display: flex;
		align-items: center;
		gap: 8px;
		padding: 12px 9px;
		background: #fff5dc;
		border-radius: 15px;
		font-size: 12px
	}
	.menu-socials a:hover {
		background: #ffeab6
	}
	.menu-socials img {
		width: 27px;
		height: 27px;
		flex-shrink: 0
	}
	.menu-socials small {
		display: block;
		font-size: 9px;
		font-weight: 400
	}
	.menu-socials a > span:last-child {
		margin-left: auto;
		color: #ac8650
	}
	.menu-contact-actions {
		display: grid;
		gap: 9px;
		margin: 6px 0 20px
	}
	.menu-tel {
		display: flex;
		align-items: center;
		justify-content: center;
		gap: 12px;
		min-height: 48px;
		border: 1px solid #edc879;
		border-radius: 100px;
		background: #fff5dc;
		font-size: 18px;
		font-weight: 700
	}
	.menu-tel > span {
		font-size: 12px;
		color: #b57820
	}
	.menu-tel:hover {
		background: #ffeab6
	}
	.menu-contact-actions .menu-contact {
		width: 100%;
		min-height: 48px;
		padding: 10px 18px;
		font-size: 15px;
		white-space: nowrap
	}
	.menu-contact img {
		width: 23px
	}
}
@media (max-width: 600px) {
	:root {
		--header-height: 68px
	}
	.header {
		padding: 10px 4%;
		min-height: 68px
	}
	.brand {
		width: 205px;
		max-width: 68%
	}
	.header-actions {
		display: none
	}
}
@media (max-width: 375px) {
	.header #navigation {
		padding: 18px
	}
	.menu-socials {
		gap: 6px
	}
	.menu-socials a {
		gap: 6px;
		padding: 10px 7px;
		font-size: 11px
	}
	.menu-socials img {
		width: 23px;
		height: 23px
	}
}
@media (prefers-reduced-motion: reduce) {
	.menu-toggle span {
		transition: none
	}
}
/* ==========================================================================
   7. Hero
   ========================================================================== */
.hero {
	position: relative;
	display: flex;
	justify-content: center;
	align-items: flex-end;
	height: auto;
	max-height: none;
	overflow: visible;
	--hero-ratio: 1.777058
}
.hero-stage {
	position: relative;
	width: 100%;
	flex-shrink: 0;
	margin-top: 0
}
.hero-background {
	width: 100%;
	height: auto
}
.hero-character {
	position: absolute;
	width: 22.5%;
	left: 36.5%;
	bottom: 9%
}
@media (max-width: 1000px) {
	.hero {
		--hero-ratio: 1.332963
	}
}
@media (max-width: 900px) {
	.hero-character {
		left: 40%;
		width: 25%
	}
}
@media (max-width: 600px) {
	.hero {
		--hero-ratio: .800167
	}
	.hero-character {
		width: 25%;
		left: 40%;
		bottom: 5%
	}
}
/* ==========================================================================
   8. Activities Section
   ========================================================================== */
.activities {
	position: relative;
	padding: 12px 0 35px
}
.section-title {
	width: 34%
}
.intro {
	text-align: center;
	font-size: clamp(12px, 1.2vw, 21px);
	letter-spacing: .13em;
	margin: 12px 0 30px
}
.sprout {
	position: absolute;
	width: 4.8%;
	top: 0;
	left: 38%
}
.activities-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr) .8fr;
	gap: 12px;
	align-items: center
}
.activity {
	background: transparent;
	border-radius: 45%;
	transition: filter .2s
}
.activity:hover {
	filter: brightness(1.04) drop-shadow(0 5px 0 #fce9ae)
}
.activity img {
	width: 100%
}
.activity-guide {
	position: relative;
	text-align: center
}
.activity-guide .speech {
	width: 85%;
	margin: auto
}
.activity-guide .character {
	width: 65%;
	margin: -7% auto -3%
}
.activity-guide .button {
	width: 100%;
	padding: 8px;
	font-size: clamp(12px, 1.2vw, 20px)
}
.activity-leaf {
	position: absolute;
	left: -6%;
	bottom: 14%;
	width: 7%;
	pointer-events: none
}
.butterfly {
	position: absolute;
	right: -8%;
	top: 12px;
	width: 13%;
	pointer-events: none
}
@media (min-width: 1600px) {
	.activities {
		padding-top: 20px;
		padding-bottom: 55px
	}
}
@media (max-width: 600px) {
	.activities {
		padding: 25px 0 30px
	}
	.section-title {
		width: 76%
	}
	.sprout {
		left: 81%;
		width: 9%;
		top: 24px
	}
	.intro {
		font-size: 13px;
		line-height: 2;
		margin: 20px 0 24px;
		text-wrap: balance
	}
	.activities-grid {
		grid-template-columns: 1fr 1fr;
		gap: 18px 10px;
		align-items: center
	}
	.activity-guide {
		padding: 0 15px
	}
	.activity-guide .speech {
		width: 90%
	}
	.activity-guide .character {
		width: 68%
	}
	.activity-guide .button {
		font-size: 12px
	}
	.activity-leaf {
		width: 13%;
		left: -6%;
		bottom: 10%
	}
	.butterfly {
		display: none
	}
}
@media (max-width: 375px) {
	.activities-grid {
		grid-template-columns: minmax(0, 1fr);
		gap: 24px
	}
	.activities-grid > * {
		width: 100%;
		max-width: 300px;
		margin-inline: auto
	}
	.activities-grid .activity-guide {
		max-width: 240px
	}
}
/* ==========================================================================
   9. Support Section
   ========================================================================== */
.support {
	background: #fbf6bc;
	position: relative;
	padding: 48px 0 52px;
	margin: 18px 0 50px;
	clip-path: polygon(0 6%, 8% 0, 19% 5%, 31% 2%, 43% 7%, 57% 1%, 70% 5%, 85% 0, 100% 5%, 100% 96%, 89% 100%, 77% 95%, 64% 100%, 50% 96%, 37% 100%, 22% 95%, 10% 100%, 0 94%)
}
.support-inner {
	position: relative;
	padding: 0 4% 0 8%
}
.support h2 {
	width: 66%;
	margin-bottom: 30px;
	margin-left: 10%
}
.support-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr)
}
.support-grid article {
	display: flex;
	gap: 18px;
	align-items: center;
	padding: 15px 20px;
	border-right: 2px solid #eede55
}
.support-grid article:last-child {
	border: 0
}
.support-grid article > img {
	width: 30%;
	flex-shrink: 0
}
.support h3 {
	font-size: clamp(13px, 1.5vw, 24px);
	color: #f77e3c;
	white-space: nowrap
}
.support article:nth-child(2) h3 {
	color: #f35688
}
.support article:nth-child(3) h3 {
	color: #48badd
}
.support p {
	font-size: clamp(11px, 1.08vw, 18px);
	margin-top: 4px
}
.support-character {
	position: absolute;
	left: -4%;
	top: -10%;
	width: 15%
}
.support-leaf {
	position: absolute;
	width: 8%;
	left: -7%;
	bottom: -25%
}
.support-landscape {
	position: absolute;
	right: -12%;
	width: 40%;
	bottom: -22%
}
@media (min-width: 1600px) {
	.support {
		padding: 65px 0 70px
	}
}
@media (max-width: 1200px) {
	.support-inner {
		padding-right: 8%;
		padding-left: 3%
	}
	.support-grid article {
		gap: 10px;
		padding: 10px
	}
}
@media (max-width: 900px) {
	.support {
		padding: 40px 0
	}
	.support-landscape {
		bottom: -18%;
		width: 50%;
		right: -15%
	}
	.support-grid article {
		flex-direction: column;
		text-align: center
	}
	.support-inner {
		padding: 0 15% 0 0
	}
	.support h2 {
		width: 75%
	}
	.support-character {
		width: 20%;
		left: -6%
	}
}
@media (max-width: 600px) {
	.support {
		margin: 8px 0 25px;
		padding: 38px 0 50px;
		clip-path: polygon(0 2%, 25% 0, 55% 2%, 80% 0, 100% 2%, 100% 98%, 70% 100%, 35% 98%, 0 100%)
	}
	.support-inner {
		padding-left: 5%;
		padding-right: 11%
	}
	.support h2 {
		width: 100%;
		margin: 5px 0 25px 10%
	}
	.support-character {
		left: -5%;
		width: 21%;
		top: -18px
	}
	.support-grid {
		grid-template-columns: 1fr;
		padding: 0 3%
	}
	.support-grid article {
		padding: 15px 0;
		border-right: 0;
		border-bottom: 1px solid #e5d64d;
		gap: 20px
	}
	.support-grid article > img {
		width: 70px
	}
	.support h3 {
		font-size: 18px
	}
	.support p {
		font-size: 13px
	}
	.support p br {
		display: none
	}
	.support-landscape {
		width: 60%;
		right: -15%;
		bottom: -8%
	}
	.support-leaf {
		width: 16%;
		left: -9%;
		bottom: -25px
	}
}
@media (max-width: 470px) {
	.support {
		padding-bottom: 140px
	}
	.support-inner {
		padding-left: 0;
		padding-right: 0
	}
	.support-landscape {
		bottom: -140px;
		max-height: 150px;
		width: 80%
	}
	.support-landscape img {
		height: 100%;
		object-fit: contain
	}
}
/* ==========================================================================
   10. Peace Section
   ========================================================================== */
.peace {
	position: relative;
	display: flex;
	align-items: center;
	background: #ffdaaa;
	border-radius: 80px 65px 75px 65px;
	padding: 45px 6%;
	gap: 2%;
	outline: 2px dashed #fff5dd;
	outline-offset: -12px;
	margin-bottom: 35px
}
.peace-name {
	position: relative;
	width: 23%;
	flex-shrink: 0;
	text-align: center;
	color: #f86e3a;
	z-index: 3
}
.peace h2 {
	font-size: clamp(32px, 3.7vw, 64px);
	line-height: 1.3
}
.peace h2 small {
	display: block;
	font-size: clamp(13px, 1.5vw, 24px)
}
.peace h2 span {
	display: block;
	font-size: 15px;
	margin-top: 7px
}
.peace-name > .character {
	width: 70%;
	margin: 30px auto -25px;
	position: relative;
	left: -14%
}
.peace-speech {
	position: absolute;
	width: 80%;
	left: 67%;
	bottom: 8%;
	z-index: 2
}
.peace-photo {
	width: 39%;
	margin-left: -3%;
	position: relative;
	z-index: 2
}
.peace-copy {
	width: 41%;
	padding-left: 3%;
	position: relative;
	z-index: 2
}
.peace-copy h3 {
	color: #fa683b;
	font-size: clamp(18px, 2.2vw, 34px);
	line-height: 1.65;
	letter-spacing: .08em
}
.peace-copy p {
	font-size: clamp(10px, 1.05vw, 17px);
	line-height: 1.65;
	margin: 20px 0
}
.peace-copy .button {
	width: 95%
}
.peace-leaf {
	position: absolute;
	width: 18%;
	pointer-events: none;
	z-index: 1
}
.peace-leaf-top {
	right: 1%;
	top: -15%;
	width: 17%;
	transform: rotate(-27deg)
}
.peace-leaf-bottom {
	left: 1%;
	bottom: 2%;
	width: 15%;
	transform: rotate(8deg)
}
@media (max-width: 1200px) {
	.peace {
		padding: 30px 5%
	}
}
@media (max-width: 900px) {
	.peace-copy p br {
		display: none
	}
	.peace-copy .button {
		font-size: 12px;
		padding: 10px
	}
}
@media (max-width: 600px) {
	.peace {
		border-radius: 40px;
		display: grid;
		grid-template-columns: 1fr 1.25fr;
		gap: 10px;
		padding: 30px 7%;
		margin-bottom: 25px
	}
	.peace-name {
		width: 100%
	}
	.peace h2 {
		font-size: 38px
	}
	.peace h2 small {
		font-size: 13px
	}
	.peace h2 span {
		font-size: 12px
	}
	.peace-name > .character {
		margin: 10px auto 0;
		width: 75%
	}
	.peace-photo {
		width: 115%;
		max-width: 115%;
		margin-left: -10%
	}
	.peace-speech {
		width: 85%;
		bottom: -5%;
		left: 70%
	}
	.peace-copy {
		width: 100%;
		grid-column: 1/-1;
		padding: 12px 0 0;
		text-align: center
	}
	.peace-copy h3 {
		font-size: 23px
	}
	.peace-copy p {
		text-align: left;
		font-size: 12px;
		margin: 15px 0
	}
	.peace-copy .button {
		font-size: 15px;
		padding: 10px
	}
	.peace-leaf-top {
		width: 27%;
		top: -3%;
		right: 2%
	}
	.peace-leaf-bottom {
		width: 22%;
		bottom: 2%;
		left: 0
	}
}
/* ==========================================================================
   11. Contact CTA Section
   ========================================================================== */
.contact-scene {
	position: relative;
	background: url('../img/cta_bg.png') center/100% 100% no-repeat;
	aspect-ratio: 2135/704;
	display: flex;
	align-items: center;
	justify-content: center
}
/* An irregular cloud silhouette, separate from the readable CTA content. */
.contact-cloud {
	background: transparent;
	border-radius: 0;
	isolation: isolate;
	text-align: center;
	padding: 18px 35px 25px;
	position: relative;
	margin-top: -4%
}
.contact-cloud::before {
	content: "";
	position: absolute;
	inset: -22px -35px -24px;
	z-index: -1;
	background: url('../img/cta-cloud.svg') center / 100% 100% no-repeat;
	pointer-events: none;
	filter: blur(3px)
}
.contact-cloud h2 {
	font-size: clamp(21px, 2.7vw, 43px);
	letter-spacing: .12em
}
.contact-cloud p {
	margin: 12px 0 20px;
	font-size: clamp(11px, 1.3vw, 20px)
}
.contact-cloud .button {
	font-size: clamp(14px, 1.5vw, 24px)
}
.contact-character {
	position: absolute;
	width: 17%;
	right: 8%;
	bottom: 13%
}
.contact-character > img:first-child {
	width: 100%;
	margin-left: 27%;
	margin-bottom: -9%
}
.contact-character .character {
	width: 90%
}
@media (max-width: 900px) {
	.contact-cloud {
		padding: 15px 20px
	}
	.contact-cloud p {
		margin: 5px 0 12px
	}
	.contact-character {
		right: 5%;
		width: 18%
	}
}
@media (max-width: 600px) {
	.contact-scene {
		min-height: 360px;
		aspect-ratio: auto;
		background-image: url('../img/cta_spbg.png');
		background-size: cover;
		background-position: center
	}
	.contact-cloud {
		margin-top: -55px;
		padding: 20px 18px;
		max-width: 94%
	}
	.contact-cloud::before {
		inset: -18px -8px -20px;
		filter: blur(2px)
	}
	.contact-cloud h2 {
		font-size: 21px;
		letter-spacing: .05em
	}
	.contact-cloud p {
		font-size: 11px;
		margin: 9px 0 17px
	}
	.contact-cloud .button {
		font-size: 13px;
		padding: 12px 17px;
		gap: 8px
	}
	.contact-character {
		width: 95px;
		right: 7%;
		bottom: 12px
	}
	.contact-character > img:first-child {
		width: 110%;
		margin-left: 10%;
		margin-bottom: -15%
	}
}
/* ==========================================================================
   12. SNS Section
   ========================================================================== */
.sns {
	position: relative;
	padding-top: 35px
}
.sns > .inner {
	position: relative
}
.sns h2 {
	width: 52%;
	margin: 0 auto 38px
}
.sns-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 0;
	padding: 0 14% 0 4%
}
.sns-grid article {
	padding: 0 10% 15px 0
}
.sns-grid article:first-child {
	border-right: 2px solid transparent
}
.sns-grid article + article {
	border-left: 2px solid #ffae36;
	padding: 0 0 15px 10%
}
.sns-account {
	display: flex;
	align-items: center;
	gap: 20px;
	margin-bottom: 25px;
	color: #171714
}
.sns-account > img {
	width: 48px
}
.sns-account h3 {
	font-size: 26px;
	line-height: 1.3;
	letter-spacing: .03em
}
.sns-account p {
	font-size: 13px
}
.photo-grid {
	display: grid;
	position: relative;
	gap: 8px
}
.instagram-grid, .threads-grid {
	grid-template-columns: repeat(4, minmax(0, 1fr))
}
.photo-grid img {
	width: 100%;
	aspect-ratio: 1;
	object-fit: cover
}
/* Photo captions are decorative only; hidden in favor of the plain grid. */
.photo-grid span {
	display: none
}
.more {
	display: block;
	text-align: right;
	color: #d99d49;
	font-size: 11px;
	margin-top: 10px
}
.sns-character {
	position: absolute;
	width: 18%;
	right: -3%;
	top: 25%
}
.sns-character > img:first-child {
	width: 75%
}
.sns-character .character {
	width: 100%
}
.sns-landscape {
	width: 100%;
	margin-top: -12px
}
@media (max-width: 1200px) {
	.sns-account h3 {
		font-size: 22px
	}
}
@media (max-width: 900px) {
	.sns-grid {
		padding-right: 12%;
		padding-left: 0
	}
	.sns-account {
		gap: 10px
	}
	.sns-account > img {
		width: 36px
	}
}
@media (max-width: 600px) {
	.sns {
		padding-top: 30px;
		overflow: hidden
	}
	.sns h2 {
		width: 100%;
		margin-bottom: 25px
	}
	.sns-grid {
		grid-template-columns: 1fr;
		padding: 0 9%
	}
	.sns-grid article {
		padding: 0 0 25px
	}
	.sns-grid article:first-child {
		border-right: 0
	}
	.sns-grid article + article {
		border-left: 0;
		border-top: 1px solid #ffbd54;
		padding: 25px 0 35px
	}
	.sns-account {
		margin-bottom: 16px
	}
	.sns-account h3 {
		font-size: 24px
	}
	.sns-character {
		width: 24%;
		right: -3%;
		top: auto;
		bottom: 70px;
		z-index: 1
	}
	.sns-character > img:first-child {
		margin-left: -20%
	}
	.sns-landscape {
		width: 150%;
		max-width: none;
		margin-left: -25%;
		margin-top: -70px
	}
}
/* ==========================================================================
   13. Footer
   ========================================================================== */
.footer {
	display: flex;
	justify-content: space-between;
	align-items: center;
	padding: 35px 0 40px
}
.footer-logo {
	width: 390px;
	max-width: 95%
}
address {
	font-style: normal;
	font-size: 12px;
	font-weight: 400;
	margin: 16px 0 0 85px
}
.footer-right {
	width: 42%;
	text-align: center
}
.footer-right > .button {
	width: 100%;
	font-size: clamp(1rem, 0.25rem + 1.33vw, 1.25rem)
}
.footer-social {
	display: flex;
	gap: 14px;
	justify-content: center;
	margin: 15px 0
}
.footer-social img {
	width: 23px
}
.footer nav {
	display: flex;
	justify-content: center;
	gap: 20px;
	font-size: 11px
}
.footer small {
	display: block;
	font-size: 11px;
	font-weight: 400;
	margin-top: 12px;
	color: #a58a62
}
@media (max-width: 900px) {
	.footer-logo {
		width: 300px
	}
	.footer-right > .button {
		font-size: clamp(0.688rem, 0.185rem + 1.34vw, 0.938rem);
		padding: 10px
	}
	.button img {
		width: 25px;
	}	
	address {
		margin-left: 55px;
		font-size: 10px
	}
	.footer nav {
		gap: 10px;
		font-size: 10px
	}
}
@media (max-width: 600px) {
	.footer {
		display: block;
		padding: 25px 0
	}
	.footer-logo {
		width: 290px;
		margin: auto
	}
	address {
		text-align: center;
		margin: 15px 0 25px;
		font-size: 11px
	}
	.footer-right {
		width: 100%
	}
	.footer-right > .button {
		max-width: 350px;
		font-size: 15px
	}
	.footer nav {
		font-size: 11px;
		gap: 18px
	}
	.footer small {
		font-size: 10px
	}
}
/* ==========================================================================
   14. Dialog (Modal)
   ========================================================================== */
dialog {
	border: 0;
	border-radius: 32px;
	padding: 35px;
	max-width: 540px;
	width: calc(100% - 32px);
	margin: auto;
	color: var(--brown);
	background: var(--paper);
	box-shadow: 0 20px 90px #38290e35;
	text-align: center
}
dialog::backdrop {
	background: #3a281970;
	backdrop-filter: blur(4px)
}
.dialog-close {
	position: absolute;
	right: 16px;
	top: 8px;
	background: transparent;
	font-size: 32px;
	width: 44px
}
.dialog-character {
	width: 110px;
	margin: auto
}
dialog h2 {
	font-size: 25px;
	margin: 5px 0 20px
}
#dialog-copy {
	text-align: left;
	white-space: pre-line;
	margin-bottom: 25px
}
.dialog-note {
	font-size: 12px;
	margin-top: 15px
}
body.modal-open {
	overflow: hidden
}