{"id":2047,"date":"2026-09-11T09:29:17","date_gmt":"2026-09-11T09:29:17","guid":{"rendered":"https:\/\/learn.newproferm.ro\/?page_id=2047"},"modified":"2026-10-29T11:07:16","modified_gmt":"2026-10-29T11:07:16","slug":"robot-status-booking","status":"publish","type":"page","link":"https:\/\/learn.newproferm.com\/ro\/robot-status-booking\/","title":{"rendered":"Starea robotului \u0219i rezervare"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"2047\" class=\"elementor elementor-2047\">\n\t\t\t\t<div class=\"elementor-element elementor-element-13620248 e-flex e-con-boxed e-con e-parent\" data-id=\"13620248\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-53473895 elementor-widget elementor-widget-image\" data-id=\"53473895\" 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=\"1024\" height=\"578\" src=\"https:\/\/learn.newproferm.com\/wp-content\/uploads\/2026\/10\/Real-Robot-Status-Booking-Dashboard-1024x578.png\" class=\"attachment-large size-large wp-image-2403\" alt=\"\" srcset=\"https:\/\/learn.newproferm.com\/wp-content\/uploads\/2026\/10\/Real-Robot-Status-Booking-Dashboard-1024x578.png 1024w, https:\/\/learn.newproferm.com\/wp-content\/uploads\/2026\/10\/Real-Robot-Status-Booking-Dashboard-300x169.png 300w, https:\/\/learn.newproferm.com\/wp-content\/uploads\/2026\/10\/Real-Robot-Status-Booking-Dashboard-768x433.png 768w, https:\/\/learn.newproferm.com\/wp-content\/uploads\/2026\/10\/Real-Robot-Status-Booking-Dashboard-1536x866.png 1536w, https:\/\/learn.newproferm.com\/wp-content\/uploads\/2026\/10\/Real-Robot-Status-Booking-Dashboard-18x10.png 18w, https:\/\/learn.newproferm.com\/wp-content\/uploads\/2026\/10\/Real-Robot-Status-Booking-Dashboard-600x338.png 600w, https:\/\/learn.newproferm.com\/wp-content\/uploads\/2026\/10\/Real-Robot-Status-Booking-Dashboard.png 1670w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/>\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\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-51bff86b e-flex e-con-boxed e-con e-parent\" data-id=\"51bff86b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4b554da2 elementor-widget elementor-widget-heading\" data-id=\"4b554da2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Verific\u0103 starea robotului \u00eenainte de rezervare<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-5b02d57f e-flex e-con-boxed e-con e-parent\" data-id=\"5b02d57f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-45890416 elementor-widget elementor-widget-text-editor\" data-id=\"45890416\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3 class=\"PDq2pG_selectionAnchorContainer\" data-section-id=\"quk48s\" data-start=\"383\" data-end=\"426\">Asigur\u0103-te c\u0103 robotul real este disponibil \u00eenainte de a rezerva sesiunea de teleoperare.<\/h3><p class=\"PDq2pG_selectionAnchorContainer\" data-start=\"373\" data-end=\"442\">\u00cenainte de a rezerva o sesiune, verific\u0103 starea actual\u0103 a robotului real.<\/p><p data-start=\"444\" data-end=\"477\">Panoul de stare a robotului va afi\u0219a:<\/p><ul data-start=\"479\" data-end=\"843\"><li data-section-id=\"r7jywf\" data-start=\"479\" data-end=\"537\"><strong data-start=\"481\" data-end=\"503\">Disponibilitatea robotului<\/strong> \u2014 Conectat, deconectat sau \u00een sesiune<\/li><li data-section-id=\"1fomsf1\" data-start=\"538\" data-end=\"612\"><strong data-start=\"540\" data-end=\"557\">Starea camerelor<\/strong> \u2014 confirm\u0103 disponibilitatea imaginilor \u00een direct din zona de lucru<\/li><li data-section-id=\"xcb1mz\" data-start=\"613\" data-end=\"692\"><strong data-start=\"615\" data-end=\"636\">Starea conexiunii<\/strong> \u2014 indic\u0103 dac\u0103 robotul este preg\u0103tit pentru control de la distan\u021b\u0103<\/li><li data-section-id=\"1ly7f0z\" data-start=\"693\" data-end=\"771\"><strong data-start=\"695\" data-end=\"714\">Sesiunea curent\u0103<\/strong> \u2014 indic\u0103 dac\u0103 robotul este utilizat de un alt student<\/li><li data-section-id=\"18xghu8\" data-start=\"772\" data-end=\"843\"><strong data-start=\"774\" data-end=\"797\">Urm\u0103torul interval disponibil<\/strong> \u2014 indic\u0103 momentul \u00een care poate fi rezervat\u0103 urm\u0103toarea sesiune<\/li><\/ul><p data-start=\"845\" data-end=\"922\">Doar studen\u021bii care finalizeaz\u0103 antrenamentul \u00een simulator \u0219i ob\u021bin un punctaj final de minimum 80\/100 se calific\u0103 pentru accesul la robotul real \u0219i rezervarea unei sesiuni.<\/p><p data-start=\"924\" data-end=\"1004\">C\u00e2nd robotul este conectat \u0219i disponibil, studen\u021bii califica\u021bi pot continua cu rezervarea unei sesiuni.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-74b1c288 e-flex e-con-boxed e-con e-parent\" data-id=\"74b1c288\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-25565c46 e-con-full e-flex e-con e-child\" data-id=\"25565c46\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-55d187c9 elementor-widget elementor-widget-image\" data-id=\"55d187c9\" 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 decoding=\"async\" width=\"1024\" height=\"577\" src=\"https:\/\/learn.newproferm.com\/wp-content\/uploads\/2026\/10\/Book-Your-Real-Robot-Session-1024x577.png\" class=\"attachment-large size-large wp-image-2405\" alt=\"\" srcset=\"https:\/\/learn.newproferm.com\/wp-content\/uploads\/2026\/10\/Book-Your-Real-Robot-Session-1024x577.png 1024w, https:\/\/learn.newproferm.com\/wp-content\/uploads\/2026\/10\/Book-Your-Real-Robot-Session-300x169.png 300w, https:\/\/learn.newproferm.com\/wp-content\/uploads\/2026\/10\/Book-Your-Real-Robot-Session-768x433.png 768w, https:\/\/learn.newproferm.com\/wp-content\/uploads\/2026\/10\/Book-Your-Real-Robot-Session-1536x865.png 1536w, https:\/\/learn.newproferm.com\/wp-content\/uploads\/2026\/10\/Book-Your-Real-Robot-Session-18x10.png 18w, https:\/\/learn.newproferm.com\/wp-content\/uploads\/2026\/10\/Book-Your-Real-Robot-Session-600x338.png 600w, https:\/\/learn.newproferm.com\/wp-content\/uploads\/2026\/10\/Book-Your-Real-Robot-Session.png 1670w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/>\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-744d123d elementor-widget elementor-widget-text-editor\" data-id=\"744d123d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Interfa\u021ba de rezervare permite studen\u021bilor califica\u021bi s\u0103 aleag\u0103 o dat\u0103 \u0219i o or\u0103 disponibile pentru o sesiune de teleoperare de 10 minute cu robotul real. Alege un interval disponibil \u0219i confirm\u0103 rezervarea \u00eenainte de conectarea la robot.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-2a39a6b6 e-flex e-con-boxed e-con e-parent\" data-id=\"2a39a6b6\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5c657014 elementor-widget elementor-widget-heading\" data-id=\"5c657014\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Rezerv\u0103 sesiunea ta cu robotul real<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e31a8e3 elementor-widget elementor-widget-text-editor\" data-id=\"e31a8e3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p class=\"PDq2pG_selectionAnchorContainer\" data-start=\"149\" data-end=\"229\"><strong data-start=\"149\" data-end=\"229\">Alege o dat\u0103 \u0219i o or\u0103 disponibile pentru sesiunea ta de teleoperare cu robotul real.<\/strong><\/p><p data-start=\"231\" data-end=\"336\">Studen\u021bii califica\u021bi pot rezerva o sesiune de 10 minute cu robotul real atunci c\u00e2nd acesta este conectat \u0219i disponibil. <strong data-start=\"264\" data-end=\"296\">10-minute Real Robot session<\/strong> when the robot is online and available.<\/p><p data-start=\"338\" data-end=\"356\"><strong data-start=\"338\" data-end=\"356\">Pa\u0219ii pentru rezervare:<\/strong><\/p><ol data-start=\"358\" data-end=\"637\"><li data-section-id=\"4nw5mm\" data-start=\"358\" data-end=\"386\">Selecteaz\u0103 o dat\u0103 disponibil\u0103.<\/li><li data-section-id=\"ke6g25\" data-start=\"387\" data-end=\"420\">Alege un interval orar disponibil.<\/li><li data-section-id=\"136ptxl\" data-start=\"421\" data-end=\"455\">Confirm\u0103 sesiunea de 10 minute.<\/li><li data-section-id=\"vgptmq\" data-start=\"456\" data-end=\"514\">Finalizeaz\u0103 verificarea cerin\u021belor de siguran\u021b\u0103 \u00eenainte de conectarea la robotul real.<\/li><li data-section-id=\"f0q1d1\" data-start=\"515\" data-end=\"558\">Acceseaz\u0103 sesiunea la ora programat\u0103.<\/li><li data-section-id=\"1mm1gp5\" data-start=\"559\" data-end=\"602\">Verific\u0103 imaginile transmise \u00een direct de camer\u0103 \u0219i starea robotului.<\/li><li data-section-id=\"1osrf2r\" data-start=\"603\" data-end=\"637\">Continu\u0103 la teleoperarea \u00een direct.<\/li><\/ol><p data-start=\"639\" data-end=\"696\"><strong data-start=\"639\" data-end=\"696\">Verde = Disponibil \u2022 Ro\u0219u = Rezervat \u2022 Gri = Indisponibil<\/strong><\/p><p data-start=\"698\" data-end=\"826\">Doar studen\u021bii care au finalizat antrenamentul \u00een simulator \u0219i au ob\u021binut un punctaj final de minimum 80\/100 pot rezerva o sesiune cu robotul real. <strong data-start=\"761\" data-end=\"795\">final score of at least 80\/100<\/strong> can book a Real Robot session.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-778d9d4d e-flex e-con-boxed e-con e-parent\" data-id=\"778d9d4d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6905985 elementor-widget elementor-widget-shortcode\" data-id=\"6905985\" 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    <div id=\"lrs-booking-identity\" class=\"lrs-booking-message\">\n        Checking your simulator qualification...\n    <\/div>\n\n    <div id=\"lrs-robot-booking\" style=\"display:none;\">\n        \n        <div id=\"lrs-upcoming-sessions\" style=\"display:none;\">\n    <h3>MY UPCOMING SESSIONS<\/h3>\n    <div id=\"lrs-upcoming-sessions-list\"><\/div>\n<\/div>\n\n        <div class=\"lrs-booking-header\">\n            <div>\n                <div class=\"lrs-step-number\">1<\/div>\n                <h3>Select a Date<\/h3>\n            <\/div>\n\n            <div class=\"lrs-date-picker-wrap\">\n\n    <button type=\"button\" id=\"lrs-choose-date-button\">\n        <span class=\"lrs-date-icon\">\ud83d\udcc5<\/span>\n        <span>\n            <strong>CHOOSE A DATE<\/strong>\n            <small>CLICK HERE TO SELECT A DATE<\/small>\n        <\/span>\n    <\/button>\n\n    <input\n        type=\"date\"\n        id=\"lrs-booking-date\"\n        min=\"2026-11-06\"\n    >\n\n<\/div>\n        <\/div>\n\n        <div id=\"lrs-booking-status\">\n            Select a date to see available Real Robot sessions.\n        <\/div>\n\n        <div id=\"lrs-booking-slots\"><\/div>\n\n        <div id=\"lrs-selected-session\" style=\"display:none;\">\n            <div class=\"lrs-step-number\">2<\/div>\n            <h3>Selected Session<\/h3>\n\n            <p id=\"lrs-selected-session-text\"><\/p>\n\n            <button type=\"button\" id=\"lrs-confirm-booking\">\n                BOOK & PAY &euro;1\n            <\/button>\n\n            <div style=\"margin-top:14px;padding:15px;border:1px solid #bfdbfe;border-radius:10px;background:#eff6ff;\">\n                <label for=\"lrs-institutional-code\" style=\"display:block;font-weight:700;margin-bottom:8px;\">Institutional access code<\/label>\n                <input type=\"text\" id=\"lrs-institutional-code\" autocomplete=\"off\" spellcheck=\"false\" placeholder=\"LRS-...\" maxlength=\"80\" style=\"display:block;width:100%;padding:12px;border:1px solid #93c5fd;border-radius:7px;margin-bottom:10px;box-sizing:border-box;\" \/>\n                <button type=\"button\" id=\"lrs-institutional-book\" style=\"display:block;width:100%;padding:13px;background:#0f766e;color:#fff;border:0;border-radius:7px;font-weight:700;cursor:pointer;\">USE INSTITUTIONAL ACCESS CODE<\/button>\n                <p style=\"font-size:12px;margin:8px 0 0;color:#334155;\">One institutional credit will be used only if the booking succeeds.<\/p>\n            <\/div>\n            <div id=\"lrs-booking-result\" role=\"status\" aria-live=\"polite\"><\/div>\n        <\/div>\n\n    <\/div>\n\n    <style>\n        #lrs-robot-booking {\n            max-width: 900px;\n            margin: 30px auto;\n            padding: 30px;\n            background: #ffffff;\n            border: 1px solid #dbeafe;\n            border-radius: 16px;\n            box-shadow: 0 8px 30px rgba(15, 23, 42, 0.08);\n            font-family: inherit;\n        }\n        \n        .lrs-date-picker-wrap {\n    position: relative;\n    width: 100%;\n    display: flex;\n    justify-content: center;\n}\n\n#lrs-choose-date-button {\n    width: 100%;\n    max-width: 460px;\n    min-height: 100px;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    gap: 18px;\n    padding: 20px 30px;\n    background: #0b63f6;\n    color: #ffffff;\n    border: none;\n    border-radius: 16px;\n    cursor: pointer;\n    box-shadow: 0 8px 22px rgba(11, 99, 246, 0.25);\n    font-family: inherit;\n}\n\n#lrs-choose-date-button:hover {\n    transform: translateY(-2px);\n    box-shadow: 0 12px 28px rgba(11, 99, 246, 0.32);\n}\n\n#lrs-choose-date-button .lrs-date-icon {\n    font-size: 34px;\n}\n\n#lrs-choose-date-button strong {\n    display: block;\n    font-size: 24px;\n    line-height: 1.2;\n}\n\n#lrs-choose-date-button small {\n    display: block;\n    margin-top: 5px;\n    font-size: 12px;\n    font-weight: 600;\n    opacity: 0.9;\n}\n\n.lrs-date-picker-wrap #lrs-booking-date {\n    position: absolute;\n    width: 1px;\n    height: 1px;\n    opacity: 0;\n    pointer-events: none;\n}\n\n        .lrs-booking-header {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-content: center;\n    gap: 20px;\n    margin-bottom: 28px;\n    text-align: center;\n}\n\n        .lrs-booking-header > div {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    gap: 12px;\n    width: 100%;\n}\n\n        .lrs-booking-header h3,\n        #lrs-selected-session h3 {\n            margin: 0;\n            color: #0f172a;\n        }\n\n        .lrs-step-number {\n            display: inline-flex;\n            align-items: center;\n            justify-content: center;\n            width: 32px;\n            height: 32px;\n            border-radius: 50%;\n            background: #0b63f6;\n            color: #ffffff;\n            font-weight: 700;\n        }\n\n        #lrs-booking-date {\n            padding: 11px 14px;\n            border: 1px solid #cbd5e1;\n            border-radius: 8px;\n            font-size: 15px;\n            background: #ffffff;\n        }\n\n        #lrs-booking-status {\n            padding: 14px 16px;\n            margin-bottom: 18px;\n            background: #eff6ff;\n            border-radius: 8px;\n            color: #1e3a8a;\n        }\n\n        #lrs-booking-slots {\n            display: grid;\n            grid-template-columns: repeat(auto-fill, minmax(115px, 1fr));\n            gap: 10px;\n        }\n\n        .lrs-slot {\n            padding: 12px 8px;\n            border: 1px solid #22c55e;\n            border-radius: 8px;\n            background: #f0fdf4;\n            color: #166534;\n            font-weight: 600;\n            cursor: pointer;\n            text-align: center;\n            transition: 0.2s ease;\n        }\n\n        .lrs-slot:hover {\n            transform: translateY(-1px);\n            background: #dcfce7;\n        }\n\n        .lrs-slot.selected {\n            background: #0b63f6;\n            border-color: #0b63f6;\n            color: #ffffff;\n        }\n\n        .lrs-slot.booked {\n            background: #fef2f2;\n            border-color: #ef4444;\n            color: #991b1b;\n            cursor: not-allowed;\n        }\n\n        #lrs-selected-session {\n            margin-top: 28px;\n            padding-top: 24px;\n            border-top: 1px solid #e2e8f0;\n        }\n\n        #lrs-selected-session h3 {\n            display: inline-block;\n            margin-left: 8px;\n        }\n\n        #lrs-selected-session-text {\n            margin: 18px 0;\n            font-weight: 600;\n            color: #0f172a;\n        }\n\n        #lrs-confirm-booking {\n            width: 100%;\n            padding: 14px 20px;\n            border: 0;\n            border-radius: 8px;\n            background: #0b63f6;\n            color: #ffffff;\n            font-weight: 700;\n            cursor: pointer;\n        }\n\n        #lrs-confirm-booking:disabled {\n            opacity: 0.6;\n            cursor: not-allowed;\n        }\n\n        #lrs-booking-result {\n            margin-top: 15px;\n            font-weight: 600;\n        }\n\n        .lrs-booking-message {\n            max-width: 900px;\n            margin: 25px auto;\n            padding: 20px;\n            border-radius: 10px;\n            background: #eff6ff;\n            border: 1px solid #bfdbfe;\n            color: #1e3a8a;\n        }\n\n        .lrs-booking-locked {\n            background: #fff7ed;\n            border-color: #fed7aa;\n            color: #9a3412;\n        }\n\n        @media (max-width: 650px) {\n            #lrs-robot-booking {\n                padding: 20px;\n            }\n\n            .lrs-booking-header {\n                flex-direction: column;\n                align-items: stretch;\n            }\n\n            #lrs-booking-date {\n                width: 100%;\n            }\n        }\n    <\/style>\n\n    <script>\n    document.addEventListener('DOMContentLoaded', function () {\n\n        const dateInput       = document.getElementById('lrs-booking-date');\n        const chooseDateButton = document.getElementById('lrs-choose-date-button');\n\nif (chooseDateButton && dateInput) {\n    chooseDateButton.addEventListener('click', function () {\n        if (typeof dateInput.showPicker === 'function') {\n            dateInput.showPicker();\n        } else {\n            dateInput.click();\n        }\n    });\n}\n        const slotsContainer  = document.getElementById('lrs-booking-slots');\n        const statusBox       = document.getElementById('lrs-booking-status');\n        const selectedBox     = document.getElementById('lrs-selected-session');\n        const selectedText    = document.getElementById('lrs-selected-session-text');\n        const confirmButton   = document.getElementById('lrs-confirm-booking');\n        const resultBox       = document.getElementById('lrs-booking-result');\n        const institutionalButton = document.getElementById('lrs-institutional-book');\n        const institutionalCode = document.getElementById('lrs-institutional-code');\n        const identityBox     = document.getElementById('lrs-booking-identity');\n        const bookingBox      = document.getElementById('lrs-robot-booking');\n        \n        const upcomingBox = document.getElementById('lrs-upcoming-sessions');\nconst upcomingList = document.getElementById('lrs-upcoming-sessions-list');\n\n        if (!dateInput || !identityBox || !bookingBox) {\n            return;\n        }\n\n        let selectedDate = '';\n        let selectedTime = '';\n        let studentEmail = '';\n\n        let studentProfile = {};\n        try {\n            studentProfile = JSON.parse(localStorage.getItem('learn_robotics_student') || '{}') || {};\n        } catch (e) {\n            studentProfile = {};\n        }\n\n        studentEmail = String(\n            studentProfile.email || localStorage.getItem('lrs_student_email') || ''\n        ).trim();\n\n        if (!studentEmail) {\n            identityBox.classList.add('lrs-booking-locked');\n            identityBox.innerHTML = '<strong>REAL ROBOT BOOKING LOCKED<\/strong><br>Start Robotics Training first so your student profile can be identified.';\n            return;\n        }\n\n        fetch('https:\/\/learn.newproferm.com\/ro\/wp-json\/learn-robotics\/v1\/robot-booking\/qualification?email=' + encodeURIComponent(studentEmail), {\n            credentials: 'same-origin'\n        })\n        .then(function(response) { return response.json(); })\n        .then(function(data) {\n            if (!data.success || !data.qualified) {\n                identityBox.classList.add('lrs-booking-locked');\n                identityBox.innerHTML = '<strong>REAL ROBOT BOOKING \u2014 QUALIFICATION REQUIRED<\/strong><br>Complete Simulator Missions 1\u20135 with a final score of at least 80\/100 to unlock Real Robot booking.';\n                return;\n            }\n\n            identityBox.style.display = 'none';\n            bookingBox.style.display = 'block';\n        })\n        .catch(function() {\n            identityBox.classList.add('lrs-booking-locked');\n            identityBox.textContent = 'Could not verify your simulator qualification.';\n        });\n        \n        fetch('https:\/\/learn.newproferm.com\/ro\/wp-json\/learn-robotics\/v1\/robot-booking\/upcoming?email=' + encodeURIComponent(studentEmail), {\n    credentials: 'same-origin'\n})\n.then(function(response) { return response.json(); })\n.then(function(data) {\n\n    if (!data.success || !data.sessions || data.sessions.length === 0) {\n        return;\n    }\n\n    upcomingList.innerHTML = '';\n\n    data.sessions.forEach(function(session) {\n\n        const item = document.createElement('div');\n        item.className = 'lrs-upcoming-session-item';\n\n        const start = String(session.start_time).substring(0, 5);\n        const end = String(session.end_time).substring(0, 5);\n        const status = String(session.status).toUpperCase();\n\n        item.innerHTML =\n            '<strong>' + session.booking_date + '<\/strong> \u2022 ' +\n            start + ' \u2013 ' + end +\n            ' \u2022 <strong>' + status + '<\/strong>';\n\n        upcomingList.appendChild(item);\n    });\n\n    upcomingBox.style.display = 'block';\n})\n.catch(function() {\n    \/\/ Booking calendar continues to work even if upcoming sessions cannot be loaded.\n});\n\n        dateInput.addEventListener('change', async function () {\n\n            selectedDate = this.value;\n            selectedTime = '';\n\n            selectedBox.style.display = 'none';\n            resultBox.textContent = '';\n            slotsContainer.innerHTML = '';\n\n            if (!selectedDate) {\n                return;\n            }\n\n            statusBox.textContent = 'Checking available sessions...';\n\n            try {\n\n                const response = await fetch(\n                    'https:\/\/learn.newproferm.com\/ro\/wp-json\/learn-robotics\/v1\/robot-booking\/availability?date='\n                    + encodeURIComponent(selectedDate),\n                    {\n                        credentials: 'same-origin'\n                    }\n                );\n\n                const data = await response.json();\n\n                if (!response.ok || !data.success) {\n                    statusBox.textContent =\n                        data.message || 'Unable to load booking availability.';\n                    return;\n                }\n\n                statusBox.textContent =\n                    'Available 10-minute Real Robot sessions for ' + selectedDate;\n\n                if (!data.slots || data.slots.length === 0) {\n                    slotsContainer.innerHTML =\n                        '<p>No sessions are available for this date.<\/p>';\n                    return;\n                }\n\n                data.slots.forEach(function (slot) {\n\n                    const button = document.createElement('button');\n\n                    button.type = 'button';\n                    button.className = 'lrs-slot';\n                    button.textContent = slot.start;\n\n                    if (!slot.available) {\n    button.classList.add('booked');\n    button.disabled = true;\n\n    if (slot.past && !slot.booked) {\n        button.textContent = slot.start + ' - PASSED';\n    } else if (slot.reservation_status === 'pending') {\n        button.textContent = slot.start + ' - PENDING';\n    } else {\n        button.textContent = slot.start + ' - BOOKED';\n    }\n} else {\n\n                        button.addEventListener('click', function () {\n\n                            document.querySelectorAll('.lrs-slot.selected')\n                                .forEach(function (item) {\n                                    item.classList.remove('selected');\n                                });\n\n                            button.classList.add('selected');\n\n                            selectedTime = slot.start;\n\n                            selectedText.textContent =\n                                selectedDate + ' \u2022 ' +\n                                slot.start + ' \u2013 ' + slot.end +\n                                ' \u2022 10 minutes';\n\n                            selectedBox.style.display = 'block';\n                            resultBox.textContent = '';\n                        });\n                    }\n\n                    slotsContainer.appendChild(button);\n                });\n\n            } catch (error) {\n\n                statusBox.textContent =\n                    'Could not connect to the booking system.';\n            }\n        });\n\n        institutionalButton.addEventListener('click', async function () {\n            if (!selectedDate || !selectedTime) {\n                resultBox.textContent = 'Select a date and time first.';\n                return;\n            }\n            const code = institutionalCode.value.trim();\n            if (!code) {\n                resultBox.textContent = 'Enter your institutional access code.';\n                institutionalCode.focus();\n                return;\n            }\n            institutionalButton.disabled = true;\n            confirmButton.disabled = true;\n            resultBox.textContent = 'Verifying institutional code and reserving your session...';\n            try {\n                const response = await fetch(\n                    'https:\/\/learn.newproferm.com\/ro\/wp-json\/learn-robotics\/v1\/robot-booking\/institutional',\n                    {method:'POST',credentials:'same-origin',headers:{'Content-Type':'application\/json'},\n                     body:JSON.stringify({code:code,date:selectedDate,start:selectedTime})}\n                );\n                const data = await response.json();\n                if (!response.ok || !data.success) {\n                    resultBox.textContent = data.message || 'Institutional booking could not be completed.';\n                    return;\n                }\n                resultBox.textContent = 'Booking confirmed: ' + data.date + ' ? ' + data.start +\n                    '?' + data.end + '. One institutional credit used. Credits remaining: ' + data.credits_remaining +\n                    '. Return at your booked time to open Live Teleoperation.';\n                institutionalCode.value = '';\n                institutionalButton.disabled = true;\n                confirmButton.disabled = true;\n                return;\n            } catch (error) {\n                resultBox.textContent = 'Could not reach the booking service. Check your upcoming bookings before trying again.';\n            } finally {\n                if (!resultBox.textContent.startsWith('Booking confirmed:')) {\n                    institutionalButton.disabled = false;\n                    confirmButton.disabled = false;\n                }\n            }\n        });\n\n        confirmButton.addEventListener('click', async function () {\n\n            if (!selectedDate || !selectedTime) {\n                return;\n            }\n\n            confirmButton.disabled = true;\n            resultBox.textContent = 'Booking your session...';\n\n            try {\n\n                const response = await fetch(\n                    'https:\/\/learn.newproferm.com\/ro\/wp-json\/learn-robotics\/v1\/robot-booking\/book',\n                    {\n                        method: 'POST',\n                        credentials: 'same-origin',\n                        headers: {\n                            'Content-Type': 'application\/json'\n                        },\n                        body: JSON.stringify({\n                            email: studentEmail,\n                            date: selectedDate,\n                            start: selectedTime\n                        })\n                    }\n                );\n\n                const data = await response.json();\n\n                if (!response.ok) {\n\n                    resultBox.textContent =\n                        data.message ||\n                        'The session could not be booked.';\n\n                    confirmButton.disabled = false;\n                    return;\n                }\n\n                resultBox.textContent = 'Redirecting to secure payment...';\n\nconst paymentResponse = await fetch(\n    'https:\/\/learn.newproferm.com\/ro\/wp-json\/learn-robotics\/v1\/robot-booking\/payment',\n    {\n        method: 'POST',\n        credentials: 'same-origin',\n        headers: {\n            'Content-Type': 'application\/json'\n        },\n        body: JSON.stringify({\n            booking_id: data.booking_id,\n            email: studentEmail\n        })\n    }\n);\n\nconst paymentData = await paymentResponse.json();\n\nif (!paymentResponse.ok || !paymentData.success || !paymentData.payment_url) {\n    resultBox.textContent =\n        paymentData.message ||\n        'The payment could not be started.';\n\n    confirmButton.disabled = false;\n    return;\n}\n\nwindow.location.href = paymentData.payment_url;\n\n            } catch (error) {\n\n                resultBox.textContent =\n                    'The booking system could not be reached.';\n\n                confirmButton.disabled = false;\n            }\n        });\n\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<div class=\"elementor-element elementor-element-5fbbdb7 elementor-align-center elementor-widget elementor-widget-button\" data-id=\"5fbbdb7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/learn.newproferm.com\/ro\/live-teleoperation\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Go to live teleoperation<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>Check Robot Status Before Booking Make sure the real robot is available before reserving your teleoperation session. Before booking a session, check the current status of the real robot. The Robot Status panel will show: Robot availability \u2014 Online, Offline or In Session Camera status \u2014 confirms that the live workspace view is available Connection [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"page-builder","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-2047","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/learn.newproferm.com\/ro\/wp-json\/wp\/v2\/pages\/2047","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/learn.newproferm.com\/ro\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/learn.newproferm.com\/ro\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/learn.newproferm.com\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/learn.newproferm.com\/ro\/wp-json\/wp\/v2\/comments?post=2047"}],"version-history":[{"count":28,"href":"https:\/\/learn.newproferm.com\/ro\/wp-json\/wp\/v2\/pages\/2047\/revisions"}],"predecessor-version":[{"id":2448,"href":"https:\/\/learn.newproferm.com\/ro\/wp-json\/wp\/v2\/pages\/2047\/revisions\/2448"}],"wp:attachment":[{"href":"https:\/\/learn.newproferm.com\/ro\/wp-json\/wp\/v2\/media?parent=2047"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}