/*
Theme Name: Shoko
Theme URI: https://bonaldi.fr
Author: bonaldi.fr
Author URI: https://bonaldi.fr/contact/
Description: Master FSE theme from bonaldi.fr.
Version: 7.0
Requires at least: 6.4
Tested up to: 7.0
Requires PHP: 7.4
License: Copyright 2025 bonaldi.fr - All Rights Reserved
License URI: https://bonaldi.fr
Text Domain: shoko
Tags: custom-colors, custom-menu, custom-logo, editor-style, featured-images, full-site-editing, block-patterns, sticky-post, threaded-comments, translation-ready, wide-blocks, block-styles, style-variations, accessibility-ready
*/

/* Styles intended only for the front.*/
html {
	scroll-behavior: smooth;
	overflow-x: hidden;
}

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

body {
	-webkit-font-smoothing: antialiased;
	max-width: 1920px;
	margin: auto;
}

header {
	position: sticky;
	top: 0;
	z-index: 999;
	transition: .2s;
	backdrop-filter: blur(30px);
}

header.wp-block-template-part:hover {
	transform: scale(1) !important;
}

header.wp-block-template-part :where(.wp-block-columns.has-background),
footer.wp-block-template-part :where(.wp-block-columns.has-background) {
	padding: inherit;
}

.wp-block-site-title,
.wp-block-site-tagline {
	line-height: 1.2;
}

.wp-block-navigation .wp-block-navigation-item {
	min-width: max-content;
}

.wp-block-navigation .wp-block-navigation-item__label {
	max-width: 90vw;
}

.wp-block-navigation .wp-block-navigation__responsive-container.is-menu-open {
	height: 100vh;
}

.wp-block-navigation__responsive-container-close svg,
.wp-block-navigation__responsive-container-open svg {
	height: 3rem;
	width: 3rem;
}

:where(body .is-layout-constrained) > *,
:where(.wp-site-blocks) > * {
	margin-block-start: 0;
}

.wp-block-post.page.type-page.status-publish.hentry {
	overflow: auto;
}

.wp-block-navigation .has-child .wp-block-navigation__submenu-container {
	left: auto;
	right: 0;
	padding: 0;
}

:root :where(.wp-block-navigation a:where(:not(.wp-element-button))) {
	text-decoration: none;
}

.wpmem_loginout.wp-element-button.wp-block-loginout {
	padding: .2em;
}

:root :where(.wp-block-navigation .wpmem_loginout a:where(:not(.wp-element-button))) {
	color: inherit;
}

.blog .wp-block-post-title {
	text-wrap: balance;
}

.wp-block-quote cite {
	color: var(--wp--preset--color--contrast);
}

.wp-block-quote.has-text-align-left p::after,
.wp-block-quote.has-text-align-right p::before,
.wp-block-quote::before {
	color: var(--wp--preset--color--contrast);
	content: "\201C";
	font-family: Cambria,Georgia,"Times New Roman","New York",Times,"Noto Serif",serif;
	font-size: 4rem;
	font-weight: 700;
	line-height: 1;
	position: absolute;
}

.wp-block-quote.has-text-align-left::before {
	margin-left: -2.5rem;
}

.wp-block-quote.has-text-align-left p::after {
	margin-left: .5rem;
}

.wp-block-quote.has-text-align-center::before {
	content: " ";
}

.wp-block-quote.has-text-align-right::before {
	margin-left: .5rem;
}

.wp-block-quote.has-text-align-right p::before {
	margin-left: -2.5rem;
}

.wp-block-button__link svg {
	fill: currentcolor;
	vertical-align: middle;
}

.wp-element-button,
a.wp-block-button__link,
.wp-block-tab-list button,
.wp-block-search__inside-wrapper {
	border-radius: .5em;
}

@media (max-width: 781px) {
	.wp-block-columns:not(.is-not-stacked-on-mobile).featured-colums > .wp-block-column:nth-child(even) {
		display: flex;
		flex-direction: column-reverse;
	}
	.wp-block-columns:not(.is-not-stacked-on-mobile).featured-colums :where(.is-layout-flow) > :first-child {
		margin-block-start: 24px;
	}
}

/* ------------------------------------------- */
/* Custom anim button
/* ------------------------------------------- */
.wp-block-button {
	transition: all 0.5s;
}

