{"id":2605,"date":"2024-11-03T13:44:37","date_gmt":"2024-11-03T13:44:37","guid":{"rendered":"https:\/\/www.zlati.legal\/?p=2605"},"modified":"2026-06-07T15:08:35","modified_gmt":"2026-06-07T15:08:35","slug":"calculator-online-liberare-conditionata","status":"publish","type":"post","link":"https:\/\/zic.legal\/ro\/calculator-online-liberare-conditionata\/","title":{"rendered":"Calculator online pentru liberarea intrebarii"},"content":{"rendered":"<div id=\"zic-liberare-calculator-v2\" class=\"zic2\" data-zic2=\"1\">\r\n  <div class=\"zic2__wrap\">\r\n    <!-- Header -->\r\n    <header class=\"zic2__hero\">\r\n      <div class=\"zic2__brandbar\">\r\n        <div class=\"zic2__mark\" aria-hidden=\"true\">\r\n          <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n            <path d=\"M12 2l7 4v6c0 5-3 9-7 10-4-1-7-5-7-10V6l7-4Z\"\/>\r\n            <path d=\"M9.5 12.2l1.7 1.7 3.8-4.1\"\/>\r\n          <\/svg>\r\n        <\/div>\r\n        <div class=\"zic2__headerText\">\r\n          <h2 class=\"zic2__title\">Calculator liberare condi\u021bionat\u0103<\/h2>\r\n          <p class=\"zic2__subtitle\">Estimare orientativ\u0103 a condi\u021biei de timp (art. 99-101 CP; art. 96 L.254\/2013)<\/p>\r\n        <\/div>\r\n      <\/div>\r\n    <\/header>\r\n\r\n    <!-- Formula info -->\r\n    <div class=\"zic2__formula\">\r\n      <div class=\"zic2__formulaIcon\">\r\n        <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n          <circle cx=\"12\" cy=\"12\" r=\"10\"\/>\r\n          <path d=\"M12 16v-4\"\/>\r\n          <path d=\"M12 8h.01\"\/>\r\n        <\/svg>\r\n      <\/div>\r\n      <div class=\"zic2__formulaText\">\r\n        <strong>Zile considerate<\/strong> = Zile executate efectiv + Zile c\u00e2\u0219tig (munc\u0103\/educa\u021bie). Pragul depinde de durata pedepsei \u0219i v\u00e2rst\u0103.\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <!-- Error Box -->\r\n    <div class=\"zic2__error is-hidden\" role=\"alert\" aria-live=\"polite\" data-errors><\/div>\r\n\r\n    <!-- Card: Set\u0103ri generale -->\r\n    <section class=\"zic2__card\" aria-labelledby=\"zic2-sec-general\">\r\n      <div class=\"zic2__cardHeader\">\r\n        <div class=\"zic2__cardIcon zic2__cardIcon--purple\">\r\n          <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n            <path d=\"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 0 0-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 0 0-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 0 0-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 0 0-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 0 0 1.066-2.573c-.94-1.543.826-3.31 2.37-2.37 1 .608 2.296.07 2.572-1.065Z\"\/>\r\n            <circle cx=\"12\" cy=\"12\" r=\"3\"\/>\r\n          <\/svg>\r\n        <\/div>\r\n        <h3 id=\"zic2-sec-general\" class=\"zic2__cardTitle\">Set\u0103ri generale<\/h3>\r\n        <div class=\"zic2__spacer\"><\/div>\r\n        <span class=\"zic2__badge zic2__badge--live\">Executat: <strong data-live=\"effective\">0<\/strong> zile<\/span>\r\n      <\/div>\r\n\r\n      <div class=\"zic2__grid2\">\r\n        <div class=\"zic2__field\">\r\n          <label class=\"zic2__label\" for=\"zic2-tip\">Categoria pedepsei<\/label>\r\n          <select id=\"zic2-tip\" class=\"zic2__select\" data-field=\"tip\">\r\n            <option value=\"inchisoare\" selected>\u00cenchisoare<\/option>\r\n            <option value=\"detentiune_viata\">Deten\u021biune pe via\u021b\u0103<\/option>\r\n          <\/select>\r\n        <\/div>\r\n        <div class=\"zic2__field\">\r\n          <label class=\"zic2__label\" for=\"zic2-varsta\">V\u00e2rsta (ani \u00eemplini\u021bi)<\/label>\r\n          <input id=\"zic2-varsta\" class=\"zic2__input\" type=\"number\" min=\"0\" max=\"150\" inputmode=\"numeric\" data-field=\"varsta\" placeholder=\"Ex: 35\">\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div data-section=\"onlyInch\" style=\"margin-top: 16px;\">\r\n        <div class=\"zic2__field\" style=\"margin-bottom: 16px;\">\r\n          <label class=\"zic2__label\">Durata pedepsei (\u00eenchisoare)<\/label>\r\n          <div class=\"zic2__grid3\">\r\n            <div class=\"zic2__field\">\r\n              <label class=\"zic2__label\" for=\"zic2-ani\">Ani<\/label>\r\n              <input id=\"zic2-ani\" class=\"zic2__input\" type=\"number\" min=\"0\" max=\"100\" inputmode=\"numeric\" data-field=\"ani\" placeholder=\"0\">\r\n            <\/div>\r\n            <div class=\"zic2__field\">\r\n              <label class=\"zic2__label\" for=\"zic2-luni\">Luni<\/label>\r\n              <input id=\"zic2-luni\" class=\"zic2__input\" type=\"number\" min=\"0\" max=\"11\" inputmode=\"numeric\" data-field=\"luni\" placeholder=\"0\">\r\n            <\/div>\r\n            <div class=\"zic2__field\">\r\n              <label class=\"zic2__label\" for=\"zic2-zile-dur\">Zile<\/label>\r\n              <input id=\"zic2-zile-dur\" class=\"zic2__input\" type=\"number\" min=\"0\" max=\"29\" inputmode=\"numeric\" data-field=\"zileDur\" placeholder=\"0\">\r\n            <\/div>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"zic2__grid2\">\r\n          <div class=\"zic2__field\">\r\n            <label class=\"zic2__label\" for=\"zic2-regim\">Regim de executare<\/label>\r\n            <select id=\"zic2-regim\" class=\"zic2__select\" data-field=\"regim\">\r\n              <option value=\"\">Selecteaz\u0103...<\/option>\r\n              <option value=\"maxima\">Maxim\u0103 siguran\u021b\u0103<\/option>\r\n              <option value=\"inchis\">\u00cenchis<\/option>\r\n              <option value=\"semideschis\">Semideschis<\/option>\r\n              <option value=\"deschis\">Deschis<\/option>\r\n            <\/select>\r\n          <\/div>\r\n          <div class=\"zic2__field\">\r\n            <label class=\"zic2__label\" for=\"zic2-recurs\">Zile recurs compensatoriu<\/label>\r\n            <input id=\"zic2-recurs\" class=\"zic2__input\" type=\"number\" min=\"0\" max=\"100000\" inputmode=\"numeric\" data-field=\"recurs\" placeholder=\"0\">\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"zic2__hint\" style=\"margin-top: 16px;\">\r\n        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><path d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\"\/><path d=\"M12 17h.01\"\/><\/svg>\r\n        <span><strong>Data \u00eenceperii execut\u0103rii<\/strong> = data punerii \u00een executare, nu data arest\u0103rii preventive. Perioadele anterioare se adaug\u0103 la \"M\u0103suri preventive\".<\/span>\r\n      <\/div>\r\n\r\n      <div class=\"zic2__grid2\" style=\"margin-top: 16px;\">\r\n        <div class=\"zic2__field\">\r\n          <label class=\"zic2__label\" for=\"zic2-data-start\">Data \u00eenceperii execut\u0103rii (op\u021bional)<\/label>\r\n          <input id=\"zic2-data-start\" class=\"zic2__input\" type=\"date\" data-field=\"dataStart\">\r\n        <\/div>\r\n        <div class=\"zic2__field\">\r\n          <label class=\"zic2__label\" for=\"zic2-zile-efective\">Zile executate efectiv<\/label>\r\n          <input id=\"zic2-zile-efective\" class=\"zic2__input\" type=\"number\" min=\"0\" max=\"100000\" inputmode=\"numeric\" data-field=\"zileEfective\" placeholder=\"Dac\u0103 nu folose\u0219ti data\">\r\n        <\/div>\r\n      <\/div>\r\n    <\/section>\r\n\r\n    <!-- Card: Zile c\u00e2\u0219tig -->\r\n    <section class=\"zic2__card\" aria-labelledby=\"zic2-sec-credit\">\r\n      <div class=\"zic2__cardHeader\">\r\n        <div class=\"zic2__cardIcon zic2__cardIcon--blue\">\r\n          <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n            <circle cx=\"12\" cy=\"12\" r=\"10\"\/>\r\n            <polyline points=\"12 6 12 12 16 14\"\/>\r\n          <\/svg>\r\n        <\/div>\r\n        <h3 id=\"zic2-sec-credit\" class=\"zic2__cardTitle\">Zile c\u00e2\u0219tig (munc\u0103 \/ educa\u021bie)<\/h3>\r\n        <div class=\"zic2__spacer\"><\/div>\r\n        <span class=\"zic2__badge zic2__badge--live\">C\u00e2\u0219tig: <strong data-live=\"credit\">0<\/strong> zile<\/span>\r\n      <\/div>\r\n\r\n      <div class=\"zic2__grid2\">\r\n        <div class=\"zic2__field\">\r\n          <label class=\"zic2__label\" for=\"zic2-munca-rem\">Zile munc\u0103 remunerat\u0103<\/label>\r\n          <input id=\"zic2-munca-rem\" class=\"zic2__input\" type=\"number\" min=\"0\" max=\"100000\" inputmode=\"numeric\" data-field=\"muncaRem\" placeholder=\"0\">\r\n          <span class=\"zic2__fieldHint\">+1 zi c\u00e2\u0219tig la 4 zile lucrate<\/span>\r\n        <\/div>\r\n        <div class=\"zic2__field\">\r\n          <label class=\"zic2__label\" for=\"zic2-munca-nerem\">Zile munc\u0103 neremunerat\u0103<\/label>\r\n          <input id=\"zic2-munca-nerem\" class=\"zic2__input\" type=\"number\" min=\"0\" max=\"100000\" inputmode=\"numeric\" data-field=\"muncaNerem\" placeholder=\"0\">\r\n          <span class=\"zic2__fieldHint\">+1 zi c\u00e2\u0219tig la 3 zile lucrate<\/span>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"zic2__grid2\" style=\"margin-top: 12px;\">\r\n        <div class=\"zic2__field\">\r\n          <label class=\"zic2__label\" for=\"zic2-nopti\">Nop\u021bi munc\u0103 de noapte<\/label>\r\n          <input id=\"zic2-nopti\" class=\"zic2__input\" type=\"number\" min=\"0\" max=\"100000\" inputmode=\"numeric\" data-field=\"nopti\" placeholder=\"0\">\r\n          <span class=\"zic2__fieldHint\">+1 zi c\u00e2\u0219tig la 2 nop\u021bi<\/span>\r\n        <\/div>\r\n        <div class=\"zic2__field\">\r\n          <label class=\"zic2__label\" for=\"zic2-an-scolar\">Ani \u0219colari absolvi\u021bi<\/label>\r\n          <input id=\"zic2-an-scolar\" class=\"zic2__input\" type=\"number\" min=\"0\" max=\"50\" inputmode=\"numeric\" data-field=\"anScolar\" placeholder=\"0\">\r\n          <span class=\"zic2__fieldHint\">+30 zile \/ an<\/span>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"zic2__grid2\" style=\"margin-top: 12px;\">\r\n        <div class=\"zic2__field\">\r\n          <label class=\"zic2__label\" for=\"zic2-curs\">Cursuri calificare\/recalificare<\/label>\r\n          <input id=\"zic2-curs\" class=\"zic2__input\" type=\"number\" min=\"0\" max=\"100\" inputmode=\"numeric\" data-field=\"curs\" placeholder=\"0\">\r\n          <span class=\"zic2__fieldHint\">+20 zile \/ curs<\/span>\r\n        <\/div>\r\n        <div class=\"zic2__field\">\r\n          <label class=\"zic2__label\">Lucr\u0103ri \u0219tiin\u021bifice \/ inven\u021bii<\/label>\r\n          <label class=\"zic2__checkbox zic2__checkbox--sm\">\r\n            <input type=\"checkbox\" data-field=\"works20\">\r\n            <span>Adaug\u0103 20 zile (max o singur\u0103 dat\u0103)<\/span>\r\n          <\/label>\r\n        <\/div>\r\n      <\/div>\r\n    <\/section>\r\n\r\n    <!-- Card: M\u0103suri preventive -->\r\n    <section class=\"zic2__card\" aria-labelledby=\"zic2-sec-mp\">\r\n      <div class=\"zic2__cardHeader\">\r\n        <div class=\"zic2__cardIcon zic2__cardIcon--purple\">\r\n          <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n            <path d=\"M12 2l7 4v6c0 5-3 9-7 10-4-1-7-5-7-10V6l7-4Z\"\/>\r\n          <\/svg>\r\n        <\/div>\r\n        <h3 id=\"zic2-sec-mp\" class=\"zic2__cardTitle\">M\u0103suri preventive deduse <span class=\"zic2__optional\">(op\u021bional)<\/span><\/h3>\r\n        <div class=\"zic2__spacer\"><\/div>\r\n        <span class=\"zic2__badge zic2__badge--live\">Total: <strong data-live=\"mpTotal\">0<\/strong> zile<\/span>\r\n      <\/div>\r\n\r\n      <div class=\"zic2__btnGroup\">\r\n        <button type=\"button\" class=\"zic2__btn zic2__btn--outline\" data-action=\"addMp\">\r\n          <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\"><path d=\"M12 5v14M5 12h14\"\/><\/svg>\r\n          Adaug\u0103 perioad\u0103\r\n        <\/button>\r\n      <\/div>\r\n\r\n      <div class=\"zic2__rows\" data-list=\"mp\"><\/div>\r\n\r\n      <div class=\"zic2__emptyState\" data-empty=\"mp\">\r\n        <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\">\r\n          <path d=\"M12 2l7 4v6c0 5-3 9-7 10-4-1-7-5-7-10V6l7-4Z\"\/>\r\n        <\/svg>\r\n        <span>Perioadele suprapuse sunt unite automat<\/span>\r\n      <\/div>\r\n    <\/section>\r\n\r\n    <!-- Card: \u00centreruperi -->\r\n    <section class=\"zic2__card\" aria-labelledby=\"zic2-sec-intr\">\r\n      <div class=\"zic2__cardHeader\">\r\n        <div class=\"zic2__cardIcon zic2__cardIcon--purple\">\r\n          <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n            <path d=\"M6 6l12 12M18 6L6 18\"\/>\r\n          <\/svg>\r\n        <\/div>\r\n        <h3 id=\"zic2-sec-intr\" class=\"zic2__cardTitle\">\u00centreruperi ale execut\u0103rii <span class=\"zic2__optional\">(op\u021bional)<\/span><\/h3>\r\n        <div class=\"zic2__spacer\"><\/div>\r\n        <span class=\"zic2__badge zic2__badge--live\">Total: <strong data-live=\"intrTotal\">0<\/strong> zile<\/span>\r\n      <\/div>\r\n\r\n      <div class=\"zic2__btnGroup\">\r\n        <button type=\"button\" class=\"zic2__btn zic2__btn--outline\" data-action=\"addIntr\">\r\n          <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\"><path d=\"M12 5v14M5 12h14\"\/><\/svg>\r\n          Adaug\u0103 \u00eentrerupere\r\n        <\/button>\r\n      <\/div>\r\n\r\n      <div class=\"zic2__rows\" data-list=\"intr\"><\/div>\r\n\r\n      <div class=\"zic2__emptyState\" data-empty=\"intr\">\r\n        <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\">\r\n          <path d=\"M6 6l12 12M18 6L6 18\"\/>\r\n        <\/svg>\r\n        <span>Se scad din zilele executate (doar cu data de start)<\/span>\r\n      <\/div>\r\n    <\/section>\r\n\r\n    <!-- Actions -->\r\n    <div class=\"zic2__actions\">\r\n      <button type=\"button\" class=\"zic2__btn zic2__btn--primary zic2__btn--large\" data-action=\"calculate\">\r\n        <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\"><polyline points=\"9 11 12 14 22 4\"\/><path d=\"M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11\"\/><\/svg>\r\n        Calculeaz\u0103\r\n      <\/button>\r\n      <button type=\"button\" class=\"zic2__btn zic2__btn--secondary\" data-action=\"reset\">\r\n        <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\"\/><path d=\"M3 3v5h5\"\/><\/svg>\r\n        Reseteaz\u0103\r\n      <\/button>\r\n      <button type=\"button\" class=\"zic2__btn zic2__btn--success\" data-action=\"example\">\r\n        <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"\/><polyline points=\"14 2 14 8 20 8\"\/><\/svg>\r\n        Exemplu\r\n      <\/button>\r\n      <button type=\"button\" class=\"zic2__btn zic2__btn--secondary\" data-action=\"export-pdf\">\r\n        <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"\/><polyline points=\"14 2 14 8 20 8\"\/><path d=\"M12 18v-6\"\/><path d=\"M9 15l3 3 3-3\"\/><\/svg>\r\n        Descarc\u0103 PDF\r\n      <\/button>\r\n    <\/div>\r\n\r\n    <!-- Result -->\r\n    <section class=\"zic2__card zic2__resultCard is-hidden\" data-result aria-live=\"polite\">\r\n      <div class=\"zic2__cardHeader\">\r\n        <div class=\"zic2__cardIcon\" data-result-icon>\r\n          <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg>\r\n        <\/div>\r\n        <h3 class=\"zic2__cardTitle\">Rezultat (condi\u021bia de timp)<\/h3>\r\n      <\/div>\r\n      <div class=\"zic2__resultBody\" data-result-content><\/div>\r\n    <\/section>\r\n\r\n    <!-- Disclaimer -->\r\n    <div class=\"zic2__disclaimer\">\r\n      <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\"\/><line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\"\/><line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"\/><\/svg>\r\n      <div>\r\n        <strong>Disclaimer:<\/strong> Acest calculator este oferit exclusiv \u00een scop informativ \u0219i educativ. Acordarea liber\u0103rii condi\u021bionate depinde \u0219i de conduit\u0103, obliga\u021bii civile, aprecierea instan\u021bei etc.\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <!-- Footer -->\r\n    <footer class=\"zic2__footer\">\r\n      <a href=\"https:\/\/zic.legal\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"zic2__footerLink\">\r\n        &copy; 2025 ZIC Legal\r\n      <\/a>\r\n    <\/footer>\r\n  <\/div>\r\n<\/div>\r\n\r\n<style>\r\n\/* ============================================================\r\n   ZIC Calculator v2 - Liberare Condi\u021bionat\u0103\r\n   Theme: Purple\/Mov | Fully Responsive | Optimized | SECURED\r\n   ============================================================ *\/\r\n\r\n\/* === CSS Variables === *\/\r\n#zic-liberare-calculator-v2 {\r\n  --zic-primary: #8A88FF;\r\n  --zic-primary-dark: #6F6CFF;\r\n  --zic-primary-light: rgba(138,136,255,.08);\r\n  --zic-primary-border: rgba(138,136,255,.25);\r\n\r\n  --zic-success: #10B981;\r\n  --zic-success-light: rgba(16,185,129,.08);\r\n  --zic-success-border: rgba(16,185,129,.25);\r\n\r\n  --zic-danger: #EF4444;\r\n  --zic-danger-light: rgba(239,68,68,.08);\r\n  --zic-danger-border: rgba(239,68,68,.25);\r\n\r\n  --zic-warning: #F59E0B;\r\n  --zic-warning-light: rgba(245,158,11,.08);\r\n  --zic-warning-border: rgba(245,158,11,.25);\r\n\r\n  --zic-blue: #3B82F6;\r\n  --zic-blue-light: rgba(59,130,246,.08);\r\n\r\n  --zic-ink: #1F2937;\r\n  --zic-ink-light: #374151;\r\n  --zic-muted: #6B7280;\r\n  --zic-light: #9CA3AF;\r\n\r\n  --zic-bg: #F9FAFB;\r\n  --zic-surface: #FFFFFF;\r\n  --zic-border: #E5E7EB;\r\n\r\n  --zic-shadow-sm: 0 1px 2px rgba(0,0,0,.05);\r\n  --zic-shadow-lg: 0 10px 15px -3px rgba(0,0,0,.1), 0 4px 6px -2px rgba(0,0,0,.05);\r\n\r\n  --zic-radius: 16px;\r\n  --zic-radius-sm: 12px;\r\n  --zic-radius-xs: 8px;\r\n\r\n  --zic-transition: 150ms ease;\r\n\r\n  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;\r\n  color: var(--zic-ink);\r\n  line-height: 1.5;\r\n  -webkit-font-smoothing: antialiased;\r\n}\r\n\r\n#zic-liberare-calculator-v2 *, #zic-liberare-calculator-v2 *::before, #zic-liberare-calculator-v2 *::after { box-sizing: border-box; }\r\n\r\n\/* === WordPress\/Avada Override Protection === *\/\r\n#zic-liberare-calculator-v2 input[type=\"checkbox\"],\r\n#zic-liberare-calculator-v2 input[type=\"radio\"] {\r\n  -webkit-appearance: auto !important;\r\n  -moz-appearance: auto !important;\r\n  appearance: auto !important;\r\n  width: 18px !important;\r\n  height: 18px !important;\r\n  margin: 0 !important;\r\n  padding: 0 !important;\r\n  border: none !important;\r\n  background: none !important;\r\n  box-shadow: none !important;\r\n}\r\n\r\n#zic-liberare-calculator-v2 input[type=\"number\"],\r\n#zic-liberare-calculator-v2 input[type=\"text\"],\r\n#zic-liberare-calculator-v2 input[type=\"date\"] {\r\n  -webkit-appearance: none !important;\r\n  -moz-appearance: textfield !important;\r\n  appearance: none !important;\r\n  background-image: none !important;\r\n  box-shadow: none !important;\r\n}\r\n\r\n#zic-liberare-calculator-v2 select {\r\n  background-image: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236B7280' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'\/%3E%3C\/svg%3E\") !important;\r\n  background-repeat: no-repeat !important;\r\n  background-position: right 12px center !important;\r\n  padding-right: 36px !important;\r\n}\r\n\r\n#zic-liberare-calculator-v2 button:not(.zic2__btn--primary) {\r\n  background-image: none !important;\r\n}\r\n\r\n#zic-liberare-calculator-v2 button {\r\n  text-shadow: none !important;\r\n  letter-spacing: normal !important;\r\n}\r\n\r\n#zic-liberare-calculator-v2 h2,\r\n#zic-liberare-calculator-v2 h3 {\r\n  text-transform: none !important;\r\n  letter-spacing: normal !important;\r\n}\r\n\r\n#zic-liberare-calculator-v2 a { text-decoration: none; }\r\n#zic-liberare-calculator-v2 a:hover { text-decoration: underline; }\r\n\r\n#zic-liberare-calculator-v2 .zic2__wrap { max-width: 720px; margin: 0 auto; padding: 16px; }\r\n\r\n#zic-liberare-calculator-v2 .zic2__hero { margin-bottom: 16px; }\r\n\r\n#zic-liberare-calculator-v2 .zic2__brandbar {\r\n  display: flex; align-items: center; gap: 14px;\r\n  background: linear-gradient(135deg, var(--zic-primary), var(--zic-primary-dark));\r\n  border-radius: var(--zic-radius); padding: 20px; color: #fff; box-shadow: var(--zic-shadow-lg);\r\n}\r\n\r\n#zic-liberare-calculator-v2 .zic2__mark {\r\n  width: 48px; height: 48px; background: rgba(255,255,255,.2); border-radius: 12px;\r\n  display: flex; align-items: center; justify-content: center; flex-shrink: 0;\r\n}\r\n\r\n#zic-liberare-calculator-v2 .zic2__headerText { flex: 1; min-width: 0; }\r\n#zic-liberare-calculator-v2 .zic2__title { margin: 0; font-size: 20px; font-weight: 700; line-height: 1.2; }\r\n#zic-liberare-calculator-v2 .zic2__subtitle { margin: 4px 0 0; font-size: 14px; opacity: 0.9; }\r\n\r\n#zic-liberare-calculator-v2 .zic2__formula {\r\n  display: flex; align-items: flex-start; gap: 10px;\r\n  background: var(--zic-primary-light); border: 1px solid var(--zic-primary-border);\r\n  border-radius: var(--zic-radius-sm); padding: 12px 14px; margin-bottom: 16px;\r\n  font-size: 14px; color: var(--zic-ink-light);\r\n}\r\n#zic-liberare-calculator-v2 .zic2__formulaIcon { color: var(--zic-primary-dark); flex-shrink: 0; margin-top: 1px; }\r\n#zic-liberare-calculator-v2 .zic2__formulaText strong { color: var(--zic-ink); }\r\n\r\n#zic-liberare-calculator-v2 .zic2__card {\r\n  background: var(--zic-surface); border: 1px solid var(--zic-border);\r\n  border-radius: var(--zic-radius); padding: 20px; margin-bottom: 16px; box-shadow: var(--zic-shadow-sm);\r\n}\r\n\r\n#zic-liberare-calculator-v2 .zic2__cardHeader { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; flex-wrap: wrap; }\r\n\r\n#zic-liberare-calculator-v2 .zic2__cardIcon {\r\n  width: 36px; height: 36px; border-radius: 10px;\r\n  display: flex; align-items: center; justify-content: center; flex-shrink: 0;\r\n}\r\n#zic-liberare-calculator-v2 .zic2__cardIcon--purple { background: var(--zic-primary-light); color: var(--zic-primary-dark); }\r\n#zic-liberare-calculator-v2 .zic2__cardIcon--blue { background: var(--zic-blue-light); color: var(--zic-blue); }\r\n#zic-liberare-calculator-v2 .zic2__cardIcon--green { background: var(--zic-success-light); color: var(--zic-success); }\r\n#zic-liberare-calculator-v2 .zic2__cardIcon--red { background: var(--zic-danger-light); color: var(--zic-danger); }\r\n\r\n#zic-liberare-calculator-v2 .zic2__cardTitle { margin: 0; font-size: 17px; font-weight: 700; color: var(--zic-ink); }\r\n#zic-liberare-calculator-v2 .zic2__spacer { flex: 1; }\r\n#zic-liberare-calculator-v2 .zic2__optional { font-weight: 400; color: var(--zic-muted); font-size: 14px; }\r\n\r\n#zic-liberare-calculator-v2 .zic2__badge {\r\n  display: inline-flex; align-items: center; gap: 6px; padding: 6px 12px;\r\n  background: var(--zic-primary-light); color: var(--zic-primary-dark);\r\n  font-size: 12px; font-weight: 600; border-radius: 999px; white-space: nowrap;\r\n}\r\n#zic-liberare-calculator-v2 .zic2__badge strong { font-weight: 800; }\r\n\r\n#zic-liberare-calculator-v2 .zic2__field { display: flex; flex-direction: column; gap: 4px; }\r\n#zic-liberare-calculator-v2 .zic2__label { font-size: 12px; font-weight: 600; color: var(--zic-muted); }\r\n#zic-liberare-calculator-v2 .zic2__fieldHint { font-size: 11px; color: var(--zic-light); margin-top: 4px; }\r\n\r\n#zic-liberare-calculator-v2 .zic2__input, #zic-liberare-calculator-v2 .zic2__select {\r\n  width: 100%; padding: 10px 12px; font-size: 15px; font-family: inherit;\r\n  color: var(--zic-ink); background: var(--zic-surface);\r\n  border: 2px solid var(--zic-border); border-radius: var(--zic-radius-xs);\r\n  outline: none; transition: border-color var(--zic-transition), box-shadow var(--zic-transition);\r\n}\r\n#zic-liberare-calculator-v2 .zic2__input:focus, #zic-liberare-calculator-v2 .zic2__select:focus {\r\n  border-color: var(--zic-primary); box-shadow: 0 0 0 3px var(--zic-primary-light);\r\n}\r\n#zic-liberare-calculator-v2 .zic2__input:disabled { opacity: 0.6; cursor: not-allowed; }\r\n\r\n#zic-liberare-calculator-v2 .zic2__grid2 { display: grid; gap: 12px; }\r\n#zic-liberare-calculator-v2 .zic2__grid3 { display: grid; gap: 12px; grid-template-columns: repeat(3, 1fr); }\r\n@media (min-width: 640px) { #zic-liberare-calculator-v2 .zic2__grid2 { grid-template-columns: 1fr 1fr; } }\r\n\r\n#zic-liberare-calculator-v2 .zic2__checkbox {\r\n  display: flex; align-items: center; gap: 10px; padding: 10px 12px;\r\n  background: var(--zic-bg); border: 1px solid var(--zic-border);\r\n  border-radius: var(--zic-radius-xs); cursor: pointer; transition: all var(--zic-transition);\r\n}\r\n#zic-liberare-calculator-v2 .zic2__checkbox:hover { background: var(--zic-primary-light); border-color: var(--zic-primary-border); }\r\n#zic-liberare-calculator-v2 .zic2__checkbox input[type=\"checkbox\"] { width: 16px; height: 16px; accent-color: var(--zic-primary); flex-shrink: 0; }\r\n#zic-liberare-calculator-v2 .zic2__checkbox span { font-size: 13px; font-weight: 600; color: var(--zic-ink-light); }\r\n\r\n#zic-liberare-calculator-v2 .zic2__btnGroup { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; }\r\n\r\n#zic-liberare-calculator-v2 .zic2__btn {\r\n  display: inline-flex; align-items: center; justify-content: center; gap: 6px;\r\n  padding: 10px 16px; font-size: 14px; font-weight: 600;\r\n  border-radius: var(--zic-radius-sm); border: 1px solid transparent;\r\n  cursor: pointer; transition: all var(--zic-transition); white-space: nowrap; text-decoration: none;\r\n}\r\n#zic-liberare-calculator-v2 .zic2__btn:focus { outline: none; box-shadow: 0 0 0 3px var(--zic-primary-border); }\r\n#zic-liberare-calculator-v2 .zic2__btn:active { transform: translateY(1px); }\r\n\r\n#zic-liberare-calculator-v2 .zic2__btn--primary {\r\n  background: linear-gradient(135deg, var(--zic-primary), var(--zic-primary-dark));\r\n  color: #fff; box-shadow: 0 4px 14px rgba(138,136,255,.35);\r\n}\r\n#zic-liberare-calculator-v2 .zic2__btn--primary:hover { box-shadow: 0 6px 20px rgba(138,136,255,.45); transform: translateY(-1px); }\r\n#zic-liberare-calculator-v2 .zic2__btn--large { padding: 14px 24px; font-size: 15px; }\r\n\r\n#zic-liberare-calculator-v2 .zic2__btn--secondary { background: var(--zic-surface); border-color: var(--zic-border); color: var(--zic-ink-light); }\r\n#zic-liberare-calculator-v2 .zic2__btn--secondary:hover { background: var(--zic-bg); border-color: var(--zic-primary-border); color: var(--zic-primary-dark); }\r\n\r\n#zic-liberare-calculator-v2 .zic2__btn--outline { background: var(--zic-surface); border-color: var(--zic-primary-border); color: var(--zic-primary-dark); }\r\n#zic-liberare-calculator-v2 .zic2__btn--outline:hover { background: var(--zic-primary-light); }\r\n\r\n#zic-liberare-calculator-v2 .zic2__btn--success { background: var(--zic-success-light); border-color: var(--zic-success-border); color: var(--zic-success); }\r\n#zic-liberare-calculator-v2 .zic2__btn--success:hover { background: rgba(16,185,129,.15); }\r\n\r\n#zic-liberare-calculator-v2 .zic2__btn--danger { background: var(--zic-danger-light); border-color: var(--zic-danger-border); color: var(--zic-danger); padding: 8px 12px; font-size: 13px; }\r\n#zic-liberare-calculator-v2 .zic2__btn--danger:hover { background: rgba(239,68,68,.15); }\r\n\r\n#zic-liberare-calculator-v2 .zic2__rows { display: flex; flex-direction: column; gap: 10px; }\r\n\r\n#zic-liberare-calculator-v2 .zic2__row { background: var(--zic-bg); border: 1px solid var(--zic-border); border-radius: var(--zic-radius-sm); padding: 14px; transition: border-color var(--zic-transition); }\r\n#zic-liberare-calculator-v2 .zic2__row:hover { border-color: var(--zic-primary-border); }\r\n\r\n#zic-liberare-calculator-v2 .zic2__rowGrid { display: grid; gap: 10px; }\r\n@media (min-width: 640px) {\r\n  #zic-liberare-calculator-v2 .zic2__rowGrid--mp { grid-template-columns: 1.2fr 1fr 1fr auto; align-items: end; }\r\n  #zic-liberare-calculator-v2 .zic2__rowGrid--intr { grid-template-columns: 1fr 1fr 1.3fr auto; align-items: end; }\r\n}\r\n\r\n#zic-liberare-calculator-v2 .zic2__hint { display: flex; align-items: flex-start; gap: 8px; padding: 10px 12px; background: var(--zic-bg); border-radius: var(--zic-radius-xs); font-size: 12px; color: var(--zic-muted); }\r\n#zic-liberare-calculator-v2 .zic2__hint svg { flex-shrink: 0; margin-top: 1px; }\r\n#zic-liberare-calculator-v2 .zic2__hint strong { color: var(--zic-ink-light); }\r\n\r\n#zic-liberare-calculator-v2 .zic2__emptyState { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; padding: 24px; background: var(--zic-bg); border: 2px dashed var(--zic-border); border-radius: var(--zic-radius-sm); color: var(--zic-light); font-size: 13px; text-align: center; }\r\n\r\n#zic-liberare-calculator-v2 .zic2__actions { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 16px; }\r\n#zic-liberare-calculator-v2 .zic2__actions .zic2__btn--primary { flex: 1; min-width: 200px; }\r\n\r\n#zic-liberare-calculator-v2 .zic2__error { margin-bottom: 16px; padding: 12px; background: var(--zic-danger-light); border: 1px solid var(--zic-danger-border); border-radius: var(--zic-radius-xs); color: var(--zic-danger); font-size: 13px; font-weight: 500; }\r\n#zic-liberare-calculator-v2 .zic2__error ul { margin: 8px 0 0 18px; padding: 0; }\r\n#zic-liberare-calculator-v2 .zic2__error li { margin: 4px 0; }\r\n\r\n#zic-liberare-calculator-v2 .zic2__resultCard { border-color: var(--zic-success-border); background: linear-gradient(135deg, rgba(16,185,129,.02), rgba(16,185,129,.06)); }\r\n#zic-liberare-calculator-v2 .zic2__resultCard--no { border-color: var(--zic-danger-border); background: linear-gradient(135deg, rgba(239,68,68,.02), rgba(239,68,68,.06)); }\r\n\r\n#zic-liberare-calculator-v2 .zic2__resultBody { display: flex; flex-direction: column; gap: 16px; }\r\n\r\n#zic-liberare-calculator-v2 .zic2__kpi { background: var(--zic-surface); border: 1px solid var(--zic-border); border-radius: var(--zic-radius-sm); padding: 16px; }\r\n#zic-liberare-calculator-v2 .zic2__kpiLabel { font-size: 12px; font-weight: 600; color: var(--zic-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 6px; }\r\n#zic-liberare-calculator-v2 .zic2__kpiValue { font-size: 22px; font-weight: 800; color: var(--zic-primary-dark); margin: 0; }\r\n#zic-liberare-calculator-v2 .zic2__kpiValue--yes { color: var(--zic-success); }\r\n#zic-liberare-calculator-v2 .zic2__kpiValue--no { color: var(--zic-danger); }\r\n\r\n#zic-liberare-calculator-v2 .zic2__detailsGrid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }\r\n#zic-liberare-calculator-v2 .zic2__detailItem { background: var(--zic-surface); border: 1px solid var(--zic-border); border-radius: var(--zic-radius-xs); padding: 12px; }\r\n#zic-liberare-calculator-v2 .zic2__detailLabel { font-size: 11px; font-weight: 600; color: var(--zic-muted); text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 4px; }\r\n#zic-liberare-calculator-v2 .zic2__detailValue { font-size: 14px; font-weight: 700; color: var(--zic-ink); }\r\n#zic-liberare-calculator-v2 .zic2__detailValue--yes { color: var(--zic-success); }\r\n#zic-liberare-calculator-v2 .zic2__detailValue--no { color: var(--zic-danger); }\r\n\r\n#zic-liberare-calculator-v2 .zic2__disclaimer { display: flex; align-items: flex-start; gap: 10px; padding: 14px; background: var(--zic-bg); border: 1px solid var(--zic-border); border-radius: var(--zic-radius-sm); font-size: 12px; color: var(--zic-muted); line-height: 1.5; margin-bottom: 16px; }\r\n#zic-liberare-calculator-v2 .zic2__disclaimer svg { flex-shrink: 0; color: var(--zic-warning); margin-top: 1px; }\r\n#zic-liberare-calculator-v2 .zic2__disclaimer strong { color: var(--zic-ink-light); }\r\n\r\n#zic-liberare-calculator-v2 .zic2__footer { text-align: center; padding: 8px 0; }\r\n#zic-liberare-calculator-v2 .zic2__footerLink { color: var(--zic-primary-dark); text-decoration: none; font-size: 13px; font-weight: 600; transition: color var(--zic-transition); }\r\n#zic-liberare-calculator-v2 .zic2__footerLink:hover { color: var(--zic-primary); text-decoration: underline; }\r\n\r\n#zic-liberare-calculator-v2 .is-hidden { display: none !important; }\r\n\r\n\/* Small mobile (max 500px) *\/\r\n@media (max-width: 500px) {\r\n  #zic-liberare-calculator-v2 .zic2__actions { flex-direction: column; }\r\n  #zic-liberare-calculator-v2 .zic2__actions .zic2__btn { width: 100%; min-width: unset; }\r\n  #zic-liberare-calculator-v2 .zic2__btnGroup { flex-direction: column; }\r\n  #zic-liberare-calculator-v2 .zic2__btnGroup .zic2__btn { width: 100%; }\r\n  #zic-liberare-calculator-v2 .zic2__grid3 { grid-template-columns: 1fr; }\r\n  #zic-liberare-calculator-v2 .zic2__rowGrid--mp,\r\n  #zic-liberare-calculator-v2 .zic2__rowGrid--intr { grid-template-columns: 1fr; }\r\n}\r\n\r\n@media (min-width: 640px) { #zic-liberare-calculator-v2 .zic2__wrap { padding: 24px; } #zic-liberare-calculator-v2 .zic2__title { font-size: 24px; } }\r\n@media (min-width: 768px) { #zic-liberare-calculator-v2 .zic2__card { padding: 24px; } #zic-liberare-calculator-v2 .zic2__brandbar { padding: 24px; } #zic-liberare-calculator-v2 .zic2__mark { width: 56px; height: 56px; } #zic-liberare-calculator-v2 .zic2__title { font-size: 26px; } }\r\n@media (min-width: 1024px) { #zic-liberare-calculator-v2 .zic2__wrap { max-width: 900px; } }\r\n\r\n@media print {\r\n  #zic-liberare-calculator-v2 .zic2__btnGroup, #zic-liberare-calculator-v2 .zic2__actions, #zic-liberare-calculator-v2 .zic2__hint,\r\n  #zic-liberare-calculator-v2 .zic2__emptyState, #zic-liberare-calculator-v2 .zic2__footer, #zic-liberare-calculator-v2 .zic2__btn--danger { display: none !important; }\r\n  #zic-liberare-calculator-v2 .zic2__card { box-shadow: none; border: 1px solid #ddd; break-inside: avoid; }\r\n}\r\n<\/style>\r\n\r\n<script>\r\n(function() {\r\n  'use strict';\r\n  const ROOT_ID = 'zic-liberare-calculator-v2';\r\n  const MS_DAY = 86400000;\r\n  const root = document.getElementById(ROOT_ID);\r\n  if (!root) return;\r\n\r\n  \/\/ === SECURITY: HTML Escape Function to prevent XSS ===\r\n  function escapeHtml(str) {\r\n    if (str === null || str === undefined) return '';\r\n    const text = String(str);\r\n    const div = document.createElement('div');\r\n    div.textContent = text;\r\n    return div.innerHTML;\r\n  }\r\n\r\n  \/\/ === SECURITY: Sanitize numeric input ===\r\n  function sanitizeNumber(value, min, max) {\r\n    const num = parseInt(value, 10);\r\n    if (!isFinite(num)) return min;\r\n    return Math.max(min, Math.min(max, num));\r\n  }\r\n\r\n  \/\/ === SECURITY: Validate date format (YYYY-MM-DD) with proper day validation ===\r\n  function isValidDateFormat(dateStr) {\r\n    if (!dateStr || typeof dateStr !== 'string') return false;\r\n    const regex = \/^\\d{4}-\\d{2}-\\d{2}$\/;\r\n    if (!regex.test(dateStr)) return false;\r\n    const [y, m, d] = dateStr.split('-').map(Number);\r\n    if (y < 1900 || y > 2100 || m < 1 || m > 12 || d < 1) return false;\r\n    \/\/ Validate day based on month and year (leap year aware)\r\n    const daysInMonth = [31, (y % 4 === 0 && (y % 100 !== 0 || y % 400 === 0)) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\r\n    if (d > daysInMonth[m - 1]) return false;\r\n    return true;\r\n  }\r\n\r\n  \/\/ === SECURITY: Sanitize text input (for motiv field) - allows Romanian diacritics ===\r\n  function sanitizeText(str, maxLength) {\r\n    if (str === null || str === undefined) return '';\r\n    \/\/ Only remove dangerous HTML characters, keep Romanian diacritics (\u0103\u00e2\u00ee\u0219\u021b)\r\n    return String(str).substring(0, maxLength || 200).replace(\/[<>\"'&]\/g, function(c) {\r\n      var entities = { '<': '&lt;', '>': '&gt;', '\"': '&quot;', \"'\": '&#39;', '&': '&amp;' };\r\n      return entities[c] || c;\r\n    });\r\n  }\r\n\r\n  \/\/ Helper to decode sanitized text for display\r\n  function displayText(str) {\r\n    if (!str) return '';\r\n    return String(str)\r\n      .replace(\/&lt;\/g, '<')\r\n      .replace(\/&gt;\/g, '>')\r\n      .replace(\/&quot;\/g, '\"')\r\n      .replace(\/&#39;\/g, \"'\")\r\n      .replace(\/&amp;\/g, '&');\r\n  }\r\n\r\n  const $ = (s) => root.querySelector(s);\r\n  const els = {\r\n    errors: $('[data-errors]'), resultCard: $('[data-result]'), resultIcon: $('[data-result-icon]'),\r\n    resultContent: $('[data-result-content]'), mpList: $('[data-list=\"mp\"]'), intrList: $('[data-list=\"intr\"]'),\r\n    mpEmpty: $('[data-empty=\"mp\"]'), intrEmpty: $('[data-empty=\"intr\"]'), onlyInch: $('[data-section=\"onlyInch\"]'),\r\n    liveEffective: $('[data-live=\"effective\"]'), liveCredit: $('[data-live=\"credit\"]'),\r\n    liveMpTotal: $('[data-live=\"mpTotal\"]'), liveIntrTotal: $('[data-live=\"intrTotal\"]')\r\n  };\r\n  let state = { mp: [], intr: [], lastResult: null };\r\n\r\n  \/\/ === SECURITY: Limit array sizes to prevent memory attacks ===\r\n  const MAX_MP_ENTRIES = 50;\r\n  const MAX_INTR_ENTRIES = 50;\r\n\r\n  function getField(n) { return $('[data-field=\"' + n + '\"]'); }\r\n  function numVal(el) {\r\n    if (!el || !el.value) return 0;\r\n    var n = parseInt(el.value, 10);\r\n    return isFinite(n) && n >= 0 ? n : 0;\r\n  }\r\n  function parseISO(v) {\r\n    if (!isValidDateFormat(v)) return null;\r\n    const [y, m, d] = v.split('-').map(Number);\r\n    return y && m && d ? Math.floor(Date.UTC(y, m - 1, d) \/ MS_DAY) : null;\r\n  }\r\n  function dayToISO(day) {\r\n    const sanitizedDay = sanitizeNumber(day, 0, 100000000);\r\n    const dt = new Date(sanitizedDay * MS_DAY);\r\n    return dt.getUTCFullYear() + '-' + String(dt.getUTCMonth() + 1).padStart(2, '0') + '-' + String(dt.getUTCDate()).padStart(2, '0');\r\n  }\r\n  function todayDay() { const now = new Date(); return Math.floor(Date.UTC(now.getFullYear(), now.getMonth(), now.getDate()) \/ MS_DAY); }\r\n  function formatDay(day) {\r\n    if (day === null) return '-';\r\n    const sanitizedDay = sanitizeNumber(day, 0, 100000000);\r\n    const dt = new Date(sanitizedDay * MS_DAY);\r\n    return String(dt.getUTCDate()).padStart(2, '0') + '.' + String(dt.getUTCMonth() + 1).padStart(2, '0') + '.' + dt.getUTCFullYear();\r\n  }\r\n  function addYears(day, y) {\r\n    const sanitizedDay = sanitizeNumber(day, 0, 100000000);\r\n    const sanitizedY = sanitizeNumber(y, 0, 100);\r\n    const dt = new Date(sanitizedDay * MS_DAY);\r\n    dt.setUTCFullYear(dt.getUTCFullYear() + sanitizedY);\r\n    return Math.floor(dt.getTime() \/ MS_DAY);\r\n  }\r\n\r\n  \/\/ === SECURITY: Safe DOM manipulation for errors ===\r\n  function showErrors(msgs) {\r\n    if (!msgs?.length) {\r\n      els.errors.classList.add('is-hidden');\r\n      return;\r\n    }\r\n    els.errors.classList.remove('is-hidden');\r\n\r\n    \/\/ Clear previous content safely\r\n    while (els.errors.firstChild) {\r\n      els.errors.removeChild(els.errors.firstChild);\r\n    }\r\n\r\n    const header = document.createTextNode('Corecta\u021bi:');\r\n    els.errors.appendChild(header);\r\n\r\n    const ul = document.createElement('ul');\r\n    msgs.forEach(function(m) {\r\n      const li = document.createElement('li');\r\n      li.textContent = m; \/\/ Safe: uses textContent, not innerHTML\r\n      ul.appendChild(li);\r\n    });\r\n    els.errors.appendChild(ul);\r\n    els.errors.scrollIntoView({ behavior: 'smooth', block: 'start' });\r\n  }\r\n\r\n  function hideErrors() {\r\n    els.errors.classList.add('is-hidden');\r\n    while (els.errors.firstChild) {\r\n      els.errors.removeChild(els.errors.firstChild);\r\n    }\r\n  }\r\n\r\n  function setModeVis() {\r\n    var isInch = getField('tip')?.value === 'inchisoare';\r\n    if (els.onlyInch) els.onlyInch.style.display = isInch ? '' : 'none';\r\n    \/\/ Clear irrelevant fields when switching to deten\u021biune pe via\u021b\u0103\r\n    if (!isInch) {\r\n      var regimField = getField('regim');\r\n      if (regimField && regimField.value) {\r\n        regimField.value = '';\r\n      }\r\n    }\r\n  }\r\n  function lockManual() { const has = !!getField('dataStart')?.value; const el = getField('zileEfective'); if (el) el.disabled = has; }\r\n  function updateEmpty() { els.mpEmpty?.classList.toggle('is-hidden', state.mp.length > 0); els.intrEmpty?.classList.toggle('is-hidden', state.intr.length > 0); }\r\n\r\n  function mergeSum(intervals) {\r\n    const arr = intervals.filter(function(i) { return i.s !== null && i.e !== null && i.e >= i.s; }).sort(function(a, b) { return a.s - b.s; });\r\n    if (!arr.length) return 0;\r\n    const m = [];\r\n    for (var idx = 0; idx < arr.length; idx++) {\r\n      var c = arr[idx];\r\n      var l = m[m.length - 1];\r\n      if (!l) m.push({ s: c.s, e: c.e });\r\n      else if (c.s <= l.e + 1) l.e = Math.max(l.e, c.e);\r\n      else m.push({ s: c.s, e: c.e });\r\n    }\r\n    return m.reduce(function(sum, i) { return sum + (i.e - i.s + 1); }, 0);\r\n  }\r\n\r\n  function computeSums() {\r\n    return {\r\n      mpSum: mergeSum(state.mp.map(function(i) { return { s: parseISO(i.start), e: parseISO(i.end) }; })),\r\n      intrSum: mergeSum(state.intr.map(function(i) { return { s: parseISO(i.start), e: parseISO(i.end) }; }))\r\n    };\r\n  }\r\n\r\n  function computeCredits() {\r\n    var w = getField('works20');\r\n    return {\r\n      total: Math.floor(numVal(getField('muncaRem')) \/ 4) +\r\n             Math.floor(numVal(getField('muncaNerem')) \/ 3) +\r\n             Math.floor(numVal(getField('nopti')) \/ 2) +\r\n             numVal(getField('anScolar')) * 30 +\r\n             numVal(getField('curs')) * 20 +\r\n             (w?.checked ? 20 : 0) +\r\n             numVal(getField('recurs'))\r\n    };\r\n  }\r\n\r\n  function computeEff(mpSum, intrSum) {\r\n    var startISO = getField('dataStart')?.value || '';\r\n    var manual = numVal(getField('zileEfective'));\r\n    if (startISO) {\r\n      var sDay = parseISO(startISO);\r\n      var tDay = todayDay();\r\n      if (sDay === null || sDay > tDay) return { effective: 0, invalidStart: true };\r\n      return { effective: Math.max(0, tDay - sDay + 1 - intrSum) + mpSum, invalidStart: false };\r\n    }\r\n    return { effective: manual + mpSum, invalidStart: false };\r\n  }\r\n\r\n  \/\/ === SECURITY: Safe DOM creation for dynamic rows ===\r\n  function createMpRow(it, i) {\r\n    var r = document.createElement('div');\r\n    r.className = 'zic2__row';\r\n\r\n    var rowGrid = document.createElement('div');\r\n    rowGrid.className = 'zic2__rowGrid zic2__rowGrid--mp';\r\n\r\n    \/\/ Type field\r\n    var typeField = document.createElement('div');\r\n    typeField.className = 'zic2__field';\r\n    var typeLabel = document.createElement('label');\r\n    typeLabel.className = 'zic2__label';\r\n    typeLabel.textContent = 'Tip';\r\n    var typeSelect = document.createElement('select');\r\n    typeSelect.className = 'zic2__select';\r\n    typeSelect.setAttribute('data-mp-field', 'type');\r\n    typeSelect.setAttribute('data-mp-index', i);\r\n\r\n    var options = [\r\n      { value: 'retinere', text: 'Re\u021binere' },\r\n      { value: 'arest_preventiv', text: 'Arest preventiv' },\r\n      { value: 'arest_domiciliu', text: 'Arest la domiciliu' }\r\n    ];\r\n    options.forEach(function(opt) {\r\n      var option = document.createElement('option');\r\n      option.value = opt.value;\r\n      option.textContent = opt.text;\r\n      if (it.type === opt.value) option.selected = true;\r\n      typeSelect.appendChild(option);\r\n    });\r\n    typeField.appendChild(typeLabel);\r\n    typeField.appendChild(typeSelect);\r\n\r\n    \/\/ Start date field\r\n    var startField = document.createElement('div');\r\n    startField.className = 'zic2__field';\r\n    var startLabel = document.createElement('label');\r\n    startLabel.className = 'zic2__label';\r\n    startLabel.textContent = 'Data \u00eenceput';\r\n    var startInput = document.createElement('input');\r\n    startInput.className = 'zic2__input';\r\n    startInput.type = 'date';\r\n    startInput.value = it.start || '';\r\n    startInput.setAttribute('data-mp-field', 'start');\r\n    startInput.setAttribute('data-mp-index', i);\r\n    startField.appendChild(startLabel);\r\n    startField.appendChild(startInput);\r\n\r\n    \/\/ End date field\r\n    var endField = document.createElement('div');\r\n    endField.className = 'zic2__field';\r\n    var endLabel = document.createElement('label');\r\n    endLabel.className = 'zic2__label';\r\n    endLabel.textContent = 'Data sf\u00e2r\u0219it';\r\n    var endInput = document.createElement('input');\r\n    endInput.className = 'zic2__input';\r\n    endInput.type = 'date';\r\n    endInput.value = it.end || '';\r\n    endInput.setAttribute('data-mp-field', 'end');\r\n    endInput.setAttribute('data-mp-index', i);\r\n    endField.appendChild(endLabel);\r\n    endField.appendChild(endInput);\r\n\r\n    \/\/ Delete button\r\n    var deleteBtn = document.createElement('button');\r\n    deleteBtn.type = 'button';\r\n    deleteBtn.className = 'zic2__btn zic2__btn--danger';\r\n    deleteBtn.setAttribute('data-action', 'deleteMp');\r\n    deleteBtn.setAttribute('data-mp-index', i);\r\n    deleteBtn.textContent = '\u0218terge';\r\n\r\n    rowGrid.appendChild(typeField);\r\n    rowGrid.appendChild(startField);\r\n    rowGrid.appendChild(endField);\r\n    rowGrid.appendChild(deleteBtn);\r\n    r.appendChild(rowGrid);\r\n\r\n    return r;\r\n  }\r\n\r\n  function createIntrRow(it, i) {\r\n    var r = document.createElement('div');\r\n    r.className = 'zic2__row';\r\n\r\n    var rowGrid = document.createElement('div');\r\n    rowGrid.className = 'zic2__rowGrid zic2__rowGrid--intr';\r\n\r\n    \/\/ Start date field\r\n    var startField = document.createElement('div');\r\n    startField.className = 'zic2__field';\r\n    var startLabel = document.createElement('label');\r\n    startLabel.className = 'zic2__label';\r\n    startLabel.textContent = 'Data \u00eenceput';\r\n    var startInput = document.createElement('input');\r\n    startInput.className = 'zic2__input';\r\n    startInput.type = 'date';\r\n    startInput.value = it.start || '';\r\n    startInput.setAttribute('data-intr-field', 'start');\r\n    startInput.setAttribute('data-intr-index', i);\r\n    startField.appendChild(startLabel);\r\n    startField.appendChild(startInput);\r\n\r\n    \/\/ End date field\r\n    var endField = document.createElement('div');\r\n    endField.className = 'zic2__field';\r\n    var endLabel = document.createElement('label');\r\n    endLabel.className = 'zic2__label';\r\n    endLabel.textContent = 'Data sf\u00e2r\u0219it';\r\n    var endInput = document.createElement('input');\r\n    endInput.className = 'zic2__input';\r\n    endInput.type = 'date';\r\n    endInput.value = it.end || '';\r\n    endInput.setAttribute('data-intr-field', 'end');\r\n    endInput.setAttribute('data-intr-index', i);\r\n    endField.appendChild(endLabel);\r\n    endField.appendChild(endInput);\r\n\r\n    \/\/ Motiv field\r\n    var motivField = document.createElement('div');\r\n    motivField.className = 'zic2__field';\r\n    var motivLabel = document.createElement('label');\r\n    motivLabel.className = 'zic2__label';\r\n    motivLabel.textContent = 'Motiv';\r\n    var motivInput = document.createElement('input');\r\n    motivInput.className = 'zic2__input';\r\n    motivInput.type = 'text';\r\n    motivInput.value = displayText(it.motiv) || '';\r\n    motivInput.setAttribute('data-intr-field', 'motiv');\r\n    motivInput.setAttribute('data-intr-index', i);\r\n    motivInput.placeholder = 'ex: boal\u0103';\r\n    motivInput.maxLength = 200;\r\n    motivField.appendChild(motivLabel);\r\n    motivField.appendChild(motivInput);\r\n\r\n    \/\/ Delete button\r\n    var deleteBtn = document.createElement('button');\r\n    deleteBtn.type = 'button';\r\n    deleteBtn.className = 'zic2__btn zic2__btn--danger';\r\n    deleteBtn.setAttribute('data-action', 'deleteIntr');\r\n    deleteBtn.setAttribute('data-intr-index', i);\r\n    deleteBtn.textContent = '\u0218terge';\r\n\r\n    rowGrid.appendChild(startField);\r\n    rowGrid.appendChild(endField);\r\n    rowGrid.appendChild(motivField);\r\n    rowGrid.appendChild(deleteBtn);\r\n    r.appendChild(rowGrid);\r\n\r\n    return r;\r\n  }\r\n\r\n  function renderLists() {\r\n    \/\/ Clear lists safely\r\n    while (els.mpList.firstChild) {\r\n      els.mpList.removeChild(els.mpList.firstChild);\r\n    }\r\n    while (els.intrList.firstChild) {\r\n      els.intrList.removeChild(els.intrList.firstChild);\r\n    }\r\n\r\n    state.mp.forEach(function(it, i) {\r\n      els.mpList.appendChild(createMpRow(it, i));\r\n    });\r\n    state.intr.forEach(function(it, i) {\r\n      els.intrList.appendChild(createIntrRow(it, i));\r\n    });\r\n    updateEmpty();\r\n    updateLive();\r\n  }\r\n\r\n  function updateLive() {\r\n    setModeVis();\r\n    lockManual();\r\n    var s = computeSums(), c = computeCredits(), e = computeEff(s.mpSum, s.intrSum);\r\n    if (els.liveMpTotal) els.liveMpTotal.textContent = s.mpSum;\r\n    if (els.liveIntrTotal) els.liveIntrTotal.textContent = s.intrSum;\r\n    if (els.liveCredit) els.liveCredit.textContent = c.total;\r\n    if (els.liveEffective) els.liveEffective.textContent = e.effective;\r\n  }\r\n\r\n  function calculate() {\r\n    hideErrors();\r\n    els.resultCard.classList.add('is-hidden');\r\n    var errors = [], tip = getField('tip')?.value || 'inchisoare';\r\n\r\n    \/\/ Validate age for both types\r\n    if (!getField('varsta')?.value?.trim()) errors.push('Introduce\u021bi v\u00e2rsta.');\r\n    var varsta = sanitizeNumber(numVal(getField('varsta')), 0, 150);\r\n\r\n    \/\/ Validate execution data\r\n    if (!getField('dataStart')?.value && !getField('zileEfective')?.value?.trim()) errors.push('Completa\u021bi data sau zilele executate.');\r\n\r\n    var durataZile = 0, regim = '';\r\n\r\n    \/\/ For \u00eenchisoare, validate duration and regime\r\n    if (tip === 'inchisoare') {\r\n      durataZile = sanitizeNumber(numVal(getField('ani')), 0, 100) * 365 +\r\n                   sanitizeNumber(numVal(getField('luni')), 0, 11) * 30 +\r\n                   sanitizeNumber(numVal(getField('zileDur')), 0, 29);\r\n      if (durataZile <= 0) errors.push('Introduce\u021bi durata pedepsei.');\r\n      regim = getField('regim')?.value || '';\r\n      if (!regim) errors.push('Selecta\u021bi regimul.');\r\n    }\r\n    \/\/ For deten\u021biune pe via\u021b\u0103, no additional validation needed (no duration\/regime)\r\n\r\n    if (errors.length) { showErrors(errors); return; }\r\n\r\n    var s = computeSums(), c = computeCredits(), e = computeEff(s.mpSum, s.intrSum);\r\n    if (e.invalidStart) { showErrors(['Data de start invalid\u0103 sau \u00een viitor.']); return; }\r\n    var zileEf = e.effective, zileCa = c.total, zileCo = zileEf + zileCa, tDay = todayDay();\r\n    var r;\r\n    if (tip === 'detentiune_viata') {\r\n      var sDay = parseISO(getField('dataStart')?.value || '');\r\n      \/\/ Calculate 20 years in days - use actual date calculation if start date exists\r\n      var prag;\r\n      if (sDay !== null) {\r\n        \/\/ Calculate exact 20 years from start date\r\n        var startDate = new Date(sDay * MS_DAY);\r\n        var endDate = new Date(startDate);\r\n        endDate.setUTCFullYear(endDate.getUTCFullYear() + 20);\r\n        prag = Math.floor((endDate.getTime() - startDate.getTime()) \/ MS_DAY);\r\n      } else {\r\n        \/\/ Approximate: 20 years * 365.25 days (accounting for leap years)\r\n        prag = Math.floor(20 * 365.25);\r\n      }\r\n      r = {\r\n        tip: tip,\r\n        eligibil: zileEf >= prag,\r\n        eligDay: tDay + Math.max(0, prag - zileEf),\r\n        zileEfective: zileEf,\r\n        zileCastig: zileCa,\r\n        zileConsiderate: zileCo,\r\n        zileRamase: Math.max(0, prag - zileEf),\r\n        pragEfectivLabel: prag + ' zile (~20 ani)'\r\n      };\r\n    }\r\n    else {\r\n      var p10 = durataZile > 3650, a60 = varsta >= 60;\r\n      var fr = a60 ? (p10 ? 2\/3 : 1\/2) : (p10 ? 3\/4 : 2\/3);\r\n      var pragCo = Math.ceil(durataZile * fr);\r\n      if (!a60 && p10) pragCo = Math.min(pragCo, 7300);\r\n      var pragEfMin = Math.ceil(durataZile * (a60 ? (p10 ? 1\/2 : 1\/3) : (p10 ? 2\/3 : 1\/2)));\r\n      var regOk = regim === 'semideschis' || regim === 'deschis';\r\n      var defCo = Math.max(0, pragCo - zileCo), defEf = Math.max(0, pragEfMin - zileEf);\r\n      var zileRam = Math.max(defCo, defEf);\r\n      var restZ = Math.max(0, durataZile - zileCo - zileRam);\r\n      r = {\r\n        tip: tip,\r\n        eligibil: defCo === 0 && defEf === 0 && regOk,\r\n        eligDay: tDay + zileRam,\r\n        zileEfective: zileEf,\r\n        zileCastig: zileCa,\r\n        zileConsiderate: zileCo,\r\n        zileRamase: zileRam,\r\n        fractieLabel: (fr * 100).toFixed(0) + '%',\r\n        pragConsiderat: pragCo,\r\n        pragEfectivMin: pragEfMin,\r\n        regimOk: regOk,\r\n        restLabel: Math.floor(restZ \/ 365) + ' ani, ' + Math.floor((restZ % 365) \/ 30) + ' luni, ' + (restZ - Math.floor(restZ \/ 365) * 365 - Math.floor((restZ % 365) \/ 30) * 30) + ' zile',\r\n        necesitaMasuri101: restZ >= 730\r\n      };\r\n    }\r\n    state.lastResult = r;\r\n    renderResult(r);\r\n  }\r\n\r\n  \/\/ === SECURITY: Safe DOM-based result rendering ===\r\n  function renderResult(r) {\r\n    els.resultIcon.className = 'zic2__cardIcon zic2__cardIcon--' + (r.eligibil ? 'green' : 'red');\r\n\r\n    \/\/ Clear and rebuild icon safely\r\n    while (els.resultIcon.firstChild) {\r\n      els.resultIcon.removeChild(els.resultIcon.firstChild);\r\n    }\r\n\r\n    var svg = document.createElementNS('http:\/\/www.w3.org\/2000\/svg', 'svg');\r\n    svg.setAttribute('width', '18');\r\n    svg.setAttribute('height', '18');\r\n    svg.setAttribute('viewBox', '0 0 24 24');\r\n    svg.setAttribute('fill', 'none');\r\n    svg.setAttribute('stroke', 'currentColor');\r\n    svg.setAttribute('stroke-width', '2.5');\r\n\r\n    if (r.eligibil) {\r\n      var polyline = document.createElementNS('http:\/\/www.w3.org\/2000\/svg', 'polyline');\r\n      polyline.setAttribute('points', '20 6 9 17 4 12');\r\n      svg.appendChild(polyline);\r\n    } else {\r\n      var path = document.createElementNS('http:\/\/www.w3.org\/2000\/svg', 'path');\r\n      path.setAttribute('d', 'M18 6L6 18M6 6l12 12');\r\n      svg.appendChild(path);\r\n    }\r\n    els.resultIcon.appendChild(svg);\r\n\r\n    els.resultCard.classList.toggle('zic2__resultCard--no', !r.eligibil);\r\n\r\n    \/\/ Clear result content safely\r\n    while (els.resultContent.firstChild) {\r\n      els.resultContent.removeChild(els.resultContent.firstChild);\r\n    }\r\n\r\n    \/\/ Create KPI for eligibility\r\n    var kpi1 = createKpiElement('Eligibil pentru liberare condi\u021bionat\u0103?', r.eligibil ? 'Da' : 'Nu', r.eligibil);\r\n    els.resultContent.appendChild(kpi1);\r\n\r\n    \/\/ Create KPI for estimated date\r\n    var kpi2 = createKpiElement('Data estimat\u0103 eligibilitate', formatDay(r.eligDay), null);\r\n    els.resultContent.appendChild(kpi2);\r\n\r\n    \/\/ Create details grid\r\n    var detailsGrid = document.createElement('div');\r\n    detailsGrid.className = 'zic2__detailsGrid';\r\n\r\n    \/\/ Helper to safely display numeric values\r\n    function safeNum(val) {\r\n      return isFinite(val) ? val : 0;\r\n    }\r\n\r\n    var details = [\r\n      { label: 'Zile executate efectiv', value: safeNum(r.zileEfective) },\r\n      { label: 'Zile c\u00e2\u0219tig', value: safeNum(r.zileCastig) },\r\n      { label: 'Total zile considerate', value: safeNum(r.zileConsiderate) },\r\n      { label: 'Zile r\u0103mase', value: safeNum(r.zileRamase) }\r\n    ];\r\n\r\n    if (r.tip === 'detentiune_viata') {\r\n      details.push({ label: 'Prag (efectiv)', value: r.pragEfectivLabel || '-' });\r\n      details.push({ label: 'Termen supraveghere', value: '10 ani' });\r\n    } else {\r\n      details.push({ label: 'Frac\u021bie', value: r.fractieLabel || '-' });\r\n      details.push({ label: 'Prag considerate', value: safeNum(r.pragConsiderat) });\r\n      details.push({ label: 'Minim efectiv', value: safeNum(r.pragEfectivMin) });\r\n      details.push({ label: 'Regim ok?', value: r.regimOk ? 'Da' : 'Nu', isBoolean: true, boolValue: r.regimOk });\r\n      details.push({ label: 'Termen supraveghere', value: r.restLabel || '-' });\r\n      details.push({ label: 'M\u0103suri art. 101', value: r.necesitaMasuri101 ? 'Da' : 'Nu' });\r\n    }\r\n\r\n    details.forEach(function(d) {\r\n      var item = document.createElement('div');\r\n      item.className = 'zic2__detailItem';\r\n\r\n      var label = document.createElement('div');\r\n      label.className = 'zic2__detailLabel';\r\n      label.textContent = d.label;\r\n\r\n      var value = document.createElement('div');\r\n      value.className = 'zic2__detailValue';\r\n      if (d.isBoolean) {\r\n        value.classList.add(d.boolValue ? 'zic2__detailValue--yes' : 'zic2__detailValue--no');\r\n      }\r\n      value.textContent = d.value;\r\n\r\n      item.appendChild(label);\r\n      item.appendChild(value);\r\n      detailsGrid.appendChild(item);\r\n    });\r\n\r\n    els.resultContent.appendChild(detailsGrid);\r\n    els.resultCard.classList.remove('is-hidden');\r\n    setTimeout(function() { els.resultCard.scrollIntoView({ behavior: 'smooth', block: 'nearest' }); }, 100);\r\n  }\r\n\r\n  function createKpiElement(labelText, valueText, isPositive) {\r\n    var kpi = document.createElement('div');\r\n    kpi.className = 'zic2__kpi';\r\n\r\n    var label = document.createElement('div');\r\n    label.className = 'zic2__kpiLabel';\r\n    label.textContent = labelText;\r\n\r\n    var value = document.createElement('p');\r\n    value.className = 'zic2__kpiValue';\r\n    if (isPositive === true) value.classList.add('zic2__kpiValue--yes');\r\n    else if (isPositive === false) value.classList.add('zic2__kpiValue--no');\r\n    value.textContent = valueText;\r\n\r\n    kpi.appendChild(label);\r\n    kpi.appendChild(value);\r\n    return kpi;\r\n  }\r\n\r\n  function resetAll() {\r\n    hideErrors();\r\n    els.resultCard.classList.add('is-hidden');\r\n    state = { mp: [], intr: [], lastResult: null };\r\n    ['tip', 'varsta', 'ani', 'luni', 'zileDur', 'regim', 'recurs', 'dataStart', 'zileEfective', 'muncaRem', 'muncaNerem', 'nopti', 'anScolar', 'curs'].forEach(function(n) {\r\n      var el = getField(n);\r\n      if (el) el.value = n === 'tip' ? 'inchisoare' : '';\r\n    });\r\n    var w = getField('works20');\r\n    if (w) w.checked = false;\r\n    renderLists();\r\n  }\r\n\r\n  function fillExample() {\r\n    resetAll();\r\n    getField('tip').value = 'inchisoare';\r\n    getField('varsta').value = String(25 + Math.floor(Math.random() * 35));\r\n    getField('ani').value = String(3 + Math.floor(Math.random() * 7));\r\n    getField('luni').value = String(Math.floor(Math.random() * 12));\r\n    getField('zileDur').value = String(Math.floor(Math.random() * 30));\r\n    getField('regim').value = Math.random() < 0.6 ? 'semideschis' : 'deschis';\r\n    getField('recurs').value = String(Math.floor(Math.random() * 80));\r\n    getField('muncaRem').value = String(Math.floor(Math.random() * 350));\r\n    getField('muncaNerem').value = String(Math.floor(Math.random() * 150));\r\n    getField('nopti').value = String(Math.floor(Math.random() * 60));\r\n    getField('anScolar').value = String(Math.floor(Math.random() * 3));\r\n    getField('curs').value = String(Math.floor(Math.random() * 3));\r\n    var tDay = todayDay();\r\n    var sDay = tDay - 100 - Math.floor(Math.random() * 1200);\r\n    getField('dataStart').value = dayToISO(sDay);\r\n    if (Math.random() < 0.5) {\r\n      var mpDays = 10 + Math.floor(Math.random() * 80);\r\n      state.mp.push({ type: 'arest_preventiv', start: dayToISO(sDay - mpDays), end: dayToISO(sDay - 1) });\r\n    }\r\n    renderLists();\r\n  }\r\n\r\n  \/\/ === SECURITY: Safe PDF export with escaped content ===\r\n  function exportPDF() {\r\n    if (!state.lastResult) {\r\n      alert('Calculeaz\u0103 mai \u00eent\u00e2i rezultatul.');\r\n      return;\r\n    }\r\n    var w = window.open('', '_blank');\r\n    if (!w) {\r\n      alert('Permite pop-up-urile.');\r\n      return;\r\n    }\r\n    var r = state.lastResult;\r\n    var date = new Date().toLocaleDateString('ro-RO', { year: 'numeric', month: 'long', day: 'numeric' });\r\n\r\n    \/\/ Build PDF content with escaped values\r\n    var doc = w.document;\r\n    doc.open();\r\n    doc.write('<!DOCTYPE html><html lang=\"ro\"><head><meta charset=\"UTF-8\"><title>Raport Liberare Condi\u021bionat\u0103 - ZIC Legal<\/title>');\r\n    doc.write('<style>*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,\\'Segoe UI\\',Roboto,sans-serif;max-width:700px;margin:0 auto;padding:40px 30px;color:#1F2937;line-height:1.6}.header{border-bottom:3px solid #8A88FF;padding-bottom:20px;margin-bottom:30px}.header h1{color:#6F6CFF;font-size:24px;margin-bottom:5px}.header p{color:#6B7280;font-size:14px}.kpi{background:#F9FAFB;border-radius:12px;padding:20px;margin-bottom:20px;text-align:center}.kpi-label{font-size:12px;text-transform:uppercase;color:#6B7280;margin-bottom:8px}.kpi-value{font-size:28px;font-weight:800;color:#6F6CFF}.kpi-value.yes{color:#10B981}.kpi-value.no{color:#EF4444}.grid{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin-bottom:20px}.item{background:#F9FAFB;border-radius:8px;padding:12px}.item-label{font-size:11px;text-transform:uppercase;color:#6B7280;margin-bottom:4px}.item-value{font-size:14px;font-weight:700;color:#1F2937}.item-value.yes{color:#10B981}.item-value.no{color:#EF4444}.footer{margin-top:40px;padding-top:20px;border-top:1px solid #E5E7EB;text-align:center;color:#6B7280;font-size:12px}.footer a{color:#6F6CFF;text-decoration:none}.disclaimer{margin-top:30px;padding:15px;background:#F3F4F6;border-radius:8px;font-size:11px;color:#6B7280}@media print{body{padding:20px}}<\/style>');\r\n    doc.write('<\/head><body>');\r\n    doc.write('<div class=\"header\"><h1>Calculator Liberare Condi\u021bionat\u0103<\/h1><p>Raport generat la ' + escapeHtml(date) + '<\/p><\/div>');\r\n    doc.write('<div class=\"kpi\"><div class=\"kpi-label\">Eligibil?<\/div><div class=\"kpi-value ' + (r.eligibil ? 'yes' : 'no') + '\">' + (r.eligibil ? 'Da' : 'Nu') + '<\/div><\/div>');\r\n    doc.write('<div class=\"kpi\"><div class=\"kpi-label\">Data estimat\u0103<\/div><div class=\"kpi-value\">' + escapeHtml(formatDay(r.eligDay)) + '<\/div><\/div>');\r\n    doc.write('<div class=\"grid\">');\r\n    doc.write('<div class=\"item\"><div class=\"item-label\">Zile executate<\/div><div class=\"item-value\">' + escapeHtml(String(r.zileEfective)) + '<\/div><\/div>');\r\n    doc.write('<div class=\"item\"><div class=\"item-label\">Zile c\u00e2\u0219tig<\/div><div class=\"item-value\">' + escapeHtml(String(r.zileCastig)) + '<\/div><\/div>');\r\n    doc.write('<div class=\"item\"><div class=\"item-label\">Total considerate<\/div><div class=\"item-value\">' + escapeHtml(String(r.zileConsiderate)) + '<\/div><\/div>');\r\n    doc.write('<div class=\"item\"><div class=\"item-label\">Zile r\u0103mase<\/div><div class=\"item-value\">' + escapeHtml(String(r.zileRamase)) + '<\/div><\/div>');\r\n\r\n    if (r.tip === 'detentiune_viata') {\r\n      doc.write('<div class=\"item\"><div class=\"item-label\">Prag<\/div><div class=\"item-value\">' + escapeHtml(r.pragEfectivLabel) + '<\/div><\/div>');\r\n      doc.write('<div class=\"item\"><div class=\"item-label\">Supraveghere<\/div><div class=\"item-value\">10 ani<\/div><\/div>');\r\n    } else {\r\n      doc.write('<div class=\"item\"><div class=\"item-label\">Frac\u021bie<\/div><div class=\"item-value\">' + escapeHtml(r.fractieLabel) + '<\/div><\/div>');\r\n      doc.write('<div class=\"item\"><div class=\"item-label\">Prag considerate<\/div><div class=\"item-value\">' + escapeHtml(String(r.pragConsiderat)) + '<\/div><\/div>');\r\n      doc.write('<div class=\"item\"><div class=\"item-label\">Minim efectiv<\/div><div class=\"item-value\">' + escapeHtml(String(r.pragEfectivMin)) + '<\/div><\/div>');\r\n      doc.write('<div class=\"item\"><div class=\"item-label\">Regim ok<\/div><div class=\"item-value ' + (r.regimOk ? 'yes' : 'no') + '\">' + (r.regimOk ? 'Da' : 'Nu') + '<\/div><\/div>');\r\n      doc.write('<div class=\"item\"><div class=\"item-label\">Supraveghere<\/div><div class=\"item-value\">' + escapeHtml(r.restLabel) + '<\/div><\/div>');\r\n      doc.write('<div class=\"item\"><div class=\"item-label\">M\u0103suri 101<\/div><div class=\"item-value\">' + (r.necesitaMasuri101 ? 'Da' : 'Nu') + '<\/div><\/div>');\r\n    }\r\n\r\n    doc.write('<\/div>');\r\n    doc.write('<div class=\"disclaimer\"><strong>Disclaimer:<\/strong> Acest raport este orientativ.<\/div>');\r\n    doc.write('<div class=\"footer\"><p>Generat cu Calculator Liberare Condi\u021bionat\u0103<\/p><p><a href=\"https:\/\/zic.legal\">ZIC Legal<\/a><\/p><\/div>');\r\n    doc.write('<\/body><\/html>');\r\n    doc.close();\r\n    w.focus();\r\n    setTimeout(function() { w.print(); }, 300);\r\n  }\r\n\r\n  root.addEventListener('click', function(e) {\r\n    var b = e.target.closest('[data-action]');\r\n    if (!b) return;\r\n    var a = b.dataset.action;\r\n    if (a === 'addMp') {\r\n      if (state.mp.length >= MAX_MP_ENTRIES) {\r\n        alert('Num\u0103r maxim de perioade atins (' + MAX_MP_ENTRIES + ').');\r\n        return;\r\n      }\r\n      state.mp.push({ type: 'retinere', start: '', end: '' });\r\n      renderLists();\r\n    } else if (a === 'addIntr') {\r\n      if (state.intr.length >= MAX_INTR_ENTRIES) {\r\n        alert('Num\u0103r maxim de \u00eentreruperi atins (' + MAX_INTR_ENTRIES + ').');\r\n        return;\r\n      }\r\n      state.intr.push({ start: '', end: '', motiv: '' });\r\n      renderLists();\r\n    } else if (a === 'deleteMp') {\r\n      var i = parseInt(b.dataset.mpIndex, 10);\r\n      if (!isNaN(i) && i >= 0 && i < state.mp.length) {\r\n        state.mp.splice(i, 1);\r\n        renderLists();\r\n      }\r\n    } else if (a === 'deleteIntr') {\r\n      var idx = parseInt(b.dataset.intrIndex, 10);\r\n      if (!isNaN(idx) && idx >= 0 && idx < state.intr.length) {\r\n        state.intr.splice(idx, 1);\r\n        renderLists();\r\n      }\r\n    } else if (a === 'calculate') calculate();\r\n    else if (a === 'reset') resetAll();\r\n    else if (a === 'example') fillExample();\r\n    else if (a === 'export-pdf') exportPDF();\r\n  });\r\n\r\n  root.addEventListener('change', function(e) {\r\n    var t = e.target;\r\n    var mpIndex, mpField, intrIndex, intrField, validTypes;\r\n\r\n    if (t.hasAttribute('data-mp-field')) {\r\n      mpIndex = parseInt(t.getAttribute('data-mp-index'), 10);\r\n      mpField = t.getAttribute('data-mp-field');\r\n      if (!isNaN(mpIndex) && mpIndex >= 0 && mpIndex < state.mp.length && state.mp[mpIndex]) {\r\n        if (mpField === 'type') {\r\n          \/\/ Validate type value\r\n          validTypes = ['retinere', 'arest_preventiv', 'arest_domiciliu'];\r\n          if (validTypes.indexOf(t.value) !== -1) {\r\n            state.mp[mpIndex][mpField] = t.value;\r\n          }\r\n        } else if (mpField === 'start' || mpField === 'end') {\r\n          \/\/ Validate date format\r\n          if (t.value === '' || isValidDateFormat(t.value)) {\r\n            state.mp[mpIndex][mpField] = t.value;\r\n          }\r\n        }\r\n        updateLive();\r\n      }\r\n    } else if (t.hasAttribute('data-intr-field')) {\r\n      intrIndex = parseInt(t.getAttribute('data-intr-index'), 10);\r\n      intrField = t.getAttribute('data-intr-field');\r\n      if (!isNaN(intrIndex) && intrIndex >= 0 && intrIndex < state.intr.length && state.intr[intrIndex]) {\r\n        if (intrField === 'start' || intrField === 'end') {\r\n          \/\/ Validate date format\r\n          if (t.value === '' || isValidDateFormat(t.value)) {\r\n            state.intr[intrIndex][intrField] = t.value;\r\n          }\r\n        } else if (intrField === 'motiv') {\r\n          \/\/ Sanitize text input\r\n          state.intr[intrIndex][intrField] = sanitizeText(t.value, 200);\r\n        }\r\n        updateLive();\r\n      }\r\n    } else if (t.hasAttribute('data-field')) updateLive();\r\n  });\r\n\r\n  root.addEventListener('input', function(e) {\r\n    if (e.target?.hasAttribute('data-field') || e.target?.hasAttribute('data-mp-field') || e.target?.hasAttribute('data-intr-field')) updateLive();\r\n  });\r\n\r\n  \/\/ === SECURITY: Validate input on keydown to prevent invalid characters ===\r\n  root.addEventListener('keydown', function(e) {\r\n    var input = e.target;\r\n    if (!input.matches('.zic2__input[type=\"number\"]')) return;\r\n\r\n    \/\/ Allow: backspace, delete, tab, escape, enter, arrows\r\n    var allowedKeys = ['Backspace', 'Delete', 'Tab', 'Escape', 'Enter', 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Home', 'End'];\r\n    if (allowedKeys.indexOf(e.key) !== -1) return;\r\n\r\n    \/\/ Allow Ctrl+A, Ctrl+C, Ctrl+V, Ctrl+X\r\n    if ((e.ctrlKey || e.metaKey) && ['a', 'c', 'v', 'x'].indexOf(e.key.toLowerCase()) !== -1) return;\r\n\r\n    \/\/ Block non-numeric characters (including dot, minus, etc.)\r\n    if (!\/^[0-9]$\/.test(e.key)) {\r\n      e.preventDefault();\r\n    }\r\n  }, true);\r\n\r\n  \/\/ === SECURITY: Sanitize pasted content ===\r\n  root.addEventListener('paste', function(e) {\r\n    var input = e.target;\r\n    if (!input.matches('.zic2__input[type=\"number\"]')) return;\r\n\r\n    var pastedData = (e.clipboardData || window.clipboardData).getData('text');\r\n    \/\/ Only allow if pasted data contains only digits\r\n    if (!\/^\\d*$\/.test(pastedData)) {\r\n      e.preventDefault();\r\n      \/\/ Extract only digits from pasted content\r\n      var digitsOnly = pastedData.replace(\/\\D\/g, '');\r\n      if (digitsOnly) {\r\n        \/\/ Insert cleaned data at cursor position\r\n        var start = input.selectionStart;\r\n        var end = input.selectionEnd;\r\n        var currentValue = input.value;\r\n        input.value = currentValue.substring(0, start) + digitsOnly + currentValue.substring(end);\r\n        input.setSelectionRange(start + digitsOnly.length, start + digitsOnly.length);\r\n        \/\/ Trigger change event to update state\r\n        input.dispatchEvent(new Event('input', { bubbles: true }));\r\n      }\r\n    }\r\n  }, true);\r\n\r\n  renderLists();\r\n  updateLive();\r\n})();\r\n<\/script>\r\n<\/div>\r\n\n\n\n<p>Po\u021bi folosi acest\u00a0calculator pentru a calcula termenele pentru liberarea condi\u021bionat\u0103. Acest instrument juridic gratuit a fost dezvoltat pentru a te asista \u00een calcularea precis\u0103 a termenelor pentru liberarea condi\u021bionat\u0103, lu\u00e2nd \u00een considerare prevederile Codului penal. Pentru a folosi calculatorul trebuie s\u0103 introduci urm\u0103toarele date:<\/p>\n<ul style=\"list-style-type: square;\">\n<li style=\"list-style-type: none;\">\n<ul style=\"list-style-type: square;\">\n<li>Categoria pedepsei (\u00eenchisoare sau deten\u021biune pe via\u021b\u0103) ce a f\u0103cut obiectul solu\u021biei de condamnare \u0219i cuantumul pedepsei cu \u00eenchisoarea (ani, luni, zile).<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul style=\"list-style-type: square;\">\n<li style=\"list-style-type: none;\">\n<ul style=\"list-style-type: square;\">\n<li>V\u00e2rsta pe care o ave\u021bi, pentru a putea identifica regimul juridic aplicabil.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul style=\"list-style-type: square;\">\n<li style=\"list-style-type: none;\">\n<ul style=\"list-style-type: square;\">\n<li>Regimul de deten\u021bie (de la deschis la maxim\u0103 siguran\u021b\u0103) pentru a verifica condi\u021biile de eligibilitate pentru liberarea condi\u021bionat\u0103.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul style=\"list-style-type: square;\">\n<li style=\"list-style-type: none;\">\n<ul style=\"list-style-type: square;\">\n<li>Data c\u00e2nd a \u00eenceput executarea pedepsei cu \u00eenchisoarea pentru a putea calcula zilele executate efectiv.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul style=\"list-style-type: square;\">\n<li style=\"list-style-type: none;\">\n<ul style=\"list-style-type: square;\">\n<li>Zilele sc\u0103zute pe recursul compensatoriu, \u00een m\u0103sur\u0103 \u00een care acest regim v\u0103 este aplicabil.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul style=\"list-style-type: square;\">\n<li style=\"list-style-type: none;\">\n<ul style=\"list-style-type: square;\">\n<li>Perioadele de munc\u0103 \u00een penitenciar, al\u0103turi de tipul de mun\u0103 prestat\u0103.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3 class=\"wp-block-heading\">Important de \u0219tiut<\/h3>\n<p>Calculatorul este un instrument de asisten\u021b\u0103 \u0219i nu \u00eenlocuie\u0219te analiza juridic\u0103 profesional\u0103. Rezultatele trebuie \u00eentotdeauna verificate \u0219i interpretate \u00eentotdeauna \u00een contextul specific al fiec\u0103rui dosar penal \u00een parte.<\/p>\n<h3 class=\"wp-block-heading\"><strong>Informa\u021bii suplimentare<\/strong><\/h3>\n<p><a href=\"https:\/\/zic.legal\/team\/zlatigeorge\/\" target=\"_blank\" rel=\"noreferrer noopener\">George Zlati\u00a0<\/a>este avocat \u0219i lector universitar. Acesta este titular al disciplinei\u00a0<em>Criminalitate informatic\u0103\u00a0<\/em>la nivel de masterat, av\u00e2nd de asemenea un doctorat pe criminalitate informatic\u0103. Specializarea acestuia este criminalitatea informatic\u0103 \u0219i tehnologia blockchain.<\/p>\n<p><strong>Cite\u0219te \u0219i:<\/strong> <a href=\"https:\/\/zic.legal\/suspendarea-executarii-pedepsei-sub-supraveghere\/\">suspendarea execut\u0103rii pedepsei sub supraveghere<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>Po\u021bi folosi acest\u00a0calculator pentru a calcula termenele pentru liberarea condi\u021bionat\u0103. Acest instrument juridic gratuit a fost dezvoltat pentru a te asista \u00een calcularea precis\u0103 a termenelor pentru liberarea condi\u021bionat\u0103, lu\u00e2nd \u00een considerare prevederile Codului penal. Pentru a folosi calculatorul trebuie s\u0103 introduci urm\u0103toarele date: Categoria pedepsei (\u00eenchisoare sau deten\u021biune pe via\u021b\u0103) ce  [&#8230;]<\/p>\n","protected":false},"author":8,"featured_media":3955,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[2],"tags":[4],"class_list":["post-2605","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-diverse","tag-avocat-george-zlati"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Calculator online pentru liberarea condi\u021bionat\u0103 | ZIC Legal<\/title>\n<meta name=\"description\" content=\"Calculator juridic gratuit pentru termenele de liberarre condi\u021bionat\u0103. Introdu datele despre pedeaps\u0103, regimul de deten\u021bie \u0219i zilele de munc\u0103 pentru un calcul exact.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/zic.legal\/ro\/calculator-online-liberare-conditionata\/\" \/>\n<meta property=\"og:locale\" content=\"ro_RO\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Calculator online pentru liberarea condi\u021bionat\u0103\" \/>\n<meta property=\"og:description\" content=\"Calculator juridic gratuit pentru termenele de liberarre condi\u021bionat\u0103. Introdu datele despre pedeaps\u0103, regimul de deten\u021bie \u0219i zilele de munc\u0103 pentru un calcul exact.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zic.legal\/ro\/calculator-online-liberare-conditionata\/\" \/>\n<meta property=\"og:site_name\" content=\"ZIC Legal\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/profile.php?id=61573624655319\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-03T13:44:37+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-07T15:08:35+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/zic.legal\/wp-content\/uploads\/2024\/11\/tools7.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1536\" \/>\n\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"George Zlati\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Scris de\" \/>\n\t<meta name=\"twitter:data1\" content=\"George Zlati\" \/>\n\t<meta name=\"twitter:label2\" content=\"Timp estimat pentru citire\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/zic.legal\\\/calculator-online-liberare-conditionata\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zic.legal\\\/calculator-online-liberare-conditionata\\\/\"},\"author\":{\"name\":\"George Zlati\",\"@id\":\"https:\\\/\\\/zic.legal\\\/#\\\/schema\\\/person\\\/aae0a83a43928bb0743a63e0a3343e65\"},\"headline\":\"Calculator online pentru liberarea condi\u021bionat\u0103\",\"datePublished\":\"2024-11-03T13:44:37+00:00\",\"dateModified\":\"2026-06-07T15:08:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/zic.legal\\\/calculator-online-liberare-conditionata\\\/\"},\"wordCount\":242,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/zic.legal\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/zic.legal\\\/calculator-online-liberare-conditionata\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/zic.legal\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/tools7.webp\",\"keywords\":[\"avocat George Zlati\"],\"articleSection\":[\"Diverse\"],\"inLanguage\":\"ro-RO\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/zic.legal\\\/calculator-online-liberare-conditionata\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/zic.legal\\\/calculator-online-liberare-conditionata\\\/\",\"url\":\"https:\\\/\\\/zic.legal\\\/calculator-online-liberare-conditionata\\\/\",\"name\":\"Calculator online pentru liberarea condi\u021bionat\u0103 | ZIC Legal\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zic.legal\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/zic.legal\\\/calculator-online-liberare-conditionata\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/zic.legal\\\/calculator-online-liberare-conditionata\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/zic.legal\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/tools7.webp\",\"datePublished\":\"2024-11-03T13:44:37+00:00\",\"dateModified\":\"2026-06-07T15:08:35+00:00\",\"description\":\"Calculator juridic gratuit pentru termenele de liberarre condi\u021bionat\u0103. Introdu datele despre pedeaps\u0103, regimul de deten\u021bie \u0219i zilele de munc\u0103 pentru un calcul exact.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/zic.legal\\\/calculator-online-liberare-conditionata\\\/#breadcrumb\"},\"inLanguage\":\"ro-RO\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/zic.legal\\\/calculator-online-liberare-conditionata\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ro-RO\",\"@id\":\"https:\\\/\\\/zic.legal\\\/calculator-online-liberare-conditionata\\\/#primaryimage\",\"url\":\"https:\\\/\\\/zic.legal\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/tools7.webp\",\"contentUrl\":\"https:\\\/\\\/zic.legal\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/tools7.webp\",\"width\":1536,\"height\":1024},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/zic.legal\\\/calculator-online-liberare-conditionata\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/zic.legal\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Calculator online pentru liberarea condi\u021bionat\u0103\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/zic.legal\\\/#website\",\"url\":\"https:\\\/\\\/zic.legal\\\/\",\"name\":\"Zlati Ionescu Chiperi SCA\",\"description\":\"Not another brick in the law\",\"publisher\":{\"@id\":\"https:\\\/\\\/zic.legal\\\/#organization\"},\"alternateName\":\"Zlati Ionescu Chiperi - SCA\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/zic.legal\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ro-RO\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/zic.legal\\\/#organization\",\"name\":\"Zlati Ionescu Chiperi SCA\",\"url\":\"https:\\\/\\\/zic.legal\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ro-RO\",\"@id\":\"https:\\\/\\\/zic.legal\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/zic.legal\\\/wp-content\\\/uploads\\\/2025\\\/02\\\/Logo-Color-RGB@0.5x.png\",\"contentUrl\":\"https:\\\/\\\/zic.legal\\\/wp-content\\\/uploads\\\/2025\\\/02\\\/Logo-Color-RGB@0.5x.png\",\"width\":306,\"height\":306,\"caption\":\"Zlati Ionescu Chiperi SCA\"},\"image\":{\"@id\":\"https:\\\/\\\/zic.legal\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/profile.php?id=61573624655319\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/zic-legal\\\/\",\"https:\\\/\\\/www.wikidata.org\\\/wiki\\\/Q139905998\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/zic.legal\\\/#\\\/schema\\\/person\\\/aae0a83a43928bb0743a63e0a3343e65\",\"name\":\"George Zlati\",\"description\":\"George Zlati este avocat \u0219i lector universitar. Acesta este titular al disciplinei Criminalitate informatic\u0103 la nivel de masterat, av\u00e2nd de asemenea un doctorat pe criminalitate informatic\u0103. Specializarea acestuia este criminalitatea informatic\u0103 \u0219i tehnologia blockchain. Mail: george.zlati@zic.legal | Tel: +40 748 149 840\",\"sameAs\":[\"https:\\\/\\\/www.wikidata.org\\\/wiki\\\/Q127327895\",\"https:\\\/\\\/orcid.org\\\/0009-0009-0424-8488\",\"https:\\\/\\\/isni.org\\\/isni\\\/0000000496723288\",\"https:\\\/\\\/linkedin.com\\\/in\\\/george-m-r-zlati\",\"https:\\\/\\\/scholar.google.com\\\/citations?user=MNBiligAAAAJ\",\"https:\\\/\\\/www.researchgate.net\\\/profile\\\/George-Zlati\",\"https:\\\/\\\/uab-ro.academia.edu\\\/GeorgeZlati\",\"https:\\\/\\\/www.youtube.com\\\/@PenalmenteRelevant\",\"https:\\\/\\\/profesionisti.juridice.ro\\\/george-zlati\",\"https:\\\/\\\/www.avocatura.com\\\/av.24029-zlati-michail-george-rudolf.html\",\"https:\\\/\\\/www.ecba.org\\\/contactslist\\\/contact-details.php?idreg=720200074\",\"https:\\\/\\\/www.efcl.eu\\\/efclmemberlist\\\/contact-details.php?idreg=720200074\"],\"jobTitle\":\"Avocat partener, drept penal al afacerilor si criminalitate informatica\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Calculator online pentru liberarearea | ZIC Legal","description":"Calculator juridic gratuit pentru termenele de liberare intreaga. Introdu date despre pedeaps\u0103, regimul de deten\u021bie \u0219i zilele de munc\u0103 pentru un calcul exact.","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:\/\/zic.legal\/ro\/calculator-online-liberare-conditionata\/","og_locale":"ro_RO","og_type":"article","og_title":"Calculator online pentru liberarea condi\u021bionat\u0103","og_description":"Calculator juridic gratuit pentru termenele de liberarre condi\u021bionat\u0103. Introdu datele despre pedeaps\u0103, regimul de deten\u021bie \u0219i zilele de munc\u0103 pentru un calcul exact.","og_url":"https:\/\/zic.legal\/ro\/calculator-online-liberare-conditionata\/","og_site_name":"ZIC Legal","article_publisher":"https:\/\/www.facebook.com\/profile.php?id=61573624655319","article_published_time":"2024-11-03T13:44:37+00:00","article_modified_time":"2026-06-07T15:08:35+00:00","og_image":[{"width":1536,"height":1024,"url":"https:\/\/zic.legal\/wp-content\/uploads\/2024\/11\/tools7.webp","type":"image\/webp"}],"author":"George Zlati","twitter_card":"summary_large_image","twitter_misc":{"Scris de":"George Zlati","Timp estimat pentru citire":"2 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/zic.legal\/calculator-online-liberare-conditionata\/#article","isPartOf":{"@id":"https:\/\/zic.legal\/calculator-online-liberare-conditionata\/"},"author":{"name":"George Zlati","@id":"https:\/\/zic.legal\/#\/schema\/person\/aae0a83a43928bb0743a63e0a3343e65"},"headline":"Calculator online pentru liberarea condi\u021bionat\u0103","datePublished":"2024-11-03T13:44:37+00:00","dateModified":"2026-06-07T15:08:35+00:00","mainEntityOfPage":{"@id":"https:\/\/zic.legal\/calculator-online-liberare-conditionata\/"},"wordCount":242,"commentCount":0,"publisher":{"@id":"https:\/\/zic.legal\/#organization"},"image":{"@id":"https:\/\/zic.legal\/calculator-online-liberare-conditionata\/#primaryimage"},"thumbnailUrl":"https:\/\/zic.legal\/wp-content\/uploads\/2024\/11\/tools7.webp","keywords":["avocat George Zlati"],"articleSection":["Diverse"],"inLanguage":"ro-RO","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/zic.legal\/calculator-online-liberare-conditionata\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/zic.legal\/calculator-online-liberare-conditionata\/","url":"https:\/\/zic.legal\/calculator-online-liberare-conditionata\/","name":"Calculator online pentru liberarearea | ZIC Legal","isPartOf":{"@id":"https:\/\/zic.legal\/#website"},"primaryImageOfPage":{"@id":"https:\/\/zic.legal\/calculator-online-liberare-conditionata\/#primaryimage"},"image":{"@id":"https:\/\/zic.legal\/calculator-online-liberare-conditionata\/#primaryimage"},"thumbnailUrl":"https:\/\/zic.legal\/wp-content\/uploads\/2024\/11\/tools7.webp","datePublished":"2024-11-03T13:44:37+00:00","dateModified":"2026-06-07T15:08:35+00:00","description":"Calculator juridic gratuit pentru termenele de liberare intreaga. Introdu date despre pedeaps\u0103, regimul de deten\u021bie \u0219i zilele de munc\u0103 pentru un calcul exact.","breadcrumb":{"@id":"https:\/\/zic.legal\/calculator-online-liberare-conditionata\/#breadcrumb"},"inLanguage":"ro-RO","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zic.legal\/calculator-online-liberare-conditionata\/"]}]},{"@type":"ImageObject","inLanguage":"ro-RO","@id":"https:\/\/zic.legal\/calculator-online-liberare-conditionata\/#primaryimage","url":"https:\/\/zic.legal\/wp-content\/uploads\/2024\/11\/tools7.webp","contentUrl":"https:\/\/zic.legal\/wp-content\/uploads\/2024\/11\/tools7.webp","width":1536,"height":1024},{"@type":"BreadcrumbList","@id":"https:\/\/zic.legal\/calculator-online-liberare-conditionata\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zic.legal\/"},{"@type":"ListItem","position":2,"name":"Calculator online pentru liberarea condi\u021bionat\u0103"}]},{"@type":"WebSite","@id":"https:\/\/zic.legal\/#website","url":"https:\/\/zic.legal\/","name":"Zlati Ionescu Chiperi SCA","description":"Nu \u00eenc\u0103 o c\u0103r\u0103mid\u0103 \u00een lege","publisher":{"@id":"https:\/\/zic.legal\/#organization"},"alternateName":"Zlati Ionescu Chiperi - SCA","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/zic.legal\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ro-RO"},{"@type":"Organization","@id":"https:\/\/zic.legal\/#organization","name":"Zlati Ionescu Chiperi SCA","url":"https:\/\/zic.legal\/","logo":{"@type":"ImageObject","inLanguage":"ro-RO","@id":"https:\/\/zic.legal\/#\/schema\/logo\/image\/","url":"https:\/\/zic.legal\/wp-content\/uploads\/2025\/02\/Logo-Color-RGB@0.5x.png","contentUrl":"https:\/\/zic.legal\/wp-content\/uploads\/2025\/02\/Logo-Color-RGB@0.5x.png","width":306,"height":306,"caption":"Zlati Ionescu Chiperi SCA"},"image":{"@id":"https:\/\/zic.legal\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/profile.php?id=61573624655319","https:\/\/www.linkedin.com\/company\/zic-legal\/","https:\/\/www.wikidata.org\/wiki\/Q139905998"]},{"@type":"Person","@id":"https:\/\/zic.legal\/#\/schema\/person\/aae0a83a43928bb0743a63e0a3343e65","name":"George Zlati","description":"George Zlati este avocat \u0219i lector universitar. Acesta este titular al disciplinei Criminalitate informatic\u0103 la nivelul de masterat, av\u00e2nd de asemenea un doctorat pe criminalitate informatic\u0103. Specializarea acesteia este criminalitatea informatic\u0103 \u0219i tehnologia blockchain. Mail: george.zlati@zic.legal | Tel: +40 748 149 840","sameAs":["https:\/\/www.wikidata.org\/wiki\/Q127327895","https:\/\/orcid.org\/0009-0009-0424-8488","https:\/\/isni.org\/isni\/0000000496723288","https:\/\/linkedin.com\/in\/george-m-r-zlati","https:\/\/scholar.google.com\/citations?user=MNBiligAAAAJ","https:\/\/www.researchgate.net\/profile\/George-Zlati","https:\/\/uab-ro.academia.edu\/GeorgeZlati","https:\/\/www.youtube.com\/@PenalmenteRelevant","https:\/\/profesionisti.juridice.ro\/george-zlati","https:\/\/www.avocatura.com\/av.24029-zlati-michail-george-rudolf.html","https:\/\/www.ecba.org\/contactslist\/contact-details.php?idreg=720200074","https:\/\/www.efcl.eu\/efclmemberlist\/contact-details.php?idreg=720200074"],"jobTitle":"Avocat partener, drept penal al afacerilor si criminalitate informatica"}]}},"jetpack_featured_media_url":"https:\/\/zic.legal\/wp-content\/uploads\/2024\/11\/tools7.webp","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/zic.legal\/ro\/wp-json\/wp\/v2\/posts\/2605","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zic.legal\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zic.legal\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zic.legal\/ro\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/zic.legal\/ro\/wp-json\/wp\/v2\/comments?post=2605"}],"version-history":[{"count":33,"href":"https:\/\/zic.legal\/ro\/wp-json\/wp\/v2\/posts\/2605\/revisions"}],"predecessor-version":[{"id":4455,"href":"https:\/\/zic.legal\/ro\/wp-json\/wp\/v2\/posts\/2605\/revisions\/4455"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/zic.legal\/ro\/wp-json\/wp\/v2\/media\/3955"}],"wp:attachment":[{"href":"https:\/\/zic.legal\/ro\/wp-json\/wp\/v2\/media?parent=2605"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zic.legal\/ro\/wp-json\/wp\/v2\/categories?post=2605"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zic.legal\/ro\/wp-json\/wp\/v2\/tags?post=2605"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}