
/* default styles for extension "tx_frontend" */
    .ce-align-left { text-align: left; }
    .ce-align-center { text-align: center; }
    .ce-align-right { text-align: right; }

    .ce-table td, .ce-table th { vertical-align: top; }

    .ce-textpic, .ce-image, .ce-nowrap .ce-bodytext, .ce-gallery, .ce-row, .ce-uploads li, .ce-uploads div { overflow: hidden; }

    .ce-left .ce-gallery, .ce-column { float: left; }
    .ce-center .ce-outer { position: relative; float: right; right: 50%; }
    .ce-center .ce-inner { position: relative; float: right; right: -50%; }
    .ce-right .ce-gallery { float: right; }

    .ce-gallery figure { display: table; margin: 0; }
    .ce-gallery figcaption { display: table-caption; caption-side: bottom; }
    .ce-gallery img { display: block; }
    .ce-gallery iframe { border-width: 0; }
    .ce-border img,
    .ce-border iframe {
        border: 2px solid #000000;
        padding: 0px;
    }

    .ce-intext.ce-right .ce-gallery, .ce-intext.ce-left .ce-gallery, .ce-above .ce-gallery {
        margin-bottom: 10px;
    }
    .ce-image .ce-gallery { margin-bottom: 0; }
    .ce-intext.ce-right .ce-gallery { margin-left: 10px; }
    .ce-intext.ce-left .ce-gallery { margin-right: 10px; }
    .ce-below .ce-gallery { margin-top: 10px; }

    .ce-column { margin-right: 10px; }
    .ce-column:last-child { margin-right: 0; }

    .ce-row { margin-bottom: 10px; }
    .ce-row:last-child { margin-bottom: 0; }

    .ce-above .ce-bodytext { clear: both; }

    .ce-intext.ce-left ol, .ce-intext.ce-left ul { padding-left: 40px; overflow: auto; }

    /* Headline */
    .ce-headline-left { text-align: left; }
    .ce-headline-center { text-align: center; }
    .ce-headline-right { text-align: right; }

    /* Uploads */
    .ce-uploads { margin: 0; padding: 0; }
    .ce-uploads li { list-style: none outside none; margin: 1em 0; }
    .ce-uploads img { float: left; padding-right: 1em; vertical-align: top; }
    .ce-uploads span { display: block; }

    /* Table */
    .ce-table { width: 100%; max-width: 100%; }
    .ce-table th, .ce-table td { padding: 0.5em 0.75em; vertical-align: top; }
    .ce-table thead th { border-bottom: 2px solid #dadada; }
    .ce-table th, .ce-table td { border-top: 1px solid #dadada; }
    .ce-table-striped tbody tr:nth-of-type(odd) { background-color: rgba(0,0,0,.05); }
    .ce-table-bordered th, .ce-table-bordered td { border: 1px solid #dadada; }

    /* Space */
    .frame-space-before-extra-small { margin-top: 1em; }
    .frame-space-before-small { margin-top: 2em; }
    .frame-space-before-medium { margin-top: 3em; }
    .frame-space-before-large { margin-top: 4em; }
    .frame-space-before-extra-large { margin-top: 5em; }
    .frame-space-after-extra-small { margin-bottom: 1em; }
    .frame-space-after-small { margin-bottom: 2em; }
    .frame-space-after-medium { margin-bottom: 3em; }
    .frame-space-after-large { margin-bottom: 4em; }
    .frame-space-after-extra-large { margin-bottom: 5em; }

    /* Frame */
    .frame-ruler-before:before { content: ''; display: block; border-top: 1px solid rgba(0,0,0,0.25); margin-bottom: 2em; }
    .frame-ruler-after:after { content: ''; display: block; border-bottom: 1px solid rgba(0,0,0,0.25); margin-top: 2em; }
    .frame-indent { margin-left: 15%; margin-right: 15%; }
    .frame-indent-left { margin-left: 33%; }
    .frame-indent-right { margin-right: 33%; }

/*
 * Définitions de polices, couleurs et larheurs
 * */

@font-face {
	font-family: 'Poppins';
	font-style: normal;
	font-weight: 400; /* normal */
	src: url('../../../typo3conf/ext/op22/Resources/Public/Fonts/Poppins-Light.ttf') format('truetype');
}
@font-face {
	font-family: 'Poppins';
	font-style: normal;
	font-weight: 700; /* bold */
	src: url('../../../typo3conf/ext/op22/Resources/Public/Fonts/Poppins-Medium.ttf') format('truetype');
}
@font-face {
	font-family: 'Poppins';
	font-style: normal;
	font-weight: 800;
	src: url('../../../typo3conf/ext/op22/Resources/Public/Fonts/Poppins-SemiBold.ttf') format('truetype');
}
@font-face {
	font-family: 'Poppins';
	font-style: normal;
	font-weight: 900;
	src: url('../../../typo3conf/ext/op22/Resources/Public/Fonts/Poppins-Bold.ttf') format('truetype');
}

@font-face {
	font-family: 'Pictos';
	font-style: normal;
	font-weight: 300;
	src: url('../../../typo3conf/ext/op22/Resources/Public/Fonts/Pictos.ttf') format('truetype');
}

:root {
/* Les couleurs */
	--c-fond: #FFF;
	--c-texte: #000;
	--c-acc1: #0067ad;
	--c-acc2: #fdca00;
	--c-acc3: #dc011e;
	--c-fond-alt: #00254d;
/* Les largeurs */
	--largeur-max: 100vw;
	@media (min-width: 900px) {
		--largeur-max: 80vw;
	}
	@media (min-width: 1200px) {
		--largeur-max: 1100px;
	}
	@media (min-width: 1600px) {
		--largeur-max: 1400px;
	}
	--c-fond-mix: color-mix(var(--c-fond) 90%, transparent);
}


body {
	font-family: Poppins;
	color: var(--c-texte);
	background-color: var(--c-fond);
}

/*
 * Mise en page générale
 * */

body {
	background: radial-gradient(var(--c-fond), color-mix(#E6ECF3 80%, transparent) ),
		url('../../../typo3conf/ext/op22/Resources/Public/Images/photo-hall.png') center center/cover no-repeat;
	background-attachment: fixed;
	display: flex;
	flex-direction: column;
	min-height: 100vh;
	margin: 0;
}

h1 {
	font-weight: bold;
}
h1, h2, h3, h4, h5 {
	color: var(--c-acc1);
}
a {
	color: inherit;
	text-decoration: none;
}

.hero,
.pieddepage,
.titre-bandeau h1,
h1.titre-page {
	padding: .5rem 2rem;
}

.hero,
.pieddepage,
.titre-bandeau h1,
h1.titre-page,
.contents  {
	box-sizing: border-box;
	max-width: var(--largeur-max);
	width: 100%;
	margin: 0 auto;
}

.fond-hero {
	background: var(--c-fond-alt) url('../../../typo3conf/ext/op22/Resources/Public/Images/vague-fili-tete.png') center center no-repeat;
	@media (min-width: 900px) {
		background:
			var(--c-fond-alt) url('../../../typo3conf/ext/op22/Resources/Public/Images/vague-fili-tete.png') top center no-repeat;
			box-shadow: 0 0 10px var(--c-fond-alt);
	}
}
.hero {
	display: flex;
	justify-content: space-between;
	.logo {
		vertical-align: bottom;
		height: 7rem;
	}
	@media (min-width: 900px) {
		.logo {
			height: 10rem;
		}
		padding-block: 3rem;
	}
}

.page {
	margin-block: 0 auto;
	@media (min-width: 900px) {
		padding-top: 1rem;
	}
}

.titre-bandeau {
	> h1 {
		max-width: calc( var(--largeur-max) - 4rem );
		width: fit-content;
		font-size: 2.5rem;
		text-align: center;
		text-wrap: balance;
		position: relative;
		isolation: isolate;
		&::before {
			content: "";
			display: block;
			position:absolute;
			inset: 0;
			background: var(--c-fond);
			z-index: -1;
			transform: scale(1.1) skew(-15deg) rotate(-1deg);
			border-radius: 10px;
		}
		@media (min-width: 900px) {
			font-size: 3rem;
		}
	}
	padding: 3rem 5rem;
	background-image: var(--image-fond);
	background-repeat: no-repeat;
	background-size: cover;
	background-position: center;
	@media (min-width: 900px) {
		padding: 5rem 5rem;
	}
}

h1.titre-page {
	font-size: 2.5rem;
	padding-top: 1rem;
}

.contents {
	flex: 1 0 auto;
	padding: 2rem;

	.content:not(:has(.frame)) {
		--larg-over: calc(100vw - 30px);
		margin: auto 0;
		width: 100vw;
		max-width: var(--larg-over);
		position: relative;
		left: calc(0px - ( var(--larg-over) - 100% ) / 2);
	}

	.cadre-carte,
	.frame-layout-101 {
		overflow: clip;
		> header {
			margin: -.5rem -1.5rem 0 -1.5rem;
			background: var(--c-acc1);
			color: var(--c-fond);
			padding: .8em 1rem;
			& * {
				color: inherit;
				margin-block: 0;
			}
		}
		border-radius: 1rem;
		padding: .5rem 1.5rem;
		color: var(--c-texte);
		background-color: var(--c-fond);
	}
}
.contents > .grille3 {
	display: grid;
	grid-template-columns: 1fr;
	gap: 1rem;
	@media (min-width: 900px) {
		display: grid;
		grid-template-columns: 1fr 1fr;
		gap: 1rem;
	}
	@media (min-width: 1200px) {
		grid-template-columns: 1fr 1fr 1fr;
	}
	.content {
		display: flex;
		flex-direction: column;
		.frame-default {
			flex-grow: 1;
		}
	}
}

.contents {
	.content + .colonnes2 {
		padding-top: 1rem;
	}
	.colonnes2 {
		display: grid;
		grid-template-columns: 1fr;
		gap: 1rem;
		@media (min-width: 900px) {
			grid-template-columns: 1fr 1fr;
			> div {
				display: flex;
				flex-direction: column;
				> .content {
					flex-grow: 1
				}
			}
		}
		.content {
			display: flex;
			flex-direction: column;
			.frame-default {
				flex-grow: 1;
			}
		}
	}
	&:has(.colonnes2 + .content) {
		.colonnes2 {
			padding-bottom: 1rem;
		}
	}
}

.fond-pieddepage {
	color: var(--c-texte);
	margin-top: 1rem;
	@media (min-width: 900px) {
		padding-top: 1rem;
	}
}

body.layout-150 {
	background: var(--c-fond-alt) url('../../../typo3conf/ext/op22/Resources/Public/Images/vague-fili-tete.png') top center no-repeat;
	background-attachment: scroll;
	.fond-hero {
		background: transparent;
		@media (min-width: 900px) {
			background: transparent;
		}
	}
	.page {
		margin-block: auto;
	}
	.contents {
		color: var(--c-fond);
	}
	.fond-pieddepage {
		--c-texte: var(--c-fond);
		background: transparent;
		@media (min-width: 900px) {
			background: transparent;
			margin-top: 3rem;
			padding-top: 3rem;
		}
	}
}

/*
	Menus
*/

.menu-container {
	position: relative;
	label {
		color: var(--c-acc1);
		background: var(--c-fond);
		border-radius: 15px;
		border: 2px solid var(--c-fond-alt);
		cursor: pointer;
		display: block;
		inline-size: 2rem;
		line-height: 0;
		padding: 10px;
	}
	label:hover {
		background-color: var(--c-acc1);
		color: var(--c-fond);
	}
	input {
		display: none;
	}
	&:has(input:checked) {
		label {
			background-color: var(--c-fond);
			color: var(--c-acc1);
			border-radius: 15px 15px 0 0;
		}
		nav {
			display: block;
			position: absolute;
			right: 0;
			margin: 0;
			border-radius: 15px 0 15px 15px;
			overflow: clip;
			z-index: 100;
		}
	}
}

.icone-menu {
	display: inline-block;
	object-fit: contain;
}


nav.main {
	display: none;
	background-color: var(--c-fond);
	border: 2px solid var(--c-fond-alt);
	ul {
		display: block;
		margin: unset;
		padding: 0;
		li {
			display: block;
			a {
				display: block;
				padding: 10px 20px;
				text-wrap: nowrap;
			}
		}
	}
	ul.niveau2 {
		a {
			padding: 5px 20px 5px 40px;
		}
	}
	&:not(&:has(:hover)) {
		li.current > a {
			color: var(--c-fond);
			background-color: var(--c-acc1);
		}
	}
	a:hover,
	a:active {
		color: var(--c-fond);
		background-color: var(--c-acc1);
	}
}

@media (min-width: 900px) {
	.menu-container {
		align-self: end;
	}
	.menu-container label {
		display: none
	}
	nav.main {
		display: block;
		position: relative !important;
		overflow: visible !important;
		background-color: transparent;
		border: none;
		a {
			border-radius: 25vw;
			color: var(--c-fond);
			font-weight: bold;
		}
		ul.niveau1 {
			display: flex;
			flex-direction: row;
			flex-wrap: wrap;
			justify-content: right;
			> li {
				position: relative;
			}
			a:hover {
				background: var(--c-acc1);
				color: var(--c-fond);
			}
		}
		ul.niveau2 {
			display: none;
			position: absolute;
			z-index: 1;
			border-style: solid;
			border-color: var(--c-fond-alt);
			border-width: 0 2px 2px 2px;
			min-width: 100%;
			background: var(--c-fond);
			padding: 10px;
			margin-top: -2px;
			margin-left: -10px;
			border-radius: 15px;
			a {
				color: var(--c-texte);
				padding: 10px 20px;
			}
			a:hover {
				background: var(--c-acc1);
				color: var(--c-fond);
			}
		}
		a:hover + ul.niveau2,
		ul.niveau2:hover {
			display: block;
		}
		li:has(ul.niveau2) {
			> a:hover {
				border-radius: 1rem 1rem 0 0;
			}
			> a::after {
				font-family: pictos;
				content: "B";
			}
		}
		li:has(ul.niveau2:hover) > a {
			border-radius: 1rem 1rem 0 0;
			background: var(--c-fond);
			color: color-mix( var(--c-texte), var(--c-fond) );
		}
		&:not(:has(:hover)) {
			li.active > a {
				color: var(--c-fond);
				background-color: var(--c-acc1);
			}
		}
	}
}

.pieddepage ul {
	display: flex;
	justify-content: center;
	flex-direction: column;
	padding: 0;
	margin: 0;
	gap: .5rem;
	> li {
		list-style: none;
		text-align: center;
		& > a {
			color: color-mix( var(--c-texte) 60%, transparent);
			display: inline-block;
			margin: auto;
			&:hover,
			&:active {
				color: var(--c-acc1);
			}
		}
	}
}

@media (min-width: 900px) {
	.pieddepage ul {
		flex-direction: row;
		flex-wrap: wrap;
		> li {
			& + li:before {
				content: "-"
			}
			& > a {
				margin: 0 15px;
			}
		}
	}
}

/*
	Styles
*/

.content {

	.frame-layout-0 {
		.ce-bodytext > *:first-child,
		& > header + ul,
		& > header + ol,
		& > header + dl,
		& > header + p {
			margin-top: 0;
		}
	}

	a {
		color: var(--c-acc1);
	}
	a:hover {
		text-decoration: underline;
	}

	a.bouton {
		text-decoration: none;
		font-weight: bold;
		background-color: var(--c-acc1);
		border: 2px solid var(--c-acc1);
		outline: 1px solid var(--c-acc1);
		color: var(--c-fond);
		display: inline-block;
		padding: .5em 1em;
		margin-inline: .5em;
		margin-block: .2em;
		border-radius: 50vh;
		&:hover {
			border-color: var(--c-fond);
		}
	}

	.picto-dl::before,
	.picto-tel::before,
	.picto-mail::before {
		font-family: Pictos;
		font-size: 1.1em;
		display: inline-block;
		margin-right: .5em;
	}

	.picto-dl::before {
		content: "D";
	}
	.picto-mail::before {
		content: "M";
	}
	.picto-tel::before {
		content: "T";
	}

	.picto-forward::after {
		font-family: Pictos;
		font-size: 1.1em;
		display: inline-block;
		margin-left: .5em;
	}

	.picto-forward::after {
		content: "F";
	}

	p.text-justify {
		text-align: justify;
	}
	p.text-center {
		text-align: center;
	}
	p.text-right {
		text-align: right;
	}
	p.grand {
		font-size: 150%;
		line-height: 1.3em;
	}

	blockquote {
		position: relative;
		margin:0;
		padding: 1em 1.5em;
		font-style: italic;
		&::before, &::after {
			display: block;
			position: absolute;
			opacity: .15;
			scale: .5;
		}
		&::before {
			content: url('../../../typo3conf/ext/op22/Resources/Public/Images/citation-debut.png');
			transform-origin: top left;
			top: 0;
			left: 0;
		}
		&::after {
			content: url('../../../typo3conf/ext/op22/Resources/Public/Images/citation-fin.png');
			transform-origin: bottom right;
			right: 0;
			bottom: 0;
		}
		overflow: hidden;
		@media (min-width: 900px) {
			padding: 2em 5em;
			&::before, &::after {
				scale: 1;
			}
		}
	}

	.ce-cta {
		position: relative;
		--couleur-alt: color-mix( var(--c-acc1), transparent 50%);
		--action-image: var(--uri-image, linear-gradient( var(--couleur-alt), var(--c-acc1) ));
		border-radius: 1rem;
		border: 1px solid var(--c-acc1);
		overflow: clip;
		&::before {
			content: " ";
			display: block;
			background-image: var(--action-image);
			background-size: cover;
			background-position: center;
			position: absolute;
			inset: 0px;
			z-index: -1;
		}
		text-decoration: none;
		color: var(--c-texte);
		font-size: 120%;
		height: 100%;
		display: flex;
		flex-direction: column;
		justify-content: space-between;
		background-color: color-mix( transparent, var(--c-fond) 75% );
		transition: background-color ease-in-out 100ms, color ease-in-out 100ms;
		.text {
			display: block;
			padding: 1em 2em;
			flex-grow: 1;
		}
		.action {
			font-weight: bold;
			display: block;
			text-align: right;
			text-wrap: balance;
			color: inherit;
			padding: 1em 3em 1em 1em;
			transition: translate ease-in-out 500ms;
		}
		&:hover {
			text-decoration: none;
			color: var(--c-fond);
			background-color: color-mix( var(--c-acc1), transparent 20%);
			.action {
				translate: 1em 0;
			}
		}
	}

	.ce-image .ce-gallery {
		/* Images seulement */
		width: 100%;
	}
	.ce-textpic.ce-intext .ce-gallery {
		/* Textes et images, habillé ou à côté */
		width: 30%;
	}
	.ce-textpic.ce-above .ce-gallery,
	.ce-textpic.ce-below .ce-gallery {
		/* Textes et images, au-dessus ou en dessous */
		width: 80%;
		margin-inline: auto;
	}
	.ce-left .ce-gallery {
		justify-content: left;
	}
	.ce-right .ce-gallery {
		justify-content: right;
	}
	.ce-center .ce-gallery {
		justify-content: center;
	}
	.ce-gallery {
		--nb-columns: var(--max-columns, 1);
		--larg-col: calc(calc(100% - var(--nb-columns) * .5rem  ) / var(--nb-columns));
		box-sizing: border-box;
		display: flex;
		flex-wrap: wrap;
		gap: .5rem;
		align-items: baseline; /* Alignement vertical */
	}
	.ce-gallery .ce-mediaframe {
		max-width: var(--larg-col);
		flex-grow: 0;
		flex-shrink: 1;
		box-sizing: border-box;
		text-align: center;
		figure {
			display: inline-table;
			margin: 0;
			img {
				max-width: 100%;
				height: auto;
				margin: 0;
			}
			figcaption {
				display: table-caption;
				caption-side: bottom;
				font-size: 80%;
				font-style: italic;
				text-overflow: ellipsis;
				overflow: hidden;
				opacity: .5;
				transition: opacity ease 1s;
				padding: 2px .5em 0 .5em;
			}
			&:hover figcaption {
				opacity: 1;
			}
		}
	}
	.ce-gallery.ce-border {
		img, iframe {
			border: 2px solid color-mix(var(--c-texte), var(--c-fond));
			padding: 0px;
		}
	}

}

.frame-type-menu_abstract {
	> ul {
		display: flex;
		gap: 2rem;
		> li {
			list-style: none;
		}
		> li > header {
			font-weight: bold;
			font-size: 110%;
		}
	}
}

.frame-type-uploads {
	.icon {
		display: inline-flex;
		height: 2em;
		width: 2em;
		line-height: 2em;
		position: relative;
		.icon-markup {
			position: absolute;
			top: 0;
			left: 0;
			right: 0;
			bottom: 0;
			line-height: inherit;
			svg {
				height: 100%;
				width: 100%;
			}
		}
	}
	.op-downloads {
		display: inline-flex;
		flex-direction: column;
		padding: 0;
		> li {
			display: inline-block;
		}
		@media (min-width: 900px) {
			padding-left: 2em;
		}
	}
	.op-downloads-link {
		display: flex;
		flex-direction: column;
		border: 1px solid transparent;
		border-radius: 5px;
		padding: .5em 1em .5em .5em;
		&:hover {
			text-decoration: none;
			background: var(--c-fond);
			border-color: var(--c-acc1);
		}
		@media (min-width: 900px) {
			flex-direction: row;
			align-items: center;
		}
	}
	.op-downloads-type0 {
		.op-downloads-filename::before {
			content: "D";
			font-family: Pictos;
			font-size: 1.1em;
			display: inline-block;
			margin-right: .5em;
		}
	}
	.op-downloads-type1,
	.op-downloads-type2 {
		.op-downloads-picture {
			margin-right: .5em;
			position: relative;
			width: 2em;
			height: 2em;
		}
		.icon {
			position: absolute;
			top: 10%;
			left: 10%;
			width: 80%;
			height: 80%;
		}
	}
	.op-downloads-type2 {
		.op-downloads-picture {
			border: 1px solid color-mix(var(--c-texte) 25%, var(--c-fond));
			border-radius: 5px;
			overflow: clip;
			background: var(--c-fond);
			height: 5em;
			width: unset;
			aspect-ratio: 16/9;
			margin-right: auto;
			@media (min-width: 900px) {
				margin-right: 1em;
			}
		}
		.op-downloads-link:hover .op-downloads-picture {
			border-color: transparent;
		}
		.op-downloads-thumbnail + .icon {
			left: unset;
			top: unset;
			right: 5px;
			bottom: 5px;
			width: 1.5em;
			height: 1.5em;
			opacity: .5;
		}
	}
	.op-downloads-thumbnail {
		object-fit: contain;
		padding: 2px;
		height: 100%;
		width: 100%;
	}
	.op-downloads-picture {
		grid-area: miniature;
	}
	.op-downloads-filename {
		display: block;
		text-overflow: ellipsis;
		overflow: hidden;
	}
	.op-downloads-description {
		display: block;
		font-size: 90%;
		font-style: italic;
	}
	.op-downloads-filesize {
		font-size: 70%;
	}
}

.tx-ttaddress {
	#ttaddress__map {
		border-radius: 20px;
		border: 2px solid var(--c-fond);
		overflow: clip;
		aspect-ratio: 2 / 1;
	}
	ul.liste-adresses {
		padding: 0;
		margin: 1rem 0;
	}
	li.adresse {
		margin-top: 1em;
		list-style: none;
		.address {
			margin: 1em 0;
			background: url('../../../typo3conf/ext/op22/Resources/Public/Images/map-maps-and-location-svgrepo-com.svg') left top / 1.5rem no-repeat;
			min-height: 2rem;
			padding-left: 3rem;
		}
		.horaires {
			margin: 1em 0;
			background: url('../../../typo3conf/ext/op22/Resources/Public/Images/clock-check-svgrepo-com.svg') left top / 1.5rem no-repeat;
			min-height: 2rem;
			padding-left: 3rem;
			p {
				margin: 0;
			}
		}
		footer {
			text-align: right;
		}
	}
	@media (min-width: 900px) {
		.tt_address_list {
			display: grid;
			grid-template-columns: auto 25rem;
		}
		.carte-adresses {
			padding: 1rem 1rem 1rem 0;
			align-self: flex-start;
			position: sticky;
			top: 10vh;
		}
		ul.liste-adresses {
			margin: 0;
			padding: 0 0 8rem 1rem;
		}
		#ttaddress__map {
			margin: 1rem 0 0 1rem;
			aspect-ratio: unset;
			height: 75vh;
		}
	}
}