.wp-block-button a {
	position: relative;
	transition: 0.5s;
}

#bttbutton .wp-element-button::after {
	display: none;
}

#bttbutton .wp-block-button {
	width: 4rem;
	height: 4rem;
}

#bttbutton a {
	display: flex;
	justify-content: center;
	align-items: center;
	height: inherit;
}

a.wp-element-button::after,
button:not(.wp-block-search__button).wp-element-button::after {
	content: '→';
	opacity: 0.3;
	transition: 0.5s;
}

a:hover.wp-element-button::after,
button:hover.wp-element-button::after {
	opacity: 1;
	padding-left: .5em;
}

/* ------------------------------------------- */
/* Contact Form 7
/* ------------------------------------------- */
.wpcf7-form,
.wpcf7-form-control-wrap,
.wpcf7-form p label,
.cf7.captcha-reload {
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
}

.wpcf7-form p {
	margin: .5em 0;
}

.wpcf7-form-control:not(.wp-element-button) {
	min-height: 2em;
	border-radius: unset;
	width: 100%;
}

.wpcf7-form-control.wpcf7-textarea {
	flex-grow: 1;
	width: inherit;
}

.wpcf7-form p:has(.wpcf7-textarea),
.wpcf7-form-control-wrap:has(.wpcf7-textarea) {
	width: 100%;
}

.wpcf7-select {
	font-size: 1rem;
}

.wpcf7-select,
.wpcf7-tel,
.wpcf7-date,
.wpcf7-submit {
	text-align: center;
	min-height: 3em;
}

.f12c.wpcf7-validates-as-required {
	text-align: center;
}

.wpcf7-form-control.wpcf7-submit {
	cursor: pointer;
	padding: var(--wp--preset--spacing--30);
	text-transform: uppercase;
	font-family: inherit;
	font-size: var(--wp--preset--font-size--medium);
	font-weight: 700;
	line-height: inherit;
	border: 4px solid var(--wp--preset--color--transparent);
	border-radius: .5em;
	box-shadow: var(--wp--preset--shadow--natural);
}

.wpcf7-form-control.wpcf7-submit:hover {
	border-color: var(--wp--preset--color--border);
}

.wpcf7-select,
.wpcf7-textarea,
input.wpcf7-form-control:not(input[type="submit"]) {
	font-size: 1.2rem;
	font-family: inherit;
}

.wpcf7-form input[type="checkbox"],
.wpcf7-form input[type="radio"] {
	transform: scale(2);
	margin: 0.5em 1em;
}

.wpcf7-checkbox .wpcf7-list-item,
.wpcf7-radio .wpcf7-list-item {
	display: flex;
}

.wpcf7-checkbox span label {
	flex-direction: row;
}

.wpcf7-radio .wpcf7-list-item {
	justify-content: center;
}

.wpcf7-list-item {
	display: inline-flex;
	margin: 0;
}

.wpcf7-spinner {
	display: flex;
	justify-content: center;
	margin: .5em auto;
}

.wpcf7 .ajax-loader {
	position: absolute;
}

.wpcf7-gaitcha {
	display: flex;
	width: 100%;
	justify-content: center;
}

/* ------------------------------------------- */
/* Forge12 Spam Protection
/* ------------------------------------------- */
.c-header > div {
	padding: 0 .5ch;
}

.f12c {
	text-align: center;
	/*background-color: var(--wp--preset--color--contrast);*/
	line-height: 2em;
	font-size: 1rem;
}
.c-header {
	flex-flow: row wrap;
	justify-content: center;
}
.f12-captcha.template-0 .c-reload a,
.f12-captcha.template-1 .c-reload a,
.f12-captcha.template-2 .c-reload a {
	background-color: var(--wp--preset--color--base);
	border-radius: 50px;
	padding: .3em;
	margin-bottom: .5em;
}

/* ----------------------------------------------------------------- */
/* Slider for grouped cover blocks with "slider" additionnal class
/* ----------------------------------------------------------------- */
.slider {
	display: flex;
	/*align-items: inherit;
	max-height: fit-content;*/
	overflow: auto;
	scroll-snap-type: x mandatory;
	scroll-behavior: smooth;
}

.slider .wp-block-cover,
.slider .wp-block-cover-image {
	justify-content: space-between;
	/*align-items: normal;
	position: relative;
	background-position: 50%;*/
	min-width: fit-content;
	min-height: max-content;
	padding: .25em 0;
	overflow: visible;
	margin-block-start: 0;
}

