/**
 * Styles INIW - Version améliorée
 * - Variables CSS pour la maintenabilité
 * - Accessibilité WCAG AA
 * - Animations et transitions
 * - Design moderne et responsive
 */

/* ============================================
   VARIABLES CSS
   ============================================ */
:root {
	/* Couleurs principales */
	--color-primary: #0275d8;
	--color-primary-hover: #039BE5;
	--color-danger: #dc3545;
	--color-danger-hover: #fc7f6f;
	--color-success: #28a745;
	
	/* Couleurs neutres */
	--color-background: #ecf0f3;
	--color-text: #555;
	--color-text-light: #666;
	--color-white: #ffffff;
	
	/* Ombres neuomorphiques */
	--shadow-light: #ffffff;
	--shadow-dark: #cbced1;
	
	/* Espacements */
	--spacing-xs: 0.5rem;
	--spacing-sm: 1rem;
	--spacing-md: 1.5rem;
	--spacing-lg: 2rem;
	
	/* Typographie */
	--font-family: 'Poppins', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
	--font-size-base: 1rem;
	--font-size-sm: 0.875rem;
	--font-size-lg: 1.25rem;
	--font-size-xl: 1.5rem;
	
	/* Transitions */
	--transition-fast: 0.15s ease-in-out;
	--transition-normal: 0.3s ease-in-out;
	--transition-slow: 0.5s ease-in-out;
	
	/* Border radius */
	--radius-sm: 15px;
	--radius-md: 20px;
	--radius-lg: 25px;
	--radius-circle: 50%;
}

/* ============================================
   RESET ET BASE
   ============================================ */
* {
	margin: 0;
	padding: 0;
	box-sizing: border-box;
}

html {
	font-size: 16px;
	scroll-behavior: smooth;
}

body {
	font-family: var(--font-family);
	background: var(--color-background);
	color: var(--color-text);
	line-height: 1.6;
	min-height: 100vh;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

/* ============================================
   TYPOGRAPHIE
   ============================================ */
h1 {
	font-weight: 600;
	font-size: clamp(1.25rem, 2vw, 1.5rem);
	letter-spacing: 1.3px;
	padding-left: 10px;
	color: var(--color-text);
	margin-bottom: var(--spacing-sm);
}

h2 {
	font-size: clamp(0.875rem, 1.5vw, 1rem);
	padding: 0 var(--spacing-md);
	color: var(--color-text);
	text-align: justify;
	margin-bottom: var(--spacing-xs);
	font-weight: 500;
}

h3 {
	font-size: clamp(0.875rem, 1.5vw, 1rem);
	padding: 0 var(--spacing-md);
	color: var(--color-text);
	text-align: justify;
	font-weight: 400;
}

/* ============================================
   LAYOUT
   ============================================ */
html, body, .container {
	height: 100%;
}

.container {
	display: flex;
	align-items: center;
	justify-content: center;
	padding: var(--spacing-md);
}

main {
	width: 100%;
	max-width: 600px;
}

.wrapper {
	width: 100%;
	max-width: 380px;
	min-height: 500px;
	margin: 0 auto;
	padding: 30px;
	background-color: var(--color-background);
	border-radius: var(--radius-sm);
	box-shadow: 
		13px 13px 20px var(--shadow-dark), 
		-13px -13px 20px var(--shadow-light);
	animation: fadeIn var(--transition-slow);
}

@keyframes fadeIn {
	from {
		opacity: 0;
		transform: translateY(20px);
	}
	to {
		opacity: 1;
		transform: translateY(0);
	}
}

/* ============================================
   LOGO
   ============================================ */
.logo {
	width: 80px;
	height: 80px;
	margin: 0 auto var(--spacing-md);
	position: relative;
	animation: logoFloat 3s ease-in-out infinite;
}

@keyframes logoFloat {
	0%, 100% {
		transform: translateY(0);
	}
	50% {
		transform: translateY(-10px);
	}
}

.logo img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	border-radius: var(--radius-circle);
	box-shadow: 
		0px 0px 3px #5f5f5f,
		0px 0px 0px 5px var(--color-background),
		8px 8px 15px var(--shadow-dark),
		-8px -8px 15px var(--shadow-light);
	transition: transform var(--transition-normal);
}

.logo img:hover {
	transform: scale(1.05);
}

/* ============================================
   FORMULAIRE
   ============================================ */
.wrapper .form-field {
	padding-left: 10px;
	margin-bottom: var(--spacing-md);
	border-radius: var(--radius-md);
	box-shadow: 
		inset 8px 8px 8px var(--shadow-dark), 
		inset -8px -8px 8px var(--shadow-light);
	transition: box-shadow var(--transition-normal);
}

.wrapper .form-field:focus-within {
	box-shadow: 
		inset 6px 6px 10px var(--shadow-dark), 
		inset -6px -6px 10px var(--shadow-light);
}

.wrapper .form-field input {
	width: 100%;
	display: block;
	border: none;
	outline: none;
	background: none;
	font-size: var(--font-size-lg);
	color: var(--color-text-light);
	padding: 10px 15px 10px 10px;
	letter-spacing: 2px;
	font-weight: 500;
}

.wrapper .form-field input::placeholder {
	color: var(--color-text-light);
	opacity: 0.6;
}

/* Désactiver le pointeur pour le champ password */
input[name="enumcode"] {
	pointer-events: none;
	user-select: none;
}

/* ============================================
   BOUTONS
   ============================================ */
