html,
body {
	width: 100%;
	height: 100%;
}

body {
	background-color: #040506;
	color: yellow;
	text-align: center;
	overflow: hidden;

	font-size: 1.08em;
}

#shade {
	background-image: url("../assets/Themes/rain.gif");
	background-size: 250px;
	opacity: 0.6;
	z-index: -10;
}

#shade,
#shade-2,
#shade-3 {
	float: left;
	height: 100%;
	left: 0;
	position: fixed;
	top: 0;
	width: 100%;
}

#shade-2 {
	background-image: url("../assets/Themes/dust-clipart-cloud-smoke-12.png");
	width: 200%;
	height: 200%;
	top: -50%;
	left: -50%;
	position: fixed;
}

#shade-3 {
	background-image: url("../assets/Themes/starsky.gif");
	background-size: 150px;
	opacity: 0.9;
	z-index: -20;
}

.spin-slow {
	animation-name: spin;
	animation-duration: 150s;
	animation-iteration-count: infinite;
	animation-timing-function: linear;
}

#bunting {
	background-image: url("../assets/Themes/glowstars.gif");
	background-size: 299px;
	float: left;
	height: 100px;
	opacity: 0.9;
	left: -50%;
	top: 25%;
	position: absolute;
	width: 200%;
	z-index: -2;
	transform: rotate(-25deg);
}

#greeting {
	width: 550px;
	height: 200px;
	margin-top: -250px;
	position: absolute;
	pointer-events: none;
	top: 50%;
	transform: translateY(-50%);
	left: 50%;
	transform: translateX(-50%);
}

a {
	color: #f744ff;
	pointer-events: auto;
}
a:hover {
	color: #25ffbd;
}

img {
	pointer-events: auto;
}

h1 {
	font-size: 1.5em;
}

p {
	font-size: 1.3em;
	color: #fff6e7;
}

strong {
	color: #f744ff;
}

strong img {
	image-rendering: pixelated;
}

#tv {
	width: 450px;
	height: 450px;
	position: relative;
	margin: 5% 10%;
}

#tv img,
#tv iframe {
	width: 100%;
	position: absolute;
	top: 0px;
}

#tv img {
	pointer-events: none;
}

#tv iframe {
	z-index: -1;
	width: 300px;
	height: 255px;
	top: 70px;
	left: 330px;
}

#oz {
	float: right;
	right: 7vw;
	bottom: 7vw;
	position: absolute;
}
#oz img {
	width: 10vw;
	filter: grayscale(1);
}
#oz img:hover {
	filter: grayscale(0);
}

#missile {
	float: right;
	right: 7vw;
	top: 7vw;
	position: absolute;
}
#missile img {
	width: 10vw;
	filter: grayscale(1);
}
#missile img:hover {
	filter: grayscale(0);
}


@keyframes spin {
	from {
		transform: rotate(0deg);
	}
	to {
		transform: rotate(360deg);
	}
}

button {
	background-color: violet;
	border-radius: 3px;
	height: 30px;
	width: 300px;
	box-shadow: 3px;
	font-size: 15px;
	color: white;
}

progress#close_countdown_prog {
    width: 60%;
    height: 15px;
    border-radius: 8px;
    overflow: hidden;
  }
  
  /* Les couleurs de la barre de progression - support navigateur croisé */
  progress#close_countdown_prog {
    /* Reset apparence par défaut */
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
  }
  
  /* Couleur de fond (partie non remplie) */
  progress#close_countdown_prog::-webkit-progress-bar {
    background-color: rgba(255, 255, 255, 0.205);
    border-radius: 4px;
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
  }
  
  /* Couleur de la barre (partie remplie) */
  progress#close_countdown_prog::-webkit-progress-value {
    background: linear-gradient(0.25turn, #4f5eeb, #f744ff); /* Violet */
    border-radius: 4px;
    transition: width 0.5s ease;
  }
  
  progress#close_countdown_prog::-moz-progress-bar {
    background: linear-gradient(0.25turn, #2571ff, #f744ff); /* Violet */
    border-radius: 4px;
    transition: width 0.5s ease;
  }


/* .entete (flèche JEUX) — règle desktop placée AVANT les media queries
   pour que les surcharges mobiles ne soient pas écrasées par la cascade. */
.entete {
	max-width: 200px;
	max-height: 200px;
	float: right;
	right: 14vw;
	bottom: 20vw;
	position: absolute;
}

/* ===========================================================
   MOBILE — layout en colonne défilante.
   Desktop inchangé : tout vit dans les media queries.
   La TV garde ses proportions : toutes les valeurs px du bloc
   desktop (450 / 300×255 @ 330,70) sont multipliées par un
   facteur d'échelle s (0.6 puis 0.5).
   =========================================================== */
@media only screen and (max-width: 700px) {
	/* height:100% + overflow:hidden (desktop) bloquent tout défilement.
	   Sur mobile : hauteurs auto et overflow par défaut (visible) pour que
	   le viewport scrolle naturellement ; le clip horizontal se fait sur
	   html uniquement. */
	html,
	body {
		height: auto;
		min-height: 100%;
	}
	html {
		overflow-x: hidden;
	}
	body {
		overflow: visible;
	}

	/* Les couches de fond surdimensionnées (200 %, offsets négatifs)
	   empêchaient le viewport de scroller : plein écran simple suffit,
	   ce sont des textures répétées. */
	#shade-2 {
		width: 100%;
		height: 100%;
		top: 0;
		left: 0;
	}
	#bunting {
		width: 150%;
		left: -25%;
	}

	/* TV : s = 0.6 — pas de rotation sur mobile (elle balayait le texte).
	   L'image est ancrée explicitement à left:0 (sur desktop, l'absolute
	   sans left + text-align:center l'ancre au centre du conteneur — c'est
	   ce qui décalait toute la TV à droite). L'iframe est recalée en
	   conséquence : offset image→écran = 105px × s. */
	#tv,
	#tv.spin-slow {
		width: 270px;
		height: 290px;
		margin: 16px auto 0;
		animation: none;
		transform: none;
	}
	#tv img {
		left: 0;
	}
	#tv iframe {
		width: 180px;
		height: 153px;
		left: 63px;
		top: 42px;
	}

	/* Greeting : repasse dans le flux, pleine largeur */
	#greeting {
		position: static;
		width: auto;
		height: auto;
		margin: 8px 16px 150px;
		transform: none;
	}
	h1 { font-size: 1.3em; }
	p  { font-size: 1.05em; }

	/* Flèche JEUX + satellite : épinglés en bas à droite,
	   zone tactile confortable */
	.entete {
		position: fixed;
		max-width: 110px;
		max-height: 110px;
		right: 8px;
		bottom: 110px;
		float: none;
	}
	#oz {
		position: fixed;
		right: 16px;
		bottom: 18px;
		float: none;
	}
	#oz img {
		width: 72px;
		filter: grayscale(1);
	}
}

@media only screen and (max-width: 420px) {
	/* TV : s = 0.5 */
	#tv,
	#tv.spin-slow {
		width: 225px;
		height: 245px;
	}
	#tv iframe {
		width: 150px;
		height: 128px;
		left: 53px;
		top: 35px;
	}
	.entete {
		max-width: 90px;
		max-height: 90px;
		bottom: 100px;
	}
	#oz img { width: 64px; }
}
