{"id":2605,"date":"2024-11-03T13:44:37","date_gmt":"2024-11-03T13:44:37","guid":{"rendered":"https:\/\/www.zlati.legal\/?p=2605"},"modified":"2025-12-28T16:14:11","modified_gmt":"2025-12-28T16:14:11","slug":"calculator-online-liberare-conditionata","status":"publish","type":"post","link":"https:\/\/zic.legal\/ro\/calculator-online-liberare-conditionata\/","title":{"rendered":"Calculator online pentru liberarea condi\u021bionat\u0103"},"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\/ro\/\" 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\/ro\/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>","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>","protected":false},"author":2,"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 v26.8 - 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=\"2025-12-28T16:14:11+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\/cffc51a7df5926dd9954aeb3bbbcc303\"},\"headline\":\"Calculator online pentru liberarea condi\u021bionat\u0103\",\"datePublished\":\"2024-11-03T13:44:37+00:00\",\"dateModified\":\"2025-12-28T16:14:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/zic.legal\/calculator-online-liberare-conditionata\/\"},\"wordCount\":233,\"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\":\"2025-12-28T16:14:11+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\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/zic.legal\/#\/schema\/person\/cffc51a7df5926dd9954aeb3bbbcc303\",\"name\":\"George Zlati\",\"url\":\"https:\/\/zic.legal\/ro\/author\/zlatigeorge\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Calculator online pentru liberarea condi\u021bionat\u0103 | ZIC Legal","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.","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":"2025-12-28T16:14:11+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\/cffc51a7df5926dd9954aeb3bbbcc303"},"headline":"Calculator online pentru liberarea condi\u021bionat\u0103","datePublished":"2024-11-03T13:44:37+00:00","dateModified":"2025-12-28T16:14:11+00:00","mainEntityOfPage":{"@id":"https:\/\/zic.legal\/calculator-online-liberare-conditionata\/"},"wordCount":233,"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":"2025-12-28T16:14:11+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\/"]},{"@type":"Person","@id":"https:\/\/zic.legal\/#\/schema\/person\/cffc51a7df5926dd9954aeb3bbbcc303","name":"George Zlati","url":"https:\/\/zic.legal\/ro\/author\/zlatigeorge\/"}]}},"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\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/zic.legal\/ro\/wp-json\/wp\/v2\/comments?post=2605"}],"version-history":[{"count":32,"href":"https:\/\/zic.legal\/ro\/wp-json\/wp\/v2\/posts\/2605\/revisions"}],"predecessor-version":[{"id":4085,"href":"https:\/\/zic.legal\/ro\/wp-json\/wp\/v2\/posts\/2605\/revisions\/4085"}],"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}]}}