{"id":2880,"date":"2026-04-05T06:53:36","date_gmt":"2026-04-05T06:53:36","guid":{"rendered":"https:\/\/yoni.online\/?page_id=2880"},"modified":"2026-04-05T06:54:31","modified_gmt":"2026-04-05T06:54:31","slug":"elementor-2880","status":"publish","type":"page","link":"https:\/\/yoni.online\/index.php\/elementor-2880\/","title":{"rendered":"Elementor #2880"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"2880\" class=\"elementor elementor-2880\">\n\t\t\t\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-2389529 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"2389529\" data-element_type=\"section\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-31d7589\" data-id=\"31d7589\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4e925c7 elementor-widget elementor-widget-html\" data-id=\"4e925c7\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<!DOCTYPE html>\n<html lang=\"he\" dir=\"rtl\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>\u05d9\u05d5\u05de\u05df \u05de\u05e9\u05d9\u05de\u05d5\u05ea \u05de\u05e9\u05d5\u05ea\u05e3<\/title>\n<style>\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Heebo:wght@300;400;500;600;700;800&display=swap');\n\n:root{\n  --bg:#edf4fb;\n  --surface:#ffffff;\n  --surface-2:#f7fbff;\n  --border:#d7e4f0;\n  --border-2:#bfd2e6;\n  --text:#112033;\n  --text-2:#48627d;\n  --text-3:#88a0b8;\n  --primary:#123c7a;\n  --primary-2:#0e2f60;\n  --primary-3:#1f57a8;\n  --primary-soft:#eaf2ff;\n  --green:#16a34a;\n  --green-soft:#eefbf3;\n  --red:#dc2626;\n  --red-soft:#fff2f2;\n  --orange:#ea580c;\n  --orange-soft:#fff6ee;\n  --purple:#6d5efc;\n  --purple-soft:#f2efff;\n  --pink:#d946ef;\n  --pink-soft:#fdf2ff;\n  --shadow:0 4px 12px rgba(17,32,51,.06),0 2px 4px rgba(17,32,51,.04);\n  --shadow-md:0 12px 28px rgba(18,60,122,.10),0 4px 12px rgba(18,60,122,.06);\n  --shadow-lg:0 22px 44px rgba(14,47,96,.18);\n  --radius:18px;\n  --radius-sm:12px;\n  --radius-lg:24px;\n}\n\n*{box-sizing:border-box;margin:0;padding:0}\n\nbody{\n  font-family:'Heebo',sans-serif;\n  background:linear-gradient(180deg,#edf4fb 0%,#f7faff 100%);\n  color:var(--text);\n  min-height:100vh;\n  font-size:16px;\n}\n\n.header{\n  position:sticky;\n  top:0;\n  z-index:100;\n  background:linear-gradient(135deg,var(--primary) 0%,var(--primary-2) 100%);\n  color:#fff;\n  box-shadow:0 8px 20px rgba(10,30,60,.18);\n}\n\n.header-inner{\n  max-width:1100px;\n  margin:0 auto;\n  padding:18px 18px 16px;\n  display:flex;\n  justify-content:space-between;\n  align-items:center;\n  gap:14px;\n  flex-wrap:wrap;\n}\n\n.brand{\n  display:flex;\n  align-items:center;\n  gap:14px;\n}\n\n.brand-icon{\n  width:56px;\n  height:56px;\n  border-radius:18px;\n  background:rgba(255,255,255,.14);\n  border:1px solid rgba(255,255,255,.18);\n  display:flex;\n  align-items:center;\n  justify-content:center;\n  font-size:1.5rem;\n}\n\n.brand-text h1{\n  font-size:1.4rem;\n  font-weight:800;\n  line-height:1.2;\n}\n\n.brand-text p{\n  margin-top:4px;\n  color:#d8e7ff;\n  font-size:.92rem;\n}\n\n.header-side{\n  display:flex;\n  gap:10px;\n  flex-wrap:wrap;\n}\n\n.header-pill{\n  padding:9px 14px;\n  border-radius:999px;\n  background:rgba(255,255,255,.14);\n  border:1px solid rgba(255,255,255,.18);\n  font-size:.84rem;\n  font-weight:700;\n}\n\n.nav-tabs{\n  position:sticky;\n  top:90px;\n  z-index:90;\n  background:rgba(255,255,255,.95);\n  backdrop-filter:blur(10px);\n  border-bottom:1px solid var(--border);\n  box-shadow:var(--shadow);\n}\n\n.nav-tabs-inner{\n  max-width:1100px;\n  margin:0 auto;\n  display:flex;\n  overflow-x:auto;\n  scrollbar-width:none;\n}\n.nav-tabs-inner::-webkit-scrollbar{display:none}\n\n.nav-tab{\n  flex-shrink:0;\n  padding:16px 20px;\n  cursor:pointer;\n  color:var(--text-2);\n  font-size:.96rem;\n  font-weight:800;\n  border-bottom:3px solid transparent;\n  transition:.2s;\n  white-space:nowrap;\n  display:flex;\n  align-items:center;\n  gap:8px;\n}\n.nav-tab:hover{color:var(--primary-3);background:#f8fbff}\n.nav-tab.active{\n  color:var(--primary);\n  border-bottom-color:var(--primary);\n  background:linear-gradient(180deg,#ffffff 0%,#f4f8ff 100%);\n}\n\n.main{\n  max-width:1100px;\n  margin:0 auto;\n  padding:18px;\n  padding-bottom:110px;\n}\n\n.section{display:none}\n.section.active{display:block}\n\n.summary-grid{\n  display:grid;\n  grid-template-columns:repeat(auto-fill,minmax(165px,1fr));\n  gap:12px;\n  margin-bottom:18px;\n}\n\n.summary-card{\n  background:linear-gradient(180deg,#ffffff 0%,#fbfdff 100%);\n  border:1.5px solid var(--border);\n  border-radius:20px;\n  padding:18px 14px;\n  text-align:center;\n  box-shadow:var(--shadow);\n  cursor:pointer;\n  transition:.18s;\n}\n.summary-card:hover{\n  transform:translateY(-2px);\n  box-shadow:var(--shadow-md);\n}\n.summary-card .num{\n  font-size:2.1rem;\n  font-weight:800;\n  line-height:1;\n  margin-bottom:7px;\n}\n.summary-card .label{\n  font-size:.84rem;\n  color:var(--text-2);\n  font-weight:700;\n  line-height:1.25;\n}\n.sc-total .num{color:var(--primary)}\n.sc-open .num{color:var(--text)}\n.sc-inprog .num{color:var(--orange)}\n.sc-done .num{color:var(--green)}\n.sc-urgent .num{color:var(--red)}\n.sc-late .num{color:var(--red)}\n.sc-ontime .num{color:var(--green)}\n.sc-yoni .num{color:var(--purple)}\n.sc-ilana .num{color:var(--pink)}\n\n.box{\n  background:var(--surface);\n  border:1.5px solid var(--border);\n  border-radius:20px;\n  box-shadow:var(--shadow);\n  overflow:hidden;\n  margin-bottom:18px;\n}\n\n.box-header{\n  background:linear-gradient(135deg,#163b72 0%,#102d57 100%);\n  color:#fff;\n  padding:15px 18px;\n  font-weight:800;\n  font-size:1rem;\n  display:flex;\n  align-items:center;\n  gap:8px;\n}\n\n.box-body{padding:12px}\n\n.alert-item{\n  display:flex;\n  align-items:flex-start;\n  gap:12px;\n  padding:14px;\n  border-radius:14px;\n  margin-bottom:10px;\n  font-size:.92rem;\n  line-height:1.5;\n}\n.alert-item:last-child{margin-bottom:0}\n.alert-urgent{background:var(--red-soft);border:1px solid #fecaca}\n.alert-warning{background:var(--orange-soft);border:1px solid #fed7aa}\n.alert-today{background:#eff6ff;border:1px solid #bfdbfe}\n.alert-pending{background:#f8fbff;border:1px solid var(--border)}\n.alert-icon{font-size:1.2rem;flex-shrink:0;margin-top:1px}\n.alert-text strong{display:block;font-weight:800}\n.no-alerts{\n  text-align:center;\n  color:var(--text-3);\n  padding:22px;\n  font-size:.92rem;\n}\n\n.filters-box{\n  background:var(--surface);\n  border:1.5px solid var(--border);\n  border-radius:20px;\n  padding:16px;\n  box-shadow:var(--shadow);\n  margin-bottom:16px;\n}\n\n.filters-row{\n  display:flex;\n  flex-wrap:wrap;\n  gap:10px;\n  align-items:center;\n}\n\n.search-wrap{\n  flex:1;\n  min-width:220px;\n  position:relative;\n}\n\n.search-wrap input{\n  width:100%;\n  padding:14px 42px 14px 14px;\n  border:1.5px solid var(--border-2);\n  border-radius:14px;\n  font-family:'Heebo',sans-serif;\n  font-size:.95rem;\n  color:var(--text);\n  background:var(--surface-2);\n  direction:rtl;\n}\n.search-wrap input:focus{\n  outline:none;\n  border-color:var(--primary-3);\n  box-shadow:0 0 0 4px rgba(31,87,168,.10);\n}\n.search-icon{\n  position:absolute;\n  right:14px;\n  top:50%;\n  transform:translateY(-50%);\n  color:var(--text-3);\n  font-size:1rem;\n  pointer-events:none;\n}\n\n.filter-select,\n.form-control,\n.cats-add-row input{\n  padding:13px 14px;\n  border:1.5px solid var(--border-2);\n  border-radius:14px;\n  font-family:'Heebo',sans-serif;\n  font-size:.92rem;\n  color:var(--text);\n  background:var(--surface-2);\n  direction:rtl;\n}\n.filter-select:focus,\n.form-control:focus,\n.cats-add-row input:focus{\n  outline:none;\n  border-color:var(--primary-3);\n  box-shadow:0 0 0 4px rgba(31,87,168,.10);\n}\n\n.filter-btn,\n.filter-clear{\n  padding:11px 16px;\n  border-radius:12px;\n  font-family:'Heebo',sans-serif;\n  font-size:.84rem;\n  font-weight:800;\n  cursor:pointer;\n  transition:.2s;\n  white-space:nowrap;\n}\n.filter-btn{\n  border:1.5px solid var(--border-2);\n  background:#f8fbff;\n  color:var(--text-2);\n}\n.filter-btn:hover{border-color:var(--primary-3);color:var(--primary-3)}\n.filter-btn.active{background:var(--primary);color:#fff;border-color:var(--primary)}\n.filter-btn.red.active{background:var(--red);border-color:var(--red)}\n.filter-clear{\n  background:transparent;\n  border:1.5px solid var(--border-2);\n  color:var(--text-3);\n}\n.filter-clear:hover{border-color:var(--red);color:var(--red)}\n\n.tasks-count{\n  font-size:.9rem;\n  color:var(--text-3);\n  margin-bottom:12px;\n  font-weight:700;\n}\n\n.tasks-grid{\n  display:flex;\n  flex-direction:column;\n  gap:12px;\n}\n\n.task-card{\n  background:linear-gradient(180deg,#ffffff 0%,#fbfdff 100%);\n  border:1.5px solid var(--border);\n  border-radius:20px;\n  box-shadow:var(--shadow);\n  overflow:hidden;\n  transition:.2s;\n}\n.task-card:hover{box-shadow:var(--shadow-md)}\n.task-card.late{border-right:5px solid var(--red)}\n.task-card.warning{border-right:5px solid var(--orange)}\n.task-card.done-ontime{border-right:5px solid var(--green)}\n.task-card.yoni-card{border-right:5px solid var(--purple)}\n.task-card.ilana-card{border-right:5px solid var(--pink)}\n\n.task-header{\n  padding:16px 16px 12px;\n  display:flex;\n  align-items:flex-start;\n  justify-content:space-between;\n  gap:12px;\n}\n.task-title-area{flex:1;min-width:0}\n.task-title{\n  font-size:1.08rem;\n  font-weight:800;\n  color:var(--text);\n  margin-bottom:6px;\n  line-height:1.35;\n}\n.task-meta{\n  display:flex;\n  flex-wrap:wrap;\n  gap:7px;\n  margin-bottom:6px;\n}\n.tag{\n  display:inline-flex;\n  align-items:center;\n  gap:4px;\n  padding:5px 10px;\n  border-radius:999px;\n  font-size:.76rem;\n  font-weight:800;\n  line-height:1.4;\n}\n.tag-yoni{background:var(--purple-soft);color:var(--purple)}\n.tag-ilana{background:var(--pink-soft);color:var(--pink)}\n.tag-urgent-max{background:#fef2f2;color:#b91c1c}\n.tag-urgent{background:#fff7ed;color:#c2410c}\n.tag-normal{background:#eff6ff;color:#1d4ed8}\n.tag-low{background:#eefbf3;color:#15803d}\n.tag-status{background:#f8fbff;color:var(--text-2);border:1px solid var(--border)}\n.tag-status.open{background:#eff6ff;color:#1d4ed8}\n.tag-status.inprog{background:#fff7ed;color:#c2410c}\n.tag-status.done{background:var(--green-soft);color:#15803d}\n.tag-status.cancelled{background:#fef2f2;color:#be123c}\n.tag-status.waiting{background:#faf5ff;color:#7e22ce}\n.tag-late{background:#fef2f2;color:#b91c1c}\n.tag-ontime{background:var(--green-soft);color:#15803d}\n.tag-inprog-t{background:#fff7ed;color:#c2410c}\n.tag-cat{background:#f8fbff;color:var(--text-2);border:1px solid var(--border)}\n\n.task-actions{\n  display:flex;\n  gap:8px;\n  flex-shrink:0;\n}\n.btn-icon{\n  width:40px;\n  height:40px;\n  border:none;\n  border-radius:12px;\n  cursor:pointer;\n  display:flex;\n  align-items:center;\n  justify-content:center;\n  font-size:1rem;\n  transition:.2s;\n}\n.btn-edit{background:#eff6ff;color:var(--primary-3)}\n.btn-edit:hover{background:var(--primary-3);color:#fff}\n.btn-delete{background:#fef2f2;color:var(--red)}\n.btn-delete:hover{background:var(--red);color:#fff}\n\n.task-body{padding:0 16px 16px}\n.task-desc{\n  font-size:.92rem;\n  color:var(--text-2);\n  margin-bottom:10px;\n  line-height:1.6;\n  background:#f8fbff;\n  border:1px solid #edf4fb;\n  border-radius:12px;\n  padding:10px 12px;\n}\n.task-times{\n  display:flex;\n  flex-wrap:wrap;\n  gap:12px;\n}\n.time-item{\n  display:flex;\n  flex-direction:column;\n  font-size:.8rem;\n  color:var(--text-3);\n  gap:2px;\n}\n.time-item strong{\n  color:var(--text-2);\n  font-size:.88rem;\n  font-weight:800;\n}\n.task-notes{\n  margin-top:10px;\n  font-size:.88rem;\n  color:var(--text-2);\n  font-style:italic;\n  border-right:3px solid var(--border-2);\n  padding-right:10px;\n}\n\n.attachments-box{\n  margin-top:12px;\n  background:#f8fbff;\n  border:1px dashed var(--border-2);\n  border-radius:12px;\n  padding:12px;\n}\n.attachments-title{\n  font-size:.84rem;\n  font-weight:800;\n  color:var(--primary);\n  margin-bottom:8px;\n}\n.attachments-list{\n  display:flex;\n  flex-wrap:wrap;\n  gap:8px;\n}\n.attachment-chip{\n  display:flex;\n  align-items:center;\n  gap:6px;\n  background:#fff;\n  border:1px solid var(--border);\n  border-radius:999px;\n  padding:8px 12px;\n  font-size:.8rem;\n  max-width:100%;\n}\n.attachment-chip a{\n  color:var(--primary);\n  text-decoration:none;\n  font-weight:800;\n  white-space:nowrap;\n  overflow:hidden;\n  text-overflow:ellipsis;\n  max-width:180px;\n}\n\n.no-tasks{\n  text-align:center;\n  padding:60px 20px;\n  color:var(--text-3);\n}\n.no-tasks .icon{font-size:3rem;margin-bottom:10px}\n.no-tasks p{font-size:1rem}\n\n.cats-box{\n  background:var(--surface);\n  border-radius:20px;\n  box-shadow:var(--shadow);\n  border:1.5px solid var(--border);\n  overflow:hidden;\n}\n.cats-header{\n  background:linear-gradient(135deg,#163b72 0%,#102d57 100%);\n  color:#fff;\n  padding:16px 18px;\n  font-weight:800;\n  font-size:1rem;\n}\n.cats-body{padding:18px}\n.cats-add-row{\n  display:flex;\n  gap:10px;\n  margin-bottom:18px;\n}\n.btn-add-cat{\n  padding:13px 18px;\n  background:linear-gradient(135deg,var(--primary) 0%,var(--primary-3) 100%);\n  color:#fff;\n  border:none;\n  border-radius:14px;\n  font-family:'Heebo',sans-serif;\n  font-size:.9rem;\n  font-weight:800;\n  cursor:pointer;\n}\n.cats-list{\n  display:flex;\n  flex-wrap:wrap;\n  gap:10px;\n}\n.cat-item{\n  display:flex;\n  align-items:center;\n  gap:8px;\n  background:#f8fbff;\n  border:1.5px solid var(--border);\n  border-radius:999px;\n  padding:7px 12px 7px 7px;\n  font-size:.9rem;\n  font-weight:700;\n}\n.cat-name{cursor:pointer}\n.btn-del-cat{\n  width:24px;\n  height:24px;\n  border-radius:50%;\n  border:none;\n  background:#fef2f2;\n  color:var(--red);\n  cursor:pointer;\n  font-size:.8rem;\n  display:flex;\n  align-items:center;\n  justify-content:center;\n}\n\n.modal-overlay{\n  display:none;\n  position:fixed;\n  inset:0;\n  background:rgba(9,18,35,.55);\n  z-index:200;\n  overflow-y:auto;\n  padding:16px;\n  backdrop-filter:blur(4px);\n}\n.modal-overlay.open{\n  display:flex;\n  align-items:flex-start;\n  justify-content:center;\n}\n.modal{\n  background:var(--surface);\n  border-radius:24px;\n  width:100%;\n  max-width:760px;\n  box-shadow:var(--shadow-lg);\n  overflow:hidden;\n  margin:auto;\n}\n.modal-header{\n  background:linear-gradient(135deg,var(--primary) 0%,var(--primary-2) 100%);\n  color:#fff;\n  padding:20px 22px;\n  display:flex;\n  align-items:center;\n  justify-content:space-between;\n}\n.modal-header h2{font-size:1.08rem;font-weight:800}\n.modal-close{\n  background:rgba(255,255,255,.14);\n  border:none;\n  color:#fff;\n  width:38px;\n  height:38px;\n  border-radius:50%;\n  cursor:pointer;\n  font-size:1.1rem;\n}\n.modal-body{padding:20px}\n.form-grid{\n  display:grid;\n  grid-template-columns:1fr 1fr;\n  gap:14px;\n}\n.form-grid .full{grid-column:1 \/ -1}\n.form-group{\n  display:flex;\n  flex-direction:column;\n  gap:7px;\n}\n.form-group label{\n  font-size:.84rem;\n  font-weight:800;\n  color:var(--text-2);\n}\ntextarea.form-control{\n  resize:vertical;\n  min-height:90px;\n}\n.upload-note{\n  font-size:.78rem;\n  color:var(--text-3);\n  margin-top:4px;\n}\n.file-list-edit{\n  display:flex;\n  flex-direction:column;\n  gap:8px;\n  margin-top:10px;\n}\n.file-row{\n  display:flex;\n  align-items:center;\n  justify-content:space-between;\n  gap:10px;\n  background:#f8fbff;\n  border:1px solid var(--border);\n  border-radius:12px;\n  padding:10px 12px;\n  font-size:.84rem;\n}\n.file-row-name{\n  display:flex;\n  align-items:center;\n  gap:8px;\n  min-width:0;\n}\n.file-row-name span:last-child{\n  overflow:hidden;\n  text-overflow:ellipsis;\n  white-space:nowrap;\n}\n.file-remove{\n  background:#fef2f2;\n  color:var(--red);\n  border:none;\n  border-radius:10px;\n  padding:6px 12px;\n  cursor:pointer;\n  font-family:'Heebo',sans-serif;\n  font-size:.8rem;\n  font-weight:800;\n}\n.modal-footer{\n  padding:18px 20px;\n  background:#f8fbff;\n  border-top:1px solid var(--border);\n  display:flex;\n  gap:10px;\n  justify-content:flex-start;\n}\n.btn-save{\n  padding:13px 26px;\n  background:linear-gradient(135deg,var(--primary) 0%,var(--primary-3) 100%);\n  color:#fff;\n  border:none;\n  border-radius:14px;\n  font-family:'Heebo',sans-serif;\n  font-size:.94rem;\n  font-weight:800;\n  cursor:pointer;\n}\n.btn-cancel{\n  padding:13px 22px;\n  background:transparent;\n  color:var(--text-2);\n  border:1.5px solid var(--border-2);\n  border-radius:14px;\n  font-family:'Heebo',sans-serif;\n  font-size:.92rem;\n  font-weight:700;\n  cursor:pointer;\n}\n\n.fab-add{\n  position:fixed;\n  left:18px;\n  bottom:18px;\n  width:68px;\n  height:68px;\n  border:none;\n  border-radius:50%;\n  background:linear-gradient(135deg,var(--primary) 0%,var(--primary-3) 100%);\n  color:#fff;\n  font-size:2rem;\n  font-weight:800;\n  cursor:pointer;\n  box-shadow:0 14px 28px rgba(18,60,122,.28);\n  z-index:150;\n  display:flex;\n  align-items:center;\n  justify-content:center;\n}\n.fab-add:hover{transform:translateY(-2px)}\n\n.toast-container{\n  position:fixed;\n  bottom:96px;\n  left:50%;\n  transform:translateX(-50%);\n  z-index:999;\n  display:flex;\n  flex-direction:column;\n  gap:8px;\n  width:min(92vw,380px);\n}\n.toast{\n  background:#1e293b;\n  color:#fff;\n  padding:13px 16px;\n  border-radius:14px;\n  font-size:.9rem;\n  font-weight:700;\n  box-shadow:var(--shadow-lg);\n  animation:slideUp .3s ease;\n}\n.toast.success{background:#15803d}\n.toast.error{background:#b91c1c}\n@keyframes slideUp{\n  from{opacity:0;transform:translateY(16px)}\n  to{opacity:1;transform:translateY(0)}\n}\n\n@media (max-width:720px){\n  body{font-size:15px}\n  .header-inner{padding:15px 14px}\n  .brand-text h1{font-size:1.15rem}\n  .brand-text p{font-size:.82rem}\n  .nav-tabs{top:86px}\n  .main{padding:12px;padding-bottom:110px}\n  .summary-grid{grid-template-columns:repeat(2,1fr)}\n  .summary-card{padding:16px 12px}\n  .summary-card .num{font-size:1.8rem}\n  .form-grid{grid-template-columns:1fr}\n  .task-title{font-size:1rem}\n  .nav-tab{padding:14px 16px;font-size:.9rem}\n  .cats-add-row{flex-direction:column}\n}\n\n@media (max-width:420px){\n  .summary-grid{grid-template-columns:repeat(2,1fr)}\n  .fab-add{\n    width:62px;\n    height:62px;\n    font-size:1.8rem;\n  }\n}\n<\/style>\n<\/head>\n<body>\n\n<div class=\"header\">\n  <div class=\"header-inner\">\n    <div class=\"brand\">\n      <div class=\"brand-icon\">\ud83d\udccb<\/div>\n      <div class=\"brand-text\">\n        <h1>\u05d9\u05d5\u05de\u05df \u05de\u05e9\u05d9\u05de\u05d5\u05ea \u05de\u05e9\u05d5\u05ea\u05e3<\/h1>\n        <p>\u05e0\u05d9\u05d4\u05d5\u05dc \u05de\u05e9\u05d9\u05de\u05d5\u05ea, \u05d6\u05de\u05e0\u05d9\u05dd, \u05de\u05e1\u05de\u05db\u05d9\u05dd \u05d5\u05d4\u05ea\u05e8\u05d0\u05d5\u05ea \u05d1\u05de\u05e7\u05d5\u05dd \u05d0\u05d7\u05d3<\/p>\n      <\/div>\n    <\/div>\n\n    <div class=\"header-side\">\n      <span class=\"header-pill\">\ud83e\udd1d \u05e2\u05d1\u05d5\u05d3\u05d4 \u05de\u05e9\u05d5\u05ea\u05e4\u05ea<\/span>\n      <span class=\"header-pill\" id=\"headerDate\"><\/span>\n    <\/div>\n  <\/div>\n<\/div>\n\n<div class=\"nav-tabs\">\n  <div class=\"nav-tabs-inner\">\n    <div class=\"nav-tab active\" data-section=\"dashboard\">\ud83c\udfe0 \u05e1\u05d9\u05db\u05d5\u05dd<\/div>\n    <div class=\"nav-tab\" data-section=\"tasks\">\ud83d\udccb \u05de\u05e9\u05d9\u05de\u05d5\u05ea<\/div>\n    <div class=\"nav-tab\" data-section=\"alerts\">\ud83d\udd14 \u05d4\u05ea\u05e8\u05d0\u05d5\u05ea<\/div>\n    <div class=\"nav-tab\" data-section=\"categories\">\ud83c\udff7\ufe0f \u05e7\u05d8\u05d2\u05d5\u05e8\u05d9\u05d5\u05ea<\/div>\n  <\/div>\n<\/div>\n\n<div class=\"main\">\n\n  <div id=\"sec-dashboard\" class=\"section active\">\n    <div class=\"summary-grid\" id=\"summaryGrid\"><\/div>\n\n    <div class=\"box\">\n      <div class=\"box-header\">\ud83d\udd14 \u05d4\u05ea\u05e8\u05d0\u05d5\u05ea \u05de\u05d4\u05d9\u05e8\u05d5\u05ea<\/div>\n      <div class=\"box-body\" id=\"quickAlerts\"><\/div>\n    <\/div>\n  <\/div>\n\n  <div id=\"sec-tasks\" class=\"section\">\n    <div class=\"filters-box\">\n      <div class=\"filters-row\">\n        <div class=\"search-wrap\">\n          <span class=\"search-icon\">\ud83d\udd0d<\/span>\n          <input type=\"text\" id=\"searchInput\" placeholder=\"\u05d7\u05d9\u05e4\u05d5\u05e9 \u05dc\u05e4\u05d9 \u05e9\u05dd \u05de\u05e9\u05d9\u05de\u05d4...\" oninput=\"renderTasks()\">\n        <\/div>\n\n        <select class=\"filter-select\" id=\"filterUser\" onchange=\"renderTasks()\">\n          <option value=\"\">\u05db\u05dc \u05d4\u05d0\u05d7\u05e8\u05d0\u05d9\u05dd<\/option>\n          <option value=\"\u05d9\u05d5\u05e0\u05d9\">\u05d9\u05d5\u05e0\u05d9<\/option>\n          <option value=\"\u05d0\u05d9\u05dc\u05e0\u05d4\">\u05d0\u05d9\u05dc\u05e0\u05d4<\/option>\n        <\/select>\n\n        <select class=\"filter-select\" id=\"filterCat\" onchange=\"renderTasks()\">\n          <option value=\"\">\u05db\u05dc \u05d4\u05e7\u05d8\u05d2\u05d5\u05e8\u05d9\u05d5\u05ea<\/option>\n        <\/select>\n\n        <select class=\"filter-select\" id=\"filterUrgency\" onchange=\"renderTasks()\">\n          <option value=\"\">\u05db\u05dc \u05d4\u05d3\u05d7\u05d9\u05e4\u05d5\u05d9\u05d5\u05ea<\/option>\n          <option value=\"\u05d3\u05d7\u05d5\u05e3 \u05de\u05d0\u05d5\u05d3\">\u05d3\u05d7\u05d5\u05e3 \u05de\u05d0\u05d5\u05d3<\/option>\n          <option value=\"\u05d3\u05d7\u05d5\u05e3\">\u05d3\u05d7\u05d5\u05e3<\/option>\n          <option value=\"\u05e8\u05d2\u05d9\u05dc\">\u05e8\u05d2\u05d9\u05dc<\/option>\n          <option value=\"\u05dc\u05d0 \u05d3\u05d7\u05d5\u05e3\">\u05dc\u05d0 \u05d3\u05d7\u05d5\u05e3<\/option>\n        <\/select>\n\n        <select class=\"filter-select\" id=\"filterStatus\" onchange=\"renderTasks()\">\n          <option value=\"\">\u05db\u05dc \u05d4\u05e1\u05d8\u05d8\u05d5\u05e1\u05d9\u05dd<\/option>\n          <option value=\"\u05e4\u05ea\u05d5\u05d7\">\u05e4\u05ea\u05d5\u05d7<\/option>\n          <option value=\"\u05d1\u05d8\u05d9\u05e4\u05d5\u05dc\">\u05d1\u05d8\u05d9\u05e4\u05d5\u05dc<\/option>\n          <option value=\"\u05de\u05de\u05ea\u05d9\u05df\">\u05de\u05de\u05ea\u05d9\u05df<\/option>\n          <option value=\"\u05d4\u05d5\u05e9\u05dc\u05dd\">\u05d4\u05d5\u05e9\u05dc\u05dd<\/option>\n          <option value=\"\u05d1\u05d5\u05d8\u05dc\">\u05d1\u05d5\u05d8\u05dc<\/option>\n        <\/select>\n      <\/div>\n\n      <div class=\"filters-row\" style=\"margin-top:10px;\">\n        <button class=\"filter-btn\" id=\"fbToday\" onclick=\"toggleFilter('today')\">\ud83d\udcc5 \u05d4\u05d9\u05d5\u05dd<\/button>\n        <button class=\"filter-btn red\" id=\"fbLate\" onclick=\"toggleFilter('late')\">\ud83d\udd34 \u05d1\u05d0\u05d9\u05d7\u05d5\u05e8<\/button>\n        <button class=\"filter-btn\" id=\"fbUrgent\" onclick=\"toggleFilter('urgent')\">\u26a1 \u05d3\u05d7\u05d5\u05e4\u05d5\u05ea<\/button>\n        <button class=\"filter-btn\" id=\"fbYoni\" onclick=\"toggleFilter('yoni')\">\ud83d\udc68 \u05d9\u05d5\u05e0\u05d9<\/button>\n        <button class=\"filter-btn\" id=\"fbIlana\" onclick=\"toggleFilter('ilana')\">\ud83d\udc69 \u05d0\u05d9\u05dc\u05e0\u05d4<\/button>\n        <button class=\"filter-clear\" onclick=\"clearFilters()\">\u2715 \u05e0\u05e7\u05d4 \u05e1\u05d9\u05e0\u05d5\u05df<\/button>\n      <\/div>\n    <\/div>\n\n    <div class=\"tasks-count\" id=\"tasksCount\"><\/div>\n    <div class=\"tasks-grid\" id=\"tasksList\"><\/div>\n  <\/div>\n\n  <div id=\"sec-alerts\" class=\"section\">\n    <div class=\"box\">\n      <div class=\"box-header\">\ud83d\udd34 \u05de\u05e9\u05d9\u05de\u05d5\u05ea \u05d3\u05d7\u05d5\u05e4\u05d5\u05ea<\/div>\n      <div class=\"box-body\" id=\"alertsUrgent\"><\/div>\n    <\/div>\n\n    <div class=\"box\">\n      <div class=\"box-header\">\u23f0 \u05de\u05ea\u05e7\u05e8\u05d1\u05d5\u05ea \u05dc\u05d3\u05d3\u05dc\u05d9\u05d9\u05df<\/div>\n      <div class=\"box-body\" id=\"alertsWarning\"><\/div>\n    <\/div>\n\n    <div class=\"box\">\n      <div class=\"box-header\">\ud83d\udd34 \u05e2\u05d1\u05e8\u05d5 \u05d0\u05ea \u05d6\u05de\u05df \u05d4\u05e1\u05d9\u05d5\u05dd \u05d4\u05d7\u05d9\u05d9\u05d1<\/div>\n      <div class=\"box-body\" id=\"alertsLate\"><\/div>\n    <\/div>\n\n    <div class=\"box\">\n      <div class=\"box-header\">\ud83d\udcc5 \u05de\u05e9\u05d9\u05de\u05d5\u05ea \u05e9\u05dc \u05d4\u05d9\u05d5\u05dd<\/div>\n      <div class=\"box-body\" id=\"alertsToday\"><\/div>\n    <\/div>\n\n    <div class=\"box\">\n      <div class=\"box-header\">\u23f3 \u05de\u05de\u05ea\u05d9\u05e0\u05d5\u05ea \u05dc\u05d8\u05d9\u05e4\u05d5\u05dc<\/div>\n      <div class=\"box-body\" id=\"alertsPending\"><\/div>\n    <\/div>\n  <\/div>\n\n  <div id=\"sec-categories\" class=\"section\">\n    <div class=\"cats-box\">\n      <div class=\"cats-header\">\ud83c\udff7\ufe0f \u05e0\u05d9\u05d4\u05d5\u05dc \u05e7\u05d8\u05d2\u05d5\u05e8\u05d9\u05d5\u05ea<\/div>\n      <div class=\"cats-body\">\n        <div class=\"cats-add-row\">\n          <input type=\"text\" id=\"newCatInput\" placeholder=\"\u05e9\u05dd \u05e7\u05d8\u05d2\u05d5\u05e8\u05d9\u05d4 \u05d7\u05d3\u05e9\u05d4...\" maxlength=\"30\">\n          <button class=\"btn-add-cat\" onclick=\"addCategory()\">+ \u05d4\u05d5\u05e1\u05e3<\/button>\n        <\/div>\n        <div class=\"cats-list\" id=\"catsList\"><\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n<\/div>\n\n<button class=\"fab-add\" onclick=\"openModal()\" title=\"\u05d4\u05d5\u05e1\u05e3 \u05de\u05e9\u05d9\u05de\u05d4\">\uff0b<\/button>\n\n<div class=\"modal-overlay\" id=\"taskModal\">\n  <div class=\"modal\">\n    <div class=\"modal-header\">\n      <h2 id=\"modalTitle\">\u05d4\u05d5\u05e1\u05e4\u05ea \u05de\u05e9\u05d9\u05de\u05d4 \u05d7\u05d3\u05e9\u05d4<\/h2>\n      <button class=\"modal-close\" onclick=\"closeModal()\">\u2715<\/button>\n    <\/div>\n\n    <div class=\"modal-body\">\n      <div class=\"form-grid\">\n        <div class=\"form-group full\">\n          <label>\u05db\u05d5\u05ea\u05e8\u05ea \u05de\u05e9\u05d9\u05de\u05d4 *<\/label>\n          <input type=\"text\" id=\"fTitle\" class=\"form-control\" placeholder=\"\u05db\u05d5\u05ea\u05e8\u05ea \u05d4\u05de\u05e9\u05d9\u05de\u05d4\" maxlength=\"100\">\n        <\/div>\n\n        <div class=\"form-group full\">\n          <label>\u05e4\u05d9\u05e8\u05d5\u05d8 \/ \u05ea\u05d9\u05d0\u05d5\u05e8<\/label>\n          <textarea id=\"fDesc\" class=\"form-control\" placeholder=\"\u05ea\u05d9\u05d0\u05d5\u05e8 \u05de\u05e4\u05d5\u05e8\u05d8 \u05e9\u05dc \u05d4\u05de\u05e9\u05d9\u05de\u05d4...\"><\/textarea>\n        <\/div>\n\n        <div class=\"form-group\">\n          <label>\u05d0\u05d7\u05e8\u05d0\u05d9 *<\/label>\n          <select id=\"fUser\" class=\"form-control\">\n            <option value=\"\">\u05d1\u05d7\u05e8 \u05d0\u05d7\u05e8\u05d0\u05d9<\/option>\n            <option value=\"\u05d9\u05d5\u05e0\u05d9\">\u05d9\u05d5\u05e0\u05d9<\/option>\n            <option value=\"\u05d0\u05d9\u05dc\u05e0\u05d4\">\u05d0\u05d9\u05dc\u05e0\u05d4<\/option>\n          <\/select>\n        <\/div>\n\n        <div class=\"form-group\">\n          <label>\u05e7\u05d8\u05d2\u05d5\u05e8\u05d9\u05d4<\/label>\n          <select id=\"fCat\" class=\"form-control\"><\/select>\n        <\/div>\n\n        <div class=\"form-group\">\n          <label>\u05e8\u05de\u05ea \u05d3\u05d7\u05d9\u05e4\u05d5\u05ea<\/label>\n          <select id=\"fUrgency\" class=\"form-control\">\n            <option value=\"\u05e8\u05d2\u05d9\u05dc\">\u05e8\u05d2\u05d9\u05dc<\/option>\n            <option value=\"\u05d3\u05d7\u05d5\u05e3 \u05de\u05d0\u05d5\u05d3\">\u05d3\u05d7\u05d5\u05e3 \u05de\u05d0\u05d5\u05d3<\/option>\n            <option value=\"\u05d3\u05d7\u05d5\u05e3\">\u05d3\u05d7\u05d5\u05e3<\/option>\n            <option value=\"\u05dc\u05d0 \u05d3\u05d7\u05d5\u05e3\">\u05dc\u05d0 \u05d3\u05d7\u05d5\u05e3<\/option>\n          <\/select>\n        <\/div>\n\n        <div class=\"form-group\">\n          <label>\u05e1\u05d8\u05d8\u05d5\u05e1<\/label>\n          <select id=\"fStatus\" class=\"form-control\">\n            <option value=\"\u05e4\u05ea\u05d5\u05d7\">\u05e4\u05ea\u05d5\u05d7<\/option>\n            <option value=\"\u05d1\u05d8\u05d9\u05e4\u05d5\u05dc\">\u05d1\u05d8\u05d9\u05e4\u05d5\u05dc<\/option>\n            <option value=\"\u05de\u05de\u05ea\u05d9\u05df\">\u05de\u05de\u05ea\u05d9\u05df<\/option>\n            <option value=\"\u05d4\u05d5\u05e9\u05dc\u05dd\">\u05d4\u05d5\u05e9\u05dc\u05dd<\/option>\n            <option value=\"\u05d1\u05d5\u05d8\u05dc\">\u05d1\u05d5\u05d8\u05dc<\/option>\n          <\/select>\n        <\/div>\n\n        <div class=\"form-group\">\n          <label>\u05ea\u05d0\u05e8\u05d9\u05da \u05de\u05e9\u05d9\u05de\u05d4<\/label>\n          <input type=\"date\" id=\"fDate\" class=\"form-control\">\n        <\/div>\n\n        <div class=\"form-group\">\n          <label>\u05d6\u05de\u05df \u05d4\u05ea\u05d7\u05dc\u05d4<\/label>\n          <input type=\"time\" id=\"fTimeStart\" class=\"form-control\">\n        <\/div>\n\n        <div class=\"form-group\">\n          <label>\u05d6\u05de\u05df \u05e1\u05d9\u05d5\u05dd \u05de\u05ea\u05d5\u05db\u05e0\u05df<\/label>\n          <input type=\"time\" id=\"fTimePlanned\" class=\"form-control\">\n        <\/div>\n\n        <div class=\"form-group\">\n          <label>\u05d6\u05de\u05df \u05e1\u05d9\u05d5\u05dd \u05d7\u05d9\u05d9\u05d1 \u26a0\ufe0f<\/label>\n          <input type=\"time\" id=\"fTimeDeadline\" class=\"form-control\">\n        <\/div>\n\n        <div class=\"form-group\">\n          <label>\u05d6\u05de\u05df \u05e1\u05d9\u05d5\u05dd \u05d1\u05e4\u05d5\u05e2\u05dc<\/label>\n          <input type=\"time\" id=\"fTimeActual\" class=\"form-control\">\n        <\/div>\n\n        <div class=\"form-group full\">\n          <label>\u05d4\u05e2\u05e8\u05d5\u05ea<\/label>\n          <input type=\"text\" id=\"fNotes\" class=\"form-control\" placeholder=\"\u05d4\u05e2\u05e8\u05d5\u05ea \u05e0\u05d5\u05e1\u05e4\u05d5\u05ea...\">\n        <\/div>\n\n        <div class=\"form-group full\">\n          <label>\u05e7\u05d1\u05e6\u05d9\u05dd \u05d5\u05de\u05e1\u05de\u05db\u05d9\u05dd<\/label>\n          <input type=\"file\" id=\"fFiles\" class=\"form-control\" multiple accept=\".pdf,.jpg,.jpeg,.png,.webp,.txt,.doc,.docx,.xls,.xlsx\">\n          <div class=\"upload-note\">\u05d0\u05e4\u05e9\u05e8 \u05dc\u05e9\u05de\u05d5\u05e8 \u05e7\u05d1\u05e6\u05d9\u05dd \u05e7\u05d8\u05e0\u05d9\u05dd \u05d1\u05dc\u05d1\u05d3 \u05d1\u05ea\u05d5\u05da \u05d4\u05d3\u05e4\u05d3\u05e4\u05df<\/div>\n          <div class=\"file-list-edit\" id=\"editFilesList\"><\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"modal-footer\">\n      <button class=\"btn-save\" onclick=\"saveTask()\">\ud83d\udcbe \u05e9\u05de\u05d5\u05e8 \u05de\u05e9\u05d9\u05de\u05d4<\/button>\n      <button class=\"btn-cancel\" onclick=\"closeModal()\">\u05d1\u05d9\u05d8\u05d5\u05dc<\/button>\n    <\/div>\n  <\/div>\n<\/div>\n\n<div class=\"toast-container\" id=\"toastContainer\"><\/div>\n\n<script>\nconst STORAGE_KEY = 'yoni_ilana_tasks_v3';\nconst CATS_KEY = 'yoni_ilana_cats_v3';\nconst DEFAULT_CATS = ['\u05e2\u05d1\u05d5\u05d3\u05d4','\u05d1\u05d9\u05ea','\u05d9\u05dc\u05d3\u05d9\u05dd','\u05db\u05e1\u05e4\u05d9\u05dd','\u05dc\u05e7\u05d5\u05d7\u05d5\u05ea','\u05e8\u05db\u05d1','\u05e1\u05d9\u05d3\u05d5\u05e8\u05d9\u05dd','\u05d1\u05e8\u05d9\u05d0\u05d5\u05ea','\u05d0\u05d9\u05e9\u05d9','\u05d0\u05d7\u05e8'];\n\nlet tasks = [];\nlet categories = [];\nlet activeFilters = {};\nlet editingId = null;\nlet tempFiles = [];\n\nfunction init() {\n  loadData();\n  setHeaderDate();\n  bindNavTabs();\n  bindFileInput();\n  renderAll();\n}\n\nfunction loadData() {\n  try { tasks = JSON.parse(localStorage.getItem(STORAGE_KEY)) || []; } catch(e){ tasks = []; }\n  try { categories = JSON.parse(localStorage.getItem(CATS_KEY)) || DEFAULT_CATS.slice(); } catch(e){ categories = DEFAULT_CATS.slice(); }\n  if(!categories.length) categories = DEFAULT_CATS.slice();\n}\n\nfunction saveData() {\n  localStorage.setItem(STORAGE_KEY, JSON.stringify(tasks));\n  localStorage.setItem(CATS_KEY, JSON.stringify(categories));\n}\n\nfunction setHeaderDate() {\n  const now = new Date();\n  const opts = { weekday:'long', year:'numeric', month:'long', day:'numeric' };\n  document.getElementById('headerDate').textContent = now.toLocaleDateString('he-IL', opts);\n}\n\nfunction bindNavTabs() {\n  document.querySelectorAll('.nav-tab').forEach(tab => {\n    tab.addEventListener('click', function(){\n      const section = this.dataset.section;\n      document.querySelectorAll('.nav-tab').forEach(t => t.classList.remove('active'));\n      document.querySelectorAll('.section').forEach(s => s.classList.remove('active'));\n      this.classList.add('active');\n      document.getElementById('sec-' + section).classList.add('active');\n      renderAll();\n    });\n  });\n}\n\nfunction showSection(sectionName){\n  document.querySelectorAll('.nav-tab').forEach(t => t.classList.remove('active'));\n  document.querySelectorAll('.section').forEach(s => s.classList.remove('active'));\n  const tab = document.querySelector('.nav-tab[data-section=\"'+sectionName+'\"]');\n  if(tab) tab.classList.add('active');\n  const sec = document.getElementById('sec-'+sectionName);\n  if(sec) sec.classList.add('active');\n  renderAll();\n}\n\nfunction getTimeStatus(task) {\n  const now = new Date();\n  const todayStr = now.toISOString().slice(0,10);\n  const taskDate = task.date || todayStr;\n  const deadlineStr = task.timeDeadline;\n  const actualStr = task.timeActual;\n  const status = task.status;\n\n  if (status === '\u05d1\u05d5\u05d8\u05dc') return { label:'\u05d1\u05d5\u05d8\u05dc', cls:'tag-status cancelled' };\n\n  if (status === '\u05d4\u05d5\u05e9\u05dc\u05dd') {\n    if (deadlineStr && actualStr) {\n      return actualStr <= deadlineStr\n        ? { label:'\u05e2\u05de\u05d3 \u05d1\u05d6\u05de\u05df \u2705', cls:'tag-ontime' }\n        : { label:'\u05d1\u05d0\u05d9\u05d7\u05d5\u05e8 \u274c', cls:'tag-late' };\n    }\n    return { label:'\u05d4\u05d5\u05e9\u05dc\u05dd \u2705', cls:'tag-ontime' };\n  }\n\n  if (deadlineStr) {\n    const deadlineDT = new Date(taskDate + 'T' + deadlineStr);\n    if (now > deadlineDT && status !== '\u05d4\u05d5\u05e9\u05dc\u05dd') {\n      return { label:'\u05d1\u05d0\u05d9\u05d7\u05d5\u05e8 \u274c', cls:'tag-late' };\n    }\n    const diff = (deadlineDT - now) \/ 1000 \/ 60 \/ 60;\n    if (diff <= 3 && diff > 0) return { label:'\u05de\u05ea\u05e7\u05e8\u05d1 \u26a0\ufe0f', cls:'tag-inprog-t' };\n  }\n\n  if (status === '\u05d1\u05d8\u05d9\u05e4\u05d5\u05dc') return { label:'\u05d1\u05d8\u05d9\u05e4\u05d5\u05dc \ud83d\udd04', cls:'tag-inprog-t' };\n  return { label:'\u05e4\u05ea\u05d5\u05d7', cls:'tag-status open' };\n}\n\nfunction isLate(task){ return getTimeStatus(task).cls === 'tag-late'; }\nfunction isWarning(task){ return getTimeStatus(task).cls === 'tag-inprog-t'; }\nfunction isDoneOnTime(task){ return getTimeStatus(task).cls === 'tag-ontime'; }\n\nfunction renderSummary() {\n  const total = tasks.length;\n  const open = tasks.filter(t => t.status === '\u05e4\u05ea\u05d5\u05d7').length;\n  const inprog = tasks.filter(t => t.status === '\u05d1\u05d8\u05d9\u05e4\u05d5\u05dc').length;\n  const done = tasks.filter(t => t.status === '\u05d4\u05d5\u05e9\u05dc\u05dd').length;\n  const urgent = tasks.filter(t => t.urgency === '\u05d3\u05d7\u05d5\u05e3 \u05de\u05d0\u05d5\u05d3' || t.urgency === '\u05d3\u05d7\u05d5\u05e3').length;\n  const late = tasks.filter(t => isLate(t)).length;\n  const ontime = tasks.filter(t => isDoneOnTime(t)).length;\n  const yoni = tasks.filter(t => t.user === '\u05d9\u05d5\u05e0\u05d9').length;\n  const ilana = tasks.filter(t => t.user === '\u05d0\u05d9\u05dc\u05e0\u05d4').length;\n\n  const data = [\n    { num:total, label:'\u05e1\u05d4\u05f4\u05db \u05de\u05e9\u05d9\u05de\u05d5\u05ea', cls:'sc-total', filter:null },\n    { num:open, label:'\u05e4\u05ea\u05d5\u05d7\u05d5\u05ea', cls:'sc-open', filter:'open' },\n    { num:inprog, label:'\u05d1\u05d8\u05d9\u05e4\u05d5\u05dc', cls:'sc-inprog', filter:'inprog' },\n    { num:done, label:'\u05d4\u05d5\u05e9\u05dc\u05de\u05d5', cls:'sc-done', filter:'done' },\n    { num:urgent, label:'\u05d3\u05d7\u05d5\u05e4\u05d5\u05ea', cls:'sc-urgent', filter:'urgent' },\n    { num:late, label:'\u05d1\u05d0\u05d9\u05d7\u05d5\u05e8', cls:'sc-late', filter:'late' },\n    { num:ontime, label:'\u05e2\u05de\u05d3\u05d5 \u05d1\u05d6\u05de\u05df', cls:'sc-ontime', filter:null },\n    { num:yoni, label:'\u05de\u05e9\u05d9\u05de\u05d5\u05ea \u05d9\u05d5\u05e0\u05d9', cls:'sc-yoni', filter:'yoni' },\n    { num:ilana, label:'\u05de\u05e9\u05d9\u05de\u05d5\u05ea \u05d0\u05d9\u05dc\u05e0\u05d4', cls:'sc-ilana', filter:'ilana' }\n  ];\n\n  document.getElementById('summaryGrid').innerHTML = data.map(d => `\n    <div class=\"summary-card ${d.cls}\" ${d.filter ? onclick=\"jumpToFilter('${d.filter}')\" : ''}>\n      <div class=\"num\">${d.num}<\/div>\n      <div class=\"label\">${d.label}<\/div>\n    <\/div>\n  `).join('');\n}\n\nfunction jumpToFilter(f) {\n  clearFilters();\n  if (f === 'open') document.getElementById('filterStatus').value = '\u05e4\u05ea\u05d5\u05d7';\n  if (f === 'inprog') document.getElementById('filterStatus').value = '\u05d1\u05d8\u05d9\u05e4\u05d5\u05dc';\n  if (f === 'done') document.getElementById('filterStatus').value = '\u05d4\u05d5\u05e9\u05dc\u05dd';\n  if (f === 'urgent') { activeFilters.urgent = true; document.getElementById('fbUrgent').classList.add('active'); }\n  if (f === 'late') { activeFilters.late = true; document.getElementById('fbLate').classList.add('active'); }\n  if (f === 'yoni') { activeFilters.yoni = true; document.getElementById('fbYoni').classList.add('active'); }\n  if (f === 'ilana') { activeFilters.ilana = true; document.getElementById('fbIlana').classList.add('active'); }\n  showSection('tasks');\n  renderTasks();\n}\n\nfunction renderQuickAlerts() {\n  const now = new Date();\n  const todayStr = now.toISOString().slice(0,10);\n  const items = [];\n\n  tasks.filter(t => isLate(t)).slice(0,3).forEach(t => {\n    items.push(<div class=\"alert-item alert-urgent\"><span class=\"alert-icon\">\ud83d\udd34<\/span><div class=\"alert-text\"><strong>${escapeHtml(t.title)}<\/strong><span>\u05d1\u05d0\u05d9\u05d7\u05d5\u05e8 \u2013 \u05d0\u05d7\u05e8\u05d0\u05d9: ${escapeHtml(t.user || '\u05dc\u05d0 \u05d4\u05d5\u05d2\u05d3\u05e8')}<\/span><\/div><\/div>);\n  });\n\n  tasks.filter(t => isWarning(t)).slice(0,3).forEach(t => {\n    items.push(<div class=\"alert-item alert-warning\"><span class=\"alert-icon\">\u26a0\ufe0f<\/span><div class=\"alert-text\"><strong>${escapeHtml(t.title)}<\/strong><span>\u05de\u05ea\u05e7\u05e8\u05d1 \u05dc\u05d3\u05d3\u05dc\u05d9\u05d9\u05df \u2013 ${escapeHtml(t.timeDeadline || '')}<\/span><\/div><\/div>);\n  });\n\n  tasks.filter(t => t.date === todayStr && t.status !== '\u05d4\u05d5\u05e9\u05dc\u05dd' && t.status !== '\u05d1\u05d5\u05d8\u05dc').slice(0,3).forEach(t => {\n    items.push(<div class=\"alert-item alert-today\"><span class=\"alert-icon\">\ud83d\udcc5<\/span><div class=\"alert-text\"><strong>${escapeHtml(t.title)}<\/strong><span>\u05de\u05e9\u05d9\u05de\u05d4 \u05dc\u05d4\u05d9\u05d5\u05dd \u2013 ${escapeHtml(t.user || '')}<\/span><\/div><\/div>);\n  });\n\n  const el = document.getElementById('quickAlerts');\n  el.innerHTML = items.length ? items.join('') : '<div class=\"no-alerts\">\u2705 \u05d0\u05d9\u05df \u05d4\u05ea\u05e8\u05d0\u05d5\u05ea \u05db\u05e8\u05d2\u05e2<\/div>';\n}\n\nfunction renderAlerts() {\n  const now = new Date();\n  const todayStr = now.toISOString().slice(0,10);\n\n  const urgentTasks = tasks.filter(t => (t.urgency === '\u05d3\u05d7\u05d5\u05e3 \u05de\u05d0\u05d5\u05d3' || t.urgency === '\u05d3\u05d7\u05d5\u05e3') && t.status !== '\u05d4\u05d5\u05e9\u05dc\u05dd' && t.status !== '\u05d1\u05d5\u05d8\u05dc');\n  const warningTasks = tasks.filter(t => isWarning(t));\n  const lateTasks = tasks.filter(t => isLate(t));\n  const todayTasks = tasks.filter(t => t.date === todayStr && t.status !== '\u05d4\u05d5\u05e9\u05dc\u05dd' && t.status !== '\u05d1\u05d5\u05d8\u05dc');\n  const pendingTasks = tasks.filter(t => t.status === '\u05de\u05de\u05ea\u05d9\u05df');\n\n  const render = (arr, elId, icon, colorCls) => {\n    const el = document.getElementById(elId);\n    if (!arr.length) {\n      el.innerHTML = '<div class=\"no-alerts\">\u05d0\u05d9\u05df \u05de\u05e9\u05d9\u05de\u05d5\u05ea \u05d1\u05e7\u05d8\u05d2\u05d5\u05e8\u05d9\u05d4 \u05d6\u05d5<\/div>';\n      return;\n    }\n    el.innerHTML = arr.map(t => `\n      <div class=\"alert-item ${colorCls}\">\n        <span class=\"alert-icon\">${icon}<\/span>\n        <div class=\"alert-text\">\n          <strong>${escapeHtml(t.title)}<\/strong>\n          <span>${escapeHtml(t.user || '')} | ${escapeHtml(t.category || '')} | ${escapeHtml(t.urgency || '')} ${t.timeDeadline ? '| \u05e1\u05d9\u05d5\u05dd \u05d7\u05d9\u05d9\u05d1: ' + escapeHtml(t.timeDeadline) : ''}<\/span>\n        <\/div>\n      <\/div>\n    `).join('');\n  };\n\n  render(urgentTasks, 'alertsUrgent', '\u26a1', 'alert-urgent');\n  render(warningTasks, 'alertsWarning', '\u23f0', 'alert-warning');\n  render(lateTasks, 'alertsLate', '\ud83d\udd34', 'alert-urgent');\n  render(todayTasks, 'alertsToday', '\ud83d\udcc5', 'alert-today');\n  render(pendingTasks, 'alertsPending', '\u23f3', 'alert-pending');\n}\n\nfunction renderCategories() {\n  const el = document.getElementById('catsList');\n  el.innerHTML = categories.map((c, i) => `\n    <div class=\"cat-item\">\n      <button class=\"btn-del-cat\" onclick=\"deleteCategory(${i})\">\u2715<\/button>\n      <span class=\"cat-name\" onclick=\"renameCat(${i},'${c.replace(\/'\/g,\"\\\\'\")}')\">\ud83c\udff7\ufe0f ${escapeHtml(c)}<\/span>\n    <\/div>\n  `).join('');\n\n  const opts = '<option value=\"\">\u05dc\u05dc\u05d0 \u05e7\u05d8\u05d2\u05d5\u05e8\u05d9\u05d4<\/option>' + categories.map(c => <option value=\"${escapeHtml(c)}\">${escapeHtml(c)}<\/option>).join('');\n  document.getElementById('fCat').innerHTML = opts;\n  document.getElementById('filterCat').innerHTML = '<option value=\"\">\u05db\u05dc \u05d4\u05e7\u05d8\u05d2\u05d5\u05e8\u05d9\u05d5\u05ea<\/option>' + categories.map(c => <option value=\"${escapeHtml(c)}\">${escapeHtml(c)}<\/option>).join('');\n}\n\nfunction addCategory() {\n  const input = document.getElementById('newCatInput');\n  const name = input.value.trim();\n  if (!name) { toast('\u05d4\u05d6\u05df \u05e9\u05dd \u05e7\u05d8\u05d2\u05d5\u05e8\u05d9\u05d4', 'error'); return; }\n  if (categories.includes(name)) { toast('\u05e7\u05d8\u05d2\u05d5\u05e8\u05d9\u05d4 \u05db\u05d1\u05e8 \u05e7\u05d9\u05d9\u05de\u05ea', 'error'); return; }\n  categories.push(name);\n  saveData();\n  input.value = '';\n  renderCategories();\n  toast('\u05e7\u05d8\u05d2\u05d5\u05e8\u05d9\u05d4 \u05e0\u05d5\u05e1\u05e4\u05d4 \u2705', 'success');\n}\n\nfunction deleteCategory(i) {\n  if (!confirm(\u05dc\u05de\u05d7\u05d5\u05e7 \u05d0\u05ea \u05d4\u05e7\u05d8\u05d2\u05d5\u05e8\u05d9\u05d4 \"${categories[i]}\"?)) return;\n  categories.splice(i, 1);\n  saveData();\n  renderCategories();\n  toast('\u05e7\u05d8\u05d2\u05d5\u05e8\u05d9\u05d4 \u05e0\u05de\u05d7\u05e7\u05d4', 'success');\n}\n\nfunction renameCat(i, old) {\n  const n = prompt('\u05e9\u05dd \u05d7\u05d3\u05e9 \u05dc\u05e7\u05d8\u05d2\u05d5\u05e8\u05d9\u05d4:', old);\n  if (!n || n === old) return;\n  categories[i] = n.trim();\n  saveData();\n  renderCategories();\n  toast('\u05e7\u05d8\u05d2\u05d5\u05e8\u05d9\u05d4 \u05e2\u05d5\u05d3\u05db\u05e0\u05d4 \u2705', 'success');\n}\n\nfunction openModal(id = null) {\n  editingId = id;\n  tempFiles = [];\n  document.getElementById('modalTitle').textContent = id ? '\u05e2\u05e8\u05d9\u05db\u05ea \u05de\u05e9\u05d9\u05de\u05d4' : '\u05d4\u05d5\u05e1\u05e4\u05ea \u05de\u05e9\u05d9\u05de\u05d4 \u05d7\u05d3\u05e9\u05d4';\n  clearForm();\n\n  if (id) {\n    const t = tasks.find(x => x.id === id);\n    if (!t) return;\n\n    document.getElementById('fTitle').value = t.title || '';\n    document.getElementById('fDesc').value = t.desc || '';\n    document.getElementById('fUser').value = t.user || '';\n    document.getElementById('fCat').value = t.category || '';\n    document.getElementById('fUrgency').value = t.urgency || '\u05e8\u05d2\u05d9\u05dc';\n    document.getElementById('fStatus').value = t.status || '\u05e4\u05ea\u05d5\u05d7';\n    document.getElementById('fDate').value = t.date || '';\n    document.getElementById('fTimeStart').value = t.timeStart || '';\n    document.getElementById('fTimePlanned').value = t.timePlanned || '';\n    document.getElementById('fTimeDeadline').value = t.timeDeadline || '';\n    document.getElementById('fTimeActual').value = t.timeActual || '';\n    document.getElementById('fNotes').value = t.notes || '';\n    tempFiles = Array.isArray(t.attachments) ? JSON.parse(JSON.stringify(t.attachments)) : [];\n  } else {\n    const now = new Date();\n    document.getElementById('fDate').value = now.toISOString().slice(0,10);\n  }\n\n  renderEditFiles();\n  document.getElementById('taskModal').classList.add('open');\n}\n\nfunction closeModal() {\n  document.getElementById('taskModal').classList.remove('open');\n  editingId = null;\n  tempFiles = [];\n  document.getElementById('fFiles').value = '';\n}\n\nfunction clearForm() {\n  ['fTitle','fDesc','fUser','fCat','fUrgency','fStatus','fDate','fTimeStart','fTimePlanned','fTimeDeadline','fTimeActual','fNotes'].forEach(id => {\n    const el = document.getElementById(id);\n    if (el.tagName === 'SELECT') el.selectedIndex = 0;\n    else el.value = '';\n  });\n  document.getElementById('editFilesList').innerHTML = '';\n  document.getElementById('fFiles').value = '';\n}\n\nfunction bindFileInput() {\n  const input = document.getElementById('fFiles');\n  input.addEventListener('change', async function() {\n    const files = Array.from(this.files || []);\n    if (!files.length) return;\n\n    for (const file of files) {\n      if (file.size > 700 * 1024) {\n        toast(\u05d4\u05e7\u05d5\u05d1\u05e5 ${file.name} \u05d2\u05d3\u05d5\u05dc \u05de\u05d3\u05d9 \u05dc\u05e9\u05de\u05d9\u05e8\u05d4 \u05de\u05e7\u05d5\u05de\u05d9\u05ea, 'error');\n        continue;\n      }\n\n      try {\n        const dataUrl = await fileToDataUrl(file);\n        tempFiles.push({\n          id: 'file_' + Date.now() + '_' + Math.floor(Math.random() * 99999),\n          name: file.name,\n          size: file.size,\n          type: file.type || 'application\/octet-stream',\n          dataUrl: dataUrl\n        });\n      } catch(e) {\n        toast(\u05dc\u05d0 \u05d4\u05e6\u05dc\u05d7\u05e0\u05d5 \u05dc\u05d8\u05e2\u05d5\u05df \u05d0\u05ea \u05d4\u05e7\u05d5\u05d1\u05e5 ${file.name}, 'error');\n      }\n    }\n\n    this.value = '';\n    renderEditFiles();\n  });\n}\n\nfunction renderEditFiles() {\n  const box = document.getElementById('editFilesList');\n  if (!tempFiles.length) {\n    box.innerHTML = '';\n    return;\n  }\n\n  box.innerHTML = tempFiles.map((file, index) => `\n    <div class=\"file-row\">\n      <div class=\"file-row-name\">\n        <span>\ud83d\udcce<\/span>\n        <span>${escapeHtml(file.name)}<\/span>\n      <\/div>\n      <button type=\"button\" class=\"file-remove\" onclick=\"removeTempFile(${index})\">\u05de\u05d7\u05e7<\/button>\n    <\/div>\n  `).join('');\n}\n\nfunction removeTempFile(index) {\n  tempFiles.splice(index, 1);\n  renderEditFiles();\n}\n\nasync function saveTask() {\n  const title = document.getElementById('fTitle').value.trim();\n  const user = document.getElementById('fUser').value;\n  if (!title) { toast('\u05e0\u05d0 \u05dc\u05d4\u05d6\u05d9\u05df \u05db\u05d5\u05ea\u05e8\u05ea \u05de\u05e9\u05d9\u05de\u05d4', 'error'); return; }\n  if (!user) { toast('\u05e0\u05d0 \u05dc\u05d1\u05d7\u05d5\u05e8 \u05d0\u05d7\u05e8\u05d0\u05d9', 'error'); return; }\n\n  const oldTask = editingId ? tasks.find(t => t.id === editingId) : null;\n\n  const taskData = {\n    id: editingId || Date.now().toString(),\n    title,\n    desc: document.getElementById('fDesc').value.trim(),\n    user,\n    category: document.getElementById('fCat').value,\n    urgency: document.getElementById('fUrgency').value || '\u05e8\u05d2\u05d9\u05dc',\n    status: document.getElementById('fStatus').value || '\u05e4\u05ea\u05d5\u05d7',\n    date: document.getElementById('fDate').value,\n    timeStart: document.getElementById('fTimeStart').value,\n    timePlanned: document.getElementById('fTimePlanned').value,\n    timeDeadline: document.getElementById('fTimeDeadline').value,\n    timeActual: document.getElementById('fTimeActual').value,\n    notes: document.getElementById('fNotes').value.trim(),\n    attachments: tempFiles,\n    createdAt: oldTask ? oldTask.createdAt : Date.now(),\n    updatedAt: Date.now()\n  };\n\n  try {\n    if (editingId) {\n      const idx = tasks.findIndex(t => t.id === editingId);\n      if (idx > -1) tasks[idx] = taskData;\n    } else {\n      tasks.unshift(taskData);\n    }\n\n    saveData();\n    closeModal();\n    renderAll();\n    toast(editingId ? '\u05de\u05e9\u05d9\u05de\u05d4 \u05e2\u05d5\u05d3\u05db\u05e0\u05d4 \u2705' : '\u05de\u05e9\u05d9\u05de\u05d4 \u05e0\u05d5\u05e1\u05e4\u05d4 \u2705', 'success');\n  } catch (e) {\n    toast('\u05d4\u05e9\u05de\u05d9\u05e8\u05d4 \u05e0\u05db\u05e9\u05dc\u05d4. \u05db\u05e0\u05e8\u05d0\u05d4 \u05d4\u05e7\u05d1\u05e6\u05d9\u05dd \u05d2\u05d3\u05d5\u05dc\u05d9\u05dd \u05de\u05d3\u05d9 \u05dc\u05d3\u05e4\u05d3\u05e4\u05df', 'error');\n  }\n}\n\nfunction deleteTask(id) {\n  if (!confirm('\u05dc\u05de\u05d7\u05d5\u05e7 \u05de\u05e9\u05d9\u05de\u05d4 \u05d6\u05d5?')) return;\n  tasks = tasks.filter(t => t.id !== id);\n  saveData();\n  renderAll();\n  toast('\u05de\u05e9\u05d9\u05de\u05d4 \u05e0\u05de\u05d7\u05e7\u05d4', 'success');\n}\n\nfunction toggleFilter(key) {\n  activeFilters[key] = !activeFilters[key];\n  const map = { today:'fbToday', late:'fbLate', urgent:'fbUrgent', yoni:'fbYoni', ilana:'fbIlana' };\n  const btn = document.getElementById(map[key]);\n  if (btn) btn.classList.toggle('active', activeFilters[key]);\n  renderTasks();\n}\n\nfunction clearFilters() {\n  document.getElementById('searchInput').value = '';\n  document.getElementById('filterUser').value = '';\n  document.getElementById('filterCat').value = '';\n  document.getElementById('filterUrgency').value = '';\n  document.getElementById('filterStatus').value = '';\n  activeFilters = {};\n  ['fbToday','fbLate','fbUrgent','fbYoni','fbIlana'].forEach(id => {\n    const el = document.getElementById(id);\n    if (el) el.classList.remove('active');\n  });\n  renderTasks();\n}\n\nfunction getFilteredTasks() {\n  const search = document.getElementById('searchInput').value.trim().toLowerCase();\n  const user = document.getElementById('filterUser').value;\n  const cat = document.getElementById('filterCat').value;\n  const urgency = document.getElementById('filterUrgency').value;\n  const status = document.getElementById('filterStatus').value;\n  const todayStr = new Date().toISOString().slice(0,10);\n\n  return tasks.filter(t => {\n    if (search && !((t.title || '').toLowerCase().includes(search) || (t.desc || '').toLowerCase().includes(search) || (t.notes || '').toLowerCase().includes(search))) return false;\n    if (user && t.user !== user) return false;\n    if (cat && t.category !== cat) return false;\n    if (urgency && t.urgency !== urgency) return false;\n    if (status && t.status !== status) return false;\n    if (activeFilters.today && t.date !== todayStr) return false;\n    if (activeFilters.late && !isLate(t)) return false;\n    if (activeFilters.urgent && t.urgency !== '\u05d3\u05d7\u05d5\u05e3 \u05de\u05d0\u05d5\u05d3' && t.urgency !== '\u05d3\u05d7\u05d5\u05e3') return false;\n    if (activeFilters.yoni && t.user !== '\u05d9\u05d5\u05e0\u05d9') return false;\n    if (activeFilters.ilana && t.user !== '\u05d0\u05d9\u05dc\u05e0\u05d4') return false;\n    return true;\n  });\n}\n\nfunction urgencyTag(u) {\n  const map = {\n    '\u05d3\u05d7\u05d5\u05e3 \u05de\u05d0\u05d5\u05d3':'tag-urgent-max',\n    '\u05d3\u05d7\u05d5\u05e3':'tag-urgent',\n    '\u05e8\u05d2\u05d9\u05dc':'tag-normal',\n    '\u05dc\u05d0 \u05d3\u05d7\u05d5\u05e3':'tag-low'\n  };\n  return <span class=\"tag ${map[u] || 'tag-normal'}\">\u26a1 ${escapeHtml(u || '\u05e8\u05d2\u05d9\u05dc')}<\/span>;\n}\n\nfunction statusTag(s) {\n  const map = {\n    '\u05e4\u05ea\u05d5\u05d7':'open',\n    '\u05d1\u05d8\u05d9\u05e4\u05d5\u05dc':'inprog',\n    '\u05d4\u05d5\u05e9\u05dc\u05dd':'done',\n    '\u05d1\u05d5\u05d8\u05dc':'cancelled',\n    '\u05de\u05de\u05ea\u05d9\u05df':'waiting'\n  };\n  return <span class=\"tag tag-status ${map[s] || ''}\">${escapeHtml(s || '\u05e4\u05ea\u05d5\u05d7')}<\/span>;\n}\n\nfunction fmt(t) { return t ? t.slice(0,5) : '\u2014'; }\nfunction fmtDate(d) {\n  if (!d) return '\u2014';\n  const [y,m,day] = d.split('-');\n  return ${day}\/${m}\/${y};\n}\n\nfunction renderTaskAttachments(task) {\n  if (!task.attachments || !task.attachments.length) return '';\n  return `\n    <div class=\"attachments-box\">\n      <div class=\"attachments-title\">\ud83d\udcce \u05de\u05e1\u05de\u05db\u05d9\u05dd \u05d5\u05e7\u05d1\u05e6\u05d9\u05dd<\/div>\n      <div class=\"attachments-list\">\n        ${task.attachments.map(file => `\n          <div class=\"attachment-chip\">\n            <span>\ud83d\udcc4<\/span>\n            <a href=\"${file.dataUrl}\" download=\"${escapeAttr(file.name)}\" target=\"_blank\">${escapeHtml(file.name)}<\/a>\n          <\/div>\n        `).join('')}\n      <\/div>\n    <\/div>\n  `;\n}\n\nfunction renderTasks() {\n  const filtered = getFilteredTasks();\n  document.getElementById('tasksCount').textContent = \u05de\u05e6\u05d9\u05d2 ${filtered.length} \u05de\u05ea\u05d5\u05da ${tasks.length} \u05de\u05e9\u05d9\u05de\u05d5\u05ea;\n\n  if (!filtered.length) {\n    document.getElementById('tasksList').innerHTML = <div class=\"no-tasks\"><div class=\"icon\">\ud83d\udccb<\/div><p>\u05d0\u05d9\u05df \u05de\u05e9\u05d9\u05de\u05d5\u05ea \u05dc\u05d4\u05e6\u05d2\u05d4<\/p><\/div>;\n    return;\n  }\n\n  const userCls = t => t.user === '\u05d9\u05d5\u05e0\u05d9' ? 'yoni-card' : t.user === '\u05d0\u05d9\u05dc\u05e0\u05d4' ? 'ilana-card' : '';\n  const cardCls = t => {\n    if (isLate(t)) return 'late';\n    if (isWarning(t)) return 'warning';\n    if (isDoneOnTime(t)) return 'done-ontime';\n    return userCls(t);\n  };\n\n  document.getElementById('tasksList').innerHTML = filtered.map(t => {\n    const ts = getTimeStatus(t);\n    const userTag = t.user === '\u05d9\u05d5\u05e0\u05d9'\n      ? <span class=\"tag tag-yoni\">\u05d9\u05d5\u05e0\u05d9<\/span>\n      : t.user === '\u05d0\u05d9\u05dc\u05e0\u05d4'\n      ? <span class=\"tag tag-ilana\">\u05d0\u05d9\u05dc\u05e0\u05d4<\/span>\n      : '';\n\n    return `\n      <div class=\"task-card ${cardCls(t)}\">\n        <div class=\"task-header\">\n          <div class=\"task-title-area\">\n            <div class=\"task-title\">${escapeHtml(t.title)}<\/div>\n            <div class=\"task-meta\">\n              ${userTag}\n              ${urgencyTag(t.urgency)}\n              ${statusTag(t.status)}\n              <span class=\"tag ${ts.cls}\">${escapeHtml(ts.label)}<\/span>\n              ${t.category ? <span class=\"tag tag-cat\">\ud83c\udff7\ufe0f ${escapeHtml(t.category)}<\/span> : ''}\n            <\/div>\n            <div style=\"font-size:.8rem;color:var(--text-3);\">\ud83d\udcc5 ${fmtDate(t.date)}<\/div>\n          <\/div>\n\n          <div class=\"task-actions\">\n            <button class=\"btn-icon btn-edit\" onclick=\"openModal('${t.id}')\" title=\"\u05e2\u05e8\u05d9\u05db\u05d4\">\u270f\ufe0f<\/button>\n            <button class=\"btn-icon btn-delete\" onclick=\"deleteTask('${t.id}')\" title=\"\u05de\u05d7\u05d9\u05e7\u05d4\">\ud83d\uddd1\ufe0f<\/button>\n          <\/div>\n        <\/div>\n\n        <div class=\"task-body\">\n          ${t.desc ? <div class=\"task-desc\">${escapeHtml(t.desc)}<\/div> : ''}\n\n          <div class=\"task-times\">\n            <div class=\"time-item\"><span>\u05d4\u05ea\u05d7\u05dc\u05d4<\/span><strong>${fmt(t.timeStart)}<\/strong><\/div>\n            <div class=\"time-item\"><span>\u05e1\u05d9\u05d5\u05dd \u05de\u05ea\u05d5\u05db\u05e0\u05df<\/span><strong>${fmt(t.timePlanned)}<\/strong><\/div>\n            <div class=\"time-item\"><span>\u05e1\u05d9\u05d5\u05dd \u05d7\u05d9\u05d9\u05d1 \u26a0\ufe0f<\/span><strong style=\"color:var(--red)\">${fmt(t.timeDeadline)}<\/strong><\/div>\n            <div class=\"time-item\"><span>\u05e1\u05d9\u05d5\u05dd \u05d1\u05e4\u05d5\u05e2\u05dc<\/span><strong style=\"color:var(--green)\">${fmt(t.timeActual)}<\/strong><\/div>\n          <\/div>\n\n          ${t.notes ? <div class=\"task-notes\">\ud83d\udcac ${escapeHtml(t.notes)}<\/div> : ''}\n\n          ${renderTaskAttachments(t)}\n        <\/div>\n      <\/div>\n    `;\n  }).join('');\n}\n\nfunction toast(msg, type = '') {\n  const el = document.createElement('div');\n  el.className = toast ${type};\n  el.textContent = msg;\n  document.getElementById('toastContainer').appendChild(el);\n  setTimeout(() => el.remove(), 3000);\n}\n\nfunction renderAll() {\n  renderSummary();\n  renderQuickAlerts();\n  renderAlerts();\n  renderCategories();\n  renderTasks();\n}\n\ndocument.getElementById('taskModal').addEventListener('click', function(e){\n  if (e.target === this) closeModal();\n});\n\ndocument.getElementById('newCatInput').addEventListener('keydown', e => {\n  if (e.key === 'Enter') addCategory();\n});\n\nfunction fileToDataUrl(file) {\n  return new Promise((resolve, reject) => {\n    const reader = new FileReader();\n    reader.onload = () => resolve(reader.result);\n    reader.onerror = reject;\n    reader.readAsDataURL(file);\n  });\n}\n\nfunction bindFileInput() {\n  const input = document.getElementById('fFiles');\n  input.addEventListener('change', async function() {\n    const files = Array.from(this.files || []);\n    if (!files.length) return;\n\n    for (const file of files) {\n      if (file.size > 700 * 1024) {\n        toast(\u05d4\u05e7\u05d5\u05d1\u05e5 ${file.name} \u05d2\u05d3\u05d5\u05dc \u05de\u05d3\u05d9 \u05dc\u05e9\u05de\u05d9\u05e8\u05d4 \u05de\u05e7\u05d5\u05de\u05d9\u05ea, 'error');\n        continue;\n      }\n\n      try {\n        const dataUrl = await fileToDataUrl(file);\n        tempFiles.push({\n          id: 'file_' + Date.now() + '_' + Math.floor(Math.random() * 99999),\n          name: file.name,\n          size: file.size,\n          type: file.type || 'application\/octet-stream',\n          dataUrl: dataUrl\n        });\n      } catch(e) {\n        toast(\u05dc\u05d0 \u05d4\u05e6\u05dc\u05d7\u05e0\u05d5 \u05dc\u05d8\u05e2\u05d5\u05df \u05d0\u05ea \u05d4\u05e7\u05d5\u05d1\u05e5 ${file.name}, 'error');\n      }\n    }\n\n    this.value = '';\n    renderEditFiles();\n  });\n}\n\nfunction renderEditFiles() {\n  const box = document.getElementById('editFilesList');\n  if (!tempFiles.length) {\n    box.innerHTML = '';\n    return;\n  }\n\n  box.innerHTML = tempFiles.map((file, index) => `\n    <div class=\"file-row\">\n      <div class=\"file-row-name\">\n        <span>\ud83d\udcce<\/span>\n        <span>${escapeHtml(file.name)}<\/span>\n      <\/div>\n      <button type=\"button\" class=\"file-remove\" onclick=\"removeTempFile(${index})\">\u05de\u05d7\u05e7<\/button>\n    <\/div>\n  `).join('');\n}\n\nfunction removeTempFile(index) {\n  tempFiles.splice(index, 1);\n  renderEditFiles();\n}\n\nfunction escapeHtml(str) {\n  return String(str ?? '')\n    .replace(\/&\/g,'&amp;')\n    .replace(\/<\/g,'&lt;')\n    .replace(\/>\/g,'&gt;')\n    .replace(\/\"\/g,'&quot;')\n    .replace(\/'\/g,'&#039;');\n}\n\nfunction escapeAttr(str) {\n  return String(str ?? '').replace(\/\"\/g,'&quot;');\n}\n\ninit();\n<\/script>\n<\/body>\n<\/html>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>\u05d9\u05d5\u05de\u05df \u05de\u05e9\u05d9\u05de\u05d5\u05ea \u05de\u05e9\u05d5\u05ea\u05e3 \ud83d\udccb \u05d9\u05d5\u05de\u05df \u05de\u05e9\u05d9\u05de\u05d5\u05ea \u05de\u05e9\u05d5\u05ea\u05e3 \u05e0\u05d9\u05d4\u05d5\u05dc \u05de\u05e9\u05d9\u05de\u05d5\u05ea, \u05d6\u05de\u05e0\u05d9\u05dd, \u05de\u05e1\u05de\u05db\u05d9\u05dd \u05d5\u05d4\u05ea\u05e8\u05d0\u05d5\u05ea \u05d1\u05de\u05e7\u05d5\u05dd \u05d0\u05d7\u05d3 \ud83e\udd1d \u05e2\u05d1\u05d5\u05d3\u05d4 \u05de\u05e9\u05d5\u05ea\u05e4\u05ea \ud83c\udfe0 \u05e1\u05d9\u05db\u05d5\u05dd \ud83d\udccb \u05de\u05e9\u05d9\u05de\u05d5\u05ea \ud83d\udd14 \u05d4\u05ea\u05e8\u05d0\u05d5\u05ea \ud83c\udff7\ufe0f \u05e7\u05d8\u05d2\u05d5\u05e8\u05d9\u05d5\u05ea \ud83d\udd14 \u05d4\u05ea\u05e8\u05d0\u05d5\u05ea \u05de\u05d4\u05d9\u05e8\u05d5\u05ea \ud83d\udd0d \u05db\u05dc \u05d4\u05d0\u05d7\u05e8\u05d0\u05d9\u05dd\u05d9\u05d5\u05e0\u05d9\u05d0\u05d9\u05dc\u05e0\u05d4 \u05db\u05dc \u05d4\u05e7\u05d8\u05d2\u05d5\u05e8\u05d9\u05d5\u05ea \u05db\u05dc \u05d4\u05d3\u05d7\u05d9\u05e4\u05d5\u05d9\u05d5\u05ea\u05d3\u05d7\u05d5\u05e3 \u05de\u05d0\u05d5\u05d3\u05d3\u05d7\u05d5\u05e3\u05e8\u05d2\u05d9\u05dc\u05dc\u05d0 \u05d3\u05d7\u05d5\u05e3 \u05db\u05dc \u05d4\u05e1\u05d8\u05d8\u05d5\u05e1\u05d9\u05dd\u05e4\u05ea\u05d5\u05d7\u05d1\u05d8\u05d9\u05e4\u05d5\u05dc\u05de\u05de\u05ea\u05d9\u05df\u05d4\u05d5\u05e9\u05dc\u05dd\u05d1\u05d5\u05d8\u05dc \ud83d\udcc5 \u05d4\u05d9\u05d5\u05dd \ud83d\udd34 \u05d1\u05d0\u05d9\u05d7\u05d5\u05e8 \u26a1 \u05d3\u05d7\u05d5\u05e4\u05d5\u05ea \ud83d\udc68 \u05d9\u05d5\u05e0\u05d9 \ud83d\udc69 \u05d0\u05d9\u05dc\u05e0\u05d4 \u2715 \u05e0\u05e7\u05d4 \u05e1\u05d9\u05e0\u05d5\u05df \ud83d\udd34 \u05de\u05e9\u05d9\u05de\u05d5\u05ea \u05d3\u05d7\u05d5\u05e4\u05d5\u05ea &hellip;<\/p>\n<p class=\"read-more\"> <a class=\"\" href=\"https:\/\/yoni.online\/index.php\/elementor-2880\/\"> <span class=\"screen-reader-text\">Elementor #2880<\/span> \u05dc\u05e7\u05e8\u05d9\u05d0\u05d4 \u00bb<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"page-builder","ast-global-header-display":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":""},"_links":{"self":[{"href":"https:\/\/yoni.online\/index.php\/wp-json\/wp\/v2\/pages\/2880"}],"collection":[{"href":"https:\/\/yoni.online\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/yoni.online\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/yoni.online\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/yoni.online\/index.php\/wp-json\/wp\/v2\/comments?post=2880"}],"version-history":[{"count":4,"href":"https:\/\/yoni.online\/index.php\/wp-json\/wp\/v2\/pages\/2880\/revisions"}],"predecessor-version":[{"id":2884,"href":"https:\/\/yoni.online\/index.php\/wp-json\/wp\/v2\/pages\/2880\/revisions\/2884"}],"wp:attachment":[{"href":"https:\/\/yoni.online\/index.php\/wp-json\/wp\/v2\/media?parent=2880"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}