{"id":4478,"date":"2026-05-09T11:58:56","date_gmt":"2026-05-09T11:58:56","guid":{"rendered":"https:\/\/stuff-x.net\/?page_id=4478"},"modified":"2026-05-09T11:59:52","modified_gmt":"2026-05-09T11:59:52","slug":"elkot-analysis","status":"publish","type":"page","link":"https:\/\/stuff-x.net\/ar\/elkot-analysis\/","title":{"rendered":"Elkot Analysis"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"4478\" class=\"elementor elementor-4478\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-dbc8ba8 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"dbc8ba8\" data-element_type=\"section\" data-e-type=\"section\">\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-91a157a\" data-id=\"91a157a\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2d74a30 elementor-widget elementor-widget-html\" data-id=\"2d74a30\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\n<html lang=\"en\" dir=\"ltr\">\n<head>\n  <meta charset=\"UTF-8\"\/>\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\/>\n  <title>Elkoteg Intelligence Dashboard<\/title>\n  <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Sora:wght@300;400;500;600;700;800&family=DM+Mono:wght@400;500&display=swap\" rel=\"stylesheet\">\n  <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js@4.4.1\/dist\/chart.umd.min.js\"><\/script>\n  <style>\n    *,*::before,*::after{box-sizing:border-box;margin:0;padding:0}\n    :root{\n      --bg:#080D18;--surface:#0F1629;--s2:#141D34;\n      --border:rgba(255,255,255,.07);--borderh:rgba(255,255,255,.13);\n      --teal:#14B8A6;--amber:#F59E0B;--rose:#F43F5E;\n      --green:#22C55E;--blue:#3B82F6;--purple:#A855F7;\n      --text:#E2E8F0;--muted:#64748B;--muted2:#94A3B8;\n    }\n    body{font-family:'Sora',system-ui,sans-serif;background:var(--bg);color:var(--text);min-height:100vh;line-height:1.5}\n    .mono{font-family:'DM Mono',monospace}\n    .app{max-width:1440px;margin:0 auto;padding:1.25rem 1rem 3rem}\n\n    header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1.5rem;flex-wrap:wrap}\n    .live{display:inline-flex;align-items:center;gap:.4rem;font-size:.68rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--teal);margin-bottom:.4rem}\n    .live::before{content:'';width:7px;height:7px;border-radius:50%;background:var(--teal);box-shadow:0 0 0 0 rgba(20,184,166,.4);animation:ping 1.8s ease infinite}\n    @keyframes ping{0%{box-shadow:0 0 0 0 rgba(20,184,166,.6)}70%{box-shadow:0 0 0 8px rgba(20,184,166,0)}100%{box-shadow:0 0 0 0 rgba(20,184,166,0)}}\n    h1{font-size:1.7rem;font-weight:800;letter-spacing:-.03em}\n    .subtitle{color:var(--muted);font-size:.78rem;margin-top:.25rem}\n    .hctrl{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}\n    .countdown{font-size:.68rem;color:var(--muted);display:flex;align-items:center;gap:.25rem}\n\n    select,button{font-family:'Sora',sans-serif;font-size:.76rem;font-weight:600;border-radius:10px;border:1px solid var(--border);cursor:pointer;transition:all .15s;outline:none}\n    select{background:var(--surface);color:var(--text);padding:.45rem .9rem;-webkit-appearance:none}\n    select:hover{border-color:var(--borderh)}\n    .btn{padding:.45rem 1rem}\n    .btn-primary{background:var(--teal);color:#fff;border-color:transparent}\n    .btn-primary:hover{background:#0D9688}\n    .btn-ghost{background:var(--surface);color:var(--muted2)}\n    .btn-ghost:hover{background:var(--s2);border-color:var(--borderh);color:var(--text)}\n    .btn-ai{background:linear-gradient(135deg,#6D28D9,#A855F7);color:#fff;border-color:transparent}\n    .btn-ai:hover{opacity:.88}\n    .btn-sm{padding:.28rem .65rem;font-size:.68rem}\n    button:disabled{opacity:.45;cursor:not-allowed}\n\n    .card{background:var(--surface);border:1px solid var(--border);border-radius:18px;padding:1.1rem 1.35rem;transition:border-color .2s}\n    .card:hover{border-color:var(--borderh)}\n    .ctitle{font-size:.9rem;font-weight:700}\n    .csub{font-size:.73rem;color:var(--muted);margin-top:.12rem;margin-bottom:.9rem}\n    .chdr{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:.12rem}\n\n    \/* Alerts *\/\n    #alertsSection{margin-bottom:1rem}\n    .alert{display:flex;align-items:flex-start;gap:.75rem;padding:.7rem 1rem;border-radius:12px;margin-bottom:.45rem;font-size:.79rem;line-height:1.5;border:1px solid}\n    .alert-danger{background:rgba(244,63,94,.08);border-color:rgba(244,63,94,.25);color:#FDA4AF}\n    .alert-warning{background:rgba(245,158,11,.08);border-color:rgba(245,158,11,.25);color:#FCD34D}\n    .alert-success{background:rgba(34,197,94,.08);border-color:rgba(34,197,94,.25);color:#86EFAC}\n    .alert-info{background:rgba(59,130,246,.08);border-color:rgba(59,130,246,.25);color:#93C5FD}\n    .alert-ico{font-size:.95rem;flex-shrink:0;margin-top:.05rem}\n    .alert-body{flex:1;direction:rtl;text-align:right}\n    .alert-title{font-weight:700;font-size:.74rem;margin-bottom:.12rem}\n    .alert-msg{font-size:.72rem;opacity:.85}\n    .alert-close{background:none;border:none;color:inherit;opacity:.5;padding:.1rem .3rem;font-size:1rem;cursor:pointer;flex-shrink:0;border-radius:4px}\n    .alert-close:hover{opacity:1}\n\n    \/* Grids *\/\n    .g6{display:grid;grid-template-columns:repeat(6,1fr);gap:.85rem;margin-bottom:1.1rem}\n    .g32{display:grid;grid-template-columns:2fr 1.1fr;gap:.85rem;margin-bottom:1.1rem}\n    .g2{display:grid;grid-template-columns:1fr 1fr;gap:.85rem;margin-bottom:1.1rem}\n    .g3{display:grid;grid-template-columns:repeat(3,1fr);gap:.85rem;margin-bottom:1.1rem}\n    .g21{display:grid;grid-template-columns:1.6fr 1fr;gap:.85rem;margin-bottom:1.1rem}\n    .gcol{display:flex;flex-direction:column;gap:.85rem}\n    .mb{margin-bottom:1.1rem}\n\n    @media(max-width:1100px){\n      .g6{grid-template-columns:repeat(3,1fr)}\n      .g32,.g21{grid-template-columns:1fr}\n      .g3{grid-template-columns:1fr 1fr}\n    }\n    @media(max-width:700px){\n      .g6{grid-template-columns:repeat(2,1fr)}\n      .g2,.g3{grid-template-columns:1fr}\n      h1{font-size:1.25rem}\n      .hctrl .countdown,.hctrl #lastUpdated{display:none}\n    }\n    @media(max-width:420px){\n      .g6{grid-template-columns:repeat(2,1fr)}\n      .app{padding:.75rem .75rem 2rem}\n      h1{font-size:1.1rem}\n    }\n\n    \/* Metric cards *\/\n    .mc{position:relative;overflow:hidden;cursor:default;padding-top:1.35rem}\n    .mc::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:var(--mca,var(--teal))}\n    .mc::after{content:'';position:absolute;inset:0;background:radial-gradient(circle at top left,var(--mca,var(--teal)) 0%,transparent 65%);opacity:.05;pointer-events:none}\n    .mc:hover::after{opacity:.09}\n    .mc-lbl{font-size:.62rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:.5rem}\n    .mc-val{font-size:1.4rem;font-weight:800;letter-spacing:-.035em;font-family:'DM Mono',monospace;line-height:1}\n    .mc-chg{display:inline-flex;align-items:center;gap:.2rem;font-size:.63rem;font-weight:700;margin-top:.38rem;padding:.15rem .4rem;border-radius:5px}\n    .up{color:var(--green);background:rgba(34,197,94,.1)}\n    .dn{color:var(--rose);background:rgba(244,63,94,.1)}\n    .flat{color:var(--muted);background:rgba(100,116,139,.08)}\n    .mc-hint{font-size:.63rem;color:var(--muted);margin-top:.2rem}\n\n    \/* Table *\/\n    .ox{overflow-x:auto}\n    table{width:100%;border-collapse:collapse;font-size:.78rem}\n    th{text-align:left;padding:.55rem .65rem;font-size:.62rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--border);white-space:nowrap}\n    td{padding:.55rem .65rem;border-bottom:1px solid rgba(255,255,255,.04);vertical-align:middle}\n    tr:last-child td{border-bottom:none}\n    tbody tr:hover td{background:rgba(255,255,255,.02)}\n\n    \/* Badges *\/\n    .badge{display:inline-flex;align-items:center;padding:.14rem .45rem;border-radius:5px;font-size:.63rem;font-weight:700;white-space:nowrap}\n    .b-processing,.b-qyd{background:rgba(59,130,246,.13);color:#60A5FA}\n    .b-completed,.b-mktmlt{background:rgba(34,197,94,.13);color:#4ADE80}\n    .b-pending,.b-mwlq{background:rgba(245,158,11,.13);color:#FBB040}\n    .b-cancelled,.b-mlghy{background:rgba(244,63,94,.1);color:#FB7185}\n    .b-meta{background:rgba(59,130,246,.1);color:#93C5FD}\n    .b-google{background:rgba(34,197,94,.1);color:#86EFAC}\n    .b-direct{background:rgba(168,85,247,.1);color:#C4B5FD}\n    .b-unknown{background:rgba(100,116,139,.08);color:var(--muted2)}\n\n    \/* ROAS bar *\/\n    .roas-row{display:flex;align-items:center;gap:.45rem}\n    .roas-bg{flex:1;height:4px;background:rgba(255,255,255,.06);border-radius:4px;overflow:hidden;min-width:60px}\n    .roas-fill{height:100%;border-radius:4px}\n    .roas-val{font-family:'DM Mono',monospace;font-weight:700;font-size:.78rem;min-width:36px;text-align:right}\n\n    \/* Products *\/\n    .prod-row{display:flex;align-items:baseline;justify-content:space-between;gap:.5rem}\n    .prod-name{font-size:.77rem;font-weight:600;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n    .prod-rev{font-family:'DM Mono',monospace;font-size:.77rem;font-weight:700;white-space:nowrap}\n    .prod-bar{height:3px;background:rgba(255,255,255,.05);border-radius:3px;overflow:hidden;margin:.28rem 0 .18rem}\n    .prod-fill{height:100%;background:var(--teal);border-radius:3px}\n    .prod-units{font-size:.63rem;color:var(--muted)}\n\n    \/* Funnel *\/\n    .fn-row{display:flex;align-items:center;gap:.65rem;margin-bottom:.5rem}\n    .fn-lbl{font-size:.69rem;color:var(--muted2);width:72px;flex-shrink:0}\n    .fn-bg{flex:1;height:20px;background:rgba(255,255,255,.04);border-radius:6px;overflow:hidden}\n    .fn-fill{height:100%;border-radius:6px;display:flex;align-items:center;padding:0 .45rem}\n    .fn-count{font-family:'DM Mono',monospace;font-size:.68rem;font-weight:700}\n    .fn-pct{font-size:.65rem;color:var(--muted);min-width:30px;text-align:right}\n\n    \/* Heatmap *\/\n    .heat-wrap{overflow-x:auto;padding-bottom:.25rem}\n    .heat-strip{display:grid;grid-template-columns:repeat(24,1fr);gap:3px;min-width:500px}\n    .heat-col{display:flex;flex-direction:column;align-items:center;gap:3px}\n    .heat-bar-wrap{height:60px;display:flex;align-items:flex-end;width:100%}\n    .heat-bar{width:100%;border-radius:3px 3px 0 0;cursor:pointer;position:relative;transition:opacity .2s}\n    .heat-bar:hover{opacity:.8}\n    .heat-bar:hover::after{content:attr(data-tip);position:absolute;bottom:calc(100% + 5px);left:50%;transform:translateX(-50%);background:var(--s2);border:1px solid var(--borderh);border-radius:7px;padding:.28rem .5rem;font-size:.62rem;white-space:nowrap;color:var(--text);z-index:20;font-family:'DM Mono',monospace;pointer-events:none}\n    .heat-lbl{font-size:.58rem;color:var(--muted);font-family:'DM Mono',monospace;margin-top:2px}\n    .heat-periods{display:flex;justify-content:space-between;margin-top:.45rem;font-size:.62rem;color:var(--muted);padding:0 2px;min-width:500px}\n\n    \/* Donut *\/\n    .donut-wrap{position:relative;width:100%;max-width:160px;margin:0 auto}\n    .donut-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none}\n    .donut-val{font-family:'DM Mono',monospace;font-size:1.25rem;font-weight:800;line-height:1}\n    .donut-sub{font-size:.63rem;color:var(--muted);margin-top:.18rem}\n    .legend-row{display:flex;align-items:center;gap:.4rem;margin-bottom:.32rem;font-size:.72rem}\n    .legend-dot{width:9px;height:9px;border-radius:2px;flex-shrink:0}\n    .legend-key{color:var(--muted2);flex:1}\n    .legend-val{font-family:'DM Mono',monospace;font-weight:700;font-size:.7rem}\n\n    \/* AI *\/\n    .ai-panel{background:linear-gradient(145deg,#130A27 0%,#0F1629 55%);border:1px solid rgba(168,85,247,.18);border-radius:18px;padding:1.1rem 1.35rem;display:flex;flex-direction:column}\n    .ai-hdr{display:flex;align-items:center;justify-content:space-between;margin-bottom:.85rem}\n    .ai-ttl{font-size:.9rem;font-weight:800}\n    .ai-badge{font-size:.6rem;font-weight:700;letter-spacing:.07em;background:rgba(168,85,247,.15);color:#C4B5FD;padding:.17rem .46rem;border-radius:5px}\n    .insight-card{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.06);border-radius:10px;padding:.72rem .9rem;margin-bottom:.42rem;direction:rtl;text-align:right}\n    .insight-n{font-size:.58rem;font-weight:700;letter-spacing:.07em;color:#A855F7;margin-bottom:.26rem;text-transform:uppercase}\n    .insight-t{font-size:.76rem;color:var(--muted2);line-height:1.65}\n    .ai-load{text-align:center;padding:1.5rem 1rem;color:var(--muted);font-size:.78rem}\n    .spinner{width:20px;height:20px;border:2px solid rgba(168,85,247,.2);border-top-color:#A855F7;border-radius:50%;animation:spin .7s linear infinite;margin:0 auto .75rem}\n    @keyframes spin{to{transform:rotate(360deg)}}\n    .api-inp{width:100%;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.09);border-radius:8px;padding:.38rem .7rem;font-size:.68rem;color:var(--text);font-family:'DM Mono',monospace;outline:none;margin-top:.6rem}\n    .api-inp:focus{border-color:rgba(168,85,247,.35)}\n    .api-note{font-size:.6rem;color:var(--muted);margin-top:.26rem}\n    .divider{height:1px;background:var(--border);margin:.7rem 0}\n\n    \/* Toast *\/\n    #toast{position:fixed;bottom:1.5rem;right:1.5rem;background:var(--s2);border:1px solid var(--borderh);border-radius:12px;padding:.6rem .95rem;font-size:.76rem;font-weight:600;display:none;z-index:9999;align-items:center;gap:.5rem;box-shadow:0 8px 32px rgba(0,0,0,.4)}\n    #toast.show{display:flex;animation:slideUp .2s ease}\n    @keyframes slideUp{from{transform:translateY(6px);opacity:0}to{transform:translateY(0);opacity:1}}\n    ::-webkit-scrollbar{width:4px;height:4px}\n    ::-webkit-scrollbar-track{background:transparent}\n    ::-webkit-scrollbar-thumb{background:rgba(255,255,255,.08);border-radius:4px}\n    .chart-wrap{position:relative;width:100%}\n    td.mono{font-family:'DM Mono',monospace}\n  <\/style>\n<\/head>\n<body>\n<div class=\"app\">\n\n  <header>\n    <div>\n      <div class=\"live\">Elkoteg Commerce Intelligence<\/div>\n      <h1>Sales &amp; Marketing Dashboard<\/h1>\n      <p class=\"subtitle\">WooCommerce \u00b7 Meta Ads \u00b7 Google Ads \u00b7 Attribution \u00b7 AI<\/p>\n    <\/div>\n    <div class=\"hctrl\">\n      <div class=\"countdown\">\u21bb <span id=\"countdownTime\">5:00<\/span><\/div>\n      <span id=\"lastUpdated\" style=\"font-size:.66rem;color:var(--muted)\"><\/span>\n      <select id=\"dateRange\">\n        <option value=\"today\">\u0627\u0644\u064a\u0648\u0645<\/option>\n        <option value=\"yesterday\">\u0623\u0645\u0633<\/option>\n        <option value=\"7d\" selected>\u0622\u062e\u0631 7 \u0623\u064a\u0627\u0645<\/option>\n        <option value=\"30d\">\u0622\u062e\u0631 30 \u064a\u0648\u0645<\/option>\n      <\/select>\n      <button class=\"btn btn-ghost\" id=\"exportBtn\">\u2193 \u062a\u0635\u062f\u064a\u0631 CSV<\/button>\n      <button class=\"btn btn-primary\" id=\"refreshBtn\">\u21bb \u062a\u062d\u062f\u064a\u062b<\/button>\n    <\/div>\n  <\/header>\n\n  <div id=\"alertsSection\"><\/div>\n\n  <section class=\"g6\" id=\"metricsGrid\"><\/section>\n\n  <section class=\"g32\">\n    <div class=\"card\">\n      <div class=\"ctitle\">\u0627\u062a\u062c\u0627\u0647 \u0627\u0644\u0625\u064a\u0631\u0627\u062f\u0627\u062a<\/div>\n      <div class=\"csub\" id=\"revenueSub\">\u0623\u062f\u0627\u0621 \u0627\u0644\u0645\u0628\u064a\u0639\u0627\u062a \u062e\u0644\u0627\u0644 \u0627\u0644\u0641\u062a\u0631\u0629<\/div>\n      <div class=\"chart-wrap\"><canvas id=\"revenueChart\" height=\"130\" role=\"img\" aria-label=\"Revenue trend\"><\/canvas><\/div>\n    <\/div>\n    <div class=\"card\">\n      <div class=\"ctitle\">\u0646\u0633\u0628\u0629 \u0627\u0644\u0642\u0646\u0648\u0627\u062a<\/div>\n      <div class=\"csub\">\u0627\u0644\u0623\u0648\u0631\u062f\u0631\u0627\u062a \u062d\u0633\u0628 \u0627\u0644\u0645\u0635\u062f\u0631<\/div>\n      <div id=\"channelLegend\" style=\"display:flex;flex-wrap:wrap;gap:6px;margin-bottom:.7rem\"><\/div>\n      <div class=\"donut-wrap\"><canvas id=\"channelChart\" height=\"150\" role=\"img\" aria-label=\"Channel attribution\"><\/canvas><\/div>\n    <\/div>\n  <\/section>\n\n  <div class=\"card mb\">\n    <div class=\"chdr\">\n      <div>\n        <div class=\"ctitle\">\u062e\u0631\u064a\u0637\u0629 \u0633\u0627\u0639\u0627\u062a \u0627\u0644\u0628\u064a\u0639<\/div>\n        <div class=\"csub\" id=\"heatSub\">\u0645\u062a\u0648\u0633\u0637 \u0627\u0644\u0625\u064a\u0631\u0627\u062f\u0627\u062a \u0628\u0627\u0644\u0633\u0627\u0639\u0629<\/div>\n      <\/div>\n    <\/div>\n    <div class=\"heat-wrap\">\n      <div class=\"heat-strip\" id=\"heatStrip\"><\/div>\n      <div class=\"heat-periods\">\n        <span>\u0627\u0644\u0641\u062c\u0631 \ud83c\udf19<\/span><span>\u0627\u0644\u0635\u0628\u062d \u2600<\/span><span>\u0627\u0644\u0638\u0647\u0631 \ud83c\udf24<\/span><span>\u0627\u0644\u0639\u0635\u0631 \ud83c\udf07<\/span><span>\u0627\u0644\u0645\u0633\u0627\u0621 \ud83c\udf03<\/span>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <section class=\"g2\">\n    <div class=\"card\">\n      <div class=\"chdr\">\n        <div><div class=\"ctitle\">\u0623\u062f\u0627\u0621 \u0627\u0644\u0643\u0627\u0645\u0628\u064a\u0646\u0627\u062a<\/div><div class=\"csub\">\u0627\u0644\u0625\u0646\u0641\u0627\u0642\u060c \u0627\u0644\u0625\u064a\u0631\u0627\u062f\u0627\u062a\u060c \u0648\u0627\u0644\u0640 ROAS<\/div><\/div>\n        <button class=\"btn btn-ghost btn-sm\" id=\"exportCampaignBtn\">\u2193 CSV<\/button>\n      <\/div>\n      <div class=\"ox\">\n        <table>\n          <thead><tr><th>\u0627\u0644\u0643\u0627\u0645\u0628\u064a\u0646<\/th><th>\u0627\u0644\u0645\u0635\u062f\u0631<\/th><th>\u0627\u0644\u0625\u0646\u0641\u0627\u0642<\/th><th>\u0627\u0644\u0625\u064a\u0631\u0627\u062f\u0627\u062a<\/th><th style=\"min-width:120px\">ROAS<\/th><\/tr><\/thead>\n          <tbody id=\"campaignTable\"><\/tbody>\n        <\/table>\n      <\/div>\n    <\/div>\n    <div class=\"card\">\n      <div class=\"ctitle\">\u0623\u0641\u0636\u0644 \u0627\u0644\u0645\u0646\u062a\u062c\u0627\u062a<\/div>\n      <div class=\"csub\">\u0627\u0644\u0623\u0643\u062b\u0631 \u0645\u0628\u064a\u0639\u0627\u064b \u0628\u0627\u0644\u0625\u064a\u0631\u0627\u062f\u0627\u062a<\/div>\n      <div id=\"topProducts\"><\/div>\n    <\/div>\n  <\/section>\n\n  <section class=\"g3\">\n    <div class=\"card\">\n      <div class=\"ctitle\">\u062d\u0627\u0644\u0629 \u0627\u0644\u0623\u0648\u0631\u062f\u0631\u0627\u062a<\/div>\n      <div class=\"csub\">\u062a\u0648\u0632\u064a\u0639 \u062d\u0633\u0628 \u0627\u0644\u062d\u0627\u0644\u0629<\/div>\n      <div class=\"donut-wrap\" style=\"max-width:140px;margin-bottom:.8rem\">\n        <canvas id=\"statusChart\" height=\"140\" role=\"img\" aria-label=\"Order status pie\"><\/canvas>\n        <div class=\"donut-center\"><div class=\"donut-val\" id=\"statusTotal\">\u2014<\/div><div class=\"donut-sub\">\u0623\u0648\u0631\u062f\u0631<\/div><\/div>\n      <\/div>\n      <div id=\"statusLegend\"><\/div>\n    <\/div>\n    <div class=\"card\">\n      <div class=\"ctitle\">\u062c\u062f\u062f \u0645\u0642\u0627\u0628\u0644 \u0639\u0627\u0626\u062f\u064a\u0646<\/div>\n      <div class=\"csub\">\u062a\u0635\u0646\u064a\u0641 \u0627\u0644\u0639\u0645\u0644\u0627\u0621<\/div>\n      <div class=\"donut-wrap\" style=\"max-width:140px;margin-bottom:.8rem\">\n        <canvas id=\"custChart\" height=\"140\" role=\"img\" aria-label=\"New vs returning customers\"><\/canvas>\n        <div class=\"donut-center\"><div class=\"donut-val\" id=\"custNewPct\">\u2014<\/div><div class=\"donut-sub\">\u062c\u062f\u062f<\/div><\/div>\n      <\/div>\n      <div id=\"custLegend\"><\/div>\n    <\/div>\n    <div class=\"card\">\n      <div class=\"ctitle\">\u0642\u0645\u0639 \u0627\u0644\u062a\u062d\u0648\u064a\u0644<\/div>\n      <div class=\"csub\">\u0645\u0646 \u0627\u0644\u0632\u064a\u0627\u0631\u0629 \u062d\u062a\u0649 \u0627\u0644\u0634\u0631\u0627\u0621<\/div>\n      <div id=\"funnelSection\"><\/div>\n    <\/div>\n  <\/section>\n\n  <section class=\"g21\">\n    <div class=\"gcol\">\n      <div class=\"card\">\n        <div class=\"chdr\">\n          <div><div class=\"ctitle\">\u0622\u062e\u0631 \u0627\u0644\u0623\u0648\u0631\u062f\u0631\u0627\u062a<\/div><div class=\"csub\">\u0623\u062d\u062f\u062b \u0623\u0648\u0631\u062f\u0631\u0627\u062a WooCommerce<\/div><\/div>\n          <button class=\"btn btn-ghost btn-sm\" id=\"exportOrdersBtn\">\u2193 CSV<\/button>\n        <\/div>\n        <div class=\"ox\">\n          <table>\n            <thead><tr><th>\u0631\u0642\u0645<\/th><th>\u0627\u0644\u0639\u0645\u064a\u0644<\/th><th>\u0627\u0644\u0645\u0635\u062f\u0631<\/th><th>\u0627\u0644\u062d\u0627\u0644\u0629<\/th><th>\u0627\u0644\u0625\u062c\u0645\u0627\u0644\u064a<\/th><\/tr><\/thead>\n            <tbody id=\"ordersTable\"><\/tbody>\n          <\/table>\n        <\/div>\n      <\/div>\n    <\/div>\n    <div class=\"ai-panel\">\n      <div class=\"ai-hdr\">\n        <div class=\"ai-ttl\">\u2726 \u062a\u062d\u0644\u064a\u0644\u0627\u062a \u0627\u0644\u0630\u0643\u0627\u0621 \u0627\u0644\u0627\u0635\u0637\u0646\u0627\u0639\u064a<\/div>\n        <span class=\"ai-badge\">CLAUDE AI<\/span>\n      <\/div>\n      <div id=\"insightsContent\" style=\"flex:1\"><\/div>\n      <div class=\"divider\"><\/div>\n      <button class=\"btn btn-ai\" id=\"aiRefreshBtn\" style=\"width:100%\">\u062a\u0648\u0644\u064a\u062f \u062a\u062d\u0644\u064a\u0644\u0627\u062a \u062c\u062f\u064a\u062f\u0629<\/button>\n      <input type=\"password\" class=\"api-inp\" id=\"claudeApiKey\" placeholder=\"sk-ant-... (\u0627\u062e\u062a\u064a\u0627\u0631\u064a \u0644\u0644\u0640 AI \u0627\u0644\u062d\u0642\u064a\u0642\u064a)\">\n      <p class=\"api-note\">\u0627\u062a\u0631\u0643\u0647\u0627 \u0641\u0627\u0631\u063a\u0629 \u0644\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0627\u0644\u062a\u062d\u0644\u064a\u0644\u0627\u062a \u0627\u0644\u062a\u062c\u0631\u064a\u0628\u064a\u0629<\/p>\n    <\/div>\n  <\/section>\n\n<\/div>\n<div id=\"toast\"><\/div>\n<script>\nconst API_ENDPOINT=\"\";\n\nconst DB={\n  today:{\n    trendLabel:\"\u0628\u0627\u0644\u0633\u0627\u0639\u0629 \u2014 \u0627\u0644\u064a\u0648\u0645 \u062d\u062a\u0649 \u0627\u0644\u0622\u0646\",heatLabel:\"\u0625\u064a\u0631\u0627\u062f\u0627\u062a \u0627\u0644\u064a\u0648\u0645 \u0628\u0627\u0644\u0633\u0627\u0639\u0629\",prevLabel:\"\u0645\u0642\u0627\u0631\u0646\u0629 \u0628\u0627\u0644\u0623\u0645\u0633\",\n    metrics:{revenue:3404,revenuePrev:21441,orders:4,ordersPrev:17,aov:851,aovPrev:1261,roas:3.1,roasPrev:4.4,units:6,unitsPrev:22,convRate:1.8,convRatePrev:2.9},\n    revenueTrend:[{l:\"00\",v:0},{l:\"02\",v:0},{l:\"04\",v:864},{l:\"06\",v:864},{l:\"08\",v:1724},{l:\"10\",v:2564},{l:\"11\",v:3404}],\n    channels:[{source:\"Meta\",orders:2,revenue:1864},{source:\"Google\",orders:1,revenue:980},{source:\"Direct\",orders:1,revenue:560},{source:\"Unknown\",orders:0,revenue:0}],\n    campaigns:[{name:\"Tokyo Salt Bundle\",source:\"Meta\",spend:520,revenue:1864,roas:3.58},{name:\"Xlim Pro Search\",source:\"Google\",spend:310,revenue:980,roas:3.16},{name:\"Retargeting 7D\",source:\"Meta\",spend:268,revenue:560,roas:2.09}],\n    topProducts:[{name:\"Xlim Pro 3 + Tokyo Classic Bundle\",revenue:1720,units:2},{name:\"Tokyo Classic 30ml Salt\",revenue:864,units:2},{name:\"Elfakher Crown Bar 60K\",revenue:820,units:2}],\n    latestOrders:[{id:46441,customer:\"\u062d\u0633\u0627\u0645 \u0634\u0639\u0628\u0627\u0646\",source:\"Meta\",status:\"processing\",total:980},{id:46440,customer:\"Wael Zidan\",source:\"Direct\",status:\"processing\",total:560},{id:46439,customer:\"\u0645\u064a\u0646\u0627 \u0645\u062d\u0641\u0648\u0638\",source:\"Meta\",status:\"pending\",total:864},{id:46438,customer:\"Sara Ahmed\",source:\"Google\",status:\"processing\",total:980}],\n    funnel:{sessions:188,addToCart:28,checkout:14,purchased:4},\n    orderStatus:{completed:0,processing:3,pending:1,cancelled:0},\n    customerType:{new:3,returning:1},\n    hourlyRevenue:[0,0,0,0,864,0,0,0,860,0,840,840,0,0,0,0,0,0,0,0,0,0,0,0],\n    insights:[\"\u0627\u0644\u0625\u064a\u0631\u0627\u062f\u0627\u062a \u0648\u0635\u0644\u062a EGP 3,404 \u062d\u062a\u0649 \u0627\u0644\u0633\u0627\u0639\u0629 11 \u0635\u0628\u0627\u062d\u0627\u064b \u2014 \u0627\u0644\u0648\u062a\u064a\u0631\u0629 \u0623\u0628\u0637\u0623 \u0645\u0646 \u0627\u0644\u0623\u0645\u0633 (EGP 21,441). \u0627\u0644\u0646\u0627\u0641\u0630\u0629 \u0627\u0644\u0630\u0647\u0628\u064a\u0629 15:00\u201321:00 \u0644\u0633\u0647 \u062c\u0627\u064a\u0629.\",\"\u0643\u0627\u0645\u0628\u064a\u0646 Retargeting 7D \u0628\u064a\u062d\u0642\u0642 ROAS 2.09\u00d7 \u0641\u0642\u0637 \u0627\u0644\u064a\u0648\u0645 \u2014 \u062a\u062d\u062a \u062d\u062f \u0627\u0644\u0631\u0628\u062d\u064a\u0629. \u0631\u0627\u0642\u0628 \u0627\u0644\u0623\u062f\u0627\u0621 \u0642\u0628\u0644 \u0645\u0627 \u062a\u0632\u064a\u062f \u0627\u0644\u0645\u064a\u0632\u0627\u0646\u064a\u0629.\",\"\u0645\u0639\u062f\u0644 \u0627\u0644\u062a\u062d\u0648\u064a\u0644 1.8% \u0645\u0642\u0627\u0631\u0646\u0629 \u0628\u0640 2.9% \u0627\u0644\u0623\u0645\u0633. \u062a\u0623\u0643\u062f \u0625\u0646 landing pages \u0634\u063a\u0627\u0644\u0629 \u0635\u062d \u0648\u0645\u0627 \u0641\u064a\u0634 \u0645\u0634\u0627\u0643\u0644 \u0641\u064a \u0627\u0644\u062f\u0641\u0639.\",\"Google Search ROAS 3.16\u00d7 \u0639\u0644\u0649 EGP 310 \u2014 \u0645\u0645\u0643\u0646 \u062a\u0632\u064a\u062f \u0627\u0644\u0645\u064a\u0632\u0627\u0646\u064a\u0629 \u0644\u0644\u0641\u062a\u0631\u0629 \u0628\u0639\u062f \u0627\u0644\u0638\u0647\u0631 \u0644\u0644\u0627\u0633\u062a\u0641\u0627\u062f\u0629 \u0645\u0646 \u062d\u0631\u0643\u0629 \u0627\u0644\u0628\u062d\u062b.\",\"\u0646\u0633\u0628\u0629 \u0625\u0636\u0627\u0641\u0629 \u0644\u0644\u0643\u0627\u0631\u062a 14.9% (28\/188) \u0644\u0643\u0646 50% \u0628\u064a\u062a\u0631\u0643\u0648\u0627 \u0639\u0646\u062f \u0627\u0644\u0640 checkout \u2014 \u0636\u064a\u0641 urgency \u0623\u0648 \u0639\u0631\u0636 \u0644\u062a\u0642\u0644\u064a\u0644 \u0627\u0644\u062a\u062e\u0644\u064a.\"]\n  },\n  yesterday:{\n    trendLabel:\"\u0628\u0627\u0644\u0633\u0627\u0639\u0629 \u2014 \u064a\u0648\u0645 \u0643\u0627\u0645\u0644\",heatLabel:\"\u0625\u064a\u0631\u0627\u062f\u0627\u062a \u0627\u0644\u0623\u0645\u0633 \u0628\u0627\u0644\u0633\u0627\u0639\u0629\",prevLabel:\"\u0645\u0642\u0627\u0631\u0646\u0629 \u0628\u0642\u0628\u0644\u0647\",\n    metrics:{revenue:21441,revenuePrev:14820,orders:17,ordersPrev:12,aov:1261,aovPrev:1235,roas:4.4,roasPrev:3.7,units:23,unitsPrev:16,convRate:2.9,convRatePrev:2.2},\n    revenueTrend:[{l:\"00\",v:0},{l:\"02\",v:980},{l:\"06\",v:2460},{l:\"09\",v:5820},{l:\"12\",v:9340},{l:\"15\",v:14780},{l:\"18\",v:19260},{l:\"21\",v:21441},{l:\"24\",v:21441}],\n    channels:[{source:\"Meta\",orders:10,revenue:12640},{source:\"Google\",orders:4,revenue:5040},{source:\"Direct\",orders:2,revenue:2760},{source:\"Unknown\",orders:1,revenue:1001}],\n    campaigns:[{name:\"Tokyo Salt Bundle\",source:\"Meta\",spend:1820,revenue:7840,roas:4.31},{name:\"Xlim Pro Search\",source:\"Google\",spend:1120,revenue:5040,roas:4.50},{name:\"Retargeting 7D\",source:\"Meta\",spend:820,revenue:4800,roas:5.85},{name:\"Catalog Sales\",source:\"Meta\",spend:1113,revenue:3920,roas:3.52}],\n    topProducts:[{name:\"Xlim Pro 3 + Tokyo Classic Bundle\",revenue:5040,units:4},{name:\"Elfakher Crown Bar 60K\",revenue:4800,units:5},{name:\"Tokyo Classic 30ml Salt\",revenue:3920,units:6},{name:\"Xlim Go 2 Bundle\",revenue:2560,units:2}],\n    latestOrders:[{id:46437,customer:\"\u0645\u062d\u0645\u062f \u0639\u0645\u0631\",source:\"Meta\",status:\"completed\",total:1260},{id:46436,customer:\"Ahmed Zaki\",source:\"Google\",status:\"completed\",total:960},{id:46435,customer:\"\u0631\u0627\u0646\u064a\u0627 \u062d\u0633\u0646\",source:\"Meta\",status:\"completed\",total:840},{id:46434,customer:\"Omar Farid\",source:\"Direct\",status:\"completed\",total:1380},{id:46433,customer:\"\u064a\u0648\u0633\u0641 \u0639\u0644\u064a\",source:\"Google\",status:\"completed\",total:780}],\n    funnel:{sessions:586,addToCart:93,checkout:48,purchased:17},\n    orderStatus:{completed:13,processing:2,pending:1,cancelled:1},\n    customerType:{new:11,returning:6},\n    hourlyRevenue:[0,980,0,0,0,0,0,0,2460,0,0,0,3520,0,0,5440,0,0,4480,2181,0,0,0,380],\n    insights:[\"\u0627\u0644\u0623\u0645\u0633 \u0643\u0627\u0646 \u064a\u0648\u0645 \u0642\u0648\u064a \u2014 EGP 21,441 \u0625\u064a\u0631\u0627\u062f\u0627\u062a\u060c \u0623\u0639\u0644\u0649 \u0628\u0640 44.7% \u0645\u0646 \u0627\u0644\u064a\u0648\u0645 \u0627\u0644\u0644\u064a \u0642\u0628\u0644\u0647. \u0623\u062f\u0627\u0621 \u0645\u0645\u062a\u0627\u0632 \u0639\u0644\u0649 \u0643\u0644 \u0627\u0644\u0642\u0646\u0648\u0627\u062a.\",\"Retargeting 7D \u062d\u0642\u0642 ROAS 5.85\u00d7 \u2014 \u0623\u0641\u0636\u0644 \u0643\u0627\u0645\u0628\u064a\u0646 \u0641\u064a \u0627\u0644\u064a\u0648\u0645. \u0648\u0633\u0651\u0639 \u0627\u0644\u062c\u0645\u0647\u0648\u0631 \u0627\u0644\u0645\u0633\u062a\u0647\u062f\u0641 \u0644\u062a\u0643\u0628\u064a\u0631 \u0647\u0630\u0647 \u0627\u0644\u0646\u062a\u064a\u062c\u0629.\",\"\u0630\u0631\u0648\u0629 \u0627\u0644\u0625\u064a\u0631\u0627\u062f\u0627\u062a \u0643\u0627\u0646\u062a 15:00\u201321:00 \u0648\u0648\u0644\u0651\u062f\u062a 63% \u0645\u0646 \u0645\u0628\u064a\u0639\u0627\u062a \u0627\u0644\u064a\u0648\u0645. \u0627\u0636\u0628\u0637 \u0623\u0639\u0644\u0649 bids \u0641\u064a \u0647\u0630\u0627 \u0627\u0644\u0648\u0642\u062a \u064a\u0648\u0645\u064a\u0627\u064b.\",\"Google Search ROAS 4.5\u00d7 \u0639\u0644\u0649 EGP 1,120 \u0641\u0642\u0637 \u2014 \u0643\u0641\u0627\u0621\u0629 \u0639\u0627\u0644\u064a\u0629 \u062c\u062f\u0627\u064b \u0644\u0643\u0646 \u0627\u0644\u0645\u064a\u0632\u0627\u0646\u064a\u0629 \u0635\u063a\u064a\u0631\u0629. \u0641\u0643\u0631 \u0641\u064a \u0645\u0636\u0627\u0639\u0641\u062a\u0647\u0627.\",\"\u0645\u0639\u062f\u0644 checkout-to-purchase 35% (17\/48). \u0623\u0636\u0641 social proof \u0623\u0648 \u0639\u0631\u0636 \u0645\u062d\u062f\u0648\u062f \u0627\u0644\u0648\u0642\u062a \u0639\u0646\u062f \u0627\u0644\u0640 checkout \u0644\u0631\u0641\u0639\u0647.\"]\n  },\n  \"7d\":{\n    trendLabel:\"\u064a\u0648\u0645\u064a \u2014 \u0622\u062e\u0631 7 \u0623\u064a\u0627\u0645\",heatLabel:\"\u0645\u062a\u0648\u0633\u0637 \u0625\u064a\u0631\u0627\u062f\u0627\u062a \u0627\u0644\u0633\u0627\u0639\u0629 (7 \u0623\u064a\u0627\u0645)\",prevLabel:\"\u0645\u0642\u0627\u0631\u0646\u0629 \u0628\u0627\u0644\u0623\u0633\u0628\u0648\u0639 \u0627\u0644\u0633\u0627\u0628\u0642\",\n    metrics:{revenue:98420,revenuePrev:81350,orders:83,ordersPrev:68,aov:1186,aovPrev:1196,roas:4.2,roasPrev:3.8,units:104,unitsPrev:85,convRate:2.7,convRatePrev:2.4},\n    revenueTrend:[{l:\"\u0627\u0644\u0623\u062d\u062f\",v:9620},{l:\"\u0627\u0644\u0627\u062b\u0646\u064a\u0646\",v:14380},{l:\"\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621\",v:11760},{l:\"\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621\",v:16480},{l:\"\u0627\u0644\u062e\u0645\u064a\u0633\",v:18900},{l:\"\u0627\u0644\u062c\u0645\u0639\u0629\",v:21441},{l:\"\u0627\u0644\u0633\u0628\u062a\u2191\",v:3404}],\n    channels:[{source:\"Meta\",orders:47,revenue:55780},{source:\"Google\",orders:21,revenue:24930},{source:\"Direct\",orders:12,revenue:14230},{source:\"Unknown\",orders:3,revenue:3480}],\n    campaigns:[{name:\"Tokyo Salt Bundle\",source:\"Meta\",spend:8400,revenue:34200,roas:4.07},{name:\"Xlim Pro Search\",source:\"Google\",spend:5600,revenue:24930,roas:4.45},{name:\"Retargeting 7D\",source:\"Meta\",spend:4200,revenue:21560,roas:5.13},{name:\"Catalog Sales\",source:\"Meta\",spend:5233,revenue:18730,roas:3.58}],\n    topProducts:[{name:\"Xlim Pro 3 + Tokyo Classic Bundle\",revenue:22680,units:19},{name:\"Elfakher Crown Bar 60K\",revenue:16400,units:19},{name:\"Tokyo Classic 30ml Salt\",revenue:14820,units:26},{name:\"Xlim Go 2 Bundle\",revenue:10960,units:10}],\n    latestOrders:[{id:46441,customer:\"\u062d\u0633\u0627\u0645 \u0634\u0639\u0628\u0627\u0646\",source:\"Meta\",status:\"processing\",total:980},{id:46439,customer:\"\u0645\u062d\u0645\u062f \u0639\u0645\u0631\",source:\"Google\",status:\"completed\",total:960},{id:46438,customer:\"Wael Zidan\",source:\"Direct\",status:\"processing\",total:600},{id:46437,customer:\"mina mahfouz\",source:\"Meta\",status:\"pending\",total:864},{id:46435,customer:\"Sara Ahmed\",source:\"Google\",status:\"completed\",total:1240}],\n    funnel:{sessions:3070,addToCart:488,checkout:252,purchased:83},\n    orderStatus:{completed:61,processing:14,pending:5,cancelled:3},\n    customerType:{new:54,returning:29},\n    hourlyRevenue:[480,220,140,80,360,640,1240,2480,4200,5640,5280,6140,7480,6920,7040,9280,11640,13480,12840,14980,13480,10240,6840,2480],\n    insights:[\"\u0625\u064a\u0631\u0627\u062f\u0627\u062a \u0627\u0644\u0623\u0633\u0628\u0648\u0639 EGP 98,420 \u2014 \u0646\u0645\u0648 21% \u0645\u0642\u0627\u0631\u0646\u0629 \u0628\u0627\u0644\u0623\u0633\u0628\u0648\u0639 \u0627\u0644\u0633\u0627\u0628\u0642. \u0627\u0644\u062e\u0645\u064a\u0633 \u0648\u0627\u0644\u062c\u0645\u0639\u0629 \u0623\u0642\u0648\u0649 \u0627\u0644\u0623\u064a\u0627\u0645.\",\"Retargeting 7D \u062d\u0642\u0642 ROAS 5.13\u00d7 \u0637\u0648\u0627\u0644 \u0627\u0644\u0623\u0633\u0628\u0648\u0639 \u2014 \u0632\u064a\u062f \u0627\u0644\u0645\u064a\u0632\u0627\u0646\u064a\u0629 \u0627\u0644\u064a\u0648\u0645\u064a\u0629 \u0645\u0646 EGP 600 \u0625\u0644\u0649 EGP 1,000 \u0644\u0644\u062a\u0648\u0633\u0639.\",\"Google Search ROAS 4.45\u00d7 \u0627\u0644\u0623\u0639\u0644\u0649 \u0628\u064a\u0646 \u0627\u0644\u0642\u0646\u0648\u0627\u062a \u2014 \u064a\u0623\u062e\u0630 EGP 5,600 \u0641\u0642\u0637 \u0645\u0642\u0627\u0628\u0644 EGP 17,833 \u0644\u0640 Meta. \u062a\u062d\u062a\u0627\u062c \u0625\u0639\u0627\u062f\u0629 \u062a\u0648\u0632\u064a\u0639.\",\"\u0645\u0639\u062f\u0644 \u0627\u0644\u0640 checkout drop-off 48% (488\u2192252). \u0641\u0639\u0651\u0644 \u0631\u0633\u0627\u0626\u0644 cart recovery \u0623\u0648\u062a\u0648\u0645\u0627\u062a\u064a\u0643 \u0644\u0627\u0633\u062a\u0631\u062f\u0627\u062f \u0627\u0644\u0623\u0648\u0631\u062f\u0631\u0627\u062a \u0627\u0644\u0636\u0627\u0626\u0639\u0629.\",\"Tokyo Salt Bundle \u062d\u0642\u0642 EGP 34,200 \u2014 35% \u0645\u0646 \u0627\u0644\u0625\u064a\u0631\u0627\u062f\u0627\u062a. \u062a\u0623\u0643\u062f \u0645\u0646 \u062a\u0648\u0627\u0641\u0631 \u0627\u0644\u0645\u062e\u0632\u0648\u0646 \u0642\u0628\u0644 \u0646\u0647\u0627\u064a\u0629 \u0627\u0644\u0623\u0633\u0628\u0648\u0639.\"]\n  },\n  \"30d\":{\n    trendLabel:\"\u0623\u0633\u0628\u0648\u0639\u064a \u2014 \u0622\u062e\u0631 4 \u0623\u0633\u0627\u0628\u064a\u0639\",heatLabel:\"\u0645\u062a\u0648\u0633\u0637 \u0625\u064a\u0631\u0627\u062f\u0627\u062a \u0627\u0644\u0633\u0627\u0639\u0629 (30 \u064a\u0648\u0645)\",prevLabel:\"\u0645\u0642\u0627\u0631\u0646\u0629 \u0628\u0627\u0644\u0640 30 \u064a\u0648\u0645 \u0627\u0644\u0633\u0627\u0628\u0642\u0629\",\n    metrics:{revenue:387600,revenuePrev:318200,orders:327,ordersPrev:271,aov:1185,aovPrev:1174,roas:4.1,roasPrev:3.6,units:412,unitsPrev:340,convRate:2.5,convRatePrev:2.1},\n    revenueTrend:[{l:\"\u0623\u0633\u0628\u0648\u0639 1\",v:78400},{l:\"\u0623\u0633\u0628\u0648\u0639 2\",v:91200},{l:\"\u0623\u0633\u0628\u0648\u0639 3\",v:103600},{l:\"\u0623\u0633\u0628\u0648\u0639 4\",v:110940},{l:\"\u062c\u0632\u0626\u064a\",v:3460}],\n    channels:[{source:\"Meta\",orders:185,revenue:219330},{source:\"Google\",orders:84,revenue:99620},{source:\"Direct\",orders:47,revenue:55720},{source:\"Unknown\",orders:11,revenue:12930}],\n    campaigns:[{name:\"Tokyo Salt Bundle\",source:\"Meta\",spend:33000,revenue:134040,roas:4.06},{name:\"Xlim Pro Search\",source:\"Google\",spend:22400,revenue:99620,roas:4.45},{name:\"Retargeting 7D\",source:\"Meta\",spend:18200,revenue:85274,roas:4.69},{name:\"Catalog Sales\",source:\"Meta\",spend:20934,revenue:68140,roas:3.26}],\n    topProducts:[{name:\"Xlim Pro 3 + Tokyo Classic Bundle\",revenue:89240,units:75},{name:\"Elfakher Crown Bar 60K\",revenue:64800,units:76},{name:\"Tokyo Classic 30ml Salt\",revenue:58360,units:102},{name:\"Xlim Go 2 Bundle\",revenue:43160,units:40}],\n    latestOrders:[{id:46441,customer:\"\u062d\u0633\u0627\u0645 \u0634\u0639\u0628\u0627\u0646\",source:\"Meta\",status:\"processing\",total:980},{id:46439,customer:\"\u0645\u062d\u0645\u062f \u0639\u0645\u0631\",source:\"Google\",status:\"completed\",total:960},{id:46438,customer:\"Wael Zidan\",source:\"Direct\",status:\"processing\",total:600},{id:46437,customer:\"mina mahfouz\",source:\"Meta\",status:\"pending\",total:864},{id:46435,customer:\"Sara Ahmed\",source:\"Google\",status:\"completed\",total:1240}],\n    funnel:{sessions:13080,addToCart:2100,checkout:1080,purchased:327},\n    orderStatus:{completed:241,processing:48,pending:24,cancelled:14},\n    customerType:{new:196,returning:131},\n    hourlyRevenue:[1840,960,620,380,820,1640,3480,6280,10840,14280,15640,17280,21480,19840,20280,27480,33640,42280,40280,48840,44280,34280,22640,9480],\n    insights:[\"\u0625\u064a\u0631\u0627\u062f\u0627\u062a 30 \u064a\u0648\u0645 EGP 387,600 \u2014 \u0646\u0645\u0648 21.8% \u0639\u0646 \u0627\u0644\u0634\u0647\u0631 \u0627\u0644\u0633\u0627\u0628\u0642. \u0627\u0644\u0646\u0645\u0648 \u064a\u062a\u0633\u0627\u0631\u0639 \u0623\u0633\u0628\u0648\u0639\u0627\u064b \u0628\u0639\u062f \u0623\u0633\u0628\u0648\u0639.\",\"Retargeting 7D \u0623\u0643\u0641\u0623 \u0643\u0627\u0645\u0628\u064a\u0646 \u0628\u0640 ROAS 4.69\u00d7 \u0639\u0644\u0649 EGP 18,200. \u064a\u0633\u062a\u062d\u0642 \u062d\u0635\u0629 \u0623\u0643\u0628\u0631 \u0645\u0646 \u0627\u0644\u0645\u064a\u0632\u0627\u0646\u064a\u0629 \u0627\u0644\u0625\u062c\u0645\u0627\u0644\u064a\u0629.\",\"Google Search \u064a\u0648\u0644\u062f EGP 99,620 \u0628\u0640 ROAS 4.45\u00d7 \u2014 \u0623\u0643\u0641\u0623 \u0645\u0646 Meta \u0625\u062c\u0645\u0627\u0644\u0627\u064b. \u0627\u0646\u0642\u0644 15% \u0645\u0646 \u0645\u064a\u0632\u0627\u0646\u064a\u0629 Meta \u0644\u0640 Google.\",\"\u0627\u0644\u0640 AOV \u062b\u0627\u0628\u062a \u0639\u0646\u062f EGP 1,185. \u0645\u0646\u062a\u062c\u0627\u062a Xlim Pro + Tokyo Classic bundles \u062a\u062d\u0631\u0643 23% \u0645\u0646 \u0627\u0644\u0625\u064a\u0631\u0627\u062f\u0627\u062a \u2014 \u0627\u0644\u0645\u062e\u0632\u0648\u0646 \u0623\u0648\u0644\u0648\u064a\u0629.\",\"\u0645\u0639\u062f\u0644 checkout-to-purchase 30% (1,080\u2192327). A\/B test checkout \u0645\u0628\u0633\u0637 \u0644\u0631\u0641\u0639\u0647 \u0641\u0648\u0642 40%.\"]\n  }\n};\n\nlet currentData=null,revenueChart,channelChart,statusChart,custChart;\nlet countdownSecs=300,countdownInterval;\n\nconst egp=v=>new Intl.NumberFormat(\"en-EG\",{style:\"currency\",currency:\"EGP\",maximumFractionDigits:0}).format(+v||0);\nconst fmt=v=>new Intl.NumberFormat(\"en-EG\",{maximumFractionDigits:2}).format(+v||0);\nconst pctDiff=(c,p)=>p?(((c-p)\/p)*100).toFixed(1):0;\n\nlet toastT;\nfunction toast(msg,dur=3000){const e=document.getElementById(\"toast\");e.textContent=msg;e.classList.add(\"show\");clearTimeout(toastT);toastT=setTimeout(()=>e.classList.remove(\"show\"),dur)}\n\nfunction exportCSV(name,headers,rows){\n  const csv=[headers,...rows].map(r=>r.map(v=>`\"${v}\"`).join(\",\")).join(\"\\n\");\n  const a=document.createElement(\"a\");a.href=\"data:text\/csv;charset=utf-8,\"+encodeURIComponent(csv);a.download=name;a.click();toast(\"\u2713 \"+name);\n}\n\nasync function fetchData(){\n  const range=document.getElementById(\"dateRange\").value;\n  if(!API_ENDPOINT)return DB[range]||DB[\"7d\"];\n  const res=await fetch(`${API_ENDPOINT}?range=${encodeURIComponent(range)}`,{cache:\"no-store\"});\n  if(!res.ok)throw new Error(\"API error \"+res.status);\n  return res.json();\n}\n\nfunction computeAlerts(d){\n  const alerts=[];\n  d.campaigns.forEach(c=>{\n    if(c.roas<2.5)alerts.push({type:\"danger\",ico:\"\u26a0\",title:\"ROAS \u0645\u0646\u062e\u0641\u0636 \u062c\u062f\u0627\u064b\",msg:`\u0643\u0627\u0645\u0628\u064a\u0646 \"${c.name}\" \u0648\u0635\u0644 ${c.roas.toFixed(2)}\u00d7 \u2014 \u062a\u062d\u062a \u0646\u0642\u0637\u0629 \u0627\u0644\u062a\u0639\u0627\u062f\u0644. \u0623\u0648\u0642\u0641\u0647 \u0623\u0648 \u0631\u0627\u062c\u0639 \u0627\u0644\u0623\u0648\u062f\u064a\u0646\u0633 \u0641\u0648\u0631\u0627\u064b.`});\n    else if(c.roas<3.5)alerts.push({type:\"warning\",ico:\"\ud83d\udcc9\",title:\"ROAS \u062a\u062d\u062a \u0627\u0644\u0645\u0633\u062a\u0647\u062f\u0641\",msg:`\u0643\u0627\u0645\u0628\u064a\u0646 \"${c.name}\" \u0639\u0646\u062f\u0647 ${c.roas.toFixed(2)}\u00d7 \u2014 \u0631\u0627\u0642\u0628 \u0627\u0644\u0623\u062f\u0627\u0621 \u0648\u0641\u0643\u0631 \u0641\u064a \u062a\u0639\u062f\u064a\u0644 \u0627\u0644\u0625\u0639\u0644\u0627\u0646 \u0623\u0648 \u0627\u0644\u062c\u0645\u0647\u0648\u0631.`});\n    else if(c.roas>=5)alerts.push({type:\"success\",ico:\"\ud83d\ude80\",title:\"\u0641\u0631\u0635\u0629 \u062a\u0648\u0633\u0639\",msg:`\u0643\u0627\u0645\u0628\u064a\u0646 \"${c.name}\" \u064a\u062d\u0642\u0642 ${c.roas.toFixed(2)}\u00d7 ROAS \u2014 \u0645\u0645\u062a\u0627\u0632! \u0627\u0631\u0641\u0639 \u0627\u0644\u0645\u064a\u0632\u0627\u0646\u064a\u0629 20\u201330% \u0644\u0644\u0627\u0633\u062a\u0641\u0627\u062f\u0629.`});\n  });\n  const totalOrd=d.channels.reduce((a,c)=>a+c.orders,0);\n  const unk=d.channels.find(c=>c.source===\"Unknown\");\n  if(unk&&totalOrd>0&&unk.orders\/totalOrd>0.05)alerts.push({type:\"info\",ico:\"\ud83d\udd17\",title:\"Attribution \u0646\u0627\u0642\u0635\",msg:`${unk.orders} \u0623\u0648\u0631\u062f\u0631 \u0628\u062f\u0648\u0646 \u0645\u0635\u062f\u0631 \u0645\u062d\u062f\u062f (${Math.round(unk.orders\/totalOrd*100)}%). \u0623\u0636\u0641 UTM parameters \u0644\u0643\u0644 \u0627\u0644\u0643\u0627\u0645\u0628\u064a\u0646\u0627\u062a.`});\n  return alerts;\n}\n\nfunction renderAlerts(d){\n  const alerts=computeAlerts(d);\n  const el=document.getElementById(\"alertsSection\");\n  if(!alerts.length){el.innerHTML=\"\";return}\n  el.innerHTML=alerts.map((a,i)=>`\n    <div class=\"alert alert-${a.type}\" id=\"al${i}\">\n      <span class=\"alert-ico\">${a.ico}<\/span>\n      <div class=\"alert-body\"><div class=\"alert-title\">${a.title}<\/div><div class=\"alert-msg\">${a.msg}<\/div><\/div>\n      <button class=\"alert-close\" onclick=\"document.getElementById('al${i}').remove()\">\u00d7<\/button>\n    <\/div>`).join(\"\");\n}\n\nfunction renderMetrics(d){\n  const m=d.metrics,pl=d.prevLabel||\"\u0645\u0642\u0627\u0631\u0646\u0629 \u0628\u0627\u0644\u0633\u0627\u0628\u0642\";\n  const cards=[\n    {lbl:\"\u0627\u0644\u0625\u064a\u0631\u0627\u062f\u0627\u062a\",val:egp(m.revenue),curr:m.revenue,prev:m.revenuePrev,hint:\"\u0625\u062c\u0645\u0627\u0644\u064a \u0627\u0644\u0645\u0628\u064a\u0639\u0627\u062a\",acc:\"#14B8A6\"},\n    {lbl:\"\u0627\u0644\u0623\u0648\u0631\u062f\u0631\u0627\u062a\",val:fmt(m.orders),curr:m.orders,prev:m.ordersPrev,hint:\"\u0625\u062c\u0645\u0627\u0644\u064a \u0627\u0644\u0623\u0648\u0631\u062f\u0631\u0627\u062a\",acc:\"#3B82F6\"},\n    {lbl:\"\u0645\u062a\u0648\u0633\u0637 \u0627\u0644\u0623\u0648\u0631\u062f\u0631\",val:egp(m.aov),curr:m.aov,prev:m.aovPrev,hint:\"\u0645\u062a\u0648\u0633\u0637 \u0642\u064a\u0645\u0629 \u0627\u0644\u0623\u0648\u0631\u062f\u0631\",acc:\"#F59E0B\"},\n    {lbl:\"ROAS\",val:fmt(m.roas)+\"\u00d7\",curr:m.roas,prev:m.roasPrev,hint:\"\u0627\u0644\u0639\u0627\u0626\u062f \u0639\u0644\u0649 \u0627\u0644\u0625\u0646\u0641\u0627\u0642\",acc:\"#22C55E\"},\n    {lbl:\"\u0627\u0644\u0633\u0644\u0639 \u0627\u0644\u0645\u0628\u0627\u0639\u0629\",val:fmt(m.units),curr:m.units,prev:m.unitsPrev,hint:\"\u0625\u062c\u0645\u0627\u0644\u064a \u0627\u0644\u0648\u062d\u062f\u0627\u062a\",acc:\"#A855F7\"},\n    {lbl:\"\u0645\u0639\u062f\u0644 \u0627\u0644\u062a\u062d\u0648\u064a\u0644\",val:fmt(m.convRate)+\"%\",curr:m.convRate,prev:m.convRatePrev,hint:\"\u0632\u064a\u0627\u0631\u0629 \u2192 \u0634\u0631\u0627\u0621\",acc:\"#F43F5E\"}\n  ];\n  document.getElementById(\"metricsGrid\").innerHTML=cards.map(c=>{\n    const diff=pctDiff(c.curr,c.prev);\n    const cls=+diff===0?\"flat\":(+diff>0?\"up\":\"dn\");\n    const arrow=+diff>0?\"\u2191\":+diff<0?\"\u2193\":\"\u2192\";\n    return `<article class=\"card mc\" style=\"--mca:${c.acc}\">\n      <div class=\"mc-lbl\">${c.lbl}<\/div>\n      <div class=\"mc-val\">${c.val}<\/div>\n      <div class=\"mc-chg ${cls}\">${arrow} ${Math.abs(diff)}% ${pl}<\/div>\n      <div class=\"mc-hint\">${c.hint}<\/div>\n    <\/article>`;\n  }).join(\"\");\n}\n\nconst CH_COLORS=[\"#14B8A6\",\"#3B82F6\",\"#A855F7\",\"#64748B\"];\nfunction renderCharts(d){\n  if(revenueChart)revenueChart.destroy();\n  if(channelChart)channelChart.destroy();\n  revenueChart=new Chart(document.getElementById(\"revenueChart\"),{\n    type:\"line\",\n    data:{labels:d.revenueTrend.map(x=>x.l),datasets:[{label:\"\u0627\u0644\u0625\u064a\u0631\u0627\u062f\u0627\u062a (EGP)\",data:d.revenueTrend.map(x=>x.v),borderColor:\"#14B8A6\",backgroundColor:\"rgba(20,184,166,.07)\",borderWidth:2,pointBackgroundColor:\"#14B8A6\",pointRadius:4,pointHoverRadius:6,tension:.38,fill:true}]},\n    options:{responsive:true,maintainAspectRatio:false,plugins:{legend:{display:false}},scales:{x:{ticks:{color:\"#64748B\",font:{size:10}},grid:{color:\"rgba(255,255,255,.04)\"}},y:{ticks:{color:\"#64748B\",font:{size:10,family:\"'DM Mono'\"},callback:v=>v.toLocaleString()+\" EGP\"},grid:{color:\"rgba(255,255,255,.04)\"}}}}\n  });\n  document.getElementById(\"channelLegend\").innerHTML=d.channels.map((c,i)=>`<span style=\"display:flex;align-items:center;gap:3px;font-size:.65rem;color:var(--muted2)\"><span style=\"width:8px;height:8px;border-radius:2px;background:${CH_COLORS[i]};display:inline-block;flex-shrink:0\"><\/span>${c.source} <b style=\"font-family:'DM Mono',monospace;font-size:.63rem\">${c.orders}<\/b><\/span>`).join(\"\");\n  channelChart=new Chart(document.getElementById(\"channelChart\"),{\n    type:\"doughnut\",\n    data:{labels:d.channels.map(c=>c.source),datasets:[{data:d.channels.map(c=>c.orders),backgroundColor:CH_COLORS,borderWidth:0,hoverOffset:5}]},\n    options:{responsive:true,maintainAspectRatio:false,cutout:\"68%\",plugins:{legend:{display:false}}}\n  });\n}\n\nfunction heatColor(r){\n  if(r<0.01)return\"rgba(255,255,255,0.04)\";\n  if(r<0.35)return`rgba(20,184,166,${(0.2+r*0.8).toFixed(2)})`;\n  if(r<0.7)return`rgba(20,184,166,${(0.5+r*0.5).toFixed(2)})`;\n  return`rgba(245,158,11,${(0.4+r*0.6).toFixed(2)})`;\n}\nfunction renderHeatmap(d){\n  const hrs=d.hourlyRevenue,max=Math.max(...hrs,1);\n  document.getElementById(\"heatStrip\").innerHTML=hrs.map((v,h)=>{\n    const r=v\/max,bh=Math.max(r*60,v>0?3:1);\n    return`<div class=\"heat-col\"><div class=\"heat-bar-wrap\"><div class=\"heat-bar\" style=\"height:${bh}px;background:${heatColor(r)}\" data-tip=\"${String(h).padStart(2,\"0\")}:00 \u2014 ${egp(v)}\"><\/div><\/div><div class=\"heat-lbl\">${h%2===0?String(h).padStart(2,\"0\"):\"\"}<\/div><\/div>`;\n  }).join(\"\");\n}\n\nfunction renderOrderStatus(d){\n  if(statusChart)statusChart.destroy();\n  const s=d.orderStatus,total=s.completed+s.processing+s.pending+s.cancelled;\n  document.getElementById(\"statusTotal\").textContent=total;\n  const colors=[\"#4ADE80\",\"#60A5FA\",\"#FBB040\",\"#FB7185\"];\n  const labels=[\"\u0645\u0643\u062a\u0645\u0644\u0629\",\"\u0642\u064a\u062f \u0627\u0644\u062a\u0646\u0641\u064a\u0630\",\"\u0645\u0639\u0644\u0642\u0629\",\"\u0645\u0644\u063a\u064a\u0629\"];\n  const vals=[s.completed,s.processing,s.pending,s.cancelled];\n  statusChart=new Chart(document.getElementById(\"statusChart\"),{\n    type:\"doughnut\",\n    data:{labels,datasets:[{data:vals,backgroundColor:colors,borderWidth:0,hoverOffset:4}]},\n    options:{responsive:true,maintainAspectRatio:false,cutout:\"65%\",plugins:{legend:{display:false}}}\n  });\n  document.getElementById(\"statusLegend\").innerHTML=labels.map((l,i)=>`<div class=\"legend-row\"><div class=\"legend-dot\" style=\"background:${colors[i]}\"><\/div><span class=\"legend-key\">${l}<\/span><span class=\"legend-val\">${vals[i]}<\/span><\/div>`).join(\"\");\n}\n\nfunction renderCustomerType(d){\n  if(custChart)custChart.destroy();\n  const ct=d.customerType,total=ct.new+ct.returning;\n  const newPct=total?Math.round(ct.new\/total*100):0;\n  document.getElementById(\"custNewPct\").textContent=newPct+\"%\";\n  const colors=[\"#14B8A6\",\"#A855F7\"];\n  custChart=new Chart(document.getElementById(\"custChart\"),{\n    type:\"doughnut\",\n    data:{labels:[\"\u062c\u062f\u062f\",\"\u0639\u0627\u0626\u062f\u0648\u0646\"],datasets:[{data:[ct.new,ct.returning],backgroundColor:colors,borderWidth:0,hoverOffset:4}]},\n    options:{responsive:true,maintainAspectRatio:false,cutout:\"65%\",plugins:{legend:{display:false}}}\n  });\n  document.getElementById(\"custLegend\").innerHTML=[[\"\u062c\u062f\u062f\",\"#14B8A6\",ct.new],[\"\u0639\u0627\u0626\u062f\u0648\u0646\",\"#A855F7\",ct.returning]].map(([l,c,v])=>`<div class=\"legend-row\"><div class=\"legend-dot\" style=\"background:${c}\"><\/div><span class=\"legend-key\">${l}<\/span><span class=\"legend-val\">${v}<\/span><\/div>`).join(\"\");\n}\n\nfunction renderCampaigns(d){\n  const maxR=Math.max(...d.campaigns.map(c=>c.roas),1);\n  const rc=r=>r>=5?\"#22C55E\":r>=4?\"#14B8A6\":r>=3?\"#F59E0B\":\"#F43F5E\";\n  const sb=s=>`<span class=\"badge b-${s.toLowerCase()}\">${s}<\/span>`;\n  document.getElementById(\"campaignTable\").innerHTML=d.campaigns.map(row=>`<tr>\n    <td style=\"font-weight:600;max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap\" title=\"${row.name}\">${row.name}<\/td>\n    <td>${sb(row.source)}<\/td><td class=\"mono\">${egp(row.spend)}<\/td><td class=\"mono\">${egp(row.revenue)}<\/td>\n    <td><div class=\"roas-row\"><div class=\"roas-bg\"><div class=\"roas-fill\" style=\"width:${Math.round(row.roas\/maxR*100)}%;background:${rc(row.roas)}\"><\/div><\/div><span class=\"roas-val\" style=\"color:${rc(row.roas)}\">${fmt(row.roas)}\u00d7<\/span><\/div><\/td>\n  <\/tr>`).join(\"\");\n}\n\nfunction renderProducts(d){\n  const max=Math.max(...d.topProducts.map(p=>p.revenue),1);\n  document.getElementById(\"topProducts\").innerHTML=d.topProducts.map((p,i)=>`<div style=\"margin-bottom:${i<d.topProducts.length-1?\"1rem\":\"0\"}\">\n    <div class=\"prod-row\"><span class=\"prod-name\" title=\"${p.name}\">${p.name}<\/span><span class=\"prod-rev\">${egp(p.revenue)}<\/span><\/div>\n    <div class=\"prod-bar\"><div class=\"prod-fill\" style=\"width:${Math.round(p.revenue\/max*100)}%;opacity:${(1-i*.18).toFixed(2)}\"><\/div><\/div>\n    <span class=\"prod-units\">${p.units} \u0648\u062d\u062f\u0627\u062a<\/span>\n  <\/div>`).join(\"\");\n}\n\nfunction renderOrders(d){\n  const stMap={processing:\"\u0642\u064a\u062f \u0627\u0644\u062a\u0646\u0641\u064a\u0630\",completed:\"\u0645\u0643\u062a\u0645\u0644\",pending:\"\u0645\u0639\u0644\u0642\",cancelled:\"\u0645\u0644\u063a\u064a\"};\n  const stB=s=>`<span class=\"badge b-${s}\">${stMap[s]||s}<\/span>`;\n  const srcB=s=>`<span class=\"badge b-${s.toLowerCase()}\">${s}<\/span>`;\n  document.getElementById(\"ordersTable\").innerHTML=d.latestOrders.map(o=>`<tr>\n    <td class=\"mono\" style=\"font-weight:700;color:var(--teal)\">#${o.id}<\/td>\n    <td style=\"font-weight:500\">${o.customer}<\/td>\n    <td>${srcB(o.source)}<\/td><td>${stB(o.status)}<\/td>\n    <td class=\"mono\" style=\"font-weight:700\">${egp(o.total)}<\/td>\n  <\/tr>`).join(\"\");\n}\n\nfunction renderFunnel(d){\n  const f=d.funnel,mx=f.sessions;\n  [{lbl:\"\u0627\u0644\u0632\u064a\u0627\u0631\u0627\u062a\",count:f.sessions,color:\"#3B82F6\"},{lbl:\"\u0625\u0636\u0627\u0641\u0629 \u0644\u0644\u0643\u0627\u0631\u062a\",count:f.addToCart,color:\"#14B8A6\"},{lbl:\"\u0627\u0644\u0640 Checkout\",count:f.checkout,color:\"#F59E0B\"},{lbl:\"\u0627\u0644\u0634\u0631\u0627\u0621\",count:f.purchased,color:\"#22C55E\"}]\n  .reduce((html,s)=>html+`<div class=\"fn-row\"><div class=\"fn-lbl\">${s.lbl}<\/div><div class=\"fn-bg\"><div class=\"fn-fill\" style=\"width:${Math.round(s.count\/mx*100)}%;background:${s.color}18\"><span class=\"fn-count\" style=\"color:${s.color}\">${s.count.toLocaleString()}<\/span><\/div><\/div><span class=\"fn-pct\">${Math.round(s.count\/mx*100)}%<\/span><\/div>`,\"\",\n  result=>document.getElementById(\"funnelSection\").innerHTML=result);\n  \/\/ simpler version:\n  const steps=[{lbl:\"\u0627\u0644\u0632\u064a\u0627\u0631\u0627\u062a\",count:f.sessions,color:\"#3B82F6\"},{lbl:\"\u0625\u0636\u0627\u0641\u0629 \u0644\u0644\u0643\u0627\u0631\u062a\",count:f.addToCart,color:\"#14B8A6\"},{lbl:\"\u0627\u0644\u0640 Checkout\",count:f.checkout,color:\"#F59E0B\"},{lbl:\"\u0627\u0644\u0634\u0631\u0627\u0621\",count:f.purchased,color:\"#22C55E\"}];\n  document.getElementById(\"funnelSection\").innerHTML=steps.map(s=>`<div class=\"fn-row\"><div class=\"fn-lbl\">${s.lbl}<\/div><div class=\"fn-bg\"><div class=\"fn-fill\" style=\"width:${Math.round(s.count\/mx*100)}%;background:${s.color}18\"><span class=\"fn-count\" style=\"color:${s.color}\">${s.count.toLocaleString()}<\/span><\/div><\/div><span class=\"fn-pct\">${Math.round(s.count\/mx*100)}%<\/span><\/div>`).join(\"\");\n}\n\nfunction renderInsights(insights){\n  document.getElementById(\"insightsContent\").innerHTML=insights.map((t,i)=>`<div class=\"insight-card\"><div class=\"insight-n\">\u062a\u062d\u0644\u064a\u0644 ${i+1}<\/div><div class=\"insight-t\">${t}<\/div><\/div>`).join(\"\");\n}\n\nasync function generateAIInsights(data){\n  const key=document.getElementById(\"claudeApiKey\").value.trim();\n  const btn=document.getElementById(\"aiRefreshBtn\");\n  const range=document.getElementById(\"dateRange\").value;\n  const rl={today:\"\u0627\u0644\u064a\u0648\u0645\",yesterday:\"\u0623\u0645\u0633\",\"7d\":\"\u0622\u062e\u0631 7 \u0623\u064a\u0627\u0645\",\"30d\":\"\u0622\u062e\u0631 30 \u064a\u0648\u0645\"}[range];\n  btn.disabled=true;btn.textContent=\"\u062c\u0627\u0631\u064a \u0627\u0644\u062a\u062d\u0644\u064a\u0644...\";\n  document.getElementById(\"insightsContent\").innerHTML=`<div class=\"ai-load\"><div class=\"spinner\"><\/div>Claude AI \u0628\u064a\u062d\u0644\u0644 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a\u2026<\/div>`;\n  if(!key){await new Promise(r=>setTimeout(r,900));renderInsights(data.insights);btn.disabled=false;btn.textContent=\"\u062a\u0648\u0644\u064a\u062f \u062a\u062d\u0644\u064a\u0644\u0627\u062a \u062c\u062f\u064a\u062f\u0629\";return}\n  try{\n    const payload={period:rl,revenue:data.metrics.revenue,orders:data.metrics.orders,roas:data.metrics.roas,aov:data.metrics.aov,units:data.metrics.units,channels:data.channels,campaigns:data.campaigns,topProducts:data.topProducts,funnel:data.funnel,orderStatus:data.orderStatus};\n    const res=await fetch(\"https:\/\/api.anthropic.com\/v1\/messages\",{method:\"POST\",headers:{\"Content-Type\":\"application\/json\",\"x-api-key\":key,\"anthropic-version\":\"2023-06-01\"},body:JSON.stringify({model:\"claude-sonnet-4-20250514\",max_tokens:1000,messages:[{role:\"user\",content:`\u0623\u0646\u062a \u0645\u062d\u0644\u0644 \u0623\u062f\u0627\u0621 \u0645\u062a\u062e\u0635\u0635 \u0641\u064a \u0627\u0644\u062a\u062c\u0627\u0631\u0629 \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a\u0629 \u0627\u0644\u0645\u0635\u0631\u064a\u0629. \u062d\u0644\u0644 \u0628\u064a\u0627\u0646\u0627\u062a \u062f\u0627\u0634\u0628\u0648\u0631\u062f \u0645\u062a\u062c\u0631 \u0641\u064a\u0628\/\u0633\u062c\u0627\u0626\u0631 \u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a\u0629 \u0648\u0623\u0639\u0637\u064a 5 \u0631\u0624\u0649 \u0642\u0627\u0628\u0644\u0629 \u0644\u0644\u062a\u0646\u0641\u064a\u0630 \u0628\u0627\u0644\u0644\u063a\u0629 \u0627\u0644\u0639\u0631\u0628\u064a\u0629. \u0643\u0646 \u062f\u0642\u064a\u0642\u0627\u064b \u0641\u064a \u0627\u0644\u0623\u0631\u0642\u0627\u0645 \u0648\u0639\u0645\u0644\u064a\u0627\u064b \u0641\u064a \u0627\u0644\u062a\u0648\u0635\u064a\u0627\u062a. \u0623\u062c\u0628 \u0641\u0642\u0637 \u0628\u0640 JSON array \u0645\u0646 5 strings \u2014 \u0628\u062f\u0648\u0646 markdown \u0623\u0648 \u0645\u0642\u062f\u0645\u0627\u062a. \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a: ${JSON.stringify(payload)}`}]})});\n    if(!res.ok)throw new Error(\"HTTP \"+res.status);\n    const result=await res.json();\n    renderInsights(JSON.parse(result.content[0].text.trim().replace(\/```json|```\/g,\"\").trim()));\n    toast(\"\u2726 \u062a\u0645 \u062a\u062d\u062f\u064a\u062b \u0627\u0644\u062a\u062d\u0644\u064a\u0644\u0627\u062a\");\n  }catch(err){\n    document.getElementById(\"insightsContent\").innerHTML=`<div class=\"insight-card\"><div class=\"insight-t\" style=\"color:var(--rose)\">\u26a0 \u062e\u0637\u0623: ${err.message}. \u062a\u0623\u0643\u062f \u0645\u0646 \u0635\u062d\u0629 \u0627\u0644\u0640 API key.<\/div><\/div>`;\n  }finally{btn.disabled=false;btn.textContent=\"\u062a\u0648\u0644\u064a\u062f \u062a\u062d\u0644\u064a\u0644\u0627\u062a \u062c\u062f\u064a\u062f\u0629\"}\n}\n\nasync function renderDashboard(skipInsights=false){\n  const btn=document.getElementById(\"refreshBtn\");\n  btn.textContent=\"\u062c\u0627\u0631\u064a \u0627\u0644\u062a\u062d\u0645\u064a\u0644\u2026\";btn.disabled=true;\n  try{\n    const data=await fetchData();\n    currentData=data;\n    renderAlerts(data);renderMetrics(data);renderCharts(data);renderHeatmap(data);\n    renderCampaigns(data);renderProducts(data);renderOrders(data);\n    renderOrderStatus(data);renderCustomerType(data);renderFunnel(data);\n    if(!skipInsights)renderInsights(data.insights);\n    const rs=document.getElementById(\"revenueSub\");if(rs&&data.trendLabel)rs.textContent=data.trendLabel;\n    const hs=document.getElementById(\"heatSub\");if(hs&&data.heatLabel)hs.textContent=data.heatLabel;\n    document.getElementById(\"lastUpdated\").textContent=\"\u0622\u062e\u0631 \u062a\u062d\u062f\u064a\u062b \"+new Date().toLocaleTimeString(\"ar-EG\");\n    resetCountdown();\n  }catch(e){console.error(e);toast(\"\u26a0 \u0641\u0634\u0644 \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a\")}\n  finally{btn.textContent=\"\u21bb \u062a\u062d\u062f\u064a\u062b\";btn.disabled=false}\n}\n\nfunction resetCountdown(){\n  countdownSecs=300;clearInterval(countdownInterval);\n  countdownInterval=setInterval(()=>{\n    countdownSecs--;\n    document.getElementById(\"countdownTime\").textContent=`${Math.floor(countdownSecs\/60)}:${String(countdownSecs%60).padStart(2,\"0\")}`;\n    if(countdownSecs<=0)renderDashboard(true);\n  },1000);\n}\n\ndocument.getElementById(\"refreshBtn\").addEventListener(\"click\",()=>renderDashboard());\ndocument.getElementById(\"dateRange\").addEventListener(\"change\",()=>renderDashboard());\ndocument.getElementById(\"aiRefreshBtn\").addEventListener(\"click\",()=>{if(currentData)generateAIInsights(currentData)});\ndocument.getElementById(\"exportBtn\").addEventListener(\"click\",()=>{if(currentData)exportCSV(\"elkoteg-orders.csv\",[\"ID\",\"\u0627\u0644\u0639\u0645\u064a\u0644\",\"\u0627\u0644\u0645\u0635\u062f\u0631\",\"\u0627\u0644\u062d\u0627\u0644\u0629\",\"\u0627\u0644\u0625\u062c\u0645\u0627\u0644\u064a EGP\"],currentData.latestOrders.map(o=>[o.id,o.customer,o.source,o.status,o.total]))});\ndocument.getElementById(\"exportCampaignBtn\").addEventListener(\"click\",()=>{if(currentData)exportCSV(\"elkoteg-campaigns.csv\",[\"\u0627\u0644\u0643\u0627\u0645\u0628\u064a\u0646\",\"\u0627\u0644\u0645\u0635\u062f\u0631\",\"\u0627\u0644\u0625\u0646\u0641\u0627\u0642\",\"\u0627\u0644\u0625\u064a\u0631\u0627\u062f\u0627\u062a\",\"ROAS\"],currentData.campaigns.map(c=>[c.name,c.source,c.spend,c.revenue,c.roas]))});\ndocument.getElementById(\"exportOrdersBtn\").addEventListener(\"click\",()=>{if(currentData)exportCSV(\"elkoteg-orders.csv\",[\"ID\",\"\u0627\u0644\u0639\u0645\u064a\u0644\",\"\u0627\u0644\u0645\u0635\u062f\u0631\",\"\u0627\u0644\u062d\u0627\u0644\u0629\",\"\u0627\u0644\u0625\u062c\u0645\u0627\u0644\u064a EGP\"],currentData.latestOrders.map(o=>[o.id,o.customer,o.source,o.status,o.total]))});\n\nrenderDashboard();\n<\/script>\n<\/body>\n<\/html>\t\t\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<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Elkoteg Intelligence Dashboard Elkoteg Commerce Intelligence Sales &amp; Marketing Dashboard WooCommerce \u00b7 Meta Ads \u00b7 Google Ads \u00b7 Attribution \u00b7 AI \u21bb 5:00 \u0627\u0644\u064a\u0648\u0645\u0623\u0645\u0633\u0622\u062e\u0631 7 \u0623\u064a\u0627\u0645\u0622\u062e\u0631 30 \u064a\u0648\u0645 \u2193 \u062a\u0635\u062f\u064a\u0631 CSV \u21bb \u062a\u062d\u062f\u064a\u062b \u0627\u062a\u062c\u0627\u0647 \u0627\u0644\u0625\u064a\u0631\u0627\u062f\u0627\u062a \u0623\u062f\u0627\u0621 \u0627\u0644\u0645\u0628\u064a\u0639\u0627\u062a \u062e\u0644\u0627\u0644 \u0627\u0644\u0641\u062a\u0631\u0629 \u0646\u0633\u0628\u0629 \u0627\u0644\u0642\u0646\u0648\u0627\u062a \u0627\u0644\u0623\u0648\u0631\u062f\u0631\u0627\u062a \u062d\u0633\u0628 \u0627\u0644\u0645\u0635\u062f\u0631 \u062e\u0631\u064a\u0637\u0629 \u0633\u0627\u0639\u0627\u062a \u0627\u0644\u0628\u064a\u0639 \u0645\u062a\u0648\u0633\u0637 \u0627\u0644\u0625\u064a\u0631\u0627\u062f\u0627\u062a \u0628\u0627\u0644\u0633\u0627\u0639\u0629 \u0627\u0644\u0641\u062c\u0631 \ud83c\udf19\u0627\u0644\u0635\u0628\u062d \u2600\u0627\u0644\u0638\u0647\u0631 \ud83c\udf24\u0627\u0644\u0639\u0635\u0631 \ud83c\udf07\u0627\u0644\u0645\u0633\u0627\u0621 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":""},"class_list":["post-4478","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/stuff-x.net\/ar\/wp-json\/wp\/v2\/pages\/4478","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/stuff-x.net\/ar\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/stuff-x.net\/ar\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/stuff-x.net\/ar\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/stuff-x.net\/ar\/wp-json\/wp\/v2\/comments?post=4478"}],"version-history":[{"count":0,"href":"https:\/\/stuff-x.net\/ar\/wp-json\/wp\/v2\/pages\/4478\/revisions"}],"wp:attachment":[{"href":"https:\/\/stuff-x.net\/ar\/wp-json\/wp\/v2\/media?parent=4478"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}