{"id":9,"date":"2025-11-17T22:20:15","date_gmt":"2025-11-17T22:20:15","guid":{"rendered":"https:\/\/wcaa.preprod.fruitionqa.com\/?page_id=9"},"modified":"2026-08-17T16:46:40","modified_gmt":"2026-08-17T20:46:40","slug":"homepage","status":"publish","type":"page","link":"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/","title":{"rendered":"Homepage"},"content":{"rendered":"\n\n<div class=\"heroLandingFluid paddingBottom2XL bottomLeftRadius bottomRightRadius\">\n\n    <div class=\"container heroLandingContainer\">\n        <div class=\"grid align-end\">\n            <div class=\"col-sm-7\">\n                <h1><span>Detroit Metropolitan<\/span> wayne county airport<\/h1>\n            <\/div>\n            <div class=\"col-sm-5\">\n                \n        <script>\n(function() {\n  if (!document.querySelector('[data-typekit-loaded], link[href*=\"typekit.net\"], script[src*=\"typekit.net\"], script[src*=\"use.typekit.net\"]')) {\n    var l = document.createElement('link');\n    l.rel = 'stylesheet';\n    l.href = 'https:\/\/use.typekit.net\/lly7wdy.css';\n    document.head.appendChild(l);\n  }\n  if (!document.querySelector('script[src*=\"kit.fontawesome.com\"]')) {\n    var s = document.createElement('script');\n    s.src = 'https:\/\/kit.fontawesome.com\/f2144e7b52.js';\n    s.crossOrigin = 'anonymous';\n    s.async = true;\n    document.head.appendChild(s);\n  }\n})();\n<\/script>\n<style>\n\/* FlyFruition Design System - Design Tokens *\/\n:root {\n    \/* Typography - Font Families *\/\n    --font-family-body: 'aktiv-grotesk', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\n    --font-family-heading: 'dm-sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\n    --font-family-button: 'aktiv-grotesk', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\n    --font-family-numeric: 'aktiv-grotesk', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\n\n    \/* Typography - Font Sizes *\/\n    --font-size-xs: 11px;\n    --font-size-sm: 13px;\n    --font-size-base: 15px;\n    --font-size-md: 17px;\n    --font-size-lg: 18px;\n    --font-size-xl: 22px;\n    --font-size-2xl: 28px;\n    --font-size-3xl: 36px;\n\n    \/* Typography - Font Weights *\/\n    --font-weight-regular: 400;\n    --font-weight-medium: 500;\n    --font-weight-semibold: 600;\n    --font-weight-bold: 700;\n    --font-weight-extrabold: 800;\n\n    \/* Typography - Line Heights *\/\n    --line-height-tight: 1.25;\n    --line-height-normal: 1.5;\n    --line-height-relaxed: 1.75;\n\n    \/* Colors - Primary *\/\n    --color-primary: #0064A7;\n    --color-primary-dark: #004A78;\n\n    \/* Colors - Status *\/\n    --color-success: #1cb85b;\n    --color-success-bg: #d2f1de;\n    --color-warning: #ff8800;\n    --color-warning-bg: #fff4e6;\n    --color-error: #f3442d;\n    --color-error-bg: #ffefed;\n    --color-info: #2063f8;\n    --color-info-bg: #d2e0fe;\n\n    \/* Colors - Status Tags *\/\n    --status-ontime-bg: #d2f1de;\n    --status-ontime-border: #49c67c;\n    --status-ontime-icon: #1cb85b;\n    --status-ontime-text: #3a3e46;\n    --status-arrived-bg: #d2f1de;\n    --status-arrived-border: #49c67c;\n    --status-arrived-icon: #1cb85b;\n    --status-arrived-text: #3a3e46;\n    --status-delayed-bg: #fff4e6;\n    --status-delayed-border: #ffb84d;\n    --status-delayed-icon: #ff8c00;\n    --status-delayed-text: #3a3e46;\n    --status-onground-bg: #D3E7F5;\n    --status-onground-border: #2E83B8;\n    --status-onground-icon: #2E83B8;\n    --status-onground-text: #3a3e46;\n    --status-cancelled-bg: #ffefed;\n    --status-cancelled-border: #f56957;\n    --status-cancelled-icon: #f3442d;\n    --status-cancelled-text: #3a3e46;\n\n    \/* Colors - Text *\/\n    --color-text-heading: #05243D;\n    --color-text-body: #3a3e46;\n    --color-text-light: #7d8796;\n    --color-text-muted: #b0b8c1;\n\n    \/* Colors - Borders *\/\n    --color-border-light: #e1edf2;\n    --color-border-medium: #e6e9eb;\n    --color-border-accent: #a6c1fc;\n    --color-border-neutral: #C6C8CF;\n\n    \/* Colors - Backgrounds *\/\n    --color-bg-primary: #ffffff;\n    --color-bg-light: #f7fafc;\n    --color-bg-secondary: #f6f6f7;\n    --color-bg-blue-light: #d2e0fe;\n    --color-bg-blue-lighter: #ccf2ff;\n\n    \/* Spacing Scale *\/\n    --spacing-xs: 4px;\n    --spacing-sm: 8px;\n    --spacing-md: 12px;\n    --spacing-lg: 16px;\n    --spacing-xl: 20px;\n    --spacing-2xl: 24px;\n    --spacing-3xl: 32px;\n    --spacing-4xl: 40px;\n\n    \/* Border Radius *\/\n    --radius-sm: 4px;\n    --radius-md: 8px;\n    --radius-lg: 12px;\n    --radius-pill: 24px;\n\n    \/* Shadows *\/\n    --shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.06);\n    --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.1);\n    --shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.12);\n}\n\n\/* Flight Search Component Styles *\/\n\n\/* Flight Search Container *\/\n.flight-search-container {\n    display: flex;\n    flex-direction: column;\n    gap: var(--spacing-xs);\n    align-items: flex-start;\n    width: 515px;\n    max-width: 100%;\n}\n\n\/* Flight Search Label *\/\n.flight-search-label {\n    display: flex;\n    gap: var(--spacing-xs);\n    align-items: center;\n}\n\n.flight-search-label p {\n    font-family: var(--font-family-body);\n    font-weight: var(--font-weight-medium);\n    font-size: 17px;\n    line-height: 26px;\n    color: #fff;\n    white-space: nowrap;\n    margin: 0;\n}\n\n\/* Flight Search Wrapper *\/\n.flight-search-wrapper {\n    position: relative;\n    width: 100%;\n}\n\n\/* Flight Search Field *\/\n.flight-search-field {\n    background-color: var(--color-bg-primary);\n    border: 1px solid var(--color-border-medium);\n    border-radius: var(--radius-md);\n    display: flex;\n    gap: var(--spacing-sm);\n    align-items: center;\n    padding: var(--spacing-xs) var(--spacing-xs) var(--spacing-xs) var(--spacing-2xl);\n    width: 100%;\n    box-sizing: border-box;\n}\n\n\/* Flight Search Input *\/\n.flight-search-input {\n    flex-grow: 1;\n    flex-basis: 0;\n    min-width: 0;\n    min-height: 1px;\n    font-size: var(--font-size-base);\n    line-height: var(--line-height-normal);\n    color: var(--color-text-muted);\n    border: none;\n    outline: none;\n    background: transparent;\n}\n\n.flight-search-input::placeholder {\n    color: var(--color-text-muted);\n}\n\n.flight-search-input:focus {\n    color: var(--color-text-heading);\n}\n\n\/* Flight Search Button *\/\n.flight-search-button {\n    background-color: var(--color-primary);\n    border: none;\n    border-radius: var(--radius-md);\n    display: flex;\n    gap: var(--spacing-sm);\n    align-items: center;\n    justify-content: center;\n    padding: var(--spacing-md) var(--spacing-xl);\n    cursor: pointer;\n    transition: opacity 0.2s ease;\n}\n\n.flight-search-button:hover {\n    opacity: 0.9;\n}\n\n.flight-search-button:active {\n    opacity: 0.8;\n}\n\n.flight-search-button i {\n    color: #ffffff;\n    font-size: 16px;\n    line-height: 0;\n}\n\n.flight-search-button p {\n    white-space: nowrap;\n}\n\n\/* Autocomplete Dropdown *\/\n.autocomplete-dropdown {\n    position: absolute;\n    top: 100%;\n    left: 0;\n    right: 0;\n    background-color: var(--color-bg-primary);\n    border: 1px solid var(--color-border-medium);\n    border-radius: var(--radius-md);\n    margin-top: var(--spacing-xs);\n    box-shadow: var(--shadow-sm);\n    max-height: 400px;\n    overflow-y: auto;\n    display: none;\n    z-index: 1000;\n}\n\n.autocomplete-dropdown.show {\n    display: block;\n}\n\n\/* Autocomplete Item *\/\n.autocomplete-item {\n    display: flex;\n    align-items: center;\n    gap: var(--spacing-sm);\n    padding: var(--spacing-sm) var(--spacing-xl);\n    border-bottom: 1px solid var(--color-border-medium);\n    color: inherit;\n    cursor: pointer;\n    transition: background-color 0.2s ease;\n}\n\n.autocomplete-item:hover,\n.autocomplete-item--active {\n    background-color: var(--color-bg-light);\n}\n\n.autocomplete-item:last-child {\n    border-bottom: none;\n}\n\n\/* Airline Logo Container *\/\n.airline-logo-container {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    gap: 2px;\n    flex-shrink: 0;\n}\n\n\/* Airline Logo *\/\n.autocomplete-item .airline-logo {\n    width: 40px;\n    height: 40px;\n    object-fit: contain;\n    flex-shrink: 0;\n}\n\n\/* Direction Label *\/\n.direction-label {\n    font-family: var(--font-family-body);\n    font-weight: var(--font-weight-medium);\n    font-size: 9px;\n    line-height: 1;\n    color: black;\n    text-transform: uppercase;\n    letter-spacing: 0.3px;\n}\n\n\/* Flight Details *\/\n.flight-details {\n    display: flex;\n    flex-direction: column;\n    gap: 4px;\n    flex-grow: 1;\n    min-width: 0;\n}\n\n.autocomplete-item .flight-number {\n    font-family: var(--font-family-body);\n    font-weight: var(--font-weight-bold);\n    font-size: var(--font-size-base);\n    line-height: var(--line-height-normal);\n    color: var(--color-text-heading);\n}\n\n.flight-route {\n    font-family: var(--font-family-body);\n    font-weight: var(--font-weight-regular);\n    font-size: var(--font-size-base);\n    line-height: var(--line-height-normal);\n    color: var(--color-text-body);\n}\n\n\/* Flight Info Right Container *\/\n.flight-info-right {\n    display: flex;\n    flex-direction: column;\n    align-items: flex-end;\n    gap: 4px;\n    flex-shrink: 0;\n}\n\n\/* Flight Status Badge *\/\n.flight-status {\n    display: inline-flex;\n    align-items: center;\n    padding: 2px 8px;\n    border: 1px solid;\n    border-radius: var(--radius-sm);\n    font-family: var(--font-family-body);\n    font-weight: var(--font-weight-medium);\n    font-size: var(--font-size-xs);\n    line-height: 18px;\n    white-space: nowrap;\n}\n\n.status-on-time {\n    background-color: var(--color-success-bg);\n    border-color: var(--status-arrived-border);\n    color: #3a3e46;\n}\n\n.status-delayed {\n    background-color: var(--color-warning-bg);\n    border-color: var(--status-delayed-border);\n    color: #3a3e46;\n}\n\n.status-cancelled {\n    background-color: var(--color-error-bg);\n    border-color: var(--status-cancelled-border);\n   color: #3a3e46;\n}\n\n.status-arrived {\n    background-color: var(--color-success-bg);\n    border-color: var(--status-arrived-border);\n    color: #3a3e46;\n}\n\n.status-departed {\n    background-color: var(--color-success-bg);\n    border-color: var(--status-arrived-border);\n    color: #3a3e46;\n}\n\n.status-boarding {\n    background-color: var(--color-info-bg, #e0f2fe);\n    border-color: var(--color-info, #0284c7);\n    color: #3a3e46;\n}\n\n.status-unknown {\n    background-color: var(--color-bg-light);\n    border-color: var(--color-border-medium);\n    color: #3a3e46;\n}\n\n\/* Flight Time *\/\n.autocomplete-item .flight-time {\n    font-family: var(--font-family-body);\n    font-weight: var(--font-weight-regular);\n    font-size: var(--font-size-base);\n    line-height: var(--line-height-normal);\n    color: var(--color-text-light);\n    white-space: nowrap;\n}\n\n\/* No Results Message *\/\n.no-results {\n    padding: var(--spacing-xl);\n    text-align: center;\n    font-family: var(--font-family-body);\n    font-weight: var(--font-weight-regular);\n    font-size: var(--font-size-base);\n    color: var(--color-text-light);\n}\n\n\/* Loading State *\/\n.loading-indicator {\n    padding: var(--spacing-xl);\n    text-align: center;\n    font-family: var(--font-family-body);\n    font-weight: var(--font-weight-regular);\n    font-size: var(--font-size-base);\n    color: var(--color-text-light);\n}\n\n\/* Flight Search Links *\/\n.flight-search-links {\n    display: flex;\n    gap: var(--spacing-lg);\n    align-items: center;\n    justify-content: flex-start;\n    width: 100%;\n    margin-top: var(--spacing-sm);\n}\n\n.flight-search-links a {\n    font-family: var(--font-family-body);\n    font-weight: var(--font-weight-medium);\n    font-size: var(--font-size-sm);\n    line-height: var(--line-height-normal);\n    color: #ffffff;\n    text-decoration: underline;\n    cursor: pointer;\n    transition: opacity 0.2s ease;\n}\n\n.flight-search-links a:hover {\n    opacity: 0.8;\n}\n\n\/* Responsive Design *\/\n@media (max-width: 767px) {\n    .flight-search-container {\n        width: 100%;\n    }\n\n    .flight-search-field {\n        padding-left: var(--spacing-sm);\n    }\n\n    .flight-search-button p {\n        display: none;\n    }\n\n    .flight-search-button {\n        padding: var(--spacing-sm);\n    }\n}\n<\/style>\n\n<div id=\"flyfruition-flight-search-DTW-1787609496729\" class=\"flyfruition-widget flyfruition-widget--flight-search\" data-airport=\"DTW\" data-widget=\"flight-search\">\n  <div class=\"flyfruition-widget__content\">\n    <div class=\"flight-search-container\">\n    <div class=\"flight-search-label\">\n        <p>Find my Flight<\/p>\n    <\/div>\n    <div class=\"flight-search-wrapper\">\n        <div class=\"flight-search-field\">\n            <input type=\"text\" placeholder=\"Search by Flight #, City, Airport Code\" class=\"flight-search-input\" id=\"flyfruition-flight-search-DTW-1787609496729-input\" autocomplete=\"off\" aria-label=\"Search by flight number, city, or airport code\">\n            <button class=\"flight-search-button\" id=\"flyfruition-flight-search-DTW-1787609496729-button\">\n                <i class=\"fa-solid fa-search\"><\/i>\n                <p>Search<\/p>\n            <\/button>\n        <\/div>\n        <div class=\"autocomplete-dropdown\" id=\"flyfruition-flight-search-DTW-1787609496729-dropdown\">\n            <!-- Autocomplete results will be inserted here by JavaScript -->\n        <\/div>\n    <\/div>\n    <div class=\"flight-search-links\" id=\"flyfruition-flight-search-DTW-1787609496729-links\">\n        <!-- View all links will be inserted here by JavaScript -->\n    <\/div>\n<\/div>\n  <\/div>\n<\/div>\n\n<script>\n(function() {\n    \/\/ Flight Search Widget - flyfruition-flight-search-DTW-1787609496729\n    const widgetId = 'flyfruition-flight-search-DTW-1787609496729';\n    const dataUrl = 'https:\/\/pages.fruitionqa.com\/api\/widgets\/dtw\/flight-search\/data';\n    const baseUrl = 'https:\/\/pages.fruitionqa.com';\n    const widgetDirection = null;\n    const resultLimit = 10;\n\n    \/\/ State\n    let flights = [];\n    let isLoading = false;\n    let refreshInterval = null;\n    var selectedIndex = -1;\n    \n    \/\/ DOM Elements\n    const searchInput = document.getElementById(widgetId + '-input');\n    const searchButton = document.getElementById(widgetId + '-button');\n    const dropdown = document.getElementById(widgetId + '-dropdown');\n    \n    if (!searchInput || !searchButton || !dropdown) {\n        console.error('Flight search widget elements not found');\n        return;\n    }\n\n    \/**\n     * Get the arrival, departure, and connections page paths from document configuration\n     * @returns {Object} Object with arrivalPath, departurePath, and connectionsPath properties\n     *\/\n    function getPagePaths() {\n        return {\n            arrivalPath: (typeof document.ARRIVAL_PAGE_PATH === 'string' && document.ARRIVAL_PAGE_PATH) ? document.ARRIVAL_PAGE_PATH : null,\n            departurePath: (typeof document.DEPARTURE_PAGE_PATH === 'string' && document.DEPARTURE_PAGE_PATH) ? document.DEPARTURE_PAGE_PATH : null,\n            connectionsPath: (typeof document.CONNECTIONS_PAGE_PATH === 'string' && document.CONNECTIONS_PAGE_PATH) ? document.CONNECTIONS_PAGE_PATH : null\n        };\n    }\n\n    \/**\n     * Get the flight detail page path from document configuration\n     * @returns {string|null} Flight detail page path\n     *\/\n    function getFlightDetailPagePath() {\n        return (typeof document.FLIGHT_PAGE_PATH === 'string' && document.FLIGHT_PAGE_PATH) ? document.FLIGHT_PAGE_PATH : null;\n    }\n    \n    \/**\n     * Check if a flight time is within the acceptable range (6 hours old or newer, including future flights)\n     * @param {Object} flight - Flight object with scheduledTime field\n     * @returns {boolean} True if flight is within range\n     *\/\n    function isFlightWithinTimeRange(flight) {\n        if (!flight.flightDate || !flight.scheduledTime) return true;\n\n        try {\n            \/\/ Combine flightDate + scheduledTime to create valid datetime\n            \/\/ scheduledTime is a bare time string like \"16:00\", not an ISO datetime\n            var flightDateTime = new Date(flight.flightDate + 'T' + flight.scheduledTime);\n\n            \/\/ Check if date is valid\n            if (isNaN(flightDateTime.getTime())) {\n                return true;\n            }\n\n            \/\/ Calculate time difference in hours\n            var now = new Date();\n            var diffMs = now - flightDateTime;\n            var diffHours = diffMs \/ (1000 * 60 * 60);\n\n            \/\/ Keep flights that are 6 hours old or newer (includes future flights)\n            return diffHours < 6;\n        } catch (error) {\n            return true;\n        }\n    }\n\n    \/**\n     * Parse time string to minutes since midnight for sorting\n     * @param {string} timeStr - Time string in format like \"10:30 AM\" or \"14:30\"\n     * @returns {number} Minutes since midnight\n     *\/\n    function parseTimeToMinutes(timeStr) {\n        if (!timeStr) return 0;\n\n        try {\n            var timeParts = timeStr.match(\/(\\d+):(\\d+)\\s*(AM|PM)?\/i);\n            if (!timeParts) return 0;\n\n            var hours = parseInt(timeParts[1]);\n            var minutes = parseInt(timeParts[2]);\n            var period = timeParts[3];\n\n            \/\/ Convert to 24-hour format if needed\n            if (period) {\n                if (period.toUpperCase() === 'PM' && hours !== 12) {\n                    hours += 12;\n                } else if (period.toUpperCase() === 'AM' && hours === 12) {\n                    hours = 0;\n                }\n            }\n\n            return hours * 60 + minutes;\n        } catch (error) {\n            return 0;\n        }\n    }\n\n    \/\/ Fetch flights from API\n    async function fetchFlights() {\n        if (isLoading) return;\n\n        isLoading = true;\n        try {\n            const response = await fetch(dataUrl);\n            if (!response.ok) throw new Error('Failed to fetch flights');\n            var allFlights = await response.json();\n\n            \/\/ Filter flights: keep those 6 hours old or newer (includes future flights)\n            var filteredFlights = allFlights.filter(function(flight) {\n                return isFlightWithinTimeRange(flight);\n            });\n\n            \/\/ Sort by time ascending\n            filteredFlights.sort(function(a, b) {\n                return parseTimeToMinutes(a.time) - parseTimeToMinutes(b.time);\n            });\n\n            flights = filteredFlights;\n            console.log('[FlightSearch] Loaded', flights.length, 'flights (filtered and sorted)');\n        } catch (error) {\n            console.error('[FlightSearch] Error fetching flights:', error);\n        } finally {\n            isLoading = false;\n        }\n    }\n    \n    \/\/ Normalize string for comparison (remove spaces, special chars, lowercase)\n    function normalize(str) {\n        if (!str) return '';\n        return str.toLowerCase().replace(\/[^a-z0-9]\/g, '');\n    }\n\n    \/\/ Calculate search score for a flight (higher = better match)\n    function getSearchScore(flight, query, normalizedQuery) {\n        var score = 0;\n        \n        \/\/ Normalize flight number for comparison\n        var flightNumNorm = normalize(flight.flightNumber);\n        var airlineCodeNorm = normalize(flight.airlineCode);\n        var airportCodeNorm = normalize(flight.airportCode);\n        \n        \/\/ Exact flight number match (highest priority)\n        if (flightNumNorm === normalizedQuery) {\n            score += 1000;\n        }\n        \/\/ Flight number starts with query\n        else if (flightNumNorm.startsWith(normalizedQuery)) {\n            score += 500;\n        }\n        \/\/ Flight number contains query\n        else if (flightNumNorm.includes(normalizedQuery)) {\n            score += 300;\n        }\n        \n        \/\/ Exact airline code match\n        if (airlineCodeNorm === normalizedQuery) {\n            score += 200;\n        }\n        \/\/ Airline code starts with query\n        else if (airlineCodeNorm.startsWith(normalizedQuery)) {\n            score += 100;\n        }\n        \n        \/\/ Exact airport code match\n        if (airportCodeNorm === normalizedQuery) {\n            score += 200;\n        }\n        \/\/ Airport code starts with query\n        else if (airportCodeNorm.startsWith(normalizedQuery)) {\n            score += 100;\n        }\n        \n        \/\/ Airline name contains query (case insensitive)\n        if (flight.airline && flight.airline.toLowerCase().includes(query)) {\n            score += 50;\n        }\n        \n        \/\/ City name contains query\n        if (flight.airportCity && flight.airportCity.toLowerCase().includes(query)) {\n            score += 50;\n        }\n        \n        \/\/ Origin\/destination contains query\n        if (flight.origin && flight.origin.toLowerCase().includes(query)) {\n            score += 30;\n        }\n        if (flight.destination && flight.destination.toLowerCase().includes(query)) {\n            score += 30;\n        }\n        \n        return score;\n    }\n\n    \/\/ Filter flights based on search query with smart matching\n    function filterFlights(query) {\n        if (!query || query.trim().length === 0) {\n            return [];\n        }\n\n        query = query.toLowerCase().trim();\n        var normalizedQuery = normalize(query);\n\n        \/\/ Score all flights\n        var scoredFlights = flights.map(function(flight) {\n            return {\n                flight: flight,\n                score: getSearchScore(flight, query, normalizedQuery)\n            };\n        });\n\n        \/\/ Filter to only matches (score > 0) and sort by score descending\n        return scoredFlights\n            .filter(function(item) { return item.score > 0; })\n            .sort(function(a, b) { return b.score - a.score; })\n            .slice(0, resultLimit)\n            .map(function(item) { return item.flight; });\n    }\n\n    \/\/ Get status display information\n    function getStatusInfo(status) {\n        var statusMap = {\n            'on-time': { text: 'On Time', cssClass: 'status-on-time' },\n            'delayed': { text: 'Delayed', cssClass: 'status-delayed' },\n            'cancelled': { text: 'Cancelled', cssClass: 'status-cancelled' },\n            'arrived': { text: 'Arrived', cssClass: 'status-arrived' },\n            'departed': { text: 'Departed', cssClass: 'status-departed' },\n            'boarding': { text: 'Boarding', cssClass: 'status-boarding' },\n            'on-ground': { text: 'On Ground', cssClass: 'status-arrived' }\n        };\n        return statusMap[status] || { text: status || 'Unknown', cssClass: 'status-unknown' };\n    }\n\n    \/\/ Create autocomplete item HTML\n    function createFlightItem(flight) {\n        var item = document.createElement('div');\n        item.className = 'autocomplete-item';\n\n        var statusInfo = getStatusInfo(flight.status);\n        var directionLabel = flight.direction === 'departure' ? 'Departure' : 'Arrival';\n        var logoHtml = flight.airlineLogo\n            ? '<div class=\"airline-logo-container\">' +\n                '<img decoding=\"async\" src=\"' + flight.airlineLogo + '\" alt=\"' + flight.airline + '\" class=\"airline-logo\" onerror=\"this.style.display=\\'none\\'\">' +\n                '<div class=\"direction-label\">' + directionLabel + '<\/div>' +\n              '<\/div>'\n            : '<div class=\"airline-logo-container\">' +\n                '<div class=\"direction-label\">' + directionLabel + '<\/div>' +\n              '<\/div>';\n\n        var routeText = flight.direction === 'departure'\n            ? flight.origin + ' \u2192 ' + flight.destination\n            : flight.origin + ' \u2192 ' + flight.destination;\n\n        item.innerHTML =\n            logoHtml +\n            '<div class=\"flight-details\">' +\n                '<div class=\"flight-number\">' + flight.flightNumber + '<\/div>' +\n                '<div class=\"flight-route\">' + routeText + '<\/div>' +\n            '<\/div>' +\n            '<div class=\"flight-info-right\">' +\n                '<div class=\"flight-status ' + statusInfo.cssClass + '\">' + statusInfo.text + '<\/div>' +\n                '<div class=\"flight-time\">' + flight.time + '<\/div>' +\n            '<\/div>';\n\n        \/\/ Add click handler to navigate to flight detail page\n        item.addEventListener('click', function() {\n            var flightPagePath = getFlightDetailPagePath();\n            if (flightPagePath) {\n                \/\/ Remove spaces from flight number (e.g., \"UA 4048\" -> \"UA4048\")\n                var flightNumberClean = flight.flightNumber.replace(\/\\s+\/g, '');\n                \/\/ Construct URL: \/flight-details\/?flight=arrival\/UA4048\n                var url = flightPagePath + '?flight=' + flight.direction + '\/' + flightNumberClean;\n                window.location.href = url;\n            }\n        });\n\n        return item;\n    }\n\n    \/\/ Update visual highlight on dropdown items\n    function updateHighlight() {\n        var items = dropdown.querySelectorAll('.autocomplete-item');\n        items.forEach(function(item, i) {\n            if (i === selectedIndex) {\n                item.classList.add('autocomplete-item--active');\n                item.scrollIntoView({ block: 'nearest' });\n            } else {\n                item.classList.remove('autocomplete-item--active');\n            }\n        });\n    }\n\n    \/\/ Show dropdown with results\n    function showResults(results) {\n        dropdown.innerHTML = '';\n        selectedIndex = -1;\n\n        if (isLoading) {\n            var loading = document.createElement('div');\n            loading.className = 'loading-indicator';\n            loading.textContent = 'Loading flights...';\n            dropdown.appendChild(loading);\n        } else if (results.length === 0) {\n            var noResults = document.createElement('div');\n            noResults.className = 'no-results';\n            noResults.textContent = 'No flights found';\n            dropdown.appendChild(noResults);\n        } else {\n            results.forEach(function(flight) {\n                dropdown.appendChild(createFlightItem(flight));\n            });\n        }\n\n        dropdown.classList.add('show');\n    }\n\n    \/\/ Hide dropdown\n    function hideDropdown() {\n        dropdown.classList.remove('show');\n    }\n\n    \/\/ Handle input changes\n    searchInput.addEventListener('input', function(e) {\n        var query = e.target.value;\n\n        if (query.trim().length === 0) {\n            hideDropdown();\n            return;\n        }\n\n        var results = filterFlights(query);\n        showResults(results);\n    });\n\n    \/\/ Handle search button click\n    searchButton.addEventListener('click', function() {\n        var query = searchInput.value;\n        if (query.trim().length > 0) {\n            var results = filterFlights(query);\n            var paths = getPagePaths();\n\n            \/\/ Determine which page to navigate to\n            var targetPath = null;\n\n            \/\/ For connections widgets, always go to departure page\n            if (widgetDirection && widgetDirection === 'arrival|connections') {\n                targetPath = paths.arrivalPath;\n            } else if (widgetDirection && widgetDirection === 'departure|connections') {\n                targetPath = paths.departurePath;\n            } else if (results.length > 0) {\n                \/\/ Use the direction of the first result to determine target page\n                targetPath = results[0].direction === 'arrival' ? paths.arrivalPath : paths.departurePath;\n            } else {\n                \/\/ Default to departure page if no results\n                targetPath = paths.departurePath || paths.arrivalPath;\n            }\n\n            if (targetPath) {\n                window.location.href = targetPath + '?q=' + encodeURIComponent(query);\n            }\n        }\n    });\n\n    \/\/ Handle keyboard navigation (arrows + enter)\n    searchInput.addEventListener('keydown', function(e) {\n        var items = dropdown.querySelectorAll('.autocomplete-item');\n        var itemCount = items.length;\n\n        if (e.key === 'ArrowDown') {\n            e.preventDefault();\n            if (itemCount > 0) {\n                selectedIndex = (selectedIndex + 1) % itemCount;\n                updateHighlight();\n            }\n        } else if (e.key === 'ArrowUp') {\n            e.preventDefault();\n            if (itemCount > 0) {\n                selectedIndex = selectedIndex <= 0 ? itemCount - 1 : selectedIndex - 1;\n                updateHighlight();\n            }\n        } else if (e.key === 'Enter') {\n            e.preventDefault();\n            \/\/ If an item is highlighted, click it\n            if (selectedIndex >= 0 && items[selectedIndex]) {\n                items[selectedIndex].click();\n                return;\n            }\n            \/\/ Otherwise navigate to flight board with search query\n            var query = searchInput.value;\n            if (query.trim().length > 0) {\n                var results = filterFlights(query);\n                var paths = getPagePaths();\n\n                var targetPath = null;\n\n                \/\/ For connections widgets, always go to departure page\n                if (widgetDirection && widgetDirection === 'arrival|connections') {\n                    targetPath = paths.arrivalPath;\n                } else if (widgetDirection && widgetDirection === 'departure|connections') {\n                    targetPath = paths.departurePath;\n                } else if (results.length > 0) {\n                    targetPath = results[0].direction === 'arrival' ? paths.arrivalPath : paths.departurePath;\n                } else {\n                    targetPath = paths.departurePath || paths.arrivalPath;\n                }\n\n                if (targetPath) {\n                    window.location.href = targetPath + '?q=' + encodeURIComponent(query);\n                }\n            }\n        } else if (e.key === 'Escape') {\n            hideDropdown();\n            selectedIndex = -1;\n        }\n    });\n\n    \/\/ Close dropdown when clicking outside\n    document.addEventListener('click', function(e) {\n        if (!e.target.closest('.flight-search-wrapper')) {\n            hideDropdown();\n        }\n    });\n\n    \/\/ Prevent dropdown from closing when clicking inside it\n    dropdown.addEventListener('click', function(e) {\n        e.stopPropagation();\n    });\n\n    \/\/ Render \"view all\" links based on widget direction\n    function renderViewAllLinks() {\n        var linksContainer = document.getElementById(widgetId + '-links');\n        if (!linksContainer) return;\n\n        var paths = getPagePaths();\n        var linksHtml = '';\n\n        \/\/ Handle connections widgets\n        if (widgetDirection === 'arrival|connections' || widgetDirection === 'departure|connections') {\n            if (paths.connectionsPath) {\n                linksHtml = '<a href=\"' + paths.connectionsPath + '\">View all Connections<\/a>';\n            }\n        }\n        \/\/ Handle single direction widgets\n        else if (widgetDirection === 'arrival') {\n            if (paths.arrivalPath) {\n                linksHtml = '<a href=\"' + paths.arrivalPath + '\">View All Arrivals<\/a>';\n            }\n        }\n        else if (widgetDirection === 'departure') {\n            if (paths.departurePath) {\n                linksHtml = '<a href=\"' + paths.departurePath + '\">View All Departures<\/a>';\n            }\n        }\n        \/\/ Default: show both links\n        else {\n            if (paths.arrivalPath) {\n                linksHtml += '<a href=\"' + paths.arrivalPath + '\">View All Arrivals<\/a>';\n            }\n\n            if (paths.departurePath) {\n                linksHtml += '<a href=\"' + paths.departurePath + '\">View All Departures<\/a>';\n            }\n        }\n\n        linksContainer.innerHTML = linksHtml;\n    }\n\n    \/\/ Initial fetch\n    fetchFlights();\n\n    \/\/ Render view all links\n    renderViewAllLinks();\n\n    \/\/ Refresh every 60 seconds\n    refreshInterval = setInterval(fetchFlights, 60000);\n\n    \/\/ Cleanup on page unload\n    window.addEventListener('beforeunload', function() {\n        if (refreshInterval) {\n            clearInterval(refreshInterval);\n        }\n    });\n})();\n<\/script>            <\/div>\n        <\/div>\n    <\/div>\n\n\n\n\n    <div class=\"hero-video-container\">\n        <div class=\"hero-video-poster\">\n                            <img decoding=\"async\" src=\"https:\/\/wcaa.preprod.fruitionqa.com\/wp-content\/uploads\/2026\/03\/Image.webp\"\n                     alt=\"\"\n                     fetchpriority=\"high\"\n                     loading=\"eager\"\n                     width=\"1512\"\n                     height=\"512\">\n                    <\/div>\n                    <iframe id=\"iframe-block_dd7dcc04e19729060db16944ccbd40cb\" class=\"hv-element hv-youtube\"\n                src=\"https:\/\/www.youtube.com\/embed\/k_W8dpopu7s?enablejsapi=1&amp;controls=0&amp;rel=0&amp;playsinline=1&amp;autoplay=1&amp;mute=1&amp;loop=1&amp;playlist=k_W8dpopu7s\"\n                frameborder=\"0\" allow=\"autoplay; encrypted-media\" allowfullscreen=\"\"\n                title=\"Background video\"><\/iframe>\n            <\/div>\n\n\n    <div class=\"container\">\n        <div class=\"grid justify-center\">\n            <div class=\"col-sm-10\">\n\n                                    <!-- Controls (Top Right) -->\n                    <div class=\"hero-controls\">\n                        <button class=\"hv-btn hv-mute-toggle\" data-target=\"iframe-block_dd7dcc04e19729060db16944ccbd40cb\"\n                            data-type=\"youtube\" aria-label=\"Mute video\">\n                            <!-- Icon Mute -->\n                            <span class=\"icon-mute\" aria-hidden=\"true\">\n                                <i class=\"fa-light fa-volume-xmark\"><\/i>\n                            <\/span>\n                            <!-- Icon Unmute-->\n                            <span class=\"icon-unmute\" style=\"display: none;\" aria-hidden=\"true\">\n                                <i class=\"fa-light fa-volume\"><\/i>\n                            <\/span>\n                        <\/button>\n\n                        <button class=\"hv-btn hv-play-toggle\" data-target=\"iframe-block_dd7dcc04e19729060db16944ccbd40cb\"\n                            data-type=\"youtube\" aria-label=\"Pause video\">\n                            <!-- Icon Pause -->\n                            <span class=\"icon-pause\" aria-hidden=\"true\">\n                                <i class=\"fa-light fa-pause\"><\/i>\n                            <\/span>\n                            <!-- Icon Play -->\n                            <span class=\"icon-play\" style=\"display: none;\" aria-hidden=\"true\">\n                                <i class=\"fa-light fa-play\"><\/i>\n                            <\/span>\n                        <\/button>\n                    <\/div>\n                \n            <\/div>\n        <\/div>\n\n\n\n    <\/div>\n<\/div>\n\n<div class=\"heroLandingTerminalCards\">\n    <div class=\"container\">\n        <div class=\"grid justify-center\">\n            <div class=\"col-sm-10\">\n                \n<script>\n(function() {\n  if (!document.querySelector('[data-typekit-loaded], link[href*=\"typekit.net\"], script[src*=\"typekit.net\"], script[src*=\"use.typekit.net\"]')) {\n    var l = document.createElement('link');\n    l.rel = 'stylesheet';\n    l.href = 'https:\/\/use.typekit.net\/lly7wdy.css';\n    document.head.appendChild(l);\n  }\n  if (!document.querySelector('script[src*=\"kit.fontawesome.com\"]')) {\n    var s = document.createElement('script');\n    s.src = 'https:\/\/kit.fontawesome.com\/f2144e7b52.js';\n    s.crossOrigin = 'anonymous';\n    s.async = true;\n    document.head.appendChild(s);\n  }\n})();\n<\/script>\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link rel=\"stylesheet\" href=\"https:\/\/fonts.googleapis.com\/css2?family=Roboto:wght@700&display=swap\">\n\n<style>\n\/* FlyFruition Design System - DTW Terminal Cards *\/\n:root {\n  --tc-font-body: 'aktiv-grotesk', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\n  --tc-font-heading: 'dm-sans', 'DM Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\n  --tc-color-primary: #0064A7;\n  --tc-color-heading: #05243D;\n  --tc-color-body: #3a3e46;\n  --tc-color-light: #7d8796;\n  --tc-color-border: #e6e9eb;\n  --tc-color-border-tertiary: #c2ecf8;\n  --tc-color-card-bg: #e6f4fa;\n  --tc-color-white: #ffffff;\n  --tc-color-success-bg: #d2f1de;\n  --tc-color-success-border: #49c67c;\n  --tc-color-success-icon: #1cb85b;\n  --tc-radius-sm: 4px;\n  --tc-radius-md: 8px;\n  --tc-radius-lg: 8px;\n  --tc-radius-xl: 16px;\n}\n\n\/* Reset *\/\n.terminal-cards * {\n  margin: 0;\n  padding: 0;\n  box-sizing: border-box;\n}\n\n\/* Layout *\/\n.terminal-cards {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 10px;\n  width: 100%;\n  font-family: var(--tc-font-body);\n}\n\n.terminal-cards > .terminal-card {\n  flex: 1 1 400px;\n}\n\n\/* Card *\/\n.terminal-card {\n  background: var(--tc-color-card-bg);\n  border: 1px solid var(--tc-color-border-tertiary);\n  border-radius: var(--tc-radius-xl);\n  padding: 32px 24px 40px;\n  display: flex;\n  flex-direction: column;\n  gap: 24px;\n}\n\n\/* Card Header *\/\n.terminal-card__header {\n  border-bottom: 1px solid var(--tc-color-primary);\n  padding-bottom: 4px;\n}\n\n.terminal-card__title {\n  font-family: var(--tc-font-heading);\n  font-size: 22px;\n  font-weight: 700;\n  color: var(--tc-color-heading);\n  line-height: 32px;\n}\n\n\/* Content row: TSA + Airlines side by side *\/\n.terminal-card__content-row {\n  display: flex;\n  gap: 20px;\n}\n\n\/* Section *\/\n.terminal-card__section {\n  display: flex;\n  flex-direction: column;\n  gap: 12px;\n}\n\n.terminal-card__section--airlines {\n  flex: 1 0 0;\n  min-width: 214px;\n}\n\n.terminal-card__section-header {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n}\n\n.terminal-card__section-label {\n  font-family: var(--tc-font-heading);\n  font-size: 18px;\n  font-weight: 600;\n  line-height: 28px;\n  color: var(--tc-color-heading);\n}\n\n.terminal-card__view-all {\n  display: inline-flex;\n  align-items: center;\n  gap: 8px;\n  font-family: var(--tc-font-body);\n  font-size: 15px;\n  font-weight: 500;\n  line-height: 22px;\n  color: var(--tc-color-primary);\n  text-decoration: none;\n  padding: 0 2px;\n  white-space: nowrap;\n}\n\n.terminal-card__view-all:hover {\n  text-decoration: underline;\n}\n\n.terminal-card__view-all i {\n  font-size: 16px;\n  color: var(--tc-color-primary);\n}\n\n\/* TSA Section *\/\n.terminal-card__tsa {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  background: var(--tc-color-white);\n  border: 1px solid var(--tc-color-border);\n  border-radius: var(--tc-radius-lg);\n  padding: 12px 20px;\n}\n\n.terminal-card__tsa-name {\n  font-family: var(--tc-font-heading);\n  font-size: 18px;\n  font-weight: 700;\n  line-height: 28px;\n  color: var(--tc-color-heading);\n  white-space: nowrap;\n}\n\n.terminal-card__tsa-badge {\n  width: 46px;\n  height: 46px;\n  border-radius: var(--tc-radius-lg);\n  background: var(--tc-color-primary);\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  flex-shrink: 0;\n}\n\n.terminal-card__tsa-badge-number {\n  font-family: 'Roboto', sans-serif;\n  font-size: 22px;\n  font-weight: 700;\n  line-height: 32px;\n  color: var(--tc-color-white);\n  text-align: center;\n}\n\n.terminal-card__tsa-unit {\n  font-family: var(--tc-font-heading);\n  font-size: 18px;\n  font-weight: 400;\n  line-height: 28px;\n  color: var(--tc-color-heading);\n  white-space: nowrap;\n}\n\n.terminal-card__tsa-closed {\n  font-size: 15px;\n  font-weight: 500;\n  color: var(--tc-color-light);\n  padding: 12px 20px;\n  background: var(--tc-color-white);\n  border: 1px solid var(--tc-color-border);\n  border-radius: var(--tc-radius-lg);\n}\n\n\/* Airlines Section *\/\n.terminal-card__airlines {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 8px;\n}\n\n.terminal-card__airline-tag {\n  display: inline-flex;\n  align-items: center;\n  gap: 8px;\n  background: var(--tc-color-white);\n  border: 1px solid var(--tc-color-border);\n  border-radius: var(--tc-radius-sm);\n  padding: 4px 12px;\n  font-family: var(--tc-font-body);\n  font-size: 15px;\n  font-weight: 500;\n  line-height: 22px;\n  color: var(--tc-color-body);\n  white-space: nowrap;\n}\n\n\/* Parking Section *\/\n.terminal-card__parking-table {\n  display: flex;\n  flex-direction: column;\n  width: 100%;\n}\n\n.terminal-card__parking-row {\n  display: flex;\n  align-items: center;\n  border-bottom: 1px solid var(--tc-color-border-tertiary);\n}\n\n.terminal-card__parking-cell {\n  padding: 8px 16px;\n  display: flex;\n  align-items: center;\n}\n\n.terminal-card__parking-cell--name {\n  flex: 1 0 0;\n}\n\n.terminal-card__parking-cell--name span {\n  font-family: var(--tc-font-body);\n  font-size: 15px;\n  font-weight: 400;\n  line-height: 22px;\n  color: var(--tc-color-body);\n  padding: 4px 0;\n}\n\n.terminal-card__parking-cell--spaces {\n  width: 186px;\n}\n\n.terminal-card__parking-cell--spaces span {\n  font-family: var(--tc-font-body);\n  font-size: 15px;\n  font-weight: 400;\n  line-height: 22px;\n  color: var(--tc-color-body);\n  padding: 4px 0;\n}\n\n.terminal-card__parking-cell--status {\n  padding: 8px 16px;\n}\n\n.terminal-card__parking-tag {\n  display: inline-flex;\n  align-items: center;\n  gap: 8px;\n  padding: 4px 12px;\n  border-radius: var(--tc-radius-sm);\n  font-family: var(--tc-font-body);\n  font-size: 15px;\n  font-weight: 500;\n  line-height: 22px;\n  color: var(--tc-color-body);\n  white-space: nowrap;\n}\n\n.terminal-card__parking-tag--open {\n  background: var(--tc-color-success-bg);\n  border: 1px solid var(--tc-color-success-border);\n}\n\n.terminal-card__parking-tag--closed {\n  background: #fde8e8;\n  border: 1px solid #ef4444;\n}\n\n.terminal-card__parking-tag--limited {\n  background: #fef3c7;\n  border: 1px solid #f59e0b;\n}\n\n.terminal-card__parking-tag i {\n  font-size: 18px;\n}\n\n.terminal-card__parking-tag--open i {\n  color: var(--tc-color-success-icon);\n}\n\n.terminal-card__parking-tag--closed i {\n  color: #ef4444;\n}\n\n.terminal-card__parking-tag--limited i {\n  color: #f59e0b;\n}\n\n\/* Footer Buttons *\/\n.terminal-card__footer {\n  display: flex;\n  gap: 8px;\n  margin-top: auto;\n}\n\n.terminal-card__footer-btn {\n  flex: 1 0 0;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  gap: 5px;\n  background: var(--tc-color-white);\n  border: 1px solid var(--tc-color-border);\n  border-radius: var(--tc-radius-lg);\n  padding: 12px 37px;\n  font-family: var(--tc-font-heading);\n  font-size: 15px;\n  font-weight: 500;\n  color: var(--tc-color-primary);\n  text-decoration: none;\n  white-space: nowrap;\n}\n\n.terminal-card__footer-btn:hover {\n  background: #f8f9fa;\n  text-decoration: none;\n}\n\n.terminal-card__footer-btn i {\n  font-size: 13px;\n}\n\n\/* Responsive: stack on mobile *\/\n@media (max-width: 767px) {\n  .terminal-card__content-row {\n    flex-direction: column;\n  }\n  .terminal-card__parking-cell--spaces {\n    display: none;\n  }\n  .terminal-card__footer-btn {\n    padding: 12px 8px;\n    font-size: 13px;\n  }\n}\n\n\/* Tab Navigation *\/\n.tc-tab-header {\n  display: none;\n  background: #004a78;\n  border-radius: 16px 16px 0 0;\n  padding: 10px 18px 0;\n}\n\n.tc-tab-label {\n  display: block;\n  font-family: var(--tc-font-heading);\n  font-size: 11px;\n  font-weight: 600;\n  letter-spacing: 0.88px;\n  text-transform: uppercase;\n  color: rgba(255, 255, 255, 0.7);\n  margin-bottom: 8px;\n}\n\n.tc-tab-nav {\n  display: flex;\n  gap: 4px;\n}\n\n.tc-tab-btn {\n  padding: 9px 16px;\n  border: none;\n  border-radius: 10px 10px 0 0;\n  font-family: var(--tc-font-heading);\n  font-size: 13px;\n  font-weight: 600;\n  letter-spacing: -0.13px;\n  cursor: pointer;\n  transition: background 0.15s, color 0.15s;\n}\n\n.tc-tab-btn--active {\n  background: var(--tc-color-card-bg);\n  color: #003a6b;\n}\n\n.tc-tab-btn--inactive {\n  background: rgba(0, 100, 167, 0.59);\n  color: #ffffff;\n}\n\n\/* Below 1372px: show tabs, hide inactive card *\/\n@media (max-width: 1371px) {\n  .tc-tab-header {\n    display: block;\n  }\n\n  .flyfruition-widget--terminal-cards .terminal-cards {\n    border-radius: 0 0 20px 20px;\n  }\n\n  .terminal-card[data-terminal] {\n    display: none;\n  }\n\n  .terminal-card[data-terminal].tc-active {\n    display: flex;\n    border-top-left-radius: 0 !important;\n    border-top-right-radius: 0 !important;\n  }\n}\n<\/style>\n\n<div id=\"flyfruition-terminal-cards-DTW-1787609163963\" class=\"flyfruition-widget flyfruition-widget--terminal-cards\" data-airport=\"DTW\" data-widget=\"terminal-cards\">\n  <div class=\"flyfruition-widget__content\">\n    \n<div class=\"tc-tab-header\">\n  <span class=\"tc-tab-label\">DTW Airport \u00b7 Live Status<\/span>\n  <div class=\"tc-tab-nav\">\n    <button class=\"tc-tab-btn tc-tab-btn--active\" data-tab=\"evans\">Evans Terminal<\/button>\n    <button class=\"tc-tab-btn tc-tab-btn--inactive\" data-tab=\"mcnamara\">McNamara Terminal<\/button>\n  <\/div>\n<\/div>\n<div class=\"terminal-cards\">\n  <div class=\"terminal-card\" data-terminal=\"evans\">\n    <div class=\"terminal-card__header\">\n      <h2 class=\"terminal-card__title\">Evans Terminal<\/h2>\n    <\/div>\n\n    <div class=\"terminal-card__content-row\">\n      <div class=\"terminal-card__section\">\n        <div class=\"terminal-card__section-header\">\n          <span class=\"terminal-card__section-label\">TSA Wait Times<\/span>\n        <\/div>\n        \n      <div class=\"terminal-card__tsa\">\n        <span class=\"terminal-card__tsa-name\">Evans<\/span>\n        <div class=\"terminal-card__tsa-badge\">\n          <span class=\"terminal-card__tsa-badge-number\">8<\/span>\n        <\/div>\n        <span class=\"terminal-card__tsa-unit\">Minutes<\/span>\n      <\/div>\n      <\/div>\n\n      <div class=\"terminal-card__section terminal-card__section--airlines\">\n        <div class=\"terminal-card__section-header\">\n          <span class=\"terminal-card__section-label\">Airlines<\/span>\n          <a href=\"\/airlines\/\" class=\"terminal-card__view-all\" target=\"_blank\">View All Airlines <i class=\"fa-light fa-arrow-right\" aria-hidden=\"true\"><\/i><\/a>\n        <\/div>\n        <div class=\"terminal-card__airlines\">\n    <span class=\"terminal-card__airline-tag\">Air Canada<\/span>\n    <span class=\"terminal-card__airline-tag\">Alaska Airlines<\/span>\n    <span class=\"terminal-card__airline-tag\">American Airlines<\/span>\n    <span class=\"terminal-card__airline-tag\">Frontier<\/span>\n    <span class=\"terminal-card__airline-tag\">JetBlue<\/span>\n    <span class=\"terminal-card__airline-tag\">Lufthansa<\/span>\n    <span class=\"terminal-card__airline-tag\">Royal Jordanian<\/span>\n    <span class=\"terminal-card__airline-tag\">Southwest<\/span>\n    <span class=\"terminal-card__airline-tag\">Sun Country Airlines<\/span>\n    <span class=\"terminal-card__airline-tag\">Turkish Airlines<\/span>\n    <span class=\"terminal-card__airline-tag\">United<\/span><\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"terminal-card__section\">\n      <div class=\"terminal-card__section-header\">\n        <span class=\"terminal-card__section-label\">Parking<\/span>\n        <a href=\"\/parking-and-transportation\/parking\/\" class=\"terminal-card__view-all\" target=\"_blank\">View All Parking <i class=\"fa-light fa-arrow-right\" aria-hidden=\"true\"><\/i><\/a>\n      <\/div>\n      <div class=\"terminal-card__parking-table\">\n    <div class=\"terminal-card__parking-row\" data-lot-id=\"19\">\n      <div class=\"terminal-card__parking-cell terminal-card__parking-cell--name\">\n        <span>Long Term<\/span>\n      <\/div>\n      <div class=\"terminal-card__parking-cell terminal-card__parking-cell--spaces\">\n        <span class=\"terminal-card__parking-spaces\"><\/span>\n      <\/div>\n      <div class=\"terminal-card__parking-cell terminal-card__parking-cell--status\">\n        <span class=\"terminal-card__parking-tag terminal-card__parking-tag--open\">\n          <i class=\"fa-light fa-circle-check\" aria-hidden=\"true\"><\/i> Open\n        <\/span>\n      <\/div>\n    <\/div>\n    <div class=\"terminal-card__parking-row\" data-lot-id=\"20\">\n      <div class=\"terminal-card__parking-cell terminal-card__parking-cell--name\">\n        <span>Short Term<\/span>\n      <\/div>\n      <div class=\"terminal-card__parking-cell terminal-card__parking-cell--spaces\">\n        <span class=\"terminal-card__parking-spaces\"><\/span>\n      <\/div>\n      <div class=\"terminal-card__parking-cell terminal-card__parking-cell--status\">\n        <span class=\"terminal-card__parking-tag terminal-card__parking-tag--open\">\n          <i class=\"fa-light fa-circle-check\" aria-hidden=\"true\"><\/i> Open\n        <\/span>\n      <\/div>\n    <\/div><\/div>\n    <\/div>\n\n    <div class=\"terminal-card__footer\">\n      <a href=\"https:\/\/maps.metroairport.com\/?poiId=742\" target=\"_blank\" class=\"terminal-card__footer-btn\">\n        <i class=\"fa-light fa-location-dot\" aria-hidden=\"true\"><\/i>\n        Parking Map\n      <\/a>\n      <a href=\"https:\/\/maps.metroairport.com\/?poiId=713\" target=\"_blank\" class=\"terminal-card__footer-btn\">\n        <i class=\"fa-light fa-location-dot\" aria-hidden=\"true\"><\/i>\n        Terminal Map\n      <\/a>\n    <\/div>\n  <\/div>\n  <div class=\"terminal-card\" data-terminal=\"mcnamara\">\n    <div class=\"terminal-card__header\">\n      <h2 class=\"terminal-card__title\">McNamara Terminal<\/h2>\n    <\/div>\n\n    <div class=\"terminal-card__content-row\">\n      <div class=\"terminal-card__section\">\n        <div class=\"terminal-card__section-header\">\n          <span class=\"terminal-card__section-label\">TSA Wait Times<\/span>\n        <\/div>\n        \n      <div class=\"terminal-card__tsa\">\n        <span class=\"terminal-card__tsa-name\">McNamara<\/span>\n        <div class=\"terminal-card__tsa-badge\">\n          <span class=\"terminal-card__tsa-badge-number\">1<\/span>\n        <\/div>\n        <span class=\"terminal-card__tsa-unit\">Minutes<\/span>\n      <\/div>\n      <\/div>\n\n      <div class=\"terminal-card__section terminal-card__section--airlines\">\n        <div class=\"terminal-card__section-header\">\n          <span class=\"terminal-card__section-label\">Airlines<\/span>\n          <a href=\"\/airlines\/\" class=\"terminal-card__view-all\" target=\"_blank\">View All Airlines <i class=\"fa-light fa-arrow-right\" aria-hidden=\"true\"><\/i><\/a>\n        <\/div>\n        <div class=\"terminal-card__airlines\">\n    <span class=\"terminal-card__airline-tag\">AeroMexico<\/span>\n    <span class=\"terminal-card__airline-tag\">Air France<\/span>\n    <span class=\"terminal-card__airline-tag\">Delta Air Lines<\/span>\n    <span class=\"terminal-card__airline-tag\">WestJet Airlines<\/span><\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"terminal-card__section\">\n      <div class=\"terminal-card__section-header\">\n        <span class=\"terminal-card__section-label\">Parking<\/span>\n        <a href=\"\/parking-and-transportation\/parking\/\" class=\"terminal-card__view-all\" target=\"_blank\">View All Parking <i class=\"fa-light fa-arrow-right\" aria-hidden=\"true\"><\/i><\/a>\n      <\/div>\n      <div class=\"terminal-card__parking-table\">\n    <div class=\"terminal-card__parking-row\" data-lot-id=\"22\">\n      <div class=\"terminal-card__parking-cell terminal-card__parking-cell--name\">\n        <span>Long Term<\/span>\n      <\/div>\n      <div class=\"terminal-card__parking-cell terminal-card__parking-cell--spaces\">\n        <span class=\"terminal-card__parking-spaces\">1,874 spaces available<\/span>\n      <\/div>\n      <div class=\"terminal-card__parking-cell terminal-card__parking-cell--status\">\n        <span class=\"terminal-card__parking-tag terminal-card__parking-tag--open\">\n          <i class=\"fa-light fa-circle-check\" aria-hidden=\"true\"><\/i> Open\n        <\/span>\n      <\/div>\n    <\/div>\n    <div class=\"terminal-card__parking-row\" data-lot-id=\"23\">\n      <div class=\"terminal-card__parking-cell terminal-card__parking-cell--name\">\n        <span>Short Term<\/span>\n      <\/div>\n      <div class=\"terminal-card__parking-cell terminal-card__parking-cell--spaces\">\n        <span class=\"terminal-card__parking-spaces\">191 spaces available<\/span>\n      <\/div>\n      <div class=\"terminal-card__parking-cell terminal-card__parking-cell--status\">\n        <span class=\"terminal-card__parking-tag terminal-card__parking-tag--open\">\n          <i class=\"fa-light fa-circle-check\" aria-hidden=\"true\"><\/i> Open\n        <\/span>\n      <\/div>\n    <\/div><\/div>\n    <\/div>\n\n    <div class=\"terminal-card__footer\">\n      <a href=\"https:\/\/maps.metroairport.com\/?poiId=741\" target=\"_blank\" class=\"terminal-card__footer-btn\">\n        <i class=\"fa-light fa-location-dot\" aria-hidden=\"true\"><\/i>\n        Parking Map\n      <\/a>\n      <a href=\"https:\/\/maps.metroairport.com\/?poiId=712\" target=\"_blank\" class=\"terminal-card__footer-btn\">\n        <i class=\"fa-light fa-location-dot\" aria-hidden=\"true\"><\/i>\n        Terminal Map\n      <\/a>\n    <\/div>\n  <\/div><\/div>\n  <\/div>\n<\/div>\n\n\n<!-- FlyFruition Terminal Cards Live Update Script -->\n<script>\n(function() {\n  var widgetId = 'flyfruition-terminal-cards-DTW-1787609163963';\n  var channels = ['dtw-wait-times', 'dtw-parking'];\n  var wsUrl = 'wss:\/\/dev-api.flyfruition.com\/';\n  var wsKey = '2QicQPH7AOM7ASWXGY4VkRiUlYMhOtW';\n  var refreshUrl = 'https:\/\/pages.fruitionqa.com\/api\/widgets\/dtw\/terminal-cards';\n  var dataUrl = 'https:\/\/pages.fruitionqa.com\/api\/widgets\/dtw\/terminal-cards\/data';\n\n  var ws = null;\n  var reconnectAttempts = 0;\n  var maxReconnectAttempts = 5;\n  var reconnectDelay = 3000;\n\n  \/\/ Tab state \u2014 persists across WebSocket-triggered refreshes\n  var activeTab = 'evans';\n\n  function applyActiveTab(container, tab) {\n    container.querySelectorAll('.tc-tab-btn').forEach(function(btn) {\n      var isActive = btn.getAttribute('data-tab') === tab;\n      btn.classList.toggle('tc-tab-btn--active', isActive);\n      btn.classList.toggle('tc-tab-btn--inactive', !isActive);\n    });\n    container.querySelectorAll('.terminal-card[data-terminal]').forEach(function(card) {\n      card.classList.toggle('tc-active', card.getAttribute('data-terminal') === tab);\n    });\n  }\n\n  function connect() {\n    if (ws && ws.readyState === WebSocket.OPEN) return;\n\n    try {\n      ws = new WebSocket(wsUrl + '?publicKey=' + wsKey);\n\n      ws.onopen = function() {\n        console.log('[FlyFruition TerminalCards] WebSocket connected');\n        reconnectAttempts = 0;\n        \/\/ Subscribe to both channels\n        for (var i = 0; i < channels.length; i++) {\n          ws.send(JSON.stringify({ action: 'joinchannel', channel: channels[i] }));\n        }\n      };\n\n      ws.onmessage = function(event) {\n        try {\n          var data = JSON.parse(event.data);\n          var isRelevant = false;\n          for (var i = 0; i < channels.length; i++) {\n            if (data.channel === channels[i]) { isRelevant = true; break; }\n          }\n          if (isRelevant || data.type === 'update') {\n            console.log('[FlyFruition TerminalCards] Update received, refreshing...');\n            refreshWidget();\n          }\n        } catch (e) {\n          \/\/ Non-JSON message (heartbeat)\n        }\n      };\n\n      ws.onclose = function() {\n        console.log('[FlyFruition TerminalCards] WebSocket disconnected');\n        scheduleReconnect();\n      };\n\n      ws.onerror = function(error) {\n        console.error('[FlyFruition TerminalCards] WebSocket error:', error);\n      };\n    } catch (error) {\n      console.error('[FlyFruition TerminalCards] Failed to connect:', error);\n      scheduleReconnect();\n    }\n  }\n\n  function scheduleReconnect() {\n    if (reconnectAttempts < maxReconnectAttempts) {\n      reconnectAttempts++;\n      setTimeout(connect, reconnectDelay);\n    }\n  }\n\n  function refreshWidget() {\n    var container = document.getElementById(widgetId);\n    if (!container) return Promise.reject(new Error('Container not found'));\n\n    \/\/ Try JSON data update first for better performance\n    console.log('[FlyFruition TerminalCards] Fetching fresh JSON data from:', dataUrl);\n    return fetch(dataUrl)\n      .then(function(response) {\n        if (!response.ok) throw new Error('Failed to fetch JSON data');\n        return response.json();\n      })\n      .then(function(data) {\n        console.log('[FlyFruition TerminalCards] Fresh JSON data received, updating widget');\n        updateWidgetWithData(container, data);\n      })\n      .catch(function(error) {\n        console.error('[FlyFruition TerminalCards] Failed to fetch JSON data, falling back to HTML:', error);\n        return refreshWidgetWithHtml(container);\n      });\n  }\n\n  function refreshWidgetWithHtml(container) {\n    console.log('[FlyFruition TerminalCards] Fetching fresh HTML from:', refreshUrl);\n    return fetch(refreshUrl)\n      .then(function(response) {\n        if (!response.ok) throw new Error('Failed to fetch HTML');\n        return response.text();\n      })\n      .then(function(html) {\n        console.log('[FlyFruition TerminalCards] Fresh HTML received, updating widget');\n        var parser = new DOMParser();\n        var doc = parser.parseFromString(html, 'text\/html');\n        var newContent = doc.querySelector('.flyfruition-widget__content');\n        var currentContent = container.querySelector('.flyfruition-widget__content');\n        if (newContent && currentContent) {\n          currentContent.innerHTML = newContent.innerHTML;\n          \/\/ Restore active tab after content replacement\n          applyActiveTab(container, activeTab);\n        }\n      })\n      .catch(function(error) {\n        console.error('[FlyFruition TerminalCards] Failed to refresh with HTML:', error);\n        throw error;\n      });\n  }\n\n  function getLowestWaitTimeFromCheckpoint(checkpoint) {\n    if (!checkpoint.lanes || checkpoint.lanes.length === 0) return null;\n\n    var times = [];\n    for (var i = 0; i < checkpoint.lanes.length; i++) {\n      var lane = checkpoint.lanes[i];\n      if (lane.wait_time && !lane.closed) {\n        times.push(lane.wait_time);\n      }\n    }\n\n    if (times.length === 0) return null;\n\n    \/\/ Sort times and return the lowest\n    times.sort(function(a, b) {\n      var aNum = parseInt(a, 10);\n      var bNum = parseInt(b, 10);\n      return aNum - bNum;\n    });\n\n    return times[0];\n  }\n\n  function formatAvailableSpaces(lot) {\n    var spots = lot.available_spots;\n    if (spots === null || spots === undefined || typeof spots !== 'number' || !isFinite(spots)) {\n      return null;\n    }\n    var count = Math.max(0, Math.round(spots));\n    return count.toLocaleString('en-US') + ' ' + (count === 1 ? 'space' : 'spaces') + ' available';\n  }\n\n  function updateParkingSpaces(container, parkingLots) {\n    if (!parkingLots || !parkingLots.length) return;\n    for (var i = 0; i < parkingLots.length; i++) {\n      var lot = parkingLots[i];\n      var row = container.querySelector('.terminal-card__parking-row[data-lot-id=\"' + lot.id + '\"]');\n      if (!row) continue;\n      var spacesEl = row.querySelector('.terminal-card__parking-spaces');\n      if (!spacesEl) continue;\n      var label = formatAvailableSpaces(lot);\n      spacesEl.textContent = label || '';\n    }\n  }\n\n  function updateWidgetWithData(container, data) {\n    \/\/ Parking spaces update independently of TSA \u2014 a parking-only push should\n    \/\/ still refresh capacity even when checkpoint data is absent.\n    if (data && data.parkingLots) {\n      updateParkingSpaces(container, data.parkingLots);\n    }\n\n    if (!data || !data.checkpoints) {\n      console.warn('[FlyFruition TerminalCards] No checkpoint data in response');\n      return refreshWidgetWithHtml(container);\n    }\n\n    console.log('[FlyFruition TerminalCards] Updating widget with data:', data);\n\n    \/\/ Update TSA wait times for both terminals\n    var terminals = {\n      evans: {\n        match: function(cp) {\n          var title = cp.title.toLowerCase();\n          var loc = (cp.location || '').toLowerCase();\n          return title === 'evans' || loc === 'evans';\n        }\n      },\n      mcnamara: {\n        match: function(cp) {\n          var title = cp.title.toLowerCase();\n          var loc = (cp.location || '').toLowerCase();\n          return title === 'mcnamara' || loc === 'mcnamara';\n        }\n      }\n    };\n\n    var updated = false;\n    for (var terminalKey in terminals) {\n      var terminal = terminals[terminalKey];\n      var matchedCheckpoints = data.checkpoints.filter(terminal.match);\n\n      if (matchedCheckpoints.length > 0) {\n        \/\/ Find lowest wait time\n        var lowestMinutes = Infinity;\n        var lowestCheckpointName = '';\n\n        for (var i = 0; i < matchedCheckpoints.length; i++) {\n          var cp = matchedCheckpoints[i];\n          var waitTime = getLowestWaitTimeFromCheckpoint(cp);\n          if (waitTime) {\n            var mins = parseInt(waitTime, 10);\n            if (mins < lowestMinutes) {\n              lowestMinutes = mins;\n              lowestCheckpointName = cp.title || terminalKey;\n            }\n          }\n        }\n\n        if (lowestMinutes !== Infinity) {\n          console.log('[FlyFruition TerminalCards] Updating ' + terminalKey + ' to ' + lowestMinutes + ' minutes');\n          \/\/ Find the terminal card and update TSA info\n          var cards = container.querySelectorAll('.terminal-card');\n          for (var j = 0; j < cards.length; j++) {\n            var card = cards[j];\n            var cardTitle = card.querySelector('.terminal-card__title');\n            if (cardTitle && cardTitle.textContent.toLowerCase().includes(terminalKey)) {\n              \/\/ Update checkpoint name\n              var nameEl = card.querySelector('.terminal-card__tsa-name');\n              if (nameEl) {\n                nameEl.textContent = lowestCheckpointName;\n              }\n              \/\/ Update wait time number\n              var badgeNumber = card.querySelector('.terminal-card__tsa-badge-number');\n              if (badgeNumber) {\n                badgeNumber.textContent = String(lowestMinutes);\n                updated = true;\n              }\n            }\n          }\n        }\n      }\n    }\n\n    if (updated) {\n      console.log('[FlyFruition TerminalCards] TSA data updated successfully');\n    } else {\n      console.warn('[FlyFruition TerminalCards] Could not update TSA data, falling back to HTML');\n      return refreshWidgetWithHtml(container);\n    }\n  }\n\n  function initTabs(container) {\n    \/\/ Event delegation \u2014 survives innerHTML replacement\n    container.addEventListener('click', function(e) {\n      var btn = e.target.closest && e.target.closest('.tc-tab-btn');\n      if (!btn) return;\n      activeTab = btn.getAttribute('data-tab');\n      applyActiveTab(container, activeTab);\n    });\n    applyActiveTab(container, activeTab);\n  }\n\n  function initialize() {\n    var container = document.getElementById(widgetId);\n    if (container) initTabs(container);\n    console.log('[FlyFruition TerminalCards] Fetching fresh data before connecting...');\n    \/\/ First, refresh the widget with fresh data from the endpoint\n    refreshWidget()\n      .then(function() {\n        console.log('[FlyFruition TerminalCards] Fresh data loaded, now connecting to WebSocket...');\n        \/\/ Then connect to WebSocket for live updates\n        connect();\n      })\n      .catch(function(error) {\n        console.error('[FlyFruition TerminalCards] Failed to fetch initial data, connecting to WebSocket anyway...');\n        \/\/ Even if initial fetch fails, still connect to WebSocket\n        connect();\n      });\n  }\n\n  \/\/ Initialize when DOM is ready\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', initialize);\n  } else {\n    initialize();\n  }\n\n  window.addEventListener('beforeunload', function() {\n    if (ws) { ws.close(); }\n  });\n})();\n<\/script>            <\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n\n\n<div class=\"blockGlobal paddingTopSM paddingBottomLG cardTabsIconFluid\" style=\"background-color:#fff;\">\n\t\t<div class=\"container\">\n\t\t\n\n<!--Option 1-->\n<div class=\"grid wysiwyg wysiwygOption1 intro\">\n\t<div class=\"col-sm-8\">\n\n\t\t\t<div class=\"maincopy light\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<h2><span class=\"titleBlue\">Plan Ahead<\/span><br \/>\nfor a Smoother Day<\/h2>\n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\n\t\t\t\n\t\t\t\n\t<\/div>\n<\/div>\n\n\n<!--Option 2-->\n\n\n<!--Option 3-->\n\n\n\t\t<!-- Render Tabs Component -->\n\t\t<div class=\"tabsWrap\" data-tab-instance=\"tab_6a8cc198c7d60\">\n\t\t\t\n\t\t<!-- Desktop Tabs  -->\n\t\t\t\t\t<div class=\"tabNavWrapper\">\n\t\t\t\t<button class=\"scroll-btn btn-prev\" aria-label=\"Previous\"><i class=\"fa-light fa-angle-left\"><\/i><\/button>\n\t\t\t\t<div class=\"tabWrapper\">\n\n\t\t\t\t\t\t\t<button class=\"tabLink active\"\n\t\t\t\t\tonclick=\"openTabComponent(event, 'departing')\"\n\t\t\t\t\tid=\"openDefault\"\t\t\t\t\tdata-tab-id=\"departing\">\n\t\t\t\t\t<span class=\"fa-classic fa-thin fa-plane iconLeft\"><\/span>Departing\t\t\t\t<\/button>\n\t\t\t\t\t\t\t<button class=\"tabLink\"\n\t\t\t\t\tonclick=\"openTabComponent(event, 'arriving')\"\n\t\t\t\t\t\t\t\t\t\tdata-tab-id=\"arriving\">\n\t\t\t\t\t<span class=\"fa-classic fa-thin fa-plane iconLeft\"><\/span>Arriving\t\t\t\t<\/button>\n\t\t\t\t\t\t\t<button class=\"tabLink\"\n\t\t\t\t\tonclick=\"openTabComponent(event, 'connecting')\"\n\t\t\t\t\t\t\t\t\t\tdata-tab-id=\"connecting\">\n\t\t\t\t\t<span class=\"fa-classic fa-thin fa-plane iconLeft\"><\/span>Connecting\t\t\t\t<\/button>\n\t\t\t\t\t\t\t<button class=\"tabLink\"\n\t\t\t\t\tonclick=\"openTabComponent(event, 'visiting')\"\n\t\t\t\t\t\t\t\t\t\tdata-tab-id=\"visiting\">\n\t\t\t\t\t<span class=\"fa-classic fa-thin fa-plane iconLeft\"><\/span>Visiting\t\t\t\t<\/button>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<button class=\"scroll-btn btn-next\" aria-label=\"Next\"><i class=\"fa-light fa-angle-right\"><\/i><\/button>\n\t\t\t<\/div>\n\t\t\n\t\t\t\t\t<div id=\"departing\" data-tab-panel=\"departing\" class=\"tabContent tabContentWrapper\" style=\"display: block;\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"grid\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<!-- Single centered column without image -->\n\t\t\t\t\t\t\t\t<div class=\"col-12\">\n\t\t\t\t\t\t\t\t\t<div class=\"tabContentCopy maincopy\">\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t<div class=\"grid\">\n\t\t\t\t\t\t\t\t<div class=\"col-6 col-md-3\">\n\t\t\t\t\t\t\n<div class=\"cardIcon boxed center\">\n\t\n<div class=\"iconWrapper iconGhost large\">\n\t<span class=\"fa-kit fa-custom fa-plane\"><\/span>\n<\/div>\n\t<h2 class=\"h4\">Departures<\/h2>\n\t\t\t\t\n<a class=\"links medium light \" target=\"_self\" rel=\"noopener noreferrer\" href=\"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/departures\/\">\n\n\t\n\t<span class=\"linksTitle\">Learn More<\/span>\n    \n\t\t<span class=\"fa-light fa-arrow-right iconRight\"><\/span>\n\t<\/a>\n\t\t<a class=\"linkOverlay\" href=\"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/departures\/\" target=\"_self\" aria-label=\"Departures\"><\/a>\n\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"col-6 col-md-3\">\n\t\t\t\t\t\t\n<div class=\"cardIcon boxed center\">\n\t\n<div class=\"iconWrapper iconGhost large\">\n\t<span class=\"fa-kit fa-custom fa-security\"><\/span>\n<\/div>\n\t<h2 class=\"h4\">Security Screening<\/h2>\n\t\t\t\t\n<a class=\"links medium light \" target=\"_self\" rel=\"noopener noreferrer\" href=\"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/security\/security-screening\/\">\n\n\t\n\t<span class=\"linksTitle\">Learn More<\/span>\n    \n\t\t<span class=\"fa-light fa-arrow-right iconRight\"><\/span>\n\t<\/a>\n\t\t<a class=\"linkOverlay\" href=\"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/security\/security-screening\/\" target=\"_self\" aria-label=\"Security Screening\"><\/a>\n\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"col-6 col-md-3\">\n\t\t\t\t\t\t\n<div class=\"cardIcon boxed center\">\n\t\n<div class=\"iconWrapper iconGhost large\">\n\t<span class=\"fa-kit fa-custom fa-parking\"><\/span>\n<\/div>\n\t<h2 class=\"h4\">Transportation<\/h2>\n\t\t\t\t\n<a class=\"links medium light \" target=\"_self\" rel=\"noopener noreferrer\" href=\"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/parking-and-transportation\/\">\n\n\t\n\t<span class=\"linksTitle\">Learn More<\/span>\n    \n\t\t<span class=\"fa-light fa-arrow-right iconRight\"><\/span>\n\t<\/a>\n\t\t<a class=\"linkOverlay\" href=\"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/parking-and-transportation\/\" target=\"_self\" aria-label=\"Transportation\"><\/a>\n\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"col-6 col-md-3\">\n\t\t\t\t\t\t\n<div class=\"cardIcon boxed center\">\n\t\n<div class=\"iconWrapper iconGhost large\">\n\t<span class=\"fa-kit fa-custom fa-wheelchair\"><\/span>\n<\/div>\n\t<h2 class=\"h4\">Accessibility<\/h2>\n\t\t\t\t\n<a class=\"links medium light \" target=\"_self\" rel=\"noopener noreferrer\" href=\"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/accessibility-services\/\">\n\n\t\n\t<span class=\"linksTitle\">Learn More<\/span>\n    \n\t\t<span class=\"fa-light fa-arrow-right iconRight\"><\/span>\n\t<\/a>\n\t\t<a class=\"linkOverlay\" href=\"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/accessibility-services\/\" target=\"_self\" aria-label=\"Accessibility\"><\/a>\n\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\n\t\t\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<div id=\"arriving\" data-tab-panel=\"arriving\" class=\"tabContent tabContentWrapper\" style=\"display: none;\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"grid\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<!-- Single centered column without image -->\n\t\t\t\t\t\t\t\t<div class=\"col-12\">\n\t\t\t\t\t\t\t\t\t<div class=\"tabContentCopy maincopy\">\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t<div class=\"grid\">\n\t\t\t\t\t\t\t\t<div class=\"col-6 col-md-3\">\n\t\t\t\t\t\t\n<div class=\"cardIcon boxed center\">\n\t\n<div class=\"iconWrapper iconGhost large\">\n\t<span class=\"fa-kit fa-custom fa-plane-2\"><\/span>\n<\/div>\n\t<h2 class=\"h4\">Arrivals<\/h2>\n\t\t\t\t\n<a class=\"links medium light \" target=\"_self\" rel=\"noopener noreferrer\" href=\"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/arrivals\/\">\n\n\t\n\t<span class=\"linksTitle\">Learn More<\/span>\n    \n\t\t<span class=\"fa-light fa-arrow-right iconRight\"><\/span>\n\t<\/a>\n\t\t<a class=\"linkOverlay\" href=\"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/arrivals\/\" target=\"_self\" aria-label=\"Arrivals\"><\/a>\n\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"col-6 col-md-3\">\n\t\t\t\t\t\t\n<div class=\"cardIcon boxed center\">\n\t\n<div class=\"iconWrapper iconGhost large\">\n\t<span class=\"fa-kit fa-custom fa-bag\"><\/span>\n<\/div>\n\t<h2 class=\"h4\">Baggage<\/h2>\n\t\t\t\t\n<a class=\"links medium light \" target=\"_self\" rel=\"noopener noreferrer\" href=\"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/baggage\/\">\n\n\t\n\t<span class=\"linksTitle\">Learn More<\/span>\n    \n\t\t<span class=\"fa-light fa-arrow-right iconRight\"><\/span>\n\t<\/a>\n\t\t<a class=\"linkOverlay\" href=\"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/baggage\/\" target=\"_self\" aria-label=\"Baggage\"><\/a>\n\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"col-6 col-md-3\">\n\t\t\t\t\t\t\n<div class=\"cardIcon boxed center\">\n\t\n<div class=\"iconWrapper iconGhost large\">\n\t<span class=\"fa-kit fa-custom fa-parking\"><\/span>\n<\/div>\n\t<h2 class=\"h4\">Parking<\/h2>\n\t\t\t\t\n<a class=\"links medium light \" target=\"_self\" rel=\"noopener noreferrer\" href=\"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/parking-and-transportation\/parking\/\">\n\n\t\n\t<span class=\"linksTitle\">Learn More<\/span>\n    \n\t\t<span class=\"fa-light fa-arrow-right iconRight\"><\/span>\n\t<\/a>\n\t\t<a class=\"linkOverlay\" href=\"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/parking-and-transportation\/parking\/\" target=\"_self\" aria-label=\"Parking\"><\/a>\n\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"col-6 col-md-3\">\n\t\t\t\t\t\t\n<div class=\"cardIcon boxed center\">\n\t\n<div class=\"iconWrapper iconGhost large\">\n\t<span class=\"fa-kit fa-custom fa-wheelchair\"><\/span>\n<\/div>\n\t<h2 class=\"h4\">Wheelchairs<\/h2>\n\t\t\t\t\n<a class=\"links medium light \" target=\"_self\" rel=\"noopener noreferrer\" href=\"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/services\/wheelchairs\/\">\n\n\t\n\t<span class=\"linksTitle\">Learn More<\/span>\n    \n\t\t<span class=\"fa-light fa-arrow-right iconRight\"><\/span>\n\t<\/a>\n\t\t<a class=\"linkOverlay\" href=\"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/services\/wheelchairs\/\" target=\"_self\" aria-label=\"Wheelchairs\"><\/a>\n\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\n\t\t\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<div id=\"connecting\" data-tab-panel=\"connecting\" class=\"tabContent tabContentWrapper\" style=\"display: none;\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"grid\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<!-- Single centered column without image -->\n\t\t\t\t\t\t\t\t<div class=\"col-12\">\n\t\t\t\t\t\t\t\t\t<div class=\"tabContentCopy maincopy\">\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t<div class=\"grid\">\n\t\t\t\t\t\t\t\t<div class=\"col-6 col-md-3\">\n\t\t\t\t\t\t\n<div class=\"cardIcon boxed center\">\n\t\n<div class=\"iconWrapper iconGhost large\">\n\t<span class=\"fa-kit fa-custom fa-navigation\"><\/span>\n<\/div>\n\t<h2 class=\"h4\">Connecting<\/h2>\n\t\t\t\t\n<a class=\"links medium light \" target=\"_self\" rel=\"noopener noreferrer\" href=\"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/connecting\/\">\n\n\t\n\t<span class=\"linksTitle\">Learn More<\/span>\n    \n\t\t<span class=\"fa-light fa-arrow-right iconRight\"><\/span>\n\t<\/a>\n\t\t<a class=\"linkOverlay\" href=\"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/connecting\/\" target=\"_self\" aria-label=\"Connecting\"><\/a>\n\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"col-6 col-md-3\">\n\t\t\t\t\t\t\n<div class=\"cardIcon boxed center\">\n\t\n<div class=\"iconWrapper iconGhost large\">\n\t<span class=\"fa-kit fa-custom fa-security\"><\/span>\n<\/div>\n\t<h2 class=\"h4\">Security Screening<\/h2>\n\t\t\t\t\n<a class=\"links medium light \" target=\"_self\" rel=\"noopener noreferrer\" href=\"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/security\/security-screening\/\">\n\n\t\n\t<span class=\"linksTitle\">Learn More<\/span>\n    \n\t\t<span class=\"fa-light fa-arrow-right iconRight\"><\/span>\n\t<\/a>\n\t\t<a class=\"linkOverlay\" href=\"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/security\/security-screening\/\" target=\"_self\" aria-label=\"Security Screening\"><\/a>\n\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"col-6 col-md-3\">\n\t\t\t\t\t\t\n<div class=\"cardIcon boxed center\">\n\t\n<div class=\"iconWrapper iconGhost large\">\n\t<span class=\"fa-kit fa-custom fa-dine\"><\/span>\n<\/div>\n\t<h2 class=\"h4\">Dine and Shop<\/h2>\n\t\t\t\t\n<a class=\"links medium light \" target=\"_self\" rel=\"noopener noreferrer\" href=\"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/dine-and-shop\/\">\n\n\t\n\t<span class=\"linksTitle\">Learn More<\/span>\n    \n\t\t<span class=\"fa-light fa-arrow-right iconRight\"><\/span>\n\t<\/a>\n\t\t<a class=\"linkOverlay\" href=\"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/dine-and-shop\/\" target=\"_self\" aria-label=\"Dine and Shop\"><\/a>\n\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"col-6 col-md-3\">\n\t\t\t\t\t\t\n<div class=\"cardIcon boxed center\">\n\t\n<div class=\"iconWrapper iconGhost large\">\n\t<span class=\"fa-kit fa-custom fa-wifi\"><\/span>\n<\/div>\n\t<h2 class=\"h4\">Wi-Fi and Charging<\/h2>\n\t\t\t\t\n<a class=\"links medium light \" target=\"_self\" rel=\"noopener noreferrer\" href=\"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/services\/wifi-and-charging\/\">\n\n\t\n\t<span class=\"linksTitle\">Learn More<\/span>\n    \n\t\t<span class=\"fa-light fa-arrow-right iconRight\"><\/span>\n\t<\/a>\n\t\t<a class=\"linkOverlay\" href=\"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/services\/wifi-and-charging\/\" target=\"_self\" aria-label=\"Wi-Fi and Charging\"><\/a>\n\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"col-6 col-md-3\">\n\t\t\t\t\t\t\n<div class=\"cardIcon boxed center\">\n\t\n<div class=\"iconWrapper iconGhost large\">\n\t<span class=\"fa-kit fa-custom fa-security-camera\"><\/span>\n<\/div>\n\t<h2 class=\"h4\">Lost and Found<\/h2>\n\t\t\t\t\n<a class=\"links medium light \" target=\"_self\" rel=\"noopener noreferrer\" href=\"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/services\/lost-and-found\/\">\n\n\t\n\t<span class=\"linksTitle\">Learn More<\/span>\n    \n\t\t<span class=\"fa-light fa-arrow-right iconRight\"><\/span>\n\t<\/a>\n\t\t<a class=\"linkOverlay\" href=\"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/services\/lost-and-found\/\" target=\"_self\" aria-label=\"Lost and Found\"><\/a>\n\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\n\t\t\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<div id=\"visiting\" data-tab-panel=\"visiting\" class=\"tabContent tabContentWrapper\" style=\"display: none;\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"grid\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<!-- Single centered column without image -->\n\t\t\t\t\t\t\t\t<div class=\"col-12\">\n\t\t\t\t\t\t\t\t\t<div class=\"tabContentCopy maincopy\">\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t<div class=\"grid\">\n\t\t\t\t\t\t\t\t<div class=\"col-6 col-md-3\">\n\t\t\t\t\t\t\n<div class=\"cardIcon boxed center\">\n\t\n<div class=\"iconWrapper iconGhost large\">\n\t<span class=\"fa-kit fa-custom fa-dine\"><\/span>\n<\/div>\n\t<h2 class=\"h4\">Dine and Shop<\/h2>\n\t\t\t\t\n<a class=\"links medium light \" target=\"_self\" rel=\"noopener noreferrer\" href=\"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/dine-and-shop\/\">\n\n\t\n\t<span class=\"linksTitle\">Learn More<\/span>\n    \n\t\t<span class=\"fa-light fa-arrow-right iconRight\"><\/span>\n\t<\/a>\n\t\t<a class=\"linkOverlay\" href=\"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/dine-and-shop\/\" target=\"_self\" aria-label=\"Dine and Shop\"><\/a>\n\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"col-6 col-md-3\">\n\t\t\t\t\t\t\n<div class=\"cardIcon boxed center\">\n\t\n<div class=\"iconWrapper iconGhost large\">\n\t<span class=\"fa-kit fa-custom fa-ticket\"><\/span>\n<\/div>\n\t<h2 class=\"h4\">Destination Pass<\/h2>\n\t\t\t\t\n<a class=\"links medium light \" target=\"_self\" rel=\"noopener noreferrer\" href=\"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/services\/destination-pass\/\">\n\n\t\n\t<span class=\"linksTitle\">Learn More<\/span>\n    \n\t\t<span class=\"fa-light fa-arrow-right iconRight\"><\/span>\n\t<\/a>\n\t\t<a class=\"linkOverlay\" href=\"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/services\/destination-pass\/\" target=\"_self\" aria-label=\"Destination Pass\"><\/a>\n\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"col-6 col-md-3\">\n\t\t\t\t\t\t\n<div class=\"cardIcon boxed center\">\n\t\n<div class=\"iconWrapper iconGhost large\">\n\t<span class=\"fa-kit fa-custom fa-parking\"><\/span>\n<\/div>\n\t<h2 class=\"h4\">Parking<\/h2>\n\t\t\t\t\n<a class=\"links medium light \" target=\"_self\" rel=\"noopener noreferrer\" href=\"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/parking-and-transportation\/parking\/\">\n\n\t\n\t<span class=\"linksTitle\">Learn More<\/span>\n    \n\t\t<span class=\"fa-light fa-arrow-right iconRight\"><\/span>\n\t<\/a>\n\t\t<a class=\"linkOverlay\" href=\"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/parking-and-transportation\/parking\/\" target=\"_self\" aria-label=\"Parking\"><\/a>\n\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"col-6 col-md-3\">\n\t\t\t\t\t\t\n<div class=\"cardIcon boxed center\">\n\t\n<div class=\"iconWrapper iconGhost large\">\n\t<span class=\"fa-kit fa-custom fa-location\"><\/span>\n<\/div>\n\t<h2 class=\"h4\">Services<\/h2>\n\t\t\t\t\n<a class=\"links medium light \" target=\"_self\" rel=\"noopener noreferrer\" href=\"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/services\/\">\n\n\t\n\t<span class=\"linksTitle\">Learn More<\/span>\n    \n\t\t<span class=\"fa-light fa-arrow-right iconRight\"><\/span>\n\t<\/a>\n\t\t<a class=\"linkOverlay\" href=\"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/services\/\" target=\"_self\" aria-label=\"Services\"><\/a>\n\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"col-6 col-md-3\">\n\t\t\t\t\t\t\n<div class=\"cardIcon boxed center\">\n\t\n<div class=\"iconWrapper iconGhost large\">\n\t<span class=\"fa-kit fa-custom fa-security-camera\"><\/span>\n<\/div>\n\t<h2 class=\"h4\">Lost and Found<\/h2>\n\t\t\t\t\n<a class=\"links medium light \" target=\"_self\" rel=\"noopener noreferrer\" href=\"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/services\/lost-and-found\/\">\n\n\t\n\t<span class=\"linksTitle\">Learn More<\/span>\n    \n\t\t<span class=\"fa-light fa-arrow-right iconRight\"><\/span>\n\t<\/a>\n\t\t<a class=\"linkOverlay\" href=\"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/services\/lost-and-found\/\" target=\"_self\" aria-label=\"Lost and Found\"><\/a>\n\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"col-6 col-md-3\">\n\t\t\t\t\t\t\n<div class=\"cardIcon boxed center\">\n\t\n<div class=\"iconWrapper iconGhost large\">\n\t<span class=\"fa-classic fa-light fa-carpool\"><\/span>\n<\/div>\n\t<h2 class=\"h4\">Picking Up and Dropping Off<\/h2>\n\t\t\t\t\n<a class=\"links medium light \" target=\"_self\" rel=\"noopener noreferrer\" href=\"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/parking-and-transportation\/picking-up-and-dropping-off\/\">\n\n\t\n\t<span class=\"linksTitle\">Learn More<\/span>\n    \n\t\t<span class=\"fa-light fa-arrow-right iconRight\"><\/span>\n\t<\/a>\n\t\t<a class=\"linkOverlay\" href=\"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/parking-and-transportation\/picking-up-and-dropping-off\/\" target=\"_self\" aria-label=\"Picking Up and Dropping Off\"><\/a>\n\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\n\t\t\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\n\t\n\t<!-- URL Hash Navigation Script -->\n\t<script type=\"text\/javascript\">\n\t\t\/* <![CDATA[ *\/\n\t\tconsole.log('[Tab Hash Nav] Script loaded for instance: tab_6a8cc198c7d60');\n\t\t(function() {\n\t\t\t'use strict';\n\t\t\tvar instanceId = 'tab_6a8cc198c7d60';\n\n\t\t\tfunction activateTabByHash() {\n\t\t\t\tvar hash = window.location.hash.substring(1); \/\/ Remove the # character\n\t\t\t\tconsole.log('[Tab Hash Nav] Instance:', instanceId, 'Hash:', hash);\n\t\t\t\tif (!hash) {\n\t\t\t\t\tconsole.log('[Tab Hash Nav] No hash found, skipping');\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tvar tabsContainer = document.querySelector('.tabsWrap[data-tab-instance=\"' + instanceId + '\"]');\n\t\t\t\tconsole.log('[Tab Hash Nav] Container found:', !!tabsContainer);\n\t\t\t\tif (!tabsContainer) return false;\n\n\t\t\t\t\/\/ Check if this hash corresponds to a tab in this instance\n\t\t\t\tvar targetTab = tabsContainer.querySelector('#' + CSS.escape(hash));\n\t\t\t\tconsole.log('[Tab Hash Nav] Target tab found:', !!targetTab, 'Is tabContent:', targetTab ? targetTab.classList.contains('tabContent') : false);\n\t\t\t\tif (!targetTab || !targetTab.classList.contains('tabContent')) {\n\t\t\t\t\tconsole.log('[Tab Hash Nav] Tab not found in this instance, skipping');\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tconsole.log('[Tab Hash Nav] Activating tab:', hash);\n\n\t\t\t\t\/\/ Hide all tab contents\n\t\t\t\tvar allTabs = tabsContainer.querySelectorAll('.tabContent');\n\t\t\t\tallTabs.forEach(function(content) {\n\t\t\t\t\tcontent.style.display = 'none';\n\t\t\t\t});\n\n\t\t\t\t\/\/ Remove active class from all buttons\n\t\t\t\tvar allButtons = tabsContainer.querySelectorAll('.tabLink');\n\t\t\t\tallButtons.forEach(function(button) {\n\t\t\t\t\tbutton.classList.remove('active');\n\t\t\t\t});\n\n\t\t\t\t\/\/ Show the target tab\n\t\t\t\ttargetTab.style.display = 'block';\n\n\t\t\t\t\/\/ Add active class to corresponding button\n\t\t\t\tvar targetButton = tabsContainer.querySelector('[data-tab-id=\"' + hash + '\"]');\n\t\t\t\tif (targetButton) {\n\t\t\t\t\ttargetButton.classList.add('active');\n\t\t\t\t}\n\n\t\t\t\t\/\/ Update dropdown if mobile dropdown is enabled\n\t\t\t\tvar selectElement = tabsContainer.querySelector('.tabsDropdown select');\n\t\t\t\tif (selectElement) {\n\t\t\t\t\tselectElement.value = hash;\n\t\t\t\t\tvar selectId = selectElement.id;\n\t\t\t\t\t\/\/ Update Choices.js if it exists\n\t\t\t\t\tif (typeof window[selectId] !== 'undefined') {\n\t\t\t\t\t\tif (window[selectId]) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\twindow[selectId].setChoiceByValue(hash);\n\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\/\/ Choices.js not ready or doesn't support this method\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t\/\/ Reinitialize Slick sliders in the newly visible tab\n\t\t\t\tif (typeof jQuery !== 'undefined') {\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\tvar slickSliders = targetTab.querySelectorAll('.slick-slider');\n\t\t\t\t\t\tslickSliders.forEach(function(slider) {\n\t\t\t\t\t\t\tvar $slider = jQuery(slider);\n\t\t\t\t\t\t\tif ($slider.hasClass('slick-initialized')) {\n\t\t\t\t\t\t\t\t$slider.slick('setPosition');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}, 50);\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t\/\/ Activate tab on page load if hash is present\n\t\t\tif (document.readyState === 'loading') {\n\t\t\t\tdocument.addEventListener('DOMContentLoaded', function() {\n\t\t\t\t\tsetTimeout(activateTabByHash, 100);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tsetTimeout(activateTabByHash, 100);\n\t\t\t}\n\n\t\t\t\/\/ Listen for hash changes (e.g., browser back\/forward buttons)\n\t\t\twindow.addEventListener('hashchange', activateTabByHash);\n\t\t})();\n\t\t\/* ]]> *\/\n\t<\/script>\n<\/div>\n\t<\/div>\n<\/div>\n\n\n<div class=\"blockGlobal blueDarkblueDarkMedium paddingTopLG paddingBottomLG cardImageFluid topLeftRadius topRightRadius\">\n\t\t<div class=\"container\">\n\t\t<div class=\"cardImagelWrap dark\">\n\t\t\t\n\n<!--Option 1-->\n\n\n<!--Option 2-->\n\n\n<!--Option 3-->\n<div class=\"grid wysiwyg wysiwygOption3 intro\">\n\t<div class=\"col-sm-6 mediaLeft\">\n\t\t<div class=\"maincopy dark\">\n\t\t\t\t\t\t\t<h2 class=\"h2 titleBlue\">What\u2019s Happening\u2028at Detroit Metro Airport<\/h2>\n\t\t\t\t\t<\/div>\n\t<\/div>\n\t<div class=\"col-sm-6 mediaRight\">\n\t\t\t<div class=\"maincopy dark\">\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\n\t\t\t\t<\/div>\n<\/div>\n\n\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"cardImageSlider\" data-items-to-show=\"3\">\n\t\t\t\n\t\t\t\t\t\t\t\t<div class=\"col-grid  \">\n\t\t\t\t\t\t\n<div class=\"cardImage contained\">\n\t<div class=\"imageZoomWrap\" style=\"aspect-ratio: 16 \/ 9;\">\n<div class=\"primaryImageWrap\">\n\n\t\n\t\n\t<img decoding=\"async\" src=\"https:\/\/wcaa.preprod.fruitionqa.com\/wp-content\/uploads\/2025\/12\/homepage-08.webp\" \n\t\talt=\"\" \n\t\tclass=\"aspectRatio primaryImage\" \n\t\tstyle=\"aspect-ratio: 16 \/ 9;\" \/>\n\n\t\n\t\n\t\n<\/div>\n\n\n<!-- This style is only needed for the first example with aspectRatio -->\n<style>\n\t.aspectRatio:not([style*=\"aspect-ratio\"]) {\n\t\taspect-ratio: 21 \/ 5;\n\t}\n<\/style>\n<\/div>            \n\t<div class=\"cardImageBody\">\n\t\t<h2 class=\"h4\">Announcement<\/h2>\n\t\t<p>Lorem ipsum dolor sit amet consectetur. Ipsum maecenas dolor eu proin iaculis vitae in sed. Amet nullam molestie integer leo nisi. Natoque a massa in dictumst cursus lectus ligula consectetur.\u00a0 maecenas nisi ut auctor malesuada sed.<\/p>\n\t\t\t\t\t\n<a class=\"links medium light \" target=\"_self\" rel=\"noopener noreferrer\"  href=\"https:\/\/wcaa.preprod.fruitionqa.com\/headline_posts\/news-test-page\/\">\n\n\t\n\t<span class=\"linksTitle\">View Details<\/span>\n    \n\t\t<span class=\"fa-light fa-arrow-right iconRight\"><\/span>\n\t<\/a>\n\t\t\t<\/div>\n\n\t\t\t<a href=\"https:\/\/wcaa.preprod.fruitionqa.com\/headline_posts\/news-test-page\/\" class=\"linkOverlay\" target=\"_self\" aria-label=\"Announcement\"><\/a>\n\t\t\n\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"col-grid  \">\n\t\t\t\t\t\t\n<div class=\"cardImage contained\">\n\t<div class=\"imageZoomWrap\" style=\"aspect-ratio: 16 \/ 9;\">\n<div class=\"primaryImageWrap\">\n\n\t\n\t\n\t<img decoding=\"async\" src=\"https:\/\/wcaa.preprod.fruitionqa.com\/wp-content\/uploads\/2025\/12\/homepage-09.webp\" \n\t\talt=\"\" \n\t\tclass=\"aspectRatio primaryImage\" \n\t\tstyle=\"aspect-ratio: 16 \/ 9;\" \/>\n\n\t\n\t\n\t\n<\/div>\n\n\n<!-- This style is only needed for the first example with aspectRatio -->\n<style>\n\t.aspectRatio:not([style*=\"aspect-ratio\"]) {\n\t\taspect-ratio: 21 \/ 5;\n\t}\n<\/style>\n<\/div>            \n\t<div class=\"cardImageBody\">\n\t\t<h2 class=\"h4\">Announcement<\/h2>\n\t\t<p>Lorem ipsum dolor sit amet consectetur. Ipsum maecenas dolor eu proin iaculis vitae in sed. Amet nullam molestie integer leo nisi. Natoque a massa in dictumst cursus lectus ligula consectetur.\u00a0 maecenas nisi ut auctor malesuada sed.<\/p>\n\t\t\t\t\t\n<a class=\"links medium light \" target=\"_self\" rel=\"noopener noreferrer\"  href=\"https:\/\/wcaa.preprod.fruitionqa.com\/headline_posts\/news-test-page\/\">\n\n\t\n\t<span class=\"linksTitle\">View Details<\/span>\n    \n\t\t<span class=\"fa-light fa-arrow-right iconRight\"><\/span>\n\t<\/a>\n\t\t\t<\/div>\n\n\t\t\t<a href=\"https:\/\/wcaa.preprod.fruitionqa.com\/headline_posts\/news-test-page\/\" class=\"linkOverlay\" target=\"_self\" aria-label=\"Announcement\"><\/a>\n\t\t\n\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"col-grid  \">\n\t\t\t\t\t\t\n<div class=\"cardImage contained\">\n\t<div class=\"imageZoomWrap\" style=\"aspect-ratio: 16 \/ 9;\">\n<div class=\"primaryImageWrap\">\n\n\t\n\t\n\t<img decoding=\"async\" src=\"https:\/\/wcaa.preprod.fruitionqa.com\/wp-content\/uploads\/2025\/12\/homepage-10.webp\" \n\t\talt=\"\" \n\t\tclass=\"aspectRatio primaryImage\" \n\t\tstyle=\"aspect-ratio: 16 \/ 9;\" \/>\n\n\t\n\t\n\t\n<\/div>\n\n\n<!-- This style is only needed for the first example with aspectRatio -->\n<style>\n\t.aspectRatio:not([style*=\"aspect-ratio\"]) {\n\t\taspect-ratio: 21 \/ 5;\n\t}\n<\/style>\n<\/div>            \n\t<div class=\"cardImageBody\">\n\t\t<h2 class=\"h4\">Announcement<\/h2>\n\t\t<p>Lorem ipsum dolor sit amet consectetur. Ipsum maecenas dolor eu proin iaculis vitae in sed. Amet nullam molestie integer leo nisi. Natoque a massa in dictumst cursus lectus ligula consectetur.\u00a0 maecenas nisi ut auctor malesuada sed.<\/p>\n\t\t\t\t\t\n<a class=\"links medium light \" target=\"_self\" rel=\"noopener noreferrer\"  href=\"https:\/\/wcaa.preprod.fruitionqa.com\/headline_posts\/news-test-page\/\">\n\n\t\n\t<span class=\"linksTitle\">View Details<\/span>\n    \n\t\t<span class=\"fa-light fa-arrow-right iconRight\"><\/span>\n\t<\/a>\n\t\t\t<\/div>\n\n\t\t\t<a href=\"https:\/\/wcaa.preprod.fruitionqa.com\/headline_posts\/news-test-page\/\" class=\"linkOverlay\" target=\"_self\" aria-label=\"Announcement\"><\/a>\n\t\t\n\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"col-grid  \">\n\t\t\t\t\t\t\n<div class=\"cardImage contained\">\n\t<div class=\"imageZoomWrap\" style=\"aspect-ratio: 16 \/ 9;\">\n<div class=\"primaryImageWrap\">\n\n\t\n\t\n\t<img decoding=\"async\" src=\"https:\/\/wcaa.preprod.fruitionqa.com\/wp-content\/uploads\/2025\/12\/homepage-11.webp\" \n\t\talt=\"\" \n\t\tclass=\"aspectRatio primaryImage\" \n\t\tstyle=\"aspect-ratio: 16 \/ 9;\" \/>\n\n\t\n\t\n\t\n<\/div>\n\n\n<!-- This style is only needed for the first example with aspectRatio -->\n<style>\n\t.aspectRatio:not([style*=\"aspect-ratio\"]) {\n\t\taspect-ratio: 21 \/ 5;\n\t}\n<\/style>\n<\/div>            \n\t<div class=\"cardImageBody\">\n\t\t<h2 class=\"h4\">Announcement<\/h2>\n\t\t<p>Lorem ipsum dolor sit amet consectetur. Ipsum maecenas dolor eu proin iaculis vitae in sed. Amet nullam molestie integer leo nisi. Natoque a massa in dictumst cursus lectus ligula consectetur.\u00a0 maecenas nisi ut auctor malesuada sed.<\/p>\n\t\t\t\t\t\n<a class=\"links medium light \" target=\"_self\" rel=\"noopener noreferrer\"  href=\"https:\/\/wcaa.preprod.fruitionqa.com\/headline_posts\/news-test-page\/\">\n\n\t\n\t<span class=\"linksTitle\">View Details<\/span>\n    \n\t\t<span class=\"fa-light fa-arrow-right iconRight\"><\/span>\n\t<\/a>\n\t\t\t<\/div>\n\n\t\t\t<a href=\"https:\/\/wcaa.preprod.fruitionqa.com\/headline_posts\/news-test-page\/\" class=\"linkOverlay\" target=\"_self\" aria-label=\"Announcement\"><\/a>\n\t\t\n\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"col-grid  \">\n\t\t\t\t\t\t\n<div class=\"cardImage contained\">\n\t<div class=\"imageZoomWrap\" style=\"aspect-ratio: 16 \/ 9;\">\n<div class=\"primaryImageWrap\">\n\n\t\n\t\n\t<img decoding=\"async\" src=\"https:\/\/wcaa.preprod.fruitionqa.com\/wp-content\/uploads\/2025\/12\/homepage-11.webp\" \n\t\talt=\"\" \n\t\tclass=\"aspectRatio primaryImage\" \n\t\tstyle=\"aspect-ratio: 16 \/ 9;\" \/>\n\n\t\n\t\n\t\n<\/div>\n\n\n<!-- This style is only needed for the first example with aspectRatio -->\n<style>\n\t.aspectRatio:not([style*=\"aspect-ratio\"]) {\n\t\taspect-ratio: 21 \/ 5;\n\t}\n<\/style>\n<\/div>            \n\t<div class=\"cardImageBody\">\n\t\t<h2 class=\"h4\">Announcement<\/h2>\n\t\t<p>Lorem ipsum dolor sit amet consectetur. Ipsum maecenas dolor eu proin iaculis vitae in sed. Amet nullam molestie integer leo nisi. Natoque a massa in dictumst cursus lectus ligula consectetur.\u00a0 maecenas nisi ut auctor malesuada sed.<\/p>\n\t\t\t\t\t\n<a class=\"links medium light \" target=\"_self\" rel=\"noopener noreferrer\"  href=\"https:\/\/wcaa.preprod.fruitionqa.com\/headline_posts\/news-test-page\/\">\n\n\t\n\t<span class=\"linksTitle\">View Details<\/span>\n    \n\t\t<span class=\"fa-light fa-arrow-right iconRight\"><\/span>\n\t<\/a>\n\t\t\t<\/div>\n\n\t\t\t<a href=\"https:\/\/wcaa.preprod.fruitionqa.com\/headline_posts\/news-test-page\/\" class=\"linkOverlay\" target=\"_self\" aria-label=\"Announcement\"><\/a>\n\t\t\n\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"col-grid  \">\n\t\t\t\t\t\t\n<div class=\"cardImage contained\">\n\t<div class=\"imageZoomWrap\" style=\"aspect-ratio: 16 \/ 9;\">\n<div class=\"primaryImageWrap\">\n\n\t\n\t\n\t<img decoding=\"async\" src=\"https:\/\/wcaa.preprod.fruitionqa.com\/wp-content\/uploads\/2025\/12\/homepage-11.webp\" \n\t\talt=\"\" \n\t\tclass=\"aspectRatio primaryImage\" \n\t\tstyle=\"aspect-ratio: 16 \/ 9;\" \/>\n\n\t\n\t\n\t\n<\/div>\n\n\n<!-- This style is only needed for the first example with aspectRatio -->\n<style>\n\t.aspectRatio:not([style*=\"aspect-ratio\"]) {\n\t\taspect-ratio: 21 \/ 5;\n\t}\n<\/style>\n<\/div>            \n\t<div class=\"cardImageBody\">\n\t\t<h2 class=\"h4\">Announcement<\/h2>\n\t\t<p>Lorem ipsum dolor sit amet consectetur. Ipsum maecenas dolor eu proin iaculis vitae in sed. Amet nullam molestie integer leo nisi. Natoque a massa in dictumst cursus lectus ligula consectetur.\u00a0 maecenas nisi ut auctor malesuada sed.<\/p>\n\t\t\t\t\t\n<a class=\"links medium light \" target=\"_self\" rel=\"noopener noreferrer\"  href=\"https:\/\/wcaa.preprod.fruitionqa.com\/headline_posts\/news-test-page\/\">\n\n\t\n\t<span class=\"linksTitle\">View Details<\/span>\n    \n\t\t<span class=\"fa-light fa-arrow-right iconRight\"><\/span>\n\t<\/a>\n\t\t\t<\/div>\n\n\t\t\t<a href=\"https:\/\/wcaa.preprod.fruitionqa.com\/headline_posts\/news-test-page\/\" class=\"linkOverlay\" target=\"_self\" aria-label=\"Announcement\"><\/a>\n\t\t\n\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t\t\t<div class=\"arrowContainer\">\n\t\t\t\t\t<button class=\"prev\" aria-label=\"Previous slide\"><span class=\"fa-light fa-arrow-left\" aria-hidden=\"true\"><\/span><\/button>\n\t\t\t\t\t<button class=\"next\" aria-label=\"Next slide\"><span class=\"fa-light fa-arrow-right\" aria-hidden=\"true\"><\/span><\/button>\n\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\n<div class=\"blockGlobal paddingTopLG paddingBottomLG noRadius\" style=\"background-color:#F3F7FC;\">\n\t\t<div class=\"container\">\n\t\t  \n\n<!--Option 1-->\n<div class=\"grid wysiwyg wysiwygOption1 intro\">\n\t<div class=\"col-sm-8\">\n\n\t\t\t<div class=\"maincopy light\">\n\t\t\t\t\t\t\t\t\t<h2 class=\"h2 \">Evans and McNamara Terminals<\/h2>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<p>There is no post-security connection between the two terminals. You must enter the terminal your airline uses and clear security there.<\/p>\n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t\t\t<a\nhref=\"https:\/\/maps.metroairport.com\/?lang=en&#038;s=eyJvbmxpbmUvaGVhZGVyT25saW5lIjp7InNlYXJjaCI6InJlc3Ryb29tIiwiaXNTZWFyY2hDb25maXJtZWQiOnRydWV9LCJtYXBSZW5kZXJlciI6eyJ2cCI6eyJsYXQiOjQyLjIxNjA1NiwibG5nIjotODMuMzU0NTQ0LCJ6b29tIjoxNC4wODY1NDYsImJlYXJpbmciOjAsInBpdGNoIjowfSwib3JkIjoyfX0%3D\"\nclass=\"primaryButton light\"\ntitle=\"View Maps\" target=\"_blank\" rel=\"noopener noreferrer\">\nView Maps<span class=\"fa-light fa-arrow-up-right-from-square\"><\/span>\n<\/a>\n\t\t\t\n\t\t\t\t\t\t\t<a\nhref=\"https:\/\/wcaa.preprod.fruitionqa.com\/parking-and-transportation\/directions\/\"\nclass=\"primaryButton outlined light\"\ntitle=\"Directions to DTW\">\nDirections to DTW<\/a>\n\t\t\t\n\t\t\t\n\t<\/div>\n<\/div>\n\n\n<!--Option 2-->\n\n\n<!--Option 3-->\n\n\n\t\t\t\t\t<div class=\"grid justify-center\">\n\t\t\t\t\t\t\t\t\t<div class=\"col-md-5\">\n\t\t\t\t\t\t\n<div class=\"cardImageTerminal\">\n\t\n<div class=\"primaryImageWrap\">\n\n\t\n\t\n\t<img decoding=\"async\" src=\"https:\/\/wcaa.preprod.fruitionqa.com\/wp-content\/uploads\/2026\/01\/arriving-02.webp\" \n\t\talt=\"Evans Terminal\" \n\t\tclass=\"aspectRatio radiusImage primaryImage\" \n\t\tstyle=\"aspect-ratio: 16 \/ 9;\" \/>\n\n\t\n\t\n\t\n<\/div>\n\n\n<!-- This style is only needed for the first example with aspectRatio -->\n<style>\n\t.aspectRatio:not([style*=\"aspect-ratio\"]) {\n\t\taspect-ratio: 21 \/ 5;\n\t}\n<\/style>\n\n\t<div class=\"cardImageTerminalBody\">\n\t\t<h2 class=\"h4 cardImageTerminalTitle\">Evans Terminal<\/h2>\n\t\t\n\t\t\t\t\t<div class=\"cardImageTerminalCopy\">\n\t\t\t<p>Evans Terminal serves the majority of airlines at DTW. This terminal is connected to the Big Blue Deck, with family-friendly amenities and a variety of shopping and dining options.<\/p>\n<p><strong>Quick Facts<\/strong><\/p>\n<ul>\n<li>1 Concourse (D)<\/li>\n<\/ul>\n\t\t\t<\/div>\n\t\t\n\t\t\t\t\t<div class=\"tagsGroup\">\n\t\t\t\n<div class=\"tag tertiary\">\n\t\tAir Canada<\/div>\n\n<div class=\"tag tertiary\">\n\t\tAlaska<\/div>\n\n<div class=\"tag tertiary\">\n\t\tAmerican<\/div>\n\n<div class=\"tag tertiary\">\n\t\tAvelo<\/div>\n\n<div class=\"tag tertiary\">\n\t\tFrontier<\/div>\n\n<div class=\"tag tertiary\">\n\t\tJetBlue<\/div>\n\n<div class=\"tag tertiary\">\n\t\tLufthansa<\/div>\n\n<div class=\"tag tertiary\">\n\t\tRoyal Jordanian<\/div>\n\n<div class=\"tag tertiary\">\n\t\tSouthwest<\/div>\n\n<div class=\"tag tertiary\">\n\t\tSun Country<\/div>\n\n<div class=\"tag tertiary\">\n\t\tTurkish<\/div>\n\n<div class=\"tag tertiary\">\n\t\tUnited<\/div>\n\n<div class=\"tag tertiary\">\n\t\tVolaris<\/div>\n\t\t\t<\/div>\n\t\t\n\t\t\t\t\t\n<a class=\"links medium light \" target=\"_blank\" rel=\"noopener noreferrer\"  href=\"https:\/\/maps.metroairport.com\/?poiId=713\">\n\n\t\n\t<span class=\"linksTitle\">Open Interactive Terminal Map<\/span>\n    \n\t\t<span class=\"fa-light fa-arrow-up-right-from-square iconRight\"><\/span>\n\t<\/a>\n\t\t\t<\/div>\n<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"col-md-5\">\n\t\t\t\t\t\t\n<div class=\"cardImageTerminal\">\n\t\n<div class=\"primaryImageWrap\">\n\n\t\n\t\n\t<img decoding=\"async\" src=\"https:\/\/wcaa.preprod.fruitionqa.com\/wp-content\/uploads\/2025\/12\/aeabf4472c5d0ced121977b18418986873119940.jpg\" \n\t\talt=\"McNamara Terminal\" \n\t\tclass=\"aspectRatio radiusImage primaryImage\" \n\t\tstyle=\"aspect-ratio: 16 \/ 9;\" \/>\n\n\t\n\t\n\t\n<\/div>\n\n\n<!-- This style is only needed for the first example with aspectRatio -->\n<style>\n\t.aspectRatio:not([style*=\"aspect-ratio\"]) {\n\t\taspect-ratio: 21 \/ 5;\n\t}\n<\/style>\n\n\t<div class=\"cardImageTerminalBody\">\n\t\t<h2 class=\"h4 cardImageTerminalTitle\">McNamara Terminal<\/h2>\n\t\t\n\t\t\t\t\t<div class=\"cardImageTerminalCopy\">\n\t\t\t<p>McNamara Terminal serves Delta Air Lines, along with Aeromexico, Air France, and WestJet. The terminal connects to the McNamara Parking Garage, with an indoor tram, numerous locations for dining and shopping, as well as Delta Sky Club lounges.<\/p>\n<p><strong>Quick Facts<\/strong><\/p>\n<ul>\n<li>3 Concourses (A,B,C)<\/li>\n<\/ul>\n\t\t\t<\/div>\n\t\t\n\t\t\t\t\t<div class=\"tagsGroup\">\n\t\t\t\n<div class=\"tag tertiary\">\n\t\tAeromexico<\/div>\n\n<div class=\"tag tertiary\">\n\t\tAir France<\/div>\n\n<div class=\"tag tertiary\">\n\t\tDelta<\/div>\n\n<div class=\"tag tertiary\">\n\t\tWestJet<\/div>\n\t\t\t<\/div>\n\t\t\n\t\t\t\t\t\n<a class=\"links medium light \" target=\"_blank\" rel=\"noopener noreferrer\"  href=\"https:\/\/maps.metroairport.com\/?poiId=712\">\n\n\t\n\t<span class=\"linksTitle\">Open Interactive Terminal Map<\/span>\n    \n\t\t<span class=\"fa-light fa-arrow-up-right-from-square iconRight\"><\/span>\n\t<\/a>\n\t\t\t<\/div>\n<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\n\t<\/div>\n<\/div>\n\n\n<div class=\"blockGlobal blueMediumBlueMediumLight paddingTopLG paddingBottomLG cardImageFluid cardsLightText topLeftRadius topRightRadius\">\n\t<img decoding=\"async\" src=\"https:\/\/wcaa.preprod.fruitionqa.com\/wp-content\/themes\/wcaa\/images\/GraphicSwoop.svg\" class=\"graphicSwoopSingle\" alt=\"\">\t<div class=\"container\">\n\t\t<div class=\"cardImagelWrap dark\">\n\t\t\t\n\n<!--Option 1-->\n<div class=\"grid wysiwyg wysiwygOption1 intro\">\n\t<div class=\"col-sm-8\">\n\n\t\t\t<div class=\"maincopy dark\">\n\t\t\t\t\t\t\t\t\t<h2 class=\"h2 titleWhite\">Everything You Need, Right Here<\/h2>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<p>Whether you have time to spare or just need a quick bite, DTW offers a variety of dining, shopping, and relaxing spaces in both terminals. From national favorites to local flavors, duty-free deals to quiet corners, there\u2019s something for every traveler between takeoff and touchdown.<\/p>\n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\n\t\t\t\n\t\t\t\n\t<\/div>\n<\/div>\n\n\n<!--Option 2-->\n\n\n<!--Option 3-->\n\n\n\t\t\t\t\t\t\t<div class=\"grid\">\n\t\t\t\n\t\t\t\t\t\t\t\t<div class=\"col-grid col-md-4 col-sm-6 \">\n\t\t\t\t\t\t\n<div class=\"cardImage ghost\">\n\t<div class=\"imageZoomWrap\" style=\"aspect-ratio: 3 \/ 2;\">\n<div class=\"primaryImageWrap\">\n\n\t\n\t\n\t<img decoding=\"async\" src=\"https:\/\/wcaa.preprod.fruitionqa.com\/wp-content\/uploads\/2025\/12\/homepage-03.webp\" \n\t\talt=\"\" \n\t\tclass=\"aspectRatio radiusImage primaryImage\" \n\t\tstyle=\"aspect-ratio: 3 \/ 2;\" \/>\n\n\t\n\t\n\t\n<\/div>\n\n\n<!-- This style is only needed for the first example with aspectRatio -->\n<style>\n\t.aspectRatio:not([style*=\"aspect-ratio\"]) {\n\t\taspect-ratio: 21 \/ 5;\n\t}\n<\/style>\n<\/div>            \n\t<div class=\"cardImageBody\">\n\t\t<h2 class=\"h4\">Dining Options<\/h2>\n\t\t\t\t\t\t\t\n<a class=\"links medium light add-margin-top\" target=\"_self\" rel=\"noopener noreferrer\"  href=\"https:\/\/wcaa.preprod.fruitionqa.com\/dine-and-shop\/\">\n\n\t\n\t<span class=\"linksTitle\">View Dine and Shop Options<\/span>\n    \n\t\t<span class=\"fa-light fa-arrow-right iconRight\"><\/span>\n\t<\/a>\n\t\t\t<\/div>\n\n\t\t\t<a href=\"https:\/\/wcaa.preprod.fruitionqa.com\/dine-and-shop\/\" class=\"linkOverlay\" target=\"_self\" aria-label=\"Dining Options\"><\/a>\n\t\t\n\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"col-grid col-md-4 col-sm-6 \">\n\t\t\t\t\t\t\n<div class=\"cardImage ghost\">\n\t<div class=\"imageZoomWrap\" style=\"aspect-ratio: 3 \/ 2;\">\n<div class=\"primaryImageWrap\">\n\n\t\n\t\n\t<img decoding=\"async\" src=\"https:\/\/wcaa.preprod.fruitionqa.com\/wp-content\/uploads\/2025\/12\/homepage-04.webp\" \n\t\talt=\"\" \n\t\tclass=\"aspectRatio radiusImage primaryImage\" \n\t\tstyle=\"aspect-ratio: 3 \/ 2;\" \/>\n\n\t\n\t\n\t\n<\/div>\n\n\n<!-- This style is only needed for the first example with aspectRatio -->\n<style>\n\t.aspectRatio:not([style*=\"aspect-ratio\"]) {\n\t\taspect-ratio: 21 \/ 5;\n\t}\n<\/style>\n<\/div>            \n\t<div class=\"cardImageBody\">\n\t\t<h2 class=\"h4\">Evans Terminal<\/h2>\n\t\t\t\t\t\t\t\n<a class=\"links medium light add-margin-top\" target=\"_self\" rel=\"noopener noreferrer\"  href=\"https:\/\/maps.metroairport.com\/?poiId=87\">\n\n\t\n\t<span class=\"linksTitle\">View Interactive Terminal Maps<\/span>\n    \n\t\t<span class=\"fa-light fa-arrow-right iconRight\"><\/span>\n\t<\/a>\n\t\t\t<\/div>\n\n\t\t\t<a href=\"https:\/\/maps.metroairport.com\/?poiId=87\" class=\"linkOverlay\" target=\"_self\" aria-label=\"Evans Terminal\"><\/a>\n\t\t\n\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"col-grid col-md-4 col-sm-6 \">\n\t\t\t\t\t\t\n<div class=\"cardImage ghost\">\n\t<div class=\"imageZoomWrap\" style=\"aspect-ratio: 3 \/ 2;\">\n<div class=\"primaryImageWrap\">\n\n\t\n\t\n\t<img decoding=\"async\" src=\"https:\/\/wcaa.preprod.fruitionqa.com\/wp-content\/uploads\/2025\/12\/homepage-05.webp\" \n\t\talt=\"\" \n\t\tclass=\"aspectRatio radiusImage primaryImage\" \n\t\tstyle=\"aspect-ratio: 3 \/ 2;\" \/>\n\n\t\n\t\n\t\n<\/div>\n\n\n<!-- This style is only needed for the first example with aspectRatio -->\n<style>\n\t.aspectRatio:not([style*=\"aspect-ratio\"]) {\n\t\taspect-ratio: 21 \/ 5;\n\t}\n<\/style>\n<\/div>            \n\t<div class=\"cardImageBody\">\n\t\t<h2 class=\"h4\">Rest before you Fly<\/h2>\n\t\t\t\t\t\t\t\n<a class=\"links medium light add-margin-top\" target=\"_self\" rel=\"noopener noreferrer\"  href=\"https:\/\/wcaa.preprod.fruitionqa.com\/services\/\">\n\n\t\n\t<span class=\"linksTitle\">Learn About Airport Services<\/span>\n    \n\t\t<span class=\"fa-light fa-arrow-right iconRight\"><\/span>\n\t<\/a>\n\t\t\t<\/div>\n\n\t\t\t<a href=\"https:\/\/wcaa.preprod.fruitionqa.com\/services\/\" class=\"linkOverlay\" target=\"_self\" aria-label=\"Rest before you Fly\"><\/a>\n\t\t\n\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\n\t\t\t\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\n\n\n<div class=\"paddingTopMD paddingBottomMD calloutBannerWrapper\">\n\t<div class=\"container\">\n\t\t<div class=\"blockGlobal blueDark paddingTopXS paddingBottomNone calloutBannerFluid\">\n\t\t\t\t\t\t<div class=\"grid\">\n\t\t\t\t\t\t\t\t\t<div class=\"col-md-6 mediaLeft\">\n\t\t\t\t\t\t\n\n<div class=\"wysiwyg\">\n\t<div class=\"maincopy dark\">\n\n\t\t\n\t\t\t\t\t\t\t\t\t<h2 class=\"h2 titleWhite\">Careers at DTW<\/h2>\n\t\t\t\t\t\t\t\t\t\t<p>Join the team that keeps Detroit moving. Explore job openings in operations, customer service, skilled trades, and more \u2014 and help shape the future of air travel.<\/p>\n\t\t\t<\/div>\n\n\t\n\t\t\t<a\nhref=\"https:\/\/wcaa.preprod.fruitionqa.com\/about-dtw\/\"\nclass=\"primaryButton dark\"\ntitle=\"Learn More\">\nLearn More<\/a>\n\t\n\t\t\t<a\nhref=\"https:\/\/wcaa.preprod.fruitionqa.com\/careers\/\"\nclass=\"primaryButton outlined dark\"\ntitle=\"View Open Roles\">\nView Open Roles<\/a>\n\t\n\t<\/div>\n\t\t\t\t\t<\/div>\t\n\t\t\t\t\t<div class=\"col-md-6 mediaRight\">\n\t\t\t\t\t\n<div class=\"primaryImageWrap\">\n\n\t\n\t\n\t<img decoding=\"async\" src=\"https:\/\/wcaa.preprod.fruitionqa.com\/wp-content\/uploads\/2025\/12\/homepage-06.webp\" \n\t\talt=\"\" \n\t\tclass=\"flex-img radiusImage primaryImage\" \n\t\t \/>\n\n\t\n\t\n\t\n<\/div>\n\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\n\t\t\t<\/div>\n\t\t<\/div>\n\t<\/div>\n\t\n<\/div>\n\n\n\n\n\n\n\n\t<div class=\"blockGlobal paddingTopNone paddingBottomLG container calloutBannerMiniContainer \" style=\"background-color:#fff;\">\n\t\t\n\t\t<div class=\"innerContent\"  style=\"background-color: #E6F4FA;\" >\n\t\t\t<div class=\"maincopy light\">\n\t\t\t\t\t\t\t\t\t<h2 class=\"h4\">Need assistance?<\/h2>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t<div class=\"buttonGroup\">\t\t\t\n\t\t\t\t\t\t\t\t\t<a\nhref=\"https:\/\/wcaa.preprod.fruitionqa.com\/airlines\/\"\nclass=\"primaryButton light\"\ntitle=\"Contact Your Airline\">\nContact Your Airline<\/a>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<a\nhref=\"https:\/\/wcaa.preprod.fruitionqa.com\/about-dtw\/contact\/\"\nclass=\"primaryButton outlined light\"\ntitle=\"DTW Customer Service\">\nDTW Customer Service<\/a>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\n\t<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Detroit Metro Airport connects 30M+ travelers yearly with world-class terminals, real-time flight info, parking updates, and seamless travel resources.<\/p>","protected":false},"author":8,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-9","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Homepage - WCAA<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/\" \/>\n<meta property=\"og:locale\" content=\"zh_TW\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Homepage - WCAA\" \/>\n<meta property=\"og:description\" content=\"Detroit Metro Airport connects 30M+ travelers yearly with world-class terminals, real-time flight info, parking updates, and seamless travel resources.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/\" \/>\n<meta property=\"og:site_name\" content=\"WCAA\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-17T20:46:40+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/wcaa.preprod.fruitionqa.com\\\/\",\"url\":\"https:\\\/\\\/wcaa.preprod.fruitionqa.com\\\/\",\"name\":\"Homepage - WCAA\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wcaa.preprod.fruitionqa.com\\\/zh_hk\\\/#website\"},\"datePublished\":\"2025-11-17T22:20:15+00:00\",\"dateModified\":\"2026-08-17T20:46:40+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/wcaa.preprod.fruitionqa.com\\\/#breadcrumb\"},\"inLanguage\":\"zh-TW\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/wcaa.preprod.fruitionqa.com\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/wcaa.preprod.fruitionqa.com\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/wcaa.preprod.fruitionqa.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Homepage\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/wcaa.preprod.fruitionqa.com\\\/zh_hk\\\/#website\",\"url\":\"https:\\\/\\\/wcaa.preprod.fruitionqa.com\\\/zh_hk\\\/\",\"name\":\"WCAA\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/wcaa.preprod.fruitionqa.com\\\/zh_hk\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"zh-TW\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Homepage - WCAA","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/","og_locale":"zh_TW","og_type":"article","og_title":"Homepage - WCAA","og_description":"Detroit Metro Airport connects 30M+ travelers yearly with world-class terminals, real-time flight info, parking updates, and seamless travel resources.","og_url":"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/","og_site_name":"WCAA","article_modified_time":"2026-08-17T20:46:40+00:00","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/wcaa.preprod.fruitionqa.com\/","url":"https:\/\/wcaa.preprod.fruitionqa.com\/","name":"Homepage - WCAA","isPartOf":{"@id":"https:\/\/wcaa.preprod.fruitionqa.com\/zh_hk\/#website"},"datePublished":"2025-11-17T22:20:15+00:00","dateModified":"2026-08-17T20:46:40+00:00","breadcrumb":{"@id":"https:\/\/wcaa.preprod.fruitionqa.com\/#breadcrumb"},"inLanguage":"zh-TW","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wcaa.preprod.fruitionqa.com\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/wcaa.preprod.fruitionqa.com\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/wcaa.preprod.fruitionqa.com\/"},{"@type":"ListItem","position":2,"name":"Homepage"}]},{"@type":"WebSite","@id":"https:\/\/wcaa.preprod.fruitionqa.com\/zh_hk\/#website","url":"https:\/\/wcaa.preprod.fruitionqa.com\/zh_hk\/","name":"WCAA","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/wcaa.preprod.fruitionqa.com\/zh_hk\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"zh-TW"}]}},"_links":{"self":[{"href":"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/wp-json\/wp\/v2\/pages\/9","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/wp-json\/wp\/v2\/comments?post=9"}],"version-history":[{"count":51,"href":"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/wp-json\/wp\/v2\/pages\/9\/revisions"}],"predecessor-version":[{"id":5419,"href":"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/wp-json\/wp\/v2\/pages\/9\/revisions\/5419"}],"wp:attachment":[{"href":"https:\/\/wcaa.preprod.fruitionqa.com\/zh-TW\/wp-json\/wp\/v2\/media?parent=9"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}