@Font-Face {
	font-family: "arial";
	src: url("fonts/arial.ttf") format("truetype");
	font-display: swap; }
@font-face {
	font-family: "space";
	src: url("fonts/space.ttf") format("truetype");
	font-display: swap; }
@font-face {
	font-family: "smilecandy";
	src: url("fonts/smilecandy.ttf") format("truetype");
	font-display: swap; }

Html, body, body * { font-family: "arial", sans-serif; }

:Root {
	--panel: rgba(255, 255, 255, .16);
	--ink: #080808;
	--line: rgba(255, 255, 255, .48);
	--shadow: 0 .55rem 1.5rem rgba(0, 0, 0, .24); }

* { Box-sizing: border-box; }

Html, body {
	width: 100%;
	height: 100%;
	margin: 0; }

Body {
	display: flex;
	flex-direction: column;
	overflow-x: hidden;
	overflow-y: auto;
	color: var(--ink);
	font-family: 'space';
	background:
		linear-gradient(rgba(255,255,255,.08), rgba(255,255,255,.08)),
		url("fond.jpg") center center / cover no-repeat fixed; }

img { display: block; max-width: 100%; }

.page {
	display: flex;
	flex: 1 0 auto;
	flex-direction: column;
	width: 100%;
	min-height: 0; }

.hero {
	position: relative;
	width: min(1180px, 100%);
	margin: 0 auto;
	text-align: center; }

