{"id":25166,"date":"2026-05-19T12:23:18","date_gmt":"2026-05-19T09:23:18","guid":{"rendered":"https:\/\/ecowes.ro\/?page_id=25166"},"modified":"2026-05-20T13:11:58","modified_gmt":"2026-05-20T10:11:58","slug":"battery-recycling-expo","status":"publish","type":"page","link":"https:\/\/ecowes.ro\/it\/battery-recycling-expo\/","title":{"rendered":"Battery Recycling Expo"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"25166\" class=\"elementor elementor-25166\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-8ac7483 elementor-section-boxed elementor-section-height-default elementor-section-height-default wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no sc_fly_static\" data-id=\"8ac7483\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-extended\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-8f19376 sc_content_align_inherit sc_layouts_column_icons_position_left sc_fly_static\" data-id=\"8f19376\" data-element_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-43d3222 sc_fly_static elementor-widget elementor-widget-html\" data-id=\"43d3222\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\n<html lang=\"ro\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>Programeaz\u0103 o \u00eent\u00e2lnire cu ECOWES \u2014 Battery Recycling Expo, Frankfurt<\/title>\n<meta name=\"description\" content=\"Rezerv\u0103 o \u00eent\u00e2lnire cu echipa ECOWES la Global Battery Recycling Expo, 17-18 iunie 2026, Messe Frankfurt. Stand A20.\">\n\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Bricolage+Grotesque:opsz,wght@12..96,400;12..96,500;12..96,600;12..96,700&family=Manrope:wght@400;500;600;700&display=swap\" rel=\"stylesheet\">\n\n<style>\n  :root {\n    --navy: #0b2545;\n    --navy-light: #13315c;\n    --navy-soft: #1e3a6b;\n    --green: #3eb049;\n    --green-dark: #2e8b38;\n    --teal: #5fbab2;\n    --teal-dark: #3d9089;\n    --bg: #f6f8fb;\n    --white: #ffffff;\n    --border: #e3e8ef;\n    --text: #0b2545;\n    --text-muted: #5a6b85;\n    --error: #d63838;\n    --success: #2e8b38;\n    --shadow-sm: 0 1px 2px rgba(11, 37, 69, 0.06);\n    --shadow-md: 0 4px 16px rgba(11, 37, 69, 0.08);\n    --shadow-lg: 0 16px 48px rgba(11, 37, 69, 0.12);\n  }\n\n  * { box-sizing: border-box; margin: 0; padding: 0; }\n\n  body {\n    font-family: 'Manrope', -apple-system, sans-serif;\n    background: var(--bg);\n    color: var(--text);\n    line-height: 1.55;\n    min-height: 100vh;\n    -webkit-font-smoothing: antialiased;\n  }\n\n  \/* HEADER \/ EXPO BANNER *\/\n  .expo-banner {\n    background: linear-gradient(135deg, var(--navy) 0%, var(--navy-light) 60%, var(--teal-dark) 100%);\n    color: var(--white);\n    padding: 18px 24px;\n    text-align: center;\n    font-size: 14px;\n    letter-spacing: 0.5px;\n    font-weight: 600;\n    text-transform: uppercase;\n  }\n  .expo-banner strong { color: #ffe066; }\n\n  header.site,\n  .logo,\n  .logo-dot,\n  .header-meta { display: none; }\n\n  \/* HERO *\/\n  .hero {\n    padding: 56px 24px 32px;\n    text-align: center;\n    max-width: 820px;\n    margin: 0 auto;\n  }\n  .hero-tag {\n    display: inline-block;\n    background: rgba(95, 186, 178, 0.15);\n    color: var(--teal-dark);\n    padding: 6px 14px;\n    border-radius: 100px;\n    font-size: 12px;\n    font-weight: 700;\n    letter-spacing: 1px;\n    text-transform: uppercase;\n    margin-bottom: 20px;\n  }\n  .hero h1 {\n    font-family: 'Bricolage Grotesque', sans-serif;\n    font-size: clamp(32px, 5vw, 52px);\n    font-weight: 700;\n    line-height: 1.05;\n    letter-spacing: -1.5px;\n    color: var(--navy);\n    margin-bottom: 18px;\n  }\n  .hero h1 span { color: var(--green); }\n  .hero p {\n    font-size: 17px;\n    color: var(--text-muted);\n    max-width: 600px;\n    margin: 0 auto;\n  }\n\n  \/* MAIN CONTAINER *\/\n  .container {\n    max-width: 1120px;\n    margin: 0 auto;\n    padding: 24px 24px 80px;\n  }\n\n  .booking-grid {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 24px;\n    background: var(--white);\n    border-radius: 20px;\n    box-shadow: var(--shadow-lg);\n    overflow: hidden;\n    border: 1px solid var(--border);\n  }\n\n  \/* LEFT \u2014 CALENDAR PANEL *\/\n  .calendar-panel {\n    padding: 36px 32px;\n    background: var(--white);\n    border-right: 1px solid var(--border);\n  }\n  .panel-title {\n    font-family: 'Bricolage Grotesque', sans-serif;\n    font-size: 22px;\n    font-weight: 700;\n    color: var(--navy);\n    margin-bottom: 6px;\n    letter-spacing: -0.5px;\n  }\n  .panel-subtitle {\n    font-size: 14px;\n    color: var(--text-muted);\n    margin-bottom: 28px;\n  }\n\n  .calendar-header {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    margin-bottom: 18px;\n  }\n  .calendar-month {\n    font-family: 'Bricolage Grotesque', sans-serif;\n    font-size: 17px;\n    font-weight: 600;\n    color: var(--navy);\n  }\n  .calendar-nav {\n    display: flex;\n    gap: 6px;\n  }\n  .calendar-nav button {\n    width: 32px; height: 32px;\n    border-radius: 8px;\n    border: 1px solid var(--border);\n    background: var(--white);\n    color: var(--text-muted);\n    cursor: not-allowed;\n    font-size: 14px;\n    opacity: 0.4;\n  }\n\n  .calendar-grid {\n    display: grid;\n    grid-template-columns: repeat(7, 1fr);\n    gap: 4px;\n  }\n  .calendar-day-name {\n    text-align: center;\n    font-size: 11px;\n    font-weight: 700;\n    color: var(--text-muted);\n    text-transform: uppercase;\n    letter-spacing: 0.8px;\n    padding: 8px 0;\n  }\n  .calendar-day {\n    aspect-ratio: 1;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    border-radius: 10px;\n    font-size: 15px;\n    font-weight: 600;\n    color: var(--text-muted);\n    cursor: not-allowed;\n    transition: all 0.15s ease;\n    user-select: none;\n    position: relative;\n  }\n  .calendar-day.empty { background: transparent; }\n  .calendar-day.disabled { opacity: 0.3; }\n  .calendar-day.available {\n    background: rgba(62, 176, 73, 0.08);\n    color: var(--navy);\n    cursor: pointer;\n    border: 2px solid rgba(62, 176, 73, 0.3);\n  }\n  .calendar-day.available:hover {\n    background: rgba(62, 176, 73, 0.18);\n    border-color: var(--green);\n    transform: translateY(-1px);\n  }\n  .calendar-day.available::after {\n    content: '';\n    position: absolute;\n    bottom: 5px;\n    width: 4px; height: 4px;\n    background: var(--green);\n    border-radius: 50%;\n  }\n  .calendar-day.selected {\n    background: var(--green) !important;\n    color: var(--white) !important;\n    border-color: var(--green) !important;\n    box-shadow: 0 4px 12px rgba(62, 176, 73, 0.35);\n  }\n  .calendar-day.selected::after { background: var(--white); }\n\n  \/* TIME SLOTS *\/\n  .time-section {\n    margin-top: 28px;\n    padding-top: 24px;\n    border-top: 1px solid var(--border);\n  }\n  .time-section-title {\n    font-size: 13px;\n    font-weight: 700;\n    color: var(--navy);\n    text-transform: uppercase;\n    letter-spacing: 0.8px;\n    margin-bottom: 14px;\n  }\n  .time-slots {\n    display: grid;\n    grid-template-columns: repeat(4, 1fr);\n    gap: 8px;\n  }\n  .time-slot {\n    padding: 10px 6px;\n    border: 1.5px solid var(--border);\n    background: var(--white);\n    border-radius: 8px;\n    font-family: inherit;\n    font-size: 13px;\n    font-weight: 600;\n    color: var(--navy);\n    cursor: pointer;\n    transition: all 0.15s ease;\n  }\n  .time-slot:hover:not(.selected):not(:disabled) {\n    border-color: var(--green);\n    background: rgba(62, 176, 73, 0.06);\n  }\n  .time-slot.selected {\n    background: var(--green);\n    color: var(--white);\n    border-color: var(--green);\n  }\n  .time-slot:disabled {\n    opacity: 0.4;\n    cursor: not-allowed;\n  }\n  .time-empty {\n    grid-column: 1 \/ -1;\n    text-align: center;\n    padding: 30px 20px;\n    color: var(--text-muted);\n    font-size: 14px;\n    background: var(--bg);\n    border-radius: 10px;\n  }\n\n  \/* RIGHT \u2014 FORM PANEL *\/\n  .form-panel {\n    padding: 36px 32px;\n    background: var(--white);\n    position: relative;\n  }\n  .form-locked-overlay {\n    position: absolute;\n    inset: 0;\n    background: rgba(255, 255, 255, 0.85);\n    backdrop-filter: blur(2px);\n    z-index: 10;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    padding: 40px;\n    text-align: center;\n    flex-direction: column;\n    gap: 8px;\n    transition: opacity 0.25s ease;\n  }\n  .form-locked-overlay.hidden { opacity: 0; pointer-events: none; }\n  .lock-icon {\n    width: 48px; height: 48px;\n    background: rgba(11, 37, 69, 0.08);\n    border-radius: 50%;\n    display: flex; align-items: center; justify-content: center;\n    margin-bottom: 8px;\n    color: var(--navy);\n    font-size: 22px;\n  }\n  .lock-title {\n    font-family: 'Bricolage Grotesque', sans-serif;\n    font-size: 18px;\n    font-weight: 700;\n    color: var(--navy);\n  }\n  .lock-subtitle {\n    font-size: 14px;\n    color: var(--text-muted);\n    max-width: 240px;\n  }\n\n  .selected-summary {\n    background: linear-gradient(135deg, var(--navy) 0%, var(--navy-light) 100%);\n    color: var(--white);\n    padding: 14px 18px;\n    border-radius: 12px;\n    margin-bottom: 24px;\n    display: flex;\n    align-items: center;\n    gap: 12px;\n    font-size: 14px;\n  }\n  .selected-summary-icon {\n    width: 36px; height: 36px;\n    background: var(--green);\n    border-radius: 50%;\n    display: flex; align-items: center; justify-content: center;\n    flex-shrink: 0;\n    font-size: 16px;\n  }\n  .selected-summary-label {\n    font-size: 11px;\n    text-transform: uppercase;\n    letter-spacing: 0.8px;\n    opacity: 0.7;\n    font-weight: 600;\n  }\n  .selected-summary-value {\n    font-weight: 700;\n    font-size: 15px;\n  }\n\n  .form-row { margin-bottom: 16px; }\n  .form-row-double {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 12px;\n    margin-bottom: 16px;\n  }\n  label {\n    display: block;\n    font-size: 12px;\n    font-weight: 700;\n    color: var(--navy);\n    text-transform: uppercase;\n    letter-spacing: 0.6px;\n    margin-bottom: 6px;\n  }\n  label .req { color: var(--green); }\n  input, select {\n    width: 100%;\n    padding: 12px 14px;\n    border: 1.5px solid var(--border);\n    border-radius: 10px;\n    font-family: inherit;\n    font-size: 14px;\n    color: var(--navy);\n    background: var(--white);\n    transition: border-color 0.15s ease, box-shadow 0.15s ease;\n  }\n  input:focus, select:focus {\n    outline: none;\n    border-color: var(--green);\n    box-shadow: 0 0 0 3px rgba(62, 176, 73, 0.15);\n  }\n  input.invalid, select.invalid {\n    border-color: var(--error);\n    background: rgba(214, 56, 56, 0.04);\n  }\n  .field-error {\n    display: none;\n    font-size: 12px;\n    color: var(--error);\n    margin-top: 4px;\n    font-weight: 600;\n  }\n  .field-error.show { display: block; }\n\n  .submit-btn {\n    width: 100%;\n    padding: 16px;\n    background: var(--green);\n    color: var(--white);\n    border: none;\n    border-radius: 12px;\n    font-family: 'Bricolage Grotesque', sans-serif;\n    font-size: 16px;\n    font-weight: 700;\n    letter-spacing: 0.3px;\n    cursor: pointer;\n    transition: all 0.18s ease;\n    margin-top: 8px;\n    box-shadow: 0 4px 14px rgba(62, 176, 73, 0.3);\n  }\n  .submit-btn:hover {\n    background: var(--green-dark);\n    transform: translateY(-1px);\n    box-shadow: 0 6px 20px rgba(62, 176, 73, 0.4);\n  }\n  .submit-btn:disabled {\n    opacity: 0.6;\n    cursor: not-allowed;\n    transform: none;\n  }\n  .submit-btn .spinner {\n    display: none;\n    width: 16px; height: 16px;\n    border: 2px solid rgba(255,255,255,0.4);\n    border-top-color: var(--white);\n    border-radius: 50%;\n    animation: spin 0.6s linear infinite;\n    vertical-align: middle;\n    margin-right: 8px;\n  }\n  .submit-btn.loading .spinner { display: inline-block; }\n  @keyframes spin { to { transform: rotate(360deg); } }\n\n  .form-footer-note {\n    font-size: 12px;\n    color: var(--text-muted);\n    text-align: center;\n    margin-top: 14px;\n    line-height: 1.5;\n  }\n\n  \/* SUCCESS STATE *\/\n  .success-state {\n    display: none;\n    text-align: center;\n    padding: 60px 32px;\n  }\n  .success-state.show { display: block; }\n  .success-icon {\n    width: 72px; height: 72px;\n    background: var(--green);\n    border-radius: 50%;\n    margin: 0 auto 20px;\n    display: flex; align-items: center; justify-content: center;\n    color: var(--white);\n    font-size: 36px;\n    animation: pop 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);\n  }\n  @keyframes pop {\n    0% { transform: scale(0); }\n    100% { transform: scale(1); }\n  }\n  .success-state h2 {\n    font-family: 'Bricolage Grotesque', sans-serif;\n    font-size: 28px;\n    color: var(--navy);\n    margin-bottom: 10px;\n    letter-spacing: -0.5px;\n  }\n  .success-state p {\n    color: var(--text-muted);\n    font-size: 15px;\n    max-width: 420px;\n    margin: 0 auto 24px;\n  }\n  .success-details {\n    background: var(--bg);\n    border-radius: 12px;\n    padding: 20px;\n    max-width: 380px;\n    margin: 0 auto;\n    text-align: left;\n    font-size: 14px;\n  }\n  .success-details strong { color: var(--navy); }\n  .success-details > div { margin-bottom: 6px; }\n\n  \/* TRUST FOOTER *\/\n  .trust-row {\n    max-width: 1120px;\n    margin: 40px auto 0;\n    padding: 0 24px;\n    display: grid;\n    grid-template-columns: repeat(3, 1fr);\n    gap: 20px;\n  }\n  .trust-item {\n    background: var(--white);\n    padding: 20px;\n    border-radius: 14px;\n    border: 1px solid var(--border);\n    text-align: center;\n  }\n  .trust-icon {\n    font-size: 24px;\n    margin-bottom: 8px;\n  }\n  .trust-title {\n    font-weight: 700;\n    color: var(--navy);\n    font-size: 14px;\n    margin-bottom: 4px;\n  }\n  .trust-desc {\n    font-size: 12px;\n    color: var(--text-muted);\n  }\n\n  footer {\n    margin-top: 60px;\n    padding: 24px;\n    text-align: center;\n    font-size: 13px;\n    color: var(--text-muted);\n    border-top: 1px solid var(--border);\n  }\n  footer a { color: var(--teal-dark); text-decoration: none; font-weight: 600; }\n\n  \/* RESPONSIVE *\/\n  @media (max-width: 880px) {\n    .booking-grid { grid-template-columns: 1fr; }\n    .calendar-panel { border-right: none; border-bottom: 1px solid var(--border); }\n    .trust-row { grid-template-columns: 1fr; }\n  }\n  @media (max-width: 480px) {\n    .calendar-panel, .form-panel { padding: 24px 20px; }\n    .hero { padding: 32px 16px 16px; }\n    .form-row-double { grid-template-columns: 1fr; }\n    .time-slots { grid-template-columns: repeat(3, 1fr); }\n  }\n<\/style>\n<\/head>\n<body>\n\n<!-- EXPO BANNER -->\n<div class=\"expo-banner\">\n  17\u201318 Iunie 2026 \u00b7 Messe Frankfurt \u00b7 Germania \u00b7 Stand <strong>A20<\/strong>\n<\/div>\n\n<!-- SITE HEADER eliminat -->\n\n<!-- HERO -->\n<section class=\"hero\">\n  <span class=\"hero-tag\">Disponibilitate limitat\u0103 \u00b7 2 zile<\/span>\n  <h1>Book a meeting with our team <span>at Stand A20\n<\/span><\/h1>\n  <p>Choose a convenient date and time to meet our experts and explore our battery recycling solutions, black mass production, and  partnership opportunities<\/p>\n<\/section>\n\n<!-- BOOKING GRID -->\n<div class=\"container\">\n  <div class=\"booking-grid\" id=\"bookingGrid\">\n\n    <!-- LEFT: CALENDAR -->\n    <div class=\"calendar-panel\">\n      <h2 class=\"panel-title\">Alege data \u0219i ora<\/h2>\n      <p class=\"panel-subtitle\">Disponibil doar \u00een zilele evenimentului<\/p>\n\n      <div class=\"calendar-header\">\n        <div class=\"calendar-month\">Iunie 2026<\/div>\n        <div class=\"calendar-nav\">\n          <button disabled aria-label=\"Luna anterioar\u0103\">\u2039<\/button>\n          <button disabled aria-label=\"Luna urm\u0103toare\">\u203a<\/button>\n        <\/div>\n      <\/div>\n\n      <div class=\"calendar-grid\" id=\"calendar\">\n        <!-- Zilele s\u0103pt\u0103m\u00e2nii -->\n        <div class=\"calendar-day-name\">Lu<\/div>\n        <div class=\"calendar-day-name\">Ma<\/div>\n        <div class=\"calendar-day-name\">Mi<\/div>\n        <div class=\"calendar-day-name\">Jo<\/div>\n        <div class=\"calendar-day-name\">Vi<\/div>\n        <div class=\"calendar-day-name\">S\u00e2<\/div>\n        <div class=\"calendar-day-name\">Du<\/div>\n      <\/div>\n\n      <div class=\"time-section\">\n        <div class=\"time-section-title\">Interval orar<\/div>\n        <div class=\"time-slots\" id=\"timeSlots\">\n          <div class=\"time-empty\">Selecteaz\u0103 mai \u00eent\u00e2i o dat\u0103<\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <!-- RIGHT: FORM -->\n    <div class=\"form-panel\">\n      <div class=\"form-locked-overlay\" id=\"lockOverlay\">\n        <div class=\"lock-icon\">\ud83d\udd12<\/div>\n        <div class=\"lock-title\">Alege data \u0219i ora<\/div>\n        <div class=\"lock-subtitle\">Formularul se deblocheaz\u0103 dup\u0103 ce selectezi un interval disponibil.<\/div>\n      <\/div>\n\n      <div id=\"formContent\">\n        <div class=\"selected-summary\" id=\"selectedSummary\" style=\"display:none;\">\n          <div class=\"selected-summary-icon\">\ud83d\udcc5<\/div>\n          <div>\n            <div class=\"selected-summary-label\">Programare selectat\u0103<\/div>\n            <div class=\"selected-summary-value\" id=\"summaryText\">\u2014<\/div>\n          <\/div>\n        <\/div>\n\n        <form\n          id=\"bookingForm\"\n          action=\"\/wp-json\/ecowes\/v1\/booking\"\n          method=\"POST\"\n          novalidate\n data-trp-original-action=\"\/wp-json\/ecowes\/v1\/booking\">\n          <!-- Honeypot anti-spam (botii completeaza tot, oamenii nu vad) -->\n          <input type=\"text\" name=\"botcheck\" style=\"position:absolute;left:-9999px;\" tabindex=\"-1\" autocomplete=\"off\">\n\n          <!-- Hidden meta -->\n          <input type=\"hidden\" name=\"Data programare\" id=\"hiddenDate\">\n          <input type=\"hidden\" name=\"Ora programare\" id=\"hiddenTime\">\n\n          <div class=\"form-row-double\">\n            <div>\n              <label for=\"prenume\">Prenume <span class=\"req\">*<\/span><\/label>\n              <input type=\"text\" id=\"prenume\" name=\"Prenume\" required autocomplete=\"given-name\">\n              <div class=\"field-error\" data-for=\"prenume\">C\u00e2mp obligatoriu<\/div>\n            <\/div>\n            <div>\n              <label for=\"nume\">Nome <span class=\"req\">*<\/span><\/label>\n              <input type=\"text\" id=\"nume\" name=\"Nume\" required autocomplete=\"family-name\">\n              <div class=\"field-error\" data-for=\"nume\">C\u00e2mp obligatoriu<\/div>\n            <\/div>\n          <\/div>\n\n          <div class=\"form-row\">\n            <label for=\"email\">E-mail <span class=\"req\">*<\/span><\/label>\n            <input type=\"email\" id=\"email\" name=\"Email\" required autocomplete=\"email\" placeholder=\"nume@companie.com\">\n            <div class=\"field-error\" data-for=\"email\">Introdu o adres\u0103 de email valid\u0103<\/div>\n          <\/div>\n\n          <div class=\"form-row\">\n            <label for=\"telefon\">Telefono <span class=\"req\">*<\/span><\/label>\n            <input type=\"tel\" id=\"telefon\" name=\"Telefon\" required autocomplete=\"tel\" placeholder=\"+40 7XX XXX XXX\">\n            <div class=\"field-error\" data-for=\"telefon\">Introdu un num\u0103r de telefon valid<\/div>\n          <\/div>\n\n          <div class=\"form-row\">\n            <label for=\"companie\">Companie <span class=\"req\">*<\/span><\/label>\n            <input type=\"text\" id=\"companie\" name=\"Companie\" required autocomplete=\"organization\">\n            <div class=\"field-error\" data-for=\"companie\">C\u00e2mp obligatoriu<\/div>\n          <\/div>\n\n          <div class=\"form-row\">\n            <label for=\"domeniu\">Domeniu de activitate <span class=\"req\">*<\/span><\/label>\n            <select id=\"domeniu\" name=\"Domeniu activitate\" required>\n              <option value=\"\">Selecteaz\u0103 domeniul...<\/option>\n              <option value=\"Reciclare & gestionare de\u0219euri\">Reciclare & gestionare de\u0219euri<\/option>\n              <option value=\"Produc\u0103tor baterii\">Produc\u0103tor baterii<\/option>\n              <option value=\"Produc\u0103tor auto \/ e-mobility\">Produc\u0103tor auto \/ e-mobility<\/option>\n              <option value=\"Electronice & electrocasnice\">Electronice & electrocasnice<\/option>\n              <option value=\"Industrie energetic\u0103 \/ stocare\">Industrie energetic\u0103 \/ stocare<\/option>\n              <option value=\"Colectare de\u0219euri industriale\">Colectare de\u0219euri industriale<\/option>\n              <option value=\"Logistic\u0103 & transport\">Logistic\u0103 & transport<\/option>\n              <option value=\"Furnizor de echipamente\">Furnizor de echipamente<\/option>\n              <option value=\"Institu\u021bie public\u0103 \/ autoritate\">Institu\u021bie public\u0103 \/ autoritate<\/option>\n              <option value=\"Investitor \/ financiar\">Investitor \/ financiar<\/option>\n              <option value=\"Cercetare & dezvoltare\">Cercetare & dezvoltare<\/option>\n              <option value=\"Pres\u0103 \/ media\">Pres\u0103 \/ media<\/option>\n              <option value=\"Altul\">Altul<\/option>\n            <\/select>\n            <div class=\"field-error\" data-for=\"domeniu\">Selecteaz\u0103 un domeniu<\/div>\n          <\/div>\n\n          <button type=\"submit\" class=\"submit-btn\" id=\"submitBtn\">\n            <span class=\"spinner\"><\/span>\n            <span class=\"btn-text\">Confirm\u0103 programarea<\/span>\n          <\/button>\n\n          <p class=\"form-footer-note\">\n            Datele tale sunt folosite exclusiv pentru aceast\u0103 programare.<br>\n            Vei primi o confirmare pe email \u00een c\u00e2teva minute.\n          <\/p>\n        <input type=\"hidden\" name=\"trp-form-language\" value=\"it\"\/><\/form>\n      <\/div>\n\n      <!-- SUCCESS STATE -->\n      <div class=\"success-state\" id=\"successState\">\n        <div class=\"success-icon\">\u2713<\/div>\n        <h2>Programare confirmat\u0103<\/h2>\n        <p>Am primit detaliile pe email. Echipa ECOWES \u00ee\u021bi va confirma intervalul \u00een maxim 24 de ore.<\/p>\n        <div class=\"success-details\" id=\"successDetails\"><\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- TRUST ROW -->\n  <div class=\"trust-row\">\n    <div class=\"trust-item\">\n      <div class=\"trust-icon\">\ud83c\udfed<\/div>\n      <div class=\"trust-title\">Linii Li-Ion & Alkaline<\/div>\n      <div class=\"trust-desc\">Tehnologie proprie de tratare baterii<\/div>\n    <\/div>\n    <div class=\"trust-item\">\n      <div class=\"trust-icon\">\ud83c\udf0d<\/div>\n      <div class=\"trust-title\">Recuperare materii prime critice<\/div>\n      <div class=\"trust-desc\">Litiu, cobalt, nichel, mangan<\/div>\n    <\/div>\n    <div class=\"trust-item\">\n      <div class=\"trust-icon\">\ud83d\udccd<\/div>\n      <div class=\"trust-title\">Stand A20 \u00b7 Hall expozi\u021bie<\/div>\n      <div class=\"trust-desc\">Messe Frankfurt \u00b7 17\u201318 Iunie 2026<\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<footer>\n  \u00a9 ECOWES 2026 \u00b7 <a href=\"mailto:contact@ecowes.ro\">contact@ecowes.ro<\/a>\n<\/footer>\n\n<script>\n  \/\/ ===== CONFIG =====\n  const EVENT_DAYS = [17, 18]; \/\/ doar 17 si 18 iunie 2026\n  const EVENT_MONTH = 5; \/\/ iunie (0-indexed)\n  const EVENT_YEAR = 2026;\n  const TIME_SLOTS = [\n    '10:00', '10:30', '11:00', '11:30',\n    '12:00', '12:30', '13:00', '13:30',\n    '14:00', '14:30', '15:00', '15:30',\n    '16:00', '16:30', '17:00', '17:30'\n  ];\n\n  let selectedDate = null;\n  let selectedTime = null;\n\n  \/\/ ===== BUILD CALENDAR =====\n  function buildCalendar() {\n    const calendar = document.getElementById('calendar');\n    const firstDay = new Date(EVENT_YEAR, EVENT_MONTH, 1);\n    const lastDay = new Date(EVENT_YEAR, EVENT_MONTH + 1, 0);\n    \/\/ Luni = 0 (offset pentru calendar european)\n    let startOffset = firstDay.getDay() - 1;\n    if (startOffset < 0) startOffset = 6;\n\n    for (let i = 0; i < startOffset; i++) {\n      const empty = document.createElement('div');\n      empty.className = 'calendar-day empty';\n      calendar.appendChild(empty);\n    }\n\n    for (let day = 1; day <= lastDay.getDate(); day++) {\n      const dayEl = document.createElement('div');\n      dayEl.className = 'calendar-day';\n      dayEl.textContent = day;\n\n      if (EVENT_DAYS.includes(day)) {\n        dayEl.classList.add('available');\n        dayEl.dataset.day = day;\n        dayEl.addEventListener('click', () => selectDate(day, dayEl));\n      } else {\n        dayEl.classList.add('disabled');\n      }\n      calendar.appendChild(dayEl);\n    }\n  }\n\n  \/\/ ===== SELECT DATE =====\n  function selectDate(day, el) {\n    document.querySelectorAll('.calendar-day.selected').forEach(d => d.classList.remove('selected'));\n    el.classList.add('selected');\n    selectedDate = day;\n    selectedTime = null;\n    renderTimeSlots();\n    updateSummary();\n  }\n\n  \/\/ ===== RENDER TIME SLOTS =====\n  function renderTimeSlots() {\n    const container = document.getElementById('timeSlots');\n    container.innerHTML = '';\n    TIME_SLOTS.forEach(time => {\n      const btn = document.createElement('button');\n      btn.type = 'button';\n      btn.className = 'time-slot';\n      btn.textContent = time;\n      btn.addEventListener('click', () => selectTime(time, btn));\n      container.appendChild(btn);\n    });\n  }\n\n  function selectTime(time, el) {\n    document.querySelectorAll('.time-slot.selected').forEach(t => t.classList.remove('selected'));\n    el.classList.add('selected');\n    selectedTime = time;\n    updateSummary();\n  }\n\n  \/\/ ===== UPDATE SUMMARY & UNLOCK FORM =====\n  function updateSummary() {\n    const summary = document.getElementById('selectedSummary');\n    const summaryText = document.getElementById('summaryText');\n    const overlay = document.getElementById('lockOverlay');\n    const hiddenDate = document.getElementById('hiddenDate');\n    const hiddenTime = document.getElementById('hiddenTime');\n\n    if (selectedDate && selectedTime) {\n      const dayName = selectedDate === 17 ? 'Miercuri' : 'Joi';\n      summary.style.display = 'flex';\n      summaryText.textContent = `${dayName}, ${selectedDate} Iunie 2026 \u00b7 ${selectedTime}`;\n      overlay.classList.add('hidden');\n      hiddenDate.value = `${selectedDate} Iunie 2026 (${dayName})`;\n      hiddenTime.value = selectedTime;\n    } else if (selectedDate) {\n      const dayName = selectedDate === 17 ? 'Miercuri' : 'Joi';\n      summary.style.display = 'flex';\n      summaryText.textContent = `${dayName}, ${selectedDate} Iunie \u00b7 selecteaz\u0103 ora`;\n      overlay.classList.remove('hidden');\n    } else {\n      summary.style.display = 'none';\n      overlay.classList.remove('hidden');\n    }\n  }\n\n  \/\/ ===== FORM VALIDATION =====\n  function validateForm() {\n    let valid = true;\n    const fields = ['prenume', 'nume', 'email', 'telefon', 'companie', 'domeniu'];\n\n    fields.forEach(id => {\n      const el = document.getElementById(id);\n      const err = document.querySelector(`.field-error[data-for=\"${id}\"]`);\n      const value = el.value.trim();\n      let fieldValid = !!value;\n\n      if (id === 'email' && value) {\n        fieldValid = \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(value);\n      }\n      if (id === 'telefon' && value) {\n        const digits = value.replace(\/\\D\/g, '');\n        fieldValid = digits.length >= 9;\n      }\n\n      if (!fieldValid) {\n        el.classList.add('invalid');\n        err.classList.add('show');\n        valid = false;\n      } else {\n        el.classList.remove('invalid');\n        err.classList.remove('show');\n      }\n    });\n\n    if (!selectedDate || !selectedTime) {\n      alert('Te rug\u0103m s\u0103 selectezi o dat\u0103 \u0219i un interval orar.');\n      valid = false;\n    }\n\n    return valid;\n  }\n\n  \/\/ Live validation pe blur\n  ['prenume', 'nume', 'email', 'telefon', 'companie', 'domeniu'].forEach(id => {\n    const el = document.getElementById(id);\n    el.addEventListener('blur', () => {\n      if (el.value.trim()) {\n        el.classList.remove('invalid');\n        document.querySelector(`.field-error[data-for=\"${id}\"]`)?.classList.remove('show');\n      }\n    });\n  });\n\n  \/\/ ===== SUBMIT HANDLER (AJAX cu Web3Forms) =====\n  document.getElementById('bookingForm').addEventListener('submit', async function(e) {\n    e.preventDefault();\n\n    if (!validateForm()) {\n      const firstInvalid = document.querySelector('.invalid');\n      if (firstInvalid) firstInvalid.scrollIntoView({ behavior: 'smooth', block: 'center' });\n      return;\n    }\n\n    const btn = document.getElementById('submitBtn');\n    btn.classList.add('loading');\n    btn.disabled = true;\n    btn.querySelector('.btn-text').textContent = 'Se trimite...';\n\n    const formData = new FormData(this);\n\n    try {\n      const response = await fetch('\/wp-json\/ecowes\/v1\/booking', {\n        method: 'POST',\n        body: formData\n      });\n      const result = await response.json();\n\n      if (result.success) {\n        \/\/ Afi\u0219\u0103m success state\n        const dayName = selectedDate === 17 ? 'Miercuri' : 'Joi';\n        const details = `\n          <div><strong>Data:<\/strong> ${dayName}, ${selectedDate} Iunie 2026<\/div>\n          <div><strong>Ora:<\/strong> ${selectedTime}<\/div>\n          <div><strong>Loca\u021bie:<\/strong> Messe Frankfurt \u00b7 Stand A20<\/div>\n          <div><strong>Email confirmare:<\/strong> ${document.getElementById('email').value}<\/div>\n        `;\n        document.getElementById('formContent').style.display = 'none';\n        const successEl = document.getElementById('successState');\n        successEl.classList.add('show');\n        document.getElementById('successDetails').innerHTML = details;\n        document.getElementById('bookingGrid').scrollIntoView({ behavior: 'smooth' });\n      } else {\n        throw new Error(result.message || 'Eroare la trimitere');\n      }\n    } catch (err) {\n      console.error('Submit error:', err);\n      alert('A ap\u0103rut o eroare la trimitere. Te rug\u0103m s\u0103 \u00eencerci din nou sau s\u0103 ne contactezi direct.');\n      btn.classList.remove('loading');\n      btn.disabled = false;\n      btn.querySelector('.btn-text').textContent = 'Confirm\u0103 programarea';\n    }\n  });\n\n  \/\/ ===== INIT =====\n  buildCalendar();\n<\/script>\n\n<\/body>\n<\/html>\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>","protected":false},"excerpt":{"rendered":"<p>Programeaz\u0103 o \u00eent\u00e2lnire cu ECOWES \u2014 Battery Recycling Expo, Frankfurt 17\u201318 Iunie 2026 \u00b7 Messe Frankfurt \u00b7 Germania \u00b7 Stand A20 Disponibilitate limitat\u0103 \u00b7 2 zile Book a meeting with&hellip;<\/p>","protected":false},"author":4,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-25166","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Battery Recycling Expo - Ecowes<\/title>\n<meta name=\"description\" content=\"Programeaz\u0103 o \u00eent\u00e2lnire cu ECOWES \u2014 Battery Recycling Expo, Frankfurt 17\u201318 Iunie 2026 \u00b7 Messe Frankfurt \u00b7 Germania \u00b7 Stand A20 Disponibilitate limitat\u0103 \u00b7\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/ecowes.ro\/it\/battery-recycling-expo\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Battery Recycling Expo - Ecowes\" \/>\n<meta property=\"og:description\" content=\"Programeaz\u0103 o \u00eent\u00e2lnire cu ECOWES \u2014 Battery Recycling Expo, Frankfurt 17\u201318 Iunie 2026 \u00b7 Messe Frankfurt \u00b7 Germania \u00b7 Stand A20 Disponibilitate limitat\u0103 \u00b7\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ecowes.ro\/it\/battery-recycling-expo\/\" \/>\n<meta property=\"og:site_name\" content=\"Ecowes\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-20T10:11:58+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/ecowes.ro\/battery-recycling-expo\/\",\"url\":\"https:\/\/ecowes.ro\/battery-recycling-expo\/\",\"name\":\"Battery Recycling Expo - Ecowes\",\"isPartOf\":{\"@id\":\"https:\/\/ecowes.ro\/#website\"},\"datePublished\":\"2026-05-19T09:23:18+00:00\",\"dateModified\":\"2026-05-20T10:11:58+00:00\",\"description\":\"Programeaz\u0103 o \u00eent\u00e2lnire cu ECOWES \u2014 Battery Recycling Expo, Frankfurt 17\u201318 Iunie 2026 \u00b7 Messe Frankfurt \u00b7 Germania \u00b7 Stand A20 Disponibilitate limitat\u0103 \u00b7\",\"breadcrumb\":{\"@id\":\"https:\/\/ecowes.ro\/battery-recycling-expo\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/ecowes.ro\/battery-recycling-expo\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/ecowes.ro\/battery-recycling-expo\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Prima pagin\u0103\",\"item\":\"https:\/\/ecowes.ro\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Battery Recycling Expo\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/ecowes.ro\/#website\",\"url\":\"https:\/\/ecowes.ro\/\",\"name\":\"Ecowes\",\"description\":\"Solu\u021bii de reciclare sustenabil\u0103, eficient\u0103 \u0219i scalabil\u0103 a tuturor tipologiilor de baterii.\",\"publisher\":{\"@id\":\"https:\/\/ecowes.ro\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/ecowes.ro\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/ecowes.ro\/#organization\",\"name\":\"Ecowes\",\"url\":\"https:\/\/ecowes.ro\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/ecowes.ro\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/ecowes.ro\/wp-content\/uploads\/2025\/08\/Logo-ECOWES-01-6.png\",\"contentUrl\":\"https:\/\/ecowes.ro\/wp-content\/uploads\/2025\/08\/Logo-ECOWES-01-6.png\",\"width\":2363,\"height\":912,\"caption\":\"Ecowes\"},\"image\":{\"@id\":\"https:\/\/ecowes.ro\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Battery Recycling Expo - Ecowes","description":"Programeaz\u0103 o \u00eent\u00e2lnire cu ECOWES \u2014 Battery Recycling Expo, Frankfurt 17\u201318 Iunie 2026 \u00b7 Messe Frankfurt \u00b7 Germania \u00b7 Stand A20 Disponibilitate limitat\u0103 \u00b7","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/ecowes.ro\/it\/battery-recycling-expo\/","og_locale":"it_IT","og_type":"article","og_title":"Battery Recycling Expo - Ecowes","og_description":"Programeaz\u0103 o \u00eent\u00e2lnire cu ECOWES \u2014 Battery Recycling Expo, Frankfurt 17\u201318 Iunie 2026 \u00b7 Messe Frankfurt \u00b7 Germania \u00b7 Stand A20 Disponibilitate limitat\u0103 \u00b7","og_url":"https:\/\/ecowes.ro\/it\/battery-recycling-expo\/","og_site_name":"Ecowes","article_modified_time":"2026-05-20T10:11:58+00:00","twitter_card":"summary_large_image","twitter_misc":{"Tempo di lettura stimato":"3 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/ecowes.ro\/battery-recycling-expo\/","url":"https:\/\/ecowes.ro\/battery-recycling-expo\/","name":"Battery Recycling Expo - Ecowes","isPartOf":{"@id":"https:\/\/ecowes.ro\/#website"},"datePublished":"2026-05-19T09:23:18+00:00","dateModified":"2026-05-20T10:11:58+00:00","description":"Programeaz\u0103 o \u00eent\u00e2lnire cu ECOWES \u2014 Battery Recycling Expo, Frankfurt 17\u201318 Iunie 2026 \u00b7 Messe Frankfurt \u00b7 Germania \u00b7 Stand A20 Disponibilitate limitat\u0103 \u00b7","breadcrumb":{"@id":"https:\/\/ecowes.ro\/battery-recycling-expo\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ecowes.ro\/battery-recycling-expo\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/ecowes.ro\/battery-recycling-expo\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Prima pagin\u0103","item":"https:\/\/ecowes.ro\/"},{"@type":"ListItem","position":2,"name":"Battery Recycling Expo"}]},{"@type":"WebSite","@id":"https:\/\/ecowes.ro\/#website","url":"https:\/\/ecowes.ro\/","name":"Ecowes","description":"Solu\u021bii de reciclare sustenabil\u0103, eficient\u0103 \u0219i scalabil\u0103 a tuturor tipologiilor de baterii.","publisher":{"@id":"https:\/\/ecowes.ro\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ecowes.ro\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/ecowes.ro\/#organization","name":"Ecowes","url":"https:\/\/ecowes.ro\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/ecowes.ro\/#\/schema\/logo\/image\/","url":"https:\/\/ecowes.ro\/wp-content\/uploads\/2025\/08\/Logo-ECOWES-01-6.png","contentUrl":"https:\/\/ecowes.ro\/wp-content\/uploads\/2025\/08\/Logo-ECOWES-01-6.png","width":2363,"height":912,"caption":"Ecowes"},"image":{"@id":"https:\/\/ecowes.ro\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/ecowes.ro\/it\/wp-json\/wp\/v2\/pages\/25166","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ecowes.ro\/it\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ecowes.ro\/it\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ecowes.ro\/it\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/ecowes.ro\/it\/wp-json\/wp\/v2\/comments?post=25166"}],"version-history":[{"count":16,"href":"https:\/\/ecowes.ro\/it\/wp-json\/wp\/v2\/pages\/25166\/revisions"}],"predecessor-version":[{"id":25195,"href":"https:\/\/ecowes.ro\/it\/wp-json\/wp\/v2\/pages\/25166\/revisions\/25195"}],"wp:attachment":[{"href":"https:\/\/ecowes.ro\/it\/wp-json\/wp\/v2\/media?parent=25166"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}