.slider .wp-block-cover .wp-block-cover__inner-container,
.slider .wp-block-cover-image .wp-block-cover__inner-container {
	position: absolute;
	/*min-width: fit-content;*/
}

.slider img.wp-block-cover__image-background {
	/*display: flex;
	flex-shrink: 0;
	justify-content: center;
	align-items: center;*/
	position: relative;
	scroll-snap-align: center;
	transform: scale(1);
	transition: transform 0.5s;
}

.wp-block-cover .has-background-dim:not([class*="-background-color"]),
.wp-block-cover-image .has-background-dim:not([class*="-background-color"]),
.wp-block-cover-image.has-background-dim:not([class*="-background-color"]),
.wp-block-cover.has-background-dim:not([class*="-background-color"]) {
	background-color: transparent;
}

/* ----------------------------------------------------------------- */
/* Punch text
/* ----------------------------------------------------------------- */
div.punch_text {
	display: flex;
	justify-content: center;
	overflow: hidden;
	font-size: clamp(1.2rem, 5vw, 5rem);
	height: 1.2em;
	margin-top: .5em;
	margin-bottom: .5em;
}

.content__container {
	overflow: hidden;
	height: 1.2em;
	display: inline-flex;
	align-items: flex-start;
	justify-content: center;
	gap: 0;
}

.content__container__text {
	text-align: center;
	margin: 0;
}

.content__container__list {
	margin: 0;
	padding-left: 2vw;
	list-style: none;
	animation-name: change;
	animation-duration: 15s;
	animation-iteration-count: infinite;
}

@keyframes opacity {
	0%, 100% {opacity:0;}
	50% {opacity:1;}
}

@keyframes change {
	0%, 10%, 100% {transform:translate3d(0,0,0);}
	20%, 30% {transform:translate3d(0,-20%,0);}
	40%, 50%{transform:translate3d(0,-40%,0);}
	60%, 70%{transform:translate3d(0,-60%,0);}
	80%, 90%{transform:translate3d(0,-80%,0);}
}

/* ----------------------------------------------------------------- */
/* Light CSS tabs
/* ----------------------------------------------------------------- */
.tabs {
	display: flex;
	flex-wrap: wrap;
}

.tabs input[type="radio"] {
	display: none;
}

.tabs input[type="radio"]:checked + label {
	background-color: var(--wp--preset--color--base);
	color: var(--wp--preset--color--contrast);
}

.tabs input[type="radio"]:checked + label + .tab {
	display: flex;
}

.tabs .tab {
	order: 99;
	flex-grow: 1;
	width: 100%;
	display: none;
	padding: 1em;
	background-color: var(--wp--preset--color--base);
	box-shadow: var(--wp--preset--shadow--natural);
	margin: 0;
}

@media (max-width: 600px) {
	.tabs .tab, .tabs label {
		order: initial;
	}
	.tabs label {
		width: 100%;
		margin-right: 0;
	}
}

/* ----------------------------------------------------------------- */
/* Tabbed Buttons JS
/* ----------------------------------------------------------------- */
.tabbed-buttons-nav .wp-block-button a {
	width: 100%;
}

.tabbed-buttons-nav .wp-block-button a.is-active {
	background-color: var(--wp--preset--color--base);
	color: var(--wp--preset--color--contrast);
}

.tabbed-buttons-nav .wp-block-button a.wp-element-button::after {
	display: none;
}

.tabbed-buttons-nav + .tabbed-content {
	display: flex;
}

.tabbed-content {
	display: none;
	padding: 1em;
	background-color: var(--wp--preset--color--base);
	box-shadow: var(--wp--preset--shadow--natural);
	margin: 0;
}

html.no-js .tabbed-content {
	display: flex;
}

@media screen and (max-width: 600px) {
	.tabbed-buttons-nav .wp-block-button {
		display: flex;
		justify-content: center;
		width: 100%;
		padding: 0;
	}
}

/* ----------------------------------------------------------------- */
/* IMAGE HOVER EFFECTS
/* ----------------------------------------------------------------- */
[class^="imghvr-"], [class*=" imghvr-"] {
	position: relative;
	margin: 0;
	max-width: 100%;
	overflow: hidden;
	-webkit-backface-visibility: hidden;
	backface-visibility: hidden;
	-webkit-transform: translateZ(0);
	transform: translateZ(0);
}

