{"id":233,"date":"2025-09-17T15:35:07","date_gmt":"2025-09-17T15:35:07","guid":{"rendered":"https:\/\/alpine-crown.com\/?page_id=233"},"modified":"2026-04-15T18:13:39","modified_gmt":"2026-04-15T18:13:39","slug":"pdf-catalogs-page","status":"publish","type":"page","link":"https:\/\/alpine-crown.com\/en\/pdf-catalogs-page\/","title":{"rendered":"PDF catalogs Page"},"content":{"rendered":"<section\n    id=\"pdf-catalog-viewer-1\"\n    class=\"container pdf-catalog-block resp-[pt\/35] resp-[pb\/95]\"\n    data-pdf-catalog\n>\n    \n            <div class=\"pdf-catalog-list\">\n                                            <article class=\"pdf-catalog-entry\" data-pdf-catalog-entry>\n                    <div\n                        class=\"pdf-catalog-viewer\"\n                        data-pdf-catalog-viewer\n                        data-pdf-url=\"https:\/\/alpine-crown.com\/wp-content\/uploads\/2026\/03\/PERSONAL_BULLETPROOF_SOLUTION_ACM_Catalogue_2026_full.pdf\"\n                        data-pdf-download=\"https:\/\/alpine-crown.com\/wp-content\/uploads\/2026\/03\/PERSONAL_BULLETPROOF_SOLUTION_ACM_Catalogue_2026_full.pdf\"\n                        data-pdf-title=\"Personal Bulletproof Solution Alpine Crown Military 2026\"\n                    >\n                        <div class=\"pdf-catalog-viewer__dialog\" role=\"region\" aria-labelledby=\"pdf-catalog-viewer-1-0-title\">\n                            <div class=\"pdf-catalog-viewer__header\">\n                                <div class=\"pdf-catalog-viewer__title-wrap\">\n                                    <div class=\"pdf-catalog-viewer__eyebrow\">Catalog preview<\/div>\n                                    <div class=\"pdf-catalog-viewer__title\" id=\"pdf-catalog-viewer-1-0-title\" data-pdf-catalog-title><\/div>\n                                <\/div>\n                                <div class=\"pdf-catalog-viewer__actions\">\n                                    <button\n                                        type=\"button\"\n                                        class=\"pdf-catalog-viewer__control\"\n                                        data-pdf-catalog-prev\n                                        aria-label=\"Previous page\"\n                                    >\n                                        <span aria-hidden=\"true\">\u2190<\/span>\n                                    <\/button>\n                                    <div class=\"pdf-catalog-viewer__page\">\n                                        <span data-pdf-catalog-current-page>1<\/span>\n                                        <span class=\"pdf-catalog-viewer__page-divider\">of<\/span>\n                                        <span data-pdf-catalog-total-pages>1<\/span>\n                                    <\/div>\n                                    <button\n                                        type=\"button\"\n                                        class=\"pdf-catalog-viewer__control pdf-catalog-viewer__zoom-toggle\"\n                                        data-pdf-catalog-zoom-toggle\n                                        aria-label=\"Show zoom controls\"\n                                        aria-expanded=\"false\"\n                                    >\n                                        <span class=\"pdf-catalog-viewer__icon\" aria-hidden=\"true\">\n                                            <svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\" focusable=\"false\">\n                                                <circle cx=\"11\" cy=\"11\" r=\"6.5\" stroke=\"currentColor\" stroke-width=\"2\"><\/circle>\n                                                <path d=\"M16 16L21 21\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><\/path>\n                                            <\/svg>\n                                        <\/span>\n                                    <\/button>\n                                    <div class=\"pdf-catalog-viewer__zoom\" data-pdf-catalog-zoom-panel hidden>\n                                        <button\n                                            type=\"button\"\n                                            class=\"pdf-catalog-viewer__control pdf-catalog-viewer__zoom-button\"\n                                            data-pdf-catalog-zoom-out\n                                            aria-label=\"Zoom out\"\n                                        >\n                                            <span aria-hidden=\"true\">\u2212<\/span>\n                                        <\/button>\n                                        <input\n                                            type=\"range\"\n                                            class=\"pdf-catalog-viewer__zoom-slider\"\n                                            data-pdf-catalog-zoom-slider\n                                            min=\"1\"\n                                            max=\"10\"\n                                            step=\"0.05\"\n                                            value=\"1\"\n                                            aria-label=\"Page zoom\"\n                                        >\n                                        <button\n                                            type=\"button\"\n                                            class=\"pdf-catalog-viewer__control pdf-catalog-viewer__zoom-button\"\n                                            data-pdf-catalog-zoom-in\n                                            aria-label=\"Zoom in\"\n                                        >\n                                            <span aria-hidden=\"true\">+<\/span>\n                                        <\/button>\n                                    <\/div>\n                                    <button\n                                        type=\"button\"\n                                        class=\"pdf-catalog-viewer__control\"\n                                        data-pdf-catalog-next\n                                        aria-label=\"Next page\"\n                                    >\n                                        <span aria-hidden=\"true\">\u2192<\/span>\n                                    <\/button>\n                                    <a\n                                        class=\"pdf-catalog-viewer__download\"\n                                        href=\"https:\/\/alpine-crown.com\/wp-content\/uploads\/2026\/03\/PERSONAL_BULLETPROOF_SOLUTION_ACM_Catalogue_2026_full.pdf\"\n                                        target=\"_blank\"\n                                        rel=\"noopener\"\n                                        data-pdf-catalog-download\n                                    >\n                                        Download                                    <\/a>\n                                    <button\n                                        type=\"button\"\n                                        class=\"pdf-catalog-viewer__control pdf-catalog-viewer__fullscreen-toggle\"\n                                        data-pdf-catalog-fullscreen\n                                        aria-label=\"Open fullscreen\"\n                                    >\n                                        <span aria-hidden=\"true\">\u2922<\/span>\n                                    <\/button>\n                                <\/div>\n                            <\/div>\n\n                            <div class=\"pdf-catalog-viewer__stage\" data-pdf-catalog-stage>\n                                <button\n                                    type=\"button\"\n                                    class=\"pdf-catalog-viewer__edge pdf-catalog-viewer__edge--prev\"\n                                    data-pdf-catalog-prev\n                                    aria-label=\"Previous page\"\n                                >\n                                    <span aria-hidden=\"true\">\u2190<\/span>\n                                <\/button>\n                                <div class=\"pdf-catalog-viewer__zoom-surface\" data-pdf-catalog-zoom-surface>\n                                    <div class=\"pdf-catalog-viewer__frame\">\n                                        <div class=\"pdf-catalog-viewer__spread\" data-pdf-catalog-spread>\n                                            <div class=\"pdf-catalog-viewer__page-pane\">\n                                                <div class=\"pdf-catalog-viewer__loading\" data-pdf-catalog-loading>\n                                                    Loading PDF&#8230;                                                <\/div>\n                                                <canvas class=\"pdf-catalog-viewer__canvas\" data-pdf-catalog-left-canvas><\/canvas>\n                                                <div class=\"pdf-catalog-viewer__error hidden\" data-pdf-catalog-error>\n                                                    Could not load the catalog.                                                <\/div>\n                                            <\/div>\n                                            <div class=\"pdf-catalog-viewer__page-pane pdf-catalog-viewer__page-pane--right\" data-pdf-catalog-right-pane hidden>\n                                                <canvas class=\"pdf-catalog-viewer__canvas\" data-pdf-catalog-right-canvas><\/canvas>\n                                            <\/div>\n                                        <\/div>\n                                        <div class=\"pdf-catalog-viewer__turn-overlay\" data-pdf-catalog-turn-overlay hidden><\/div>\n                                    <\/div>\n                                <\/div>\n                                <button\n                                    type=\"button\"\n                                    class=\"pdf-catalog-viewer__edge pdf-catalog-viewer__edge--next\"\n                                    data-pdf-catalog-next\n                                    aria-label=\"Next page\"\n                                >\n                                    <span aria-hidden=\"true\">\u2192<\/span>\n                                <\/button>\n                            <\/div>\n\n                            <div class=\"pdf-catalog-viewer__strip-wrap\">\n                                <div class=\"pdf-catalog-viewer__strip\" data-pdf-catalog-strip><\/div>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/article>\n                                            <article class=\"pdf-catalog-entry\" data-pdf-catalog-entry>\n                    <div\n                        class=\"pdf-catalog-viewer\"\n                        data-pdf-catalog-viewer\n                        data-pdf-url=\"https:\/\/alpine-crown.com\/wp-content\/uploads\/2026\/03\/footwear_catalogue_2026_ALPINE_CROWN_MILITARY.pdf\"\n                        data-pdf-download=\"https:\/\/alpine-crown.com\/wp-content\/uploads\/2026\/03\/footwear_catalogue_2026_ALPINE_CROWN_MILITARY.pdf\"\n                        data-pdf-title=\"Footwear Alpine Crown Military 2026\"\n                    >\n                        <div class=\"pdf-catalog-viewer__dialog\" role=\"region\" aria-labelledby=\"pdf-catalog-viewer-1-1-title\">\n                            <div class=\"pdf-catalog-viewer__header\">\n                                <div class=\"pdf-catalog-viewer__title-wrap\">\n                                    <div class=\"pdf-catalog-viewer__eyebrow\">Catalog preview<\/div>\n                                    <div class=\"pdf-catalog-viewer__title\" id=\"pdf-catalog-viewer-1-1-title\" data-pdf-catalog-title><\/div>\n                                <\/div>\n                                <div class=\"pdf-catalog-viewer__actions\">\n                                    <button\n                                        type=\"button\"\n                                        class=\"pdf-catalog-viewer__control\"\n                                        data-pdf-catalog-prev\n                                        aria-label=\"Previous page\"\n                                    >\n                                        <span aria-hidden=\"true\">\u2190<\/span>\n                                    <\/button>\n                                    <div class=\"pdf-catalog-viewer__page\">\n                                        <span data-pdf-catalog-current-page>1<\/span>\n                                        <span class=\"pdf-catalog-viewer__page-divider\">of<\/span>\n                                        <span data-pdf-catalog-total-pages>1<\/span>\n                                    <\/div>\n                                    <button\n                                        type=\"button\"\n                                        class=\"pdf-catalog-viewer__control pdf-catalog-viewer__zoom-toggle\"\n                                        data-pdf-catalog-zoom-toggle\n                                        aria-label=\"Show zoom controls\"\n                                        aria-expanded=\"false\"\n                                    >\n                                        <span class=\"pdf-catalog-viewer__icon\" aria-hidden=\"true\">\n                                            <svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\" focusable=\"false\">\n                                                <circle cx=\"11\" cy=\"11\" r=\"6.5\" stroke=\"currentColor\" stroke-width=\"2\"><\/circle>\n                                                <path d=\"M16 16L21 21\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><\/path>\n                                            <\/svg>\n                                        <\/span>\n                                    <\/button>\n                                    <div class=\"pdf-catalog-viewer__zoom\" data-pdf-catalog-zoom-panel hidden>\n                                        <button\n                                            type=\"button\"\n                                            class=\"pdf-catalog-viewer__control pdf-catalog-viewer__zoom-button\"\n                                            data-pdf-catalog-zoom-out\n                                            aria-label=\"Zoom out\"\n                                        >\n                                            <span aria-hidden=\"true\">\u2212<\/span>\n                                        <\/button>\n                                        <input\n                                            type=\"range\"\n                                            class=\"pdf-catalog-viewer__zoom-slider\"\n                                            data-pdf-catalog-zoom-slider\n                                            min=\"1\"\n                                            max=\"10\"\n                                            step=\"0.05\"\n                                            value=\"1\"\n                                            aria-label=\"Page zoom\"\n                                        >\n                                        <button\n                                            type=\"button\"\n                                            class=\"pdf-catalog-viewer__control pdf-catalog-viewer__zoom-button\"\n                                            data-pdf-catalog-zoom-in\n                                            aria-label=\"Zoom in\"\n                                        >\n                                            <span aria-hidden=\"true\">+<\/span>\n                                        <\/button>\n                                    <\/div>\n                                    <button\n                                        type=\"button\"\n                                        class=\"pdf-catalog-viewer__control\"\n                                        data-pdf-catalog-next\n                                        aria-label=\"Next page\"\n                                    >\n                                        <span aria-hidden=\"true\">\u2192<\/span>\n                                    <\/button>\n                                    <a\n                                        class=\"pdf-catalog-viewer__download\"\n                                        href=\"https:\/\/alpine-crown.com\/wp-content\/uploads\/2026\/03\/footwear_catalogue_2026_ALPINE_CROWN_MILITARY.pdf\"\n                                        target=\"_blank\"\n                                        rel=\"noopener\"\n                                        data-pdf-catalog-download\n                                    >\n                                        Download                                    <\/a>\n                                    <button\n                                        type=\"button\"\n                                        class=\"pdf-catalog-viewer__control pdf-catalog-viewer__fullscreen-toggle\"\n                                        data-pdf-catalog-fullscreen\n                                        aria-label=\"Open fullscreen\"\n                                    >\n                                        <span aria-hidden=\"true\">\u2922<\/span>\n                                    <\/button>\n                                <\/div>\n                            <\/div>\n\n                            <div class=\"pdf-catalog-viewer__stage\" data-pdf-catalog-stage>\n                                <button\n                                    type=\"button\"\n                                    class=\"pdf-catalog-viewer__edge pdf-catalog-viewer__edge--prev\"\n                                    data-pdf-catalog-prev\n                                    aria-label=\"Previous page\"\n                                >\n                                    <span aria-hidden=\"true\">\u2190<\/span>\n                                <\/button>\n                                <div class=\"pdf-catalog-viewer__zoom-surface\" data-pdf-catalog-zoom-surface>\n                                    <div class=\"pdf-catalog-viewer__frame\">\n                                        <div class=\"pdf-catalog-viewer__spread\" data-pdf-catalog-spread>\n                                            <div class=\"pdf-catalog-viewer__page-pane\">\n                                                <div class=\"pdf-catalog-viewer__loading\" data-pdf-catalog-loading>\n                                                    Loading PDF&#8230;                                                <\/div>\n                                                <canvas class=\"pdf-catalog-viewer__canvas\" data-pdf-catalog-left-canvas><\/canvas>\n                                                <div class=\"pdf-catalog-viewer__error hidden\" data-pdf-catalog-error>\n                                                    Could not load the catalog.                                                <\/div>\n                                            <\/div>\n                                            <div class=\"pdf-catalog-viewer__page-pane pdf-catalog-viewer__page-pane--right\" data-pdf-catalog-right-pane hidden>\n                                                <canvas class=\"pdf-catalog-viewer__canvas\" data-pdf-catalog-right-canvas><\/canvas>\n                                            <\/div>\n                                        <\/div>\n                                        <div class=\"pdf-catalog-viewer__turn-overlay\" data-pdf-catalog-turn-overlay hidden><\/div>\n                                    <\/div>\n                                <\/div>\n                                <button\n                                    type=\"button\"\n                                    class=\"pdf-catalog-viewer__edge pdf-catalog-viewer__edge--next\"\n                                    data-pdf-catalog-next\n                                    aria-label=\"Next page\"\n                                >\n                                    <span aria-hidden=\"true\">\u2192<\/span>\n                                <\/button>\n                            <\/div>\n\n                            <div class=\"pdf-catalog-viewer__strip-wrap\">\n                                <div class=\"pdf-catalog-viewer__strip\" data-pdf-catalog-strip><\/div>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/article>\n                                            <article class=\"pdf-catalog-entry\" data-pdf-catalog-entry>\n                    <div\n                        class=\"pdf-catalog-viewer\"\n                        data-pdf-catalog-viewer\n                        data-pdf-url=\"https:\/\/alpine-crown.com\/wp-content\/uploads\/2026\/04\/clothing_catalogue_2026_ALPINE_CROWN_MILITARY.pdf\"\n                        data-pdf-download=\"https:\/\/alpine-crown.com\/wp-content\/uploads\/2026\/04\/clothing_catalogue_2026_ALPINE_CROWN_MILITARY.pdf\"\n                        data-pdf-title=\"Clothing Alpine Crown Military 2026\"\n                    >\n                        <div class=\"pdf-catalog-viewer__dialog\" role=\"region\" aria-labelledby=\"pdf-catalog-viewer-1-2-title\">\n                            <div class=\"pdf-catalog-viewer__header\">\n                                <div class=\"pdf-catalog-viewer__title-wrap\">\n                                    <div class=\"pdf-catalog-viewer__eyebrow\">Catalog preview<\/div>\n                                    <div class=\"pdf-catalog-viewer__title\" id=\"pdf-catalog-viewer-1-2-title\" data-pdf-catalog-title><\/div>\n                                <\/div>\n                                <div class=\"pdf-catalog-viewer__actions\">\n                                    <button\n                                        type=\"button\"\n                                        class=\"pdf-catalog-viewer__control\"\n                                        data-pdf-catalog-prev\n                                        aria-label=\"Previous page\"\n                                    >\n                                        <span aria-hidden=\"true\">\u2190<\/span>\n                                    <\/button>\n                                    <div class=\"pdf-catalog-viewer__page\">\n                                        <span data-pdf-catalog-current-page>1<\/span>\n                                        <span class=\"pdf-catalog-viewer__page-divider\">of<\/span>\n                                        <span data-pdf-catalog-total-pages>1<\/span>\n                                    <\/div>\n                                    <button\n                                        type=\"button\"\n                                        class=\"pdf-catalog-viewer__control pdf-catalog-viewer__zoom-toggle\"\n                                        data-pdf-catalog-zoom-toggle\n                                        aria-label=\"Show zoom controls\"\n                                        aria-expanded=\"false\"\n                                    >\n                                        <span class=\"pdf-catalog-viewer__icon\" aria-hidden=\"true\">\n                                            <svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\" focusable=\"false\">\n                                                <circle cx=\"11\" cy=\"11\" r=\"6.5\" stroke=\"currentColor\" stroke-width=\"2\"><\/circle>\n                                                <path d=\"M16 16L21 21\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><\/path>\n                                            <\/svg>\n                                        <\/span>\n                                    <\/button>\n                                    <div class=\"pdf-catalog-viewer__zoom\" data-pdf-catalog-zoom-panel hidden>\n                                        <button\n                                            type=\"button\"\n                                            class=\"pdf-catalog-viewer__control pdf-catalog-viewer__zoom-button\"\n                                            data-pdf-catalog-zoom-out\n                                            aria-label=\"Zoom out\"\n                                        >\n                                            <span aria-hidden=\"true\">\u2212<\/span>\n                                        <\/button>\n                                        <input\n                                            type=\"range\"\n                                            class=\"pdf-catalog-viewer__zoom-slider\"\n                                            data-pdf-catalog-zoom-slider\n                                            min=\"1\"\n                                            max=\"10\"\n                                            step=\"0.05\"\n                                            value=\"1\"\n                                            aria-label=\"Page zoom\"\n                                        >\n                                        <button\n                                            type=\"button\"\n                                            class=\"pdf-catalog-viewer__control pdf-catalog-viewer__zoom-button\"\n                                            data-pdf-catalog-zoom-in\n                                            aria-label=\"Zoom in\"\n                                        >\n                                            <span aria-hidden=\"true\">+<\/span>\n                                        <\/button>\n                                    <\/div>\n                                    <button\n                                        type=\"button\"\n                                        class=\"pdf-catalog-viewer__control\"\n                                        data-pdf-catalog-next\n                                        aria-label=\"Next page\"\n                                    >\n                                        <span aria-hidden=\"true\">\u2192<\/span>\n                                    <\/button>\n                                    <a\n                                        class=\"pdf-catalog-viewer__download\"\n                                        href=\"https:\/\/alpine-crown.com\/wp-content\/uploads\/2026\/04\/clothing_catalogue_2026_ALPINE_CROWN_MILITARY.pdf\"\n                                        target=\"_blank\"\n                                        rel=\"noopener\"\n                                        data-pdf-catalog-download\n                                    >\n                                        Download                                    <\/a>\n                                    <button\n                                        type=\"button\"\n                                        class=\"pdf-catalog-viewer__control pdf-catalog-viewer__fullscreen-toggle\"\n                                        data-pdf-catalog-fullscreen\n                                        aria-label=\"Open fullscreen\"\n                                    >\n                                        <span aria-hidden=\"true\">\u2922<\/span>\n                                    <\/button>\n                                <\/div>\n                            <\/div>\n\n                            <div class=\"pdf-catalog-viewer__stage\" data-pdf-catalog-stage>\n                                <button\n                                    type=\"button\"\n                                    class=\"pdf-catalog-viewer__edge pdf-catalog-viewer__edge--prev\"\n                                    data-pdf-catalog-prev\n                                    aria-label=\"Previous page\"\n                                >\n                                    <span aria-hidden=\"true\">\u2190<\/span>\n                                <\/button>\n                                <div class=\"pdf-catalog-viewer__zoom-surface\" data-pdf-catalog-zoom-surface>\n                                    <div class=\"pdf-catalog-viewer__frame\">\n                                        <div class=\"pdf-catalog-viewer__spread\" data-pdf-catalog-spread>\n                                            <div class=\"pdf-catalog-viewer__page-pane\">\n                                                <div class=\"pdf-catalog-viewer__loading\" data-pdf-catalog-loading>\n                                                    Loading PDF&#8230;                                                <\/div>\n                                                <canvas class=\"pdf-catalog-viewer__canvas\" data-pdf-catalog-left-canvas><\/canvas>\n                                                <div class=\"pdf-catalog-viewer__error hidden\" data-pdf-catalog-error>\n                                                    Could not load the catalog.                                                <\/div>\n                                            <\/div>\n                                            <div class=\"pdf-catalog-viewer__page-pane pdf-catalog-viewer__page-pane--right\" data-pdf-catalog-right-pane hidden>\n                                                <canvas class=\"pdf-catalog-viewer__canvas\" data-pdf-catalog-right-canvas><\/canvas>\n                                            <\/div>\n                                        <\/div>\n                                        <div class=\"pdf-catalog-viewer__turn-overlay\" data-pdf-catalog-turn-overlay hidden><\/div>\n                                    <\/div>\n                                <\/div>\n                                <button\n                                    type=\"button\"\n                                    class=\"pdf-catalog-viewer__edge pdf-catalog-viewer__edge--next\"\n                                    data-pdf-catalog-next\n                                    aria-label=\"Next page\"\n                                >\n                                    <span aria-hidden=\"true\">\u2192<\/span>\n                                <\/button>\n                            <\/div>\n\n                            <div class=\"pdf-catalog-viewer__strip-wrap\">\n                                <div class=\"pdf-catalog-viewer__strip\" data-pdf-catalog-strip><\/div>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/article>\n                    <\/div>\n    <\/section>\n\n<style>\n    .pdf-catalog-block {\n        position: relative;\n        z-index: 1;\n        padding-top: clamp(14px, 1.4vw, 22px);\n        scroll-margin-top: 140px;\n    }\n\n    .pdf-catalog-list {\n        display: flex;\n        flex-direction: column;\n        gap: clamp(18px, 2vw, 28px);\n    }\n\n    .pdf-catalog-entry {\n        padding: clamp(12px, 1.4vw, 18px);\n        border-radius: 28px;\n        background: #f7f7f7;\n    }\n\n    .pdf-catalog-entry__header {\n        display: flex;\n        align-items: center;\n        justify-content: space-between;\n        gap: 18px;\n        margin-bottom: 14px;\n    }\n\n    .pdf-catalog-entry__title-wrap {\n        min-width: 0;\n    }\n\n    .pdf-catalog-entry__eyebrow {\n        margin-bottom: 6px;\n        font-size: 12px;\n        letter-spacing: 0.14em;\n        text-transform: uppercase;\n        color: rgba(0, 0, 0, 0.5);\n    }\n\n    .pdf-catalog-entry__title {\n        font-size: clamp(24px, 2.2vw, 36px);\n        line-height: 1.05;\n        font-weight: 600;\n    }\n\n    .pdf-catalog-entry__download {\n        display: inline-flex;\n        align-items: center;\n        justify-content: center;\n        min-width: 138px;\n        height: 44px;\n        padding: 0 18px;\n        border-radius: 999px;\n        border: 1px solid #111;\n        background: #111;\n        color: #fff;\n        font-size: 14px;\n        font-weight: 600;\n        text-decoration: none;\n        transition: transform 0.2s ease, background-color 0.2s ease, color 0.2s ease;\n    }\n\n    .pdf-catalog-entry__download:hover {\n        transform: translateY(-1px);\n        background: #000;\n    }\n\n    .pdf-catalog-card__preview {\n        aspect-ratio: 3 \/ 4;\n    }\n\n    .pdf-catalog-card__image {\n        min-height: 100%;\n    }\n\n    .pdf-catalog-viewer {\n        position: relative;\n        z-index: 1;\n        width: 100%;\n    }\n\n    .pdf-catalog-viewer.is-fullscreen {\n        position: fixed;\n        inset: 0;\n        z-index: 99999;\n        padding: 12px;\n        background: rgba(0, 0, 0, 0.84);\n        backdrop-filter: blur(10px);\n    }\n\n    .pdf-catalog-viewer.is-fullscreen .pdf-catalog-viewer__dialog {\n        width: 100%;\n        max-width: none;\n        height: calc(100dvh - 24px);\n        min-height: calc(100dvh - 24px);\n    }\n\n    .pdf-catalog-viewer__dialog {\n        position: relative;\n        z-index: 1;\n        width: min(1640px, 100%);\n        height: auto;\n        min-height: clamp(620px, 66vh, 860px);\n        margin: 0 auto;\n        display: flex;\n        flex-direction: column;\n        border-radius: 24px;\n        overflow: hidden;\n        background: #101010;\n        color: #fff;\n    }\n\n    .pdf-catalog-viewer__header {\n        display: flex;\n        flex-wrap: wrap;\n        gap: 12px;\n        align-items: center;\n        justify-content: space-between;\n        padding: 14px 18px;\n        border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n        background: linear-gradient(180deg, rgba(255, 255, 255, 0.04), rgba(255, 255, 255, 0));\n    }\n\n    .pdf-catalog-viewer__title-wrap {\n        min-width: 0;\n    }\n\n    .pdf-catalog-viewer__eyebrow {\n        margin-bottom: 6px;\n        font-size: 12px;\n        letter-spacing: 0.16em;\n        text-transform: uppercase;\n        color: rgba(255, 255, 255, 0.58);\n    }\n\n    .pdf-catalog-viewer__title {\n        font-size: 20px;\n        font-weight: 600;\n        line-height: 1.15;\n        letter-spacing: 0.01em;\n    }\n\n    .pdf-catalog-viewer__actions {\n        display: flex;\n        align-items: center;\n        gap: 10px;\n        flex-wrap: wrap;\n        position: relative;\n    }\n\n    .pdf-catalog-viewer__zoom {\n        display: inline-flex;\n        align-items: center;\n        gap: 8px;\n        padding: 0 10px;\n        border-radius: 999px;\n        border: 1px solid rgba(255, 255, 255, 0.12);\n        background: rgba(255, 255, 255, 0.04);\n        flex-basis: 100%;\n        justify-content: center;\n        order: 10;\n        margin-top: 2px;\n    }\n\n    .pdf-catalog-viewer__zoom[hidden] {\n        display: none !important;\n    }\n\n    .pdf-catalog-viewer__zoom-toggle {\n        font-size: 16px;\n    }\n\n    .pdf-catalog-viewer__zoom-toggle .pdf-catalog-viewer__icon {\n        display: inline-flex;\n        width: 18px;\n        height: 18px;\n        color: #fff;\n    }\n\n    .pdf-catalog-viewer__zoom-toggle .pdf-catalog-viewer__icon svg {\n        width: 100%;\n        height: 100%;\n        display: block;\n    }\n\n    .pdf-catalog-viewer__control,\n    .pdf-catalog-viewer__close,\n    .pdf-catalog-viewer__download,\n    .pdf-catalog-viewer__edge {\n        display: inline-flex;\n        align-items: center;\n        justify-content: center;\n        min-width: 42px;\n        height: 42px;\n        padding: 0 14px;\n        border-radius: 999px;\n        border: 1px solid rgba(255, 255, 255, 0.16);\n        background: rgba(255, 255, 255, 0.06);\n        color: #fff;\n        transition: background-color 0.2s ease, border-color 0.2s ease, transform 0.2s ease;\n    }\n\n    .pdf-catalog-viewer__download {\n        text-decoration: none;\n        font-weight: 600;\n    }\n\n    .pdf-catalog-viewer__control:hover,\n    .pdf-catalog-viewer__close:hover,\n    .pdf-catalog-viewer__download:hover,\n    .pdf-catalog-viewer__edge:hover {\n        background: rgba(255, 255, 255, 0.14);\n        border-color: rgba(255, 255, 255, 0.28);\n    }\n\n    .pdf-catalog-viewer__page {\n        display: inline-flex;\n        align-items: center;\n        gap: 6px;\n        min-width: 92px;\n        justify-content: center;\n        font-size: 14px;\n        color: rgba(255, 255, 255, 0.8);\n    }\n\n        .pdf-catalog-viewer__zoom-slider {\n        width: 160px;\n        height: 20px;\n        margin: 0;\n        background: transparent;\n        accent-color: #fff;\n    }\n\n    .pdf-catalog-viewer__zoom-slider:focus {\n        outline: none;\n    }\n\n    .pdf-catalog-viewer__stage {\n        position: relative;\n        flex: 1;\n        overflow: hidden;\n        min-height: clamp(520px, 56vh, 740px);\n        padding: 4px;\n        display: flex;\n        align-items: stretch;\n        justify-content: stretch;\n        gap: 0;\n        background:\n            radial-gradient(circle at center, rgba(255, 255, 255, 0.05), transparent 60%),\n            linear-gradient(180deg, rgba(255, 255, 255, 0.02), rgba(255, 255, 255, 0));\n        touch-action: none;\n    }\n\n    .pdf-catalog-viewer__zoom-surface {\n        position: absolute;\n        inset: 4px;\n        width: auto;\n        height: auto;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        flex: 0 0 auto;\n        transform-origin: 0 0;\n        will-change: transform;\n    }\n\n    .pdf-catalog-viewer__frame {\n        position: relative;\n        width: 100%;\n        height: 100%;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        overflow: hidden;\n        border-radius: 18px;\n        background:\n            linear-gradient(180deg, rgba(255, 255, 255, 0.03), rgba(255, 255, 255, 0.01)),\n            #171717;\n        box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.05);\n    }\n\n    .pdf-catalog-viewer__spread {\n        width: auto;\n        min-width: 100%;\n        height: 100%;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        gap: 0;\n        padding: 0;\n        position: relative;\n        transition: transform 0.28s ease, opacity 0.28s ease;\n        will-change: transform, opacity;\n    }\n\n    .pdf-catalog-viewer__page-pane {\n        position: relative;\n        flex: 0 0 auto;\n        min-width: 0;\n        width: auto;\n        height: 100%;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        overflow: hidden;\n        border-radius: 14px;\n        background:\n            linear-gradient(180deg, rgba(255, 255, 255, 0.03), rgba(255, 255, 255, 0.01)),\n            #202020;\n        box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.05);\n    }\n\n    .pdf-catalog-viewer__page-pane--right {\n        display: flex;\n    }\n\n    .pdf-catalog-viewer__page-pane[hidden] {\n        display: none !important;\n    }\n\n    .pdf-catalog-viewer__page-pane--right.is-empty {\n        background:\n            linear-gradient(180deg, rgba(255, 255, 255, 0.02), rgba(255, 255, 255, 0.01)),\n            #0d0d0d;\n    }\n\n    .pdf-catalog-viewer__page-pane--right.is-empty .pdf-catalog-viewer__canvas {\n        display: none;\n    }\n\n    .pdf-catalog-viewer__fullscreen-toggle {\n        display: inline-flex;\n    }\n\n    .pdf-catalog-viewer__turn-overlay {\n        position: absolute;\n        inset: 0;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        pointer-events: none;\n        perspective: 2400px;\n        z-index: 5;\n    }\n\n    .pdf-catalog-viewer__turn-card {\n        position: absolute;\n        overflow: hidden;\n        border-radius: 16px;\n        box-shadow: 0 24px 60px rgba(0, 0, 0, 0.45);\n        background: #111;\n        transform-style: preserve-3d;\n        backface-visibility: hidden;\n        will-change: transform, opacity;\n    }\n\n    .pdf-catalog-viewer__turn-card img,\n    .pdf-catalog-viewer__turn-card canvas {\n        display: block;\n        width: 100%;\n        height: 100%;\n        object-fit: cover;\n    }\n\n    .pdf-catalog-viewer__turn-card.is-next {\n        right: 0;\n        transform-origin: left center;\n        animation: pdf-turn-next 0.72s cubic-bezier(0.22, 1, 0.36, 1) forwards;\n    }\n\n    .pdf-catalog-viewer__turn-card.is-prev {\n        left: 0;\n        transform-origin: right center;\n        animation: pdf-turn-prev 0.72s cubic-bezier(0.22, 1, 0.36, 1) forwards;\n    }\n\n    .pdf-catalog-viewer__turn-card::before {\n        content: \"\";\n        position: absolute;\n        inset: 0;\n        background: linear-gradient(90deg, rgba(255, 255, 255, 0.16), transparent 24%, rgba(0, 0, 0, 0.08) 52%, transparent 80%);\n        mix-blend-mode: overlay;\n        pointer-events: none;\n    }\n\n    @keyframes pdf-turn-next {\n        0% {\n            transform: rotateY(0deg) translateX(0);\n            filter: brightness(1);\n        }\n        45% {\n            transform: rotateY(-72deg) translateX(-12px);\n            filter: brightness(0.92);\n        }\n        100% {\n            transform: rotateY(-175deg) translateX(-32px);\n            opacity: 0;\n            filter: brightness(0.86);\n        }\n    }\n\n    @keyframes pdf-turn-prev {\n        0% {\n            transform: rotateY(0deg) translateX(0);\n            filter: brightness(1);\n        }\n        45% {\n            transform: rotateY(72deg) translateX(12px);\n            filter: brightness(0.92);\n        }\n        100% {\n            transform: rotateY(175deg) translateX(32px);\n            opacity: 0;\n            filter: brightness(0.86);\n        }\n    }\n\n    .pdf-catalog-viewer__canvas {\n        max-width: 100%;\n        max-height: 100%;\n        width: auto;\n        height: auto;\n        background: #fff;\n        border-radius: 0;\n        box-shadow: 0 10px 35px rgba(0, 0, 0, 0.2);\n        opacity: 1;\n        transform: translateX(0);\n        transition: transform 0.28s ease, opacity 0.28s ease;\n        will-change: transform, opacity;\n    }\n\n    .pdf-catalog-viewer__edge {\n        position: absolute;\n        top: 50%;\n        transform: translateY(-50%);\n        width: 54px;\n        height: 92px;\n        border-radius: 999px;\n        z-index: 2;\n        background: rgba(15, 15, 15, 0.72);\n        border: 1px solid rgba(255, 255, 255, 0.22);\n        color: #fff;\n        backdrop-filter: blur(12px);\n        box-shadow:\n            0 10px 24px rgba(0, 0, 0, 0.32),\n            inset 0 1px 0 rgba(255, 255, 255, 0.08);\n    }\n\n    .pdf-catalog-viewer__edge span {\n        position: relative;\n        z-index: 1;\n        font-size: 18px;\n        line-height: 1;\n        text-shadow: 0 1px 2px rgba(0, 0, 0, 0.45);\n    }\n\n    .pdf-catalog-viewer__edge--prev {\n        left: 12px;\n    }\n\n    .pdf-catalog-viewer__edge--next {\n        right: 12px;\n    }\n\n    .pdf-catalog-viewer__edge::before {\n        content: \"\";\n        position: absolute;\n        inset: 0;\n        border-radius: inherit;\n        background: linear-gradient(180deg, rgba(255, 255, 255, 0.12), rgba(255, 255, 255, 0));\n        pointer-events: none;\n    }\n\n    .pdf-catalog-viewer__strip-wrap {\n        padding: 0 16px 12px;\n        border-top: 1px solid rgba(255, 255, 255, 0.08);\n        background: rgba(255, 255, 255, 0.02);\n    }\n\n    .pdf-catalog-viewer__strip {\n        display: flex;\n        gap: 8px;\n        overflow-x: auto;\n        padding-top: 12px;\n        padding-bottom: 2px;\n        scrollbar-width: none;\n        -webkit-overflow-scrolling: touch;\n        touch-action: pan-x;\n    }\n\n    .pdf-catalog-viewer__strip::-webkit-scrollbar {\n        display: none;\n    }\n\n    .pdf-catalog-viewer__thumb {\n        flex: 0 0 auto;\n        min-width: 64px;\n        padding: 12px 14px;\n        border-radius: 14px;\n        border: 1px solid rgba(255, 255, 255, 0.12);\n        background: rgba(255, 255, 255, 0.05);\n        color: #fff;\n        text-align: center;\n        font-size: 13px;\n        line-height: 1.1;\n        transition: background-color 0.2s ease, border-color 0.2s ease, transform 0.2s ease;\n    }\n\n    .pdf-catalog-viewer__thumb:hover {\n        background: rgba(255, 255, 255, 0.1);\n        border-color: rgba(255, 255, 255, 0.25);\n    }\n\n    .pdf-catalog-viewer__thumb.is-active {\n        background: rgba(255, 255, 255, 0.18);\n        border-color: rgba(255, 255, 255, 0.45);\n        transform: translateY(-1px);\n    }\n\n    .pdf-catalog-viewer__thumb-range {\n        display: block;\n        font-weight: 600;\n    }\n\n    .pdf-catalog-viewer__loading,\n    .pdf-catalog-viewer__error {\n        position: absolute;\n        inset: 50% auto auto 50%;\n        transform: translate(-50%, -50%);\n        padding: 12px 16px;\n        border-radius: 999px;\n        background: rgba(0, 0, 0, 0.6);\n        color: #fff;\n        font-size: 14px;\n        z-index: 1;\n    }\n\n    .pdf-catalog-viewer__error.hidden {\n        display: none;\n    }\n\n    @media (max-width: 767px) {\n        .pdf-catalog-viewer.is-fullscreen {\n            padding: 6px;\n        }\n\n        .pdf-catalog-viewer.is-fullscreen .pdf-catalog-viewer__dialog {\n            height: calc(100dvh - 12px);\n            min-height: calc(100dvh - 12px);\n        }\n\n        .pdf-catalog-viewer__dialog {\n            min-height: auto;\n            border-radius: 18px;\n        }\n\n        .pdf-catalog-viewer__header {\n            padding: 12px 12px 10px;\n        }\n\n        .pdf-catalog-viewer__title {\n            width: 100%;\n            font-size: 16px;\n        }\n\n        .pdf-catalog-viewer__stage {\n            padding: 4px;\n            min-height: 360px;\n        }\n\n        .pdf-catalog-viewer__actions {\n            width: 100%;\n            justify-content: space-between;\n        }\n\n        .pdf-catalog-viewer__zoom {\n            width: 100%;\n            justify-content: center;\n            order: 5;\n            margin-top: 4px;\n        }\n\n        .pdf-catalog-viewer__zoom-slider {\n            width: 110px;\n        }\n\n        .pdf-catalog-viewer__edge {\n            width: 40px;\n            height: 64px;\n        }\n\n        .pdf-catalog-viewer__edge--prev {\n            left: 6px;\n        }\n\n        .pdf-catalog-viewer__edge--next {\n            right: 6px;\n        }\n\n        .pdf-catalog-viewer__spread {\n            gap: 8px;\n            padding: 8px;\n        }\n\n        .pdf-catalog-viewer__strip-wrap {\n            padding: 0 10px 10px;\n        }\n    }\n<\/style>\n\n<script>\n(function () {\n    var catalogLabels = {\"download\":\"Download\",\"fullscreen_open\":\"Open fullscreen\",\"fullscreen_exit\":\"Exit fullscreen\",\"previous\":\"Previous page\",\"next\":\"Next page\",\"zoom_in\":\"Zoom in\",\"zoom_out\":\"Zoom out\",\"page\":\"Page\",\"pages\":\"Pages\",\"of\":\"of\",\"loading\":\"Loading PDF...\",\"error\":\"Could not load the catalog.\"};\n    var pdfCatalogBlocks = document.querySelectorAll('[data-pdf-catalog]');\n    if (!pdfCatalogBlocks.length) {\n        return;\n    }\n\n    var pdfJsSrc = 'https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/pdf.js\/3.11.174\/pdf.min.js';\n    var pdfWorkerSrc = 'https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/pdf.js\/3.11.174\/pdf.worker.min.js';\n\n    function loadPdfJs() {\n        if (window.pdfjsLib) {\n            window.pdfjsLib.GlobalWorkerOptions.workerSrc = pdfWorkerSrc;\n            return Promise.resolve(window.pdfjsLib);\n        }\n\n        if (window.__acmPdfCatalogPromise) {\n            return window.__acmPdfCatalogPromise;\n        }\n\n        window.__acmPdfCatalogPromise = new Promise(function (resolve, reject) {\n            var script = document.createElement('script');\n            script.src = pdfJsSrc;\n            script.async = true;\n            script.onload = function () {\n                if (!window.pdfjsLib) {\n                    reject(new Error('pdfjsLib is not available'));\n                    return;\n                }\n\n                window.pdfjsLib.GlobalWorkerOptions.workerSrc = pdfWorkerSrc;\n                resolve(window.pdfjsLib);\n            };\n            script.onerror = function () {\n                reject(new Error('Could not load PDF.js'));\n            };\n            document.head.appendChild(script);\n        });\n\n        return window.__acmPdfCatalogPromise;\n    }\n\n    var pdfCatalogViewers = document.querySelectorAll('[data-pdf-catalog-viewer]');\n    if (!pdfCatalogViewers.length) {\n        return;\n    }\n\n    pdfCatalogViewers.forEach(function (viewer) {\n        var catalogUrl = viewer.getAttribute('data-pdf-url') || '';\n        if (!viewer || !catalogUrl) {\n            return;\n        }\n\n        var stage = viewer.querySelector('[data-pdf-catalog-stage]');\n        var spreadNode = viewer.querySelector('[data-pdf-catalog-spread]');\n        var rightPane = viewer.querySelector('[data-pdf-catalog-right-pane]');\n        var leftCanvas = viewer.querySelector('[data-pdf-catalog-left-canvas]');\n        var rightCanvas = viewer.querySelector('[data-pdf-catalog-right-canvas]');\n        var leftContext = leftCanvas.getContext('2d');\n        var rightContext = rightCanvas.getContext('2d');\n        var loading = viewer.querySelector('[data-pdf-catalog-loading]');\n        var errorNode = viewer.querySelector('[data-pdf-catalog-error]');\n        var titleNode = viewer.querySelector('[data-pdf-catalog-title]');\n        var currentPageNode = viewer.querySelector('[data-pdf-catalog-current-page]');\n        var totalPagesNode = viewer.querySelector('[data-pdf-catalog-total-pages]');\n        var downloadNode = viewer.querySelector('[data-pdf-catalog-download]');\n        var zoomToggleButton = viewer.querySelector('[data-pdf-catalog-zoom-toggle]');\n        var zoomPanel = viewer.querySelector('[data-pdf-catalog-zoom-panel]');\n        var zoomSlider = viewer.querySelector('[data-pdf-catalog-zoom-slider]');\n        var zoomOutButton = viewer.querySelector('[data-pdf-catalog-zoom-out]');\n        var zoomInButton = viewer.querySelector('[data-pdf-catalog-zoom-in]');\n        var zoomSurface = viewer.querySelector('[data-pdf-catalog-zoom-surface]');\n        var pagePanes = viewer.querySelectorAll('.pdf-catalog-viewer__page-pane');\n        var leftPane = pagePanes.length ? pagePanes[0] : null;\n        var fullscreenButton = viewer.querySelector('[data-pdf-catalog-fullscreen]');\n        var turnOverlayNode = viewer.querySelector('[data-pdf-catalog-turn-overlay]');\n        var prevButtons = viewer.querySelectorAll('[data-pdf-catalog-prev]');\n        var nextButtons = viewer.querySelectorAll('[data-pdf-catalog-next]');\n        var stripNode = viewer.querySelector('[data-pdf-catalog-strip]');\n        var pdfDoc = null;\n        var currentPage = 1;\n        var rendering = false;\n        var pendingPage = null;\n        var activeUrl = '';\n        var activeTitle = '';\n        var renderDirection = 'next';\n        var spreadMode = false;\n        var resizeTimer = null;\n        var turnTimer = null;\n        var warmupPages = Object.create(null);\n        var stripPointerId = null;\n        var stripPointerStartX = 0;\n        var stripPointerStartScrollLeft = 0;\n        var stripPointerDragging = false;\n        var zoomLevel = 1;\n        var panX = 0;\n        var panY = 0;\n        var zoomRenderTimer = null;\n        var pendingZoomRefresh = false;\n        var zoomQualityBoost = 1.7;\n        var stagePointerId = null;\n        var stagePointerStartX = 0;\n        var stagePointerStartY = 0;\n        var stagePointerStartScrollLeft = 0;\n        var stagePointerStartScrollTop = 0;\n        var stagePointerDragging = false;\n\n        function setLoadingState(isLoading) {\n            if (loading) {\n                loading.style.display = isLoading ? 'block' : 'none';\n            }\n        }\n\n        function showError(message) {\n            if (!errorNode) {\n                return;\n            }\n\n            if (message) {\n                errorNode.textContent = message;\n            }\n\n            errorNode.classList.remove('hidden');\n        }\n\n        function hideError() {\n            if (errorNode) {\n                errorNode.classList.add('hidden');\n            }\n        }\n\n        function isWideLayout() {\n            if (!window.matchMedia) {\n                return false;\n            }\n\n            return window.matchMedia('(min-width: 1180px)').matches;\n        }\n\n        function getVisibleStartPage(page) {\n            var startPage = page;\n\n            if (spreadMode) {\n                if (startPage > 1) {\n                    if (startPage % 2 === 0) {\n                        startPage = startPage - 1;\n                    }\n                }\n            }\n\n            if (startPage < 1) {\n                startPage = 1;\n            }\n\n            if (pdfDoc) {\n                if (startPage > pdfDoc.numPages) {\n                    startPage = pdfDoc.numPages;\n                }\n            }\n\n            return startPage;\n        }\n\n        function getVisibleEndPage(page) {\n            if (!pdfDoc) {\n                return page;\n            }\n\n            if (spreadMode) {\n                var endPage = page + 1;\n                if (endPage > pdfDoc.numPages) {\n                    endPage = pdfDoc.numPages;\n                }\n                return endPage;\n            }\n\n            return page;\n        }\n\n        function getStep() {\n            return spreadMode ? 2 : 1;\n        }\n\n        function updateSpreadMode() {\n            var nextSpreadMode = false;\n\n            if (pdfDoc) {\n                if (pdfDoc.numPages > 1) {\n                    if (isWideLayout()) {\n                        nextSpreadMode = true;\n                    }\n                }\n            }\n\n            spreadMode = nextSpreadMode;\n\n            if (rightPane) {\n                rightPane.hidden = !spreadMode;\n                rightPane.style.display = spreadMode ? 'flex' : 'none';\n            }\n        }\n\n        function updatePageCounter() {\n            if (!currentPageNode) {\n                return;\n            }\n\n            if (!pdfDoc) {\n                currentPageNode.textContent = '1';\n                return;\n            }\n\n            var endPage = getVisibleEndPage(currentPage);\n            if (spreadMode) {\n                if (endPage !== currentPage) {\n                    currentPageNode.textContent = currentPage + '-' + endPage;\n                    return;\n                }\n            }\n\n            currentPageNode.textContent = String(currentPage);\n        }\n\n        function updateNavigation() {\n            var step = getStep();\n\n            prevButtons.forEach(function (button) {\n                button.disabled = currentPage - step < 1;\n            });\n\n            nextButtons.forEach(function (button) {\n                button.disabled = true;\n\n                if (pdfDoc) {\n                    if (currentPage + step <= pdfDoc.numPages) {\n                        button.disabled = false;\n                    }\n                }\n            });\n\n            if (totalPagesNode) {\n                if (pdfDoc) {\n                    totalPagesNode.textContent = String(pdfDoc.numPages);\n                }\n            }\n\n            updatePageCounter();\n            updateStripActive();\n        }\n\n        function clearCanvas(canvas, context) {\n            context.clearRect(0, 0, canvas.width || 0, canvas.height || 0);\n            canvas.width = 0;\n            canvas.height = 0;\n        }\n\n        function clearTurnOverlay() {\n            if (turnTimer) {\n                window.clearTimeout(turnTimer);\n                turnTimer = null;\n            }\n\n            if (!turnOverlayNode) {\n                return;\n            }\n\n            turnOverlayNode.innerHTML = '';\n            turnOverlayNode.hidden = true;\n        }\n\n        function clearWarmupState() {\n            warmupPages = Object.create(null);\n        }\n\n        function clamp(value, min, max) {\n            if (value < min) {\n                return min;\n            }\n\n            if (value > max) {\n                return max;\n            }\n\n            return value;\n        }\n\n        function setFullscreenState(isFullscreen) {\n            if (viewer) {\n                if (isFullscreen) {\n                    viewer.classList.add('is-fullscreen');\n                } else {\n                    viewer.classList.remove('is-fullscreen');\n                }\n            }\n        }\n\n        function syncFullscreenButton() {\n            if (!fullscreenButton) {\n                return;\n            }\n\n            if (viewer.classList.contains('is-fullscreen')) {\n                fullscreenButton.setAttribute('aria-label', catalogLabels.fullscreen_exit || 'Exit fullscreen');\n            } else {\n                fullscreenButton.setAttribute('aria-label', catalogLabels.fullscreen_open || 'Open fullscreen');\n            }\n        }\n\n        function scheduleZoomRefresh() {\n            if (!pdfDoc) {\n                return;\n            }\n\n            pendingZoomRefresh = true;\n\n            if (zoomRenderTimer) {\n                window.clearTimeout(zoomRenderTimer);\n            }\n\n            zoomRenderTimer = window.setTimeout(function () {\n                zoomRenderTimer = null;\n\n                if (!pdfDoc) {\n                    return;\n                }\n\n                if (rendering) {\n                    return;\n                }\n\n                pendingZoomRefresh = false;\n                renderView();\n            }, 100);\n        }\n\n        function enterFullscreen() {\n            if (viewer.requestFullscreen) {\n                viewer.requestFullscreen().catch(function () {\n                    setFullscreenState(true);\n                    syncFullscreenButton();\n                    refreshViewerDeferred();\n                });\n                return;\n            }\n\n            setFullscreenState(true);\n            syncFullscreenButton();\n            refreshViewerDeferred();\n        }\n\n        function exitFullscreen() {\n            if (document.fullscreenElement) {\n                if (document.exitFullscreen) {\n                    document.exitFullscreen().catch(function () {\n                        setFullscreenState(false);\n                        syncFullscreenButton();\n                        refreshViewerDeferred();\n                    });\n                    return;\n                }\n            }\n\n            setFullscreenState(false);\n            syncFullscreenButton();\n            refreshViewerDeferred();\n        }\n\n        function toggleFullscreen() {\n            if (document.fullscreenElement === viewer || viewer.classList.contains('is-fullscreen')) {\n                exitFullscreen();\n                return;\n            }\n\n            enterFullscreen();\n        }\n\n        function refreshViewerDeferred() {\n            window.setTimeout(function () {\n                if (pdfDoc) {\n                    refreshViewer();\n                }\n            }, 60);\n\n            window.setTimeout(function () {\n                if (pdfDoc) {\n                    refreshViewer();\n                }\n            }, 220);\n        }\n\n        function scheduleWarmup(pageNumber) {\n            if (!pdfDoc) {\n                return;\n            }\n\n            if (pageNumber < 1) {\n                return;\n            }\n\n            if (pageNumber > pdfDoc.numPages) {\n                return;\n            }\n\n            var cacheKey = String(pageNumber);\n            if (warmupPages[cacheKey]) {\n                return;\n            }\n\n            warmupPages[cacheKey] = true;\n\n            pdfDoc.getPage(pageNumber).then(function (page) {\n                return page.getOperatorList();\n            }).catch(function () {\n                warmupPages[cacheKey] = false;\n            });\n        }\n\n        function warmAdjacentPages(pageNumber) {\n            var step = getStep();\n\n            scheduleWarmup(pageNumber + step);\n            scheduleWarmup(pageNumber + step + step);\n            scheduleWarmup(pageNumber - step);\n            scheduleWarmup(pageNumber - step - step);\n        }\n\n        function getTurnSourceCanvas(direction) {\n            if (spreadMode) {\n                if (direction === 'next') {\n                    if (rightCanvas) {\n                        if (rightCanvas.width > 0) {\n                            if (rightCanvas.height > 0) {\n                                return rightCanvas;\n                            }\n                        }\n                    }\n                }\n            }\n\n            return leftCanvas;\n        }\n\n        function showTurnOverlay(direction) {\n            if (!turnOverlayNode || !spreadNode) {\n                return;\n            }\n\n            var sourceCanvas = getTurnSourceCanvas(direction);\n            if (!sourceCanvas || !sourceCanvas.width || !sourceCanvas.height) {\n                return;\n            }\n\n            var sourceRect = sourceCanvas.getBoundingClientRect();\n            var spreadRect = spreadNode.getBoundingClientRect();\n\n            if (!sourceRect.width || !sourceRect.height) {\n                return;\n            }\n\n            var card = document.createElement('div');\n            card.className = 'pdf-catalog-viewer__turn-card';\n            if (direction === 'prev') {\n                card.classList.add('is-prev');\n                card.style.transformOrigin = 'right center';\n            } else {\n                card.classList.add('is-next');\n                card.style.transformOrigin = 'left center';\n            }\n\n            card.style.left = (sourceRect.left - spreadRect.left) + 'px';\n            card.style.top = (sourceRect.top - spreadRect.top) + 'px';\n            card.style.width = sourceRect.width + 'px';\n            card.style.height = sourceRect.height + 'px';\n\n            var snapshot = document.createElement('canvas');\n            snapshot.width = sourceCanvas.width;\n            snapshot.height = sourceCanvas.height;\n            snapshot.style.width = '100%';\n            snapshot.style.height = '100%';\n            snapshot.getContext('2d').drawImage(sourceCanvas, 0, 0);\n            card.appendChild(snapshot);\n\n            clearTurnOverlay();\n            turnOverlayNode.hidden = false;\n            turnOverlayNode.appendChild(card);\n\n            turnTimer = window.setTimeout(function () {\n                clearTurnOverlay();\n            }, 760);\n        }\n\n        function resizeCanvasToPage(page, canvas, context, scale, outputScale) {\n            var viewport = page.getViewport({ scale: scale * outputScale });\n            canvas.width = Math.floor(viewport.width);\n            canvas.height = Math.floor(viewport.height);\n            canvas.style.width = Math.floor(viewport.width \/ outputScale) + 'px';\n            canvas.style.height = Math.floor(viewport.height \/ outputScale) + 'px';\n\n            return viewport;\n        }\n\n        function renderPageOnCanvas(pageNumber, canvas, context, scale) {\n            return pdfDoc.getPage(pageNumber).then(function (page) {\n                var outputScale = window.devicePixelRatio || 1;\n                var viewport = resizeCanvasToPage(page, canvas, context, scale, outputScale);\n\n                return page.render({\n                    canvasContext: context,\n                    viewport: viewport\n                }).promise;\n            });\n        }\n\n        function buildStrip() {\n            if (!stripNode || !pdfDoc) {\n                return;\n            }\n\n            stripNode.innerHTML = '';\n\n            var step = getStep();\n            var page = 1;\n\n            while (page <= pdfDoc.numPages) {\n                (function (startPage) {\n                    var endPage = spreadMode ? startPage + 1 : startPage;\n                    if (endPage > pdfDoc.numPages) {\n                        endPage = pdfDoc.numPages;\n                    }\n\n                    var button = document.createElement('button');\n                    button.type = 'button';\n                    button.className = 'pdf-catalog-viewer__thumb';\n                    button.setAttribute('data-pdf-catalog-thumb', '');\n                    button.setAttribute('data-start-page', String(startPage));\n                    button.innerHTML = '<span class=\"pdf-catalog-viewer__thumb-range\">' + startPage + (endPage !== startPage ? '-' + endPage : '') + '<\/span>';\n\n                    button.addEventListener('click', function () {\n                        renderDirection = startPage < currentPage ? 'prev' : 'next';\n                        queueRenderPage(startPage);\n                    });\n\n                    stripNode.appendChild(button);\n                })(page);\n\n                page = page + step;\n            }\n        }\n\n        function updateStripActive() {\n            if (!stripNode) {\n                return;\n            }\n\n            var buttons = stripNode.querySelectorAll('[data-pdf-catalog-thumb]');\n            var activeButton = null;\n            buttons.forEach(function (button) {\n                var startPage = parseInt(button.getAttribute('data-start-page') || '1', 10);\n                var endPage = spreadMode ? startPage + 1 : startPage;\n                var active = false;\n\n                if (spreadMode) {\n                    if (currentPage === startPage) {\n                        active = true;\n                    }\n                } else {\n                    if (currentPage === startPage) {\n                        active = true;\n                    }\n                }\n\n                if (active) {\n                    button.classList.add('is-active');\n                    activeButton = button;\n                } else {\n                    button.classList.remove('is-active');\n                }\n            });\n\n            if (activeButton) {\n                if (stripNode.scrollTo) {\n                    window.requestAnimationFrame(function () {\n                        var stripRect = stripNode.getBoundingClientRect();\n                        var buttonRect = activeButton.getBoundingClientRect();\n                        var left = stripNode.scrollLeft + (buttonRect.left - stripRect.left) - (stripRect.width \/ 2) + (buttonRect.width \/ 2);\n\n                        stripNode.scrollTo({\n                            left: Math.max(0, left),\n                            behavior: 'smooth'\n                        });\n                    });\n                }\n            }\n        }\n\n        function syncZoomSurface() {\n            if (!zoomSurface) {\n                return;\n            }\n\n            if (stage) {\n                if (spreadNode) {\n                    var stageWidth = stage.clientWidth - 8;\n                    var stageHeight = stage.clientHeight - 8;\n                    var contentWidth = spreadNode.scrollWidth * zoomLevel;\n                    var contentHeight = spreadNode.scrollHeight * zoomLevel;\n                    var maxPanX = Math.max(0, (contentWidth - stageWidth) \/ 2);\n                    var maxPanY = Math.max(0, (contentHeight - stageHeight) \/ 2);\n\n                    panX = clamp(panX, -maxPanX, maxPanX);\n                    panY = clamp(panY, -maxPanY, maxPanY);\n                }\n            }\n\n            zoomSurface.style.transform = 'translate(' + panX + 'px, ' + panY + 'px) scale(' + zoomLevel + ')';\n        }\n\n        function updateZoomControls() {\n            if (zoomSlider) {\n                zoomSlider.value = String(zoomLevel);\n            }\n\n            if (zoomOutButton) {\n                zoomOutButton.disabled = zoomLevel <= 1;\n            }\n\n            if (zoomInButton) {\n                zoomInButton.disabled = zoomLevel >= 10;\n            }\n        }\n\n        function toggleZoomPanel(forceOpen) {\n            if (!zoomPanel || !zoomToggleButton) {\n                return;\n            }\n\n            var shouldOpen = typeof forceOpen === 'boolean' ? forceOpen : zoomPanel.hidden;\n            zoomPanel.hidden = !shouldOpen;\n            zoomToggleButton.setAttribute('aria-expanded', shouldOpen ? 'true' : 'false');\n        }\n\n        function syncStageTouchAction() {\n            if (!stage) {\n                return;\n            }\n\n            stage.style.touchAction = zoomLevel > 1 ? 'none' : 'pan-y';\n        }\n\n        function centerZoomViewport() {\n            panX = 0;\n            panY = 0;\n            syncZoomSurface();\n        }\n\n        function preserveZoomFocus(previousZoom, nextZoom) {\n            if (!stage) {\n                return;\n            }\n\n            if (previousZoom <= 0) {\n                return;\n            }\n\n            var viewportCenterX = stage.clientWidth \/ 2;\n            var viewportCenterY = stage.clientHeight \/ 2;\n            var focusX = (viewportCenterX - panX) \/ previousZoom;\n            var focusY = (viewportCenterY - panY) \/ previousZoom;\n\n            panX = viewportCenterX - (focusX * nextZoom);\n            panY = viewportCenterY - (focusY * nextZoom);\n        }\n\n        function setZoomLevel(nextZoom, shouldCenter) {\n            var normalized = nextZoom;\n            var previousZoom = zoomLevel;\n\n            if (normalized < 1) {\n                normalized = 1;\n            }\n\n            if (normalized > 10) {\n                normalized = 10;\n            }\n\n            zoomLevel = Math.round(normalized * 100) \/ 100;\n            updateZoomControls();\n            syncStageTouchAction();\n\n            if (shouldCenter) {\n                if (previousZoom !== zoomLevel) {\n                    preserveZoomFocus(previousZoom, zoomLevel);\n                    syncZoomSurface();\n                } else {\n                    centerZoomViewport();\n                }\n            } else {\n                syncZoomSurface();\n            }\n\n            scheduleZoomRefresh();\n        }\n\n        function nudgeZoom(direction) {\n            var delta = direction === 'in' ? 0.25 : -0.25;\n            setZoomLevel(zoomLevel + delta, true);\n        }\n\n        function beginStripPointerDrag(event) {\n            if (!stripNode) {\n                return;\n            }\n\n            if (event.pointerType === 'mouse') {\n                if (event.button !== 0) {\n                    return;\n                }\n            }\n\n            stripPointerId = event.pointerId;\n            stripPointerStartX = event.clientX;\n            stripPointerStartScrollLeft = stripNode.scrollLeft;\n            stripPointerDragging = false;\n        }\n\n        function moveStripPointerDrag(event) {\n            if (!stripNode) {\n                return;\n            }\n\n            if (stripPointerId === null) {\n                return;\n            }\n\n            if (event.pointerId !== stripPointerId) {\n                return;\n            }\n\n            var deltaX = event.clientX - stripPointerStartX;\n            if (!stripPointerDragging) {\n                if (Math.abs(deltaX) < 6) {\n                    return;\n                }\n\n                stripPointerDragging = true;\n            }\n\n            event.preventDefault();\n            stripNode.scrollLeft = stripPointerStartScrollLeft - deltaX;\n        }\n\n        function endStripPointerDrag(event) {\n            if (!stripNode) {\n                return;\n            }\n\n            if (stripPointerId === null) {\n                return;\n            }\n\n            if (event.pointerId !== stripPointerId) {\n                return;\n            }\n\n            stripPointerId = null;\n            stripPointerDragging = false;\n        }\n\n        function beginStagePointerPan(event) {\n            if (!stage) {\n                return;\n            }\n\n            if (zoomLevel <= 1) {\n                return;\n            }\n\n            if (event.pointerType === 'mouse') {\n                if (event.button !== 0) {\n                    return;\n                }\n            }\n\n            if (event.target) {\n                if (event.target.closest) {\n                    if (event.target.closest('button, a, input, label')) {\n                        return;\n                    }\n                }\n            }\n\n            if (stagePointerId !== null) {\n                return;\n            }\n\n            stagePointerId = event.pointerId;\n            stagePointerStartX = event.clientX;\n            stagePointerStartY = event.clientY;\n            stagePointerStartScrollLeft = panX;\n            stagePointerStartScrollTop = panY;\n            stagePointerDragging = false;\n        }\n\n        function moveStagePointerPan(event) {\n            if (!stage) {\n                return;\n            }\n\n            if (stagePointerId === null) {\n                return;\n            }\n\n            if (event.pointerId !== stagePointerId) {\n                return;\n            }\n\n            var deltaX = event.clientX - stagePointerStartX;\n            var deltaY = event.clientY - stagePointerStartY;\n\n            if (!stagePointerDragging) {\n                if (Math.abs(deltaX) < 4) {\n                    if (Math.abs(deltaY) < 4) {\n                        return;\n                    }\n                }\n\n                stagePointerDragging = true;\n            }\n\n            event.preventDefault();\n            panX = stagePointerStartScrollLeft + deltaX;\n            panY = stagePointerStartScrollTop + deltaY;\n            syncZoomSurface();\n        }\n\n        function endStagePointerPan(event) {\n            if (!stage) {\n                return;\n            }\n\n            if (stagePointerId === null) {\n                return;\n            }\n\n            if (event.pointerId !== stagePointerId) {\n                return;\n            }\n\n            stagePointerId = null;\n            stagePointerDragging = false;\n        }\n\n        function renderView() {\n            if (!pdfDoc) {\n                return;\n            }\n\n            rendering = true;\n            setLoadingState(true);\n            hideError();\n            updateSpreadMode();\n\n            var frame = viewer.querySelector('[data-pdf-catalog-spread]');\n            var availableWidth = 0;\n            var availableHeight = 0;\n\n            if (spreadNode) {\n                availableWidth = spreadNode.clientWidth;\n                availableHeight = spreadNode.clientHeight;\n            }\n\n            if (availableWidth < 280) {\n                availableWidth = 280;\n            }\n\n            if (availableHeight < 320) {\n                availableHeight = 320;\n            }\n\n            var leftPageNumber = currentPage;\n            var rightPageNumber = getVisibleEndPage(currentPage);\n            var hasRightPage = spreadMode;\n            var compactLayout = !isWideLayout();\n\n            if (rightPageNumber <= leftPageNumber) {\n                hasRightPage = false;\n            }\n\n            if (pdfDoc) {\n                if (rightPageNumber > pdfDoc.numPages) {\n                    hasRightPage = false;\n                }\n            }\n\n            if (rightPane) {\n                if (hasRightPage) {\n                    rightPane.hidden = false;\n                    rightPane.style.display = 'flex';\n                    rightPane.classList.remove('is-empty');\n                } else {\n                    if (spreadMode) {\n                        rightPane.hidden = false;\n                        rightPane.style.display = 'flex';\n                        rightPane.classList.add('is-empty');\n                    } else {\n                        rightPane.hidden = true;\n                        rightPane.style.display = 'none';\n                        rightPane.classList.remove('is-empty');\n                    }\n                }\n            }\n\n            clearCanvas(leftCanvas, leftContext);\n            clearCanvas(rightCanvas, rightContext);\n\n            if (leftPane) {\n                leftPane.style.width = '';\n            }\n\n            if (rightPane) {\n                rightPane.style.width = '';\n            }\n\n            Promise.all([\n                pdfDoc.getPage(leftPageNumber),\n                hasRightPage ? pdfDoc.getPage(rightPageNumber) : Promise.resolve(null)\n            ]).then(function (pages) {\n                var leftPage = pages[0];\n                var rightPage = pages[1];\n                var leftBase = leftPage.getViewport({ scale: 1 });\n                var rightBase = rightPage ? rightPage.getViewport({ scale: 1 }) : null;\n                var gap = spreadMode ? 0 : 0;\n                var scale = 1;\n\n                if (spreadMode) {\n                    if (rightBase) {\n                        var totalBaseWidth = leftBase.width + rightBase.width;\n                        var maxBaseHeight = Math.max(leftBase.height, rightBase.height);\n                        var widthScale = (availableWidth - gap) \/ totalBaseWidth;\n                        var heightScale = availableHeight \/ maxBaseHeight;\n                        scale = Math.min(widthScale, heightScale);\n                        if (scale > 4.1) {\n                            scale = 4.1;\n                        }\n                    } else {\n                        scale = Math.min((availableWidth \/ 2) \/ leftBase.width, availableHeight \/ leftBase.height);\n                        if (scale > 4.1) {\n                            scale = 4.1;\n                        }\n                    }\n                } else {\n                    scale = Math.min(availableWidth \/ leftBase.width, availableHeight \/ leftBase.height);\n\n                    if (scale > 4.1) {\n                        scale = 4.1;\n                    }\n                }\n\n                var displayScale = scale;\n                var renderScale = scale * zoomLevel * zoomQualityBoost;\n                if (renderScale > 6) {\n                    renderScale = 6;\n                }\n\n                var outputScale = window.devicePixelRatio || 1;\n                var leftViewport = leftPage.getViewport({ scale: renderScale * outputScale });\n                leftCanvas.width = Math.floor(leftViewport.width);\n                leftCanvas.height = Math.floor(leftViewport.height);\n                leftCanvas.style.width = Math.floor(leftBase.width * displayScale) + 'px';\n                leftCanvas.style.height = Math.floor(leftBase.height * displayScale) + 'px';\n\n                if (leftPane) {\n                    leftPane.style.width = leftCanvas.style.width;\n                }\n\n                var leftRender = leftPage.render({\n                    canvasContext: leftContext,\n                    viewport: leftViewport\n                }).promise;\n\n                var rightRender = Promise.resolve();\n\n                if (rightPage) {\n                    if (rightPane) {\n                        var rightViewport = rightPage.getViewport({ scale: renderScale * outputScale });\n                        rightCanvas.width = Math.floor(rightViewport.width);\n                        rightCanvas.height = Math.floor(rightViewport.height);\n                        rightCanvas.style.width = Math.floor(rightBase.width * displayScale) + 'px';\n                        rightCanvas.style.height = Math.floor(rightBase.height * displayScale) + 'px';\n\n                        rightPane.style.width = rightCanvas.style.width;\n\n                        rightRender = rightPage.render({\n                            canvasContext: rightContext,\n                            viewport: rightViewport\n                        }).promise;\n                    }\n                } else {\n                    clearCanvas(rightCanvas, rightContext);\n                    if (rightPane) {\n                        rightPane.style.width = leftCanvas.style.width;\n                    }\n                }\n\n                return Promise.all([leftRender, rightRender]);\n            }).then(function () {\n                rendering = false;\n                setLoadingState(false);\n\n                syncZoomSurface();\n\n                if (pendingPage !== null) {\n                    var nextPage = pendingPage;\n                    pendingPage = null;\n                    queueRenderPage(nextPage);\n                    return;\n                }\n\n                if (pendingZoomRefresh) {\n                    pendingZoomRefresh = false;\n                    renderView();\n                    return;\n                }\n\n                warmAdjacentPages(currentPage);\n                updateNavigation();\n            }).catch(function (renderError) {\n                rendering = false;\n                setLoadingState(false);\n                if (renderError) {\n                    if (renderError.name === 'RenderingCancelledException') {\n                        return;\n                    }\n\n                    if (renderError.message) {\n                        if (renderError.message.indexOf('Cannot use the same canvas') !== -1) {\n                            return;\n                        }\n\n                        if (renderError.message.indexOf('Rendering cancelled') !== -1) {\n                            return;\n                        }\n                    }\n                }\n\n                if (window.console && console.warn) {\n                    console.warn(renderError);\n                }\n            });\n        }\n\n        function queueRenderPage(num) {\n            if (!pdfDoc) {\n                return;\n            }\n\n            var nextPage = getVisibleStartPage(num);\n            renderDirection = nextPage < currentPage ? 'prev' : 'next';\n\n            if (rendering) {\n                pendingPage = nextPage;\n                return;\n            }\n\n            panX = 0;\n            panY = 0;\n            syncZoomSurface();\n            showTurnOverlay(renderDirection);\n            currentPage = nextPage;\n            renderView();\n        }\n\n        function refreshViewer() {\n            if (!pdfDoc) {\n                return;\n            }\n\n            if (currentPage > pdfDoc.numPages) {\n                currentPage = pdfDoc.numPages;\n            }\n\n            currentPage = getVisibleStartPage(currentPage);\n            buildStrip();\n            panX = 0;\n            panY = 0;\n            syncZoomSurface();\n            renderView();\n            updateNavigation();\n        }\n\n        function openViewer(url, title, downloadUrl) {\n            activeUrl = url;\n            activeTitle = title;\n\n            viewer.hidden = false;\n            viewer.setAttribute('aria-hidden', 'false');\n            setFullscreenState(false);\n            syncFullscreenButton();\n\n            if (titleNode) {\n                titleNode.textContent = title;\n            }\n\n            if (downloadNode) {\n                downloadNode.href = downloadUrl || url;\n            }\n\n            setLoadingState(true);\n            hideError();\n            currentPage = 1;\n            pdfDoc = null;\n            spreadMode = false;\n            clearWarmupState();\n            toggleZoomPanel(false);\n            panX = 0;\n            panY = 0;\n            setZoomLevel(1, false);\n            syncStageTouchAction();\n            buildStrip();\n            updateNavigation();\n\n            loadPdfJs().then(function (pdfjsLib) {\n                return pdfjsLib.getDocument({ url: url }).promise;\n            }).then(function (documentInstance) {\n                if (!viewer || viewer.hidden || activeUrl !== url) {\n                    return;\n                }\n\n                pdfDoc = documentInstance;\n                currentPage = 1;\n                updateSpreadMode();\n                buildStrip();\n                updateNavigation();\n                renderView();\n                warmAdjacentPages(currentPage);\n            }).catch(function () {\n                setLoadingState(false);\n                showError(catalogLabels.error || 'Could not load the catalog.');\n            });\n        }\n\n        prevButtons.forEach(function (button) {\n            button.addEventListener('click', function () {\n                if (!pdfDoc || currentPage <= 1) {\n                    return;\n                }\n\n                renderDirection = 'prev';\n                queueRenderPage(currentPage - getStep());\n            });\n        });\n\n        nextButtons.forEach(function (button) {\n            button.addEventListener('click', function () {\n                if (!pdfDoc || currentPage >= pdfDoc.numPages) {\n                    return;\n                }\n\n                renderDirection = 'next';\n                queueRenderPage(currentPage + getStep());\n            });\n        });\n\n        if (fullscreenButton) {\n            fullscreenButton.addEventListener('click', toggleFullscreen);\n        }\n\n        if (zoomToggleButton) {\n            zoomToggleButton.addEventListener('click', function () {\n                toggleZoomPanel();\n            });\n        }\n\n        if (zoomSlider) {\n            zoomSlider.addEventListener('input', function () {\n                var nextZoom = parseFloat(zoomSlider.value);\n                if (isNaN(nextZoom)) {\n                    nextZoom = 1;\n                }\n\n                setZoomLevel(nextZoom, true);\n            });\n        }\n\n        if (zoomOutButton) {\n            zoomOutButton.addEventListener('click', function () {\n                nudgeZoom('out');\n            });\n        }\n\n        if (zoomInButton) {\n            zoomInButton.addEventListener('click', function () {\n                nudgeZoom('in');\n            });\n        }\n\n        if (stripNode) {\n            stripNode.addEventListener('pointerdown', beginStripPointerDrag);\n            stripNode.addEventListener('pointermove', moveStripPointerDrag);\n            stripNode.addEventListener('pointerup', endStripPointerDrag);\n            stripNode.addEventListener('pointercancel', endStripPointerDrag);\n        }\n\n        if (stage) {\n            stage.addEventListener('pointerdown', beginStagePointerPan);\n            stage.addEventListener('pointermove', moveStagePointerPan);\n            stage.addEventListener('pointerup', endStagePointerPan);\n            stage.addEventListener('pointercancel', endStagePointerPan);\n        }\n\n        document.addEventListener('fullscreenchange', function () {\n            if (document.fullscreenElement === viewer) {\n                setFullscreenState(true);\n            } else {\n                setFullscreenState(false);\n            }\n\n            syncFullscreenButton();\n            if (pdfDoc) {\n                refreshViewerDeferred();\n            }\n        });\n\n        var touchStartX = 0;\n\n        stage.addEventListener('touchstart', function (event) {\n            if (zoomLevel > 1) {\n                return;\n            }\n\n            if (!event.changedTouches || !event.changedTouches[0]) {\n                return;\n            }\n\n            touchStartX = event.changedTouches[0].clientX;\n        }, { passive: true });\n\n        syncStageTouchAction();\n\n        stage.addEventListener('touchend', function (event) {\n            if (zoomLevel > 1) {\n                return;\n            }\n\n            if (!event.changedTouches || !event.changedTouches[0]) {\n                return;\n            }\n\n            if (!pdfDoc) {\n                return;\n            }\n\n            var touchEndX = event.changedTouches[0].clientX;\n            var delta = touchEndX - touchStartX;\n\n            if (Math.abs(delta) < 48) {\n                return;\n            }\n\n            if (delta < 0) {\n                if (currentPage < pdfDoc.numPages) {\n                    renderDirection = 'next';\n                    queueRenderPage(currentPage + getStep());\n                }\n            }\n\n            if (delta > 0) {\n                if (currentPage > 1) {\n                    renderDirection = 'prev';\n                    queueRenderPage(currentPage - getStep());\n                }\n            }\n        }, { passive: true });\n\n        window.addEventListener('resize', function () {\n            if (resizeTimer) {\n                window.clearTimeout(resizeTimer);\n            }\n\n            resizeTimer = window.setTimeout(function () {\n                if (pdfDoc) {\n                    refreshViewer();\n                }\n            }, 120);\n        });\n\n        openViewer(catalogUrl, viewer.getAttribute('data-pdf-title') || '', viewer.getAttribute('data-pdf-download') || catalogUrl);\n    });\n})();\n<\/script>\n\n\n\n\n<style>\n    .acf-wysiwyg {\n        margin: 30px 0;\n    }\n\n    .acf-wysiwyg img {\n        height: auto;\n    }\n\n    .news-text, p {\n        font-family: Open-Sans-Hebrew-Regular, sans-serif;\n    }\n\n    .news-text, .text-image__inner-block .text-image__content {\n        max-width: 48.5vw;\n        margin: 0 auto;\n        font-size: 18px;\n        line-height: 160%;\n        text-indent: 12px;\n        font-family: Open-Sans-Hebrew-Regular, sans-serif;\n    }\n\n    .images-block.images-block-second img {\n        width: initial;\n    }\n\n    .images-block {\n        display: flex;\n        align-items: center;\n        justify-content: space-around;\n        gap: 30px;\n    }\n\n    .custom-image-block-overlay {\n        max-width: 387px;\n        position: absolute;\n        top: 50%;\n        transform: translateY(-50%);\n        color: #fff;\n        right: 10%;\n        font-family: Open-Sans-Hebrew-Regular, sans-serif;\n        font-size: 18px;\n        line-height: 160%;\n        text-indent: 12px;\n    }\n\n    .text-image__inner-block {\n        display: grid;\n        grid-template-columns: 1fr 1.1fr;\n        align-items: center;\n        max-width: 966px;\n        margin: 50px auto 0;\n        gap: 30px;\n    }\n\n    .images-block.images-block-second {\n        max-width: 930px;\n        margin: 60px auto;\n    }\n\n    @media (min-width: 1921px) {\n        .news-text, .text-image__inner-block .text-image__content {\n            font-size: 0.95vw!important;\n        }\n\n        .text-image__inner-block, .images-block.images-block-second {\n            max-width: 48.5vw!important;\n        }\n    }\n\n    @media (max-width: 1300px) {\n        .images-block.images-block-second {\n            flex-direction: column;\n        }\n    }\n\n    @media (max-width: 991px) {\n        .news-text {\n            max-width: 100%;\n        }\n\n        .images-block {\n            flex-direction: column;\n        }\n    }\n\n    @media (max-width: 767px) {\n        .text-image__inner-block {\n            grid-template-columns: 1fr;\n        }\n\n        .text-image__inner-block .text-image__content {\n            max-width: 100%\n        }\n    }\n\n<\/style>","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-233","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/alpine-crown.com\/en\/wp-json\/wp\/v2\/pages\/233","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alpine-crown.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/alpine-crown.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/alpine-crown.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/alpine-crown.com\/en\/wp-json\/wp\/v2\/comments?post=233"}],"version-history":[{"count":1,"href":"https:\/\/alpine-crown.com\/en\/wp-json\/wp\/v2\/pages\/233\/revisions"}],"predecessor-version":[{"id":6237,"href":"https:\/\/alpine-crown.com\/en\/wp-json\/wp\/v2\/pages\/233\/revisions\/6237"}],"wp:attachment":[{"href":"https:\/\/alpine-crown.com\/en\/wp-json\/wp\/v2\/media?parent=233"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}