/*==================================================================*/
/*===================== ACTIVITY & ASSIGNMENTS =====================*/
/*==================================================================*/

	.activity { grid-area: activity; }

	.activity-contenu {
		position: absolute;
		top: 66px;
		left: 2.5%;
		width: 95%;
		height: calc(100% - 74px);
		display: grid;
		grid-template-columns: 24% 76%;
		align-items: center;
		z-index: 4; }

	.activity-image {
		position: relative;
		width: 100%;
		height: 100%;
		display: flex;
		align-items: center;
		justify-content: center;
		padding: 0 10px 4px 0;
		overflow: hidden;
		cursor: pointer; }

			.activity-image > img {
				display: block;
				width: 100%;
				height: 100%;
				object-fit: contain; }

	.activity-sparks {
		position: absolute;
		inset: 0;
		pointer-events: none;
		z-index: 5; }

			.spark {
				position: absolute;
				width: 3px;
				height: 3px;
				border-radius: 50%;
				background: #fff;
				opacity: 0;
				box-shadow:
					0 0 4px #fff,
					0 0 8px var(--bleu-ciel),
					0 0 14px var(--bleu-ciel); }

			.spark::before,
			.spark::after {
				content: "";
				position: absolute;
				top: 50%;
				left: 50%;
				background: rgba(255,255,255,.95);
				transform: translate(-50%, -50%); }

			.spark::before { width: 15px; height: 1px; }
			.spark::after { width: 1px; height: 15px; }

			.spark-1 { left: 15%; top: 22%; animation: starSpark 1.8s .0s infinite; }
			.spark-2 { left: 37%; top: 14%; animation: starSpark 2.2s .35s infinite; }
			.spark-3 { left: 63%; top: 26%; animation: starSpark 1.7s .65s infinite; }
			.spark-4 { left: 81%; top: 18%; animation: starSpark 2.4s .15s infinite; }
			.spark-5 { left: 25%; top: 62%; animation: starSpark 2s .8s infinite; }
			.spark-6 { left: 53%; top: 48%; animation: starSpark 1.6s .45s infinite; }
			.spark-7 { left: 73%; top: 70%; animation: starSpark 2.3s 1s infinite; }
			.spark-8 { left: 43%; top: 82%; animation: starSpark 1.9s .25s infinite; }
			.spark-9 { left: 10%; top: 48%; }
			.spark-10 { left: 31%; top: 37%; }
			.spark-11 { left: 57%; top: 12%; }
			.spark-12 { left: 88%; top: 47%; }
			.spark-13 { left: 65%; top: 84%; }
			.spark-14 { left: 19%; top: 78%; }

	.activity-image:hover .spark {
		animation-duration: .75s;
		box-shadow:
			0 0 6px #fff,
			0 0 14px var(--bleu-ciel),
			0 0 28px var(--bleu-ciel); }

				.activity-image:hover .spark-9 { animation: starSparkStrong .62s .05s infinite; }
				.activity-image:hover .spark-10 { animation: starSparkStrong .73s .18s infinite; }
				.activity-image:hover .spark-11 { animation: starSparkStrong .58s .31s infinite; }
				.activity-image:hover .spark-12 { animation: starSparkStrong .81s .12s infinite; }
				.activity-image:hover .spark-13 { animation: starSparkStrong .67s .26s infinite; }
				.activity-image:hover .spark-14 { animation: starSparkStrong .76s .40s infinite; }

						@keyframes starSpark {
							0%, 34%, 72%, 100% { opacity: 0; transform: scale(.2) rotate(0deg); }
							44% { opacity: 1; transform: scale(1.15) rotate(45deg); }
							54% { opacity: .75; transform: scale(.7) rotate(70deg); } }

						@keyframes starSparkStrong {
							0%, 30%, 72%, 100% { opacity: 0; transform: scale(.15) rotate(0deg); }
							42% { opacity: 1; transform: scale(1.8) rotate(45deg); }
							55% { opacity: .9; transform: scale(.9) rotate(90deg); } }

	.activity-infos {
		width: 100%;
		padding-left: 8px;
		display: grid;
		grid-template-columns: 1fr 1fr;
		gap: 0 14px;
		align-items: start; }

	.activity-info-col { min-width: 0; }

	.activity-status {
		font-size: 14px;
		color: #00ff66; }

		.status-dot {
			display: inline-block;
			width: 8px;
			height: 8px;
			margin-left: 6px;
			border-radius: 50%;
			background: var(--vert-fluo);
			box-shadow: 0 0 7px var(--vert-fluo); }
			

	/*========== LOCALISATION : ESPACE GRAPHIQUE DE CHAMVRES ==========*/

	.activity-location-link {
		display: inline-flex;
		align-items: center;
		gap: 10px;
		cursor: pointer; }

	.activity-location-light {
		display: inline-block;
		flex: 0 0 14px;
		opacity: 0;
		visibility: hidden;
		pointer-events: none;
		transition: opacity .18s ease, visibility .18s ease; }

			.activity-location-link:hover .activity-location-light {
				opacity: 1;
				visibility: visible; }

			.activity-location-link:hover {
				color: var(--vert-fluo);
				text-shadow: 0 0 7px rgba(0,255,102,.55); }

	.activity-localization-message {
		margin-left: auto;
		margin-right: 10px;
		font-family: "Courier New", monospace;
		font-size: 20px;
		font-weight: bold;
		letter-spacing: 1px;
		white-space: nowrap; }

			.activity-localization-text[hidden] { display: none; }

	.activity-localization-processing,
	.activity-localization-conversion {
		display: block;
		color: var(--vert-fluo);
		text-shadow: 0 0 5px rgba(0,255,102,.95), 0 0 12px rgba(0,255,102,.55);
		animation: localizationBlink .48s steps(1) infinite; }

	.activity-localization-error {
		display: block;
		color: var(--orange);
		text-shadow: 0 0 6px rgba(255,193,110,.98), 0 0 16px rgba(255,121,0,.78);
		animation: localizationErrorBlink .34s steps(1) infinite; }

			@keyframes localizationErrorBlink {
				0%, 48% { opacity: 1; }
				49%, 100% { opacity: .14; } }

	.activity-localization-light-sweep {
		position: absolute;
		top: 0;
		left: -35%;
		width: 28%;
		height: 100%;
		opacity: 0;
		pointer-events: none;
		z-index: 6;
		background: linear-gradient(90deg, transparent, rgba(255,255,255,.12), rgba(117,215,240,.75), rgba(255,255,255,.18), transparent);
		filter: blur(4px);
		transform: skewX(-12deg); }

	.activity.localization-running .activity-image > img {
		animation: activityLocalizationZoom .72s ease-in-out infinite alternate;
		filter: brightness(1.18) drop-shadow(0 0 9px rgba(117,215,240,.82)); }

	.activity.localization-running .activity-localization-light-sweep {
		opacity: 1;
		animation: voiceLightSweep 1.5s ease-in-out infinite alternate; }

			@keyframes activityLocalizationZoom {
				from { transform: scale(1); filter: brightness(1.05) drop-shadow(0 0 4px rgba(117,215,240,.45)); }
				to { transform: scale(1.12); filter: brightness(1.5) drop-shadow(0 0 14px rgba(117,215,240,.95)); } }

			@keyframes localizationBlink {
				0%, 55% { opacity: 1; }
				56%, 100% { opacity: .18; } }


	/*========== VUES LOCALISATION : remplacent Skill + Biometric + Transporter ==========*/

	.chamvres-map, .yonne-map {
		display:none;
		position:fixed;
		inset:0;
		width:100vw;
		height:100vh;
		overflow:hidden;
		align-items:center;
		justify-content:center;
		padding:4vh 4vw;
		background:rgba(0,0,0,.88);
		z-index:5000; }

	main.chamvres-map-active .chamvres-map,
	main.yonne-map-active .yonne-map { display:flex; }

	.chamvres-map img, .yonne-map img {
		display:block;
		width:auto;
		height:auto;
		max-width:92vw;
		max-height:92vh;
		object-fit:contain; }

	/* Balayage diagonal final sur la localisation */
	.chamvres-diagonal-scan {
		position: absolute;
		top: -35%;
		left: -55%;
		width: 165%;
		height: 4px;
		opacity: 0;
		pointer-events: none;
		z-index: 21;
		background: rgba(117,215,240,.98);
		box-shadow: 0 0 7px rgba(117,215,240,1), 0 0 20px rgba(117,215,240,.95), 0 0 42px rgba(117,215,240,.72);
		transform: rotate(28deg); }

	.chamvres-map.final-scan .chamvres-diagonal-scan,
	.yonne-map.final-scan .chamvres-diagonal-scan {
		opacity: 1;
		animation: chamvresDiagonalScan 1.55s linear forwards; }

			@keyframes chamvresDiagonalScan {
				from { top: -35%; left: -55%; }
				to { top: 125%; left: -10%; } }

	.chamvres-final-message {
		position: absolute;
		left: 50%;
		bottom: 7%;
		width: 90%;
		transform: translateX(-50%);
		color: var(--vert-fluo);
		font-family: "Courier New", monospace;
		font-size: clamp(22px, 1.8vw, 32px);
		font-weight: bold;
		letter-spacing: 1px;
		text-align: center;
		text-shadow: 0 0 6px rgba(0,255,102,.95), 0 0 16px rgba(0,255,102,.60);
		z-index: 23; }

			.chamvres-final-cursor {
				color: var(--vert-fluo);
				animation: chamvresCursorBlink .65s steps(1) infinite; }

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

	.chamvres-map-close {
		position: absolute;
		top: 18px;
		right: 18px;
		width: 38px;
		height: 38px;
		padding: 0;
		border: 1px solid var(--vert-fluo);
		background: rgba(0,0,0,.72);
		color: var(--vert-fluo);
		font-family: Arial, Helvetica, sans-serif;
		font-size: 27px;
		line-height: 34px;
		text-align: center;
		cursor: pointer;
		z-index: 22;
		box-shadow: 0 0 8px rgba(0,255,102,.65); }

			.chamvres-map-close:hover {
				background: rgba(0,255,102,.16);
				text-shadow: 0 0 8px var(--vert-fluo);
				box-shadow: 0 0 15px rgba(0,255,102,.90); }

	.chamvres-map.localization-fault .chamvres-map-close,
	.yonne-map.localization-fault .chamvres-map-close {
		animation: localizationCloseFault .28s steps(1) infinite; }

			@keyframes localizationCloseFault {
				0%, 48% {
					transform: scale(1.08);
					background: rgba(255,121,0,.34);
					color: var(--orange);
					border-color: var(--orange);
					text-shadow: 0 0 10px rgba(255,193,110,1);
					box-shadow: 0 0 10px rgba(255,121,0,1), 0 0 28px rgba(255,121,0,.95), 0 0 52px rgba(255,121,0,.70); }
				49%, 100% {
					transform: scale(.96);
					background: rgba(0,0,0,.72);
					color: var(--vert-fluo);
					border-color: var(--vert-fluo);
					text-shadow: none;
					box-shadow: 0 0 4px rgba(0,255,102,.30); } }


	/* Alerte envoyée vers Communication Console */

	.contact.contact-alert .titre-bloc,
	.contact.protocol-failed .titre-bloc {
		background: rgba(255,121,0,.62); }

	.contact.contact-alert .titre-bloc span,
	.contact.protocol-failed .titre-bloc span {
		color: #fff;
		animation: contactTitleBlink .48s steps(1) infinite; }

			@keyframes contactTitleBlink {
				0%, 50% { opacity: 1; text-shadow: 0 0 8px rgba(255,255,255,.85); }
				51%, 100% { opacity: .16; text-shadow: none; } }


	/* Activity logs */

	.activity-logs {
		display: inline-block;
		font-family: Arial, Helvetica, sans-serif;
		font-size: 12px;
		font-weight: normal;
		text-transform: none;
		white-space: nowrap; }

			.activity-logs a {
				color:var(--vert-fluo);
				text-decoration: none;
				font-weight: normal; }

			.activity-logs a:hover { font-weight: bold; }


	/* Liens affichés au clic sur icônes */

	.activity-title-links {
		display: none;
		margin-left: auto;
		margin-right: 12px;
		font-family: "Courier New",monospace;
		font-size: 16px;
		letter-spacing: -1px;
		font-weight: normal;
		line-height: 1.4;
		text-transform: none;
		white-space: nowrap; }

			.activity-title-links.visible { display:block; }

			.activity-title-links a {
				color:var(--orange);
				text-decoration: none;
				font-weight: normal; }

			.activity-title-links a:hover { font-weight: bold; }