[class^='imghvr-'] > img, [class*=' imghvr-'] > img {
	vertical-align: top;
	max-width: 100%;
}

[class^='imghvr-'] figcaption, [class*=' imghvr-'] figcaption {
	padding: 1em;
	margin: 0;
	position: absolute;
	top: 0;
	bottom: 0;
	left: 0;
	right: 0;
	line-height: initial;
}

[class^='imghvr-'], [class*=' imghvr-'], [class^='imghvr-']:before,
[class^='imghvr-']:after, [class*=' imghvr-']:before, [class*=' imghvr-']:after,
[class^='imghvr-'] *, [class*=' imghvr-'] *, [class^='imghvr-'] *:before,
[class^='imghvr-'] *:after, [class*=' imghvr-'] *:before, [class*=' imghvr-'] *:after {
	box-sizing: border-box;
	-webkit-transition: all 0.35s ease;
	transition: all 0.35s ease;
}

/* imghvr-flip-*
   ----------------------------- */
[class^='imghvr-flip-'], [class*=' imghvr-flip-'] {
	-webkit-perspective: 50em;
	perspective: 50em;
}

[class^='imghvr-flip-'] img, [class*=' imghvr-flip-'] img {
	backface-visibility: hidden;
}

[class^='imghvr-flip-'] figcaption, [class*=' imghvr-flip-'] figcaption {
	opacity: 0;
}

[class^='imghvr-flip-']:hover > img, [class*=' imghvr-flip-']:hover > img {
	opacity: 0;
}

[class^='imghvr-flip-']:hover figcaption, [class*=' imghvr-flip-']:hover figcaption {
	opacity: 1;
	-webkit-transition-delay: 0.14s;
	transition-delay: 0.20s;
}

/* imghvr-flip-vert
   ----------------------------- */
.imghvr-flip-vert figcaption {
	-webkit-transform: rotateY(90deg);
	transform: rotateY(90deg);
	-webkit-transform-origin: 50% 0%;
	transform-origin: 50% 0%;
}

.imghvr-flip-vert:hover > img {
	-webkit-transform: rotateY(-180deg);
	transform: rotateY(-180deg);
}

.imghvr-flip-vert:hover figcaption {
	-webkit-transform: rotateY(0deg);
	transform: rotateY(0deg);
	overflow: auto;
}

/* ----------------------------------------------------------------- */
/* Core Accordion
/* ----------------------------------------------------------------- */
.is-style-accordion-arrow-style .wp-block-accordion-heading__toggle-icon {
	font-size: 0; /* Hide the + */
	width: auto;
}

.is-style-accordion-arrow-style .wp-block-accordion-heading__toggle-icon::before {
	content: "▶";
	font-size: 1rem;
	display: inline-flex;
	padding: .5em;
	transition: transform 0.2s;
}

.is-style-accordion-arrow-style .wp-block-accordion-heading__toggle[aria-expanded="true"] .wp-block-accordion-heading__toggle-icon::before {
	transform: rotate(90deg);
}

.is-style-accordion-arrow-style .wp-block-accordion-item.is-open>.wp-block-accordion-heading .wp-block-accordion-heading__toggle-icon {
	transform: none;
}

/* ----------------------------------------------------------------- */
/* JUSTIFIED GALLERY
/* ----------------------------------------------------------------- */
.wp-justified-gallery {
	justify-content: center;
}
.wp-justified-gallery .wp-lightbox-overlay .wp-block-image img {
	max-height: unset !important;
	--wp--lightbox-image-width: auto !important;
}

.wp-justified-gallery.has-nested-images figure.wp-block-image:not(#individual-image) {
	width: fit-content !important;
	max-width: fit-content;
	align-items: center;
}

.wp-justified-gallery.has-nested-images figure.wp-block-image img {
	display: flex;
	max-height: 40vh;
	min-height: fit-content;
}

@media (min-width: 600px) {
	.wp-justified-gallery.has-nested-images figure.wp-block-image img {
		min-height: 40vh;
	}
}

/* ----------------------------------------------------------------- */
/* Random quotation
/* ----------------------------------------------------------------- */
.random-quotation {
	font-style: italic;
	text-align: center;
}