.wrapper .btn {
	width: 100%;
	height: 48px;
	background-color: var(--color-primary);
	color: var(--color-white);
	border: none;
	border-radius: var(--radius-lg);
	font-size: var(--font-size-base);
	font-weight: 500;
	cursor: pointer;
	transition: all var(--transition-fast);
	box-shadow: 
		3px 3px 6px var(--shadow-dark),
		-3px -3px 6px var(--shadow-light);
	position: relative;
	overflow: hidden;
}

.wrapper .btn::before {
	content: '';
	position: absolute;
	top: 50%;
	left: 50%;
	width: 0;
	height: 0;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.3);
	transform: translate(-50%, -50%);
	transition: width var(--transition-normal), height var(--transition-normal);
}

.wrapper .btn:hover::before {
	width: 300px;
	height: 300px;
}

.wrapper .btn:hover {
	background-color: var(--color-primary-hover);
	transform: translateY(-2px);
	box-shadow: 
		5px 5px 10px var(--shadow-dark),
		-3px -3px 6px var(--shadow-light);
}

.wrapper .btn:active {
	transform: translateY(0);
	box-shadow: 
		inset 3px 3px 6px var(--shadow-dark),
		inset -3px -3px 6px var(--shadow-light);
}

.wrapper .btn:focus-visible {
	outline: 3px solid var(--color-primary);
	outline-offset: 2px;
}

/* Boutons spécifiques */
.wrapper .btnok {
	font-size: var(--font-size-base);
	font-weight: 600;
}

.wrapper .btndel {
	background-color: var(--color-danger);
	font-size: var(--font-size-base);
	font-weight: 600;
}

.wrapper .btndel:hover {
	background-color: var(--color-danger-hover);
}

/* Boutons du pavé numérique */
.buttonpad {
	font-size: var(--font-size-lg);
	font-weight: 600;
	letter-spacing: 1px;
}

/* Grid du pavé numérique */
.casepad {
	padding: 0.25rem;
}

/* ============================================
   LIENS
   ============================================ */
.wrapper a {
	text-decoration: none;
	color: var(--color-primary);
	font-size: var(--font-size-sm);
	transition: color var(--transition-fast);
	position: relative;
}

.wrapper a::after {
	content: '';
	position: absolute;
	bottom: -2px;
	left: 0;
	width: 0;
	height: 2px;
	background-color: var(--color-primary-hover);
	transition: width var(--transition-normal);
}

.wrapper a:hover {
	color: var(--color-primary-hover);
}

.wrapper a:hover::after {
	width: 100%;
}

.wrapper a:focus-visible {
	outline: 2px solid var(--color-primary);
	outline-offset: 2px;
	border-radius: 2px;
}

/* ============================================
   FOOTER
   ============================================ */
.wrapper .tfooter {
	font-size: var(--font-size-sm);
	letter-spacing: 0.5px;
	padding: 0 var(--spacing-md);
	color: var(--color-text);
	text-align: center;
	display: block;
	margin-top: var(--spacing-sm);
}

/* Drapeaux */
.flag-icon {
	width: auto;
	height: 28px;
	vertical-align: middle;
	transition: transform var(--transition-fast);
	filter: drop-shadow(2px 2px 4px rgba(0, 0, 0, 0.2));
}

.flag-icon:hover {
	transform: scale(1.1);
}

/* ============================================
   TOAST NOTIFICATIONS
   ============================================ */
.toast {
	left: 50%;
	position: fixed;
	top: 20px;
	transform: translate(-50%, 0);
	z-index: 9999;
	min-width: 300px;
	box-shadow: 
		0 10px 25px rgba(0, 0, 0, 0.2),
		0 5px 10px rgba(0, 0, 0, 0.1);
	animation: slideDown var(--transition-normal);
}

@keyframes slideDown {
	from {
		transform: translate(-50%, -100%);
		opacity: 0;
	}
	to {
		transform: translate(-50%, 0);
		opacity: 1;
	}
}

/* ============================================
   MODALES
   ============================================ */
.rgpdtitle {
	font-weight: 600;
	font-size: var(--font-size-xl);
	letter-spacing: 1.3px;
	padding-left: 10px;
	color: var(--color-text);
}

.rgpdtxt {
	font-size: var(--font-size-base);
	letter-spacing: 0.5px;
	padding: 0 var(--spacing-md);
	color: var(--color-text);
	text-align: justify;
	line-height: 1.8;
}

.modal-content {
	border-radius: var(--radius-sm);
	border: none;
	box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
}

/* ============================================
   ACCESSIBILITÉ
   ============================================ */

/* Focus visible pour navigation clavier */
*:focus-visible {
	outline: 3px solid var(--color-primary);
	outline-offset: 2px;
}

/* Masquer visuellement mais garder accessible aux lecteurs d'écran */
.sr-only {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border-width: 0;
}

/* Skip link pour navigation clavier */
.skip-link {
	position: absolute;
	top: -40px;
	left: 0;
	background: var(--color-primary);
	color: var(--color-white);
	padding: 8px;
	text-decoration: none;
	z-index: 10000;
}

.skip-link:focus {
	top: 0;
}

/* ============================================
   MEDIA QUERIES
   ============================================ */

/* Petits écrans */
@media (max-width: 380px) {
	:root {
		font-size: 14px;
	}
	
	.wrapper {
		margin: 20px 10px;
		padding: 30px 15px 15px;
		min-height: auto;
	}
	
	.logo {
		width: 60px;
		height: 60px;
	}
	
	.buttonpad {
		font-size: var(--font-size-base);
	}
}

/* Mode sombre - respect des préférences utilisateur */
@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}
}

/* Impression */
@media print {
	.wrapper {
		box-shadow: none;
		border: 1px solid #ccc;
	}
	
	.btn,
	.toast,
	.modal {
		display: none;
	}
}
