{"id":11962,"date":"2026-06-25T03:44:50","date_gmt":"2026-06-25T01:44:50","guid":{"rendered":"https:\/\/shopini.tn\/?page_id=11962"},"modified":"2026-06-25T04:25:46","modified_gmt":"2026-06-25T02:25:46","slug":"retenue-a-la-source","status":"publish","type":"page","link":"https:\/\/shopini.tn\/ar\/retenue-a-la-source\/","title":{"rendered":"Retenue \u00e0 la Source"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"11962\" class=\"elementor elementor-11962\">\n\t\t\t\t<div class=\"elementor-element elementor-element-35c186c e-con-full e-flex e-con e-parent\" data-id=\"35c186c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-baeaa9a elementor-widget elementor-widget-html\" data-id=\"baeaa9a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div id=\"rs-app\"><\/div>\r\n\r\n<style>\r\n@import url('https:\/\/fonts.googleapis.com\/css2?family=DM+Serif+Display&family=Plus+Jakarta+Sans:wght@300;400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600&display=swap');\r\n\r\n#rs-app,#rs-app *,#rs-app *::before,#rs-app *::after{margin:0;padding:0;box-sizing:border-box}\r\n#rs-app{\r\n    --bg:#f7f6f3;--white:#fff;--t1:#111;--t2:#444;--t3:#888;--t4:#bbb;--brd:#e5e2dd;\r\n    --blue:#0a5c9e;--blue-h:#084b82;--blue-l:rgba(10,92,158,.06);\r\n    --blue-g:rgba(10,92,158,.18);--gold:#c8a23c;--gold-l:rgba(200,162,60,.08);\r\n    --red:#c0392b;--red-l:rgba(192,57,43,.06);--green:#1a8a5c;\r\n    --dark:#0d1b2a;--r:20px;--rm:14px;--rs:10px;\r\n    --sh:0 1px 3px rgba(0,0,0,.04),0 4px 16px rgba(0,0,0,.03);\r\n    --sh-lg:0 8px 32px rgba(0,0,0,.08);\r\n    --font:'Plus Jakarta Sans',-apple-system,sans-serif;\r\n    --serif:'DM Serif Display',Georgia,serif;\r\n    --mono:'JetBrains Mono','Courier New',monospace;\r\n    font-family:var(--font);font-size:14px;color:var(--t1);line-height:1.65;\r\n    background:var(--bg);max-width:780px;margin:0 auto;\r\n}\r\n#rs-app input,#rs-app select,#rs-app button{font-family:var(--font)}\r\n\r\n\/* HERO *\/\r\n.hero{background:var(--dark);padding:40px 36px 32px;position:relative;overflow:hidden}\r\n.hero::before{content:'';position:absolute;top:-100px;right:-60px;width:350px;height:350px;background:radial-gradient(circle,rgba(10,92,158,.25),transparent 65%);pointer-events:none}\r\n.hero-inner{position:relative;z-index:1}\r\n.hero-badge{display:inline-flex;align-items:center;gap:6px;padding:5px 14px;background:rgba(10,92,158,.2);border:1px solid rgba(10,92,158,.35);border-radius:24px;font-size:10px;font-weight:700;color:#7bb8e0;text-transform:uppercase;letter-spacing:.1em;margin-bottom:14px}\r\n.hero-badge::before{content:'';width:6px;height:6px;background:#7bb8e0;border-radius:50%;animation:pulse 2s infinite}\r\n@keyframes pulse{0%,100%{opacity:1}50%{opacity:.4}}\r\n.hero h1{font-family:var(--serif);font-size:clamp(24px,3.5vw,34px);color:#fff;font-weight:400;line-height:1.2;margin-bottom:6px}\r\n.hero h1 em{font-style:normal;color:#7bb8e0}\r\n.hero p{font-size:13px;color:rgba(255,255,255,.4);max-width:560px;line-height:1.6}\r\n.hero-actions{display:flex;align-items:center;gap:10px;margin-top:18px;flex-wrap:wrap}\r\n.h-btn{display:inline-flex;align-items:center;gap:6px;padding:10px 20px;border-radius:var(--rs);font-size:12px;font-weight:700;cursor:pointer;transition:all .2s;border:none;white-space:nowrap}\r\n.h-btn svg{width:15px;height:15px}\r\n.h-btn--pri{background:var(--blue);color:#fff}\r\n.h-btn--pri:hover{background:var(--blue-h);box-shadow:0 6px 24px var(--blue-g)}\r\n.h-btn--ghost{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.15);color:rgba(255,255,255,.7)}\r\n.h-btn--ghost:hover{background:rgba(255,255,255,.12);color:#fff}\r\n\r\n\/* CARD *\/\r\n.card{background:var(--white);margin:24px;border-radius:var(--r);box-shadow:var(--sh);overflow:hidden}\r\n\r\n\/* SECTION *\/\r\n.sec{padding:28px 32px;border-bottom:1px solid var(--brd)}.sec:last-child{border-bottom:none}\r\n.sec-title{display:flex;align-items:center;gap:10px;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--t2);margin-bottom:20px}\r\n.sec-icon{width:30px;height:30px;border-radius:9px;display:flex;align-items:center;justify-content:center;flex-shrink:0}\r\n.sec-icon svg{width:15px;height:15px}\r\n.sec-icon--blue{background:var(--blue-l);color:var(--blue)}\r\n.sec-icon--gold{background:var(--gold-l);color:var(--gold)}\r\n\r\n\/* FORM *\/\r\n.grid{display:grid;grid-template-columns:1fr 1fr;gap:16px 24px}.grid .full{grid-column:1\/-1}\r\n.field{display:flex;flex-direction:column;gap:5px}\r\n.field label{font-size:10px;font-weight:800;color:var(--t3);text-transform:uppercase;letter-spacing:.08em}\r\n.field input,.field select{background:var(--bg);border:1.5px solid transparent;border-radius:var(--rs);padding:12px 16px;font-size:13.5px;color:var(--t1);transition:all .2s;width:100%}\r\n.field input:hover{border-color:var(--brd);background:var(--white)}\r\n.field input:focus,.field select:focus{outline:none;border-color:var(--blue);background:var(--white);box-shadow:0 0 0 4px var(--blue-l)}\r\n.field input::placeholder{color:var(--t4)}\r\n.field select{cursor:pointer;appearance:none;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='%23888' stroke-width='2.5'%3E%3Cpath d='M6 9l6 6 6-6'\/%3E%3C\/svg%3E\");background-repeat:no-repeat;background-position:right 14px center;padding-right:36px}\r\n.field-mono{font-family:var(--mono)!important;font-weight:600!important}\r\n\r\n\/* TYPE TOGGLE *\/\r\n.type-toggle{display:flex;gap:0;border-radius:var(--rs);overflow:hidden;border:1.5px solid var(--brd);margin-bottom:18px}\r\n.type-btn{flex:1;padding:10px 16px;border:none;background:var(--bg);font-size:12px;font-weight:700;color:var(--t3);cursor:pointer;transition:all .2s;text-align:center}\r\n.type-btn:not(:last-child){border-right:1px solid var(--brd)}\r\n.type-btn.on{background:var(--blue);color:#fff}\r\n.type-btn:hover:not(.on){background:var(--blue-l);color:var(--blue)}\r\n\r\n\/* RATE TABLE *\/\r\n.rate-link{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;color:var(--blue);cursor:pointer;margin-top:4px;transition:all .15s}\r\n.rate-link:hover{text-decoration:underline}\r\n.rate-link svg{width:13px;height:13px}\r\n.rate-table-wrap{overflow-x:auto;border-radius:var(--rm);border:1px solid var(--brd);margin-top:16px;display:none}\r\n.rate-table-wrap.show{display:block}\r\n.rate-table{width:100%;border-collapse:collapse;font-size:12px}\r\n.rate-table thead th{background:#0d1b2a;color:rgba(255,255,255,.85);padding:12px 16px;text-align:left;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;white-space:nowrap}\r\n.rate-table thead th:nth-child(2),.rate-table thead th:nth-child(3){text-align:center}\r\n.rate-table tbody td{padding:12px 16px;border-bottom:1px solid var(--brd);color:var(--t2);line-height:1.4;vertical-align:middle}\r\n.rate-table tbody tr:last-child td{border-bottom:none}\r\n.rate-table tbody tr{transition:background .15s;cursor:pointer}\r\n.rate-table tbody tr:hover{background:var(--blue-l)}\r\n.rate-table tbody tr.selected{background:var(--blue-l)}\r\n.rate-table tbody td:nth-child(2){text-align:center;font-family:var(--mono);font-size:11px;text-decoration:line-through;opacity:.45}\r\n.rate-table tbody td:nth-child(3){text-align:center}\r\n.rate-tag{display:inline-block;padding:2px 10px;background:rgba(26,138,92,.08);border-radius:6px;font-family:var(--mono);font-weight:700;font-size:12px;color:var(--green)}\r\n\r\n\/* LINES TABLE (Section B) *\/\r\n.lines-wrap{overflow-x:auto;margin-bottom:16px}\r\n.lines-tbl{width:100%;border-collapse:collapse;font-size:12.5px}\r\n.lines-tbl thead th{background:#faf9f7;padding:10px 14px;text-align:left;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--t3);border-bottom:2px solid var(--brd);white-space:nowrap}\r\n.lines-tbl thead th.rn{text-align:right}\r\n.lines-tbl tbody td{padding:10px 14px;border-bottom:1px solid var(--brd);vertical-align:middle}\r\n.lines-tbl tbody td.rn{text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums}\r\n.lines-tbl [contenteditable]{padding:4px 8px;border-radius:6px;border:1.5px solid transparent;transition:all .15s;min-width:40px}\r\n.lines-tbl [contenteditable]:hover{border-color:var(--brd);background:var(--bg)}\r\n.lines-tbl [contenteditable]:focus{border-color:var(--blue);outline:none;background:var(--white);box-shadow:0 0 0 3px var(--blue-l)}\r\n.lines-tbl .si-del{width:28px;height:28px;border:none;border-radius:8px;background:transparent;color:var(--t4);font-size:18px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:all .15s}\r\n.lines-tbl .si-del:hover{background:var(--red-l);color:var(--red)}\r\n.lines-tbl .tot-row td{font-weight:800;background:#faf9f7;border-top:2px solid var(--brd)}\r\n.lines-add{margin-top:4px}\r\n.lines-add button{display:inline-flex;align-items:center;gap:5px;padding:8px 16px;background:transparent;border:1.5px dashed var(--brd);border-radius:var(--rs);color:var(--t3);font-size:12px;font-weight:600;cursor:pointer;transition:all .2s}\r\n.lines-add button:hover{border-color:var(--blue);color:var(--blue);background:var(--blue-l)}\r\n.lines-add button svg{width:14px;height:14px}\r\n\r\n\/* ACTIONS *\/\r\n.actions{display:flex;gap:12px;padding:24px 32px;border-top:1px solid var(--brd);background:#faf9f7}\r\n.act-btn{display:inline-flex;align-items:center;gap:7px;padding:13px 28px;border-radius:var(--rs);font-size:13px;font-weight:700;cursor:pointer;transition:all .2s;border:none;flex:1;justify-content:center}\r\n.act-btn svg{width:16px;height:16px}\r\n.act-btn--ghost{background:var(--white);border:1.5px solid var(--brd);color:var(--t2)}\r\n.act-btn--ghost:hover{border-color:var(--blue);color:var(--blue);transform:translateY(-1px)}\r\n.act-btn--pri{background:var(--blue);color:#fff}\r\n.act-btn--pri:hover{background:var(--blue-h);box-shadow:0 6px 24px var(--blue-g);transform:translateY(-1px)}\r\n\r\n\/* \u2550\u2550\u2550 PDF CERTIFICAT (print-only layout) \u2550\u2550\u2550 *\/\r\n.cert-wrap{display:none}\r\n@media print{\r\n    #rs-app{display:none!important}\r\n    .cert-wrap{display:block!important}\r\n}\r\n#preview-ov{position:fixed;inset:0;background:rgba(13,27,42,.65);backdrop-filter:blur(8px);display:none;align-items:flex-start;justify-content:center;z-index:900;padding:24px;overflow-y:auto}\r\n#preview-ov.on{display:flex}\r\n.cert-page{background:#fff;width:210mm;min-height:297mm;padding:18mm 20mm;font-family:'Times New Roman',Times,serif;color:#000;box-shadow:0 8px 40px rgba(0,0,0,.25);position:relative;line-height:1.4;font-size:11pt}\r\n.cert-page .c-header{text-align:center;margin-bottom:6mm;border-bottom:2px solid #000;padding-bottom:4mm}\r\n.cert-page .c-header .c-rep{font-size:11pt;font-weight:700;letter-spacing:.04em}\r\n.cert-page .c-header .c-min{font-size:9pt;margin-top:1mm}\r\n.cert-page .c-header .c-dir{font-size:9pt;margin-top:.5mm}\r\n.cert-page .c-title{font-size:13pt;font-weight:700;text-align:center;margin:6mm 0 3mm;text-transform:uppercase;letter-spacing:.06em}\r\n.cert-page .c-title2{font-size:11pt;font-weight:700;text-align:center;margin-bottom:6mm}\r\n.cert-page .c-date-line{font-size:10pt;margin-bottom:5mm}\r\n.cert-page .c-date-line b{font-weight:700}\r\n.cert-page .c-section{margin-bottom:5mm}\r\n.cert-page .c-section-label{font-size:10pt;font-weight:700;text-transform:uppercase;text-decoration:underline;margin-bottom:2mm}\r\n.cert-page .c-row{display:flex;font-size:10pt;margin-bottom:1.5mm}\r\n.cert-page .c-row .c-lbl{min-width:55mm;font-weight:600;flex-shrink:0}\r\n.cert-page .c-row .c-val{border-bottom:1px solid #999;flex:1;padding:0 2mm 0.5mm;min-height:5mm}\r\n.cert-page table.c-tbl{width:100%;border-collapse:collapse;margin:3mm 0;font-size:10pt}\r\n.cert-page table.c-tbl th, .cert-page table.c-tbl td{border:1px solid #333;padding:2.5mm 3mm;text-align:left}\r\n.cert-page table.c-tbl th{background:#eee;font-weight:700;font-size:9pt;text-transform:uppercase}\r\n.cert-page table.c-tbl td.rn{text-align:right}\r\n.cert-page table.c-tbl .tot td{font-weight:700;background:#f5f5f5}\r\n.cert-page .c-sig{margin-top:10mm;font-size:10pt}\r\n.cert-page .c-sig .c-sig-line{margin-top:15mm;border-top:1px solid #000;width:55mm;padding-top:2mm;font-size:9pt}\r\n.cert-page .c-note{margin-top:8mm;font-size:8pt;border-top:1px solid #ccc;padding-top:3mm;color:#333}\r\n.cert-page .c-note b{font-weight:700}\r\n.cert-page .c-close{position:absolute;top:3mm;right:5mm;width:32px;height:32px;border:none;border-radius:8px;background:rgba(0,0,0,.05);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:18px;color:#666}\r\n.cert-page .c-close:hover{background:rgba(192,57,43,.1);color:#c0392b}\r\n\r\n\/* PDF OVERLAY *\/\r\n#rs-pdf-ov{position:fixed;inset:0;background:rgba(255,255,255,.95);backdrop-filter:blur(12px);display:none;flex-direction:column;align-items:center;justify-content:center;gap:18px;z-index:999}\r\n#rs-pdf-ov.on{display:flex}\r\n.spinner{width:40px;height:40px;border:3px solid var(--brd);border-top-color:var(--blue);border-radius:50%;animation:spin .7s linear infinite}\r\n@keyframes spin{to{transform:rotate(360deg)}}\r\n#rs-pdf-ov p{font-size:14px;color:var(--t3);font-weight:600}\r\n\r\n\/* TOAST *\/\r\n#rs-toast{position:fixed;bottom:32px;right:32px;padding:14px 24px;background:var(--dark);border-radius:var(--rm);color:#fff;font-size:13px;font-weight:600;box-shadow:var(--sh-lg);transform:translateY(80px);opacity:0;transition:all .35s cubic-bezier(.34,1.56,.64,1);z-index:9999;pointer-events:none}\r\n#rs-toast.on{transform:translateY(0);opacity:1}\r\n\r\n@media(max-width:640px){\r\n    .card{margin:12px}.sec{padding:20px 18px}\r\n    .grid{grid-template-columns:1fr}\r\n    .hero{padding:24px 18px 20px}\r\n    .hero-actions{flex-wrap:wrap}\r\n    .actions{flex-direction:column;padding:18px}\r\n    .cert-page{padding:12mm;font-size:9pt;width:100%;min-height:auto}\r\n}\r\n<\/style>\r\n\r\n<script>\r\n(function(){\r\n'use strict';\r\n\r\nconst STORAGE='rs_official_v1';\r\n\r\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n   BAR\u00c8ME OFFICIEL\r\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\r\nconst RATES=[\r\n    {label:\"Honoraires, commissions, courtages, loyers et r\u00e9mun\u00e9rations des activit\u00e9s non commerciales et de performance.\",old:\"15%\",now:\"10%\",val:10},\r\n    {label:\"Honoraires servis aux personnes soumises au r\u00e9gime r\u00e9el.\",old:\"5%\",now:\"3%\",val:3},\r\n    {label:\"Montants \u2265 1 000 DT \u2014 acquisitions marchandises, mat\u00e9riels, \u00e9quipements et services (soci\u00e9t\u00e9s IS 15%).\",old:\"1,5%\",now:\"1%\",val:1},\r\n    {label:\"Plus-value cession titres \u2014 soci\u00e9t\u00e9s non r\u00e9sidentes (max 5% du prix de cession).\",old:\"25%\",now:\"15%\",val:15},\r\n    {label:\"Plus-value cession biens immobiliers \u2014 soci\u00e9t\u00e9s non r\u00e9sidentes (base = prix de cession).\",old:\"15%\",now:\"10%\",val:10},\r\n    {label:\"Commissions pay\u00e9es pour les soci\u00e9t\u00e9s de commerce international.\",old:\"5%\",now:\"10%\",val:10}\r\n];\r\n\r\nconst DT={s:'DT',d:3};\r\nlet clientType='entreprise';\r\nconst today=new Date();\r\nconst td=today.toLocaleDateString('fr-FR');\r\nconst isoDate=today.toISOString().slice(0,10);\r\n\r\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n   ICONS\r\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\r\nconst I={\r\npdf:`<svg 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\"\/><line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\"\/><line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\"\/><\/svg>`,\r\neye:`<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\"\/><circle cx=\"12\" cy=\"12\" r=\"3\"\/><\/svg>`,\r\ndown:`<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"\/><polyline points=\"7 10 12 15 17 10\"\/><line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\"\/><\/svg>`,\r\nfile:`<svg 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\nuser:`<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\"\/><circle cx=\"12\" cy=\"7\" r=\"4\"\/><\/svg>`,\r\nusers:`<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"\/><circle cx=\"9\" cy=\"7\" r=\"4\"\/><\/svg>`,\r\nplus:`<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\/><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><\/svg>`,\r\nshield:`<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"\/><\/svg>`,\r\nhelp:`<svg 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\"\/><line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"\/><\/svg>`\r\n};\r\n\r\nfunction fmt(n){return n.toFixed(DT.d)+' '+DT.s}\r\nfunction pN(t){if(!t)return 0;const s=t.replace(\/[^\\d,.\\-]\/g,'').replace(',','.');const v=parseFloat(s);return isNaN(v)?0:v}\r\nfunction toast(m){const e=document.getElementById('rs-toast');if(!e)return;e.textContent=m;e.classList.add('on');setTimeout(()=>e.classList.remove('on'),2600)}\r\nfunction v(id){const el=document.getElementById(id);return el?el.value:''}\r\nconst root=document.getElementById('rs-app');\r\n\r\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n   BUILD\r\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\r\nfunction build(){\r\n    let rateRows='';\r\n    RATES.forEach((r,i)=>{\r\n        rateRows+=`<tr data-idx=\"${i}\" data-val=\"${r.val}\">\r\n            <td>${r.label}<\/td>\r\n            <td>${r.old}<\/td>\r\n            <td><span class=\"rate-tag\">${r.now}<\/span><\/td>\r\n        <\/tr>`;\r\n    });\r\n\r\n    root.innerHTML=`\r\n    <div id=\"rs-pdf-ov\"><div class=\"spinner\"><\/div><p>G\u00e9n\u00e9ration du PDF\u2026<\/p><\/div>\r\n    <div id=\"preview-ov\"><div class=\"cert-page\" id=\"cert-page\"><\/div><\/div>\r\n\r\n    <div class=\"hero np\">\r\n        <div class=\"hero-inner\">\r\n            <div class=\"hero-badge\">${I.shield} R\u00e9publique Tunisienne<\/div>\r\n            <h1>Certificat de <em>retenue d'imp\u00f4t<\/em><\/h1>\r\n            <p>Conforme au formulaire officiel du Minist\u00e8re du Plan et des Finances \u2014 Direction G\u00e9n\u00e9rale du Contr\u00f4le Fiscal.<\/p>\r\n            <div class=\"hero-actions\">\r\n                <button class=\"h-btn h-btn--pri\" id=\"b-pdf\">${I.pdf} T\u00e9l\u00e9charger PDF<\/button>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"card\">\r\n\r\n        <!-- FACTURE -->\r\n        <div class=\"sec\">\r\n            <div class=\"sec-title\"><span class=\"sec-icon sec-icon--gold\">${I.file}<\/span> Informations de la facture<\/div>\r\n            <div class=\"grid\">\r\n                <div class=\"field\"><label>Date de facturation<\/label><input id=\"i-date\" value=\"${isoDate}\"><\/div>\r\n                <div class=\"field\"><label>Num\u00e9ro de la facture<\/label><input id=\"i-fref\" placeholder=\"FAC-0001\" class=\"field-mono\"><\/div>\r\n                <div class=\"field\"><label>Montant TTC (DT)<\/label><input id=\"i-ttc\" value=\"0,000\" class=\"field-mono\" style=\"font-size:16px;padding:14px 16px\"><\/div>\r\n                <div class=\"field\">\r\n                    <label>Taux de la retenue<\/label>\r\n                    <select id=\"i-rate\">\r\n                        <option value=\"10\">10% \u2014 Honoraires, commissions, courtages\u2026<\/option>\r\n                        <option value=\"3\">3% \u2014 Honoraires r\u00e9gime r\u00e9el<\/option>\r\n                        <option value=\"1\">1% \u2014 Acquisitions \u2265 1 000 DT<\/option>\r\n                        <option value=\"15\">15% \u2014 Plus-value cession titres<\/option>\r\n                        <option value=\"10i\">10% \u2014 Plus-value cession immobiliers<\/option>\r\n                        <option value=\"10c\">10% \u2014 Commissions commerce international<\/option>\r\n                    <\/select>\r\n                    <span class=\"rate-link\" id=\"rate-help\">${I.help} Quel taux choisir ?<\/span>\r\n                <\/div>\r\n            <\/div>\r\n            <div class=\"rate-table-wrap\" id=\"rate-tbl-wrap\">\r\n                <table class=\"rate-table\"><thead><tr><th>D\u00e9signation<\/th><th style=\"text-align:center\">Ancien<\/th><th style=\"text-align:center\">Nouveau<\/th><\/tr><\/thead>\r\n                <tbody>${rateRows}<\/tbody><\/table>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <!-- SECTION A: PAYEUR -->\r\n        <div class=\"sec\">\r\n            <div class=\"sec-title\"><span class=\"sec-icon sec-icon--blue\">${I.user}<\/span> A \u2014 Personne ou organisme payeur<\/div>\r\n            <div class=\"grid\">\r\n                <div class=\"field full\"><label>D\u00e9nomination de la personne ou de l'organisme payeur<\/label><input id=\"i-pay-nom\" placeholder=\"Raison sociale de l'entreprise\"><\/div>\r\n                <div class=\"field full\"><label>Matricule fiscal \/ Identifiant unique<\/label><input id=\"i-pay-mf\" placeholder=\"XXXXXXXX \/ X \/ X \/ X \/ XXX\" class=\"field-mono\"><\/div>\r\n                <div class=\"field full\"><label>Adresse<\/label><input id=\"i-pay-adr\" placeholder=\"Adresse compl\u00e8te\"><\/div>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <!-- SECTION B: RETENUES -->\r\n        <div class=\"sec\">\r\n            <div class=\"sec-title\"><span class=\"sec-icon sec-icon--gold\">${I.file}<\/span> B \u2014 Retenues effectu\u00e9es sur<\/div>\r\n            <div class=\"lines-wrap\">\r\n                <table class=\"lines-tbl\" id=\"lines-tbl\">\r\n                    <thead><tr>\r\n                        <th>D\u00e9signation du revenu<\/th>\r\n                        <th class=\"rn\">Montant brut<\/th>\r\n                        <th class=\"rn\">Taux %<\/th>\r\n                        <th class=\"rn\">Montant retenu<\/th>\r\n                        <th class=\"rn\">Montant net<\/th>\r\n                        <th style=\"width:36px\"><\/th>\r\n                    <\/tr><\/thead>\r\n                    <tbody id=\"lines-tb\">\r\n                        <tr>\r\n                            <td contenteditable=\"true\" style=\"color:var(--t4);font-style:italic\" data-ph=\"Nature du revenu\"><\/td>\r\n                            <td class=\"rn\" contenteditable=\"true\">0,000<\/td>\r\n                            <td class=\"rn\"><input type=\"text\" class=\"field-mono\" style=\"background:var(--bg);border:1.5px solid transparent;border-radius:6px;padding:4px 8px;font-size:12px;width:50px;text-align:center\" value=\"10\" placeholder=\"%\"><\/td>\r\n                            <td class=\"rn\" style=\"font-weight:700\">0,000<\/td>\r\n                            <td class=\"rn\">0,000<\/td>\r\n                            <td><button class=\"si-del\">&times;<\/button><\/td>\r\n                        <\/tr>\r\n                    <\/tbody>\r\n                    <tfoot>\r\n                        <tr class=\"tot-row\">\r\n                            <td style=\"font-weight:800\">Total G\u00e9n\u00e9ral<\/td>\r\n                            <td class=\"rn\" id=\"tot-brut\" style=\"font-weight:800\">0,000<\/td>\r\n                            <td class=\"rn\"><\/td>\r\n                            <td class=\"rn\" id=\"tot-ret\" style=\"font-weight:800\">0,000<\/td>\r\n                            <td class=\"rn\" id=\"tot-net\" style=\"font-weight:800\">0,000<\/td>\r\n                            <td><\/td>\r\n                        <\/tr>\r\n                    <\/tfoot>\r\n                <\/table>\r\n            <\/div>\r\n            <div class=\"lines-add\"><button id=\"b-add-line\">${I.plus} Ajouter une ligne<\/button><\/div>\r\n        <\/div>\r\n\r\n        <!-- SECTION C: B\u00c9N\u00c9FICIAIRE -->\r\n        <div class=\"sec\">\r\n            <div class=\"sec-title\"><span class=\"sec-icon sec-icon--blue\">${I.users}<\/span> C \u2014 B\u00e9n\u00e9ficiaire<\/div>\r\n            <div class=\"type-toggle np\">\r\n                <button class=\"type-btn on\" data-type=\"entreprise\">Entreprise<\/button>\r\n                <button class=\"type-btn\" data-type=\"physique\">Personne physique<\/button>\r\n            <\/div>\r\n            <div class=\"grid\">\r\n                <div class=\"field full\"><label id=\"lbl-ben-nom\">Nom, pr\u00e9noms ou raison sociale<\/label><input id=\"i-ben-nom\" placeholder=\"Nom du b\u00e9n\u00e9ficiaire\"><\/div>\r\n                <div class=\"field\"><label id=\"lbl-ben-id\">Matricule fiscal \/ Identifiant unique<\/label><input id=\"i-ben-mf\" placeholder=\"XXXXXXXX \/ X \/ X \/ X \/ XXX\" class=\"field-mono\"><\/div>\r\n                <div class=\"field\"><label id=\"lbl-ben-carte\" style=\"display:none\">N\u00b0 de la carte ou de s\u00e9jour pour les \u00e9trangers<\/label><input id=\"i-ben-carte\" placeholder=\"\" style=\"display:none\" class=\"field-mono\"><\/div>\r\n                <div class=\"field full\"><label>Adresse professionnelle<\/label><input id=\"i-ben-adr-pro\" placeholder=\"Adresse professionnelle\"><\/div>\r\n                <div class=\"field full\"><label>Adresse de r\u00e9sidence<\/label><input id=\"i-ben-adr-res\" placeholder=\"Adresse de r\u00e9sidence\"><\/div>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <!-- ACTIONS -->\r\n        <div class=\"actions np\">\r\n            <button class=\"act-btn act-btn--ghost\" id=\"b-preview\">${I.eye} Pr\u00e9visualiser<\/button>\r\n            <button class=\"act-btn act-btn--pri\" id=\"b-pdf2\">${I.down} T\u00e9l\u00e9charger<\/button>\r\n        <\/div>\r\n    <\/div>`;\r\n\r\n    document.body.insertAdjacentHTML('beforeend','<div id=\"rs-toast\"><\/div>');\r\n    bind();recalcLines();\r\n}\r\n\r\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n   RECALC LINES\r\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\r\nfunction recalcLines(){\r\n    const rows=document.querySelectorAll('#lines-tb tr');\r\n    let totBrut=0,totRet=0,totNet=0;\r\n    rows.forEach(r=>{\r\n        const cells=r.children;if(cells.length<6)return;\r\n        const brut=pN(cells[1].textContent);\r\n        const rateInp=cells[2].querySelector('input');\r\n        const rate=rateInp?parseFloat(rateInp.value.replace(',','.')):0;\r\n        const ret=brut*(isNaN(rate)?0:rate)\/100;\r\n        const net=brut-ret;\r\n        totBrut+=brut;totRet+=ret;totNet+=net;\r\n        cells[3].textContent=ret.toFixed(3);\r\n        cells[4].textContent=net.toFixed(3);\r\n    });\r\n    document.getElementById('tot-brut').textContent=totBrut.toFixed(3);\r\n    document.getElementById('tot-ret').textContent=totRet.toFixed(3);\r\n    document.getElementById('tot-net').textContent=totNet.toFixed(3);\r\n}\r\n\r\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n   BUILD CERTIFICATE HTML (OFFICIAL FORMAT)\r\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\r\nfunction buildCert(){\r\n    \/* Gather lines *\/\r\n    let linesHTML='';\r\n    let totBrut=0,totRet=0,totNet=0;\r\n    document.querySelectorAll('#lines-tb tr').forEach(r=>{\r\n        const cells=r.children;if(cells.length<6)return;\r\n        const des=cells[0].textContent.trim()||'\u2014';\r\n        const brut=pN(cells[1].textContent);\r\n        const rateInp=cells[2].querySelector('input');\r\n        const rate=rateInp?parseFloat(rateInp.value.replace(',','.')):0;\r\n        const ret=brut*(isNaN(rate)?0:rate)\/100;\r\n        const net=brut-ret;\r\n        totBrut+=brut;totRet+=ret;totNet+=net;\r\n        linesHTML+=`<tr>\r\n            <td>${des}<\/td>\r\n            <td class=\"rn\">${brut.toFixed(3)}<\/td>\r\n            <td class=\"rn\">${(isNaN(rate)?0:rate)}%<\/td>\r\n            <td class=\"rn\">${ret.toFixed(3)}<\/td>\r\n            <td class=\"rn\">${net.toFixed(3)}<\/td>\r\n        <\/tr>`;\r\n    });\r\n\r\n    \/* Rate label *\/\r\n    const sel=document.getElementById('i-rate');\r\n    const rateText=sel.options[sel.selectedIndex].text;\r\n\r\n    const dateVal=v('i-date');\r\n    const clientLabel=clientType==='physique'?'N\u00b0 de la carte ou de s\u00e9jour pour les \u00e9trangers':'';\r\n\r\n    return `\r\n    <button class=\"c-close\" onclick=\"document.getElementById('preview-ov').classList.remove('on')\">&times;<\/button>\r\n\r\n    <div class=\"c-header\">\r\n        <div class=\"c-rep\">REPUBLIQUE TUNISIENNE<\/div>\r\n        <div class=\"c-min\">MINISTERE DU PLAN ET DES FINANCES<\/div>\r\n        <div class=\"c-dir\">DIRECTION GENERALE DU CONTROLE FISCAL<\/div>\r\n    <\/div>\r\n\r\n    <div class=\"c-title\">CERTIFICAT DE RETENUE D'IMPOT<\/div>\r\n    <div class=\"c-title2\">SUR LE REVENU OU D'IMPOT SUR LES SOCIETES<\/div>\r\n\r\n    <div class=\"c-date-line\">\r\n        Retenue effectu\u00e9e le ou pendant<sup>(1)<\/sup> : <b>${dateVal}<\/b>\r\n        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Facture : <b>${v('i-fref')||'\u2014'}<\/b>\r\n    <\/div>\r\n\r\n    <div class=\"c-section\">\r\n        <div class=\"c-section-label\">A.- PERSONNE OU ORGANISME PAYEUR<\/div>\r\n        <div class=\"c-row\"><span class=\"c-lbl\">IDENTIFIANT<\/span><span class=\"c-val\" style=\"font-size:8pt;padding-top:1mm\">Matricule fiscal - Identifiant unique<\/span><\/div>\r\n        <div class=\"c-row\"><span class=\"c-lbl\">&nbsp;<\/span><span class=\"c-val\" style=\"font-weight:700;font-size:10pt\">${v('i-pay-mf')||'\u2014'}<\/span><\/div>\r\n        <div class=\"c-row\"><span class=\"c-lbl\">D\u00e9nomination :<\/span><span class=\"c-val\">${v('i-pay-nom')||'\u2014'}<\/span><\/div>\r\n        <div class=\"c-row\"><span class=\"c-lbl\">Adresse :<\/span><span class=\"c-val\">${v('i-pay-adr')||'\u2014'}<\/span><\/div>\r\n    <\/div>\r\n\r\n    <div class=\"c-section\">\r\n        <div class=\"c-section-label\">B.- RETENUES EFFECTUEES SUR :<\/div>\r\n        <table class=\"c-tbl\">\r\n            <thead><tr>\r\n                <th>D\u00e9signation du revenu<\/th>\r\n                <th style=\"text-align:right\">Montant brut (DT)<\/th>\r\n                <th style=\"text-align:right\">Taux %<\/th>\r\n                <th style=\"text-align:right\">Montant retenu (DT)<\/th>\r\n                <th style=\"text-align:right\">Montant net (DT)<\/th>\r\n            <\/tr><\/thead>\r\n            <tbody>${linesHTML}<\/tbody>\r\n            <tfoot><tr class=\"tot\">\r\n                <td>Total G\u00e9n\u00e9ral<\/td>\r\n                <td class=\"rn\">${totBrut.toFixed(3)}<\/td>\r\n                <td class=\"rn\"><\/td>\r\n                <td class=\"rn\">${totRet.toFixed(3)}<\/td>\r\n                <td class=\"rn\">${totNet.toFixed(3)}<\/td>\r\n            <\/tr><\/tfoot>\r\n        <\/table>\r\n    <\/div>\r\n\r\n    <div class=\"c-section\">\r\n        <div class=\"c-section-label\">C.- BENEFICIAIRE<\/div>\r\n        ${clientLabel?`<div class=\"c-row\"><span class=\"c-lbl\">${clientLabel}<\/span><span class=\"c-val\">${v('i-ben-carte')||'\u2014'}<\/span><\/div>`:''}\r\n        <div class=\"c-row\"><span class=\"c-lbl\">IDENTIFIANT<\/span><span class=\"c-val\" style=\"font-size:8pt;padding-top:1mm\">Matricule fiscal - Identifiant unique<\/span><\/div>\r\n        <div class=\"c-row\"><span class=\"c-lbl\">&nbsp;<\/span><span class=\"c-val\" style=\"font-weight:700;font-size:10pt\">${v('i-ben-mf')||'\u2014'}<\/span><\/div>\r\n        <div class=\"c-row\"><span class=\"c-lbl\">Nom, pr\u00e9noms ou<br>raison sociale :<\/span><span class=\"c-val\">${v('i-ben-nom')||'\u2014'}<\/span><\/div>\r\n        <div class=\"c-row\"><span class=\"c-lbl\">Adresse<br>professionnelle :<\/span><span class=\"c-val\">${v('i-ben-adr-pro')||'\u2014'}<\/span><\/div>\r\n        <div class=\"c-row\"><span class=\"c-lbl\">Adresse de<br>r\u00e9sidence :<\/span><span class=\"c-val\">${v('i-ben-adr-res')||'\u2014'}<\/span><\/div>\r\n    <\/div>\r\n\r\n    <div class=\"c-sig\">\r\n        Je soussign\u00e9, certifie exacts les renseignements figurant sur le pr\u00e9sent certificat et m'expose aux sanctions pr\u00e9vues par la loi pour toute inexactitude.\r\n        <br><br>\r\n        TUNIS le ${dateVal}\r\n        <div class=\"c-sig-line\">Cachet et signature du payeur<\/div>\r\n    <\/div>\r\n\r\n    <div class=\"c-note\">\r\n        <sup>(1)<\/sup> Le certificat est d\u00e9livr\u00e9 \u00e0 l'occasion de chaque paiement. Toutefois, pour les op\u00e9rations r\u00e9p\u00e9titives, le certificat peut \u00eatre d\u00e9livr\u00e9 trimestriellement.\r\n    <\/div>`;\r\n}\r\n\r\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n   EVENTS\r\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\r\nfunction bind(){\r\n    \/* Lines recalc *\/\r\n    function bindLine(tr){\r\n        tr.querySelectorAll('[contenteditable]').forEach(c=>c.addEventListener('input',recalcLines));\r\n        const inp=tr.querySelector('input');\r\n        if(inp)inp.addEventListener('input',recalcLines);\r\n        const del=tr.querySelector('.si-del');\r\n        if(del)del.addEventListener('click',function(){\r\n            if(document.querySelectorAll('#lines-tb tr').length>1){tr.remove();recalcLines();}\r\n            else toast('Au moins une ligne requise.');\r\n        });\r\n    }\r\n    document.querySelectorAll('#lines-tb tr').forEach(bindLine);\r\n\r\n    \/* Add line *\/\r\n    document.getElementById('b-add-line').addEventListener('click',function(){\r\n        const tbody=document.getElementById('lines-tb');\r\n        const rateVal=parseFloat(document.getElementById('i-rate').value)||10;\r\n        const tr=document.createElement('tr');\r\n        tr.innerHTML=`\r\n            <td contenteditable=\"true\" style=\"color:var(--t4);font-style:italic\" data-ph=\"Nature du revenu\"><\/td>\r\n            <td class=\"rn\" contenteditable=\"true\">0,000<\/td>\r\n            <td class=\"rn\"><input type=\"text\" class=\"field-mono\" style=\"background:var(--bg);border:1.5px solid transparent;border-radius:6px;padding:4px 8px;font-size:12px;width:50px;text-align:center\" value=\"${rateVal}\" placeholder=\"%\"><\/td>\r\n            <td class=\"rn\" style=\"font-weight:700\">0,000<\/td>\r\n            <td class=\"rn\">0,000<\/td>\r\n            <td><button class=\"si-del\">&times;<\/button><\/td>`;\r\n        tbody.appendChild(tr);bindLine(tr);recalcLines();\r\n    });\r\n\r\n    \/* Rate help *\/\r\n    document.getElementById('rate-help').addEventListener('click',function(){\r\n        document.getElementById('rate-tbl-wrap').classList.toggle('show');\r\n    });\r\n\r\n    \/* Rate table click *\/\r\n    document.querySelectorAll('.rate-table tbody tr').forEach(tr=>{\r\n        tr.addEventListener('click',function(){\r\n            const val=this.getAttribute('data-val');\r\n            const sel=document.getElementById('i-rate');\r\n            for(let i=0;i<sel.options.length;i++){if(sel.options[i].value===val){sel.selectedIndex=i;break;}}\r\n            document.querySelectorAll('.rate-table tbody tr').forEach(r=>r.classList.remove('selected'));\r\n            this.classList.add('selected');\r\n            document.getElementById('rate-tbl-wrap').classList.remove('show');\r\n            \/* Update line rates *\/\r\n            document.querySelectorAll('#lines-tb input').forEach(inp=>{inp.value=parseFloat(val);});\r\n            recalcLines();\r\n        });\r\n    });\r\n\r\n    \/* Type toggle *\/\r\n    document.querySelectorAll('.type-btn').forEach(btn=>{\r\n        btn.addEventListener('click',function(){\r\n            document.querySelectorAll('.type-btn').forEach(b=>b.classList.remove('on'));\r\n            this.classList.add('on');\r\n            clientType=this.getAttribute('data-type');\r\n            const carteLbl=document.getElementById('lbl-ben-carte');\r\n            const carteInp=document.getElementById('i-ben-carte');\r\n            if(clientType==='physique'){\r\n                carteLbl.style.display='';carteInp.style.display='';\r\n                carteLbl.textContent='N\u00b0 de la carte ou de s\u00e9jour pour les \u00e9trangers';\r\n            }else{\r\n                carteLbl.style.display='none';carteInp.style.display='none';\r\n            }\r\n        });\r\n    });\r\n\r\n    \/* Preview *\/\r\n    document.getElementById('b-preview').addEventListener('click',function(){\r\n        document.getElementById('cert-page').innerHTML=buildCert();\r\n        document.getElementById('preview-ov').classList.add('on');\r\n    });\r\n\r\n    \/* PDF *\/\r\n    const doPDF=function(){\r\n        const certContent=buildCert();\r\n        const w=window.open('','','width=900,height=700');\r\n        w.document.write(`<!DOCTYPE html><html><head><meta charset=\"UTF-8\"><title>Certificat de Retenue<\/title>\r\n        <style>\r\n        @page{size:A4;margin:0}\r\n        body{margin:0;padding:18mm 20mm;font-family:'Times New Roman',Times,serif;color:#000;line-height:1.4;font-size:11pt}\r\n        .c-header{text-align:center;margin-bottom:6mm;border-bottom:2px solid #000;padding-bottom:4mm}\r\n        .c-header .c-rep{font-size:11pt;font-weight:700;letter-spacing:.04em}\r\n        .c-header .c-min,.c-header .c-dir{font-size:9pt;margin-top:.5mm}\r\n        .c-title{font-size:13pt;font-weight:700;text-align:center;margin:6mm 0 3mm;text-transform:uppercase;letter-spacing:.06em}\r\n        .c-title2{font-size:11pt;font-weight:700;text-align:center;margin-bottom:6mm}\r\n        .c-date-line{font-size:10pt;margin-bottom:5mm}\r\n        .c-date-line b{font-weight:700}\r\n        .c-section{margin-bottom:5mm}\r\n        .c-section-label{font-size:10pt;font-weight:700;text-transform:uppercase;text-decoration:underline;margin-bottom:2mm}\r\n        .c-row{display:flex;font-size:10pt;margin-bottom:1.5mm}\r\n        .c-row .c-lbl{min-width:55mm;font-weight:600;flex-shrink:0}\r\n        .c-row .c-val{border-bottom:1px solid #999;flex:1;padding:0 2mm 0.5mm;min-height:5mm}\r\n        table.c-tbl{width:100%;border-collapse:collapse;margin:3mm 0;font-size:10pt}\r\n        table.c-tbl th,table.c-tbl td{border:1px solid #333;padding:2.5mm 3mm;text-align:left}\r\n        table.c-tbl th{background:#eee;font-weight:700;font-size:9pt;text-transform:uppercase}\r\n        table.c-tbl td.rn{text-align:right}\r\n        table.c-tbl .tot td{font-weight:700;background:#f5f5f5}\r\n        .c-sig{margin-top:10mm;font-size:10pt}\r\n        .c-sig .c-sig-line{margin-top:15mm;border-top:1px solid #000;width:55mm;padding-top:2mm;font-size:9pt}\r\n        .c-note{margin-top:8mm;font-size:8pt;border-top:1px solid #ccc;padding-top:3mm;color:#333}\r\n        sup{font-size:7pt}\r\n        .c-close{display:none}\r\n        @media print{.c-close{display:none!important}}\r\n        <\/style><\/head><body>${certContent}<script>setTimeout(function(){window.print();},400);<\\\/script><\/body><\/html>`);\r\n        w.document.close();\r\n    };\r\n    document.getElementById('b-pdf').addEventListener('click',doPDF);\r\n    document.getElementById('b-pdf2').addEventListener('click',doPDF);\r\n}\r\n\r\nbuild();\r\n})();\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-11962","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/shopini.tn\/ar\/wp-json\/wp\/v2\/pages\/11962","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/shopini.tn\/ar\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/shopini.tn\/ar\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/shopini.tn\/ar\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/shopini.tn\/ar\/wp-json\/wp\/v2\/comments?post=11962"}],"version-history":[{"count":10,"href":"https:\/\/shopini.tn\/ar\/wp-json\/wp\/v2\/pages\/11962\/revisions"}],"predecessor-version":[{"id":11973,"href":"https:\/\/shopini.tn\/ar\/wp-json\/wp\/v2\/pages\/11962\/revisions\/11973"}],"wp:attachment":[{"href":"https:\/\/shopini.tn\/ar\/wp-json\/wp\/v2\/media?parent=11962"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}