<!DOCTYPE html>
<html lang="sq">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Kryepiskopi Joan | Kisha Orthodhokse Autoqefale e Shqipërisë</title>
    
    <!-- Fonts -->
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500&family=Playfair+Display:ital,wght@0,400;0,500;0,600;1,400&family=Crimson+Pro:ital,wght@0,400;0,500;0,600;1,400&display=swap" rel="stylesheet">
    
    <style>
        :root {
            /* Refined Orthodox Palette */
            --gold-deep: #8B7355;
            --gold-accent: #C9A227;
            --gold-light: #D4C4A8;
            
            --burgundy-deep: #722F37;
            --burgundy-muted: #5C3D3D;
            
            --cream: #F5F0E6;
            --cream-dark: #E8E0D0;
            --ivory: #FFFEF9;
            
            --charcoal: #2D2D2D;
            --slate: #3D4149;
            --slate-warm: #4A4543;
            
            --text-light: #F5F0E6;
            --text-dark: #2D2D2D;
        }

        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        /* WordPress Compatibility - Full Width Wrapper */
        .kryepiskopi-page-wrapper {
            width: 100vw;
            min-width: 100%;
            min-height: 100vh;
            background: var(--cream);
            position: relative;
            overflow-x: hidden;
            margin: 0;
            padding: 0;
            left: 50%;
            right: 50%;
            margin-left: -50vw;
            margin-right: -50vw;
        }

        /* Reset WordPress theme styles */
        .kryepiskopi-page-wrapper * {
            max-width: 100%;
        }

        body {
            font-family: 'Crimson Pro', Georgia, serif;
            background: var(--cream);
            color: var(--text-dark);
            line-height: 1.8;
        }

        /* === HERO SECTION === */
        .hero-section {
            position: relative;
            min-height: 85vh;
            width: 100%;
            background: linear-gradient(145deg, 
                var(--charcoal) 0%, 
                var(--slate-warm) 40%, 
                var(--burgundy-muted) 100%);
            display: flex;
            align-items: center;
            overflow: hidden;
        }

        .hero-section::before {
            content: '';
            position: absolute;
            top: 0;
            left: 0;
            right: 0;
            bottom: 0;
            background: 
                radial-gradient(ellipse at 20% 50%, rgba(201, 162, 39, 0.08) 0%, transparent 50%),
                radial-gradient(ellipse at 80% 80%, rgba(114, 47, 55, 0.1) 0%, transparent 40%);
            pointer-events: none;
        }

        .hero-section::after {
            content: '†';
            position: absolute;
            top: 50%;
            right: 5%;
            transform: translateY(-50%);
            font-size: 40vh;
            color: var(--gold-accent);
            opacity: 0.04;
            pointer-events: none;
        }

        .hero-container {
            position: relative;
            z-index: 1;
            max-width: 1200px;
            margin: 0 auto;
            padding: 4rem 2rem;
            display: grid;
            grid-template-columns: 380px 1fr;
            gap: 5rem;
            align-items: center;
        }

        /* Photo Frame */
        .hero-image-wrapper {
            position: relative;
        }

        .hero-image-frame {
            position: relative;
            padding: 8px;
            background: linear-gradient(135deg, 
                var(--gold-deep) 0%, 
                var(--gold-light) 25%,
                var(--gold-deep) 50%,
                var(--gold-light) 75%,
                var(--gold-deep) 100%);
            box-shadow: 
                0 20px 60px rgba(0,0,0,0.4),
                0 0 0 1px rgba(201, 162, 39, 0.3),
                inset 0 0 20px rgba(255,255,255,0.1);
        }

        .hero-image-frame::before {
            content: '';
            position: absolute;
            inset: 15px;
            border: 1px solid var(--gold-light);
            opacity: 0.6;
            pointer-events: none;
            z-index: 2;
        }

        .hero-image-inner {
            background: var(--charcoal);
            padding: 0;
            min-height: 0;
            display: block;
            position: relative;
            overflow: hidden;
        }

        .hero-image-frame img {
            width: 100%;
            height: 100%;
            display: block;
            aspect-ratio: 3/4;
            object-fit: cover;
            object-position: center top;
            filter: sepia(8%) contrast(1.05) brightness(1.02);
            background: var(--charcoal);
        }

        .image-placeholder {
            width: 100%;
            height: 100%;
            aspect-ratio: 3/4;
            background: linear-gradient(180deg, var(--slate) 0%, var(--charcoal) 100%);
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            color: var(--gold-accent);
            font-family: 'Cormorant Garamond', serif;
            font-size: 1.1rem;
            text-align: center;
            padding: 2rem;
            gap: 0.5rem;
        }

        /* Hero Content */
        .hero-content {
            color: var(--text-light);
            background: rgba(0, 0, 0, 0.18);
            border: 1px solid rgba(201, 162, 39, 0.25);
            box-shadow: 0 12px 30px rgba(0,0,0,0.25);
            padding: 1.5rem 1.75rem;
        }

        .hero-label {
            font-family: 'Cormorant Garamond', serif;
            font-size: 0.9rem;
            font-weight: 600;
            letter-spacing: 0.35em;
            text-transform: uppercase;
            color: #FFD700;
            margin-bottom: 1.2rem;
            display: flex;
            align-items: center;
            gap: 1rem;
            text-shadow: 0 2px 4px rgba(0,0,0,0.6), 0 1px 2px rgba(0,0,0,0.4);
        }

        .hero-label::before,
        .hero-label::after {
            content: '✦';
            font-size: 0.4rem;
            opacity: 0.7;
        }

        .hero-title {
            font-family: 'Playfair Display', serif;
            font-size: clamp(2.8rem, 5vw, 4rem);
            font-weight: 600;
            line-height: 1.15;
            margin-bottom: 0.5rem;
            /* Match photo frame gold tones */
            background: linear-gradient(135deg, var(--gold-light) 0%, var(--gold-accent) 45%, var(--gold-deep) 100%);
            -webkit-background-clip: text;
            background-clip: text;
            color: transparent;
            text-shadow: 0 3px 6px rgba(0,0,0,0.7), 0 2px 4px rgba(0,0,0,0.5), 0 1px 2px rgba(0,0,0,0.3);
        }

        .hero-subtitle {
            font-family: 'Cormorant Garamond', serif;
            font-size: clamp(1.3rem, 2.5vw, 1.7rem);
            font-weight: 600;
            /* Stronger + WP-safe color so it doesn't get overridden */
            color: var(--gold-accent) !important;
            margin-bottom: 2.5rem;
            font-style: italic;
            opacity: 1;
            text-shadow: 0 4px 10px rgba(0,0,0,0.65), 0 2px 4px rgba(0,0,0,0.45);
        }

        .hero-info {
            padding-left: 1.5rem;
            border-left: 2px solid var(--gold-accent);
            margin-bottom: 2.5rem;
        }

        .hero-info-item {
            display: flex;
            align-items: center;
            gap: 0.75rem;
            font-size: 1.05rem;
            margin-bottom: 0.5rem;
            color: var(--gold-light);
            opacity: 1;
            font-weight: 600;
            text-shadow: 0 3px 6px rgba(0,0,0,0.7), 0 2px 4px rgba(0,0,0,0.5), 0 1px 2px rgba(0,0,0,0.3);
            letter-spacing: 0.02em;
        }

        .hero-info-key {
            color: var(--gold-accent);
            font-weight: 700;
        }

        .hero-info-val {
            color: var(--gold-light);
            font-weight: 600;
        }

        .hero-info-item:last-child {
            margin-bottom: 0;
        }

        .hero-info-icon {
            font-size: 1.2rem;
            opacity: 1;
            filter: drop-shadow(0 3px 5px rgba(0,0,0,0.7)) drop-shadow(0 1px 2px rgba(0,0,0,0.5));
            color: #FFD700;
        }

        .cross-divider {
            display: flex;
            align-items: center;
            gap: 1.5rem;
            margin: 2rem 0;
            color: #FFD700;
            font-size: 1.3rem;
            filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));
        }

        .cross-divider::before,
        .cross-divider::after {
            content: '';
            flex: 1;
            max-width: 150px;
            height: 2px;
            background: linear-gradient(90deg, #FFD700, transparent);
            box-shadow: 0 1px 2px rgba(0,0,0,0.3);
        }

        .cross-divider::after {
            background: linear-gradient(90deg, transparent, #FFD700);
        }

        /* === DYNAMIC ARTICLES GRID === */
        .articles-grid {
            display: grid;
            grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
            gap: 2rem;
            margin-top: 1rem;
        }

        .article-card {
            background: var(--ivory);
            border: 1px solid rgba(139, 115, 85, 0.2);
            display: flex;
            flex-direction: column;
            transition: all 0.4s cubic-bezier(0.165, 0.84, 0.44, 1);
            height: 100%;
            position: relative;
            text-decoration: none;
            color: inherit;
        }

        .article-card:hover {
            transform: translateY(-10px);
            box-shadow: 0 20px 40px rgba(0,0,0,0.1);
            border-color: var(--gold-accent);
        }

        .article-card-image {
            width: 100%;
            height: 220px;
            overflow: hidden;
            position: relative;
            background: var(--cream-dark);
        }

        .article-card-image img {
            width: 100%;
            height: 100%;
            object-fit: cover;
            transition: transform 0.6s ease;
        }

        .article-card:hover .article-card-image img {
            transform: scale(1.08);
        }

        .article-card-content {
            padding: 1.75rem;
            flex-grow: 1;
            display: flex;
            flex-direction: column;
            border-top: 3px solid var(--gold-accent);
        }

        .article-card-date {
            font-family: 'Cormorant Garamond', serif;
            font-size: 0.9rem;
            color: var(--gold-deep);
            font-weight: 700;
            text-transform: uppercase;
            letter-spacing: 0.1em;
            margin-bottom: 0.75rem;
            display: flex;
            align-items: center;
            gap: 0.5rem;
        }

        .article-card-date::before {
            content: '†';
            font-size: 0.8rem;
        }

        .article-card-title {
            font-family: 'Playfair Display', serif;
            font-size: 1.35rem;
            color: var(--burgundy-deep);
            margin-bottom: 1rem;
            line-height: 1.3;
            font-weight: 600;
        }

        .article-card-excerpt {
            font-size: 1rem;
            color: var(--slate-warm);
            line-height: 1.7;
            margin-bottom: 1.5rem;
            display: -webkit-box;
            -webkit-line-clamp: 3;
            -webkit-box-orient: vertical;
            overflow: hidden;
        }

        .article-card-more {
            margin-top: auto;
            font-family: 'Cormorant Garamond', serif;
            font-weight: 700;
            color: var(--burgundy-deep);
            display: flex;
            align-items: center;
            gap: 0.5rem;
            font-size: 1rem;
            transition: gap 0.3s ease;
        }

        .article-card:hover .article-card-more {
            gap: 0.8rem;
        }

        /* Loading Spinner */
        .loading-container {
            text-align: center;
            padding: 4rem;
            color: var(--gold-deep);
        }

        .spinner {
            width: 40px;
            height: 40px;
            border: 4px solid rgba(139, 115, 85, 0.1);
            border-left-color: var(--gold-accent);
            border-radius: 50%;
            animation: spin 1s linear infinite;
            margin: 0 auto 1rem;
        }

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

        /* hero quote removed by request */

        /* Highlights strip (separate box under HERO, row layout) */
        .highlights-strip {
            background: var(--cream);
            padding: 2.5rem 2rem 3rem;
            width: 100%;
        }

        .highlights-strip .strip-container {
            max-width: 1200px;
            margin: 0 auto;
        }

        .highlights-strip .highlights-box {
            background: linear-gradient(135deg, var(--charcoal) 0%, var(--slate-warm) 100%);
            padding: 1.75rem;
            position: relative;
            overflow: hidden;
        }

        .highlights-strip .highlights-box::before {
            content: '';
            position: absolute;
            inset: 8px;
            border: 1px solid var(--gold-accent);
            opacity: 0.35;
            pointer-events: none;
        }

        .highlights-strip .highlights-title {
            color: var(--gold-accent);
            text-align: center;
            margin-bottom: 1.25rem;
            font-size: 1.2rem;
            text-shadow: 0 2px 6px rgba(0,0,0,0.55);
        }

        /* “σε σειρά” με προσαρμογή (wrap) */
        .highlights-strip .highlights-grid {
            display: flex;
            flex-wrap: wrap;
            gap: 0.75rem;
        }

        .highlights-strip .highlight-item {
            flex: 1 1 260px;
            min-width: 240px;
            background: rgba(255,255,255,0.06);
            border-left: 3px solid var(--gold-accent);
            padding: 0.85rem 0.9rem;
            display: flex;
            align-items: flex-start;
            gap: 0.75rem;
        }

        .highlights-strip .highlight-year {
            color: var(--gold-accent);
            font-weight: 800;
            min-width: 64px;
            text-shadow: 0 2px 6px rgba(0,0,0,0.55);
        }

        .highlights-strip .highlight-text {
            color: var(--gold-light);
            opacity: 1;
            text-shadow: 0 2px 6px rgba(0,0,0,0.55);
        }

        /* === BIOGRAPHY SECTION === */
        .biography-section {
            background: var(--cream);
            padding: 5rem 2rem;
            position: relative;
            width: 100%;
        }

        .biography-section::before {
            content: '';
            position: absolute;
            top: 0;
            left: 0;
            right: 0;
            height: 4px;
            background: linear-gradient(90deg, 
                var(--burgundy-deep), 
                var(--gold-accent), 
                var(--burgundy-deep));
        }

        .section-container {
            max-width: 1000px;
            margin: 0 auto;
        }

        .section-header {
            text-align: center;
            margin-bottom: 3rem;
        }

        .section-icon {
            font-size: 2rem;
            margin-bottom: 0.75rem;
            opacity: 0.8;
        }

        .section-title {
            font-family: 'Playfair Display', serif;
            font-size: 2rem;
            color: var(--burgundy-deep);
            margin-bottom: 0.5rem;
            font-weight: 500;
        }

        .section-subtitle {
            font-family: 'Cormorant Garamond', serif;
            font-size: 1.1rem;
            color: var(--slate-warm);
            font-style: italic;
        }

        /* Biography Content */
        .biography-box {
            background: var(--ivory);
            padding: 3rem;
            box-shadow: 
                0 4px 20px rgba(0,0,0,0.06),
                0 0 0 1px rgba(139, 115, 85, 0.1);
            border-left: 4px solid var(--burgundy-deep);
            position: relative;
        }

        .biography-box::before {
            content: '📜';
            position: absolute;
            top: -18px;
            left: 25px;
            font-size: 2rem;
            background: var(--cream);
            padding: 0 0.75rem;
        }

        .biography-content {
            font-size: 1.1rem;
            line-height: 1.9;
            text-align: justify;
        }

        .biography-content p {
            margin-bottom: 1.5rem;
        }

        .biography-content p:last-child {
            margin-bottom: 0;
        }

        .biography-content p:first-of-type::first-letter {
            font-family: 'Playfair Display', serif;
            font-size: 4rem;
            float: left;
            line-height: 1;
            margin-right: 0.5rem;
            margin-top: 0.1rem;
            color: var(--burgundy-deep);
        }

        /* Highlights Box */
        .highlights-box {
            background: linear-gradient(135deg, var(--charcoal) 0%, var(--slate-warm) 100%);
            padding: 2rem;
            margin-top: 2.5rem;
            color: var(--cream);
            position: relative;
        }

        .highlights-box::before {
            content: '';
            position: absolute;
            inset: 8px;
            border: 1px solid var(--gold-accent);
            opacity: 0.4;
            pointer-events: none;
        }

        .highlights-title {
            font-family: 'Cormorant Garamond', serif;
            font-size: 1.3rem;
            color: var(--gold-accent);
            margin-bottom: 1.5rem;
            text-align: center;
        }

        .highlights-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
            gap: 1rem;
        }

        .highlight-item {
            display: flex;
            align-items: flex-start;
            gap: 0.75rem;
            padding: 0.75rem;
            background: rgba(255,255,255,0.03);
            border-left: 2px solid var(--gold-accent);
        }

        .highlight-year {
            font-family: 'Cormorant Garamond', serif;
            font-weight: 700;
            color: var(--gold-accent);
            min-width: 50px;
        }

        .highlight-text {
            font-size: 0.95rem;
            opacity: 0.9;
        }

        /* === QUOTE BANNER === */
        .quote-banner {
            background: linear-gradient(135deg, 
                var(--burgundy-deep) 0%, 
                var(--burgundy-muted) 100%);
            padding: 4rem 2rem;
            position: relative;
            overflow: hidden;
            width: 100%;
        }

        .quote-banner::before {
            content: '"';
            position: absolute;
            top: -20px;
            left: 5%;
            font-size: 20rem;
            font-family: 'Playfair Display', serif;
            color: var(--gold-accent);
            opacity: 0.1;
            line-height: 1;
        }

        .quote-container {
            max-width: 750px;
            margin: 0 auto;
            text-align: center;
            position: relative;
            z-index: 1;
        }

        .quote-text {
            font-family: 'Cormorant Garamond', serif;
            font-size: 1.6rem;
            font-style: italic;
            color: #ffffff;
            line-height: 1.6;
            margin-bottom: 1.25rem;
            text-shadow: 0 3px 8px rgba(0,0,0,0.55), 0 1px 2px rgba(0,0,0,0.35);
        }

        .quote-attribution {
            font-size: 0.95rem;
            color: #ffffff;
            font-family: 'Cormorant Garamond', serif;
            text-shadow: 0 2px 6px rgba(0,0,0,0.5);
        }

        /* === WRITINGS SECTION === */
        .writings-section {
            background: var(--cream-dark);
            padding: 5rem 2rem;
            position: relative;
            width: 100%;
        }

        .writings-section::before {
            content: '';
            position: absolute;
            top: 0;
            left: 50%;
            transform: translateX(-50%);
            width: 120px;
            height: 3px;
            background: var(--gold-accent);
        }

        /* Filter Navigation */
        .filter-nav {
            display: flex;
            justify-content: center;
            gap: 0.6rem;
            margin-bottom: 2.5rem;
            flex-wrap: wrap;
        }

        .filter-btn {
            padding: 0.6rem 1.3rem;
            background: transparent;
            border: 1.5px solid var(--burgundy-deep);
            color: var(--burgundy-deep);
            font-family: 'Cormorant Garamond', serif;
            font-size: 0.95rem;
            font-weight: 600;
            cursor: pointer;
            transition: all 0.3s ease;
        }

        .filter-btn:hover,
        .filter-btn.active {
            background: var(--burgundy-deep);
            color: var(--cream);
        }

        .posts-area {
            margin-top: 2rem;
        }

        /* Shortcode placeholder */
        .shortcode-area {
            background: linear-gradient(135deg, var(--cream), var(--ivory));
            border: 2px dashed var(--gold-deep);
            padding: 2rem;
            text-align: center;
            color: var(--slate-warm);
            font-family: 'Cormorant Garamond', serif;
        }

        .shortcode-area strong {
            color: var(--burgundy-deep);
            display: block;
            margin-bottom: 0.5rem;
        }

        .shortcode-area code {
            display: inline-block;
            background: var(--charcoal);
            color: var(--gold-light);
            padding: 0.75rem 1.25rem;
            margin-top: 1rem;
            font-family: 'Consolas', monospace;
            font-size: 0.85rem;
            border-radius: 4px;
        }

        .view-more-wrapper {
            text-align: center;
            margin-top: 2.5rem;
        }

        .btn-primary {
            display: inline-flex;
            align-items: center;
            gap: 0.6rem;
            padding: 0.9rem 2rem;
            background: var(--burgundy-deep);
            border: none;
            color: var(--cream);
            font-family: 'Cormorant Garamond', serif;
            font-size: 1rem;
            font-weight: 600;
            cursor: pointer;
            transition: all 0.3s ease;
            text-decoration: none;
        }

        .btn-primary:hover {
            background: var(--charcoal);
            transform: translateY(-2px);
        }

        .btn-secondary {
            background: transparent;
            border: 2px solid var(--gold-accent);
            color: var(--cream);
        }

        .btn-secondary:hover {
            background: var(--gold-accent);
            color: var(--charcoal);
        }

        /* === GALLERY SECTION === */
        .gallery-section {
            background: linear-gradient(180deg, 
                var(--charcoal) 0%, 
                var(--slate-warm) 100%);
            padding: 5rem 2rem;
            width: 100%;
        }

        .gallery-section .section-title {
            color: var(--cream);
        }

        .gallery-section .section-subtitle {
            color: var(--gold-light);
        }

        .gallery-section .shortcode-area {
            background: rgba(255,255,255,0.05);
            border-color: var(--gold-accent);
            color: var(--gold-light);
        }

        .gallery-section .shortcode-area strong {
            color: var(--cream);
        }

        .gallery-area {
            margin-top: 2rem;
        }

        /* === VIDEOS SECTION === */
        .videos-section {
            background: var(--ivory);
            padding: 5rem 2rem;
            width: 100%;
        }

        .videos-area {
            margin-top: 2rem;
        }

        /* === RESPONSIVE === */
        @media (max-width: 1024px) {
            .hero-container {
                grid-template-columns: 1fr;
                text-align: center;
                gap: 3rem;
            }

            .hero-image-wrapper {
                max-width: 320px;
                margin: 0 auto;
            }

            .hero-label {
                justify-content: center;
            }

            .hero-info {
                border-left: none;
                padding-left: 0;
                border-top: 2px solid var(--gold-accent);
                padding-top: 1.5rem;
                display: inline-block;
            }

            .hero-info-item {
                justify-content: center;
            }

            .cross-divider::before,
            .cross-divider::after {
                max-width: 100px;
            }

            /* hero quote removed */
        }

        @media (max-width: 768px) {
            .hero-section {
                min-height: auto;
                padding: 2rem 0;
            }

            .biography-box {
                padding: 2rem 1.5rem;
            }

            .biography-content p:first-of-type::first-letter {
                font-size: 3rem;
            }

            .highlights-grid {
                grid-template-columns: 1fr;
            }

            .filter-nav {
                gap: 0.4rem;
            }

            .filter-btn {
                padding: 0.5rem 1rem;
                font-size: 0.85rem;
            }

            .quote-text {
                font-size: 1.3rem;
            }
        }
    </style>
</head>
<body>

    <!-- WordPress Full Width Wrapper -->
    <div class="kryepiskopi-page-wrapper">

    <!-- ======================= -->
    <!-- HERO SECTION -->
    <!-- ======================= -->
    <section class="hero-section">
        <div class="hero-container">
            
            <!-- PHOTO FRAME -->
            <div class="hero-image-wrapper">
                <div class="hero-image-frame">
                    <div class="hero-image-inner">
                        <!-- 
                        ========================================
                        📷 VENDOS URL TË FOTOS KËTU
                        Ndërro URL me foton e vërtetë
                        ========================================
                        -->
                        <img src="https://orthodoxalbania.org/2020/wp-content/uploads/2025/12/biografia_e_fortlumturise_se_tij_kryepiskopit_te_tiranes_durresit_dhe_gjithe_shq_02.jpg" 
                             alt="Kryepiskopi Joan i Tiranës, Durrësit dhe i Gjithë Shqipërisë"
                             loading="eager"
                             onerror="this.style.display='none'; this.nextElementSibling.style.display='flex';"
                             style="max-width: 100%; height: auto;">
                        <div class="image-placeholder" style="display: none;">
                            📷 Foto Zyrtare<br>Kryepiskopit Joan
                        </div>
                    </div>
                </div>
            </div>

            <!-- HERO CONTENT -->
            <div class="hero-content">
                <div class="hero-label">Fortlumturia e Tij</div>
                <h1 class="hero-title">Kryepiskopi Joan</h1>
                <p class="hero-subtitle">i Tiranës, Durrësit dhe i Gjithë Shqipërisë</p>
                
                <div class="hero-info">
                    <div class="hero-info-item">
                        <span><span class="hero-info-key">Lindur:</span> <span class="hero-info-val">1 Janar 1956, Tiranë</span></span>
                    </div>
                    <div class="hero-info-item">
                        <span><span class="hero-info-key">Kryepiskop:</span> <span class="hero-info-val">16 Mars 2025 —</span></span>
                    </div>
                </div>

                <div class="cross-divider">†</div>
            </div>
        </div>
    </section>

    <!-- ======================= -->
    <!-- HIGHLIGHTS STRIP (UNDER IDENTITY) -->
    <!-- ======================= -->
    <section class="highlights-strip">
        <div class="strip-container">
            <div class="highlights-box">
                <h3 class="highlights-title">† Pikat Kryesore të Jetës</h3>
                <div class="highlights-grid">
                    <div class="highlight-item">
                        <span class="highlight-year">1956</span>
                        <span class="highlight-text">Lindja në Tiranë</span>
                    </div>
                    <div class="highlight-item">
                        <span class="highlight-year">1979</span>
                        <span class="highlight-text">Pagëzimi fshehurazi nga At Kozma Qirio</span>
                    </div>
                    <div class="highlight-item">
                        <span class="highlight-year">1993</span>
                        <span class="highlight-text">MTS me "High Distinction" - Holy Cross, Boston</span>
                    </div>
                    <div class="highlight-item">
                        <span class="highlight-year">1994</span>
                        <span class="highlight-text">Dorëzimi dhjakon dhe prift</span>
                    </div>
                    <div class="highlight-item">
                        <span class="highlight-year">1996</span>
                        <span class="highlight-text">Arkimandrit, Dekan i Akademisë Teologjike</span>
                    </div>
                    <div class="highlight-item">
                        <span class="highlight-year">1998</span>
                        <span class="highlight-text">Mitropolit i Korçës</span>
                    </div>
                    <div class="highlight-item">
                        <span class="highlight-year">2000</span>
                        <span class="highlight-text">Themelimi i revistës "Tempulli"</span>
                    </div>
                    <div class="highlight-item">
                        <span class="highlight-year">2003</span>
                        <span class="highlight-text">Qytetar Nderi i Qarkut Korçë</span>
                    </div>
                    <div class="highlight-item">
                        <span class="highlight-year">2016</span>
                        <span class="highlight-text">Pjesëmarrës në Sinodin e Madh, Kretë</span>
                    </div>
                    <div class="highlight-item">
                        <span class="highlight-year">2018</span>
                        <span class="highlight-text">Doctor Honoris Causa - Universiteti "Fan S. Noli"</span>
                    </div>
                    <div class="highlight-item">
                        <span class="highlight-year">2025</span>
                        <span class="highlight-text">Kryepiskop i Tiranës, Durrësit dhe gjithë Shqipërisë</span>
                    </div>
                </div>
            </div>
        </div>
    </section>


    <!-- ======================= -->
    <!-- BIOGRAPHY SECTION -->
    <!-- ======================= -->
    <section class="biography-section">
        <div class="section-container">
            <div class="section-header">
                <div class="section-icon">📜</div>
                <h2 class="section-title">Biografia</h2>
                <p class="section-subtitle">Jeta dhe vepra e Kryepiskopit Joan Pelushi</p>
            </div>

            <div class="biography-box">
                <div class="biography-content">
                    <p>Fortlumturia e Tij, Kryepiskopi i Tiranës, Durrësit dhe gjithë Shqipërisë Imzot Joan Pelushi, ka lindur në Tiranë në 01.01.1956. Qysh në rininë e tij të hershme, në kohën më të egër të persekutimit fetar, u pagëzua fshehurazi nga prifti hero, më vonë peshkopi i Apollonisë, z. Kozma Qirio, duke u bërë pjesë e një grupi të vogël të kishës së nëndheshme.</p>

                    <p>Në vitet 1979-1990 punoi në Spitalin Psikiatrik të Tiranës, në pavionin e reabilitimit nëpërmjet terapisë okupacionale. Në vitin 1990 u largua nga Shqipëria për në USA ku kreu studimet në teologji në Universitetin "Holy Cross Greek Orthodox School of Theology" në Boston, USA, ku u diplomua me "High Distinction" në MTS (Master i Studimeve Teologjike) në vitin 1993.</p>

                    <p>Qysh në vitin 1992, i nxitur nga dëshira për të dhënë një kontribut në rindërtimin e Kishës, ai kontaktoi Kryepiskopin Anastas dhe i parashtroi vendimin e tij për t'u kthyer në Shqipëri, në një kohë kur të gjithë donin të largoheshin nga vendi. Kjo dëshirë dhe ky vendim u prit me gëzim nga Kryepiskopi, i cili e inkurajoi dhe e përgëzoi. Në Shtator të atij viti u kthye në Shqipëri dhe filloi të punonte si pedagog në Akademinë Teologjike të Kishës Ortodokse Autoqefale të Shqipërisë.</p>

                    <p>Në 27 Shkurt 1994 u dorëzua dhjakon dhe në 4 Dhjetor prift, duke vazhduar të jepte mësim në Akademinë Teologjike. Në 1995 shkon përsëri për të ndjekur studime të mëtejshme në Universitetin "Holy Cross Greek Orthodox School of Theology" në Boston, USA. Për rezultate të larta në sezonin akademik 1995-1996 ishte në Listën Kombëtare të Dekanit (The National Dean's List), ku shkruhen emrat e studentëve më të mirë të të gjithë universiteteve të Shteteve të Bashkuara të Amerikës.</p>

                    <p>Në vitin 1996 u ngrit në rangun e arkimandritit. Në vitin 1997 u diplomua përsëri me "High Distinction" në MT (Master i Teologjisë, një master i avancuar, ekuivalent me kandidat i shkencave) po në Holy Cross, Boston. U kthye në Shqipëri ku u emërua dekan i Akademisë Teologjike të Kishës Ortodokse, detyrë në të cilën qëndroi nga viti 1996 deri në 1998, deri sa u emërua Mitropolit.</p>

                    <p>Në vitin 1998 u zgjodh dhe u dorëzua peshkop, si mitropolit i Korçës, duke vazhduar të ishte përsëri pedagog në Akademinë Teologjike. Ai ka përgatitur tekstet e Dogmatikës dhe ka përkthyer shumë libra, si edhe ka botuar shumë artikuj në gazeta, revista dhe periodikë studimorë të huaj dhe të vendit. Përveç gjuhës së tij amtare shqipes, zotëron anglishten, frëngjishten italishten, greqishten dhe ka njohuri në latinishten dhe hebraishten.</p>

                    <p>Ka përkthyer disa libra teologjikë në shqip, përfshirë edhe përkthime të vështira nga etërit e kishës, si "Mbi Shpirtin e Shenjtë" të Vasilit të Madh, një libër i cili është bazë në zhvillimin e doktrinës së krishterë. Kontributi në këto përkthime është në formimin, unifikimin dhe përcaktimin e terminologjisë filozofiko-fetare, sepse ka pasur mangësi në literaturën shqipe në këtë fushë. Kontributi i Kryepiskopit Imzot Joan Pelushit në fushën e terminologjisë është vlerësuar nga studjues të vendit dhe të huaj. Kryepiskopi Joan Pelushi ka shkruar tekstin e parë të Dogmatikës në shqip, tekst që përdoret si botimi zyrtar i Kishës Ortodokse në Shqipëri.</p>

                    <p>Në vitin 2000 ka themeluar dhe vazhdon të drejtojë Revistën periodike "Tempulli", që është bërë tashmë një nga revistat më serioze në fushën studimore dhe kulturore, ku marrin pjesë intelektualë, studjues dhe albanologë nga më të njohurit, si nga Shqipëria ashtu edhe nga jashtë vendit. Ai është jo vetëm kryetari i redaksisë së revistës, por edhe një nga kontribuesit kryesorë në shkrimet e saj.</p>

                    <p>Ka përfaqësuar Kishën Ortodokse Autoqefale të Shqipërisë në shumë takime ndërkombëtare, si referues dhe si pjesëmarrës në grupet e hartimit të teksteve, deklaratave dhe mesazheve të ndryshëm. Ka përfaqësuar në nivel të lartë Kishën Ortodokse Botërore në shumë grupe pune të Këshillit Botëror të Kishave dhe ishte një nga anëtarët e grupit të rëndësishëm të punës (Joint Working Group) me një mandat pesëvjeçar për hartimin e bashkëpunimit ndërmjet Këshillit Botëror të Kishave dhe Kishës Romano-Katolike.</p>

                    <p>Përfaqësoi, gjithashtu, Kishën Ortodokse Autoqefale të Shqipërisë, gjatë pothuajse një dekade, në hartimin e dokumenteve shumë të rëndësishëm për përgatitjen e Sinodit të Madh dhe të Shenjtë, që u mbajt në qershor të vitit 2016, në Kretë. Vazhdon të përfaqësojë me dinjitet Kishën Ortodokse Autoqefale të Shqipërisë në dialogun shumë të rëndësishëm ndërmjet Kishave Orthodhokse dhe asaj Romano-Katolike, si edhe ndërmjet Kishave Orthodokse dhe Kishave Orientale.</p>

                    <p>Jep një kontribut të madh në jetën shoqërore dhe humanitare të qytetit të Korçës, si në fushën studimore dhe kulturore, ashtu edhe në atë humane. Me inisiativën e tij është hapur një mencë për të ndihmuar çdo ditë njerëzit në nevojë, e cila funksionon prej tashmë 27 vjetësh.</p>

                    <p>Më 16 Mars 2025, Fortlumturia e Tij, Mitropoliti i Korçës, Imzot Joani, u zgjodh me votë unanime Kryepiskop i Tiranës, Durrësit dhe gjithë Shqipërisë, duke pasuar të ndjerin Kryepiskop Anastas.</p>
                </div>

            </div>
        </div>
    </section>


    <!-- ======================= -->
    <!-- QUOTE BANNER -->
    <!-- ======================= -->
    <section class="quote-banner">
        <div class="quote-container">
            <p class="quote-text">
                «Kisha nuk është gjykatë, por spital për shërimin e shpirtrave.»
            </p>
            <p class="quote-attribution">— Kryepiskopi Joan Pelushi</p>
        </div>
    </section>


    <!-- ======================= -->
    <!-- WRITINGS SECTION -->
    <!-- ======================= -->
    <section class="writings-section">
        <div class="section-container">
            <div class="section-header">
                <div class="section-icon">✍️</div>
                <h2 class="section-title">Predikime dhe Homili</h2>
                <p class="section-subtitle">Fjalët, mësimet dhe shkrimet e Kryepiskopit</p>
            </div>

            <div class="filter-nav">
                <button class="filter-btn active">Të gjitha</button>
                <button class="filter-btn">Predikime</button>
                <button class="filter-btn">Homili</button>
                <button class="filter-btn">Mesazhe</button>
                <button class="filter-btn">Artikuj</button>
            </div>

            <div class="posts-area">
                <div id="articles-container" class="articles-grid">
                    <div class="loading-container">
                        <div class="spinner"></div>
                        <p>Duke ngarkuar shkrimet...</p>
                    </div>
                </div>
            </div>

            <div class="view-more-wrapper">
                <a href="/tag/Kryepiskopi Joan/" class="btn-primary">
                    Shiko të gjitha shkrimet
                    <span>→</span>
                </a>
            </div>
        </div>
    </section>


    <!-- ======================= -->
    <!-- VIDEO SECTION -->
    <!-- ======================= -->
    <section class="videos-section">
        <div class="section-container">
            <div class="section-header">
                <div class="section-icon">🎬</div>
                <h2 class="section-title">Video Predikimesh</h2>
                <p class="section-subtitle">Homilitë dhe fjalimet në video</p>
            </div>

            <div class="videos-area">
                <!-- 
                ========================================
                🎥 SHORTCODE PËR VIDEOT
                Category: video-kryepiskopi ose tag: video-joan
                ========================================
                -->
                <div class="shortcode-area" style="display: none;">
                    <!-- VENDOS SHORTCODE TË VIDEOVE KËTU -->
                    <!-- [fusion_blog layout="grid" blog_grid_columns="3" number_posts="6" pull_by="tag" tag_slug="video-kryepiskopi-joan" thumbnail="yes" excerpt="no" meta_date="yes"] -->
                </div>
            </div>

            <div class="view-more-wrapper">
                <a href="/tag/video-kryepiskopi-joan/" class="btn-primary">
                    Shiko të gjitha videot
                    <span>→</span>
                </a>
            </div>
        </div>
    </section>


    <!-- ======================= -->
    <!-- GALLERY SECTION -->
    <!-- ======================= -->
    <section class="gallery-section">
        <div class="section-container">
            <div class="section-header">
                <div class="section-icon" style="color: var(--gold-light);">📸</div>
                <h2 class="section-title">Galeria Fotografike</h2>
                <p class="section-subtitle">Momente nga jeta dhe shërbimi kishtar</p>
            </div>

            <div class="gallery-area">
                <!-- 
                ========================================
                🖼️ SHORTCODE PËR GALERINË
                Krijo një Avada Gallery me ID
                ========================================
                -->
                <div class="shortcode-area" style="display: none;">
                    <!-- VENDOS SHORTCODE TË GALERISË KËTU -->
                    <!-- [fusion_gallery layout="grid" columns="4" column_spacing="10" gallery_id="ID_GALERISE" lightbox="yes" hover_type="zoomin"] -->
                </div>
            </div>

            <div class="view-more-wrapper" style="margin-top: 2rem;">
                <a href="/galeria-kryepiskopit/" class="btn-primary btn-secondary">
                    Shiko të gjitha fotot
                    <span>→</span>
                </a>
            </div>
        </div>
    </section>

    </div>
    <!-- End WordPress Full Width Wrapper -->

    <script>
        document.addEventListener('DOMContentLoaded', function() {
            const container = document.getElementById('articles-container');
            const tagSlug = 'kryepiskopi-joan'; // Το tag που ζητήσατε
            const apiBase = 'https://orthodoxalbania.org/2020/wp-json/wp/v2';

            async function fetchArticles() {
                try {
                    // First get the tag ID from the slug
                    const tagResponse = await fetch(`${apiBase}/tags?slug=${tagSlug}`);
                    const tags = await tagResponse.json();
                    
                    if (tags.length === 0) {
                        container.innerHTML = '<p style="text-align:center; padding: 2rem;">Nuk u gjetën shkrime për momentin.</p>';
                        return;
                    }

                    const tagId = tags[0].id;

                    // Now fetch posts with that tag
                    const postsResponse = await fetch(`${apiBase}/posts?tags=${tagId}&_embed&per_page=6`);
                    const posts = await postsResponse.json();

                    if (posts.length === 0) {
                        container.innerHTML = '<p style="text-align:center; padding: 2rem;">Nuk u gjetën shkrime për këtë temë.</p>';
                        return;
                    }

                    renderArticles(posts);
                } catch (error) {
                    console.error('Error fetching posts:', error);
                    container.innerHTML = '<p style="text-align:center; padding: 2rem; color: var(--burgundy-deep);">Gabim gjatë ngarkimit të shkrimeve. Ju lutem provoni përsëri më vonë.</p>';
                }
            }

            function renderArticles(posts) {
                container.innerHTML = '';
                
                posts.forEach(post => {
                    const title = post.title.rendered;
                    const link = post.link;
                    const date = new Date(post.date).toLocaleDateString('sq-AL', {
                        day: 'numeric',
                        month: 'long',
                        year: 'numeric'
                    });
                    
                    // Handle excerpt
                    let excerpt = post.excerpt.rendered.replace(/<[^>]*>?/gm, '');
                    if (excerpt.length > 150) {
                        excerpt = excerpt.substring(0, 150) + '...';
                    }

                    // Handle featured image
                    let imageUrl = '';
                    if (post._embedded && post._embedded['wp:featuredmedia']) {
                        imageUrl = post._embedded['wp:featuredmedia'][0].source_url;
                    }

                    const articleHTML = `
                        <a href="${link}" class="article-card" target="_blank">
                            ${imageUrl ? `
                                <div class="article-card-image">
                                    <img src="${imageUrl}" alt="${title}">
                                </div>
                            ` : ''}
                            <div class="article-card-content">
                                <div class="article-card-date">${date}</div>
                                <h3 class="article-card-title">${title}</h3>
                                <div class="article-card-excerpt">${excerpt}</div>
                                <div class="article-card-more">
                                    Lexo më shumë
                                </div>
                            </div>
                        </a>
                    `;
                    container.innerHTML += articleHTML;
                });
            }

            fetchArticles();
        });
    </script>

</body>
</html>