/* NEOS Flipcards — frontend styles */

.neos-flipcards {
	display: grid;
	gap: 1.25rem;
	grid-template-columns: repeat(1, minmax(0, 1fr));
	margin: 1.5rem 0;
	list-style: none;
	padding: 0;
}

@media (min-width: 480px) {
	.neos-flipcards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 768px) {
	.neos-flipcards--cols-3,
	.neos-flipcards--cols-4 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (min-width: 1024px) {
	.neos-flipcards--cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

.neos-flipcards__group + .neos-flipcards__group { margin-top: 2.5rem; }
.neos-flipcards__group-title {
	font-size: 1.25rem;
	font-weight: 600;
	margin: 0 0 0.75rem;
	padding-bottom: 0.4rem;
	border-bottom: 1px solid rgba(0,0,0,0.08);
}

.neos-flipcards__card {
	position: relative;
	aspect-ratio: 3 / 4;
	perspective: 1200px;
	cursor: pointer;
	outline: none;
}
.neos-flipcards__card:focus-visible {
	box-shadow: 0 0 0 3px rgba(0, 102, 204, 0.45);
	border-radius: 10px;
}

.neos-flipcards__inner {
	position: absolute;
	inset: 0;
	transition: transform 0.6s cubic-bezier(.2,.7,.2,1);
	transform-style: preserve-3d;
	will-change: transform;
}

/* Flip is driven entirely by the .is-flipped class managed in JS. */
.neos-flipcards__card.is-flipped .neos-flipcards__inner {
	transform: rotateY(180deg);
}

.neos-flipcards__face {
	position: absolute;
	inset: 0;
	border-radius: 10px;
	overflow: hidden;
	backface-visibility: hidden;
	-webkit-backface-visibility: hidden;
	background: #fff;
	box-shadow: 0 2px 6px rgba(0,0,0,0.08), 0 1px 2px rgba(0,0,0,0.06);
	display: flex;
	flex-direction: column;
}

/* Front */
.neos-flipcards__face--front { background: #f4f5f7; }
.neos-flipcards__photo {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	flex: 1 1 auto;
}
.neos-flipcards__photo--placeholder {
	display: flex;
	align-items: center;
	justify-content: center;
	background: linear-gradient(135deg, #2c3e50, #4a6580);
	color: #fff;
	font-size: 2.5rem;
	font-weight: 600;
	letter-spacing: 0.05em;
}
.neos-flipcards__name {
	margin: 0;
	padding: 0.6rem 0.75rem;
	font-size: 0.95rem;
	font-weight: 600;
	background: rgba(255,255,255,0.96);
	color: #1a1a1a;
	text-align: center;
	border-top: 1px solid rgba(0,0,0,0.06);
	flex: 0 0 auto;
}

/* Back */
.neos-flipcards__face--back {
	transform: rotateY(180deg);
	padding: 0.85rem 0.95rem;
	background: #fff;
	color: #1a1a1a;
	font-size: 0.88rem;
	line-height: 1.4;
	overflow-y: auto;
	overscroll-behavior: contain;
	scrollbar-width: thin;
	scrollbar-color: rgba(0,0,0,0.25) transparent;
}
.neos-flipcards__face--back::-webkit-scrollbar { width: 6px; }
.neos-flipcards__face--back::-webkit-scrollbar-track { background: transparent; }
.neos-flipcards__face--back::-webkit-scrollbar-thumb {
	background: rgba(0,0,0,0.22);
	border-radius: 3px;
}
.neos-flipcards__face--back::-webkit-scrollbar-thumb:hover {
	background: rgba(0,0,0,0.4);
}
.neos-flipcards__back-name {
	margin: 0 0 0.2rem;
	font-size: 1.02rem;
	font-weight: 700;
	color: #2c3e50;
}
.neos-flipcards__face--back p { margin: 0 0 0.28rem; }
.neos-flipcards__role { font-weight: 600; color: #2c3e50; }
.neos-flipcards__institution { font-style: italic; color: #555; }
.neos-flipcards__groups { font-size: 0.78rem; color: #666; text-transform: uppercase; letter-spacing: 0.04em; }
.neos-flipcards__research { margin-top: 0.4rem !important; color: #333; }
.neos-flipcards__links {
	list-style: none;
	padding: 0;
	margin: 0.5rem 0 0;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 0.25rem;
	font-size: 0.8rem;
	text-align: left;
}
.neos-flipcards__links li { width: 100%; text-align: left; }
.neos-flipcards__links a {
	color: #0066cc;
	text-decoration: none;
	word-break: break-word;
	display: inline-block;
	text-align: left;
}
.neos-flipcards__links a:hover,
.neos-flipcards__links a:focus { text-decoration: underline; }

.neos-flipcards__empty {
	font-style: italic;
	color: #666;
}

/* Reduced motion: no flip animation, but state still toggles via crossfade. */
@media (prefers-reduced-motion: reduce) {
	.neos-flipcards__inner { transition: none; }
	.neos-flipcards__face { transition: opacity 0.15s linear; }
	.neos-flipcards__card .neos-flipcards__face--back { opacity: 0; pointer-events: none; }
	.neos-flipcards__card.is-flipped .neos-flipcards__face--front { opacity: 0; pointer-events: none; }
	.neos-flipcards__card.is-flipped .neos-flipcards__face--back { opacity: 1; pointer-events: auto; }
	.neos-flipcards__inner,
	.neos-flipcards__card.is-flipped .neos-flipcards__inner { transform: none; }
	.neos-flipcards__face--back { transform: none; }
}
