{"id":8,"date":"2026-03-28T16:31:24","date_gmt":"2026-03-28T16:31:24","guid":{"rendered":"https:\/\/alisma.hu\/?page_id=8"},"modified":"2026-03-28T16:32:26","modified_gmt":"2026-03-28T16:32:26","slug":"fooldal","status":"publish","type":"page","link":"https:\/\/alisma.hu\/","title":{"rendered":"F\u0151oldal"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"8\" class=\"elementor elementor-8\">\n\t\t\t\t<div class=\"elementor-element elementor-element-982a634 e-flex e-con-boxed e-con e-parent\" data-id=\"982a634\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f90c055 elementor-widget elementor-widget-html\" data-id=\"f90c055\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\n<html lang=\"hu\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>Helyesb\u00edt\u0151 tev\u00e9kenys\u00e9gek nyilv\u00e1ntart\u00e1sa<\/title>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=IBM+Plex+Mono:wght@400;600&family=DM+Sans:wght@400;500;700&display=swap\" rel=\"stylesheet\">\n<style>\n  :root {\n    --bg: #0a0f1e; --bg2: #111827; --bg3: #1a2236;\n    --border: rgba(99,102,241,0.2);\n    --indigo: #6366f1; --indigo-light: #a5b4fc;\n    --green: #10b981; --amber: #f59e0b; --blue: #3b82f6; --red: #ef4444;\n    --text: #e2e8f0; --muted: #64748b;\n    --mono: 'IBM Plex Mono', monospace; --sans: 'DM Sans', sans-serif;\n  }\n  * { box-sizing: border-box; margin: 0; padding: 0; }\n  body {\n    background: var(--bg); color: var(--text);\n    font-family: var(--sans); min-height: 100vh;\n    background-image:\n      radial-gradient(ellipse at 20% 20%, rgba(99,102,241,0.07) 0%, transparent 60%),\n      radial-gradient(ellipse at 80% 80%, rgba(16,185,129,0.05) 0%, transparent 60%);\n  }\n\n  header {\n    position: sticky; top: 0; z-index: 100;\n    background: rgba(10,15,30,0.9); backdrop-filter: blur(16px);\n    border-bottom: 1px solid var(--border);\n    padding: 16px 28px 0;\n  }\n  .header-top { display: flex; align-items: center; gap: 12px; margin-bottom: 14px; }\n  .logo {\n    width: 40px; height: 40px; border-radius: 10px;\n    background: linear-gradient(135deg, var(--indigo), #8b5cf6);\n    display: flex; align-items: center; justify-content: center;\n    font-size: 18px; box-shadow: 0 0 20px rgba(99,102,241,0.4); flex-shrink:0;\n  }\n  .header-title { font-size: 16px; font-weight: 700; letter-spacing: -0.02em; }\n  .header-sub { font-size: 11px; color: var(--muted); margin-top:2px; font-family: var(--mono); }\n  .header-actions { margin-left: auto; display: flex; gap: 8px; align-items: center; }\n  .btn {\n    padding: 7px 16px; border-radius: 8px; border: none;\n    cursor: pointer; font-family: var(--sans); font-size: 12px; font-weight: 600;\n    display: flex; align-items: center; gap: 6px; transition: all 0.15s;\n  }\n  .btn-primary { background: var(--indigo); color: #fff; }\n  .btn-primary:hover { background: #4f46e5; box-shadow: 0 0 16px rgba(99,102,241,0.4); }\n  .btn-success { background: rgba(16,185,129,0.15); color: var(--green); border: 1px solid rgba(16,185,129,0.3); }\n  .btn-success:hover { background: rgba(16,185,129,0.25); }\n  .btn-danger { background: rgba(239,68,68,0.12); color: #fca5a5; border: 1px solid rgba(239,68,68,0.2); font-size: 11px; padding: 4px 10px; }\n  .btn-danger:hover { background: rgba(239,68,68,0.2); }\n  .record-count {\n    background: rgba(99,102,241,0.15); color: var(--indigo-light);\n    border: 1px solid rgba(99,102,241,0.3); border-radius: 20px;\n    padding: 3px 12px; font-size: 11px; font-weight: 600; font-family: var(--mono);\n  }\n  nav { display: flex; gap: 2px; }\n  .tab-btn {\n    padding: 7px 16px; border: none; cursor: pointer;\n    background: transparent; color: var(--muted);\n    font-family: var(--sans); font-size: 13px; font-weight: 500;\n    border-bottom: 2px solid transparent; transition: all 0.15s; border-radius: 6px 6px 0 0;\n  }\n  .tab-btn:hover { color: var(--text); background: rgba(255,255,255,0.04); }\n  .tab-btn.active { color: var(--indigo-light); border-bottom-color: var(--indigo); background: rgba(99,102,241,0.08); }\n\n  main { padding: 24px 28px; max-width: 1400px; margin: 0 auto; }\n  .tab-panel { display: none; animation: fadeIn 0.22s ease; }\n  .tab-panel.active { display: block; }\n  @keyframes fadeIn { from { opacity:0; transform:translateY(5px);} to { opacity:1; transform:none;} }\n\n  \/* === FORM === *\/\n  .form-card {\n    background: rgba(15,23,42,0.7); border: 1px solid var(--border);\n    border-radius: 14px; padding: 24px; margin-bottom: 22px;\n  }\n  .form-card-title {\n    font-size: 13px; font-weight: 700; color: var(--indigo-light);\n    text-transform: uppercase; letter-spacing: 0.06em;\n    margin-bottom: 18px; display: flex; align-items: center; gap: 8px;\n  }\n  .form-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 14px; }\n  .form-group { display: flex; flex-direction: column; gap: 5px; }\n  .form-group.full { grid-column: 1 \/ -1; }\n  label { font-size: 11px; font-weight: 600; color: var(--muted); text-transform: uppercase; letter-spacing: 0.05em; }\n  input, select, textarea {\n    background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.1);\n    border-radius: 8px; padding: 9px 12px; color: var(--text);\n    font-family: var(--sans); font-size: 13px; outline: none;\n    transition: border-color 0.15s, box-shadow 0.15s;\n  }\n  input:focus, select:focus, textarea:focus {\n    border-color: var(--indigo); box-shadow: 0 0 0 3px rgba(99,102,241,0.15);\n  }\n  textarea { resize: vertical; min-height: 70px; }\n  select option { background: #1a2236; color: var(--text); }\n  .form-actions { display: flex; gap: 10px; margin-top: 18px; justify-content: flex-end; }\n\n  \/* === DEADLINE WARNING === *\/\n  #deadline-banner {\n    display: none; margin-bottom: 16px;\n    background: rgba(239,68,68,0.12); border: 1px solid rgba(239,68,68,0.35);\n    border-radius: 12px; padding: 14px 18px;\n    animation: fadeIn 0.3s ease;\n  }\n  .deadline-banner-top { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; }\n  .deadline-banner-title { font-weight: 700; color: #f87171; font-size: 14px; flex: 1; }\n  .deadline-list { display: flex; flex-direction: column; gap: 6px; margin-bottom: 12px; }\n  .deadline-item {\n    display: flex; align-items: center; gap: 10px; padding: 7px 12px;\n    background: rgba(239,68,68,0.08); border: 1px solid rgba(239,68,68,0.2);\n    border-radius: 8px; font-size: 12px; color: #fca5a5;\n  }\n  .deadline-item strong { color: #f87171; }\n  .btn-email { background: #ef4444; color: #fff; border: none; }\n  .btn-email:hover { background: #dc2626; box-shadow: 0 0 16px rgba(239,68,68,0.4); }\n\n  \/* === FILE UPLOAD === *\/\n  .file-upload-area {\n    border: 2px dashed rgba(99,102,241,0.3); border-radius: 10px;\n    padding: 18px; text-align: center; cursor: pointer;\n    transition: all 0.2s; background: rgba(99,102,241,0.04);\n    position: relative;\n  }\n  .file-upload-area:hover, .file-upload-area.dragover {\n    border-color: var(--indigo); background: rgba(99,102,241,0.1);\n  }\n  .file-upload-area input[type=file] {\n    position: absolute; inset: 0; opacity: 0; cursor: pointer; width: 100%; height: 100%;\n  }\n  .file-upload-text { font-size: 13px; color: var(--muted); pointer-events: none; }\n  .file-upload-text strong { color: var(--indigo-light); }\n  .file-list { display: flex; flex-direction: column; gap: 6px; margin-top: 10px; }\n  .file-item {\n    display: flex; align-items: center; gap: 8px; padding: 7px 12px;\n    background: rgba(99,102,241,0.08); border: 1px solid rgba(99,102,241,0.2);\n    border-radius: 8px; font-size: 12px;\n  }\n  .file-item-icon { font-size: 16px; flex-shrink: 0; }\n  .file-item-name { flex: 1; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n  .file-item-size { color: var(--muted); font-family: var(--mono); font-size: 11px; flex-shrink: 0; }\n  .file-item-remove { cursor: pointer; color: #f87171; font-size: 14px; flex-shrink: 0; padding: 0 4px; }\n  .file-item-remove:hover { color: var(--red); }\n  .file-badge {\n    display: inline-flex; align-items: center; gap: 4px;\n    background: rgba(99,102,241,0.15); color: var(--indigo-light);\n    border: 1px solid rgba(99,102,241,0.3); border-radius: 6px;\n    padding: 2px 8px; font-size: 11px; font-family: var(--mono);\n    cursor: pointer; transition: background 0.1s;\n  }\n  .file-badge:hover { background: rgba(99,102,241,0.25); }\n\n  \/* === TABLE === *\/\n  .table-wrap { overflow-x: auto; border-radius: 12px; border: 1px solid var(--border); }\n  table { width: 100%; border-collapse: collapse; }\n  thead tr { background: rgba(99,102,241,0.1); }\n  th {\n    padding: 10px 12px; text-align: left;\n    font-size: 10px; font-weight: 700; color: var(--indigo-light);\n    letter-spacing: 0.07em; text-transform: uppercase;\n    border-bottom: 1px solid var(--border); white-space: nowrap;\n    font-family: var(--mono);\n  }\n  td {\n    padding: 0; font-size: 13px;\n    border-bottom: 1px solid rgba(255,255,255,0.04); vertical-align: middle;\n  }\n  tr:last-child td { border-bottom: none; }\n  tbody tr:nth-child(odd) { background: rgba(10,15,30,0.5); }\n  tbody tr:nth-child(even) { background: rgba(26,34,54,0.35); }\n  tbody tr:hover { background: rgba(99,102,241,0.07); }\n  .cell-inner {\n    padding: 9px 12px; min-height: 38px; display: flex; align-items: center;\n    cursor: text; min-width: 80px;\n  }\n  .cell-inner[contenteditable=\"true\"] {\n    outline: 2px solid var(--indigo);\n    background: rgba(99,102,241,0.1); border-radius: 4px;\n    cursor: text; min-width: 120px;\n  }\n  .cell-inner.empty-cell { color: #2d3748; font-style: italic; }\n  .cell-num { padding: 9px 12px; font-weight: 700; font-family: var(--mono); color: var(--indigo-light); text-align: center; }\n  .pill {\n    display: inline-block; border-radius: 6px;\n    padding: 2px 9px; font-size: 11px; font-weight: 600;\n    border: 1px solid; font-family: var(--mono); white-space: nowrap;\n  }\n  .td-actions { padding: 6px 10px; }\n  .edit-hint { font-size: 10px; color: var(--muted); margin-bottom: 10px; font-family: var(--mono); }\n\n  \/* === FILTER ROW === *\/\n  .filter-row th { padding: 5px 6px; background: rgba(10,15,30,0.8); border-bottom: 1px solid var(--border); }\n  .filter-row th input,\n  .filter-row th select {\n    width: 100%; padding: 4px 7px; font-size: 11px;\n    background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.08);\n    border-radius: 6px; color: var(--text); font-family: var(--mono);\n    min-width: 0; transition: border-color 0.15s;\n  }\n  .filter-row th input:focus,\n  .filter-row th select:focus {\n    border-color: var(--indigo); outline: none;\n    box-shadow: 0 0 0 2px rgba(99,102,241,0.15);\n  }\n  .filter-row th input::placeholder { color: #334155; }\n  .filter-row th select option { background: #1a2236; }\n  .filter-active-badge {\n    display: inline-flex; align-items: center; gap: 5px;\n    background: rgba(99,102,241,0.18); color: var(--indigo-light);\n    border: 1px solid rgba(99,102,241,0.35); border-radius: 20px;\n    padding: 2px 10px; font-size: 11px; font-weight: 600; font-family: var(--mono);\n    cursor: pointer; margin-left: 6px; transition: background 0.15s;\n  }\n  .filter-active-badge:hover { background: rgba(239,68,68,0.2); color: #fca5a5; border-color: rgba(239,68,68,0.3); }\n\n  \/* === TOAST === *\/\n  #toast {\n    position: fixed; bottom: 24px; right: 24px; z-index: 999;\n    background: rgba(16,185,129,0.15); border: 1px solid rgba(16,185,129,0.4);\n    color: var(--green); border-radius: 10px; padding: 12px 20px;\n    font-size: 13px; font-weight: 600; opacity: 0;\n    transition: opacity 0.3s; pointer-events: none;\n  }\n  #toast.show { opacity: 1; }\n\n  \/* === FELEL\u0150S ADATB\u00c1ZIS === *\/\n  .felelos-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px,1fr)); gap: 16px; margin-bottom: 24px; }\n  .felelos-card {\n    background: rgba(15,23,42,0.7); border: 1px solid var(--border);\n    border-radius: 12px; padding: 16px; display: flex; flex-direction: column; gap: 8px;\n    transition: border-color 0.15s;\n  }\n  .felelos-card:hover { border-color: rgba(99,102,241,0.4); }\n  .felelos-card-header { display: flex; align-items: center; gap: 10px; }\n  .felelos-avatar {\n    width: 38px; height: 38px; border-radius: 50%; flex-shrink: 0;\n    background: linear-gradient(135deg, var(--indigo), #8b5cf6);\n    display: flex; align-items: center; justify-content: center;\n    font-size: 15px; font-weight: 700; color: #fff;\n  }\n  .felelos-name { font-weight: 700; font-size: 14px; color: var(--text); }\n  .felelos-beosztas { font-size: 12px; color: var(--muted); }\n  .felelos-email { font-size: 12px; color: var(--indigo-light); font-family: var(--mono); }\n  .felelos-actions { display: flex; gap: 6px; margin-top: 4px; }\n  .btn-edit-small {\n    background: rgba(99,102,241,0.15); color: var(--indigo-light);\n    border: 1px solid rgba(99,102,241,0.3); font-size: 11px; padding: 4px 10px;\n  }\n  .btn-edit-small:hover { background: rgba(99,102,241,0.25); }\n  .felelos-form-card {\n    background: rgba(15,23,42,0.7); border: 1px solid rgba(99,102,241,0.3);\n    border-radius: 14px; padding: 20px; margin-bottom: 20px;\n  }\n  .felelos-form-title { font-size: 13px; font-weight: 700; color: var(--indigo-light);\n    text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: 14px; }\n  .felelos-form-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px,1fr)); gap: 12px; }\n  \/* Dropdown suggestion *\/\n  .felelos-dropdown {\n    position: absolute; z-index: 300; background: #1a2236;\n    border: 1px solid rgba(99,102,241,0.4); border-radius: 10px;\n    box-shadow: 0 8px 32px rgba(0,0,0,0.5); min-width: 260px; max-height: 220px;\n    overflow-y: auto; top: 100%; left: 0; margin-top: 4px;\n  }\n  .felelos-option {\n    display: flex; align-items: center; gap: 10px;\n    padding: 9px 14px; cursor: pointer; transition: background 0.1s;\n  }\n  .felelos-option:hover { background: rgba(99,102,241,0.12); }\n  .felelos-option-avatar {\n    width: 28px; height: 28px; border-radius: 50%; flex-shrink: 0;\n    background: linear-gradient(135deg, var(--indigo), #8b5cf6);\n    display: flex; align-items: center; justify-content: center;\n    font-size: 11px; font-weight: 700; color: #fff;\n  }\n  .felelos-option-info { display: flex; flex-direction: column; }\n  .felelos-option-name { font-size: 13px; font-weight: 600; color: var(--text); }\n  .felelos-option-sub { font-size: 11px; color: var(--muted); }\n\n  \/* === REFS & FIELDS (unchanged) === *\/\n  .cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px,1fr)); gap:18px; }\n  .card { background: rgba(10,15,30,0.7); border-radius:14px; padding:20px; border:1px solid; }\n  .card-header { display:flex; align-items:center; gap:8px; margin-bottom:16px; }\n  .card-icon { font-size:20px; }\n  .card-title { font-weight:700; font-size:14px; }\n  .card-count { margin-left:auto; border-radius:20px; padding:2px 10px; font-size:11px; font-weight:700; font-family:var(--mono); }\n  .item-row { display:flex; align-items:center; gap:10px; padding:8px 12px; border-radius:8px; background:rgba(255,255,255,0.03); border:1px solid rgba(255,255,255,0.05); margin-bottom:7px; }\n  .item-num { width:22px; height:22px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:10px; font-weight:700; font-family:var(--mono); flex-shrink:0; }\n  .item-text { font-size:13px; color:#cbd5e1; }\n  .fields-list { background:rgba(10,15,30,0.7); border:1px solid var(--border); border-radius:14px; overflow:hidden; }\n  .field-row { display:flex; align-items:center; gap:14px; padding:11px 18px; border-bottom:1px solid rgba(255,255,255,0.04); }\n  .field-row:last-child { border-bottom:none; }\n  .field-row:nth-child(odd) { background:rgba(10,15,30,0.5); }\n  .field-idx { min-width:28px; height:28px; border-radius:7px; background:rgba(99,102,241,0.15); color:var(--indigo-light); display:flex; align-items:center; justify-content:center; font-size:11px; font-weight:700; font-family:var(--mono); }\n  .field-id { font-family:var(--mono); font-size:12px; color:#34d399; background:rgba(52,211,153,0.08); padding:3px 9px; border-radius:5px; min-width:210px; }\n  .field-label { font-size:13px; color:#94a3b8; }\n<\/style>\n<\/head>\n<body>\n\n<header>\n  <div class=\"header-top\">\n    <div class=\"logo\">\ud83d\uddc2<\/div>\n    <div>\n      <div class=\"header-title\">Helyesb\u00edt\u0151 tev\u00e9kenys\u00e9gek nyilv\u00e1ntart\u00e1sa<\/div>\n      <div class=\"header-sub\">Forr\u00e1s: Helyesb\u00edt\u0151_tev\u00e9kenys\u00e9gek.xlsx<\/div>\n    <\/div>\n    <div class=\"header-actions\">\n      <span class=\"record-count\" id=\"rec-count\">8 bejegyz\u00e9s<\/span>\n      <button class=\"btn btn-success\" onclick=\"exportXML()\">\u2b07 XML export\u00e1l\u00e1s<\/button>\n    <\/div>\n  <\/div>\n  <nav>\n    <button class=\"tab-btn active\" onclick=\"switchTab(0)\">\ud83d\udccb Nyilv\u00e1ntart\u00e1s<\/button>\n    <button class=\"tab-btn\" onclick=\"switchTab(1)\">\u2795 \u00daj bejegyz\u00e9s<\/button>\n    <button class=\"tab-btn\" onclick=\"switchTab(2)\">\ud83d\udd16 Referenci\u00e1k<\/button>\n    <button class=\"tab-btn\" onclick=\"switchTab(3)\">\ud83d\udd27 Sablon mez\u0151k<\/button>\n    <button class=\"tab-btn\" onclick=\"switchTab(4)\">\ud83d\udc65 Felel\u0151s\u00f6k<\/button>\n  <\/nav>\n<\/header>\n\n<main>\n\n  <!-- DEADLINE WARNING BANNER -->\n  <div id=\"deadline-banner\">\n    <div class=\"deadline-banner-top\">\n      <span style=\"font-size:20px\">\u26a0\ufe0f<\/span>\n      <span class=\"deadline-banner-title\">Lej\u00e1rt hat\u00e1ridej\u0171 helyesb\u00edt\u0151 tev\u00e9kenys\u00e9gek!<\/span>\n      <button class=\"btn btn-email\" onclick=\"sendDeadlineEmail()\">\ud83d\udce7 Email k\u00fcld\u00e9se<\/button>\n    <\/div>\n    <div class=\"deadline-list\" id=\"deadline-list\"><\/div>\n  <\/div>\n\n  <!-- TAB 0: Nyilv\u00e1ntart\u00e1s -->\n  <div class=\"tab-panel active\" id=\"tab0\">\n    <div class=\"edit-hint\">\ud83d\udca1 Kattints b\u00e1rmelyik cell\u00e1ra a szerkeszt\u00e9shez &nbsp;\u00b7&nbsp; Az \u00e1llapot cell\u00e1n dupl\u00e1n kattintva leg\u00f6rd\u00fcl\u0151 men\u00fc jelenik meg &nbsp;\u00b7&nbsp; Sz\u0171rj az oszlopfejl\u00e9cek alatt\n      <span class=\"filter-active-badge\" id=\"filter-clear-badge\" style=\"display:none\" onclick=\"clearAllFilters()\">\u2715 Sz\u0171r\u0151k t\u00f6rl\u00e9se<\/span>\n    <\/div>\n    <div class=\"table-wrap\">\n      <table>\n        <thead>\n          <tr>\n            <th>#<\/th>\n            <th>D\u00e1tum<\/th>\n            <th>T\u00edpus<\/th>\n            <th>Kezdem\u00e9nyez\u00e9s oka<\/th>\n            <th>\u00c1llapot<\/th>\n            <th>Telephely \/ ter\u00fclet<\/th>\n            <th>Elt\u00e9r\u00e9s le\u00edr\u00e1sa<\/th>\n            <th>Elt\u00e9r\u00e9s oka<\/th>\n            <th>Tev\u00e9kenys\u00e9g meghat\u00e1roz\u00e1sa<\/th>\n            <th>Felel\u0151s<\/th>\n            <th>Hat\u00e1rid\u0151<\/th>\n            <th>Elrendel\u0151<\/th>\n            <th>V\u00e9grehajt\u00e1s d\u00e1tuma<\/th>\n            <th>Igazol\u00e1s \/ hat\u00e9konys\u00e1g<\/th>\n            <th>Hat\u00e9konys\u00e1g d\u00e1tuma<\/th>\n            <th>Igazol\u00f3 szem\u00e9ly<\/th>\n            <th>Csatolm\u00e1nyok<\/th>\n            <th><\/th>\n          <\/tr>\n          <tr class=\"filter-row\">\n            <th><\/th>\n            <th><input type=\"text\" id=\"flt_datum\" placeholder=\"sz\u0171r\u0151...\" oninput=\"applyFilters()\"><\/th>\n            <th><select id=\"flt_tipus\" onchange=\"applyFilters()\">\n              <option value=\"\">\u2014 mind \u2014<\/option>\n              <option>Helyesb\u00edt\u0151 tev\u00e9kenys\u00e9g<\/option>\n              <option>Fejleszt\u00e9si javaslat<\/option>\n            <\/select><\/th>\n            <th><select id=\"flt_ok\" onchange=\"applyFilters()\">\n              <option value=\"\">\u2014 mind \u2014<\/option>\n              <option>bels\u0151 audit<\/option>\n              <option>k\u00fcls\u0151 audit<\/option>\n              <option>egy\u00e9b<\/option>\n              <option>vev\u0151i reklam\u00e1ci\u00f3<\/option>\n              <option>hat\u00f3s\u00e1gi \u00e9szrev\u00e9tel<\/option>\n              <option>nemmegfelel\u0151s\u00e9g<\/option>\n            <\/select><\/th>\n            <th><select id=\"flt_allapot\" onchange=\"applyFilters()\">\n              <option value=\"\">\u2014 mind \u2014<\/option>\n              <option>Kezdem\u00e9nyezve<\/option>\n              <option>Meghat\u00e1rozva<\/option>\n              <option>V\u00e9grehajtva<\/option>\n              <option>\u00c9rt\u00e9kelve, lez\u00e1rva<\/option>\n            <\/select><\/th>\n            <th><input type=\"text\" id=\"flt_telephely\" placeholder=\"sz\u0171r\u0151...\" oninput=\"applyFilters()\"><\/th>\n            <th><input type=\"text\" id=\"flt_elteres_leiras\" placeholder=\"sz\u0171r\u0151...\" oninput=\"applyFilters()\"><\/th>\n            <th><input type=\"text\" id=\"flt_elteres_ok\" placeholder=\"sz\u0171r\u0151...\" oninput=\"applyFilters()\"><\/th>\n            <th><input type=\"text\" id=\"flt_meghatarozas\" placeholder=\"sz\u0171r\u0151...\" oninput=\"applyFilters()\"><\/th>\n            <th><input type=\"text\" id=\"flt_felelos\" placeholder=\"sz\u0171r\u0151...\" oninput=\"applyFilters()\"><\/th>\n            <th><input type=\"text\" id=\"flt_hatarido\" placeholder=\"sz\u0171r\u0151...\" oninput=\"applyFilters()\"><\/th>\n            <th><input type=\"text\" id=\"flt_elrendelo\" placeholder=\"sz\u0171r\u0151...\" oninput=\"applyFilters()\"><\/th>\n            <th><input type=\"text\" id=\"flt_vegrehajtas\" placeholder=\"sz\u0171r\u0151...\" oninput=\"applyFilters()\"><\/th>\n            <th><input type=\"text\" id=\"flt_igazolas\" placeholder=\"sz\u0171r\u0151...\" oninput=\"applyFilters()\"><\/th>\n            <th><input type=\"text\" id=\"flt_hatekonysag_datum\" placeholder=\"sz\u0171r\u0151...\" oninput=\"applyFilters()\"><\/th>\n            <th><input type=\"text\" id=\"flt_igazolo\" placeholder=\"sz\u0171r\u0151...\" oninput=\"applyFilters()\"><\/th>\n            <th><\/th>\n            <th><\/th>\n          <\/tr>\n        <\/thead>\n        <tbody id=\"records-body\"><\/tbody>\n      <\/table>\n    <\/div>\n  <\/div>\n\n  <!-- TAB 1: \u00daj bejegyz\u00e9s -->\n  <div class=\"tab-panel\" id=\"tab1\">\n    <div class=\"form-card\">\n      <div class=\"form-card-title\" id=\"form-title\">\u2795 \u00daj bejegyz\u00e9s hozz\u00e1ad\u00e1sa<\/div>\n      <div id=\"edit-banner\" style=\"display:none;background:rgba(99,102,241,0.12);border:1px solid rgba(99,102,241,0.3);border-radius:8px;padding:10px 14px;margin-bottom:16px;font-size:13px;color:#a5b4fc;\">\u270f\ufe0f <strong>Szerkeszt\u00e9si m\u00f3d<\/strong> \u2013 m\u00f3dos\u00edtsd a mez\u0151ket, majd kattints a Ment\u00e9s gombra.<\/div>\n      <div class=\"form-grid\">\n        <div class=\"form-group\">\n          <label>D\u00e1tum<\/label>\n          <input type=\"date\" id=\"f_datum\">\n        <\/div>\n        <div class=\"form-group\">\n          <label>Tev\u00e9kenys\u00e9g t\u00edpusa<\/label>\n          <select id=\"f_tipus\">\n            <option value=\"\">\u2014 v\u00e1lassz \u2014<\/option>\n            <option>Helyesb\u00edt\u0151 tev\u00e9kenys\u00e9g<\/option>\n            <option>Fejleszt\u00e9si javaslat<\/option>\n          <\/select>\n        <\/div>\n        <div class=\"form-group\">\n          <label>Kezdem\u00e9nyez\u00e9s oka<\/label>\n          <select id=\"f_ok\">\n            <option value=\"\">\u2014 v\u00e1lassz \u2014<\/option>\n            <option>bels\u0151 audit<\/option>\n            <option>k\u00fcls\u0151 audit<\/option>\n            <option>egy\u00e9b<\/option>\n            <option>vev\u0151i reklam\u00e1ci\u00f3<\/option>\n            <option>hat\u00f3s\u00e1gi \u00e9szrev\u00e9tel<\/option>\n            <option>nemmegfelel\u0151s\u00e9g<\/option>\n          <\/select>\n        <\/div>\n        <div class=\"form-group\">\n          <label>\u00c1llapot<\/label>\n          <select id=\"f_allapot\">\n            <option value=\"\">\u2014 v\u00e1lassz \u2014<\/option>\n            <option>Kezdem\u00e9nyezve<\/option>\n            <option>Meghat\u00e1rozva<\/option>\n            <option>V\u00e9grehajtva<\/option>\n            <option>\u00c9rt\u00e9kelve, lez\u00e1rva<\/option>\n          <\/select>\n        <\/div>\n        <div class=\"form-group\">\n          <label>\u00c9rintett telephely \/ oszt\u00e1ly<\/label>\n          <input type=\"text\" id=\"f_telephely\" placeholder=\"pl. Gy\u00e1rt\u00e1s, Rakt\u00e1r...\">\n        <\/div>\n        <div class=\"form-group\" style=\"position:relative\">\n          <label>Felel\u0151s<\/label>\n          <input type=\"text\" id=\"f_felelos\" placeholder=\"N\u00e9v vagy keres\u00e9s...\" autocomplete=\"off\"\n            oninput=\"showFelelosDropdown(this)\" onfocus=\"showFelelosDropdown(this)\" onblur=\"hideFelelosDropdown()\">\n          <div class=\"felelos-dropdown\" id=\"felelos-dd\" style=\"display:none\"><\/div>\n        <\/div>\n        <div class=\"form-group\">\n          <label>Hat\u00e1rid\u0151<\/label>\n          <input type=\"date\" id=\"f_hatarido\">\n        <\/div>\n        <div class=\"form-group\">\n          <label>Elrendel\u0151 szem\u00e9ly<\/label>\n          <input type=\"text\" id=\"f_elrendelo\" placeholder=\"N\u00e9v\">\n        <\/div>\n        <div class=\"form-group full\">\n          <label>Elt\u00e9r\u00e9s \/ probl\u00e9ma le\u00edr\u00e1sa<\/label>\n          <textarea id=\"f_elteres_leiras\" placeholder=\"Az elt\u00e9r\u00e9s, nem megfelel\u0151s\u00e9g r\u00e9szletes le\u00edr\u00e1sa...\"><\/textarea>\n        <\/div>\n        <div class=\"form-group full\">\n          <label>Elt\u00e9r\u00e9s \/ probl\u00e9ma oka<\/label>\n          <textarea id=\"f_elteres_ok\" placeholder=\"Az elt\u00e9r\u00e9s gy\u00f6k\u00e9rok\u00e1nak le\u00edr\u00e1sa...\"><\/textarea>\n        <\/div>\n        <div class=\"form-group full\">\n          <label>Helyesb\u00edt\u0151 tev\u00e9kenys\u00e9g meghat\u00e1roz\u00e1sa<\/label>\n          <textarea id=\"f_meghatarozas\" placeholder=\"A sz\u00fcks\u00e9ges helyesb\u00edt\u0151 tev\u00e9kenys\u00e9g le\u00edr\u00e1sa...\"><\/textarea>\n        <\/div>\n        <div class=\"form-group\">\n          <label>V\u00e9grehajt\u00e1s d\u00e1tuma<\/label>\n          <input type=\"date\" id=\"f_vegrehajtas\">\n        <\/div>\n        <div class=\"form-group full\">\n          <label>Igazol\u00e1s \u00e9s hat\u00e9konys\u00e1g \u00e9rt\u00e9kel\u00e9se<\/label>\n          <textarea id=\"f_igazolas\" placeholder=\"A helyesb\u00edt\u0151 tev\u00e9kenys\u00e9g igazol\u00e1sa...\"><\/textarea>\n        <\/div>\n        <div class=\"form-group\">\n          <label>Hat\u00e9konys\u00e1g igazol\u00e1s d\u00e1tuma<\/label>\n          <input type=\"date\" id=\"f_hatekonysag_datum\">\n        <\/div>\n        <div class=\"form-group\">\n          <label>Igazol\u00f3 \/ ellen\u0151rz\u0151 szem\u00e9ly<\/label>\n          <input type=\"text\" id=\"f_igazolo\" placeholder=\"N\u00e9v\">\n        <\/div>\n        <div class=\"form-group full\">\n          <label>Csatolt f\u00e1jlok<\/label>\n          <div class=\"file-upload-area\" id=\"upload-area\"\n            ondragover=\"event.preventDefault();this.classList.add('dragover')\"\n            ondragleave=\"this.classList.remove('dragover')\"\n            ondrop=\"handleDrop(event)\">\n            <input type=\"file\" id=\"f_files\" multiple onchange=\"handleFileSelect(this)\">\n            <div class=\"file-upload-text\">\ud83d\udcce <strong>Kattints vagy h\u00fazd ide<\/strong> a f\u00e1jlokat<br>\n              <span style=\"font-size:11px\">B\u00e1rmilyen f\u00e1jlt\u00edpus elfogadott<\/span><\/div>\n          <\/div>\n          <div class=\"file-list\" id=\"f_file_list\"><\/div>\n        <\/div>\n      <\/div>\n      <div class=\"form-actions\">\n        <button class=\"btn\" style=\"background:rgba(255,255,255,0.05);color:var(--muted)\" onclick=\"clearForm()\">\u2715 M\u00e9gsem<\/button>\n        <button class=\"btn btn-primary\" id=\"form-submit-btn\" onclick=\"submitForm()\">\u2713 Bejegyz\u00e9s hozz\u00e1ad\u00e1sa<\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- TAB 2: Referenci\u00e1k -->\n  <div class=\"tab-panel\" id=\"tab2\">\n    <div class=\"cards\" id=\"ref-cards\"><\/div>\n  <\/div>\n\n  <!-- TAB 3: Sablon mez\u0151k -->\n  <div class=\"tab-panel\" id=\"tab3\">\n    <div class=\"fields-list\" id=\"fields-list\"><\/div>\n  <\/div>\n\n  <!-- TAB 4: Felel\u0151s adatb\u00e1zis -->\n  <div class=\"tab-panel\" id=\"tab4\">\n    <div class=\"felelos-form-card\">\n      <div class=\"felelos-form-title\" id=\"felelos-form-title\">\u2795 \u00daj felel\u0151s hozz\u00e1ad\u00e1sa<\/div>\n      <div class=\"felelos-form-grid\">\n        <div class=\"form-group\">\n          <label>N\u00e9v<\/label>\n          <input type=\"text\" id=\"fb_nev\" placeholder=\"Teljes n\u00e9v\">\n        <\/div>\n        <div class=\"form-group\">\n          <label>Beoszt\u00e1s<\/label>\n          <input type=\"text\" id=\"fb_beosztas\" placeholder=\"pl. Min\u0151s\u00e9g\u00fcgyi vezet\u0151\">\n        <\/div>\n        <div class=\"form-group\">\n          <label>Email c\u00edm<\/label>\n          <input type=\"email\" id=\"fb_email\" placeholder=\"nev@ceg.hu\">\n        <\/div>\n      <\/div>\n      <div class=\"form-actions\">\n        <button class=\"btn\" style=\"background:rgba(255,255,255,0.05);color:var(--muted)\" onclick=\"clearFelelosForm()\">\u2715 M\u00e9gsem<\/button>\n        <button class=\"btn btn-primary\" id=\"felelos-submit-btn\" onclick=\"submitFelelos()\">\u2713 Hozz\u00e1ad\u00e1s<\/button>\n      <\/div>\n    <\/div>\n    <div class=\"felelos-grid\" id=\"felelos-grid\"><\/div>\n  <\/div>\n\n<\/main>\n\n<div id=\"toast\">\u2713 Mentve<\/div>\n\n<script>\nconst ALLAPOT_COLORS = {\n  \"Kezdem\u00e9nyezve\":      { bg:\"rgba(239,68,68,0.15)\",  color:\"#f87171\", border:\"rgba(239,68,68,0.35)\" },\n  \"Meghat\u00e1rozva\":       { bg:\"rgba(239,68,68,0.15)\",  color:\"#f87171\", border:\"rgba(239,68,68,0.35)\" },\n  \"V\u00e9grehajtva\":        { bg:\"rgba(234,179,8,0.15)\",  color:\"#facc15\", border:\"rgba(234,179,8,0.35)\" },\n  \"\u00c9rt\u00e9kelve, lez\u00e1rva\": { bg:\"rgba(16,185,129,0.15)\", color:\"#10b981\", border:\"rgba(16,185,129,0.35)\" },\n};\n\nconst TIPUS_COLORS = {\n  \"Helyesb\u00edt\u0151 tev\u00e9kenys\u00e9g\": { bg:\"rgba(99,102,241,0.15)\", color:\"#a5b4fc\", border:\"rgba(99,102,241,0.35)\" },\n  \"Fejleszt\u00e9si javaslat\":   { bg:\"rgba(20,184,166,0.15)\", color:\"#2dd4bf\", border:\"rgba(20,184,166,0.35)\" },\n};\n\nconst OK_COLORS = {\n  \"bels\u0151 audit\":          { bg:\"rgba(59,130,246,0.15)\",  color:\"#93c5fd\", border:\"rgba(59,130,246,0.35)\" },\n  \"k\u00fcls\u0151 audit\":          { bg:\"rgba(168,85,247,0.15)\",  color:\"#d8b4fe\", border:\"rgba(168,85,247,0.35)\" },\n  \"egy\u00e9b\":                { bg:\"rgba(107,114,128,0.15)\", color:\"#9ca3af\", border:\"rgba(107,114,128,0.35)\" },\n  \"vev\u0151i reklam\u00e1ci\u00f3\":     { bg:\"rgba(239,68,68,0.15)\",   color:\"#fca5a5\", border:\"rgba(239,68,68,0.35)\" },\n  \"hat\u00f3s\u00e1gi \u00e9szrev\u00e9tel\":  { bg:\"rgba(245,158,11,0.15)\",  color:\"#fcd34d\", border:\"rgba(245,158,11,0.35)\" },\n  \"nemmegfelel\u0151s\u00e9g\":      { bg:\"rgba(234,88,12,0.15)\",   color:\"#fdba74\", border:\"rgba(234,88,12,0.35)\" },\n};\n\nconst ALLAPOTOK = [\"Kezdem\u00e9nyezve\",\"Meghat\u00e1rozva\",\"V\u00e9grehajtva\",\"\u00c9rt\u00e9kelve, lez\u00e1rva\"];\n\nconst FIELDS = [\n  {id:\"sorszam\",              label:\"Sorsz\u00e1m\"},\n  {id:\"datum\",                label:\"D\u00e1tum\"},\n  {id:\"tevekenyseg_tipusa\",   label:\"Helyesb\u00edt\u0151 tev\u00e9kenys\u00e9g vagy fejleszt\u00e9si javaslat?\"},\n  {id:\"kezdemenyezes_oka\",    label:\"Helyesb\u00edt\u0151 tev\u00e9kenys\u00e9g, fejleszt\u00e9s kezdem\u00e9nyez\u00e9s\u00e9nek oka\"},\n  {id:\"allapot\",              label:\"Helyesb\u00edt\u0151 tev\u00e9kenys\u00e9g, fejleszt\u00e9s \u00e1llapot\"},\n  {id:\"elteres_leiras\",       label:\"Elt\u00e9r\u00e9s, nem megfelel\u0151s\u00e9g, probl\u00e9ma le\u00edr\u00e1sa\"},\n  {id:\"elteres_ok\",           label:\"Elt\u00e9r\u00e9s, nem megfelel\u0151s\u00e9g, probl\u00e9ma oka\"},\n  {id:\"tevekenyseg_meghatarozasa\", label:\"Helyesb\u00edt\u0151 tev\u00e9kenys\u00e9g, fejleszt\u00e9s meghat\u00e1roz\u00e1sa\"},\n  {id:\"felelos\",              label:\"Felel\u0151s\"},\n  {id:\"hatarido\",             label:\"Hat\u00e1rid\u0151\"},\n  {id:\"vegrehajtas_datuma\",   label:\"Helyesb\u00edt\u0151 tev\u00e9kenys\u00e9g, fejleszt\u00e9s v\u00e9grehajt\u00e1s\u00e1nak d\u00e1tuma\"},\n  {id:\"igazolas_hatekonysag_ertekeles\", label:\"A helyesb\u00edt\u0151 tev\u00e9kenys\u00e9g, fejleszt\u00e9s igazol\u00e1sa \u00e9s hat\u00e9konys\u00e1g\u00e1nak \u00e9rt\u00e9kel\u00e9se\"},\n  {id:\"hatekonysag_igazolas_datum\", label:\"A helyesb\u00edt\u0151 tev\u00e9kenys\u00e9g, fejleszt\u00e9s hat\u00e9konys\u00e1g igazol\u00e1s\u00e1nak \u00e9s ellen\u0151rz\u00e9s\u00e9nek d\u00e1tuma\"},\n  {id:\"igazolo_ellenorzo_szemely\", label:\"A helyesb\u00edt\u0151 tev\u00e9kenys\u00e9get, fejleszt\u00e9st igazol\u00f3, ellen\u0151rz\u0151 szem\u00e9ly neve\"},\n];\n\n\/\/ Records \u2013 starts empty, filled via form\nlet records = [];\n\n\/\/ TABLE COLUMNS (tag -> display)\nconst COLS = [\n  {key:\"datum\",           label:\"D\u00e1tum\",               type:\"text\"},\n  {key:\"tevekenyseg_tipusa\", label:\"T\u00edpus\",             type:\"select\", opts:[\"Helyesb\u00edt\u0151 tev\u00e9kenys\u00e9g\",\"Fejleszt\u00e9si javaslat\"]},\n  {key:\"kezdemenyezes_oka\",  label:\"Kezdem\u00e9nyez\u00e9s oka\", type:\"select\", opts:[\"bels\u0151 audit\",\"k\u00fcls\u0151 audit\",\"egy\u00e9b\",\"vev\u0151i reklam\u00e1ci\u00f3\",\"hat\u00f3s\u00e1gi \u00e9szrev\u00e9tel\",\"nemmegfelel\u0151s\u00e9g\"]},\n  {key:\"allapot\",         label:\"\u00c1llapot\",              type:\"select\", opts:ALLAPOTOK},\n  {key:\"erintett_telephely_osztaly_terulet\", label:\"Telephely\", type:\"text\"},\n  {key:\"elteres_leiras\",  label:\"Elt\u00e9r\u00e9s le\u00edr\u00e1sa\",      type:\"text\"},\n  {key:\"elteres_ok\",       label:\"Elt\u00e9r\u00e9s oka\",           type:\"text\"},\n  {key:\"tevekenyseg_meghatarozasa\", label:\"Tev\u00e9kenys\u00e9g meghat\u00e1roz\u00e1sa\", type:\"text\"},\n  {key:\"felelos\",         label:\"Felel\u0151s\",              type:\"text\"},\n  {key:\"hatarido\",        label:\"Hat\u00e1rid\u0151\",             type:\"text\"},\n  {key:\"elrendelo_szemely\",label:\"Elrendel\u0151\",           type:\"text\"},\n  {key:\"vegrehajtas_datuma\",label:\"V\u00e9grehajt\u00e1s\",        type:\"text\"},\n  {key:\"igazolas_hatekonysag_ertekeles\", label:\"Igazol\u00e1s \/ hat\u00e9konys\u00e1g\", type:\"text\"},\n  {key:\"hatekonysag_igazolas_datum\",     label:\"Hat\u00e9konys\u00e1g d\u00e1tuma\",     type:\"text\"},\n  {key:\"igazolo_ellenorzo_szemely\",      label:\"Igazol\u00f3 szem\u00e9ly\",        type:\"text\"},\n];\n\n\/\/ ========== FELEL\u0150S ADATB\u00c1ZIS ==========\nlet felelosDB = [];\nlet editingFelelosIndex = null;\n\nfunction initials(name) {\n  return name.split(' ').filter(Boolean).map(w => w[0]).join('').substring(0,2).toUpperCase();\n}\n\nfunction renderFelelosGrid() {\n  const grid = document.getElementById(\"felelos-grid\");\n  if (!grid) return;\n  if (felelosDB.length === 0) {\n    grid.innerHTML = `<div style=\"color:var(--muted);font-size:13px;font-style:italic;padding:12px 0;\">\n      M\u00e9g nincs felel\u0151s \u2013 add hozz\u00e1 az els\u0151 szem\u00e9lyt a fenti \u0171rlapon.<\/div>`;\n    return;\n  }\n  grid.innerHTML = \"\";\n  felelosDB.forEach((f, i) => {\n    const card = document.createElement(\"div\");\n    card.className = \"felelos-card\";\n    card.innerHTML = `\n      <div class=\"felelos-card-header\">\n        <div class=\"felelos-avatar\">${initials(f.nev)}<\/div>\n        <div>\n          <div class=\"felelos-name\">${f.nev}<\/div>\n          <div class=\"felelos-beosztas\">${f.beosztas || '\u2014'}<\/div>\n        <\/div>\n      <\/div>\n      <div class=\"felelos-email\">\u2709 ${f.email || '\u2014'}<\/div>\n      <div class=\"felelos-actions\">\n        <button class=\"btn btn-edit-small\" onclick=\"editFelelos(${i})\">\u270f Szerkeszt\u00e9s<\/button>\n        <button class=\"btn btn-danger\" onclick=\"deleteFelelos(${i})\">\ud83d\uddd1<\/button>\n      <\/div>`;\n    grid.appendChild(card);\n  });\n}\n\nfunction submitFelelos() {\n  const nev = document.getElementById(\"fb_nev\").value.trim();\n  if (!nev) { alert(\"A n\u00e9v megad\u00e1sa k\u00f6telez\u0151!\"); return; }\n  const entry = {\n    nev,\n    beosztas: document.getElementById(\"fb_beosztas\").value.trim(),\n    email:    document.getElementById(\"fb_email\").value.trim(),\n  };\n  if (editingFelelosIndex !== null) {\n    felelosDB[editingFelelosIndex] = entry;\n  } else {\n    felelosDB.push(entry);\n  }\n  clearFelelosForm();\n  renderFelelosGrid();\n  showToast(\"\u2713 Felel\u0151s mentve\");\n}\n\nfunction editFelelos(i) {\n  const f = felelosDB[i];\n  editingFelelosIndex = i;\n  document.getElementById(\"fb_nev\").value      = f.nev;\n  document.getElementById(\"fb_beosztas\").value = f.beosztas || \"\";\n  document.getElementById(\"fb_email\").value    = f.email || \"\";\n  document.getElementById(\"felelos-form-title\").textContent = \"\u270f\ufe0f Felel\u0151s szerkeszt\u00e9se\";\n  document.getElementById(\"felelos-submit-btn\").textContent = \"\ud83d\udcbe Ment\u00e9s\";\n  document.getElementById(\"tab4\").scrollIntoView({behavior:\"smooth\"});\n}\n\nfunction deleteFelelos(i) {\n  if (!confirm(`Biztosan t\u00f6rli: ${felelosDB[i].nev}?`)) return;\n  felelosDB.splice(i, 1);\n  renderFelelosGrid();\n  showToast(\"\ud83d\uddd1 Felel\u0151s t\u00f6r\u00f6lve\");\n}\n\nfunction clearFelelosForm() {\n  document.getElementById(\"fb_nev\").value = \"\";\n  document.getElementById(\"fb_beosztas\").value = \"\";\n  document.getElementById(\"fb_email\").value = \"\";\n  editingFelelosIndex = null;\n  document.getElementById(\"felelos-form-title\").textContent = \"\u2795 \u00daj felel\u0151s hozz\u00e1ad\u00e1sa\";\n  document.getElementById(\"felelos-submit-btn\").textContent = \"\u2713 Hozz\u00e1ad\u00e1s\";\n}\n\n\/\/ Felelos dropdown in main form\nfunction showFelelosDropdown(input) {\n  const dd = document.getElementById(\"felelos-dd\");\n  const q = input.value.toLowerCase();\n  const matches = felelosDB.filter(f =>\n    f.nev.toLowerCase().includes(q) || (f.beosztas||\"\").toLowerCase().includes(q)\n  );\n  if (matches.length === 0 || felelosDB.length === 0) { dd.style.display = \"none\"; return; }\n  dd.innerHTML = matches.map((f, i) => `\n    <div class=\"felelos-option\" onmousedown=\"selectFelelos('${f.nev.replace(\/'\/g,\"\\\\'\")}')\">\n      <div class=\"felelos-option-avatar\">${initials(f.nev)}<\/div>\n      <div class=\"felelos-option-info\">\n        <span class=\"felelos-option-name\">${f.nev}<\/span>\n        <span class=\"felelos-option-sub\">${f.beosztas || ''}${f.email ? ' \u00b7 ' + f.email : ''}<\/span>\n      <\/div>\n    <\/div>`).join(\"\");\n  dd.style.display = \"block\";\n}\n\nfunction hideFelelosDropdown() {\n  setTimeout(() => {\n    const dd = document.getElementById(\"felelos-dd\");\n    if (dd) dd.style.display = \"none\";\n  }, 150);\n}\n\nfunction selectFelelos(nev) {\n  document.getElementById(\"f_felelos\").value = nev;\n  const dd = document.getElementById(\"felelos-dd\");\n  if (dd) dd.style.display = \"none\";\n}\n\/\/ ========================================\n\nfunction checkDeadlines() {\n  const today = new Date();\n  today.setHours(0, 0, 0, 0);\n  const expired = records.filter(r => {\n    if (!r.hatarido) return false;\n    if (r.allapot === \"\u00c9rt\u00e9kelve, lez\u00e1rva\") return false;\n    const d = new Date(r.hatarido);\n    return !isNaN(d) && d < today;\n  });\n\n  const banner = document.getElementById(\"deadline-banner\");\n  const list = document.getElementById(\"deadline-list\");\n\n  if (expired.length === 0) {\n    banner.style.display = \"none\";\n    return;\n  }\n\n  banner.style.display = \"block\";\n  list.innerHTML = expired.map(r => `\n    <div class=\"deadline-item\">\n      <span>\ud83d\udd34<\/span>\n      <strong>#${r.sorszam}<\/strong>\n      <span>Hat\u00e1rid\u0151: <strong>${r.hatarido}<\/strong><\/span>\n      ${r.felelos ? `<span>\u00b7 Felel\u0151s: <strong>${r.felelos}<\/strong><\/span>` : \"\"}\n      ${r.elteres_leiras ? `<span style=\"color:#94a3b8;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:300px\">\u00b7 ${r.elteres_leiras}<\/span>` : \"\"}\n    <\/div>`).join(\"\");\n}\n\nfunction sendDeadlineEmail() {\n  const today = new Date();\n  today.setHours(0, 0, 0, 0);\n  const expired = records.filter(r => {\n    if (!r.hatarido) return false;\n    if (r.allapot === \"\u00c9rt\u00e9kelve, lez\u00e1rva\") return false;\n    const d = new Date(r.hatarido);\n    return !isNaN(d) && d < today;\n  });\n  if (expired.length === 0) return;\n\n  \/\/ Csoportos\u00edt\u00e1s felel\u0151senk\u00e9nt\n  const groups = {};\n  expired.forEach(r => {\n    const key = r.felelos || \"__ismeretlen__\";\n    if (!groups[key]) groups[key] = [];\n    groups[key].push(r);\n  });\n\n  const subject = encodeURIComponent(\"Lej\u00e1rat hat\u00e1ridej\u0171 helyesb\u00edt\u0151 tev\u00e9kenys\u00e9ged van\");\n  const mailtoLinks = [];\n\n  Object.entries(groups).forEach(([felelos, tetelek]) => {\n    \/\/ Email c\u00edm keres\u00e9se a felel\u0151s adatb\u00e1zisban\n    const dbEntry = felelosDB.find(f => f.nev === felelos);\n    const emailTo = (dbEntry && dbEntry.email) ? dbEntry.email : \"iroda@alisma.hu\";\n\n    const lines = tetelek.map(r =>\n      `\u2022 #${r.sorszam} | Hat\u00e1rid\u0151: ${r.hatarido}${r.elteres_leiras ? \"\\n  \" + r.elteres_leiras : \"\"}`\n    ).join(\"\\n\");\n\n    const nev = felelos === \"__ismeretlen__\" ? \"Koll\u00e9ga\" : felelos;\n    const body = encodeURIComponent(\n      `Tisztelt ${nev}!\\n\\nAz al\u00e1bbi helyesb\u00edt\u0151 tev\u00e9kenys\u00e9gek hat\u00e1rideje lej\u00e1rt:\\n\\n${lines}\\n\\nK\u00e9rj\u00fck, int\u00e9zkedjen miel\u0151bb!\\n\\n\u00dcdv\u00f6zlettel`\n    );\n    mailtoLinks.push(`mailto:${emailTo}?subject=${subject}&body=${body}`);\n  });\n\n  \/\/ Megnyitjuk az \u00f6sszes mailto linket egym\u00e1s ut\u00e1n\n  mailtoLinks.forEach((link, i) => {\n    setTimeout(() => { window.location.href = link; }, i * 500);\n  });\n}\n\n\/\/ ========== FILTER LOGIC ==========\nconst FILTER_MAP = [\n  { id: \"flt_datum\",             key: \"datum\" },\n  { id: \"flt_tipus\",             key: \"tevekenyseg_tipusa\" },\n  { id: \"flt_ok\",                key: \"kezdemenyezes_oka\" },\n  { id: \"flt_allapot\",           key: \"allapot\" },\n  { id: \"flt_telephely\",         key: \"erintett_telephely_osztaly_terulet\" },\n  { id: \"flt_elteres_leiras\",    key: \"elteres_leiras\" },\n  { id: \"flt_elteres_ok\",        key: \"elteres_ok\" },\n  { id: \"flt_meghatarozas\",      key: \"tevekenyseg_meghatarozasa\" },\n  { id: \"flt_felelos\",           key: \"felelos\" },\n  { id: \"flt_hatarido\",          key: \"hatarido\" },\n  { id: \"flt_elrendelo\",         key: \"elrendelo_szemely\" },\n  { id: \"flt_vegrehajtas\",       key: \"vegrehajtas_datuma\" },\n  { id: \"flt_igazolas\",          key: \"igazolas_hatekonysag_ertekeles\" },\n  { id: \"flt_hatekonysag_datum\", key: \"hatekonysag_igazolas_datum\" },\n  { id: \"flt_igazolo\",           key: \"igazolo_ellenorzo_szemely\" },\n];\n\nfunction getActiveFilters() {\n  return FILTER_MAP.map(f => {\n    const el = document.getElementById(f.id);\n    return { key: f.key, val: el ? el.value.trim().toLowerCase() : \"\" };\n  }).filter(f => f.val !== \"\");\n}\n\nfunction getFilteredRecords() {\n  const filters = getActiveFilters();\n  if (filters.length === 0) return records;\n  return records.filter(r =>\n    filters.every(f => (r[f.key] || \"\").toLowerCase().includes(f.val))\n  );\n}\n\nfunction applyFilters() {\n  const badge = document.getElementById(\"filter-clear-badge\");\n  if (badge) badge.style.display = getActiveFilters().length > 0 ? \"\" : \"none\";\n  renderTable();\n}\n\nfunction clearAllFilters() {\n  FILTER_MAP.forEach(f => {\n    const el = document.getElementById(f.id);\n    if (el) el.value = \"\";\n  });\n  applyFilters();\n}\n\/\/ ===================================\n\nfunction renderTable() {\n  const tbody = document.getElementById(\"records-body\");\n  tbody.innerHTML = \"\";\n  const filtered = getFilteredRecords();\n  if (records.length === 0) {\n    tbody.innerHTML = `<tr><td colspan=\"18\" style=\"text-align:center;padding:32px;color:#334155;font-style:italic;font-size:13px;\">\n      M\u00e9g nincs bejegyz\u00e9s \u2013 haszn\u00e1ld az <strong style=\"color:#6366f1\">\u2795 \u00daj bejegyz\u00e9s<\/strong> f\u00fclet az els\u0151 hozz\u00e1ad\u00e1s\u00e1hoz.\n    <\/td><\/tr>`;\n    document.getElementById(\"rec-count\").textContent = \"0 bejegyz\u00e9s\";\n    return;\n  }\n  if (filtered.length === 0) {\n    tbody.innerHTML = `<tr><td colspan=\"18\" style=\"text-align:center;padding:32px;color:#334155;font-style:italic;font-size:13px;\">\n      \ud83d\udd0d Nincs a sz\u0171r\u0151nek megfelel\u0151 bejegyz\u00e9s.\n    <\/td><\/tr>`;\n    document.getElementById(\"rec-count\").textContent = `0 \/ ${records.length} bejegyz\u00e9s`;\n    return;\n  }\n  const activeFilters = getActiveFilters();\n  document.getElementById(\"rec-count\").textContent = activeFilters.length > 0\n    ? `${filtered.length} \/ ${records.length} bejegyz\u00e9s`\n    : `${records.length} bejegyz\u00e9s`;\n  filtered.forEach((rec, _fi) => {\n    const ri = records.indexOf(rec);\n    const tr = document.createElement(\"tr\");\n    \/\/ # cell\n    const tdNum = document.createElement(\"td\");\n    tdNum.innerHTML = `<div class=\"cell-num\">${rec.sorszam}<\/div>`;\n    tr.appendChild(tdNum);\n\n    \/\/ data cells\n    COLS.forEach(col => {\n      const td = document.createElement(\"td\");\n      if (col.key === \"allapot\") {\n        const v = rec[col.key] || \"\";\n        const c = ALLAPOT_COLORS[v];\n        if (v && c) {\n          td.innerHTML = `<div class=\"cell-inner\" title=\"Kattints a m\u00f3dos\u00edt\u00e1shoz\" onclick=\"openAllapotPicker(this, ${ri})\"\n            style=\"cursor:pointer\">\n            <span class=\"pill\" style=\"background:${c.bg};color:${c.color};border-color:${c.border}\">${v}<\/span>\n          <\/div>`;\n        } else {\n          td.innerHTML = `<div class=\"cell-inner empty-cell\" onclick=\"openAllapotPicker(this, ${ri})\" style=\"cursor:pointer\">\u2014 v\u00e1lassz \u2014<\/div>`;\n        }\n      } else if (col.type === \"select\" && col.opts) {\n        const v = rec[col.key] || \"\";\n        const colorMap = col.key === \"tevekenyseg_tipusa\" ? TIPUS_COLORS : col.key === \"kezdemenyezes_oka\" ? OK_COLORS : {};\n        const c = colorMap[v];\n        const div = document.createElement(\"div\");\n        div.className = \"cell-inner\" + (v ? \"\" : \" empty-cell\");\n        div.style.cursor = \"pointer\";\n        div.title = \"Kattints a m\u00f3dos\u00edt\u00e1shoz\";\n        if (v && c) {\n          div.innerHTML = `<span class=\"pill\" style=\"background:${c.bg};color:${c.color};border-color:${c.border}\">${v}<\/span>`;\n        } else {\n          div.textContent = v || \"\u2014 v\u00e1lassz \u2014\";\n        }\n        div.onclick = function() { openSelectPicker(this, ri, col.key, col.opts, colorMap); };\n        td.appendChild(div);\n      } else {\n        const v = rec[col.key] || \"\";\n        const div = document.createElement(\"div\");\n        div.className = \"cell-inner\" + (v ? \"\" : \" empty-cell\");\n        div.contentEditable = \"true\";\n        div.textContent = v || \"\u2014\";\n        div.setAttribute(\"data-ri\", ri);\n        div.setAttribute(\"data-key\", col.key);\n        div.addEventListener(\"focus\", function() {\n          if (this.classList.contains(\"empty-cell\")) {\n            this.textContent = \"\";\n            this.classList.remove(\"empty-cell\");\n          }\n        });\n        div.addEventListener(\"blur\", function() {\n          const val = this.textContent.trim();\n          records[+this.dataset.ri][this.dataset.key] = val;\n          if (!val) {\n            this.classList.add(\"empty-cell\");\n            this.textContent = \"\u2014\";\n          }\n          showToast(\"\u2713 Mentve\");\n        });\n        td.appendChild(div);\n      }\n      tr.appendChild(td);\n    });\n\n    \/\/ attachments cell\n    const tdFiles = document.createElement(\"td\");\n    tdFiles.style.padding = \"6px 10px\";\n    if (rec.files && rec.files.length > 0) {\n      rec.files.forEach(f => {\n        const badge = document.createElement(\"span\");\n        badge.className = \"file-badge\";\n        badge.title = f.name;\n        badge.innerHTML = `\ud83d\udcce ${f.name.length > 16 ? f.name.substring(0,14)+'\u2026' : f.name}`;\n        badge.onclick = () => downloadFile(f);\n        tdFiles.appendChild(badge);\n        tdFiles.appendChild(document.createElement(\"br\"));\n      });\n    } else {\n      tdFiles.innerHTML = '<span style=\"color:#2d3748;font-size:12px;\">\u2014<\/span>';\n    }\n    tr.appendChild(tdFiles);\n\n    \/\/ action buttons\n    const tdDel = document.createElement(\"td\");\n    tdDel.className = \"td-actions\";\n    tdDel.style.cssText = \"display:flex;gap:6px;padding:6px 10px;align-items:center;\";\n    tdDel.innerHTML = `\n      <button class=\"btn\" style=\"background:rgba(99,102,241,0.15);color:#a5b4fc;border:1px solid rgba(99,102,241,0.3);font-size:11px;padding:4px 10px;\" onclick=\"editRecord(${ri})\">\u270f Szerkeszt\u00e9s<\/button>\n      <button class=\"btn btn-danger\" onclick=\"deleteRecord(${ri})\">\ud83d\uddd1<\/button>`;\n    tr.appendChild(tdDel);\n\n    tbody.appendChild(tr);\n  });\n}\n\n\/\/ \u00c1llapot inline picker\nfunction openSelectPicker(cell, ri, key, opts, colorMap={}) {\n  document.querySelectorAll(\".select-picker\").forEach(e => e.remove());\n  const picker = document.createElement(\"div\");\n  picker.className = \"select-picker\";\n  const rect = cell.getBoundingClientRect();\n  picker.style.cssText = `position:fixed;background:#1a2236;border:1px solid rgba(99,102,241,0.4);\n    border-radius:10px;z-index:9999;padding:6px;box-shadow:0 8px 32px rgba(0,0,0,0.6);\n    min-width:220px;top:${rect.bottom + 4}px;left:${rect.left}px;`;\n\n  opts.forEach(opt => {\n    const c = colorMap[opt];\n    const item = document.createElement(\"div\");\n    item.style.cssText = `padding:7px 12px;border-radius:7px;cursor:pointer;font-size:12px;\n      font-weight:600;white-space:nowrap;margin:2px 0;transition:opacity 0.1s;\n      ${c ? `background:${c.bg};color:${c.color};border:1px solid ${c.border};` : \"color:#e2e8f0;\"}`;\n    item.textContent = opt;\n    item.onmouseenter = () => item.style.opacity = \"0.75\";\n    item.onmouseleave = () => item.style.opacity = \"1\";\n    item.onclick = () => {\n      records[ri][key] = opt;\n      picker.remove();\n      renderTable();\n      showToast(\"\u2713 Mentve\");\n    };\n    picker.appendChild(item);\n  });\n\n  const clr = document.createElement(\"div\");\n  clr.style.cssText = `padding:6px 12px;border-radius:7px;cursor:pointer;margin-top:4px;\n    font-size:11px;color:#6b7280;border:1px solid rgba(255,255,255,0.06);text-align:center;`;\n  clr.textContent = \"\u2715 T\u00f6rl\u00e9s\";\n  clr.onclick = () => { records[ri][key] = \"\"; picker.remove(); renderTable(); };\n  picker.appendChild(clr);\n\n  document.body.appendChild(picker);\n  setTimeout(() => document.addEventListener(\"click\", function handler(e) {\n    if (!picker.contains(e.target)) { picker.remove(); document.removeEventListener(\"click\", handler); }\n  }), 10);\n}\n\nfunction openAllapotPicker(cell, ri) {\n  document.querySelectorAll(\".allapot-picker\").forEach(e => e.remove());\n  const picker = document.createElement(\"div\");\n  picker.className = \"allapot-picker\";\n  const rect = cell.getBoundingClientRect();\n  picker.style.cssText = `position:fixed;background:#1a2236;border:1px solid rgba(99,102,241,0.4);\n    border-radius:10px;z-index:9999;padding:6px;box-shadow:0 8px 32px rgba(0,0,0,0.6);\n    min-width:200px;top:${rect.bottom + 4}px;left:${rect.left}px;`;\n  ALLAPOTOK.forEach(a => {\n    const c = ALLAPOT_COLORS[a];\n    const opt = document.createElement(\"div\");\n    opt.style.cssText = `padding:7px 12px;border-radius:7px;cursor:pointer;margin:2px 0;\n      font-size:12px;font-weight:600;font-family:var(--mono);\n      background:${c.bg};color:${c.color};border:1px solid ${c.border};transition:opacity 0.1s;`;\n    opt.textContent = a;\n    opt.onmouseenter = () => opt.style.opacity = \"0.8\";\n    opt.onmouseleave = () => opt.style.opacity = \"1\";\n    opt.onclick = () => {\n      records[ri].allapot = a;\n      picker.remove();\n      renderTable();\n      checkDeadlines();\n      showToast(\"\u2713 \u00c1llapot friss\u00edtve\");\n    };\n    picker.appendChild(opt);\n  });\n  const clr = document.createElement(\"div\");\n  clr.style.cssText = `padding:6px 12px;border-radius:7px;cursor:pointer;margin-top:4px;\n    font-size:11px;color:#6b7280;border:1px solid rgba(255,255,255,0.06);text-align:center;`;\n  clr.textContent = \"\u2715 T\u00f6rl\u00e9s\";\n  clr.onclick = () => { records[ri].allapot = \"\"; picker.remove(); renderTable(); };\n  picker.appendChild(clr);\n  document.body.appendChild(picker);\n  setTimeout(() => document.addEventListener(\"click\", function handler(e) {\n    if (!picker.contains(e.target)) { picker.remove(); document.removeEventListener(\"click\", handler); }\n  }), 10);\n}\n\nfunction deleteRecord(ri) {\n  if (!confirm(`Biztosan t\u00f6rli a ${records[ri].sorszam}. bejegyz\u00e9st?`)) return;\n  records.splice(ri, 1);\n  records.forEach((r, i) => r.sorszam = i + 1);\n  renderTable();\n  checkDeadlines();\n  showToast(\"\ud83d\uddd1 Bejegyz\u00e9s t\u00f6r\u00f6lve\");\n}\n\nlet editingIndex = null;\nlet pendingFiles = []; \/\/ {name, size, type, data (base64)}\n\nfunction fileIcon(type) {\n  if (type.includes('pdf')) return '\ud83d\udcc4';\n  if (type.includes('image')) return '\ud83d\uddbc';\n  if (type.includes('word') || type.includes('document')) return '\ud83d\udcdd';\n  if (type.includes('sheet') || type.includes('excel')) return '\ud83d\udcca';\n  if (type.includes('zip') || type.includes('rar')) return '\ud83d\udddc';\n  return '\ud83d\udcce';\n}\n\nfunction formatSize(bytes) {\n  if (bytes < 1024) return bytes + ' B';\n  if (bytes < 1048576) return (bytes\/1024).toFixed(1) + ' KB';\n  return (bytes\/1048576).toFixed(1) + ' MB';\n}\n\nfunction renderFileList() {\n  const list = document.getElementById(\"f_file_list\");\n  list.innerHTML = \"\";\n  pendingFiles.forEach((f, i) => {\n    const item = document.createElement(\"div\");\n    item.className = \"file-item\";\n    item.innerHTML = `\n      <span class=\"file-item-icon\">${fileIcon(f.type)}<\/span>\n      <span class=\"file-item-name\">${f.name}<\/span>\n      <span class=\"file-item-size\">${formatSize(f.size)}<\/span>\n      <span class=\"file-item-remove\" onclick=\"removeFile(${i})\">\u2715<\/span>`;\n    list.appendChild(item);\n  });\n}\n\nfunction removeFile(i) {\n  pendingFiles.splice(i, 1);\n  renderFileList();\n}\n\nfunction readFileAsBase64(file) {\n  return new Promise((res) => {\n    const reader = new FileReader();\n    reader.onload = e => res(e.target.result.split(',')[1]);\n    reader.readAsDataURL(file);\n  });\n}\n\nasync function handleFileSelect(input) {\n  const files = Array.from(input.files);\n  for (const file of files) {\n    const data = await readFileAsBase64(file);\n    pendingFiles.push({ name: file.name, size: file.size, type: file.type, data });\n  }\n  input.value = \"\";\n  renderFileList();\n}\n\nfunction handleDrop(e) {\n  e.preventDefault();\n  document.getElementById(\"upload-area\").classList.remove(\"dragover\");\n  const dt = e.dataTransfer;\n  if (dt.files.length) {\n    const fakeInput = { files: dt.files };\n    handleFileSelect(fakeInput);\n  }\n}\n\nfunction downloadFile(f) {\n  const a = document.createElement(\"a\");\n  a.href = `data:${f.type || 'application\/octet-stream'};base64,${f.data}`;\n  a.download = f.name;\n  a.click();\n}\n\n \/\/ null = new record, number = editing existing\n\nfunction getFormData(sorszam) {\n  return {\n    sorszam,\n    files: pendingFiles.slice(),\n    datum:                        document.getElementById(\"f_datum\").value,\n    tevekenyseg_tipusa:           document.getElementById(\"f_tipus\").value,\n    kezdemenyezes_oka:            document.getElementById(\"f_ok\").value,\n    allapot: (() => {\n      const elteres = document.getElementById(\"f_elteres_leiras\").value.trim();\n      const meghatarozas = document.getElementById(\"f_meghatarozas\").value.trim();\n      const vegrehajtas = document.getElementById(\"f_vegrehajtas\").value.trim();\n      const hatekonysag = document.getElementById(\"f_hatekonysag_datum\").value.trim();\n      const allapot = document.getElementById(\"f_allapot\").value;\n      if (hatekonysag) return \"\u00c9rt\u00e9kelve, lez\u00e1rva\";\n      if (vegrehajtas) return \"V\u00e9grehajtva\";\n      if (meghatarozas && (!allapot || allapot === \"Kezdem\u00e9nyezve\")) return \"Meghat\u00e1rozva\";\n      if (elteres && !allapot) return \"Kezdem\u00e9nyezve\";\n      return allapot;\n    })(),\n    erintett_telephely_osztaly_terulet: document.getElementById(\"f_telephely\").value,\n    elteres_leiras:               document.getElementById(\"f_elteres_leiras\").value,\n    elteres_ok:                   document.getElementById(\"f_elteres_ok\").value,\n    tevekenyseg_meghatarozasa:    document.getElementById(\"f_meghatarozas\").value,\n    felelos:                      document.getElementById(\"f_felelos\").value,\n    hatarido:                     document.getElementById(\"f_hatarido\").value,\n    elrendelo_szemely:            document.getElementById(\"f_elrendelo\").value,\n    vegrehajtas_datuma:           document.getElementById(\"f_vegrehajtas\").value,\n    igazolas_hatekonysag_ertekeles: document.getElementById(\"f_igazolas\").value,\n    hatekonysag_igazolas_datum:   document.getElementById(\"f_hatekonysag_datum\").value,\n    igazolo_ellenorzo_szemely:    document.getElementById(\"f_igazolo\").value,\n  };\n}\n\nfunction submitForm() {\n  if (editingIndex !== null) {\n    \/\/ Save edit \u2013 r\u00f6gz\u00edtj\u00fck az indexet \u00e9s sorsz\u00e1mot MIEL\u0150TT clearForm() null\u00e1zza\n    const idx = editingIndex;\n    const sorszam = records[idx].sorszam;\n    const updated = getFormData(sorszam);\n    clearForm();                  \/\/ null\u00e1zza editingIndex-et\n    records[idx] = updated;       \/\/ friss\u00edti a rekordot\n    renderTable();\n    checkDeadlines();\n    switchTab(0);\n    showToast(\"\u2713 Bejegyz\u00e9s mentve\");\n  } else {\n    \/\/ Add new\n    const newRec = getFormData(records.length + 1);\n    clearForm();\n    records.unshift(newRec);\n    records.forEach((r, i) => r.sorszam = i + 1);\n    renderTable();\n    checkDeadlines();\n    switchTab(0);\n    showToast(\"\u2713 Bejegyz\u00e9s hozz\u00e1adva\");\n  }\n}\n\nfunction editRecord(ri) {\n  const r = records[ri];\n  editingIndex = ri;\n  \/\/ Fill form\n  document.getElementById(\"f_datum\").value          = r.datum || \"\";\n  document.getElementById(\"f_tipus\").value           = r.tevekenyseg_tipusa || \"\";\n  document.getElementById(\"f_ok\").value              = r.kezdemenyezes_oka || \"\";\n  document.getElementById(\"f_allapot\").value         = r.allapot || \"\";\n  document.getElementById(\"f_telephely\").value       = r.erintett_telephely_osztaly_terulet || \"\";\n  document.getElementById(\"f_elteres_leiras\").value  = r.elteres_leiras || \"\";\n  document.getElementById(\"f_elteres_ok\").value      = r.elteres_ok || \"\";\n  document.getElementById(\"f_meghatarozas\").value    = r.tevekenyseg_meghatarozasa || \"\";\n  document.getElementById(\"f_felelos\").value         = r.felelos || \"\";\n  document.getElementById(\"f_hatarido\").value        = r.hatarido || \"\";\n  document.getElementById(\"f_elrendelo\").value       = r.elrendelo_szemely || \"\";\n  document.getElementById(\"f_vegrehajtas\").value     = r.vegrehajtas_datuma || \"\";\n  document.getElementById(\"f_igazolas\").value        = r.igazolas_hatekonysag_ertekeles || \"\";\n  document.getElementById(\"f_hatekonysag_datum\").value = r.hatekonysag_igazolas_datum || \"\";\n  document.getElementById(\"f_igazolo\").value         = r.igazolo_ellenorzo_szemely || \"\";\n  \/\/ Load existing files\n  pendingFiles = r.files ? r.files.slice() : [];\n  renderFileList();\n  \/\/ Update UI\n  document.getElementById(\"form-title\").textContent = `\u270f\ufe0f Bejegyz\u00e9s szerkeszt\u00e9se \u2013 #${r.sorszam}`;\n  document.getElementById(\"edit-banner\").style.display = \"block\";\n  document.getElementById(\"form-submit-btn\").textContent = \"\ud83d\udcbe Ment\u00e9s\";\n  switchTab(1);\n}\n\nfunction clearForm() {\n  [\"f_datum\",\"f_tipus\",\"f_ok\",\"f_allapot\",\"f_telephely\",\"f_felelos\",\"f_hatarido\",\n   \"f_elrendelo\",\"f_elteres_leiras\",\"f_elteres_ok\",\"f_meghatarozas\",\n   \"f_vegrehajtas\",\"f_igazolas\",\"f_hatekonysag_datum\",\"f_igazolo\"]\n  .forEach(id => { document.getElementById(id).value = \"\"; });\n  editingIndex = null;\n  pendingFiles = [];\n  renderFileList();\n  document.getElementById(\"form-title\").textContent = \"\u2795 \u00daj bejegyz\u00e9s hozz\u00e1ad\u00e1sa\";\n  document.getElementById(\"edit-banner\").style.display = \"none\";\n  document.getElementById(\"form-submit-btn\").textContent = \"\u2713 Bejegyz\u00e9s hozz\u00e1ad\u00e1sa\";\n}\n\n\/\/ XML EXPORT\nfunction esc(s) {\n  return (s||\"\").replace(\/&\/g,\"&amp;\").replace(\/<\/g,\"&lt;\").replace(\/>\/g,\"&gt;\").replace(\/\"\/g,\"&quot;\");\n}\nfunction exportXML() {\n  let xml = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n<helyesbito_tevekenysegek_adatbazis>\\n`;\n  xml += `  <metaadatok>\\n    <cim>Helyesb\u00edt\u0151 tev\u00e9kenys\u00e9gek nyilv\u00e1ntart\u00e1sa<\/cim>\\n    <forras>Helyesb\u00edt\u0151_tev\u00e9kenys\u00e9gek.xlsx<\/forras>\\n  <\/metaadatok>\\n`;\n  xml += `  <referenciaadatok>\\n    <kezdemenyezes_okok>\\n`;\n  [\"bels\u0151 audit\",\"k\u00fcls\u0151 audit\",\"egy\u00e9b\",\"vev\u0151i reklam\u00e1ci\u00f3\",\"hat\u00f3s\u00e1gi \u00e9szrev\u00e9tel\",\"nemmegfelel\u0151s\u00e9g\"]\n    .forEach(o => xml += `      <ok>${esc(o)}<\/ok>\\n`);\n  xml += `    <\/kezdemenyezes_okok>\\n    <allapot_ertekek>\\n`;\n  ALLAPOTOK.forEach(a => xml += `      <allapot>${esc(a)}<\/allapot>\\n`);\n  xml += `    <\/allapot_ertekek>\\n    <tevekenyseg_tipusok>\\n`;\n  [\"Helyesb\u00edt\u0151 tev\u00e9kenys\u00e9g\",\"Fejleszt\u00e9si javaslat\"].forEach(t => xml += `      <tipus>${esc(t)}<\/tipus>\\n`);\n  xml += `    <\/tevekenyseg_tipusok>\\n  <\/referenciaadatok>\\n`;\n  xml += `  <nyilvantartas>\\n`;\n  records.forEach(r => {\n    xml += `    <bejegyzes sorszam=\"${r.sorszam}\">\\n`;\n    [\"datum\",\"tevekenyseg_tipusa\",\"kezdemenyezes_oka\",\"allapot\",\n     \"erintett_telephely_osztaly_terulet\",\"elteres_leiras\",\"elteres_ok\",\n     \"tevekenyseg_meghatarozasa\",\"felelos\",\"hatarido\",\"elrendelo_szemely\",\n     \"vegrehajtas_datuma\",\"igazolas_hatekonysag_ertekeles\",\n     \"hatekonysag_igazolas_datum\",\"igazolo_ellenorzo_szemely\"]\n    .forEach(k => xml += `      <${k}>${esc(r[k])}<\/${k}>\\n`);\n    if (r.files && r.files.length > 0) {\n      xml += `      <csatolmanyok>\\n`;\n      r.files.forEach(f => { xml += `        <fajl nev=\"${esc(f.name)}\" meret=\"${f.size}\" tipus=\"${esc(f.type)}\"\/>\\n`; });\n      xml += `      <\/csatolmanyok>\\n`;\n    }\n    xml += `    <\/bejegyzes>\\n`;\n  });\n  xml += `  <\/nyilvantartas>\\n<\/helyesbito_tevekenysegek_adatbazis>`;\n\n  const blob = new Blob([xml], {type:\"application\/xml\"});\n  const a = document.createElement(\"a\");\n  a.href = URL.createObjectURL(blob);\n  a.download = \"helyesbito_tevekenysegek_export.xml\";\n  a.click();\n  showToast(\"\u2b07 XML let\u00f6ltve\");\n}\n\n\/\/ TABS\nconst panels = document.querySelectorAll(\".tab-panel\");\nconst tabBtns = document.querySelectorAll(\".tab-btn\");\nfunction switchTab(i) {\n  panels.forEach((p,j) => p.classList.toggle(\"active\", i===j));\n  tabBtns.forEach((t,j) => t.classList.toggle(\"active\", i===j));\n}\n\n\/\/ TOAST\nfunction showToast(msg) {\n  const t = document.getElementById(\"toast\");\n  t.textContent = msg; t.classList.add(\"show\");\n  clearTimeout(t._t);\n  t._t = setTimeout(() => t.classList.remove(\"show\"), 1800);\n}\n\n\/\/ REFERENCE CARDS\nconst refDefs = [\n  {title:\"Kezdem\u00e9nyez\u00e9s okai\", items:[\"bels\u0151 audit\",\"k\u00fcls\u0151 audit\",\"egy\u00e9b\",\"vev\u0151i reklam\u00e1ci\u00f3\",\"hat\u00f3s\u00e1gi \u00e9szrev\u00e9tel\",\"nemmegfelel\u0151s\u00e9g\"], icon:\"\ud83d\udccb\", color:\"#f59e0b\"},\n  {title:\"\u00c1llapot \u00e9rt\u00e9kek\",    items:ALLAPOTOK, icon:\"\ud83d\udd04\", color:\"#10b981\"},\n  {title:\"Tev\u00e9kenys\u00e9g t\u00edpusok\",items:[\"Helyesb\u00edt\u0151 tev\u00e9kenys\u00e9g\",\"Fejleszt\u00e9si javaslat\"], icon:\"\ud83c\udff7\ufe0f\", color:\"#6366f1\"},\n];\nconst cardsEl = document.getElementById(\"ref-cards\");\nrefDefs.forEach(({title,items,icon,color}) => {\n  const rows = items.map((it,i) => `<div class=\"item-row\">\n    <div class=\"item-num\" style=\"background:${color}22;color:${color}\">${i+1}<\/div>\n    <div class=\"item-text\">${it}<\/div><\/div>`).join(\"\");\n  cardsEl.innerHTML += `<div class=\"card\" style=\"border-color:${color}33\">\n    <div class=\"card-header\">\n      <span class=\"card-icon\">${icon}<\/span>\n      <span class=\"card-title\" style=\"color:${color}\">${title}<\/span>\n      <span class=\"card-count\" style=\"background:${color}22;color:${color}\">${items.length}<\/span>\n    <\/div>${rows}<\/div>`;\n});\n\n\/\/ FIELDS LIST\nconst flEl = document.getElementById(\"fields-list\");\nFIELDS.forEach((f,i) => {\n  flEl.innerHTML += `<div class=\"field-row\">\n    <div class=\"field-idx\">${i+1}<\/div>\n    <div class=\"field-id\">${f.id}<\/div>\n    <div class=\"field-label\">${f.label}<\/div>\n  <\/div>`;\n});\n\n\/\/ Init\nrenderTable();\ncheckDeadlines();\nrenderFelelosGrid();\n<\/script>\n<\/body>\n<\/html>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Helyesb\u00edt\u0151 tev\u00e9kenys\u00e9gek nyilv\u00e1ntart\u00e1sa \ud83d\uddc2 Helyesb\u00edt\u0151 tev\u00e9kenys\u00e9gek nyilv\u00e1ntart\u00e1sa Forr\u00e1s: Helyesb\u00edt\u0151_tev\u00e9kenys\u00e9gek.xlsx 8 bejegyz\u00e9s \u2b07 XML export\u00e1l\u00e1s \ud83d\udccb Nyilv\u00e1ntart\u00e1s \u2795 \u00daj bejegyz\u00e9s \ud83d\udd16 Referenci\u00e1k \ud83d\udd27 Sablon mez\u0151k \ud83d\udc65 Felel\u0151s\u00f6k \u26a0\ufe0f Lej\u00e1rt hat\u00e1ridej\u0171 helyesb\u00edt\u0151 tev\u00e9kenys\u00e9gek! \ud83d\udce7 Email k\u00fcld\u00e9se \ud83d\udca1 Kattints b\u00e1rmelyik cell\u00e1ra a szerkeszt\u00e9shez &nbsp;\u00b7&nbsp; Az \u00e1llapot cell\u00e1n dupl\u00e1n kattintva leg\u00f6rd\u00fcl\u0151 men\u00fc jelenik meg &nbsp;\u00b7&nbsp; Sz\u0171rj az oszlopfejl\u00e9cek alatt [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-8","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/alisma.hu\/index.php?rest_route=\/wp\/v2\/pages\/8","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alisma.hu\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/alisma.hu\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/alisma.hu\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/alisma.hu\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=8"}],"version-history":[{"count":4,"href":"https:\/\/alisma.hu\/index.php?rest_route=\/wp\/v2\/pages\/8\/revisions"}],"predecessor-version":[{"id":13,"href":"https:\/\/alisma.hu\/index.php?rest_route=\/wp\/v2\/pages\/8\/revisions\/13"}],"wp:attachment":[{"href":"https:\/\/alisma.hu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=8"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}