{"id":140,"date":"2025-06-05T18:53:12","date_gmt":"2025-06-05T22:53:12","guid":{"rendered":"https:\/\/mse.ucf.edu\/fms\/?page_id=140"},"modified":"2026-04-13T12:17:08","modified_gmt":"2026-04-13T16:17:08","slug":"publications","status":"publish","type":"page","link":"https:\/\/mse.ucf.edu\/fms\/publications\/","title":{"rendered":"Publications"},"content":{"rendered":"<link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.4.2\/css\/all.min.css\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@300;400;500;600;700&#038;family=Space+Grotesk:wght@300;400;500;600;700&#038;display=swap\" rel=\"stylesheet\">\n<style>\n        \/* Modern CSS Variables *\/\n        :root {\n            --primary-color: #00f2fe;\n            --secondary-color: #4facfe;\n            --accent-color: #ff6b6b;\n            --dark-bg: #0a192f;\n            --darker-bg: #020c1b;\n            --text-color: #ccd6f6;\n            --text-muted: #8892b0;\n            --border-color: rgba(255, 255, 255, 0.1);\n            --glass-bg: rgba(255, 255, 255, 0.05);\n            --glass-border: rgba(255, 255, 255, 0.1);\n            --shadow-light: 0 4px 20px rgba(0, 242, 254, 0.1);\n            --shadow-medium: 0 8px 32px rgba(0, 242, 254, 0.15);\n            --shadow-heavy: 0 16px 64px rgba(0, 242, 254, 0.2);\n            --gradient-primary: linear-gradient(135deg, var(--primary-color), var(--secondary-color));\n            --gradient-bg: linear-gradient(135deg, var(--darker-bg), var(--dark-bg));\n            --border-radius: 16px;\n            --border-radius-sm: 12px;\n            --border-radius-lg: 24px;\n            --transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n            --transition-fast: all 0.15s cubic-bezier(0.4, 0, 0.2, 1);\n        }\n\n        \/* Reset and Base Styles *\/\n        .publications-component {\n            margin: 0;\n            padding: 0;\n            color: var(--text-color);\n            font-family: 'Inter', -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif;\n            box-sizing: border-box;\n            min-height: 100vh;\n            position: relative;\n            overflow-x: hidden;\n        }\n\n\n        \/* Custom Grid System *\/\n        .publications-component .container {\n            width: 100%;\n            max-width: 1200px;\n            padding: 0 2rem;\n            position: relative;\n            z-index: 1;\n        }\n\n        .publications-component .row {\n            display: flex;\n            flex-wrap: wrap;\n            margin: -1rem;\n        }\n\n        .publications-component .col {\n            flex: 1 0 0%;\n            padding: 1rem;\n        }\n\n        .publications-component .col-md-4 {\n            flex: 0 0 auto;\n            width: 100%;\n        }\n\n        @media (min-width: 768px) {\n            .publications-component .col-md-4 {\n                width: 33.333333%;\n            }\n        }\n\n        \/* Component Styles *\/\n        .publications-component .publications-section {\n            padding: 4rem 0;\n            background: transparent;\n        }\n\n        .publications-component .publications-filters {\n            background: var(--glass-bg);\n            -webkit-backdrop-filter: blur(20px);\n            backdrop-filter: blur(20px);\n            padding: 2rem;\n            border-radius: var(--border-radius-lg);\n            border: 1px solid var(--glass-border);\n            margin-bottom: 3rem;\n            box-shadow: var(--shadow-light);\n            position: relative;\n            overflow: hidden;\n        }\n\n        .publications-component .publications-filters::before {\n            content: '';\n            position: absolute;\n            top: 0;\n            left: 0;\n            right: 0;\n            height: 1px;\n            background: var(--gradient-primary);\n            opacity: 0.3;\n        }\n\n        \/* Form Controls *\/\n        .publications-component .form-select,\n        .publications-component .form-control {\n            display: block;\n            width: 100%;\n            padding: 1rem 1.25rem;\n            font-size: 1rem;\n            line-height: 1.5;\n            background: rgba(255, 255, 255, 0.08);\n            border: 1px solid var(--glass-border);\n            border-radius: var(--border-radius-sm);\n            color: var(--text-color);\n            transition: var(--transition-fast);\n            font-family: 'Inter', sans-serif;\n            font-weight: 400;\n        }\n\n        .publications-component .form-select:focus,\n        .publications-component .form-control:focus {\n            outline: none;\n            background: rgba(255, 255, 255, 0.12);\n            border-color: var(--primary-color);\n            box-shadow: 0 0 0 4px rgba(0, 242, 254, 0.1);\n            transform: translateY(-2px);\n        }\n\n        .publications-component .form-select option {\n            background: var(--dark-bg);\n            color: var(--text-color);\n            padding: 0.5rem;\n        }\n\n        .publications-component .input-group {\n            display: flex;\n            position: relative;\n            width: 100%;\n            border-radius: var(--border-radius-sm);\n            overflow: hidden;\n        }\n\n        .publications-component .input-group .form-control {\n            flex: 1 1 auto;\n            width: 1%;\n            min-width: 0;\n            border-top-right-radius: 0;\n            border-bottom-right-radius: 0;\n            border-right: none;\n        }\n\n        .publications-component .input-group .btn {\n            border-top-left-radius: 0;\n            border-bottom-left-radius: 0;\n            border-left: 1px solid var(--glass-border);\n        }\n\n        \/* Buttons *\/\n        .publications-component .btn {\n            display: inline-flex;\n            align-items: center;\n            justify-content: center;\n            gap: 0.5rem;\n            font-weight: 500;\n            line-height: 1.5;\n            text-align: center;\n            text-decoration: none;\n            vertical-align: middle;\n            cursor: pointer;\n            -webkit-user-select: none;\n            user-select: none;\n            padding: 1rem 1.5rem;\n            font-size: 1rem;\n            border-radius: var(--border-radius-sm);\n            transition: var(--transition);\n            border: 1px solid transparent;\n            font-family: 'Inter', sans-serif;\n            position: relative;\n            overflow: hidden;\n        }\n\n        .publications-component .btn::before {\n            content: '';\n            position: absolute;\n            top: 0;\n            left: -100%;\n            width: 100%;\n            height: 100%;\n            background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.1), transparent);\n            transition: left 0.5s;\n        }\n\n        .publications-component .btn:hover::before {\n            left: 100%;\n        }\n\n        .publications-component .btn-outline-secondary {\n            color: var(--text-color);\n            border-color: var(--glass-border);\n            background: rgba(255, 255, 255, 0.05);\n        }\n\n        .publications-component .btn-outline-secondary:hover {\n            background: rgba(255, 255, 255, 0.1);\n            border-color: var(--primary-color);\n            color: var(--primary-color);\n            transform: translateY(-2px);\n            box-shadow: var(--shadow-light);\n        }\n\n        .publications-component .btn-outline-primary {\n            color: var(--primary-color);\n            border-color: var(--primary-color);\n            background: transparent;\n        }\n\n        .publications-component .btn-outline-primary:hover {\n            background: var(--gradient-primary);\n            color: var(--darker-bg);\n            transform: translateY(-2px);\n            box-shadow: var(--shadow-medium);\n        }\n\n        .publications-component .btn-outline-success {\n            color: #28a745;\n            border-color: #28a745;\n            background: transparent;\n        }\n\n        .publications-component .btn-outline-success:hover {\n            background: #28a745;\n            color: var(--darker-bg);\n            transform: translateY(-2px);\n            box-shadow: 0 8px 32px rgba(40, 167, 69, 0.3);\n        }\n\n        .publications-component .btn-primary {\n            color: var(--darker-bg);\n            background: var(--gradient-primary);\n            border: none;\n            font-weight: 600;\n        }\n\n        .publications-component .btn-primary:hover {\n            transform: translateY(-2px);\n            box-shadow: var(--shadow-medium);\n        }\n\n        .publications-component .btn-sm {\n            padding: 0.75rem 1rem;\n            font-size: 0.875rem;\n            border-radius: var(--border-radius-sm);\n        }\n\n        \/* Publication Items *\/\n        .publications-component .publications-list .publication-item {\n            background: var(--glass-bg);\n            -webkit-backdrop-filter: blur(20px);\n            backdrop-filter: blur(20px);\n            border: 1px solid var(--glass-border);\n            border-radius: var(--border-radius);\n            transition: var(--transition);\n            padding: 2rem 2rem 2rem 2.5rem;\n            margin-bottom: 1.5rem;\n            position: relative;\n            overflow: hidden;\n            display: flex;\n            gap: 2rem;\n            align-items: flex-start;\n        }\n\n        .publications-component .publications-list .publication-item::before {\n            content: '';\n            position: absolute;\n            top: 0;\n            left: 0;\n            bottom: 0;\n            width: 4px;\n            background: var(--gradient-primary);\n            opacity: 0.6;\n            transition: var(--transition);\n        }\n\n        .publications-component .publications-list .publication-item:hover::before {\n            opacity: 1;\n            width: 5px;\n        }\n\n        .publications-component .publications-list .publication-item:hover {\n            transform: translateY(-4px);\n            box-shadow: var(--shadow-medium);\n            border-color: rgba(0, 242, 254, 0.2);\n        }\n\n        \/* Publication Number *\/\n        .publications-component .pub-number {\n            flex-shrink: 0;\n            width: 44px;\n            height: 44px;\n            border-radius: 12px;\n            background: rgba(0, 242, 254, 0.08);\n            border: 1px solid rgba(0, 242, 254, 0.15);\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            font-family: 'Space Grotesk', sans-serif;\n            font-weight: 700;\n            font-size: 1rem;\n            color: var(--primary-color);\n            margin-top: 0.25rem;\n            transition: var(--transition);\n        }\n\n        .publications-component .publication-item:hover .pub-number {\n            background: rgba(0, 242, 254, 0.15);\n            transform: scale(1.05);\n        }\n\n        \/* Publication Content *\/\n        .publications-component .publication-content {\n            flex: 1;\n            min-width: 0;\n        }\n\n        \/* Type & OA Badges *\/\n        .publications-component .pub-badges {\n            display: flex;\n            gap: 0.5rem;\n            flex-wrap: wrap;\n            margin-bottom: 0.75rem;\n        }\n\n        .publications-component .pub-badge {\n            font-size: 0.7rem;\n            font-weight: 600;\n            text-transform: uppercase;\n            letter-spacing: 0.8px;\n            padding: 0.25rem 0.6rem;\n            border-radius: 6px;\n            font-family: 'Space Grotesk', sans-serif;\n        }\n\n        .publications-component .pub-badge-type {\n            background: rgba(79, 172, 254, 0.12);\n            color: var(--secondary-color);\n            border: 1px solid rgba(79, 172, 254, 0.2);\n        }\n\n        .publications-component .pub-badge-oa {\n            background: rgba(0, 208, 132, 0.12);\n            color: #00d084;\n            border: 1px solid rgba(0, 208, 132, 0.2);\n        }\n\n        .publications-component .pub-badge-cited {\n            background: rgba(252, 185, 0, 0.1);\n            color: #fcb900;\n            border: 1px solid rgba(252, 185, 0, 0.2);\n        }\n\n        .publications-component .publications-list .pub-title {\n            color: var(--text-color);\n            text-decoration: none;\n            transition: var(--transition);\n            font-size: 1.375rem;\n            font-weight: 600;\n            margin: 0 0 1rem 0;\n            display: block;\n            font-family: 'Space Grotesk', sans-serif;\n            line-height: 1.4;\n        }\n\n        .publications-component .publications-list .pub-title:hover {\n            color: var(--primary-color);\n            transform: translateX(4px);\n        }\n\n        .publications-component .publications-list .publication-meta {\n            color: var(--text-muted);\n            font-size: 0.95rem;\n            margin: 1rem 0;\n            display: flex;\n            flex-wrap: wrap;\n            gap: 1.5rem;\n            align-items: center;\n        }\n\n        .publications-component .publications-list .publication-meta span {\n            display: flex;\n            align-items: center;\n            gap: 0.5rem;\n            padding: 0.5rem 1rem;\n            background: rgba(255, 255, 255, 0.05);\n            border-radius: 20px;\n            border: 1px solid var(--glass-border);\n            transition: var(--transition-fast);\n        }\n\n        .publications-component .publications-list .publication-meta span:hover {\n            background: rgba(255, 255, 255, 0.1);\n            transform: translateY(-1px);\n        }\n\n        .publications-component .publications-list .publication-meta i {\n            color: var(--primary-color);\n            font-size: 0.875rem;\n        }\n\n        .publications-component .publications-list .publication-links {\n            margin-top: 1.5rem;\n            display: flex;\n            gap: 1rem;\n            flex-wrap: wrap;\n        }\n\n        .publications-component .publications-list .publication-links .btn {\n            margin: 0;\n        }\n\n        \/* Utility Classes *\/\n        .publications-component .text-center {\n            text-align: center;\n        }\n\n        .publications-component .mt-4 {\n            margin-top: 2rem;\n        }\n\n        .publications-component .d-none {\n            display: none !important;\n        }\n\n        .publications-component .visually-hidden {\n            position: absolute;\n            width: 1px;\n            height: 1px;\n            padding: 0;\n            margin: -1px;\n            overflow: hidden;\n            clip: rect(0, 0, 0, 0);\n            white-space: nowrap;\n            border: 0;\n        }\n\n        \/* Loading Spinner *\/\n        .publications-component .spinner-border {\n            display: inline-block;\n            width: 3rem;\n            height: 3rem;\n            vertical-align: -0.125em;\n            border: 0.25em solid var(--primary-color);\n            border-right-color: transparent;\n            border-radius: 50%;\n            animation: publications-spinner-border 0.75s linear infinite;\n        }\n\n        @keyframes publications-spinner-border {\n            to {\n                transform: rotate(360deg);\n            }\n        }\n\n        .publications-component .text-primary {\n            color: var(--primary-color) !important;\n        }\n\n        .publications-component .lead {\n            font-size: 1.25rem;\n            font-weight: 400;\n            margin-bottom: 1rem;\n            color: var(--text-muted);\n        }\n\n        \/* Alert Styles *\/\n        .publications-component .alert {\n            position: relative;\n            padding: 1rem 1.5rem;\n            margin-bottom: 1.5rem;\n            border: 1px solid transparent;\n            border-radius: var(--border-radius-sm);\n            background: var(--glass-bg);\n            -webkit-backdrop-filter: blur(20px);\n            backdrop-filter: blur(20px);\n        }\n\n        .publications-component .alert-danger {\n            color: #ff6b6b;\n            border-color: rgba(255, 107, 107, 0.3);\n            background: rgba(255, 107, 107, 0.05);\n        }\n\n        \/* Floating Elements *\/\n        .publications-component .floating-element {\n            position: absolute;\n            width: 6px;\n            height: 6px;\n            background: var(--primary-color);\n            border-radius: 50%;\n            animation: float 6s ease-in-out infinite;\n            opacity: 0.6;\n            pointer-events: none;\n        }\n\n        .publications-component .floating-element:nth-child(1) {\n            top: 20%;\n            left: 10%;\n            animation-delay: 0s;\n        }\n\n        .publications-component .floating-element:nth-child(2) {\n            top: 60%;\n            right: 15%;\n            animation-delay: 2s;\n        }\n\n        .publications-component .floating-element:nth-child(3) {\n            bottom: 30%;\n            left: 20%;\n            animation-delay: 4s;\n        }\n\n        @keyframes float {\n            0%, 100% {\n                transform: translateY(0px) rotate(0deg);\n                opacity: 0.6;\n            }\n            50% {\n                transform: translateY(-20px) rotate(180deg);\n                opacity: 1;\n            }\n        }\n\n        \/* Responsive Adjustments *\/\n        @media (max-width: 768px) {\n            .publications-component .container {\n                padding: 0 1rem;\n            }\n\n            .publications-component .publications-section {\n                padding: 2rem 0;\n            }\n            \n            .publications-component .publications-filters {\n                padding: 1.25rem;\n                margin-bottom: 2rem;\n            }\n\n            .publications-component .row {\n                flex-direction: column;\n                margin: 0;\n            }\n\n            .publications-component .col-md-4 {\n                width: 100%;\n                margin-bottom: 1rem;\n            }\n\n            .publications-component .col {\n                padding: 0.75rem 0;\n            }\n\n            \/* Mobile: completely different layout (no side-by-side, number on top, no left bar) *\/\n            .publications-component .publications-list .publication-item {\n                padding: 1.25rem;\n                gap: 0;\n                flex-direction: column;\n                align-items: stretch;\n            }\n\n            \/* Hide the left gradient bar on mobile *\/\n            .publications-component .publications-list .publication-item::before {\n                display: none;\n            }\n\n            \/* Number badge at top-left, inline with badges *\/\n            .publications-component .pub-number {\n                width: 32px;\n                height: 32px;\n                font-size: 0.8rem;\n                border-radius: 8px;\n                margin: 0 0 0.75rem 0;\n                align-self: flex-start;\n            }\n\n            .publications-component .pub-badges {\n                justify-content: flex-start;\n                margin-bottom: 0.85rem;\n            }\n\n            .publications-component .publication-content {\n                flex: none;\n                width: 100%;\n            }\n\n            .publications-component .publications-list .pub-title {\n                font-size: 1.1rem;\n                line-height: 1.45;\n                margin-bottom: 0.65rem;\n            }\n\n            .publications-component .publication-authors {\n                font-size: 0.875rem;\n                line-height: 1.5;\n                margin-bottom: 0.85rem;\n            }\n\n            \/* Pills stay horizontal, wrap naturally *\/\n            .publications-component .publications-list .publication-meta {\n                flex-direction: row;\n                gap: 0.5rem;\n                margin: 0.75rem 0;\n                align-items: center;\n            }\n\n            .publications-component .publications-list .publication-meta span {\n                padding: 0.35rem 0.7rem;\n                gap: 0.4rem;\n                font-size: 0.8rem;\n                border-radius: 14px;\n            }\n\n            .publications-component .publications-list .publication-links {\n                flex-direction: row;\n                gap: 0.65rem;\n                margin-top: 1rem;\n            }\n\n            .publications-component .publications-list .publication-links .btn {\n                font-size: 0.85rem;\n                padding: 0.7rem 1rem;\n            }\n        }\n\n        @media (max-width: 480px) {\n            .publications-component .container {\n                padding: 0 0.85rem;\n            }\n\n            .publications-component .publications-filters {\n                padding: 1rem;\n            }\n\n            .publications-component .publications-list .publication-item {\n                padding: 1rem;\n                border-radius: 12px;\n            }\n\n            .publications-component .publications-list .pub-title {\n                font-size: 1.05rem;\n            }\n\n            .publications-component .publication-authors {\n                font-size: 0.825rem;\n            }\n\n            .publications-component .publications-list .publication-meta span {\n                padding: 0.3rem 0.6rem;\n                font-size: 0.75rem;\n            }\n\n            .publications-component .publications-list .publication-links .btn {\n                font-size: 0.8rem;\n                padding: 0.65rem 0.9rem;\n            }\n        }\n\n        \/* Placeholder styling *\/\n        .publications-component .publications-filters ::placeholder {\n            color: rgba(204, 214, 246, 0.7);\n        }\n\n        .publications-component .publications-filters .form-control::placeholder {\n            color: rgba(204, 214, 246, 0.7);\n        }\n\n        \/* Smooth scrolling *\/\n        .publications-component {\n            scroll-behavior: smooth;\n        }\n\n        \/* Dynamic Background *\/\n        .publications-component::before {\n            content: '';\n            position: fixed;\n            top: 0;\n            left: 0;\n            width: 100%;\n            height: 100%;\n            background: \n                radial-gradient(circle at 20% 20%, rgba(0, 242, 254, 0.1) 0%, transparent 50%),\n                radial-gradient(circle at 80% 80%, rgba(79, 172, 254, 0.1) 0%, transparent 50%),\n                radial-gradient(circle at 40% 60%, rgba(100, 255, 218, 0.05) 0%, transparent 50%);\n            z-index: -1;\n            pointer-events: none;\n        }\n\n        \/* Particle Canvas *\/\n        #publicationsParticleCanvas {\n            position: fixed;\n            top: 0;\n            left: 0;\n            width: 100%;\n            height: 100%;\n            z-index: 0;\n            pointer-events: none;\n            opacity: 0.3;\n        }\n\n        \/* Dynamic Card Animations *\/\n        .publication-item {\n            animation: slideInUp 0.6s ease-out forwards;\n            opacity: 0;\n            transform: translateY(30px);\n        }\n\n        .publication-content {\n            animation: contentSlideIn 0.8s ease-out forwards;\n            opacity: 0;\n        }\n\n        .publication-item:nth-child(1) .publication-content { animation-delay: 0.1s; }\n        .publication-item:nth-child(2) .publication-content { animation-delay: 0.2s; }\n        .publication-item:nth-child(3) .publication-content { animation-delay: 0.3s; }\n        .publication-item:nth-child(4) .publication-content { animation-delay: 0.4s; }\n        .publication-item:nth-child(5) .publication-content { animation-delay: 0.5s; }\n\n        @keyframes slideInUp {\n            to {\n                opacity: 1;\n                transform: translateY(0);\n            }\n        }\n\n        @keyframes contentSlideIn {\n            to {\n                opacity: 1;\n            }\n        }\n\n        \/* Dynamic Floating Animation *\/\n        .publication-item {\n            animation: dynamicFloat 8s ease-in-out infinite;\n        }\n\n        .publication-item:nth-child(odd) {\n            animation-delay: -2s;\n        }\n\n        .publication-item:nth-child(even) {\n            animation-delay: -4s;\n        }\n\n        @keyframes dynamicFloat {\n            0%, 100% {\n                transform: translateY(0px) rotate(0deg);\n            }\n            25% {\n                transform: translateY(-8px) rotate(0.5deg);\n            }\n            50% {\n                transform: translateY(-4px) rotate(0deg);\n            }\n            75% {\n                transform: translateY(-12px) rotate(-0.5deg);\n            }\n        }\n\n        \/* Enhanced Hover Effects *\/\n        .publication-item:hover {\n            animation-play-state: paused;\n            transform: translateY(-8px) scale(1.02) !important;\n            box-shadow: \n                0 20px 40px rgba(0, 242, 254, 0.2),\n                0 0 0 1px rgba(0, 242, 254, 0.3);\n        }\n\n        \/* Dynamic Title Animation *\/\n        .pub-title {\n            position: relative;\n            overflow: hidden;\n        }\n\n        .pub-title::after {\n            content: '';\n            position: absolute;\n            bottom: 0;\n            left: -100%;\n            width: 100%;\n            height: 2px;\n            background: linear-gradient(90deg, var(--primary-color), var(--secondary-color));\n            transition: left 0.5s ease;\n        }\n\n        .pub-title:hover::after {\n            left: 0;\n        }\n\n        \/* Authors line (gradient text) *\/\n        .publications-component .publication-authors {\n            margin: 0.25rem 0 0.75rem 0;\n            font-size: 0.95rem;\n            font-weight: 500;\n            background: var(--gradient-primary);\n            -webkit-background-clip: text;\n            background-clip: text;\n            color: transparent;\n            letter-spacing: 0.2px;\n        }\n\n        \/* Dynamic Filter Animations *\/\n        .publications-filters {\n            animation: filterSlideIn 0.8s ease-out;\n        }\n\n        @keyframes filterSlideIn {\n            from {\n                opacity: 0;\n                transform: translateY(-30px);\n            }\n            to {\n                opacity: 1;\n                transform: translateY(0);\n            }\n        }\n\n        .form-select, .form-control {\n            transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n        }\n\n        .form-select:focus, .form-control:focus {\n            transform: translateY(-2px) scale(1.02);\n            box-shadow: \n                0 0 0 4px rgba(0, 242, 254, 0.1),\n                0 8px 25px rgba(0, 242, 254, 0.15);\n        }\n\n        \/* Dynamic Button Effects *\/\n        .btn {\n            position: relative;\n            overflow: hidden;\n        }\n\n        .btn::before {\n            content: '';\n            position: absolute;\n            top: 0;\n            left: -100%;\n            width: 100%;\n            height: 100%;\n            background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);\n            transition: left 0.5s;\n        }\n\n        .btn:hover::before {\n            left: 100%;\n        }\n\n        .btn:hover {\n            transform: translateY(-3px);\n            box-shadow: 0 10px 30px rgba(0, 242, 254, 0.3);\n        }\n\n        \/* Loading Animation Enhancement *\/\n        .spinner-border {\n            animation: spinGlow 1s linear infinite;\n        }\n\n        @keyframes spinGlow {\n            0% {\n                transform: rotate(0deg);\n                box-shadow: 0 0 10px var(--primary-color);\n            }\n            50% {\n                box-shadow: 0 0 20px var(--primary-color);\n            }\n            100% {\n                transform: rotate(360deg);\n                box-shadow: 0 0 10px var(--primary-color);\n            }\n        }\n\n        \/* Dynamic Meta Tags *\/\n        .publication-meta span {\n            transition: all 0.3s ease;\n            position: relative;\n        }\n\n        .publication-meta span::before {\n            content: '';\n            position: absolute;\n            top: 0;\n            left: 0;\n            right: 0;\n            bottom: 0;\n            background: linear-gradient(45deg, var(--primary-color), var(--secondary-color));\n            opacity: 0;\n            border-radius: 20px;\n            transition: opacity 0.3s ease;\n            z-index: -1;\n        }\n\n        .publication-meta span:hover::before {\n            opacity: 0.1;\n        }\n\n        .publication-meta span:hover {\n            transform: translateY(-2px) scale(1.05);\n            color: var(--primary-color);\n        }\n\n        \/* Scroll-triggered Animations *\/\n        .animate-on-scroll {\n            opacity: 0;\n            transform: translateY(50px);\n            transition: all 0.8s cubic-bezier(0.4, 0, 0.2, 1);\n        }\n\n        .animate-on-scroll.animate {\n            opacity: 1;\n            transform: translateY(0);\n        }\n\n        \/* Dynamic Background Orbs *\/\n        .dynamic-orb {\n            position: fixed;\n            border-radius: 50%;\n            filter: blur(60px);\n            opacity: 0.1;\n            animation: orbFloat 20s infinite ease-in-out;\n            pointer-events: none;\n            z-index: -1;\n        }\n\n        .orb-1 {\n            width: 300px;\n            height: 300px;\n            background: radial-gradient(circle, var(--primary-color), transparent);\n            top: 10%;\n            left: 10%;\n            animation-delay: 0s;\n        }\n\n        .orb-2 {\n            width: 250px;\n            height: 250px;\n            background: radial-gradient(circle, var(--secondary-color), transparent);\n            top: 60%;\n            right: 15%;\n            animation-delay: -8s;\n        }\n\n        .orb-3 {\n            width: 200px;\n            height: 200px;\n            background: radial-gradient(circle, #64ffda, transparent);\n            bottom: 20%;\n            left: 20%;\n            animation-delay: -16s;\n        }\n\n        @keyframes orbFloat {\n            0%, 100% {\n                transform: translate(0, 0) scale(1);\n            }\n            25% {\n                transform: translate(20px, -30px) scale(1.1);\n            }\n            50% {\n                transform: translate(-10px, -20px) scale(0.9);\n            }\n            75% {\n                transform: translate(-20px, 10px) scale(1.05);\n            }\n        }\n    <\/style>\n    <!-- Publications Component -->\n    <div class=\"publications-component\">\n        <!-- Dynamic Background Elements -->\n        <canvas id=\"publicationsParticleCanvas\"><\/canvas>\n        <div class=\"dynamic-orb orb-1\"><\/div>\n        <div class=\"dynamic-orb orb-2\"><\/div>\n        <div class=\"dynamic-orb orb-3\"><\/div>\n        \n        <!-- Floating Elements -->\n        <div class=\"floating-element\"><\/div>\n        <div class=\"floating-element\"><\/div>\n        <div class=\"floating-element\"><\/div>\n\n        <div class=\"publications-section\">\n            <div class=\"container\">\n                <!-- Filters -->\n                <div class=\"publications-filters\">\n                    <div class=\"row\">\n                        <div class=\"col col-md-4\">\n                            <select class=\"form-select\" id=\"yearFilter\" aria-label=\"Filter by year\">\n                                <option value=\"\">All Years<\/option>\n                            <\/select>\n                        <\/div>\n                        <div class=\"col col-md-4\">\n                            <select class=\"form-select\" id=\"typeFilter\" aria-label=\"Filter by publication type\">\n                                <option value=\"\">All Types<\/option>\n                            <\/select>\n                        <\/div>\n                        <div class=\"col col-md-4\">\n                            <div class=\"input-group\">\n                                <input type=\"text\" class=\"form-control\" id=\"searchFilter\" placeholder=\"Search publications...\" aria-label=\"Search publications\">\n                                <button class=\"btn btn-outline-secondary\" type=\"button\" id=\"clearSearch\" aria-label=\"Clear search\">\n                                    <i class=\"fas fa-times\"><\/i>\n                                <\/button>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n\n                <!-- Loading Indicator -->\n                <div id=\"loadingIndicator\" class=\"text-center d-none\">\n                    <div class=\"spinner-border text-primary\" role=\"status\">\n                        <span class=\"visually-hidden\">Loading&#8230;<\/span>\n                    <\/div>\n                <\/div>\n\n                <!-- Publications List -->\n                <div class=\"publications-list\">\n                    <!-- Publications will be dynamically populated here -->\n                <\/div>\n\n                <!-- No Results Message -->\n                <div id=\"noResults\" class=\"text-center d-none\">\n                    <p class=\"lead\">No publications found matching your criteria.<\/p>\n                <\/div>\n\n                <!-- Load More Button -->\n                <div class=\"text-center mt-4\">\n                    <button id=\"loadMoreBtn\" class=\"btn btn-primary d-none\">Load More<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <!-- Component Script -->\n    <script>\n        \/\/ Simple Publications Component\n        (function() {\n            \/\/ Configuration - Update these values\n            const AUTHOR_ID = 'a5088638988';\n            const PER_PAGE = 100;\n            const START_YEAR = '2020-01-01';\n\n            \/\/ State\n            let currentPage = 1;\n            let totalPages = 1;\n            let publications = [];\n            let isLoading = false;\n            let lastFilters = { year: '', type: '', search: '' };\n            let availableTypes = new Set(); \/\/ Will store unique types from API\n\n            \/\/ Predefined years\n            const years = Array.from(\n                {length: new Date().getFullYear() - parseInt(START_YEAR) + 1}, \n                (_, i) => new Date().getFullYear() - i\n            );\n\n            \/\/ DOM Elements\n            const yearFilter = document.getElementById('yearFilter');\n            const typeFilter = document.getElementById('typeFilter');\n            const searchFilter = document.getElementById('searchFilter');\n            const clearSearch = document.getElementById('clearSearch');\n            const publicationsList = document.querySelector('.publications-list');\n            const loadingIndicator = document.getElementById('loadingIndicator');\n            const noResults = document.getElementById('noResults');\n            const loadMoreBtn = document.getElementById('loadMoreBtn');\n\n            \/\/ Fetch available types\n            async function fetchAvailableTypes() {\n                try {\n                    const url = `https:\/\/api.openalex.org\/works?filter=authorships.author.id:${AUTHOR_ID},from_publication_date:${START_YEAR},type:!supplementary-materials&per_page=200&sort=publication_date:desc`;\n                    const response = await fetch(url);\n                    const data = await response.json();\n                    \n                    data.results.forEach(pub => {\n                        if (pub.type && !isSupplementary(pub)) availableTypes.add(pub.type);\n                    });\n\n                    updateTypeFilter();\n                } catch (error) {\n                    console.error('Error fetching types:', error);\n                }\n            }\n\n            \/\/ Update type filter with available types\n            function updateTypeFilter() {\n                const selectedType = typeFilter.value; \/\/ Store current selection\n                const typeOptions = Array.from(availableTypes)\n                    .sort()\n                    .map(type => \n                        `<option value=\"${type}\" ${type === selectedType ? 'selected' : ''}>${type.replace(\/-\/g, ' ').replace(\/\\b\\w\/g, l => l.toUpperCase())}<\/option>`\n                    );\n                \n                typeFilter.innerHTML = '<option value=\"\">All Types<\/option>' + typeOptions.join('');\n            }\n\n            \/\/ Initialize filters\n            function initializeFilters() {\n                \/\/ Years\n                yearFilter.innerHTML = '<option value=\"\">All Years<\/option>' + \n                    years.map(year => `<option value=\"${year}\">${year}<\/option>`).join('');\n\n                \/\/ Types will be populated after fetching available types\n                typeFilter.innerHTML = '<option value=\"\">Loading Types...<\/option>';\n            }\n\n            const SUPPLEMENTARY_PATTERNS = [\n                \/supplement\/i, \/invited\/i, \/supporting\\s+info\/i, \/cover\\s+(image|picture)\/i,\n                \/front\\s+cover\/i, \/back\\s+cover\/i, \/inside\\s+cover\/i,\n                \/table\\s+of\\s+contents\/i, \/masthead\/i, \/erratum\/i, \/corrigendum\/i,\n                \/correction\\s+to\/i, \/reply\\s+to\/i, \/response\\s+to\/i\n            ];\n\n            function isSupplementary(pub) {\n                const title = (pub.title || '').trim();\n                if (!title || title.length < 15) return true;\n                return SUPPLEMENTARY_PATTERNS.some(re => re.test(title));\n            }\n\n            function normalize(str) {\n                return (str || '').toLowerCase().replace(\/[^a-z0-9]\/g, '');\n            }\n\n            function similarity(a, b) {\n                if (!a || !b) return 0;\n                const longer = a.length >= b.length ? a : b;\n                const shorter = a.length < b.length ? a : b;\n                if (longer.length === 0) return 1;\n                const costs = [];\n                for (let i = 0; i <= longer.length; i++) {\n                    let lastVal = i;\n                    for (let j = 0; j <= shorter.length; j++) {\n                        if (i === 0) { costs[j] = j; }\n                        else if (j > 0) {\n                            let newVal = costs[j - 1];\n                            if (longer[i - 1] !== shorter[j - 1])\n                                newVal = Math.min(newVal, lastVal, costs[j]) + 1;\n                            costs[j - 1] = lastVal;\n                            lastVal = newVal;\n                        }\n                    }\n                    if (i > 0) costs[shorter.length] = lastVal;\n                }\n                return 1 - costs[shorter.length] \/ longer.length;\n            }\n\n            function isDuplicate(pub, existing) {\n                const normA = normalize(pub.title);\n                if (!normA) return false;\n                for (const p of existing) {\n                    const normB = normalize(p.title);\n                    if (!normB) continue;\n                    if (normA === normB) return true;\n                    if (pub.doi && p.doi && pub.doi === p.doi) return true;\n                    if (similarity(normA, normB) > 0.85) return true;\n                }\n                return false;\n            }\n\n            \/\/ Fetch publications\n            async function fetchPublications(page = 1, append = false, opts = {}) {\n                if (isLoading) return;\n                isLoading = true;\n                showLoading(true);\n\n                const { year = '', type = '', search = '' } = opts;\n                lastFilters = { year, type, search };\n\n                let url = `https:\/\/api.openalex.org\/works?page=${page}&per_page=${PER_PAGE}&sort=publication_date:desc`;\n                let filters = [\n                    `authorships.author.id:${AUTHOR_ID}`,\n                    `from_publication_date:${START_YEAR}`\n                ];\n                \n                if (year) filters.push(`publication_year:${year}`);\n                if (type) {\n                    filters.push(`type:${type}`);\n                } else {\n                    filters.push('type:!supplementary-materials');\n                }\n                url += `&filter=${filters.join(',')}`;\n                if (search) url += `&search=${encodeURIComponent(search)}`;\n\n                try {\n                    const response = await fetch(url);\n                    const data = await response.json();\n\n                    if (!append) publications = [];\n                    data.results.forEach(pub => {\n                        if (isSupplementary(pub)) return;\n                        if (isDuplicate(pub, publications)) return;\n                        publications.push(pub);\n                    });\n                    totalPages = Math.ceil(data.meta.count \/ PER_PAGE);\n\n                    \/\/ Update available types if this is the first page and we're not filtering by type\n                    if (page === 1 && !type) {\n                        data.results.forEach(pub => {\n                            if (pub.type) availableTypes.add(pub.type);\n                        });\n                        updateTypeFilter();\n                    }\n\n                    renderPublications();\n                    loadMoreBtn.classList.toggle('d-none', currentPage >= totalPages);\n                } catch (error) {\n                    console.error('Error:', error);\n                    showError('Failed to load publications. Please try again later.');\n                } finally {\n                    isLoading = false;\n                    showLoading(false);\n                }\n            }\n\n            \/\/ Get authors line (abbreviated on mobile: F. Lastname)\n            function getAuthors(pub) {\n                try {\n                    const isMobile = window.innerWidth <= 768;\n                    const names = (pub.authorships || [])\n                        .map(a => a?.author?.display_name || '')\n                        .filter(Boolean)\n                        .map(name => {\n                            if (!isMobile) return name;\n                            \/\/ Mobile: abbreviate to F. Lastname\n                            const parts = name.trim().split(\/\\s+\/);\n                            if (parts.length === 1) return name;\n                            const first = parts[0][0] + '.';\n                            const last = parts[parts.length - 1];\n                            return `${first} ${last}`;\n                        });\n                    return names.length ? names.join(', ') : 'Unknown authors';\n                } catch (_) {\n                    return 'Unknown authors';\n                }\n            }\n\n            \/\/ Render publications\n            function renderPublications() {\n                publicationsList.innerHTML = publications.length ? \n                    publications.map((pub, index) => `\n                        <div class=\"publication-item animate-on-scroll\" style=\"animation-delay: ${index * 0.05}s;\">\n                            <div class=\"pub-number\">${index + 1}<\/div>\n                            <div class=\"publication-content\">\n                                <div class=\"pub-badges\">\n                                    ${pub.type ? `<span class=\"pub-badge pub-badge-type\">${pub.type.replace(\/-\/g, ' ')}<\/span>` : ''}\n                                    ${pub.open_access?.is_oa ? '<span class=\"pub-badge pub-badge-oa\"><i class=\"fas fa-lock-open\" style=\"margin-right:3px;font-size:0.6rem;\"><\/i> Open Access<\/span>' : ''}\n                                    ${pub.cited_by_count > 0 ? `<span class=\"pub-badge pub-badge-cited\"><i class=\"fas fa-quote-right\" style=\"margin-right:3px;font-size:0.6rem;\"><\/i> ${pub.cited_by_count} citation${pub.cited_by_count > 1 ? 's' : ''}<\/span>` : ''}\n                                <\/div>\n                                <h3 class=\"h5 mb-2\">\n                                    <a href=\"${pub.doi}\" target=\"_blank\" class=\"pub-title\">${pub.title || pub.display_name}<\/a>\n                                <\/h3>\n                                <div class=\"publication-authors\">${getAuthors(pub)}<\/div>\n                                <div class=\"publication-meta\">\n                                    <span><i class=\"fas fa-calendar\"><\/i> ${pub.publication_year}<\/span>\n                                    <span><i class=\"fas fa-newspaper\"><\/i> ${pub.primary_location?.source?.display_name || 'N\/A'}<\/span>\n                                <\/div>\n                                <div class=\"publication-links\">\n                                    <a href=\"${pub.doi}\" target=\"_blank\" class=\"btn btn-sm btn-outline-primary\">\n                                        <i class=\"fas fa-external-link-alt\"><\/i> View Paper\n                                    <\/a>\n                                    ${pub.open_access?.oa_url ? `\n                                        <a href=\"${pub.open_access.oa_url}\" target=\"_blank\" class=\"btn btn-sm btn-outline-success\">\n                                            <i class=\"fas fa-download\"><\/i> Download PDF\n                                        <\/a>\n                                    ` : ''}\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                    `).join('') : \n                    (noResults.classList.remove('d-none'), '');\n\n                if (publications.length) {\n                    noResults.classList.add('d-none');\n                    setTimeout(() => {\n                        initScrollAnimations();\n                        initTextAnimations();\n                    }, 100);\n                }\n            }\n\n            \/\/ Utility functions\n            function showLoading(show) {\n                loadingIndicator.classList.toggle('d-none', !show);\n            }\n\n            function showError(message) {\n                const errorDiv = document.createElement('div');\n                errorDiv.className = 'alert alert-danger';\n                errorDiv.textContent = message;\n                publicationsList.prepend(errorDiv);\n                setTimeout(() => errorDiv.remove(), 5000);\n            }\n\n            \/\/ Event listeners\n            if (yearFilter) yearFilter.addEventListener('change', () => {\n                currentPage = 1;\n                fetchPublications(currentPage, false, {\n                    year: yearFilter.value,\n                    type: typeFilter.value,\n                    search: searchFilter.value.trim()\n                });\n            });\n\n            if (typeFilter) typeFilter.addEventListener('change', () => {\n                currentPage = 1;\n                fetchPublications(currentPage, false, {\n                    year: yearFilter.value,\n                    type: typeFilter.value,\n                    search: searchFilter.value.trim()\n                });\n            });\n\n            if (searchFilter) {\n                let timeout;\n                searchFilter.addEventListener('input', () => {\n                    clearTimeout(timeout);\n                    timeout = setTimeout(() => {\n                        currentPage = 1;\n                        fetchPublications(currentPage, false, {\n                            year: yearFilter.value,\n                            type: typeFilter.value,\n                            search: searchFilter.value.trim()\n                        });\n                    }, 300);\n                });\n            }\n\n            if (clearSearch) clearSearch.addEventListener('click', () => {\n                searchFilter.value = '';\n                currentPage = 1;\n                fetchPublications(currentPage, false, {\n                    year: yearFilter.value,\n                    type: typeFilter.value,\n                    search: ''\n                });\n            });\n\n            if (loadMoreBtn) loadMoreBtn.addEventListener('click', () => {\n                if (currentPage < totalPages) {\n                    currentPage++;\n                    fetchPublications(currentPage, true, lastFilters);\n                }\n            });\n\n            \/\/ Dynamic Effects\n            function initDynamicEffects() {\n                initParticleSystem();\n                initScrollAnimations();\n                initDynamicOrbs();\n                initTextAnimations();\n            }\n\n            \/\/ Particle System\n            function initParticleSystem() {\n                const canvas = document.getElementById('publicationsParticleCanvas');\n                if (!canvas) return;\n                \n                const ctx = canvas.getContext('2d');\n                let particles = [];\n\n                function resizeCanvas() {\n                    canvas.width = canvas.offsetWidth;\n                    canvas.height = canvas.offsetHeight;\n                }\n\n                class Particle {\n                    constructor() {\n                        this.reset();\n                        this.hue = Math.random() * 60 + 180;\n                    }\n\n                    reset() {\n                        this.x = Math.random() * canvas.width;\n                        this.y = Math.random() * canvas.height;\n                        this.size = Math.random() * 2 + 0.5;\n                        this.speedX = Math.random() * 0.3 - 0.15;\n                        this.speedY = Math.random() * 0.3 - 0.15;\n                        this.opacity = Math.random() * 0.3 + 0.1;\n                        this.pulse = Math.random() * Math.PI * 2;\n                        this.pulseSpeed = Math.random() * 0.02 + 0.01;\n                    }\n\n                    update() {\n                        this.x += this.speedX;\n                        this.y += this.speedY;\n\n                        if (this.x < 0 || this.x > canvas.width) this.speedX *= -1;\n                        if (this.y < 0 || this.y > canvas.height) this.speedY *= -1;\n\n                        this.pulse += this.pulseSpeed;\n                        this.currentSize = this.size + Math.sin(this.pulse) * 0.3;\n                    }\n\n                    draw() {\n                        const gradient = ctx.createRadialGradient(\n                            this.x, this.y, 0,\n                            this.x, this.y, this.currentSize * 2\n                        );\n                        gradient.addColorStop(0, `hsla(${this.hue}, 70%, 60%, ${this.opacity})`);\n                        gradient.addColorStop(1, `hsla(${this.hue}, 70%, 60%, 0)`);\n                        \n                        ctx.beginPath();\n                        ctx.arc(this.x, this.y, this.currentSize, 0, Math.PI * 2);\n                        ctx.fillStyle = gradient;\n                        ctx.fill();\n                    }\n                }\n\n                function createParticles() {\n                    const particleCount = Math.min(20, Math.floor(canvas.width * canvas.height \/ 40000));\n                    particles = [];\n                    for (let i = 0; i < particleCount; i++) {\n                        particles.push(new Particle());\n                    }\n                }\n\n                function animate() {\n                    ctx.clearRect(0, 0, canvas.width, canvas.height);\n                    particles.forEach(particle => {\n                        particle.update();\n                        particle.draw();\n                    });\n                    requestAnimationFrame(animate);\n                }\n\n                resizeCanvas();\n                createParticles();\n                animate();\n\n                window.addEventListener('resize', () => {\n                    resizeCanvas();\n                    createParticles();\n                });\n            }\n\n            \/\/ Scroll-triggered Animations\n            function initScrollAnimations() {\n                const observerOptions = {\n                    threshold: 0.1,\n                    rootMargin: '0px 0px -50px 0px'\n                };\n\n                const observer = new IntersectionObserver((entries) => {\n                    entries.forEach(entry => {\n                        if (entry.isIntersecting) {\n                            entry.target.classList.add('animate');\n                        }\n                    });\n                }, observerOptions);\n\n                \/\/ Observe all publication items\n                document.querySelectorAll('.publication-item').forEach(el => {\n                    el.classList.add('animate-on-scroll');\n                    observer.observe(el);\n                });\n            }\n\n\n            \/\/ Dynamic Orbs Movement\n            function initDynamicOrbs() {\n                const orbs = document.querySelectorAll('.dynamic-orb');\n                \n                orbs.forEach((orb, index) => {\n                    const randomX = (Math.random() - 0.5) * 100;\n                    const randomY = (Math.random() - 0.5) * 100;\n                    const randomScale = 0.8 + Math.random() * 0.4;\n                    \n                    orb.style.transform = `translate(${randomX}px, ${randomY}px) scale(${randomScale})`;\n                    \n                    window.addEventListener('scroll', () => {\n                        const scrolled = window.pageYOffset;\n                        const rate = scrolled * 0.05;\n                        \n                        orb.style.transform = `translate(${randomX + rate}px, ${randomY + rate * 0.3}px) scale(${randomScale})`;\n                    });\n                });\n            }\n\n            \/\/ Text Animations\n            function initTextAnimations() {\n                const titles = document.querySelectorAll('.pub-title');\n                \n                titles.forEach(title => {\n                    title.addEventListener('mouseenter', () => {\n                        const text = title.textContent;\n                        title.innerHTML = '';\n                        \n                        [...text].forEach((char, index) => {\n                            const span = document.createElement('span');\n                            span.textContent = char === ' ' ? '\\u00A0' : char;\n                            span.style.cssText = `\n                                display: inline-block;\n                                animation: letterBounce 0.3s ease-in-out;\n                                animation-delay: ${index * 0.02}s;\n                            `;\n                            title.appendChild(span);\n                        });\n                    });\n                });\n            }\n\n            \/\/ Add dynamic CSS animations\n            function addDynamicStyles() {\n                const style = document.createElement('style');\n                style.textContent = `\n                    @keyframes letterBounce {\n                        0%, 100% { transform: translateY(0px); }\n                        50% { transform: translateY(-3px); }\n                    }\n                    \n                    .publication-item:hover {\n                        animation-play-state: paused !important;\n                    }\n                `;\n                document.head.appendChild(style);\n            }\n\n            \/\/ Initialize\n            document.addEventListener('DOMContentLoaded', async () => {\n                addDynamicStyles();\n                initializeFilters();\n                await fetchAvailableTypes();\n                fetchPublications();\n                initDynamicEffects();\n            });\n        })();\n    <\/script>\n\n\n<pre class=\"wp-block-code\"><code><\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>All Years All Types Loading&#8230; No publications found matching your criteria. Load More<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_seopress_robots_primary_cat":"","_seopress_titles_title":"","_seopress_titles_desc":"","_seopress_robots_index":"","_seopress_analysis_target_kw":"","footnotes":""},"class_list":["post-140","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/mse.ucf.edu\/fms\/wp-json\/wp\/v2\/pages\/140","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mse.ucf.edu\/fms\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mse.ucf.edu\/fms\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mse.ucf.edu\/fms\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/mse.ucf.edu\/fms\/wp-json\/wp\/v2\/comments?post=140"}],"version-history":[{"count":113,"href":"https:\/\/mse.ucf.edu\/fms\/wp-json\/wp\/v2\/pages\/140\/revisions"}],"predecessor-version":[{"id":900,"href":"https:\/\/mse.ucf.edu\/fms\/wp-json\/wp\/v2\/pages\/140\/revisions\/900"}],"wp:attachment":[{"href":"https:\/\/mse.ucf.edu\/fms\/wp-json\/wp\/v2\/media?parent=140"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}