.tagline {
	margin-top: 35px;
	margin-bottom: 20px;
	font-family: "space", sans-serif;
	font-size: 23px;
	line-height: 1.08;
	letter-spacing: .025em;
	text-transform: uppercase;
	text-shadow: 0 0 .45rem rgba(255,255,255,.95); }

		.tagline a,
		.tagline a:visited,
		.tagline a:hover,
		.tagline a:active { color: #000; text-decoration: none; }

.title-row {
	display: flex;
	justify-content: center;
	align-items: center;
	gap: 20px; }

.sitetitle, .sitetitle-b {
	text-align: center;
	font-family: "space", sans-serif;
	font-size: 64px;
	margin-top: 20px;
	margin-bottom: 30px;
	line-height: .9;
	letter-spacing: .02em;
	text-transform: uppercase;
	text-shadow:
		0 0 8px #fff,
		0 0 16px #fff,
		0 0 32px #fff,
		0 0 64px #fff,
		0 0 128px #fff,
		0 0 256px #fff; }

	/*-- Seconde ligne de titre --*/
	.sitetitle-b { font-size: 45px; }	

h1 {
	text-align: center;
	text-transform: uppercase;
	font-size: 35px;
	margin-top: 25px;
	margin-bottom: 25px;
	text-align: center;
	line-height: 1.5;
	text-shadow: 1px 2px 2px rgba(0, 0, 0, 0.3); }

h2 {
	text-align: center;
	font-size: 20px;
	margin-top: 25px;
	margin-bottom: 25px;
	text-align: center;
	line-height: 1.5; }

.smile-letters { font-family: "smilecandy", sans-serif; }

.menu {
	position: absolute;
	right: 8%;
	top: 50%;
	z-index: 20;
	transform: translatey(-50%); }

		.menu-button {
			display: grid;
			place-items: center;
			width: 48px;
			aspect-ratio: 1;
			padding: .7rem;
			border: 1px solid var(--line);
			border-radius: 1rem;
			background: rgba(255,255,255,.82);
			box-shadow: var(--shadow);
			cursor: pointer; }

		.menu-button span,
		.menu-button::before,
		.menu-button::after {
			content: "";
			width: 100%;
			height: .22rem;
			border-radius: 999px;
			background: #111; }

		.menu-button { gap: .34rem; }

		.menu-list {
			position: absolute;
			top: calc(100% + .45rem);
			right: 0;
			min-width: 10rem;
			margin: 0;
			padding: .4rem;
			list-style: none;
			border: 1px solid rgba(255,255,255,.75);
			border-radius: .9rem;
			background: rgba(255,255,255,.96);
			box-shadow: var(--shadow);
			opacity: 0;
			visibility: hidden;
			transform: translatey(-.4rem);
			transition: .2s ease; }

				.menu.is-open .menu-list {
					opacity: 1;
					visibility: visible;
					transform: translatey(0); }

				.menu-list a {
					display: block;
					padding: .72rem .9rem;
					border-radius: .6rem;
					font-weight: 700;
					color: #000;
					text-align: left;
					text-decoration: none; }

				.menu-list a:hover,
				.menu-list a:focus-visible { background: #ececff; }

Main { display: block;
	   min-height: 0; }

.message-page, .message-maj { text-align: center; }

		.message-page { margin: 10px 0 10px 0; }
		.message-maj { margin: 5px 0 10px 0; }

.services {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	grid-template-rows: repeat(2, minmax(0, 1fr));
	gap: 8px 12px;
	width: min(1040px, 100%);
	margin: 2.2rem auto 3rem; }

		/*--- Tous les liens sont noirs ---*/
		.service-card, .service-card:visited, .service-card:hover, .service-card:focus, .service-card:active {
			color: #000;
			text-decoration: none; }

	.service-card {
		position: relative;
		min-height: 0;
		overflow: hidden;
		border: 1px solid var(--line);
		border-radius: 16px;
		background: var(--panel);
		box-shadow: 0 .28rem .8rem rgba(0,0,0,.14);
		text-decoration: none;
		transition: transform .18s ease, box-shadow .18s ease; }

			.service-card:hover, .service-card:focus-visible {
				z-index: 3;
				transform: translatey(-.2rem) scale(1.015);
				box-shadow: var(--shadow);
				outline: none; }

			.service-card img {
				width: 100%;
				height: 100%;
				object-fit: cover; }

	.service-label {
		position: absolute;
		left: .45rem;
		right: .45rem;
		bottom: .42rem;
		padding: .42rem .45rem;
		border-radius: .55rem;
		background: rgba(255,255,255,.92);
		font-family: 'space';
		font-size: 20px;
		color: #000;
		line-height: 1;
		text-align: center;
		box-shadow: 0 .15rem .5rem rgba(0,0,0,.18);
		transition: opacity .18s ease, transform .18s ease; }

	.service-tooltip {
		position: absolute;
		top: 50%;
		left: 50%;
		z-index: 2;
		display: flex;
		flex-direction: column;
		align-items: center;
		justify-content: center;
		width: min(76%, 12rem);
		aspect-ratio: 1;
		padding: 1rem;
		border: 1px solid rgba(255,255,255,.85);
		border-radius: .9rem;
		background: rgba(255,255,255,.94);
		box-shadow: 0 .55rem 1.5rem rgba(0,0,0,.30);
		font-size: 15px;
		font-weight: 700;
		color: #000;
		line-height: 1.35;
		text-align: center;
		opacity: 0;
		visibility: hidden;
		transform: translate(-50%, -46%) scale(.92);
		transition: opacity .18s ease, transform .18s ease, visibility .18s ease;
		pointer-events: none; }

			.service-tooltip i {
				margin-top: .35rem;
				font-size: 13px;
				font-weight: 400; }

			.service-card:hover .service-tooltip,
			.service-card:focus-visible .service-tooltip {
				opacity: 1;
				visibility: visible;
				transform: translate(-50%, -50%) scale(1); }

			.service-card:hover .service-label,
			.service-card:focus-visible .service-label {
				opacity: 0;
				transform: translatey(.35rem); }

			.service-card:hover img,
			.service-card:focus-visible img {
				filter: brightness(.62) blur(1px);
				transform: scale(1.03); }

			.service-card img { transition: filter .18s ease, transform .18s ease; }

.descriptif {
    width: min(1000px, 90%);
    margin: 0 auto 40px;
    padding: 20px; }

		.descriptif h2 { text-align: center; }
		.descriptif p {
			margin-top: 5px;
			margin-bottom: 5px;
			font-family: Arial, sans-serif;
			font-size: 16px;
			line-height: 1.5; }

.footer {
	position: static;
	width: 100%;

	Display: flex;
	justify-content: space-between;
	align-items: center;

	Padding: .55rem 1.2rem;

	Background: rgba(255,255,255,.48);
	backdrop-filter: blur(4px);
	-webkit-backdrop-filter: blur(4px);

	Font-size: .9rem; }

		.footer-left {
			display: flex;
			align-items: center;
			gap: .7rem; }

			/*--- LOGO OPTIONWEB AVEC LIEN & QUI SE RETOURNE AU SURVOL ---*/

			.footer-left .optionweb-link {
				display: flex;
				align-items: center;
				gap: .7rem;
				color: #000;
				text-decoration: none;
				transition: color .3s ease; }

			.footer-left .optionweb-link img {
				height: 34px;
				transition: transform .6s ease; }
			.footer-left .optionweb-link:hover { color: #f58220; }
			.footer-left .optionweb-link:hover img { transform: rotate(180deg); }


		/*--- ADRESSE & LIEN NOUS TROUVER ---*/
		.footer-right {
			display: flex;
			align-items: center;
			gap: .55rem;
			Text-align: right; }

				.footer a {
					color: #000;
					font-weight: bold;
					text-decoration: none; }

				.footer-address-mobile { display: none; }


/* Sur À propos, Contact et Réalisations : cacher toutes les lignes sauf la page courante */
.menu.current-only .menu-list li { display: none; }
.menu.current-only .menu-list li.current { display: block; }
.menu.current-only .menu-list li.current a {
    font-weight: 900;
    font-size: 1.1em;
    text-align: center;
    border: 2px solid #000; }

/* Au clic sur le bouton : afficher de nouveau toutes les lignes */
.menu.current-only.show-all .menu-list li { display: block; }


/*---------------- AFFICHAGE MOBILE ----------------*/

@Media (max-width: 720px) {

	.page {
		padding-left: 0;
		padding-right: 0; }

	.tagline {
		margin-inline: 3.8rem;
		font-size: 16px; }

	.title-row {
			display: flex;
			align-items: center;
			justify-content: space-between;
			min-height: 65px;
			padding: 0 25px;
			margin-top: -10px; }

			.sitetitle {
				margin: 0;
				text-align: left;
				font-size: 24px;
				line-height: 0.9; }

			.sitetitle .sitetitle-b { font-size: 22px; }

			.menu {
				position: static;
				transform: none;
				flex-shrink: 0; }
			
					.menu.current-only .menu-list {
						min-width: 9rem;
						padding: .2rem;
						top: calc(100% + .2rem); }

					.menu.current-only .menu-list a {
						padding: .4rem .6rem;
						font-size: 14px; }

	.message-page {
		text-align: left;
		margin: 20px 160px 5px 25px; }

			.message-maj {
				text-align: left;
				margin: 10px 20px 5px 25px; }

	.services {
		grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
		grid-template-rows: repeat(3, minmax(0, 1fr)) !important;
		width: min(340px, 82%);
		height: auto;
		margin: 1.6rem auto 1rem;
		gap: .50rem;
		padding-bottom: 40px; }

			.service-card { aspect-ratio: 1 / 1.08; }
			.service-label { font-size: 18px; }

	.hide-mobile { display: none !important; }

	.footer {
		flex-direction: column;
		justify-content: center;
		align-items: center;
		gap: .42rem;
		padding: .5rem .7rem;
		background: rgba(255,255,255,.42);
		font-size: .72rem;
		text-align: center; }

			.footer-left { justify-content: center; }
			.footer-left img { height: 26px; }

			.footer-right {
				display: flex;
				flex-direction: column;
				align-items: center;
				gap: .42rem;
				text-align: center; }

			.footer-address-desktop { display: none; }
			.footer-address-mobile {
				display: block;
				width: 100%;
				line-height: 1.25;
				text-align: center; }

			.footer-find {
				display: block;
				margin-bottom: 20px; }
}


/* ===== PAGE NOUS TROUVER ===== */

.back-button {
	z-index: 20;
	width: 48px;
	cursor: pointer; }

		.back-button img { width: 100%; }

.find-main {
	width: 100%;
	padding: 0 1rem 3rem; }

.access-map {
	width: 45%;
	margin: 0 auto;
	margin-bottom: 40px;
	border: 0;
	background: none;
	box-shadow: none; }

		.access-map img {
			display: block;
			width: auto;
			height: auto;
			max-width: 100%;
			max-height: 50vh;
			margin: 0 auto;
			padding: 0;
			cursor: zoom-in;
			transition: transform .35s ease; }

		.access-map img.zoomed {
			transform: scale(1.6);
			position: relative;
			z-index: 50; }

.photo-strip {
	width: 60%;
	margin: 0 auto;
	overflow-x: auto;
	overflow-y: hidden;
	padding: .45rem 0;
	touch-action: pan-x;
	scrollbar-width: none;
	border-top: 1px solid rgba(255,255,255,.55);
	border-bottom: 1px solid rgba(255,255,255,.55);
	background: rgba(255,255,255,.14);
	backdrop-filter: blur(3px);
	-webkit-backdrop-filter: blur(3px);
	margin: 2.2rem auto 3rem; }

.photo-strip::-webkit-scrollbar { display: none; }

		.photo-strip-track {
			display: flex;
			width: max-content;
			gap: .65rem;
			animation: access-photo-ticker 28s linear infinite; }

		.photo-strip:hover .photo-strip-track,
		.photo-strip:focus-within .photo-strip-track {
			animation-play-state: paused; }

		.photo-strip-item {
			position: relative;
			flex: 0 0 310px;
			height: 185px;
			margin: 0;
			padding: 0;
			overflow: hidden;
			border: 0;
			border-radius: .8rem;
			background: #111;
			box-shadow: 0 .25rem .7rem rgba(0,0,0,.22);
			cursor: pointer; }

		.photo-strip-item img {
			width: 100%;
			height: 100%;
			object-fit: cover;
			transition: transform .25s ease, filter .25s ease; }

		.photo-strip-label {
			position: absolute;
			inset: 0;
			display: flex;
			align-items: center;
			justify-content: center;
			padding: 1rem;
			background: rgba(0,0,0,.48);
			color: #fff;
			font-family: Arial, sans-serif;
			font-size: 17px;
			letter-spacing: .03em;
			opacity: 0;
			transition: opacity .22s ease; }

		.photo-strip-item:hover img,
		.photo-strip-item:focus-visible img {
			filter: brightness(.62);
			transform: scale(1.05); }

		.photo-strip-item:hover .photo-strip-label,
		.photo-strip-item:focus-visible .photo-strip-label {
			opacity: 1; }

		.photo-strip-item:focus-visible {
			outline: 3px solid #fff;
			outline-offset: 2px; }

		@keyframes access-photo-ticker {
			from { transform: translateX(0); }
			to { transform: translateX(calc(-50% - .325rem)); } }

.lightbox {
	position: fixed;
	inset: 0;
	z-index: 1000;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 4rem 5rem;
	background: rgba(0,0,0,.90);
	opacity: 0;
	visibility: hidden;
	transition: opacity .22s ease, visibility .22s ease; }

		.lightbox.is-open {
			opacity: 1;
			visibility: visible; }

		.lightbox-content {
			display: flex;
			align-items: center;
			justify-content: center;
			width: min(1200px, 88vw);
			height: min(82vh, 900px); }

		.lightbox-content img {
			max-width: 100%;
			max-height: 100%;
			border-radius: .75rem;
			box-shadow: 0 0 2rem rgba(255,255,255,.12);
			object-fit: contain; }

		.lightbox-close,
		.lightbox-prev,
		.lightbox-next {
			position: absolute;
			z-index: 2;
			display: grid;
			place-items: center;
			margin: 0;
			padding: 0;
			border: 1px solid rgba(255,255,255,.45);
			border-radius: 999px;
			background: rgba(255,255,255,.16);
			color: #fff;
			font-family: Arial, sans-serif;
			cursor: pointer;
			transition: background .18s ease, transform .18s ease; }

		.lightbox-close:hover,
		.lightbox-prev:hover,
		.lightbox-next:hover,
		.lightbox-close:focus-visible,
		.lightbox-prev:focus-visible,
		.lightbox-next:focus-visible {
			background: rgba(255,255,255,.30);
			transform: scale(1.08);
			outline: none; }

		.lightbox-close {
			top: 1.2rem;
			right: 1.2rem;
			width: 3rem;
			height: 3rem;
			font-size: 2rem; }

		.lightbox-prev,
		.lightbox-next {
			top: 50%;
			width: 3.4rem;
			height: 3.4rem;
			font-size: 3rem;
			transform: translateY(-50%); }

		.lightbox-prev:hover,
		.lightbox-prev:focus-visible,
		.lightbox-next:hover,
		.lightbox-next:focus-visible {
			transform: translateY(-50%) scale(1.08); }

		.lightbox-prev { left: 1.2rem; }
		.lightbox-next { right: 1.2rem; }

		body.lightbox-open { overflow: hidden; }

		.lightbox-photo {
			display: flex;
			flex-direction: column;
			align-items: center;
			max-width: 100%;
			max-height: 100%; }

		.lightbox-title {
			margin-bottom: 15px;
			color: #fff;
			font-family: Arial, sans-serif;
			font-size: 18px;
			text-align: center; }

		.lightbox-photo img {
			max-width: 100%;
			max-height: calc(100% - 45px);
			object-fit: contain; }

@media (max-width: 1000px) {
	.find-main { padding-inline: .65rem; }
	.access-map { width: 94%; margin: 0 auto; margin-bottom: 20px; }
	.photo-strip { width: 100%; }
	.photo-strip-item { flex-basis: 58vw; height: 36vw; } }

	.lightbox { padding: 4rem .75rem 1rem; }

		.lightbox-content { width: 96vw; height: 78vh; }
		.lightbox-prev,
		.lightbox-next {
			top: auto;
			bottom: 1rem;
			width: 3rem;
			height: 3rem;
			font-size: 2.4rem;
			transform: none; }

		.lightbox-prev:hover,
		.lightbox-prev:focus-visible,
		.lightbox-next:hover,
		.lightbox-next:focus-visible { transform: scale(1.08); }

		.lightbox-prev { left: calc(50% - 3.6rem); }
		.lightbox-next { right: calc(50% - 3.6rem); }
	}

@media (prefers-reduced-motion: reduce) {
	.photo-strip-track { animation: none; }
	.photo-strip-item img,
	.photo-strip-label,
	.lightbox { transition: none; } }


/* ===== GALERIE DES RÉALISATIONS ===== */
.real-filtres {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: .6rem;
    width: min(1040px, 94%);
    margin: 1.5rem auto 0;
}
.real-filtre {
    padding: .65rem 1rem;
    border: 1px solid rgba(0,0,0,.3);
    border-radius: 0;
    background: rgba(255,255,255,.85);
    color: #111;
    font-weight: bold;
    text-decoration: none;
    box-shadow: 0 .15rem .5rem rgba(0,0,0,.12);
    transition: background .2s ease, color .2s ease, transform .2s ease, box-shadow .2s ease;
}
.real-filtre:hover, .real-filtre:focus-visible {
    background: #333;
    color: #fff;
    transform: translateY(-3px);
    box-shadow: 0 .4rem .85rem rgba(0,0,0,.25);
}
.real-filtre.actif:hover, .real-filtre.actif:focus-visible { background: #444; }
.real-filtre.actif { background: #111; color: #fff; }
.services.real-galerie {
    grid-template-rows: none;
    grid-auto-rows: auto;
}
.real-galerie .service-card { aspect-ratio: 350 / 470; }
.real-galerie .real-sans-lien { cursor: default; }
.real-vide { text-align: center; margin: 2rem auto 3rem; }
	
@media (max-width: 720px) {
    .services.real-galerie {
        grid-template-rows: none !important;
        grid-auto-rows: auto; }
    .real-filtres { gap: .4rem; }
    .real-filtre { padding: .5rem .7rem; font-size: 14px; }
}
