Local Board
<style>
.esn-org * {
box-sizing: border-box;
}
.esn-org {
background: #fff;
font-family: system-ui, -apple-system, "Segoe UI", sans-serif;
color: #1a1a1a;
}
.esn-lb {
padding: 16px 24px;
max-width: 1448px;
margin: 0 auto;
box-sizing: border-box;
}
.esn-lb-head {
max-width: 1400px;
margin: 0 auto 12px;
padding: 0 8px;
}
.esn-lb-title {
margin: 0;
font-size: 34px;
font-weight: 800;
color: #22a7e0;
}
/* ================= PANEL ================= */
.esn-lb-panel {
position: relative;
width: 100%;
max-width: 100%;
min-width: 340px;
margin: 0 auto;
border-radius: 22px;
overflow: hidden;
padding: 24px 0 20px;
}
.esn-org-duo {
display: flex;
flex-wrap: wrap;
justify-content: center;
align-items: flex-start;
gap: 20px;
max-width: 1448px;
margin: 0 auto;
padding: 16px 24px;
box-sizing: border-box;
}
.esn-org-duo .esn-lb {
flex: 1 1 0;
max-width: none;
margin: 0;
padding: 0;
min-width: 280px;
}
.esn-org-duo .esn-lb-panel {
margin: 0;
}
/* ================= COLORS ================= */
.esn-lb[data-tier="board"] .esn-lb-panel {
background:
radial-gradient(900px 500px at 50% 0%, rgba(70,74,200,0.20), transparent 60%),
linear-gradient(180deg, #0b0c1d, #05060f);
}
.esn-lb[data-tier="coordinators"] .esn-lb-panel {
background:
radial-gradient(900px 500px at 50% 0%, rgba(0,174,239,0.20), transparent 60%),
linear-gradient(180deg, #05141a, #030a0f);
}
.esn-lb[data-tier="chair"] .esn-lb-panel {
background:
radial-gradient(900px 500px at 50% 0%, rgba(122,193,67,0.18), transparent 60%),
linear-gradient(180deg, #0a1406, #050a03);
}
.esn-lb[data-tier="auditor"] .esn-lb-panel {
background:
radial-gradient(900px 500px at 50% 0%, rgba(244,123,32,0.20), transparent 60%),
linear-gradient(180deg, #170a02, #0c0501);
}
.esn-lb[data-tier="board"] {
--tier-a: #2e6df6;
--tier-b: #12b5e0;
--glow: rgba(70,74,200,0.85);
--soft: rgba(70,74,200,0.32);
}
.esn-lb[data-tier="coordinators"] {
--tier-a: #00aeef;
--tier-b: #1de1c5;
--glow: rgba(0,174,239,0.85);
--soft: rgba(0,174,239,0.30);
}
.esn-lb[data-tier="chair"] {
--tier-a: #7ac143;
--tier-b: #1de1c5;
--glow: rgba(122,193,67,0.85);
--soft: rgba(122,193,67,0.30);
}
.esn-lb[data-tier="auditor"] {
--tier-a: #f47b20;
--tier-b: #ffcf5c;
--glow: rgba(244,123,32,0.9);
--soft: rgba(244,123,32,0.32);
}
/* ================= PANEL TITLE ================= */
.esn-lb-panel-title {
text-align: center;
margin: 0 0 26px;
padding: 0 24px;
}
.esn-lb-panel-title h3 {
margin: 0;
font-size: 22px;
font-weight: 800;
color: #fff;
}
.esn-lb-panel-title p {
margin: 6px 0 0;
font-size: 13.5px;
font-style: italic;
color: rgba(255,255,255,0.7);
}
/* ================= CAROUSEL / ROW ================= */
/* Desktop default: horizontal row, wraps and centers. */
.esn-lb-carousel {
position: relative;
overflow: hidden;
width: 100%;
max-width: 100%;
}
.esn-lb-row {
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: center;
align-items: flex-start;
gap: 10px;
padding: 4px 24px 8px;
}
/* Coordinators row: horizontal scroll strip on desktop (still
horizontal — just scrollable since there are 8 cards). Mobile
override below turns this into a vertical stack too. */
.esn-lb-row--scroll {
flex-wrap: nowrap;
justify-content: flex-start;
padding-right: 64px;
overflow-x: auto;
overflow-y: hidden;
scroll-behavior: smooth;
-webkit-overflow-scrolling: touch;
scrollbar-width: none;
-ms-overflow-style: none;
}
.esn-lb-row--scroll::-webkit-scrollbar {
display: none;
}
.esn-lb-row--scroll .esn-lb-card {
flex: none;
}
/* ================= CARD ================= */
.esn-lb-card {
position: relative;
flex: none;
width: 260px !important;
height: 380px !important;
max-width: none !important;
max-height: none !important;
margin: 0 !important;
padding: 0 !important;
cursor: pointer;
list-style: none;
-webkit-tap-highlight-color: transparent;
touch-action: manipulation;
}
.esn-lb-frame {
position: relative !important;
width: 100% !important;
height: 100% !important;
overflow: visible !important;
}
/* ================= ENVELOPE ================= */
.esn-lb-envelope {
position: absolute !important;
left: 0 !important;
right: 0 !important;
bottom: 0 !important;
top: auto !important;
width: 100% !important;
height: 60% !important;
z-index: 1;
border-radius: 14px;
background: linear-gradient(165deg, var(--soft), rgba(8,8,10,0.94) 70%);
box-shadow: 0 0 0 1px rgba(255,255,255,0.08);
overflow: hidden;
opacity: 1;
transition: opacity 0.4s ease 0.3s;
}
.esn-lb-card.is-open .esn-lb-envelope {
opacity: 0;
}
/* ================= FLAP ================= */
.esn-lb-flap {
position: absolute !important;
top: 0 !important;
left: 0 !important;
right: 0 !important;
width: 100% !important;
height: 48% !important;
z-index: 10;
clip-path: polygon(0 0, 100% 0, 50% 64%);
background: linear-gradient(160deg, var(--glow) 0%, rgba(8,8,10,0.97) 80%);
transform-origin: top center;
-webkit-transform-origin: top center;
transform: rotateX(0deg);
-webkit-transform: rotateX(0deg);
transform-style: preserve-3d;
-webkit-transform-style: preserve-3d;
backface-visibility: hidden;
-webkit-backface-visibility: hidden;
transition: transform 0.9s cubic-bezier(0.22,0.75,0.24,1);
-webkit-transition: -webkit-transform 0.9s cubic-bezier(0.22,0.75,0.24,1);
will-change: transform;
perspective: 1400px;
-webkit-perspective: 1400px;
}
.esn-lb-card.is-open .esn-lb-flap {
transform: rotateX(-172deg);
-webkit-transform: rotateX(-172deg);
}
/* ================= LABEL ================= */
.esn-lb-label {
position: absolute;
left: 0;
right: 0;
bottom: 16px;
z-index: 5;
text-align: center;
padding: 0 12px;
opacity: 1;
transition: opacity 0.3s ease;
}
.esn-lb-card.is-open .esn-lb-label {
opacity: 0;
pointer-events: none;
}
.esn-lb-label-name {
font-size: 18px;
font-weight: 800;
color: #fff;
}
.esn-lb-label-role {
margin-top: 4px;
font-size: 12.5px;
opacity: 0.82;
color: #edf1ff;
}
/* ================= PHOTO POPUP ================= */
.esn-lb-photo-wrap {
position: absolute !important;
left: 3% !important;
right: 3% !important;
top: 2% !important;
width: 94% !important;
height: 96% !important;
z-index: 8;
opacity: 0;
transform: translate3d(0,46%,0) scale(0.7);
-webkit-transform: translate3d(0,46%,0) scale(0.7);
transition:
transform 1.05s cubic-bezier(0.19,0.86,0.24,1),
opacity 0.6s ease;
-webkit-transition:
-webkit-transform 1.05s cubic-bezier(0.19,0.86,0.24,1),
opacity 0.6s ease;
pointer-events: none;
filter: drop-shadow(0 12px 22px rgba(0,0,0,0.5));
overflow: visible !important;
border-radius: 14px;
}
.esn-lb-card.is-open .esn-lb-photo-wrap {
opacity: 1;
transform: translate3d(0,0,0) scale(1);
-webkit-transform: translate3d(0,0,0) scale(1);
pointer-events: auto;
}
/* ================= PHOTO CONTAINER ================= */
/* No 3D flip anymore — the "back" is a fading overlay drawn on
top of the same photo face instead of a separate small box. */
.esn-lb-photo-inner {
position: relative !important;
width: 100% !important;
height: 100% !important;
}
/* ================= PHOTO FACE ================= */
.esn-lb-photo-front {
position: absolute !important;
inset: 0 !important;
width: 100% !important;
height: 100% !important;
border-radius: 14px;
overflow: hidden;
z-index: 2;
background:
repeating-linear-gradient(115deg, rgba(255,255,255,0.06) 0 2px, transparent 2px 46px),
linear-gradient(160deg, var(--tier-a), var(--tier-b) 130%);
box-shadow: 0 0 0 2px var(--glow);
}
.esn-lb-photo-front img {
position: absolute !important;
left: 0 !important;
right: 0 !important;
top: 0 !important;
bottom: 0 !important;
width: 100% !important;
height: 100% !important;
object-fit: cover !important;
object-position: center top !important;
display: block !important;
margin: 0 !important;
padding: 0 !important;
border: 0 !important;
}
.esn-lb-photo-front::after {
content: "";
position: absolute;
left: 0;
right: 0;
bottom: 0;
height: 44%;
background: linear-gradient(to top, rgba(0,0,0,0.82), rgba(0,0,0,0));
pointer-events: none;
}
/* ================= INFO OVERLAY (replaces the flipped back box) ================= */
/* Fades in over the whole photo instead of rotating to a small
separate card face. Toggled by the .is-flipped class. */
.esn-lb-info-overlay {
position: absolute !important;
inset: 0 !important;
z-index: 6;
border-radius: 14px;
background: linear-gradient(195deg, rgba(6,7,14,0.55), rgba(6,7,14,0.96) 55%);
opacity: 0;
pointer-events: none;
display: flex;
flex-direction: column;
justify-content: flex-end;
padding: 22px 18px;
transition: opacity 0.45s ease;
}
.esn-lb-card.is-flipped .esn-lb-info-overlay {
opacity: 1;
pointer-events: auto;
}
/* ================= CARD TEXT ================= */
.esn-lb-photo-frontMeta {
position: absolute;
left: 14px;
right: 14px;
bottom: 12px;
z-index: 4;
display: flex;
align-items: flex-end;
justify-content: space-between;
}
.esn-lb-caption-name {
font-size: 17px;
font-weight: 700;
color: #fff;
}
.esn-lb-caption-role {
font-size: 14px;
color: rgba(255,255,255,0.8);
margin-top: 2px;
}
.esn-lb-badge {
display: flex;
align-items: center;
gap: 5px;
font-size: 14px;
font-weight: 700;
color: rgba(255,255,255,0.6);
white-space: nowrap;
}
.esn-lb-badge-mark {
font-size: 15px;
}
/* ================= INFO TEXT ================= */
.esn-lb-backTitle {
font-size: 20px;
font-weight: 800;
margin: 0 0 4px;
color: #fff;
}
.esn-lb-backRole {
font-size: 12px;
letter-spacing: 0.4px;
text-transform: uppercase;
opacity: 0.8;
margin: 0 0 10px;
color: #edf1ff;
}
.esn-lb-backText {
font-size: 13.5px;
line-height: 1.55;
color: #fff;
opacity: 0.95;
}
.esn-lb-backHint {
margin-top: 14px;
font-size: 11px;
opacity: 0.55;
color: #edf1ff;
}
/* ================= SPARKLES ================= */
.esn-lb-sparkle-host {
position: absolute;
inset: -10%;
z-index: 30;
pointer-events: none;
}
.esn-sparkle {
position: absolute;
left: 50%;
top: 50%;
font-size: 17px;
opacity: 0;
transform: translate(-50%, -50%) scale(0.3);
animation: esnBurst 1.6s cubic-bezier(0.22, 0.61, 0.36, 1) forwards;
filter: drop-shadow(0 0 4px rgba(255,255,255,0.6));
}
@keyframes esnBurst {
0% {
opacity: 0;
transform: translate(-50%, -50%) scale(0.35);
}
16% {
opacity: 1;
transform:
translate(calc(-50% + (var(--dx, 0px) * 0.32)), calc(-50% + (var(--dy, 0px) * 0.32)))
scale(1.2);
}
100% {
opacity: 0;
transform:
translate(calc(-50% + var(--dx, 0px)), calc(-50% + var(--dy, 0px)))
scale(0.6);
}
}
/* ================= CONNECTOR ================= */
.esn-org-connector {
display: flex;
flex-direction: column;
align-items: center;
gap: 2px;
background: #fff;
}
.esn-org-line {
width: 2px;
height: 6px;
background: linear-gradient(180deg, rgba(0,0,0,0.02), rgba(0,0,0,0.25), rgba(0,0,0,0.02));
}
.esn-org-arrow {
color: rgba(0,0,0,0.35);
font-size: 12px;
}
/* ================= MOBILE: ONE COLUMN, CARDS STACKED ================= */
/* Both the wrapping row and the horizontal-scroll row become a
single vertical column of cards on small screens. */
@media (max-width: 700px) {
.esn-lb-card {
width: 220px !important;
height: 330px !important;
}
.esn-lb-row,
.esn-lb-row--scroll {
flex-direction: column;
flex-wrap: nowrap;
justify-content: flex-start;
align-items: center;
overflow-x: visible;
overflow-y: visible;
padding: 4px 12px 8px;
}
.esn-lb-row .esn-lb-card,
.esn-lb-row--scroll .esn-lb-card {
width: 220px !important;
height: 330px !important;
flex: none;
}
.esn-lb-title {
font-size: 26px;
}
}
/* ================= REDUCED MOTION ================= */
@media (prefers-reduced-motion: reduce) {
.esn-lb-flap,
.esn-lb-photo-wrap,
.esn-lb-info-overlay {
transition: none !important;
}
}
</style>
</head>
<body>
<div class="esn-org">
<!-- ============ LOCAL BOARD ============ -->
<section class="esn-lb" data-tier="board" aria-label="Local Board of ESN Alba Iulia">
<div class="esn-lb-panel">
<div class="esn-lb-panel-title">
<h3>Meet The Local Board Of ESN Alba Iulia</h3>
<p>The current legends behind the section</p>
</div>
<div class="esn-lb-carousel">
<div class="esn-lb-row">
<article class="esn-lb-card" data-icons="⭐ 👑 ✨" data-open="false" data-flipped="false">
<div class="esn-lb-frame">
<div class="esn-lb-envelope"></div>
<div class="esn-lb-flap"></div>
<div class="esn-lb-sparkle-host"></div>
<div class="esn-lb-label">
<div class="esn-lb-label-name">Maxim</div>
<div class="esn-lb-label-role">President</div>
</div>
<div class="esn-lb-photo-wrap">
<div class="esn-lb-photo-inner">
<div class="esn-lb-photo-front">
<img src="https://alba-iulia.esn.ro/sites/alba-iulia.esn.ro/files/2026-08/4_2.png" alt="Maxim" loading="lazy">
<div class="esn-lb-photo-frontMeta">
<div>
<div class="esn-lb-caption-name">Maxim</div>
<div class="esn-lb-caption-role">President</div>
</div>
<div class="esn-lb-badge"><span class="esn-lb-badge-mark">✳</span>ESN</div>
</div>
</div>
<div class="esn-lb-info-overlay">
<div class="esn-lb-backTitle">Maxim</div>
<div class="esn-lb-backRole">President</div>
<div class="esn-lb-backText">The public face of the section, responsible for overall strategy, representation, partnerships, and the direction of the board.</div>
<div class="esn-lb-backHint">Click to see photo again</div>
</div>
</div>
</div>
</div>
</article>
<article class="esn-lb-card" data-icons="🤝 ⭐ 💫" data-open="false" data-flipped="false">
<div class="esn-lb-frame">
<div class="esn-lb-envelope"></div>
<div class="esn-lb-flap"></div>
<div class="esn-lb-sparkle-host"></div>
<div class="esn-lb-label">
<div class="esn-lb-label-name">Evelina</div>
<div class="esn-lb-label-role">Vice-President</div>
</div>
<div class="esn-lb-photo-wrap">
<div class="esn-lb-photo-inner">
<div class="esn-lb-photo-front">
<img src="https://alba-iulia.esn.ro/sites/alba-iulia.esn.ro/files/2026-08/2_5.png" alt="Evelina" loading="lazy">
<div class="esn-lb-photo-frontMeta">
<div>
<div class="esn-lb-caption-name">Evelina</div>
<div class="esn-lb-caption-role">Vice-President</div>
</div>
<div class="esn-lb-badge"><span class="esn-lb-badge-mark">✳</span>ESN</div>
</div>
</div>
<div class="esn-lb-info-overlay">
<div class="esn-lb-backTitle">Evelina</div>
<div class="esn-lb-backRole">Vice-President</div>
<div class="esn-lb-backText">Supports the president, helps coordinate the board internally, and keeps projects moving across the whole section.</div>
<div class="esn-lb-backHint">Click to see photo again</div>
</div>
</div>
</div>
</div>
</article>
<article class="esn-lb-card" data-icons="📋 🖋️ 📎" data-open="false" data-flipped="false">
<div class="esn-lb-frame">
<div class="esn-lb-envelope"></div>
<div class="esn-lb-flap"></div>
<div class="esn-lb-sparkle-host"></div>
<div class="esn-lb-label">
<div class="esn-lb-label-name">Bianca</div>
<div class="esn-lb-label-role">Secretary General</div>
</div>
<div class="esn-lb-photo-wrap">
<div class="esn-lb-photo-inner">
<div class="esn-lb-photo-front">
<img src="https://alba-iulia.esn.ro/sites/alba-iulia.esn.ro/files/2026-08/3_2.png" alt="Bianca" loading="lazy">
<div class="esn-lb-photo-frontMeta">
<div>
<div class="esn-lb-caption-name">Bianca</div>
<div class="esn-lb-caption-role">Secretary General</div>
</div>
<div class="esn-lb-badge"><span class="esn-lb-badge-mark">✳</span>ESN</div>
</div>
</div>
<div class="esn-lb-info-overlay">
<div class="esn-lb-backTitle">Bianca</div>
<div class="esn-lb-backRole">Secretary General</div>
<div class="esn-lb-backText">Keeps the structure organized through documentation, meeting records, staying on top of every detail, and administrative clarity.</div>
<div class="esn-lb-backHint">Click to see photo again</div>
</div>
</div>
</div>
</div>
</article>
<article class="esn-lb-card" data-icons="💙 🤗 ✨" data-open="false" data-flipped="false">
<div class="esn-lb-frame">
<div class="esn-lb-envelope"></div>
<div class="esn-lb-flap"></div>
<div class="esn-lb-sparkle-host"></div>
<div class="esn-lb-label">
<div class="esn-lb-label-name">Steli</div>
<div class="esn-lb-label-role">ESN Alba Iulia Mascot</div>
</div>
<div class="esn-lb-photo-wrap">
<div class="esn-lb-photo-inner">
<div class="esn-lb-photo-front">
<img src="https://alba-iulia.esn.ro/sites/alba-iulia.esn.ro/files/2026-08/1_5.png" alt="Steli" loading="lazy">
<div class="esn-lb-photo-frontMeta">
<div>
<div class="esn-lb-caption-name">Steli</div>
<div class="esn-lb-caption-role">ESN Alba Iulia Mascot</div>
</div>
<div class="esn-lb-badge"><span class="esn-lb-badge-mark">✳</span>ESN</div>
</div>
</div>
<div class="esn-lb-info-overlay">
<div class="esn-lb-backTitle">Steli</div>
<div class="esn-lb-backRole">Mascot</div>
<div class="esn-lb-backText">The guy who gets stolen.</div>
<div class="esn-lb-backHint">Click to see photo again</div>
</div>
</div>
</div>
</div>
</article>
</div>
</div>
</div>
</section>
<div class="esn-org-connector"><div class="esn-org-line"></div><div class="esn-org-arrow">▾</div></div>
<!-- ============ LOCAL COORDINATORS ============ -->
<section class="esn-lb" data-tier="coordinators" aria-label="Local Coordinators of ESN Alba Iulia">
<div class="esn-lb-panel">
<div class="esn-lb-panel-title">
<h3>Meet The Local Coordinators Of ESN Alba Iulia</h3>
<p>The team running the section day to day</p>
</div>
<div class="esn-lb-carousel">
<div class="esn-lb-row esn-lb-row--scroll">
<article class="esn-lb-card" data-icons="💰 💵 📄" data-open="false" data-flipped="false">
<div class="esn-lb-frame">
<div class="esn-lb-envelope"></div>
<div class="esn-lb-flap"></div>
<div class="esn-lb-sparkle-host"></div>
<div class="esn-lb-label">
<div class="esn-lb-label-name">Viorel</div>
<div class="esn-lb-label-role">Project Grants Manager</div>
</div>
<div class="esn-lb-photo-wrap">
<div class="esn-lb-photo-inner">
<div class="esn-lb-photo-front">
<img src="https://alba-iulia.esn.ro/sites/alba-iulia.esn.ro/files/2026-08/4_4.png" alt="Viorel" loading="lazy">
<div class="esn-lb-photo-frontMeta">
<div>
<div class="esn-lb-caption-name">Viorel</div>
<div class="esn-lb-caption-role">Project Grants Manager</div>
</div>
<div class="esn-lb-badge"><span class="esn-lb-badge-mark">✳</span>ESN</div>
</div>
</div>
<div class="esn-lb-info-overlay">
<div class="esn-lb-backTitle">Viorel</div>
<div class="esn-lb-backRole">Project Grants Manager</div>
<div class="esn-lb-backText">Finds and manages funding opportunities, turning grant applications into real resources for section projects.</div>
<div class="esn-lb-backHint">Click to see photo again</div>
</div>
</div>
</div>
</div>
</article>
<article class="esn-lb-card" data-icons="🎈 🎉 🎊" data-open="false" data-flipped="false">
<div class="esn-lb-frame">
<div class="esn-lb-envelope"></div>
<div class="esn-lb-flap"></div>
<div class="esn-lb-sparkle-host"></div>
<div class="esn-lb-label">
<div class="esn-lb-label-name">Giulia</div>
<div class="esn-lb-label-role">Event Manager</div>
</div>
<div class="esn-lb-photo-wrap">
<div class="esn-lb-photo-inner">
<div class="esn-lb-photo-front">
<img src="https://alba-iulia.esn.ro/sites/alba-iulia.esn.ro/files/2026-08/1_7.png" alt="Giulia" loading="lazy">
<div class="esn-lb-photo-frontMeta">
<div>
<div class="esn-lb-caption-name">Giulia</div>
<div class="esn-lb-caption-role">Event Manager</div>
</div>
<div class="esn-lb-badge"><span class="esn-lb-badge-mark">✳</span>ESN</div>
</div>
</div>
<div class="esn-lb-info-overlay">
<div class="esn-lb-backTitle">Giulia</div>
<div class="esn-lb-backRole">Event Manager</div>
<div class="esn-lb-backText">The person who turns ideas into unforgettable events and strangers into friends, making every gathering a place where memories and connections are created.</div>
<div class="esn-lb-backHint">Click to see photo again</div>
</div>
</div>
</div>
</div>
</article>
<article class="esn-lb-card" data-icons="📢 🗣️ 💬" data-open="false" data-flipped="false">
<div class="esn-lb-frame">
<div class="esn-lb-envelope"></div>
<div class="esn-lb-flap"></div>
<div class="esn-lb-sparkle-host"></div>
<div class="esn-lb-label">
<div class="esn-lb-label-name">Costea</div>
<div class="esn-lb-label-role">Communication Manager</div>
</div>
<div class="esn-lb-photo-wrap">
<div class="esn-lb-photo-inner">
<div class="esn-lb-photo-front">
<img src="https://alba-iulia.esn.ro/sites/alba-iulia.esn.ro/files/2026-08/8_2.png" alt="Costea" loading="lazy">
<div class="esn-lb-photo-frontMeta">
<div>
<div class="esn-lb-caption-name">Costea</div>
<div class="esn-lb-caption-role">Communication Manager</div>
</div>
<div class="esn-lb-badge"><span class="esn-lb-badge-mark">✳</span>ESN</div>
</div>
</div>
<div class="esn-lb-info-overlay">
<div class="esn-lb-backTitle">Costea</div>
<div class="esn-lb-backRole">Communication Manager</div>
<div class="esn-lb-backText">Shapes the voice of the section through visuals, promotion, and storytelling that keeps everyone in the loop.</div>
<div class="esn-lb-backHint">Click to see photo again</div>
</div>
</div>
</div>
</div>
</article>
<article class="esn-lb-card" data-icons="💻 ⌨️ 🔤" data-open="false" data-flipped="false">
<div class="esn-lb-frame">
<div class="esn-lb-envelope"></div>
<div class="esn-lb-flap"></div>
<div class="esn-lb-sparkle-host"></div>
<div class="esn-lb-label">
<div class="esn-lb-label-name">Safiya</div>
<div class="esn-lb-label-role">IT Coordinator</div>
</div>
<div class="esn-lb-photo-wrap">
<div class="esn-lb-photo-inner">
<div class="esn-lb-photo-front">
<img src="https://alba-iulia.esn.ro/sites/alba-iulia.esn.ro/files/2026-08/2_7.png" alt="Safiya" loading="lazy">
<div class="esn-lb-photo-frontMeta">
<div>
<div class="esn-lb-caption-name">Safiya</div>
<div class="esn-lb-caption-role">IT Coordinator</div>
</div>
<div class="esn-lb-badge"><span class="esn-lb-badge-mark">✳</span>ESN</div>
</div>
</div>
<div class="esn-lb-info-overlay">
<div class="esn-lb-backTitle">Safiya</div>
<div class="esn-lb-backRole">IT Coordinator</div>
<div class="esn-lb-backText">The person behind every working link, login, and system update. The magic in every click runs through this person. Meet the mind behind it.</div>
<div class="esn-lb-backHint">Click to see photo again</div>
</div>
</div>
</div>
</div>
</article>
<article class="esn-lb-card" data-icons="🤝 🌱 ❤️" data-open="false" data-flipped="false">
<div class="esn-lb-frame">
<div class="esn-lb-envelope"></div>
<div class="esn-lb-flap"></div>
<div class="esn-lb-sparkle-host"></div>
<div class="esn-lb-label">
<div class="esn-lb-label-name">Sergiu</div>
<div class="esn-lb-label-role">HR Coordinator</div>
</div>
<div class="esn-lb-photo-wrap">
<div class="esn-lb-photo-inner">
<div class="esn-lb-photo-front">
<img src="https://alba-iulia.esn.ro/sites/alba-iulia.esn.ro/files/2026-08/7_2.png" alt="Sergiu" loading="lazy">
<div class="esn-lb-photo-frontMeta">
<div>
<div class="esn-lb-caption-name">Sergiu</div>
<div class="esn-lb-caption-role">HR Coordinator</div>
</div>
<div class="esn-lb-badge"><span class="esn-lb-badge-mark">✳</span>ESN</div>
</div>
</div>
<div class="esn-lb-info-overlay">
<div class="esn-lb-backTitle">Sergiu</div>
<div class="esn-lb-backRole">HR Coordinator</div>
<div class="esn-lb-backText">Supports members, strengthens the team environment, and helps volunteers grow through care and structure.</div>
<div class="esn-lb-backHint">Click to see photo again</div>
</div>
</div>
</div>
</div>
</article>
<article class="esn-lb-card" data-icons="📚 🎓 ✏️" data-open="false" data-flipped="false">
<div class="esn-lb-frame">
<div class="esn-lb-envelope"></div>
<div class="esn-lb-flap"></div>
<div class="esn-lb-sparkle-host"></div>
<div class="esn-lb-label">
<div class="esn-lb-label-name">Andreea</div>
<div class="esn-lb-label-role">Education Coordinator</div>
</div>
<div class="esn-lb-photo-wrap">
<div class="esn-lb-photo-inner">
<div class="esn-lb-photo-front">
<img src="https://alba-iulia.esn.ro/sites/alba-iulia.esn.ro/files/2026-08/6_2.png" alt="Andreea" loading="lazy">
<div class="esn-lb-photo-frontMeta">
<div>
<div class="esn-lb-caption-name">Andreea</div>
<div class="esn-lb-caption-role">Education Coordinator</div>
</div>
<div class="esn-lb-badge"><span class="esn-lb-badge-mark">✳</span>ESN</div>
</div>
</div>
<div class="esn-lb-info-overlay">
<div class="esn-lb-backTitle">Andreea</div>
<div class="esn-lb-backRole">Education Coordinator</div>
<div class="esn-lb-backText">Develops learning opportunities and projects that help students explore ideas, skills, and experiences beyond the classroom.</div>
<div class="esn-lb-backHint">Click to see photo again</div>
</div>
</div>
</div>
</div>
</article>
<article class="esn-lb-card" data-icons="🧭 🤝 🌟" data-open="false" data-flipped="false">
<div class="esn-lb-frame">
<div class="esn-lb-envelope"></div>
<div class="esn-lb-flap"></div>
<div class="esn-lb-sparkle-host"></div>
<div class="esn-lb-label">
<div class="esn-lb-label-name">Eleni</div>
<div class="esn-lb-label-role">Buddy Coordinator</div>
</div>
<div class="esn-lb-photo-wrap">
<div class="esn-lb-photo-inner">
<div class="esn-lb-photo-front">
<img src="https://alba-iulia.esn.ro/sites/alba-iulia.esn.ro/files/2026-08/3_4.png" alt="Eleni" loading="lazy">
<div class="esn-lb-photo-frontMeta">
<div>
<div class="esn-lb-caption-name">Eleni</div>
<div class="esn-lb-caption-role">Buddy Coordinator</div>
</div>
<div class="esn-lb-badge"><span class="esn-lb-badge-mark">✳</span>ESN</div>
</div>
</div>
<div class="esn-lb-info-overlay">
<div class="esn-lb-backTitle">Eleni</div>
<div class="esn-lb-backRole">Buddy Coordinator</div>
<div class="esn-lb-backText">Helps incoming students feel welcome by building connections, guiding buddies, and making integration warmer and easier.</div>
<div class="esn-lb-backHint">Click to see photo again</div>
</div>
</div>
</div>
</div>
</article>
<article class="esn-lb-card" data-icons="📱 💬 ❤️" data-open="false" data-flipped="false">
<div class="esn-lb-frame">
<div class="esn-lb-envelope"></div>
<div class="esn-lb-flap"></div>
<div class="esn-lb-sparkle-host"></div>
<div class="esn-lb-label">
<div class="esn-lb-label-name">Natalia</div>
<div class="esn-lb-label-role">Social Media Coordinator</div>
</div>
<div class="esn-lb-photo-wrap">
<div class="esn-lb-photo-inner">
<div class="esn-lb-photo-front">
<img src="https://alba-iulia.esn.ro/sites/alba-iulia.esn.ro/files/2026-08/5_2.png" alt="Natalia" loading="lazy">
<div class="esn-lb-photo-frontMeta">
<div>
<div class="esn-lb-caption-name">Natalia</div>
<div class="esn-lb-caption-role">Social Media Coordinator</div>
</div>
<div class="esn-lb-badge"><span class="esn-lb-badge-mark">✳</span>ESN</div>
</div>
</div>
<div class="esn-lb-info-overlay">
<div class="esn-lb-backTitle">Natalia</div>
<div class="esn-lb-backRole">Social Media Coordinator</div>
<div class="esn-lb-backText">Runs the section's online presence, keeping content fresh and the community engaged across platforms.</div>
<div class="esn-lb-backHint">Click to see photo again</div>
</div>
</div>
</div>
</div>
</article>
</div>
</div>
</div>
</section>
<div class="esn-org-connector"><div class="esn-org-line"></div><div class="esn-org-arrow">▾</div></div>
<div class="esn-org-duo">
<!-- ============ CHAIRING TEAM ============ -->
<section class="esn-lb" data-tier="chair" aria-label="Chairing Team of ESN Alba Iulia">
<div class="esn-lb-panel">
<div class="esn-lb-panel-title">
<h3>Meet The Chairing Team Of ESN Alba Iulia</h3>
<p>Keeping meetings and sessions on track</p>
</div>
<div class="esn-lb-carousel">
<div class="esn-lb-row" style="justify-content: center;">
<article class="esn-lb-card" data-icons="🎙️ ⏱️ 📋" data-open="false" data-flipped="false">
<div class="esn-lb-frame">
<div class="esn-lb-envelope"></div>
<div class="esn-lb-flap"></div>
<div class="esn-lb-sparkle-host"></div>
<div class="esn-lb-label">
<div class="esn-lb-label-name">Dorin</div>
<div class="esn-lb-label-role">Main Chair</div>
</div>
<div class="esn-lb-photo-wrap">
<div class="esn-lb-photo-inner">
<div class="esn-lb-photo-front">
<img src="https://alba-iulia.esn.ro/sites/alba-iulia.esn.ro/files/2026-08/2_4.png" alt="Dorin" loading="lazy">
<div class="esn-lb-photo-frontMeta">
<div>
<div class="esn-lb-caption-name">Dorin</div>
<div class="esn-lb-caption-role">Main Chair</div>
</div>
<div class="esn-lb-badge"><span class="esn-lb-badge-mark">✳</span>ESN</div>
</div>
</div>
<div class="esn-lb-info-overlay">
<div class="esn-lb-backTitle">Dorin</div>
<div class="esn-lb-backRole">Main Chair</div>
<div class="esn-lb-backText">The one who organizes the most important event for the section, the Local Assembly. He might look intimidating but he is a caring guy :)</div>
<div class="esn-lb-backHint">Click to see photo again</div>
</div>
</div>
</div>
</div>
</article>
<article class="esn-lb-card" data-icons="🎙️ 📝 🤝" data-open="false" data-flipped="false">
<div class="esn-lb-frame">
<div class="esn-lb-envelope"></div>
<div class="esn-lb-flap"></div>
<div class="esn-lb-sparkle-host"></div>
<div class="esn-lb-label">
<div class="esn-lb-label-name">Catalina</div>
<div class="esn-lb-label-role">Vice Chair</div>
</div>
<div class="esn-lb-photo-wrap">
<div class="esn-lb-photo-inner">
<div class="esn-lb-photo-front">
<img src="https://alba-iulia.esn.ro/sites/alba-iulia.esn.ro/files/2026-08/1_4.png" alt="Catalina" loading="lazy">
<div class="esn-lb-photo-frontMeta">
<div>
<div class="esn-lb-caption-name">Catalina</div>
<div class="esn-lb-caption-role">Vice Chair</div>
</div>
<div class="esn-lb-badge"><span class="esn-lb-badge-mark">✳</span>ESN</div>
</div>
</div>
<div class="esn-lb-info-overlay">
<div class="esn-lb-backTitle">Catalina</div>
<div class="esn-lb-backRole">Vice Chair</div>
<div class="esn-lb-backText">Steps in to support the chair, keeping discussions balanced and sessions running smoothly.</div>
<div class="esn-lb-backHint">Click to see photo again</div>
</div>
</div>
</div>
</div>
</article>
</div>
</div>
</div>
</section>
<!-- ============ MAIN AUDITOR ============ -->
<section class="esn-lb" data-tier="auditor" aria-label="Main Auditor of ESN Alba Iulia">
<div class="esn-lb-panel">
<div class="esn-lb-panel-title">
<h3>Meet The Main Auditor Of ESN Alba Iulia</h3>
<p>Overseeing accountability across the whole section</p>
</div>
<div class="esn-lb-carousel">
<div class="esn-lb-row" style="justify-content: center;">
<article class="esn-lb-card" data-icons="🔍 💰 📊" data-open="false" data-flipped="false">
<div class="esn-lb-frame">
<div class="esn-lb-envelope"></div>
<div class="esn-lb-flap"></div>
<div class="esn-lb-sparkle-host"></div>
<div class="esn-lb-label">
<div class="esn-lb-label-name">Alexandru</div>
<div class="esn-lb-label-role">Main Auditor</div>
</div>
<div class="esn-lb-photo-wrap">
<div class="esn-lb-photo-inner">
<div class="esn-lb-photo-front">
<img src="https://alba-iulia.esn.ro/sites/alba-iulia.esn.ro/files/2026-08/the-main-auditor-website-photo-3.png" alt="Alexandru" loading="lazy">
<div class="esn-lb-photo-frontMeta">
<div>
<div class="esn-lb-caption-name">Alexandru</div>
<div class="esn-lb-caption-role">Main Auditor</div>
</div>
<div class="esn-lb-badge"><span class="esn-lb-badge-mark">✳</span>ESN</div>
</div>
</div>
<div class="esn-lb-info-overlay">
<div class="esn-lb-backTitle">Alexandru</div>
<div class="esn-lb-backRole">Main Auditor</div>
<div class="esn-lb-backText">Reviews the section's finances and processes, making sure everything stays transparent and accountable.</div>
<div class="esn-lb-backHint">Click to see photo again</div>
</div>
</div>
</div>
</div>
</article>
</div>
</div>
</div>
</section>
</div>
</div>
<script>
(function () {
function openCard(card) {
if (!card) return;
if (card.classList.contains("is-open")) return;
card.classList.add("is-open");
card.classList.remove("is-flipped");
card.setAttribute("aria-expanded", "true");
}
function closeCard(card) {
if (!card) return;
card.classList.remove("is-flipped");
card.classList.remove("is-open");
card.setAttribute("aria-expanded", "false");
var host = card.querySelector(".esn-lb-sparkle-host");
if (host) {
host.innerHTML = "";
}
}
function toggleFlip(card) {
if (!card) return;
if (!card.classList.contains("is-open")) {
openCard(card);
}
var willReveal = !card.classList.contains("is-flipped");
card.classList.toggle("is-flipped");
card.classList.add("has-interacted");
if (willReveal) {
spawnSparkles(card);
}
}
document.querySelectorAll(".esn-lb-card").forEach(function (card) {
card.style.webkitTapHighlightColor = "transparent";
card.style.touchAction = "manipulation";
card.setAttribute("role", "button");
card.setAttribute("tabindex", "0");
card.setAttribute("aria-expanded", "false");
card.addEventListener("click", function () {
toggleFlip(card);
});
card.addEventListener("keydown", function (event) {
if (event.key === "Enter" || event.key === " ") {
event.preventDefault();
toggleFlip(card);
}
});
});
function spawnSparkles(card) {
var host =
card.querySelector(".esn-lb-sparkle-host");
if (!host) {
return;
}
if (host.dataset.clearTimer) {
window.clearTimeout(Number(host.dataset.clearTimer));
}
host.innerHTML = "";
var icons =
(card.getAttribute("data-icons") || "\u2728")
.trim()
.split(/\s+/);
var count = 12;
for (var i = 0; i < count; i++) {
var span =
document.createElement("span");
span.className = "esn-sparkle";
span.textContent =
icons[i % icons.length];
var angle =
(i / count) * Math.PI * 2
+ (Math.random() * 0.5 - 0.25);
var distance = 55 + Math.random() * 55;
var dx = Math.cos(angle) * distance;
var dy = Math.sin(angle) * distance;
span.style.setProperty("--dx", dx.toFixed(1) + "px");
span.style.setProperty("--dy", dy.toFixed(1) + "px");
span.style.animationDelay =
(Math.random() * 0.15).toFixed(2) + "s";
host.appendChild(span);
}
var clearId = window.setTimeout(function () {
host.innerHTML = "";
delete host.dataset.clearTimer;
}, 2000);
host.dataset.clearTimer = String(clearId);
}
var lastY = window.scrollY;
var direction = "down";
window.addEventListener(
"scroll",
function () {
var y = window.scrollY;
if (y > lastY + 1) {
direction = "down";
}
else if (y < lastY - 1) {
direction = "up";
}
lastY = y;
},
{ passive: true }
);
function closeSection(section) {
section.classList.remove("is-section-open");
var cards =
section.querySelectorAll(".esn-lb-card");
cards.forEach(function (card) {
closeCard(card);
});
}
if ("IntersectionObserver" in window) {
// Watch every card individually so each one pops the moment
// it scrolls into view — this no longer depends on how tall
// its section is (long sections like Coordinators used to
// need a lot of scrolling before 35% of the whole section
// was visible, which delayed the pop-up).
var cardObserver =
new IntersectionObserver(
function (entries) {
entries.forEach(function (entry) {
if (!entry.isIntersecting) {
return;
}
var card = entry.target;
var section = card.closest(".esn-lb");
if (section) {
section.classList.add("is-section-open");
}
openCard(card);
cardObserver.unobserve(card);
});
},
{
threshold: 0.25,
rootMargin: "0px 0px -10% 0px"
}
);
document
.querySelectorAll(".esn-lb-card")
.forEach(function (card) {
cardObserver.observe(card);
});
// Separately watch whole sections just to auto-close them
// again when the user scrolls back up past them.
var sectionObserver =
new IntersectionObserver(
function (entries) {
entries.forEach(function (entry) {
if (!entry.isIntersecting && direction === "up") {
closeSection(entry.target);
}
});
},
{
threshold: 0
}
);
document
.querySelectorAll(".esn-lb")
.forEach(function (section) {
sectionObserver.observe(section);
});
}
else {
document
.querySelectorAll(".esn-lb-card")
.forEach(function (card) {
openCard(card);
});
}
})();
</script>