{"id":91529,"date":"2026-09-11T10:03:22","date_gmt":"2026-09-11T09:03:22","guid":{"rendered":"https:\/\/staging.academiaclinicadragao.com\/?page_id=91529"},"modified":"2026-10-29T09:44:54","modified_gmt":"2026-10-29T09:44:54","slug":"portal-dos-estudantes","status":"publish","type":"page","link":"https:\/\/staging.academiaclinicadragao.com\/en\/portal-dos-estudantes\/","title":{"rendered":"Student Portal"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"91529\" class=\"elementor elementor-91529\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-8e0bd60 elementor-section-boxed elementor-section-height-default elementor-section-height-default wd-section-disabled\" data-id=\"8e0bd60\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[],&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-a892da7\" data-id=\"a892da7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-3fd0c8a elementor-widget elementor-widget-html\" data-id=\"3fd0c8a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\r\n<!-- FULL PAGE LOADING SCREEN -->\r\n\r\n<div id=\"student-page-loader\" role=\"status\" aria-live=\"polite\">\r\n    <div class=\"student-loader-content\">\r\n\r\n        <div class=\"student-loader-spinner\"><\/div>\r\n\r\n        <h2>Portal dos Estudantes<\/h2>\r\n\r\n        <p>A preparar a sua \u00e1rea pessoal...<\/p>\r\n\r\n    <\/div>\r\n<\/div>\r\n\r\n<style>\r\n\/* =========================================\r\n   FULL PAGE LOADER\r\n========================================= *\/\r\n\r\n#student-page-loader {\r\n    position: fixed !important;\r\n    inset: 0 !important;\r\n\r\n    width: 100vw !important;\r\n    height: 100vh !important;\r\n    height: 100dvh !important;\r\n\r\n    z-index: 999999 !important;\r\n\r\n    display: flex !important;\r\n    align-items: center;\r\n    justify-content: center;\r\n\r\n    background: #f4f8ff !important;\r\n\r\n    opacity: 1;\r\n    visibility: visible;\r\n\r\n    transition:\r\n        opacity 0.35s ease,\r\n        visibility 0.35s ease;\r\n}\r\n\r\n#student-page-loader.student-loader-finished {\r\n    opacity: 0 !important;\r\n    visibility: hidden !important;\r\n    pointer-events: none !important;\r\n}\r\n\r\n#student-page-loader .student-loader-content {\r\n    display: flex;\r\n    flex-direction: column;\r\n    align-items: center;\r\n\r\n    gap: 15px;\r\n    padding: 30px;\r\n\r\n    text-align: center;\r\n}\r\n\r\n#student-page-loader .student-loader-spinner {\r\n    width: 55px;\r\n    height: 55px;\r\n\r\n    border: 5px solid #dbeafe;\r\n    border-top-color: #258cfa;\r\n\r\n    border-radius: 50%;\r\n\r\n    animation: studentLoaderSpin 0.8s linear infinite;\r\n}\r\n\r\n#student-page-loader h2 {\r\n    margin: 0 !important;\r\n\r\n    color: #1559e8 !important;\r\n    font-size: 25px !important;\r\n    font-weight: 700 !important;\r\n\r\n    text-transform: none !important;\r\n}\r\n\r\n#student-page-loader p {\r\n    margin: 0 !important;\r\n\r\n    color: #2269f0 !important;\r\n    font-size: 15px !important;\r\n}\r\n\r\n\r\n\r\n@keyframes studentLoaderSpin {\r\n    to {\r\n        transform: rotate(360deg);\r\n    }\r\n}\r\n\r\n@media (prefers-reduced-motion: reduce) {\r\n    #student-page-loader .student-loader-spinner {\r\n        animation-duration: 2s;\r\n    }\r\n}\r\n<\/style>\r\n\r\n\r\n<script>\r\n(function () {\r\n\r\n    const MAX_WAIT = 15000;\r\n    let finished = false;\r\n\r\n    function finishLoading() {\r\n\r\n        if (finished) return;\r\n\r\n        const loader = document.getElementById(\r\n            \"student-page-loader\"\r\n        );\r\n\r\n        if (!loader) return;\r\n\r\n        finished = true;\r\n\r\n        loader.classList.add(\r\n            \"student-loader-finished\"\r\n        );\r\n\r\n        \/\/ Remove loader after the fade-out animation\r\n        setTimeout(function () {\r\n            loader.remove();\r\n        }, 400);\r\n    }\r\n\r\n    function checkOpportunitiesReady() {\r\n\r\n        const carousel = document.querySelector(\r\n            \".training-opportunities-widget.opportunities-ready\"\r\n        );\r\n\r\n        if (carousel) {\r\n            finishLoading();\r\n        }\r\n    }\r\n\r\n    \/\/ Wait for the carousel's readiness notification\r\n    window.addEventListener(\r\n        \"student:opportunities-ready\",\r\n        finishLoading,\r\n        { once: true }\r\n    );\r\n\r\n    \/\/ In case the carousel finished before this script ran\r\n    checkOpportunitiesReady();\r\n\r\n    \/\/ Check again when Elementor's HTML is ready\r\n    if (document.readyState === \"loading\") {\r\n\r\n        document.addEventListener(\r\n            \"DOMContentLoaded\",\r\n            checkOpportunitiesReady,\r\n            { once: true }\r\n        );\r\n\r\n    }\r\n\r\n    \/\/ Emergency fallback if something fails\r\n    setTimeout(function () {\r\n\r\n        if (!finished) {\r\n\r\n            console.warn(\r\n                \"Student Portal: Carousel took too long to load.\"\r\n            );\r\n\r\n            finishLoading();\r\n\r\n        }\r\n\r\n    }, MAX_WAIT);\r\n\r\n})();\r\n<\/script>\r\n\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0fd26be elementor-widget elementor-widget-wd_title\" data-id=\"0fd26be\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wd_title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"title-wrapper set-mb-s reset-last-child wd-title-color-default wd-title-style-default wd-title-size-default text-left\">\n\n\t\t\t\n\t\t\t<div class=\"liner-continer\">\n\t\t\t\t<h4 class=\"woodmart-title-container title wd-fontsize-l\">Portal do Estudante<\/h4> \n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-81e5be5 elementor-section-boxed elementor-section-height-default elementor-section-height-default wd-section-disabled\" data-id=\"81e5be5\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-528a480 detalhes-aluno\" data-id=\"528a480\" data-element_type=\"column\" data-e-type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-1defa9a dados-aluno elementor-section-boxed elementor-section-height-default elementor-section-height-default wd-section-disabled\" data-id=\"1defa9a\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t\t\t\t<div class=\"elementor-background-overlay\"><\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-118d22a\" data-id=\"118d22a\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-079cbae elementor-widget__width-initial student-photo elementor-widget elementor-widget-image\" data-id=\"079cbae\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"300\" height=\"200\" src=\"https:\/\/staging.academiaclinicadragao.com\/wp-content\/themes\/woodmart\/images\/lazy.png\" class=\"attachment-medium size-medium wp-image-71417 wd-lazy-load wd-lazy-fade\" alt=\"\" srcset=\"\" sizes=\"(max-width: 300px) 100vw, 300px\" data-wood-src=\"https:\/\/staging.academiaclinicadragao.com\/wp-content\/uploads\/2024\/06\/placeholder-21-300x200.png\" data-srcset=\"https:\/\/staging.academiaclinicadragao.com\/wp-content\/uploads\/2024\/06\/placeholder-21-300x200.png 300w, https:\/\/staging.academiaclinicadragao.com\/wp-content\/uploads\/2024\/06\/placeholder-21-1024x683.png 1024w, https:\/\/staging.academiaclinicadragao.com\/wp-content\/uploads\/2024\/06\/placeholder-21-768x512.png 768w, https:\/\/staging.academiaclinicadragao.com\/wp-content\/uploads\/2024\/06\/placeholder-21-18x12.png 18w, https:\/\/staging.academiaclinicadragao.com\/wp-content\/uploads\/2024\/06\/placeholder-21-600x400.png 600w, https:\/\/staging.academiaclinicadragao.com\/wp-content\/uploads\/2024\/06\/placeholder-21-150x100.png 150w, https:\/\/staging.academiaclinicadragao.com\/wp-content\/uploads\/2024\/06\/placeholder-21.png 1200w\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e59fcaf student-number elementor-widget elementor-widget-wd_text_block\" data-id=\"e59fcaf\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wd_text_block.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"wd-text-block reset-last-child text-center\">\n\t\t\t\n\t\t\t<p>N\u00ba estudante: XXXXXX<span style=\"font-size: 18px; background-color: rgba(255, 255, 255, 0);\"><\/span><\/p>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-ee1166b\" data-id=\"ee1166b\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-9b5b697 student-greeting elementor-widget elementor-widget-wd_text_block\" data-id=\"9b5b697\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wd_text_block.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"wd-text-block reset-last-child text-left\">\n\t\t\t\n\t\t\t<h6>Ol\u00e1, Jo\u00e3o Silva<span style=\"font-size: 16px; background-color: rgba(255, 255, 255, 0); color: rgb(36, 36, 36);\"><\/span><\/h6>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b0844a6 elementor-widget elementor-widget-html\" data-id=\"b0844a6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<a href=\".\/perfil\" class=\"perfil-link\">\r\n    <span class=\"perfil-text\">O meu perfil<\/span>\r\n    <span class=\"perfil-arrow\">\r\n        <svg viewBox=\"0 0 24 24\"\r\n             width=\"20\" height=\"20\"\r\n             fill=\"none\" stroke=\"currentColor\"\r\n             stroke-width=\"2\"\r\n             aria-hidden=\"true\">\r\n            <path d=\"m9 5 7 7-7 7\"\/>\r\n        <\/svg>\r\n    <\/span>\r\n<\/a>\r\n\r\n<style>\r\n.perfil-link {\r\n    display: inline-flex !important;\r\n    width: fit-content !important;\r\n    align-items: center !important;\r\n    justify-content: flex-start !important;\r\n    gap: 8px !important;\r\n    color: #3978ff !important;\r\n    text-decoration: none !important;\r\n}\r\n\r\n.perfil-link .perfil-text {\r\n    display: inline-block !important;\r\n    color: inherit !important;\r\n    border-bottom: 1px solid currentColor !important;\r\n    font-size: 16px;\r\n    padding-bottom: 2px;\r\n    line-height: 0.5;\r\n}\r\n\r\n.perfil-link .perfil-arrow {\r\n    width: 28px;\r\n    height: 28px;\r\n    flex: 0 0 28px;\r\n    border: 2px solid currentColor;\r\n    border-radius: 50%;\r\n    display: inline-flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n}\r\n\r\n.perfil-link:hover {\r\n    color: #0052c4 !important;\r\n}\r\n<\/style>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b3bda97 elementor-widget elementor-widget-html\" data-id=\"b3bda97\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\r\n<div class=\"portal-layout\">\r\n\r\n  <!-- LEFT COLUMN: BLUE BUTTONS -->\r\n  <div class=\"portal-buttons\">\r\n\r\n    <!-- OS MEUS CURSOS -->\r\n    <a href=\".\/os-meus-cursos\"\r\n       class=\"portal-button\">\r\n\r\n      <span class=\"portal-button-icon\">\r\n        <i class=\"icon icon-graduation-hat\"\r\n           aria-hidden=\"true\"><\/i>\r\n      <\/span>\r\n\r\n      <span class=\"portal-button-text\">\r\n        Os meus cursos\r\n      <\/span>\r\n\r\n      <span class=\"portal-button-arrow\">\r\n        <svg viewBox=\"0 0 24 24\"\r\n             width=\"20\" height=\"20\"\r\n             fill=\"none\"\r\n             stroke=\"currentColor\"\r\n             stroke-width=\"2\"\r\n             stroke-linecap=\"round\"\r\n             stroke-linejoin=\"round\"\r\n             aria-hidden=\"true\">\r\n          <path d=\"m9 5 7 7-7 7\"\/>\r\n        <\/svg>\r\n      <\/span>\r\n\r\n    <\/a>\r\n\r\n    <!-- DIPLOMAS -->\r\n    <a href=\".\/diplomas-e-certificados\"\r\n       class=\"portal-button\">\r\n\r\n      <span class=\"portal-button-icon\">\r\n        <i class=\"icon icon-diploma\"\r\n           aria-hidden=\"true\"><\/i>\r\n      <\/span>\r\n\r\n      <span class=\"portal-button-text\">\r\n        Diplomas, certificados e declara\u00e7\u00f5es\r\n      <\/span>\r\n\r\n      <span class=\"portal-button-arrow\">\r\n        <svg viewBox=\"0 0 24 24\"\r\n             width=\"20\" height=\"20\"\r\n             fill=\"none\"\r\n             stroke=\"currentColor\"\r\n             stroke-width=\"2\"\r\n             stroke-linecap=\"round\"\r\n             stroke-linejoin=\"round\"\r\n             aria-hidden=\"true\">\r\n          <path d=\"m9 5 7 7-7 7\"\/>\r\n        <\/svg>\r\n      <\/span>\r\n\r\n    <\/a>\r\n\r\n  <\/div>\r\n\r\n  <!-- RIGHT COLUMN: FAQs -->\r\n  <div class=\"portal-faq\">\r\n\r\n    <a href=\".\/faqs\" class=\"portal-faq-link\"\r\n       aria-label=\"FAQs\">\r\n\r\n      <svg class=\"portal-faq-icon\"\r\n           viewBox=\"0 0 48 48\"\r\n           width=\"48\" height=\"48\"\r\n           fill=\"none\"\r\n           stroke=\"currentColor\"\r\n           stroke-width=\"2.5\"\r\n           stroke-linecap=\"round\"\r\n           stroke-linejoin=\"round\"\r\n           aria-hidden=\"true\">\r\n        <circle cx=\"24\" cy=\"24\" r=\"20\"\/>\r\n        <path d=\"M18 18a6 6 0 0 1 12 0c0 4-6 5-6 9\"\/>\r\n        <circle cx=\"24\" cy=\"34\" r=\"1.5\"\r\n                fill=\"currentColor\" stroke=\"none\"\/>\r\n      <\/svg>\r\n\r\n      <span>FAQs<\/span>\r\n\r\n    <\/a>\r\n\r\n  <\/div>\r\n\r\n<\/div>\r\n\r\n<style>\r\n\/* TWO-COLUMN LAYOUT *\/\r\n.portal-layout {\r\n    display: flex;\r\n    align-items: stretch;\r\n    justify-content: flex-start;\r\n    gap: 24px;\r\n    width: 100%;\r\n}\r\n\r\n\/* LEFT COLUMN - EXPAND TO FILL AVAILABLE SPACE *\/\r\n.portal-layout .portal-buttons {\r\n    display: flex;\r\n    flex-direction: column;\r\n    align-items: stretch;\r\n    gap: 12px;\r\n\r\n    flex: 1 1 0;\r\n    min-width: 0;\r\n}\r\n\r\n\r\n\r\n\/* BLUE BUTTONS *\/\r\n.portal-layout .portal-button {\r\n    display: flex !important;\r\n    align-items: center !important;\r\n    justify-content: flex-start !important;\r\n    gap: 12px !important;\r\n\r\n    width: 100%;\r\n    max-width: none;\r\n    min-height: 60px;\r\n    padding: 8px 12px;\r\n\r\n    background: #258CFA !important;\r\n    background-image: none !important;\r\n\r\n    border-radius: 10px;\r\n    border: none;\r\n\r\n    color: #ffffff !important;\r\n    text-decoration: none !important;\r\n\r\n    font-size: 13px;\r\n    font-weight: 600;\r\n    line-height: 1.4;\r\n    box-sizing: border-box;\r\n\r\n    transition: filter 0.2s ease;\r\n}\r\n\r\n\/* LEFT ICONS *\/\r\n.portal-layout .portal-button-icon {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    width: 30px;\r\n    flex: 0 0 30px;\r\n    color: #ffffff !important;\r\n}\r\n\r\n.portal-layout .portal-button-icon i {\r\n    font-size: 28px !important;\r\n    line-height: 1 !important;\r\n    color: #ffffff !important;\r\n}\r\n\r\n\/* BIGGER GRADUATION CAP *\/\r\n.portal-layout .portal-button:first-child\r\n.portal-button-icon i {\r\n    font-size: 36px !important;\r\n}\r\n\r\n\/* BUTTON TEXT *\/\r\n.portal-layout .portal-button-text {\r\n    flex: 1;\r\n    min-width: 0;\r\n    color: #ffffff !important;\r\n    text-align: left;\r\n}\r\n\r\n\/* CIRCULAR ARROWS *\/\r\n.portal-layout .portal-button-arrow {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n\r\n    width: 28px;\r\n    height: 28px;\r\n    flex: 0 0 28px;\r\n\r\n    border: 2px solid #ffffff;\r\n    border-radius: 50%;\r\n    color: #ffffff !important;\r\n}\r\n\r\n.portal-layout .portal-button-arrow svg {\r\n    fill: none !important;\r\n    stroke: currentColor !important;\r\n}\r\n\r\n\/* BUTTON HOVER *\/\r\n.portal-layout .portal-button:hover {\r\n    background: #258CFA !important;\r\n    color: #ffffff !important;\r\n    filter: brightness(1.1);\r\n    text-decoration: none !important;\r\n}\r\n\r\n\/* RIGHT COLUMN: FAQs AT THE BOTTOM *\/\r\n.portal-layout .portal-faq {\r\n    display: flex;\r\n    flex: 0 0 70px;\r\n    align-items: flex-end;\r\n    justify-content: center;\r\n}\r\n\r\n\/* FAQs LINK *\/\r\n.portal-layout .portal-faq-link {\r\n    display: inline-flex !important;\r\n    flex-direction: column;\r\n    align-items: center;\r\n    justify-content: center;\r\n    gap: 3px;\r\n\r\n    color: #1556C0 !important;\r\n    text-decoration: none !important;\r\n\r\n    font-size: 15px;\r\n    font-weight: 600;\r\n    line-height: 1.2;\r\n}\r\n\r\n\/* QUESTION MARK ICON *\/\r\n.portal-layout .portal-faq-icon {\r\n    width: 48px;\r\n    height: 48px;\r\n    color: #1556C0;\r\n    flex-shrink: 0;\r\n}\r\n\r\n\/* UNDERLINED FAQs TEXT *\/\r\n.portal-layout .portal-faq-link span {\r\n    color: #1556C0 !important;\r\n    text-decoration: underline !important;\r\n    text-underline-offset: 2px;\r\n}\r\n\r\n\/* FAQs icon and text light up together *\/\r\n.portal-layout .portal-faq-link:hover,\r\n.portal-layout .portal-faq-link:hover span,\r\n.portal-layout .portal-faq-link:hover .portal-faq-icon {\r\n    color: #258CFA !important;\r\n}\r\n\r\n\/* Smooth color transition *\/\r\n.portal-layout .portal-faq-link span,\r\n.portal-layout .portal-faq-icon {\r\n    transition: color 0.2s ease;\r\n}\r\n\r\n.portal-layout .portal-faq-link:hover\r\n.portal-faq-icon {\r\n    color: #258CFA;\r\n}\r\n\r\n\/* KEYBOARD FOCUS *\/\r\n.portal-layout a:focus-visible {\r\n    outline: 2px solid #0052c4;\r\n    outline-offset: 3px;\r\n}\r\n\r\n\/* MOBILE *\/\r\n@media (max-width: 480px) {\r\n    .portal-layout {\r\n        gap: 12px;\r\n    }\r\n\r\n    .portal-layout .portal-buttons {\r\n        flex: 1 1 auto;\r\n    }\r\n\r\n    .portal-layout .portal-button {\r\n        width: 100%;\r\n    }\r\n\r\n    .portal-layout .portal-faq {\r\n        flex: 0 0 55px;\r\n    }\r\n\r\n    .portal-layout .portal-faq-icon {\r\n        width: 38px;\r\n        height: 38px;\r\n    }\r\n}\r\n<\/style>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-e14fa7e student-agenda-column\" data-id=\"e14fa7e\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-117dc89 agenda-shortcode elementor-widget elementor-widget-shortcode\" data-id=\"117dc89\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\n\n\n\n\n\n<div class=\"agenda-dataverse-data notranslate\" hidden data-no-translation translate=\"no\">\n      \n      <span class=\"agenda-dataverse-session\"\n      data-date=\"2026-11-16\"\n      data-start=\"09&#x3A;00\"\n      data-end=\"13&#x3A;00\"\n      data-title=\"Tema&#x20;1\"><\/span>\n  \n        \n      <span class=\"agenda-dataverse-session\"\n      data-date=\"2025-10-15\"\n      data-start=\"09&#x3A;00\"\n      data-end=\"12&#x3A;00\"\n      data-title=\"Tema&#x20;1.1\"><\/span>\n  \n        \n      <span class=\"agenda-dataverse-session\"\n      data-date=\"2026-11-18\"\n      data-start=\"09&#x3A;00\"\n      data-end=\"13&#x3A;00\"\n      data-title=\"Tema&#x20;2\"><\/span>\n  \n        \n      <span class=\"agenda-dataverse-session\"\n      data-date=\"2025-10-16\"\n      data-start=\"09&#x3A;00\"\n      data-end=\"12&#x3A;00\"\n      data-title=\"Tema&#x20;2.1\"><\/span>\n  \n        \n      <span class=\"agenda-dataverse-session\"\n      data-date=\"2026-11-20\"\n      data-start=\"09&#x3A;00\"\n      data-end=\"13&#x3A;00\"\n      data-title=\"Tema&#x20;3\"><\/span>\n  \n        \n      <span class=\"agenda-dataverse-session\"\n      data-date=\"2025-10-20\"\n      data-start=\"14&#x3A;00\"\n      data-end=\"16&#x3A;30\"\n      data-title=\"Tema&#x20;3.1\"><\/span>\n  \n        \n  \n                                                                                                                          <span class=\"agenda-dataverse-session\"\n              data-date=\"2026-11-26\"\n              data-start=\"20&#x3A;00\"\n              data-end=\"22&#x3A;00\"\n              data-title=\"Tema&#x20;4\"><\/span>\n                                                                \n  \n                                                                              <span class=\"agenda-dataverse-session\"\n              data-date=\"2025-10-22\"\n              data-start=\"16&#x3A;00\"\n              data-end=\"20&#x3A;00\"\n              data-title=\"Tema&#x20;4.1\"><\/span>\n                                                                                                            \n      <span class=\"agenda-dataverse-session\"\n      data-date=\"2026-11-23\"\n      data-start=\"09&#x3A;00\"\n      data-end=\"13&#x3A;00\"\n      data-title=\"Tema&#x20;5\"><\/span>\n  \n  <\/div>\n\n<script>\n\/* Select language before Elementor displays the agenda heading. *\/\n(function () {\n  document.documentElement.classList.toggle(\n    'student-agenda-language-en',\n    \/^\\\/en(?:\\\/|$)\/i.test(window.location.pathname)\n  );\n})();\n<\/script>\n\n<div class=\"student-agenda-widget agenda-upcoming\" data-no-translation>\n\n  <div class=\"agenda-header\">\n    <div class=\"agenda-heading\">\n      <svg viewBox=\"0 0 24 24\" width=\"39\" height=\"39\"\n           fill=\"none\" stroke=\"currentColor\"\n           stroke-width=\"2\" stroke-linecap=\"round\"\n           stroke-linejoin=\"round\" aria-hidden=\"true\">\n        <rect x=\"3\" y=\"5\" width=\"18\" height=\"16\" rx=\"2\"\/>\n        <path d=\"M7 3v4M17 3v4M3 10h18\"\/>\n        <path d=\"M8 14h1M12 14h1M16 14h1M8 18h1M12 18h1\"\/>\n      <\/svg>\n\n      <h2><span class=\"student-agenda-pt\">Agenda<\/span><span class=\"student-agenda-en\">Schedule<\/span><\/h2>\n    <\/div>\n\n    <span class=\"agenda-subtitle\">\n      <span class=\"student-agenda-pt\">Pr\u00f3ximas sess\u00f5es<\/span><span class=\"student-agenda-en\">Upcoming sessions<\/span>\n    <\/span>\n    \n  <\/div>\n\n  <div class=\"agenda-session-list\"\n       aria-live=\"polite\"><\/div>\n\n<\/div>\n\n<style>\n\/* Manual PT\/EN UI text: TranslatePress must not translate Dataverse topics. *\/\n.student-agenda-widget .student-agenda-en { display:none!important; }\nhtml.student-agenda-language-en .student-agenda-widget .student-agenda-pt { display:none!important; }\nhtml.student-agenda-language-en .student-agenda-widget .student-agenda-en { display:inline!important; }\n\n\/* MAIN CARD *\/\n.student-agenda-widget.agenda-upcoming {\n    --agenda-blue: #1760e8;\n    --agenda-light: #3296ff;\n\n    width: 100% !important;\n    max-width: 100% !important;\n    padding: 22px 24px !important;\n\n    background: #ffffff !important;\n    border: none !important;\n    border-radius: 18px !important;\n\n    box-shadow: 0 4px 20px rgba(20,80,150,.07);\n\n    font-family: Arial, Helvetica, sans-serif !important;\n    box-sizing: border-box !important;\n}\n\n.agenda-upcoming *,\n.agenda-upcoming *::before,\n.agenda-upcoming *::after {\n    box-sizing: border-box;\n}\n\n\/* HEADER *\/\n.agenda-upcoming .agenda-header {\n    display: flex !important;\n    align-items: center !important;\n    justify-content: flex-start !important;\n    flex-wrap: wrap;\n    gap: 24px !important;\n\n    margin: 0 0 20px !important;\n    padding: 0 !important;\n}\n\n.agenda-upcoming .agenda-heading {\n    display: flex;\n    align-items: center;\n    gap: 14px;\n}\n\n.agenda-upcoming .agenda-heading svg {\n    color: var(--agenda-blue);\n    flex-shrink: 0;\n}\n\n.agenda-upcoming .agenda-heading h2 {\n    margin: 0 !important;\n    padding: 0 !important;\n    color: #1256d9 !important;\n    font-size: 28px !important;\n    font-weight: 700 !important;\n    line-height: 1.2 !important;\n    text-transform: none !important;\n}\n\n.agenda-upcoming .agenda-subtitle {\n    color: #2468ee !important;\n    font-size: 21px !important;\n    font-weight: 400 !important;\n    font-style: italic;\n    line-height: 1.3;\n}\n\n\/* SESSION LIST *\/\n.agenda-upcoming .agenda-session-list {\n    display: flex;\n    flex-direction: column;\n    gap: 9px;\n\n    width: 100%;\n    max-height: 230px;\n    overflow-y: auto;\n    overflow-x: hidden;\n\n    scrollbar-width: thin;\n    scrollbar-color: #b6d4fb transparent;\n}\n\n\/* INDIVIDUAL SESSION *\/\n.agenda-upcoming .agenda-session {\n    display: grid;\n    grid-template-columns: 114px minmax(0, 1fr);\n    align-items: stretch;\n    width: 100%;\n    min-height: 73px;\n}\n\n\/* BLUE DATE BLOCK *\/\n.agenda-upcoming .agenda-session-date {\n    display: flex;\n    flex-direction: column;\n    align-items: flex-start;\n    justify-content: center;\n\n    padding: 10px 17px;\n\n    background: #3296ff !important;\n    color: #ffffff !important;\n\n    border-radius: 17px;\n\n    font-size: 15px;\n    font-weight: 600;\n    line-height: 1.3;\n}\n\n.agenda-upcoming .agenda-session-date span {\n    display: block;\n    color: #ffffff !important;\n}\n\n\/* WHITE SESSION DETAILS *\/\n.agenda-upcoming .agenda-session-details {\n    display: grid;\n    grid-template-columns: minmax(0, 1fr) 105px;\n    align-items: center;\n\n    min-width: 0;\n    padding: 11px 12px 11px 19px;\n\n    background: #ffffff !important;\n    border: 2px solid #c6defe;\n    border-radius: 17px;\n}\n\n\/* TIME AND TITLE *\/\n.agenda-upcoming .agenda-session-info {\n    min-width: 0;\n    padding-right: 12px;\n}\n\n.agenda-upcoming .agenda-session-time {\n    color: #2169ef !important;\n    font-size: 15px;\n    font-weight: 500;\n    line-height: 1.3;\n}\n\n.agenda-upcoming .agenda-session-title {\n    color: #1459e5 !important;\n    font-size: 15px;\n    font-weight: 600;\n    line-height: 1.3;\n    overflow-wrap: anywhere;\n}\n\n\/* RIGHT LOCATION *\/\n.agenda-upcoming .agenda-session-location {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n\n    min-height: 46px;\n    padding: 5px 7px;\n\n    border-left: 2px solid #88b7fa;\n\n    color: #2468ee !important;\n    font-size: 14px;\n    font-weight: 600;\n    text-align: center;\n    overflow-wrap: anywhere;\n}\n\n\/* EMPTY STATE *\/\n.agenda-upcoming .agenda-empty {\n    padding: 24px 12px;\n    color: #64748b;\n    text-align: center;\n    font-size: 14px;\n}\n\n\/* Consistent spacing between all sessions *\/\n.student-agenda-widget.agenda-upcoming .agenda-session-list {\n    display: flex !important;\n    flex-direction: column !important;\n    gap: 9px !important;\n}\n\n\/* Remove theme spacing from individual sessions *\/\n.student-agenda-widget.agenda-upcoming .agenda-session {\n    margin: 0 !important;\n    padding: 0 !important;\n    flex: 0 0 auto !important;\n}\n\n\/* Remove unexpected margins inside sessions *\/\n.student-agenda-widget.agenda-upcoming .agenda-session-date,\n.student-agenda-widget.agenda-upcoming .agenda-session-details,\n.student-agenda-widget.agenda-upcoming .agenda-session-info,\n.student-agenda-widget.agenda-upcoming .agenda-session-time,\n.student-agenda-widget.agenda-upcoming .agenda-session-title,\n.student-agenda-widget.agenda-upcoming .agenda-session-location {\n    margin: 0 !important;\n}\n\n\/* Make each agenda event more compact *\/\n.agenda-upcoming .agenda-session {\n    min-height: 55px !important;\n}\n\n\/* Reduce top and bottom padding *\/\n.agenda-upcoming .agenda-session-details {\n    padding-top: 5px !important;\n    padding-bottom: 5px !important;\n}\n\n\/* Reduce padding inside the blue date block *\/\n.agenda-upcoming .agenda-session-date {\n    padding-top: 5px !important;\n    padding-bottom: 5px !important;\n}\n\n\/* Reduce space between events *\/\n.agenda-upcoming .agenda-session-list {\n    gap: 6px !important;\n}\n\n\/* TABLET *\/\n@media (max-width: 900px) {\n    .student-agenda-widget.agenda-upcoming {\n        padding: 18px !important;\n    }\n\n    .agenda-upcoming .agenda-heading h2 {\n        font-size: 24px !important;\n    }\n\n    .agenda-upcoming .agenda-subtitle {\n        font-size: 18px !important;\n    }\n}\n\n\/* MOBILE *\/\n@media (max-width: 600px) {\n    .student-agenda-widget.agenda-upcoming {\n        padding: 14px !important;\n    }\n\n    .agenda-upcoming .agenda-header {\n        gap: 8px !important;\n        margin-bottom: 16px !important;\n    }\n\n    .agenda-upcoming .agenda-heading h2 {\n        font-size: 21px !important;\n    }\n\n    .agenda-upcoming .agenda-heading svg {\n        width: 30px;\n        height: 30px;\n    }\n\n    .agenda-upcoming .agenda-subtitle {\n        font-size: 16px !important;\n    }\n\n    .agenda-upcoming .agenda-session {\n        grid-template-columns: 76px minmax(0, 1fr);\n        min-height: 75px;\n    }\n\n    .agenda-upcoming .agenda-session-date {\n        padding: 8px;\n        font-size: 12px;\n        border-radius: 12px;\n    }\n\n    .agenda-upcoming .agenda-session-details {\n        grid-template-columns: minmax(0, 1fr) 65px;\n        padding: 8px;\n        border-radius: 12px;\n    }\n\n    .agenda-upcoming .agenda-session-time,\n    .agenda-upcoming .agenda-session-title {\n        font-size: 12px;\n    }\n\n    .agenda-upcoming .agenda-session-location {\n        font-size: 11px;\n        padding: 4px;\n    }\n}\n\n\n\/* =========================================\n   STUDENT AGENDA - CONSISTENT CONTAINER HEIGHT\n========================================= *\/\n\n\/* Keep the agenda container at a consistent height *\/\n.student-agenda-widget.agenda-upcoming {\n    min-height: 340px !important;\n\n    display: flex !important;\n    flex-direction: column !important;\n}\n\n\/* Let the session list fill the remaining space *\/\n.student-agenda-widget.agenda-upcoming .agenda-session-list {\n    flex: 1 1 auto !important;\n    min-height: 0 !important;\n}\n\n\/* Keep individual sessions at their natural height *\/\n.student-agenda-widget.agenda-upcoming .agenda-session {\n    flex: 0 0 auto !important;\n}\n\n<\/style>\n\n<script>\n(function () {\n  const widget = document.querySelector(\n    \".student-agenda-widget.agenda-upcoming\"\n  );\n\n  if (!widget) return;\n\n  const isEnglish = \/^\\\/en(?:\\\/|$)\/i.test(window.location.pathname);\n\n  const agendaEvents = Array.from(\n    document.querySelectorAll(\".agenda-dataverse-data .agenda-dataverse-session\")\n  ).map(item => ({\n    date: item.dataset.date || \"\",\n    start: item.dataset.start || \"\",\n    end: item.dataset.end || \"\",\n    title: item.dataset.title || (isEnglish ? \"Session\" : \"Sess\u00e3o\"),\n    location: \"Online\"\n  }));\n\n  \/\/ Collapse identical rows that may arise from multiple related records.\n  const uniqueEvents = Array.from(new Map(\n    agendaEvents.map(event => [\n      [event.date, event.start, event.end, event.title].join(\"|\"), event\n    ])\n  ).values());\n\n  const dayNames = isEnglish\n    ? [\"SUN\", \"MON\", \"TUE\", \"WED\", \"THU\", \"FRI\", \"SAT\"]\n    : [\"DOM\", \"SEG\", \"TER\", \"QUA\", \"QUI\", \"SEX\", \"S\u00c1B\"];\n\n  const monthNames = isEnglish\n    ? [\"JAN\", \"FEB\", \"MAR\", \"APR\", \"MAY\", \"JUN\", \"JUL\", \"AUG\", \"SEP\", \"OCT\", \"NOV\", \"DEC\"]\n    : [\"JAN\", \"FEV\", \"MAR\", \"ABR\", \"MAI\", \"JUN\", \"JUL\", \"AGO\", \"SET\", \"OUT\", \"NOV\", \"DEZ\"];\n\n  function escapeHtml(value) {\n    return String(value ?? \"\")\n      .replaceAll(\"&\", \"&amp;\")\n      .replaceAll(\"<\", \"&lt;\")\n      .replaceAll(\">\", \"&gt;\")\n      .replaceAll('\"', \"&quot;\")\n      .replaceAll(\"'\", \"&#039;\");\n  }\n\n  function formatSessionDate(dateString) {\n    const [year, month, day] =\n      dateString.split(\"-\").map(Number);\n\n    const date = new Date(year, month - 1, day);\n\n    return {\n      weekday: dayNames[date.getDay()],\n      label: String(day).padStart(2, \"0\")\n        + \" \" + monthNames[month - 1]\n    };\n  }\n\n  function renderAgenda() {\n    const container = widget.querySelector(\n      \".agenda-session-list\"\n    );\n\n    if (!container) return;\n\n    const now = new Date();\n\n    const events = uniqueEvents\n      .filter(event => {\n        const start = new Date(\n          event.date + \"T\" + event.start + \":00\"\n        );\n        return start >= now;\n      })\n      .sort((a, b) =>\n        (a.date + a.start).localeCompare(\n          b.date + b.start\n        )\n      )\n      .slice(0, 10);\n\n    if (!events.length) {\n      container.innerHTML = `\n        <div class=\"agenda-empty\">\n          ${isEnglish ? \"There are no upcoming sessions scheduled.\" : \"N\u00e3o existem pr\u00f3ximas sess\u00f5es agendadas.\"}\n        <\/div>\n      `;\n      return;\n    }\n\n    container.innerHTML = events.map(event => {\n      const date = formatSessionDate(event.date);\n\n      return `\n        <div class=\"agenda-session\">\n\n          <div class=\"agenda-session-date\">\n            <span>${date.weekday}<\/span>\n            <span>${date.label}<\/span>\n          <\/div>\n\n          <div class=\"agenda-session-details\">\n\n            <div class=\"agenda-session-info\">\n              <div class=\"agenda-session-time\">\n                ${escapeHtml(event.start)}\n                \u2013\n                ${escapeHtml(event.end)}\n              <\/div>\n\n              <div class=\"agenda-session-title notranslate\" data-no-translation translate=\"no\">\n                ${escapeHtml(event.title)}\n              <\/div>\n            <\/div>\n\n            <div class=\"agenda-session-location\">\n              ${escapeHtml(event.location || \"\")}\n            <\/div>\n\n          <\/div>\n\n        <\/div>\n      `;\n    }).join(\"\");\n  }\n\n  renderAgenda();\n})();\n<\/script>\n\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-2b784e2 equal-height-layout elementor-section-boxed elementor-section-height-default elementor-section-height-default wd-section-disabled\" data-id=\"2b784e2\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-adcfb81\" data-id=\"adcfb81\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-7c55af2 elementor-widget elementor-widget-shortcode\" data-id=\"7c55af2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\n\n\n\n\n\n<script>\n\/* Set language before rendering the visible student notices interface. *\/\n(function () {\n    document.documentElement.classList.toggle(\n        'student-notices-english',\n        \/^\\\/en(?:\\\/|$)\/i.test(window.location.pathname)\n    );\n})();\n<\/script>\n\n<div class=\"student-notices-widget notranslate\" translate=\"no\" data-no-translation>\n\n    <!-- HEADER -->\n    <div class=\"notices-header\">\n\n        <div class=\"notices-header-left\">\n\n            <span class=\"notices-header-icon\" aria-hidden=\"true\">\n                <i class=\"icon icon-megaphone\"><\/i>\n            <\/span>\n\n            <h2><span class=\"notice-lang-pt\">Avisos<\/span><span class=\"notice-lang-en\">Notices<\/span><\/h2>\n\n        <\/div>\n\n        <a class=\"notices-view-all\" href=\".\/avisos\">\n            <span><span class=\"notice-lang-pt\">Ver todos<\/span><span class=\"notice-lang-en\">View all<\/span><\/span>\n\n            <svg viewBox=\"0 0 24 24\"\n                 width=\"22\" height=\"22\"\n                 fill=\"none\"\n                 stroke=\"currentColor\"\n                 stroke-width=\"2\"\n                 stroke-linecap=\"round\"\n                 stroke-linejoin=\"round\"\n                 aria-hidden=\"true\">\n                <path d=\"m9 5 7 7-7 7\"\/>\n            <\/svg>\n        <\/a>\n\n    <\/div>\n\n    <!-- DYNAMIC NOTICES -->\n    <div class=\"notices-list\" aria-live=\"polite\"><\/div>\n\n\n<!-- Dataverse notices: data source for JavaScript -->\n<div class=\"notices-dataverse-source\" hidden>\n\n    \n        \n        \n        \n            \n            \n            <div\n                class=\"notice-dataverse-record\"\n\n                data-id=\"4c0d7787-efc6-f111-a05c-7ced8d5f6c91\"\n\n                data-title=\"Novos&#x20;recursos&#x20;dispon&#x00ED;veis\"\n\n                data-title-en=\"New&#x20;features&#x20;available\"\n\n                data-description=\"Novo&#x20;material&#x20;na&#x20;p&#x00E1;gina&#x20;do&#x20;curso&#x20;de&#x20;Running&#x20;e&#x20;Trail&#x20;running\"\n\n                data-description-en=\"New&#x20;content&#x20;on&#x20;the&#x20;Running&#x20;and&#x20;Trail&#x20;Running&#x20;course&#x20;page\"\n\n                data-created=\"2026-10-13T10&#x3A;19&#x3A;16Z\"\n\n                data-start=\"2026-10-12T08&#x3A;00&#x3A;00Z\"\n\n                data-end=\"2026-11-27T08&#x3A;00&#x3A;00Z\"\n\n                data-priority=\"low\">\n            <\/div>\n\n        \n    \n        \n        \n        \n            \n                                        \n            <div\n                class=\"notice-dataverse-record\"\n\n                data-id=\"e4572a5f-efc6-f111-a05c-7ced8d5f6c91\"\n\n                data-title=\"Altera&#x00E7;&#x00E3;o&#x20;de&#x20;hor&#x00E1;rio\"\n\n                data-title-en=\"Schedule&#x20;Change\"\n\n                data-description=\"Foram&#x20;feitas&#x20;altera&#x00E7;&#x00F5;es&#x20;no&#x20;curso&#x20;Y&#x20;por&#x20;&#x28;docente&#x29;\"\n\n                data-description-en=\"Changes&#x20;were&#x20;made&#x20;to&#x20;Course&#x20;Y&#x20;by&#x20;&#x28;instructor&#x29;\"\n\n                data-created=\"2026-10-13T10&#x3A;18&#x3A;09Z\"\n\n                data-start=\"2026-10-12T08&#x3A;00&#x3A;00Z\"\n\n                data-end=\"2026-11-27T08&#x3A;00&#x3A;00Z\"\n\n                data-priority=\"medium\">\n            <\/div>\n\n        \n    \n        \n        \n        \n            \n                                        \n            <div\n                class=\"notice-dataverse-record\"\n\n                data-id=\"6d2f2334-efc6-f111-a05c-7ced8d5f6c91\"\n\n                data-title=\"Calend&#x00E1;rio&#x20;de&#x20;avalia&#x00E7;&#x00F5;es\"\n\n                data-title-en=\"Assessment&#x20;Schedule\"\n\n                data-description=\"O&#x20;teste&#x20;de&#x20;avalia&#x00E7;&#x00E3;o&#x20;do&#x20;curso&#x20;X&#x20;est&#x00E1;&#x20;dispon&#x00ED;vel&#x20;at&#x00E9;&#x20;&#x28;hora&#x20;e&#x20;data&#x29;\"\n\n                data-description-en=\"The&#x20;assessment&#x20;test&#x20;for&#x20;Course&#x20;X&#x20;is&#x20;available&#x20;until&#x20;&#x28;date&#x20;and&#x20;time&#x29;\"\n\n                data-created=\"2026-10-13T10&#x3A;16&#x3A;51Z\"\n\n                data-start=\"2026-10-13T08&#x3A;00&#x3A;00Z\"\n\n                data-end=\"2026-11-27T08&#x3A;00&#x3A;00Z\"\n\n                data-priority=\"high\">\n            <\/div>\n\n        \n    \n<\/div>\n\n\n<\/div>\n\n\n<style>\n\/* Explicit bilingual labels: no TranslatePress or mutation-based replacement. *\/\n.student-notices-widget .notice-lang-en { display:none!important; }\nhtml.student-notices-english .student-notices-widget .notice-lang-pt { display:none!important; }\nhtml.student-notices-english .student-notices-widget .notice-lang-en { display:inline!important; }\n\n\/* =========================================\n   MAIN CONTAINER\n========================================= *\/\n\n.student-notices-widget {\n    width: 100%;\n    height: 300px !important;\n\n    display: flex !important;\n    flex-direction: column !important;\n\n    box-sizing: border-box !important;\n\n    padding: 20px 16px 16px;\n\n    background: #ffffff;\n    border-radius: 18px;\n\n    box-shadow: 0 4px 20px rgba(20, 80, 150, 0.07);\n\n    font-family: inherit;\n}\n\n\n\/* =========================================\n   HEADER\n========================================= *\/\n\n.student-notices-widget .notices-header {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n\n    gap: 12px;\n    margin-bottom: 12px;\n\n    flex: 0 0 auto !important;\n}\n\n.student-notices-widget .notices-header-left {\n    display: flex;\n    align-items: center;\n    gap: 12px;\n    min-width: 0;\n}\n\n\n\/* ElementsKit Megaphone Icon *\/\n\n.student-notices-widget .notices-header-icon {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n\n    width: 42px;\n    height: 42px;\n    flex-shrink: 0;\n\n    color: #1760e8 !important;\n}\n\n.student-notices-widget .notices-header-icon i {\n    font-size: 38px !important;\n    line-height: 1;\n    color: inherit !important;\n}\n\n\n\/* Avisos Heading *\/\n\n.student-notices-widget .notices-header h2 {\n    margin: 0 !important;\n    padding: 0 !important;\n\n    color: #1459e8 !important;\n\n    font-size: 27px !important;\n    font-weight: 750 !important;\n    line-height: 1.2;\n\n    text-transform: none !important;\n    letter-spacing: normal !important;\n}\n\n\n\/* =========================================\n   VER TODOS\n========================================= *\/\n\n.student-notices-widget .notices-view-all {\n    display: inline-flex;\n    align-items: center;\n\n    gap: 4px;\n    flex-shrink: 0;\n\n    color: #2269f0 !important;\n\n    font-size: 14px !important;\n    font-weight: 400 !important;\n    line-height: 1.35 !important;\n\n    text-transform: none !important;\n    letter-spacing: normal !important;\n\n    text-decoration: none !important;\n}\n\n.student-notices-widget .notices-view-all svg {\n    width: 22px;\n    height: 22px;\n\n    fill: none !important;\n    stroke: currentColor !important;\n\n    transition: transform 0.2s ease;\n}\n\n.student-notices-widget .notices-view-all:hover {\n    color: #0b48c6 !important;\n}\n\n.student-notices-widget .notices-view-all:hover svg {\n    transform: translateX(3px);\n}\n\n\n\/* =========================================\n   NOTICES LIST\n========================================= *\/\n\n.student-notices-widget .notices-list {\n    display: flex !important;\n    flex-direction: column !important;\n\n    gap: 6px !important;\n\n    flex: 1 1 auto !important;\n    min-height: 0 !important;\n    max-height: none !important;\n\n    overflow-y: auto !important;\n    overflow-x: hidden !important;\n\n    scrollbar-width: thin;\n    scrollbar-color: #bfdcff transparent;\n}\n\n\n\/* Scrollbar - Chrome, Edge, Safari *\/\n\n.student-notices-widget .notices-list::-webkit-scrollbar {\n    width: 5px;\n}\n\n.student-notices-widget .notices-list::-webkit-scrollbar-track {\n    background: transparent;\n}\n\n.student-notices-widget .notices-list::-webkit-scrollbar-thumb {\n    background: #bfdcff;\n    border-radius: 10px;\n}\n\n\n\/* =========================================\n   INDIVIDUAL NOTICE\n========================================= *\/\n\n.student-notices-widget .notice-item {\n    display: flex;\n    align-items: center;\n\n    gap: 14px;\n\n    flex: 0 0 auto !important;\n\n    min-height: 57px;\n    padding: 7px 12px;\n\n    margin: 0 !important;\n\n    border: 1.5px solid #bfdcff;\n    border-radius: 14px;\n\n    background: #ffffff;\n\n    box-sizing: border-box;\n}\n\n\n\/* =========================================\n   PRIORITY ICONS\n========================================= *\/\n\n.student-notices-widget .notice-alert-icon {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n\n    width: 38px;\n    height: 38px;\n\n    flex: 0 0 38px;\n\n    border-radius: 50%;\n\n    color: #ffffff !important;\n\n    font-size: 27px;\n    font-weight: 800;\n    line-height: 1;\n\n    box-shadow: 0 2px 7px rgba(0, 0, 0, 0.12);\n}\n\n\/* High priority - Red *\/\n.student-notices-widget .notice-alert-icon.high {\n    background: #ed2029;\n}\n\n\/* Medium priority - Orange *\/\n.student-notices-widget .notice-alert-icon.medium {\n    background: #ff792e;\n}\n\n\/* Low priority - Green *\/\n.student-notices-widget .notice-alert-icon.low {\n    background: #0bb569;\n}\n\n\n\/* =========================================\n   NOTICE CONTENT\n========================================= *\/\n\n.student-notices-widget .notice-content {\n    flex: 1 1 auto;\n    min-width: 0;\n}\n\n\n\/* Notice Title *\/\n\n.student-notices-widget .notice-title {\n    margin: 0 !important;\n    padding: 0 !important;\n\n    color: #1559e8 !important;\n\n    font-size: 12px !important;\n    font-weight: 700 !important;\n    line-height: 1.3 !important;\n\n    text-transform: none !important;\n    letter-spacing: normal !important;\n}\n\n\n\/* Notice Description *\/\n\n.student-notices-widget .notice-description {\n    margin: 2px 0 0 !important;\n    padding: 0 !important;\n\n    color: #2269f0 !important;\n\n    font-size: 14px !important;\n    font-weight: 400 !important;\n    line-height: 1.35 !important;\n\n    text-transform: none !important;\n    letter-spacing: normal !important;\n}\n\n\n\/* =========================================\n   NOTICE DATE\n========================================= *\/\n\n.student-notices-widget .notice-date {\n    flex: 0 0 auto;\n\n    margin-left: 8px;\n\n    color: #2269f0 !important;\n\n    font-size: 14px !important;\n    font-weight: 400 !important;\n    line-height: 1.35 !important;\n\n    text-transform: none !important;\n    letter-spacing: normal !important;\n\n    white-space: nowrap;\n    text-align: right;\n}\n\n\n\/* =========================================\n   EMPTY STATE\n========================================= *\/\n\n.student-notices-widget .notices-empty {\n    padding: 20px 12px;\n\n    text-align: center;\n\n    color: #6782a5;\n    font-size: 14px;\n}\n\n\n\/* =========================================\n   RESPONSIVE\n========================================= *\/\n\n@media (max-width: 600px) {\n\n    .student-notices-widget {\n        padding: 16px 12px;\n    }\n\n    .student-notices-widget .notices-header h2 {\n        font-size: 23px !important;\n    }\n\n    .student-notices-widget .notices-header-icon {\n        width: 36px;\n        height: 36px;\n    }\n\n    .student-notices-widget .notices-header-icon i {\n        font-size: 32px !important;\n    }\n\n    .student-notices-widget .notice-item {\n        gap: 10px;\n        padding: 10px;\n    }\n\n    .student-notices-widget .notice-alert-icon {\n        width: 32px;\n        height: 32px;\n        flex-basis: 32px;\n\n        font-size: 23px;\n    }\n\n    .student-notices-widget .notice-date {\n        font-size: 12px !important;\n        margin-left: 0;\n    }\n\n}\n\n@media (max-width: 420px) {\n\n    .student-notices-widget .notice-item {\n        flex-wrap: wrap;\n    }\n\n    .student-notices-widget .notice-date {\n        width: 100%;\n        text-align: right;\n    }\n\n}\n<\/style>\n\n\n\n<script>\n(function () {\n\n    const widget = document.querySelector(\n        \".student-notices-widget\"\n    );\n\n    if (!widget) return;\n\n    const isEnglish = \/^\\\/en(?:\\\/|$)\/i.test(window.location.pathname);\n\n    const list = widget.querySelector(\".notices-list\");\n\n    if (!list) return;\n\n    \/\/ =========================================\n    \/\/ READ NOTICES FROM DATAPRESS\n    \/\/ =========================================\n\n    const records = widget.querySelectorAll(\n        \".notice-dataverse-record\"\n    );\n\n    const notices = Array.from(records).map(record => ({\n        id: record.dataset.id || \"\",\n        title: (isEnglish && (record.dataset.titleEn || \"\").trim())\n            ? record.dataset.titleEn : (record.dataset.title || \"\"),\n        description: (isEnglish && (record.dataset.descriptionEn || \"\").trim())\n            ? record.dataset.descriptionEn : (record.dataset.description || \"\"),\n        created: record.dataset.created || \"\",\n        start: record.dataset.start || \"\",\n        end: record.dataset.end || \"\",\n        priority: record.dataset.priority || \"low\"\n    }));\n\n    \/\/ =========================================\n    \/\/ ESCAPE HTML\n    \/\/ =========================================\n\n    function escapeHtml(value) {\n        return String(value ?? \"\").replace(\n            \/[&<>\"']\/g,\n            char => ({\n                \"&\": \"&amp;\",\n                \"<\": \"&lt;\",\n                \">\": \"&gt;\",\n                '\"': \"&quot;\",\n                \"'\": \"&#39;\"\n            })[char]\n        );\n    }\n\n    \/\/ =========================================\n    \/\/ DATE HANDLING\n    \/\/ =========================================\n\n    function parseDate(value) {\n        if (!value) return null;\n\n        const date = new Date(value);\n\n        return Number.isNaN(date.getTime())\n            ? null\n            : date;\n    }\n\n    function formatDate(value) {\n\n        const date = parseDate(value);\n\n        if (!date) return \"\";\n\n        return new Intl.DateTimeFormat(isEnglish ? \"en-GB\" : \"pt-PT\", {\n            day: \"2-digit\",\n            month: \"short\",\n            year: \"numeric\",\n            timeZone: \"Europe\/Lisbon\"\n        }).format(date);\n    }\n\n    \/\/ =========================================\n    \/\/ CHECK VISIBILITY PERIOD\n    \/\/ =========================================\n\n    function isNoticeVisible(notice, now) {\n\n        const start = parseDate(notice.start);\n        const end = parseDate(notice.end);\n\n        \/\/ Do not display records with invalid\n        \/\/ start\/end dates.\n        if (!start || !end) {\n            return false;\n        }\n\n        return now >= start && now <= end;\n    }\n\n    \/\/ =========================================\n    \/\/ RENDER NOTICES\n    \/\/ =========================================\n\n    function renderNotices() {\n\n        const now = new Date();\n\n        \/\/ Remove duplicate records, if any.\n        const seen = new Set();\n\n        const visibleNotices = notices\n            .filter(notice => isNoticeVisible(notice, now))\n            .filter(notice => {\n\n                if (!notice.id) return true;\n\n                if (seen.has(notice.id)) {\n                    return false;\n                }\n\n                seen.add(notice.id);\n                return true;\n            })\n            .sort((a, b) => {\n                const dateA = parseDate(a.created);\n                const dateB = parseDate(b.created);\n\n                return (dateB?.getTime() || 0) -\n                       (dateA?.getTime() || 0);\n            });\n\n        if (visibleNotices.length === 0) {\n\n            list.innerHTML = `\n                <div class=\"notices-empty\">\n                    ${isEnglish ? \"There are no notices available.\" : \"N\u00e3o existem avisos dispon\u00edveis.\"}\n                <\/div>\n            `;\n\n            return;\n        }\n\n        const priorityLabels = isEnglish\n            ? { high: \"High\", medium: \"Medium\", low: \"Low\" }\n            : { high: \"Alta\", medium: \"M\u00e9dia\", low: \"Baixa\" };\n\n        list.innerHTML = visibleNotices.map(notice => {\n\n            const priority = [\"high\", \"medium\", \"low\"]\n                .includes(notice.priority)\n                ? notice.priority\n                : \"low\";\n\n            const dateLabel = formatDate(notice.created);\n\n            return `\n                <div class=\"notice-item\"\n                     data-notice-id=\"${escapeHtml(notice.id)}\">\n\n                    <span\n                        class=\"notice-alert-icon ${priority}\"\n                        role=\"img\"\n                        aria-label=\"${isEnglish ? \"Priority\" : \"Prioridade\"} ${priorityLabels[priority]}\">\n                        !\n                    <\/span>\n\n                    <div class=\"notice-content\">\n\n                        <h3 class=\"notice-title\" data-no-translation translate=\"no\">\n                            ${escapeHtml(notice.title)}\n                        <\/h3>\n\n                        <p class=\"notice-description\" data-no-translation translate=\"no\">\n                            ${escapeHtml(notice.description)}\n                        <\/p>\n\n                    <\/div>\n\n                    <time\n                        class=\"notice-date\"\n                        datetime=\"${escapeHtml(notice.created)}\">\n                        ${escapeHtml(dateLabel)}\n                    <\/time>\n\n                <\/div>\n            `;\n        }).join(\"\");\n    }\n\n    \/\/ =========================================\n    \/\/ INITIAL RENDER\n    \/\/ =========================================\n\n    renderNotices();\n\n    \/\/ Recheck notice visibility every minute.\n    \/\/ Notices can appear\/disappear without\n    \/\/ requiring a manual page refresh.\n    setInterval(renderNotices, 60000);\n\n})();\n<\/script>\n\n\n\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-fd159c1\" data-id=\"fd159c1\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-567ed77 elementor-section-boxed elementor-section-height-default elementor-section-height-default wd-section-disabled\" data-id=\"567ed77\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[],&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-2213bbd\" data-id=\"2213bbd\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-ed280a3 elementor-position-inline-start centered-icon-box elementor-view-default elementor-mobile-position-block-start elementor-widget elementor-widget-icon-box\" data-id=\"ed280a3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon-box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-box-wrapper\">\n\n\t\t\t\t\t\t<div class=\"elementor-icon-box-icon\">\n\t\t\t\t<span  class=\"elementor-icon\">\n\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-graduation-cap\"><\/i>\t\t\t\t<\/span>\n\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t<div class=\"elementor-icon-box-content\">\n\n\t\t\t\t\t\t\t\t\t<h6 class=\"elementor-icon-box-title\">\n\t\t\t\t\t\t<span  >\n\t\t\t\t\t\t\tMoodle\t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/h6>\n\t\t\t\t\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0b53c4d moodle-text elementor-widget elementor-widget-wd_text_block\" data-id=\"0b53c4d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wd_text_block.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"wd-text-block reset-last-child text-left\">\n\t\t\t\n\t\t\t<p><span style=\"font-family: Poppins, sans-serif; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; text-align: right;\">Aceda \u00e0 plataforma Moodle para consultar os seus cursos,&nbsp; materiais e atividades.<\/span><span style=\"font-size: 14px;\"><\/span><\/p>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-44ee00b bottom-button elementor-widget elementor-widget-html\" data-id=\"44ee00b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\r\n\/* Moodle button *\/\r\n.moodle-access-button {\r\n    position: relative;\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n\r\n    width: 100%;\r\n    min-height: 84px;\r\n    padding: 12px 48px;\r\n\r\n    background: #258CFA;\r\n    color: #ffffff !important;\r\n\r\n    border: none;\r\n    border-radius: 7px;\r\n\r\n    font-family: inherit;\r\n    font-size: 18px!important;\r\n    font-weight: 500!important;\r\n    line-height: 1.4;\r\n    text-align: center;\r\n    text-decoration: none !important;\r\n\r\n    box-shadow: 0 3px 7px rgba(37, 140, 250, 0.16);\r\n\r\n    transition: background 0.2s ease,\r\n                box-shadow 0.2s ease;\r\n}\r\n\r\n\/* Keep text white *\/\r\n.moodle-access-button .moodle-button-text {\r\n    color: #ffffff !important;\r\n}\r\n\r\n\/* Arrow on the right *\/\r\n\/* Circular arrow *\/\r\n.moodle-access-button .moodle-button-arrow {\r\n    position: absolute;\r\n    right: 16px;\r\n    top: 50%;\r\n    transform: translateY(-50%);\r\n\r\n    display: inline-flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n\r\n    width: 28px;\r\n    height: 28px;\r\n    flex: 0 0 28px;\r\n\r\n    border: 2px solid #ffffff;\r\n    border-radius: 50%;\r\n    color: #ffffff !important;\r\n}\r\n\r\n.moodle-access-button .moodle-button-arrow svg {\r\n    width: 20px;\r\n    height: 20px;\r\n    fill: none !important;\r\n    stroke: currentColor !important;\r\n}\r\n\r\n\/* Hover *\/\r\n.moodle-access-button:hover {\r\n    background: #1479EB;\r\n    box-shadow: 0 4px 12px rgba(37, 140, 250, 0.25);\r\n    color: #ffffff !important;\r\n}\r\n\r\n\/* Keyboard accessibility *\/\r\n.moodle-access-button:focus-visible {\r\n    outline: 3px solid #94caff;\r\n    outline-offset: 3px;\r\n}\r\n<\/style>\r\n\r\n<a href=\"#\"\r\n   class=\"moodle-access-button\"\r\n   target=\"_blank\"\r\n   rel=\"noopener noreferrer\">\r\n\r\n    <span class=\"moodle-button-text\">\r\n        Aceder ao Moodle\r\n    <\/span>\r\n\r\n    <span class=\"moodle-button-arrow\">\r\n        <svg viewBox=\"0 0 24 24\"\r\n             width=\"20\" height=\"20\"\r\n             fill=\"none\"\r\n             stroke=\"currentColor\"\r\n             stroke-width=\"2\"\r\n             stroke-linecap=\"round\"\r\n             stroke-linejoin=\"round\"\r\n             aria-hidden=\"true\">\r\n            <path d=\"m9 5 7 7-7 7\"\/>\r\n        <\/svg>\r\n    <\/span>\r\n<\/a>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-0703896 elementor-section-boxed elementor-section-height-default elementor-section-height-default wd-section-disabled\" data-id=\"0703896\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7236bb4\" data-id=\"7236bb4\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-64589a8 elementor-widget elementor-widget-shortcode\" data-id=\"64589a8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\n\n\n\n\n\n<div class=\"training-images-data notranslate\" hidden data-no-translation translate=\"no\">\n                                    <div class=\"training-image-record\">\n                <span class=\"training-image-action-id\">a13cffc4-f3c6-f111-a05c-7ced8d5f6c91<\/span>\n                <span class=\"training-image-url\">https:\/\/staging.academiaclinicadragao.com\/en\/wp-json\/integration-cds\/v1\/image?table=bpe_acao_formacao&amp;id=a13cffc4-f3c6-f111-a05c-7ced8d5f6c91&amp;column=bpe_imagem&amp;isThumb=1<\/span>\n            <\/div>\n                                <div class=\"training-image-record\">\n                <span class=\"training-image-action-id\">809a8134-f4c6-f111-a05c-7ced8d5f6c91<\/span>\n                <span class=\"training-image-url\">https:\/\/staging.academiaclinicadragao.com\/en\/wp-json\/integration-cds\/v1\/image?table=bpe_acao_formacao&amp;id=809a8134-f4c6-f111-a05c-7ced8d5f6c91&amp;column=bpe_imagem&amp;isThumb=1<\/span>\n            <\/div>\n                                                        <div class=\"training-image-record\">\n                <span class=\"training-image-action-id\">33b2677d-08c7-f111-a05c-7ced8d5f6c91<\/span>\n                <span class=\"training-image-url\">https:\/\/staging.academiaclinicadragao.com\/en\/wp-json\/integration-cds\/v1\/image?table=bpe_acao_formacao&amp;id=33b2677d-08c7-f111-a05c-7ced8d5f6c91&amp;column=bpe_imagem&amp;isThumb=1<\/span>\n            <\/div>\n                                <div class=\"training-image-record\">\n                <span class=\"training-image-action-id\">453bd6d3-08c7-f111-a05c-7ced8d5f6c91<\/span>\n                <span class=\"training-image-url\">https:\/\/staging.academiaclinicadragao.com\/en\/wp-json\/integration-cds\/v1\/image?table=bpe_acao_formacao&amp;id=453bd6d3-08c7-f111-a05c-7ced8d5f6c91&amp;column=bpe_imagem&amp;isThumb=1<\/span>\n            <\/div>\n                                    <\/div>\n\n<div class=\"training-enrolled-data notranslate\" hidden data-no-translation translate=\"no\">\n            <div class=\"training-enrolled-record\">\n            <span class=\"enrolled-course-id\">26954a28-18a5-f111-aaac-7ced8d5f653d<\/span>\n            <span class=\"enrolled-area\">Exerc\u00edcio F\u00edsico e Performance<\/span>\n        <\/div>\n            <div class=\"training-enrolled-record\">\n            <span class=\"enrolled-course-id\">f8d43aeb-b8b8-f111-aaaf-7ced8d5f6c91<\/span>\n            <span class=\"enrolled-area\">Ci\u00eancias da Nutri\u00e7\u00e3o e Alimenta\u00e7\u00e3o<\/span>\n        <\/div>\n    <\/div>\n\n<script>\n(function () {\n    \/\/ The widget uses its own PT\/EN text so TranslatePress must not alter Dataverse values.\n    if (\/^\\\/en(?:\\\/|$)\/i.test(window.location.pathname)) {\n        document.documentElement.classList.add('student-opportunities-english');\n    }\n})();\n<\/script>\n\n<div class=\"training-opportunities-widget notranslate\" data-no-translation translate=\"no\">\n    <div class=\"training-opportunities-header\">\n        <span class=\"training-opportunities-icon\" aria-hidden=\"true\"><i class=\"icon icon-open-book\"><\/i><\/span>\n        <h2><span class=\"training-lang-pt\">Outras oportunidades de forma\u00e7\u00e3o<\/span><span class=\"training-lang-en\">Other training opportunities<\/span><\/h2>\n    <\/div>\n\n    <div class=\"training-opportunities-list\" role=\"region\" aria-label=\"Outras oportunidades de forma\u00e7\u00e3o\" tabindex=\"0\">\n                    <article class=\"training-course-card training-candidate\">\n                <div class=\"training-card-data notranslate\" hidden data-no-translation translate=\"no\">\n                    <span class=\"candidate-course-id\">26954a28-18a5-f111-aaac-7ced8d5f653d<\/span>\n                    <span class=\"candidate-area\">Exerc\u00edcio F\u00edsico e Performance<\/span>\n                    <span class=\"candidate-status\">A decorrer<\/span>\n                    <span class=\"candidate-start\">2023-03-24T00:00:00Z<\/span>\n                    <span class=\"candidate-url\"><\/span>\n                    <span class=\"candidate-action-id\">9f0bfeee-1ba5-f111-aaac-7ced8d5f653d<\/span>\n                <\/div>\n                <div class=\"training-course-image\">\n                    <div class=\"training-course-placeholder\">\n                        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n                            <path d=\"M12 6c-3-2-6-2-9-1v14c3-1 6-1 9 1\"\/>\n                            <path d=\"M12 6c3-2 6-2 9-1v14c-3-1-6-1-9 1\"\/>\n                            <path d=\"M12 6v14\"\/>\n                        <\/svg>\n                        <span class=\"training-lang-pt\">Forma\u00e7\u00e3o<\/span><span class=\"training-lang-en\">Training<\/span>\n                    <\/div>\n                <\/div>\n                <div class=\"training-course-content\">\n                    <h3 class=\"training-course-title notranslate\" data-no-translation translate=\"no\">Portugal - Switzerland Scientific interchange session on ACL and Sports<\/h3>\n                    <p class=\"training-course-description\">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.<\/p>\n                <\/div>\n            <\/article>\n                    <article class=\"training-course-card training-candidate\">\n                <div class=\"training-card-data notranslate\" hidden data-no-translation translate=\"no\">\n                    <span class=\"candidate-course-id\">eb4e0e88-f3c6-f111-a05c-7ced8d5f6c91<\/span>\n                    <span class=\"candidate-area\">Ci\u00eancias da Nutri\u00e7\u00e3o e Alimenta\u00e7\u00e3o<\/span>\n                    <span class=\"candidate-status\">A decorrer<\/span>\n                    <span class=\"candidate-start\">2026-09-16T00:00:00Z<\/span>\n                    <span class=\"candidate-url\">https:\/\/staging.academiaclinicadragao.com\/produto\/nutricao-para-runners\/<\/span>\n                    <span class=\"candidate-action-id\">a13cffc4-f3c6-f111-a05c-7ced8d5f6c91<\/span>\n                <\/div>\n                <div class=\"training-course-image\">\n                    <div class=\"training-course-placeholder\">\n                        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n                            <path d=\"M12 6c-3-2-6-2-9-1v14c3-1 6-1 9 1\"\/>\n                            <path d=\"M12 6c3-2 6-2 9-1v14c-3-1-6-1-9 1\"\/>\n                            <path d=\"M12 6v14\"\/>\n                        <\/svg>\n                        <span class=\"training-lang-pt\">Forma\u00e7\u00e3o<\/span><span class=\"training-lang-en\">Training<\/span>\n                    <\/div>\n                <\/div>\n                <div class=\"training-course-content\">\n                    <h3 class=\"training-course-title notranslate\" data-no-translation translate=\"no\">Curso de Nutri\u00e7\u00e3o para Runners<\/h3>\n                    <p class=\"training-course-description\">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.<\/p>\n                <\/div>\n            <\/article>\n                    <article class=\"training-course-card training-candidate\">\n                <div class=\"training-card-data notranslate\" hidden data-no-translation translate=\"no\">\n                    <span class=\"candidate-course-id\">a905eceb-f3c6-f111-a05c-7ced8d5f6c91<\/span>\n                    <span class=\"candidate-area\">Exerc\u00edcio F\u00edsico e Performance<\/span>\n                    <span class=\"candidate-status\">A decorrer<\/span>\n                    <span class=\"candidate-start\">2026-10-12T00:00:00Z<\/span>\n                    <span class=\"candidate-url\">https:\/\/staging.academiaclinicadragao.com\/produto\/curso-de-running-e-trail-running\/<\/span>\n                    <span class=\"candidate-action-id\">809a8134-f4c6-f111-a05c-7ced8d5f6c91<\/span>\n                <\/div>\n                <div class=\"training-course-image\">\n                    <div class=\"training-course-placeholder\">\n                        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n                            <path d=\"M12 6c-3-2-6-2-9-1v14c3-1 6-1 9 1\"\/>\n                            <path d=\"M12 6c3-2 6-2 9-1v14c-3-1-6-1-9 1\"\/>\n                            <path d=\"M12 6v14\"\/>\n                        <\/svg>\n                        <span class=\"training-lang-pt\">Forma\u00e7\u00e3o<\/span><span class=\"training-lang-en\">Training<\/span>\n                    <\/div>\n                <\/div>\n                <div class=\"training-course-content\">\n                    <h3 class=\"training-course-title notranslate\" data-no-translation translate=\"no\">Curso de Running e Trail Running<\/h3>\n                    <p class=\"training-course-description\">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.<\/p>\n                <\/div>\n            <\/article>\n                    <article class=\"training-course-card training-candidate\">\n                <div class=\"training-card-data notranslate\" hidden data-no-translation translate=\"no\">\n                    <span class=\"candidate-course-id\">eb55df59-f4c6-f111-a05c-7ced8d5f6c91<\/span>\n                    <span class=\"candidate-area\">Medicina<\/span>\n                    <span class=\"candidate-status\">Aberta<\/span>\n                    <span class=\"candidate-start\">2026-11-05T00:00:00Z<\/span>\n                    <span class=\"candidate-url\">https:\/\/staging.academiaclinicadragao.com\/produto\/medicina-dentaria-desportiva-atuacao-em-urgencias-medico-dentarias-no-desporto\/<\/span>\n                    <span class=\"candidate-action-id\">d6c389bd-f4c6-f111-a05c-7ced8d5f6c91<\/span>\n                <\/div>\n                <div class=\"training-course-image\">\n                    <div class=\"training-course-placeholder\">\n                        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n                            <path d=\"M12 6c-3-2-6-2-9-1v14c3-1 6-1 9 1\"\/>\n                            <path d=\"M12 6c3-2 6-2 9-1v14c-3-1-6-1-9 1\"\/>\n                            <path d=\"M12 6v14\"\/>\n                        <\/svg>\n                        <span class=\"training-lang-pt\">Forma\u00e7\u00e3o<\/span><span class=\"training-lang-en\">Training<\/span>\n                    <\/div>\n                <\/div>\n                <div class=\"training-course-content\">\n                    <h3 class=\"training-course-title notranslate\" data-no-translation translate=\"no\">Medicina Dent\u00e1ria Desportiva<\/h3>\n                    <p class=\"training-course-description\">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.<\/p>\n                <\/div>\n            <\/article>\n                    <article class=\"training-course-card training-candidate\">\n                <div class=\"training-card-data notranslate\" hidden data-no-translation translate=\"no\">\n                    <span class=\"candidate-course-id\">bc28605f-f5c6-f111-a05c-7ced8d5f6c91<\/span>\n                    <span class=\"candidate-area\">Ci\u00eancias da Nutri\u00e7\u00e3o e Alimenta\u00e7\u00e3o<\/span>\n                    <span class=\"candidate-status\">Conclu\u00edda<\/span>\n                    <span class=\"candidate-start\">2026-09-30T00:00:00Z<\/span>\n                    <span class=\"candidate-url\">https:\/\/staging.academiaclinicadragao.com\/produto\/curso-analises-clinicas-para-nutricionistas\/<\/span>\n                    <span class=\"candidate-action-id\">df35fd88-f5c6-f111-a05c-7ced8d5f6c91<\/span>\n                <\/div>\n                <div class=\"training-course-image\">\n                    <div class=\"training-course-placeholder\">\n                        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n                            <path d=\"M12 6c-3-2-6-2-9-1v14c3-1 6-1 9 1\"\/>\n                            <path d=\"M12 6c3-2 6-2 9-1v14c-3-1-6-1-9 1\"\/>\n                            <path d=\"M12 6v14\"\/>\n                        <\/svg>\n                        <span class=\"training-lang-pt\">Forma\u00e7\u00e3o<\/span><span class=\"training-lang-en\">Training<\/span>\n                    <\/div>\n                <\/div>\n                <div class=\"training-course-content\">\n                    <h3 class=\"training-course-title notranslate\" data-no-translation translate=\"no\">Curso de Interpreta\u00e7\u00e3o de An\u00e1lises Cl\u00ednicas para Nutricionistas<\/h3>\n                    <p class=\"training-course-description\">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.<\/p>\n                <\/div>\n            <\/article>\n                    <article class=\"training-course-card training-candidate\">\n                <div class=\"training-card-data notranslate\" hidden data-no-translation translate=\"no\">\n                    <span class=\"candidate-course-id\">edff5e53-08c7-f111-a05c-7ced8d5f6c91<\/span>\n                    <span class=\"candidate-area\">Exerc\u00edcio F\u00edsico e Performance<\/span>\n                    <span class=\"candidate-status\">A decorrer<\/span>\n                    <span class=\"candidate-start\">2026-10-12T00:00:00Z<\/span>\n                    <span class=\"candidate-url\">https:\/\/staging.academiaclinicadragao.com\/produto\/gps-no-futebol\/<\/span>\n                    <span class=\"candidate-action-id\">33b2677d-08c7-f111-a05c-7ced8d5f6c91<\/span>\n                <\/div>\n                <div class=\"training-course-image\">\n                    <div class=\"training-course-placeholder\">\n                        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n                            <path d=\"M12 6c-3-2-6-2-9-1v14c3-1 6-1 9 1\"\/>\n                            <path d=\"M12 6c3-2 6-2 9-1v14c-3-1-6-1-9 1\"\/>\n                            <path d=\"M12 6v14\"\/>\n                        <\/svg>\n                        <span class=\"training-lang-pt\">Forma\u00e7\u00e3o<\/span><span class=\"training-lang-en\">Training<\/span>\n                    <\/div>\n                <\/div>\n                <div class=\"training-course-content\">\n                    <h3 class=\"training-course-title notranslate\" data-no-translation translate=\"no\">GPS no Futebol<\/h3>\n                    <p class=\"training-course-description\">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.<\/p>\n                <\/div>\n            <\/article>\n                    <article class=\"training-course-card training-candidate\">\n                <div class=\"training-card-data notranslate\" hidden data-no-translation translate=\"no\">\n                    <span class=\"candidate-course-id\">8372bab0-08c7-f111-a05c-7ced8d5f6c91<\/span>\n                    <span class=\"candidate-area\">Exerc\u00edcio F\u00edsico e Performance<\/span>\n                    <span class=\"candidate-status\">Aberta<\/span>\n                    <span class=\"candidate-start\">2026-10-27T00:00:00Z<\/span>\n                    <span class=\"candidate-url\">https:\/\/staging.academiaclinicadragao.com\/produto\/4a-edicao-curso-strength-conditioning\/<\/span>\n                    <span class=\"candidate-action-id\">453bd6d3-08c7-f111-a05c-7ced8d5f6c91<\/span>\n                <\/div>\n                <div class=\"training-course-image\">\n                    <div class=\"training-course-placeholder\">\n                        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n                            <path d=\"M12 6c-3-2-6-2-9-1v14c3-1 6-1 9 1\"\/>\n                            <path d=\"M12 6c3-2 6-2 9-1v14c-3-1-6-1-9 1\"\/>\n                            <path d=\"M12 6v14\"\/>\n                        <\/svg>\n                        <span class=\"training-lang-pt\">Forma\u00e7\u00e3o<\/span><span class=\"training-lang-en\">Training<\/span>\n                    <\/div>\n                <\/div>\n                <div class=\"training-course-content\">\n                    <h3 class=\"training-course-title notranslate\" data-no-translation translate=\"no\">Curso strength &amp; conditioning<\/h3>\n                    <p class=\"training-course-description\">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.<\/p>\n                <\/div>\n            <\/article>\n                    <article class=\"training-course-card training-candidate\">\n                <div class=\"training-card-data notranslate\" hidden data-no-translation translate=\"no\">\n                    <span class=\"candidate-course-id\">f8d43aeb-b8b8-f111-aaaf-7ced8d5f6c91<\/span>\n                    <span class=\"candidate-area\">Ci\u00eancias da Nutri\u00e7\u00e3o e Alimenta\u00e7\u00e3o<\/span>\n                    <span class=\"candidate-status\">Aberta<\/span>\n                    <span class=\"candidate-start\">2026-10-10T00:00:00Z<\/span>\n                    <span class=\"candidate-url\">https:\/\/staging.academiaclinicadragao.com\/produto\/curso-avancado-em-nutricao-pediatrica\/<\/span>\n                    <span class=\"candidate-action-id\">315acb6d-b9b8-f111-aaaf-7ced8d5f6c91<\/span>\n                <\/div>\n                <div class=\"training-course-image\">\n                    <div class=\"training-course-placeholder\">\n                        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n                            <path d=\"M12 6c-3-2-6-2-9-1v14c3-1 6-1 9 1\"\/>\n                            <path d=\"M12 6c3-2 6-2 9-1v14c-3-1-6-1-9 1\"\/>\n                            <path d=\"M12 6v14\"\/>\n                        <\/svg>\n                        <span class=\"training-lang-pt\">Forma\u00e7\u00e3o<\/span><span class=\"training-lang-en\">Training<\/span>\n                    <\/div>\n                <\/div>\n                <div class=\"training-course-content\">\n                    <h3 class=\"training-course-title notranslate\" data-no-translation translate=\"no\">Curso Avan\u00e7ado em Nutri\u00e7\u00e3o Pedi\u00e1trica ...dos -9(meses) aos 18(anos)!<\/h3>\n                    <p class=\"training-course-description\">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.<\/p>\n                <\/div>\n            <\/article>\n                    <article class=\"training-course-card training-candidate\">\n                <div class=\"training-card-data notranslate\" hidden data-no-translation translate=\"no\">\n                    <span class=\"candidate-course-id\">f8d43aeb-b8b8-f111-aaaf-7ced8d5f6c91<\/span>\n                    <span class=\"candidate-area\">Ci\u00eancias da Nutri\u00e7\u00e3o e Alimenta\u00e7\u00e3o<\/span>\n                    <span class=\"candidate-status\">Conclu\u00edda<\/span>\n                    <span class=\"candidate-start\">2025-10-10T00:00:00Z<\/span>\n                    <span class=\"candidate-url\"><\/span>\n                    <span class=\"candidate-action-id\">2379228c-b9b8-f111-aaaf-7ced8d5f6c91<\/span>\n                <\/div>\n                <div class=\"training-course-image\">\n                    <div class=\"training-course-placeholder\">\n                        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n                            <path d=\"M12 6c-3-2-6-2-9-1v14c3-1 6-1 9 1\"\/>\n                            <path d=\"M12 6c3-2 6-2 9-1v14c-3-1-6-1-9 1\"\/>\n                            <path d=\"M12 6v14\"\/>\n                        <\/svg>\n                        <span class=\"training-lang-pt\">Forma\u00e7\u00e3o<\/span><span class=\"training-lang-en\">Training<\/span>\n                    <\/div>\n                <\/div>\n                <div class=\"training-course-content\">\n                    <h3 class=\"training-course-title notranslate\" data-no-translation translate=\"no\">Curso Avan\u00e7ado em Nutri\u00e7\u00e3o Pedi\u00e1trica ...dos -9(meses) aos 18(anos)!<\/h3>\n                    <p class=\"training-course-description\">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.<\/p>\n                <\/div>\n            <\/article>\n            <\/div>\n    <div class=\"training-courses-empty\" hidden><span class=\"training-lang-pt\">N\u00e3o existem oportunidades de forma\u00e7\u00e3o dispon\u00edveis.<\/span><span class=\"training-lang-en\">There are no training opportunities available.<\/span><\/div>\n<\/div>\n\n<style>\n\/* Locally authored language labels, without automatic TranslatePress translation. *\/\n.training-opportunities-widget .training-lang-en {display:none!important}\nhtml.student-opportunities-english .training-opportunities-widget .training-lang-pt {display:none!important}\nhtml.student-opportunities-english .training-opportunities-widget .training-lang-en {display:inline!important}\n\n\/* =========================================\n   MAIN CONTAINER\n========================================= *\/\n\n.training-opportunities-widget {\n    --training-blue: #1559e8;\n    --training-light-blue: #258cfa;\n    --training-border: #b9d7fd;\n\n    width: 100%;\n    max-width: 100%;\n\n    padding: 16px 18px 18px;\n\n    background: #ffffff;\n    border-radius: 14px;\n\n    box-shadow: 0 4px 20px rgba(20, 80, 150, 0.07);\n\n    font-family: inherit;\n    box-sizing: border-box;\n\n    container-type: inline-size;\n}\n\n.training-opportunities-widget *,\n.training-opportunities-widget *::before,\n.training-opportunities-widget *::after {\n    box-sizing: border-box;\n}\n\n\/* =========================================\n   HEADER\n========================================= *\/\n\n.training-opportunities-widget\n.training-opportunities-header {\n    display: flex;\n    align-items: center;\n\n    gap: 10px;\n    margin-bottom: 14px;\n}\n\n.training-opportunities-widget .training-opportunities-icon {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n\n    width: 40px;\n    height: 40px;\n    flex: 0 0 40px;\n\n    color: #1559e8 !important;\n}\n\n.training-opportunities-widget .training-opportunities-icon i {\n    font-size: 36px !important;\n    line-height: 1 !important;\n    color: inherit !important;\n}\n\n.training-opportunities-widget\n.training-opportunities-header h2 {\n    margin: 0 !important;\n    padding: 0 !important;\n\n    color: var(--training-blue) !important;\n\n    font-size: 25px !important;\n    font-weight: 700 !important;\n    line-height: 1.25 !important;\n\n    text-transform: none !important;\n    letter-spacing: normal !important;\n}\n\n\/* =========================================\n   HORIZONTAL COURSE LIST\n========================================= *\/\n\n.training-opportunities-widget\n.training-opportunities-list {\n    display: grid !important;\n    grid-auto-flow: column !important;\n\n    \/* Three cards visible on desktop *\/\n    grid-auto-columns:\n        calc((100% - 24px) \/ 3) !important;\n\n    gap: 12px !important;\n\n    width: 100%;\n    min-width: 0;\n\n    overflow-x: auto !important;\n    overflow-y: hidden !important;\n\n    padding: 2px 2px 14px 2px;\n\n    scroll-snap-type: x mandatory;\n    scroll-padding-inline: 2px;\n    overscroll-behavior-x: contain;\n\n    scrollbar-width: thin;\n    scrollbar-color: #a9cbfa #edf5ff;\n\n    -webkit-overflow-scrolling: touch;\n}\n\n\/* CHROME \/ EDGE \/ SAFARI SCROLLBAR *\/\n\n.training-opportunities-widget\n.training-opportunities-list::-webkit-scrollbar {\n    height: 7px;\n}\n\n.training-opportunities-widget\n.training-opportunities-list::-webkit-scrollbar-track {\n    background: #edf5ff;\n    border-radius: 10px;\n}\n\n.training-opportunities-widget\n.training-opportunities-list::-webkit-scrollbar-thumb {\n    background: #a9cbfa;\n    border-radius: 10px;\n}\n\n.training-opportunities-widget\n.training-opportunities-list::-webkit-scrollbar-thumb:hover {\n    background: #258cfa;\n}\n\n\/* =========================================\n   COURSE CARD\n========================================= *\/\n\n.training-opportunities-widget\n.training-course-card {\n    display: flex !important;\n    align-items: stretch;\n\n    gap: 10px;\n\n    min-width: 0;\n    min-height: 148px;\n\n    padding: 9px;\n\n    background: #ffffff !important;\n\n    border: 1.5px solid var(--training-border);\n    border-radius: 13px;\n\n    text-decoration: none !important;\n    color: inherit !important;\n\n    scroll-snap-align: start;\n\n    transition:\n        border-color 0.2s ease,\n        box-shadow 0.2s ease,\n        transform 0.2s ease;\n}\n\n.training-opportunities-widget\n.training-course-card:hover {\n    border-color: #258cfa;\n\n    box-shadow: 0 4px 14px rgba(37, 140, 250, 0.12);\n\n    transform: translateY(-2px);\n}\n\n\/* =========================================\n   COURSE IMAGE\n========================================= *\/\n\n.training-opportunities-widget\n.training-course-image {\n    position: relative;\n\n    width: 36%;\n    min-width: 0;\n    flex: 0 0 36%;\n\n    min-height: 128px;\n\n    border-radius: 9px;\n\n    overflow: hidden;\n\n    background: linear-gradient(\n        145deg,\n        #0d4ca8,\n        #258cfa\n    );\n}\n\n.training-opportunities-widget\n.training-course-image img {\n    display: block;\n\n    width: 100% !important;\n    height: 100% !important;\n\n    position: absolute;\n    inset: 0;\n\n    object-fit: cover !important;\n    border-radius: 9px !important;\n}\n\n\/* Placeholder if no image is provided *\/\n\n.training-opportunities-widget\n.training-course-placeholder {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-content: center;\n\n    width: 100%;\n    height: 100%;\n\n    padding: 12px;\n\n    color: #ffffff;\n    text-align: center;\n\n    font-size: 12px;\n    font-weight: 700;\n    line-height: 1.3;\n}\n\n.training-opportunities-widget\n.training-course-placeholder svg {\n    width: 35px;\n    height: 35px;\n\n    margin-bottom: 8px;\n}\n\n\/* =========================================\n   COURSE CONTENT\n========================================= *\/\n\n.training-opportunities-widget\n.training-course-content {\n    display: flex;\n    flex-direction: column;\n\n    flex: 1 1 0;\n    min-width: 0;\n\n    padding: 2px 0;\n}\n\n\/* COURSE TITLE *\/\n\n.training-opportunities-widget\n.training-course-title {\n    margin: 0 0 8px !important;\n    padding: 0 !important;\n\n    color: #1559e8 !important;\n\n    font-size: 13px !important;\n    font-weight: 700 !important;\n    line-height: 1.2 !important;\n\n    text-transform: uppercase !important;\n    overflow-wrap: anywhere;\n}\n\n\/* COURSE DESCRIPTION *\/\n\n.training-opportunities-widget\n.training-course-description {\n    margin: 0 !important;\n    padding: 0 !important;\n\n    color: #2269f0 !important;\n\n    font-size: 13px !important;\n    font-weight: 400 !important;\n    line-height: 1.35 !important;\n\n    text-transform: none !important;\n\n    display: -webkit-box;\n    -webkit-box-orient: vertical;\n    -webkit-line-clamp: 4;\n\n    overflow: hidden;\n    overflow-wrap: anywhere;\n}\n\n\/* EMPTY STATE *\/\n\n.training-opportunities-widget\n.training-courses-empty {\n    grid-column: 1 \/ -1;\n\n    padding: 25px;\n\n    color: #64748b;\n    font-size: 14px;\n    text-align: center;\n}\n\n.training-opportunities-widget .training-course-card {\n    cursor: default !important;\n}\n\n.training-opportunities-widget .training-course-card[role=\"link\"] {\n    cursor: pointer !important;\n}\n\n\n\/* =========================================\n   RESPONSIVE HORIZONTAL COURSE SCROLL\n========================================= *\/\n\n\/* Desktop: 3 visible courses *\/\n.training-opportunities-widget .training-opportunities-list {\n    display: grid !important;\n    grid-auto-flow: column !important;\n    grid-auto-columns: calc((100% - 24px) \/ 3) !important;\n\n    gap: 12px !important;\n\n    overflow-x: auto !important;\n    overflow-y: hidden !important;\n\n    width: 100% !important;\n    min-width: 0 !important;\n}\n\n\/* Tablet: 2 visible courses *\/\n@media (max-width: 1100px) {\n    .training-opportunities-widget .training-opportunities-list {\n        grid-auto-columns: calc((100% - 12px) \/ 2) !important;\n    }\n}\n\n\/* Mobile: 1 visible course *\/\n@media (max-width: 767px) {\n    .training-opportunities-widget .training-opportunities-list {\n        grid-auto-columns: 100% !important;\n    }\n\n    .training-opportunities-widget .training-course-card {\n        min-width: 0 !important;\n    }\n}\n\n\n\/* Allow Twig to render raw cards; JS chooses which ones are eligible *\/\n.training-opportunities-widget .training-course-card[hidden] { display: none !important; }\n.training-opportunities-widget .training-courses-empty[hidden] { display:none !important; }\n.training-opportunities-widget .training-courses-empty:not([hidden]) { display:block; }\n.training-opportunities-widget { min-width:0; }\n.training-opportunities-widget .training-opportunities-list { min-width:0; }\n\n\/* Real image is overlaid only after successful load *\/\n.training-opportunities-widget .training-course-image img {\n    position: absolute;\n    inset: 0;\n    width: 100% !important;\n    height: 100% !important;\n    object-fit: cover !important;\n    border-radius: 9px !important;\n    display: block !important;\n}\n.training-opportunities-widget .training-course-image.has-image .training-course-placeholder {\n    display: none !important;\n}\n\n\n\/* Course image: square, fills available height, with a maximum size *\/\n.training-opportunities-widget .training-course-image {\n    position: relative;\n\n    width: auto !important;\n    height: auto !important;\n\n    aspect-ratio: 1 \/ 1 !important;\n\n    max-width: 200px !important;\n    max-height: 280px !important;\n\n    flex: 0 1 min(40%, 250px)!important;\n    align-self: stretch !important;\n\n    min-width: 0 !important;\n    min-height: 0 !important;\n\n    overflow: hidden;\n    border-radius: 9px;\n}\n\n\/* Dataverse image fills the square *\/\n.training-opportunities-widget .training-course-image img {\n    position: absolute !important;\n    inset: 0;\n\n    width: 100% !important;\n    height: 100% !important;\n\n    object-fit: cover !important;\n}\n\n\/* Fallback placeholder fills the square *\/\n.training-opportunities-widget .training-course-placeholder {\n    position: absolute;\n    inset: 0;\n\n    width: 100%;\n    height: 100%;\n}\n\n\n<\/style>\n<script>\n(function () {\n    function initializeOpportunities() {\n        const widget = document.querySelector(\".training-opportunities-widget\");\n        const enrolledData = document.querySelector(\".training-enrolled-data\");\n        if (!widget || !enrolledData) return;\n\n        const isEnglish = \/^\\\/en(?:\\\/|$)\/i.test(window.location.pathname);\n        const list = widget.querySelector(\".training-opportunities-list\");\n        if (list) list.setAttribute('aria-label', isEnglish ? 'Other training opportunities' : 'Outras oportunidades de forma\u00e7\u00e3o');\n        const empty = widget.querySelector(\".training-courses-empty\");\n        const imagePromises = [];\n        const read = (root, selector) => root.querySelector(selector)?.textContent.trim() || \"\";\n        const normalize = value => String(value || \"\").trim().normalize(\"NFD\").replace(\/[\\u0300-\\u036f]\/g, \"\").toLowerCase();\n\n        const enrolledCourses = new Set();\n        const enrolledAreas = new Set();\n        enrolledData.querySelectorAll(\".training-enrolled-record\").forEach(record => {\n            const id = normalize(read(record, \".enrolled-course-id\"));\n            const area = normalize(read(record, \".enrolled-area\"));\n            if (id) enrolledCourses.add(id);\n            if (area) enrolledAreas.add(area);\n        });\n\n        const cards = Array.from(list.querySelectorAll(\".training-candidate\"));\n        const chosen = new Map();\n        cards.forEach(card => {\n            const courseId = normalize(read(card, \".candidate-course-id\"));\n            const area = normalize(read(card, \".candidate-area\"));\n            const status = normalize(read(card, \".candidate-status\"));\n            const start = read(card, \".candidate-start\");\n\n            if (!courseId || enrolledCourses.has(courseId) || !enrolledAreas.has(area) || status === \"concluida\") {\n                card.remove();\n                return;\n            }\n            const existing = chosen.get(courseId);\n            if (existing && existing.start >= start) {\n                card.remove();\n                return;\n            }\n            if (existing) existing.card.remove();\n            chosen.set(courseId, { card, start });\n        });\n\n        \/\/ Image URLs are created from a separate, simple FetchXML query.\n        const imagesByAction = new Map();\n        document.querySelectorAll(\".training-images-data .training-image-record\").forEach(record => {\n            const id = normalize(read(record, \".training-image-action-id\"));\n            const url = read(record, \".training-image-url\");\n            if (id && url) imagesByAction.set(id, url);\n        });\n\n        list.querySelectorAll(\".training-course-card\").forEach(card => {\n            const actionId = normalize(read(card, \".candidate-action-id\"));\n            const imageUrl = imagesByAction.get(actionId);\n            const container = card.querySelector(\".training-course-image\");\n\n            if (imageUrl && container) {\n                const imagePromise = new Promise(resolve => {\n                    const img = document.createElement(\"img\");\n                    img.alt = read(card, \".training-course-title\") || (isEnglish ? \"Course image\" : \"Imagem do curso\");\n                    img.loading = \"eager\";\n\n                    let settled = false;\n                    const timeout = setTimeout(() => finish(false), 7000);\n\n                    function finish(success) {\n                        if (settled) return;\n                        settled = true;\n                        clearTimeout(timeout);\n                        if (success) {\n                            container.classList.add(\"has-image\");\n                        } else {\n                            img.remove(); \/\/ Keep the existing blue placeholder.\n                        }\n                        resolve();\n                    }\n\n                    img.addEventListener(\"load\", () => finish(true), { once: true });\n                    img.addEventListener(\"error\", () => finish(false), { once: true });\n                    img.src = imageUrl;\n                    container.appendChild(img);\n\n                    \/\/ Handle images already in the browser cache.\n                    if (img.complete) {\n                        finish(img.naturalWidth > 0);\n                    }\n                });\n                imagePromises.push(imagePromise);\n            }\n\n            const link = read(card, \".candidate-url\");\n            if (\/^https?:\\\/\\\/\/i.test(link) || (link.startsWith(\"\/\") && !link.startsWith(\"\/\/\"))) {\n                card.setAttribute(\"role\", \"link\");\n                card.setAttribute(\"tabindex\", \"0\");\n                \ncard.addEventListener(\"click\", () => {\n    window.open(link, \"_blank\", \"noopener,noreferrer\");\n});\n\ncard.addEventListener(\"keydown\", event => {\n    if (event.key === \"Enter\") {\n        event.preventDefault();\n        window.open(link, \"_blank\", \"noopener,noreferrer\");\n    }\n});\n\n            }\n        });\n\n        empty.hidden = list.querySelectorAll(\".training-course-card\").length > 0;\n\n        \/\/ Signal readiness only after all chosen courses and their images are settled.\n        \/\/ Promise.all([]) also works when no course needs an image.\n        Promise.all(imagePromises).then(() => {\n            widget.classList.add(\"opportunities-ready\");\n            window.dispatchEvent(new Event(\"student:opportunities-ready\"));\n        });\n    }\n\n    if (document.readyState === \"loading\") {\n        document.addEventListener(\"DOMContentLoaded\", initializeOpportunities);\n    } else {\n        initializeOpportunities();\n    }\n})();\n<\/script>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f8d6624 elementor-widget elementor-widget-shortcode\" data-id=\"f8d6624\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\n\n\n\n\n\n    <div id=\"student-dataverse-data\"\n         hidden\n         data-no-translation translate=\"no\" class=\"notranslate\"\n         data-name=\"Daniel&#x20;James&#x20;Whitmore\"\n         data-number=\"202600186\"\n         data-photo=\"https&#x3A;&#x2F;&#x2F;staging.academiaclinicadragao.com&#x2F;en&#x2F;wp-json&#x2F;integration-cds&#x2F;v1&#x2F;image&#x3F;table&#x3D;bpe_aluno&amp;id&#x3D;77cc61c4-e9a2-f111-b8dd-7ced8d5f6c91&amp;column&#x3D;bpe_fotografia&amp;isThumb&#x3D;1\">\n    <\/div>\n\n\n<style>\n\/* Manual language selection avoids TranslatePress changing Dataverse content. *\/\n.student-home-en { display: none !important; }\nhtml.student-home-english .student-home-pt { display: none !important; }\nhtml.student-home-english .student-home-en { display: inline !important; }\n<\/style>\n\n<script>\n(function () {\n    const isEnglish = \/^\\\/en(?:\\\/|$)\/i.test(window.location.pathname);\n    document.documentElement.classList.toggle(\"student-home-english\", isEnglish);\n\n    const data = document.getElementById(\"student-dataverse-data\");\n    if (!data) return;\n\n    const name = data.dataset.name || \"\";\n    const number = data.dataset.number || \"\";\n    const photoUrl = data.dataset.photo || \"\";\n\n    function setProtectedLabel(element, label, value) {\n        if (!element) return;\n        element.setAttribute(\"data-no-translation\", \"\");\n        element.setAttribute(\"translate\", \"no\");\n        element.classList.add(\"notranslate\");\n\n        \/\/ Keep the interface label separate from the Dataverse value.\n        element.textContent = \"\";\n        const labelSpan = document.createElement(\"span\");\n        labelSpan.textContent = label;\n        const valueSpan = document.createElement(\"span\");\n        valueSpan.textContent = value;\n        valueSpan.setAttribute(\"data-no-translation\", \"\");\n        valueSpan.setAttribute(\"translate\", \"no\");\n        valueSpan.classList.add(\"notranslate\");\n        element.append(labelSpan, valueSpan);\n    }\n\n    function updateWidgets() {\n\n        \/\/ Greeting\n        const greeting = document.querySelector(\".student-greeting h6\");\n        if (greeting && name) {\n            setProtectedLabel(greeting, isEnglish ? \"Hello, \" : \"Ol\u00e1, \", name);\n        }\n\n        \/\/ Student number\n        const numberElement = document.querySelector(\n            \".student-number h6, \" +\n            \".student-number .elementor-heading-title, \" +\n            \".student-number p\"\n        );\n        if (numberElement && number) {\n            setProtectedLabel(numberElement, isEnglish ? \"Student no.: \" : \"N\u00ba estudante: \", number);\n        }\n\n        \/\/ =====================================\n        \/\/ STUDENT PHOTOGRAPH \u2014 ORIGINAL BEHAVIOR\n        \/\/ =====================================\n        if (photoUrl) {\n\n            function applyStudentPhoto() {\n                const image = document.querySelector(\".student-photo img\");\n                if (!image) return false;\n\n                image.removeAttribute(\"srcset\");\n                image.removeAttribute(\"sizes\");\n                image.removeAttribute(\"data-src\");\n                image.removeAttribute(\"data-srcset\");\n                image.removeAttribute(\"data-lazy-src\");\n                image.removeAttribute(\"data-lazy-srcset\");\n\n                const picture = image.closest(\"picture\");\n                if (picture) {\n                    picture.querySelectorAll(\"source\").forEach(source => {\n                        source.removeAttribute(\"srcset\");\n                        source.removeAttribute(\"sizes\");\n                    });\n                }\n\n                image.loading = \"eager\";\n                image.src = photoUrl;\n                image.alt = isEnglish ? \"Student photo\" : \"Fotografia do estudante\";\n                return true;\n            }\n\n            applyStudentPhoto();\n            window.addEventListener(\"load\", applyStudentPhoto);\n\n            const photoWidget = document.querySelector(\".student-photo\");\n            if (photoWidget) {\n                const observer = new MutationObserver(() => {\n                    const image = photoWidget.querySelector(\"img\");\n                    if (!image) return;\n                    if (image.getAttribute(\"src\") !== photoUrl || image.hasAttribute(\"srcset\")) {\n                        applyStudentPhoto();\n                    }\n                });\n                observer.observe(photoWidget, {\n                    childList: true,\n                    subtree: true,\n                    attributes: true,\n                    attributeFilter: [\"src\", \"srcset\", \"data-src\", \"data-srcset\"]\n                });\n            }\n        }\n    }\n\n    updateWidgets();\n    document.addEventListener(\"DOMContentLoaded\", updateWidgets);\n})();\n<\/script>\n\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Portal dos Estudantes A preparar a sua \u00e1rea pessoal&#8230; Portal do Estudante N\u00ba estudante: XXXXXX Ol\u00e1, Jo\u00e3o Silva O meu<\/p>","protected":false},"author":65,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"courseId":0,"footnotes":""},"class_list":["post-91529","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/staging.academiaclinicadragao.com\/en\/wp-json\/wp\/v2\/pages\/91529","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/staging.academiaclinicadragao.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/staging.academiaclinicadragao.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/staging.academiaclinicadragao.com\/en\/wp-json\/wp\/v2\/users\/65"}],"replies":[{"embeddable":true,"href":"https:\/\/staging.academiaclinicadragao.com\/en\/wp-json\/wp\/v2\/comments?post=91529"}],"version-history":[{"count":5,"href":"https:\/\/staging.academiaclinicadragao.com\/en\/wp-json\/wp\/v2\/pages\/91529\/revisions"}],"predecessor-version":[{"id":93888,"href":"https:\/\/staging.academiaclinicadragao.com\/en\/wp-json\/wp\/v2\/pages\/91529\/revisions\/93888"}],"wp:attachment":[{"href":"https:\/\/staging.academiaclinicadragao.com\/en\/wp-json\/wp\/v2\/media?parent=91529"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}