{"id":2072,"date":"2026-07-23T05:07:18","date_gmt":"2026-07-23T09:07:18","guid":{"rendered":"https:\/\/amir.farm\/diagnose\/"},"modified":"2026-07-24T22:10:32","modified_gmt":"2026-07-25T02:10:32","slug":"diagnose","status":"publish","type":"page","link":"https:\/\/amir.farm\/fa\/diagnose\/","title":{"rendered":"\u062a\u0634\u062e\u06cc\u0635 \u0622\u0641\u062a"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"2072\" class=\"elementor elementor-2072\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-3077694 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"3077694\" 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-de2393b\" data-id=\"de2393b\" 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-55d3d36 elementor-widget elementor-widget-html\" data-id=\"55d3d36\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"amirsuite-html-typo\"><!DOCTYPE html>\r\n<html lang=\"fa\" dir=\"rtl\">\r\n<head>\r\n<meta charset=\"UTF-8\" \/>\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/>\r\n<title>\u0628\u06cc\u0646\u0627\u06cc\u06cc \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u0632\u06cc\u0631\u0632\u0645\u06cc\u0646\u06cc \u2014 \u0641\u0631\u0627\u062a\u0631 \u0627\u0632 \u062f\u06cc\u062f \u0627\u0646\u0633\u0627\u0646<\/title>\r\n<style>\r\n@font-face {\r\n  font-family: 'Yekan';\r\n  src: url('\/wp-content\/themes\/hello-elementor\/font\/Yekan.woff2') format('woff2'),\r\n       url('\/wp-content\/themes\/hello-elementor\/font\/Yekan.woff') format('woff');\r\n  font-weight: normal;\r\n  font-style: normal;\r\n  font-display: swap;\r\n}\r\n<\/style>\r\n<style>\r\n  :root{\r\n    --bg:#030504;\r\n    --primary:#00FF96;\r\n    --primary-dim:#00b56c;\r\n    --cyan:#00D9FF;\r\n    --amber:#FFB84B;\r\n    --danger:#FF5F5F;\r\n    --text:#FFFFFF;\r\n    --muted:#8b978f;\r\n    --glass-border:rgba(0,255,150,0.14);\r\n    --card:rgba(255,255,255,0.025);\r\n    --display:'Yekan', Tahoma, sans-serif;\r\n    --body:'Yekan', Tahoma, sans-serif;\r\n    --mono:'Yekan', Tahoma, sans-serif;\r\n  }\r\n  *{margin:0;padding:0;box-sizing:border-box;}\r\n  html{scroll-behavior:smooth;}\r\n  body{background:var(--bg);color:var(--text);font-family:var(--body);overflow-x:hidden;position:relative;\r\n    direction:rtl;text-align:right;font-synthesis:none;-webkit-font-smoothing:antialiased;}\r\n  h1,h2,h3,h4,h5,h6{font-family:'Yekan', Tahoma, sans-serif !important;}\r\n  ::selection{background:var(--primary);color:#000;}\r\n  ::-webkit-scrollbar{width:8px;}\r\n  ::-webkit-scrollbar-track{background:var(--bg);}\r\n  ::-webkit-scrollbar-thumb{background:rgba(0,255,150,0.25);border-radius:4px;}\r\n\r\n  #bg-canvas{position:fixed;inset:0;z-index:0;pointer-events:none;}\r\n  .noise{position:fixed;inset:0;z-index:1;pointer-events:none;opacity:0.035;\r\n    background-image:url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'\/%3E%3C\/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'\/%3E%3C\/svg%3E\");}\r\n  .cursor-glow{position:fixed;width:420px;height:420px;border-radius:50%;pointer-events:none;z-index:2;\r\n    background:radial-gradient(circle, rgba(0,255,150,0.06) 0%, rgba(0,255,150,0) 70%);\r\n    transform:translate(-50%,-50%);left:-9999px;top:-9999px;}\r\n\r\n  section{position:relative;z-index:3;}\r\n  .container{max-width:1320px;margin:0 auto;padding:0 5vw;}\r\n  .py{padding:150px 0;}\r\n  .dot{width:8px;height:8px;border-radius:50%;background:var(--primary);\r\n    box-shadow:0 0 12px var(--primary), 0 0 24px var(--primary);animation:pulse-dot 2.4s ease-in-out infinite;}\r\n  @keyframes pulse-dot{0%,100%{opacity:1;transform:scale(1);}50%{opacity:.5;transform:scale(0.7);}}\r\n\r\n  .btn-primary{font-family:var(--body);background:var(--primary);color:#000;border:none;padding:11px 22px;\r\n    border-radius:100px;font-weight:600;font-size:0.82rem;cursor:pointer;\r\n    transition:transform .3s cubic-bezier(.19,1,.22,1), box-shadow .3s ease;}\r\n  .btn-primary:hover{transform:translateY(-2px);box-shadow:0 8px 30px rgba(0,255,150,0.35);}\r\n  .btn-ghost{font-family:var(--body);background:transparent;color:var(--text);border:1px solid rgba(255,255,255,0.15);\r\n    padding:11px 22px;border-radius:100px;font-weight:500;font-size:0.82rem;cursor:pointer;transition:all .3s ease;\r\n    display:inline-flex;align-items:center;gap:8px;}\r\n  .btn-ghost:hover{border-color:var(--primary);background:rgba(0,255,150,0.06);}\r\n  .btn-mini{font-family:var(--mono);background:rgba(0,255,150,0.08);color:var(--primary);border:1px solid var(--glass-border);\r\n    padding:7px 15px;border-radius:100px;font-size:0.68rem;font-weight:600;cursor:pointer;transition:all .3s ease;}\r\n  .btn-mini:hover, .btn-mini.active{background:var(--primary);color:#000;}\r\n\r\n  .reveal{opacity:0;transform:translateY(36px);transition:opacity .9s cubic-bezier(.19,1,.22,1), transform .9s cubic-bezier(.19,1,.22,1);}\r\n  .reveal.in{opacity:1;transform:translateY(0);}\r\n\r\n  .section-head{text-align:center;max-width:680px;margin:0 auto 64px;}\r\n  .section-eyebrow{font-family:var(--mono);font-size:0.78rem;color:var(--primary);margin-bottom:16px;}\r\n  .section-head h2{font-family:var(--display);font-weight:600;font-size:clamp(2rem, 3.6vw, 3rem);line-height:1.15;margin-bottom:16px;}\r\n  .section-head p{color:var(--muted);font-size:1rem;line-height:1.7;font-weight:300;}\r\n\r\n  \/* ---------- hero ---------- *\/\r\n  .hero{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 5vw;text-align:center;position:relative;overflow:hidden;}\r\n  .hero-stage{position:relative;width:100%;max-width:820px;height:460px;margin-bottom:10px;}\r\n  #tree-canvas{width:100%;height:100%;}\r\n  .hero h1{font-family:var(--display);font-weight:700;font-size:clamp(1.9rem, 4.6vw, 3.2rem);line-height:1.3;letter-spacing:0;margin-bottom:10px;}\r\n  .hero h1 .accent{color:var(--primary);text-shadow:0 0 40px rgba(0,255,150,0.4);}\r\n  .hero-tagline{font-family:var(--mono);font-size:0.95rem;color:var(--cyan);margin-bottom:30px;}\r\n  .hero-cta{display:flex;gap:16px;flex-wrap:wrap;justify-content:center;}\r\n\r\n  \/* ---------- layer stack ---------- *\/\r\n  .layer-stack{display:flex;flex-direction:column;gap:12px;max-width:720px;margin:0 auto;}\r\n  .layer-row{background:var(--card);border:1px solid rgba(255,255,255,0.07);border-radius:14px;padding:18px 22px;\r\n    display:flex;align-items:center;justify-content:space-between;transition:all .35s ease;cursor:pointer;}\r\n  .layer-row:hover{border-color:var(--primary);background:rgba(0,255,150,0.04);transform:translateX(-4px);}\r\n  .layer-row h4{font-family:var(--display);font-size:0.95rem;font-weight:600;}\r\n  .layer-row .depth{font-family:var(--mono);font-size:0.7rem;color:var(--muted);}\r\n  .layer-row .idx{font-family:var(--mono);font-size:0.72rem;color:var(--primary);}\r\n\r\n  \/* ---------- root intelligence ---------- *\/\r\n  .root-layout{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:center;}\r\n  .root-stage{position:relative;height:380px;}\r\n  #root-canvas{width:100%;height:100%;}\r\n  .root-legend{display:flex;flex-direction:column;gap:14px;}\r\n  .root-legend-item{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid rgba(255,255,255,0.06);\r\n    border-radius:12px;padding:14px 18px;}\r\n  .root-legend-item .sw{width:14px;height:14px;border-radius:50%;flex-shrink:0;}\r\n  .root-legend-item h5{font-family:var(--display);font-size:0.88rem;font-weight:600;}\r\n  .root-legend-item p{font-family:var(--mono);font-size:0.68rem;color:var(--muted);}\r\n\r\n  \/* ---------- weevil detection ---------- *\/\r\n  .weevil-panel{max-width:820px;margin:0 auto;border:1px solid var(--glass-border);border-radius:20px;overflow:hidden;background:#020403;}\r\n  .weevil-visual{height:340px;position:relative;}\r\n  #weevil-canvas{width:100%;height:100%;}\r\n  .weevil-info{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:rgba(255,255,255,0.06);border-top:1px solid rgba(255,255,255,0.06);}\r\n  .weevil-info .cell{background:#020403;padding:16px;text-align:center;}\r\n  .weevil-info .l{font-family:var(--mono);font-size:0.62rem;color:var(--muted);margin-bottom:6px;}\r\n  .weevil-info .v{font-family:var(--display);font-size:0.95rem;font-weight:600;color:var(--primary);}\r\n\r\n  \/* ---------- white grub ---------- *\/\r\n  .grub-stage{position:relative;height:360px;border-radius:20px;overflow:hidden;border:1px solid rgba(255,255,255,0.08);margin-bottom:20px;}\r\n  #grub-canvas{width:100%;height:100%;}\r\n  .grub-counter{text-align:center;font-family:var(--mono);font-size:0.95rem;color:var(--primary);}\r\n\r\n  \/* ---------- pistachio orchard ---------- *\/\r\n  .orchard-stage{position:relative;height:400px;border-radius:20px;overflow:hidden;border:1px solid rgba(255,255,255,0.08);}\r\n  #orchard-canvas{width:100%;height:100%;}\r\n\r\n  \/* ---------- multi-layer cube ---------- *\/\r\n  .multilayer-layout{display:grid;grid-template-columns:1fr 280px;gap:30px;align-items:center;}\r\n  .cube-stage{position:relative;height:380px;}\r\n  #cube-canvas{width:100%;height:100%;}\r\n  .layer-toggles{display:flex;flex-direction:column;gap:10px;}\r\n  .toggle-item{display:flex;align-items:center;justify-content:space-between;background:var(--card);\r\n    border:1px solid rgba(255,255,255,0.07);border-radius:10px;padding:12px 16px;cursor:pointer;transition:all .3s ease;}\r\n  .toggle-item.active{border-color:var(--primary);background:rgba(0,255,150,0.05);}\r\n  .toggle-item span{font-family:var(--mono);font-size:0.76rem;}\r\n  .toggle-dot{width:10px;height:10px;border-radius:50%;background:rgba(255,255,255,0.15);transition:all .3s ease;}\r\n  .toggle-item.active .toggle-dot{background:var(--primary);box-shadow:0 0 8px var(--primary);}\r\n\r\n  \/* ---------- digital twin ---------- *\/\r\n  .twin-stage{position:relative;height:420px;border-radius:20px;overflow:hidden;border:1px solid rgba(255,255,255,0.08);}\r\n  #twin-canvas{width:100%;height:100%;}\r\n  .zoom-slider-wrap{max-width:420px;margin:20px auto 0;text-align:center;}\r\n  .zoom-slider{width:100%;}\r\n  .zoom-label{font-family:var(--mono);font-size:0.72rem;color:var(--muted);margin-top:8px;}\r\n\r\n  \/* ---------- prediction timeline ---------- *\/\r\n  .timeline-tabs{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-bottom:30px;}\r\n  .predict-stage{position:relative;height:340px;border-radius:20px;overflow:hidden;border:1px solid rgba(255,255,255,0.08);}\r\n  #predict-canvas{width:100%;height:100%;}\r\n  .predict-caption{text-align:center;font-family:var(--mono);font-size:0.8rem;color:var(--amber);margin-top:16px;}\r\n\r\n  \/* ---------- precision treatment ---------- *\/\r\n  .treat-panel{max-width:640px;margin:0 auto;text-align:center;}\r\n  .treat-stage{position:relative;height:320px;border-radius:20px;overflow:hidden;border:1px solid rgba(255,255,255,0.08);margin-bottom:20px;}\r\n  #treat-canvas{width:100%;height:100%;}\r\n\r\n  \/* ---------- dashboard ---------- *\/\r\n  .stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;}\r\n  .stat-card{background:var(--card);border:1px solid rgba(255,255,255,0.06);border-radius:14px;padding:20px 18px;\r\n    transition:transform .4s cubic-bezier(.19,1,.22,1), border-color .4s ease;}\r\n  .stat-card:hover{transform:translateY(-4px);border-color:rgba(0,255,150,0.3);}\r\n  .stat-label{font-family:var(--mono);font-size:0.75rem;color:var(--muted);margin-bottom:10px;}\r\n  .stat-value{font-family:var(--display);font-size:1.5rem;font-weight:600;}\r\n  .stat-value .unit{font-size:0.8rem;color:var(--primary);margin-left:4px;}\r\n\r\n  \/* ---------- terminal ---------- *\/\r\n  .terminal{max-width:760px;margin:0 auto;background:#020403;border:1px solid var(--glass-border);border-radius:14px;\r\n    overflow:hidden;box-shadow:0 30px 80px rgba(0,0,0,0.5);}\r\n  .terminal-bar{display:flex;align-items:center;gap:8px;padding:12px 18px;border-bottom:1px solid rgba(255,255,255,0.06);background:rgba(255,255,255,0.02);}\r\n  .tdot{width:10px;height:10px;border-radius:50%;}\r\n  .terminal-body{font-family:var(--mono);font-size:0.86rem;padding:26px;min-height:240px;line-height:1.9;color:var(--primary);}\r\n  .terminal-body .ok{color:var(--cyan);}\r\n\r\n  \/* ---------- design chips ---------- *\/\r\n  .chip-row{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;}\r\n  .chip{font-family:var(--mono);font-size:0.78rem;color:var(--text);border:1px solid rgba(255,255,255,0.1);\r\n    padding:9px 18px;border-radius:100px;background:var(--card);transition:all .3s ease;}\r\n  .chip:hover{border-color:var(--primary);color:var(--primary);}\r\n\r\n  @media (max-width:980px){\r\n    .root-layout{grid-template-columns:1fr;}\r\n    .weevil-info{grid-template-columns:repeat(2,1fr);}\r\n    .multilayer-layout{grid-template-columns:1fr;}\r\n    .stat-grid{grid-template-columns:repeat(2,1fr);}\r\n  }\r\n  @media (max-width:600px){\r\n    .weevil-info{grid-template-columns:1fr 1fr;}\r\n    .stat-grid{grid-template-columns:1fr 1fr;}\r\n    .py{padding:100px 0;}\r\n  }\r\n<\/style>\r\n<\/head>\r\n<body>\r\n\r\n<canvas id=\"bg-canvas\"><\/canvas>\r\n<div class=\"noise\"><\/div>\r\n<div class=\"cursor-glow\" id=\"cursorGlow\"><\/div>\r\n\r\n<!-- HERO -->\r\n<section class=\"hero\" id=\"top\">\r\n  <div class=\"hero-stage\"><canvas id=\"tree-canvas\"><\/canvas><\/div>\r\n  <h1>\u0628\u06cc\u0646\u0627\u06cc\u06cc \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc <span class=\"accent\">\u0632\u06cc\u0631\u0632\u0645\u06cc\u0646\u06cc<\/span><\/h1>\r\n  <div class=\"hero-tagline\">\u0641\u0631\u0627\u062a\u0631 \u0627\u0632 \u0633\u0637\u062d \u0632\u0645\u06cc\u0646 \u0631\u0627 \u0628\u0628\u06cc\u0646<\/div>\r\n  <div class=\"hero-cta\">\r\n    <button class=\"btn-primary\" onclick=\"document.getElementById('scanner').scrollIntoView({behavior:'smooth'})\">\u0634\u0631\u0648\u0639 \u0627\u0633\u06a9\u0646<\/button>\r\n    <button class=\"btn-ghost\" onclick=\"document.getElementById('dashboard').scrollIntoView({behavior:'smooth'})\">\u25b6 \u062f\u0627\u0634\u0628\u0648\u0631\u062f \u0632\u0646\u062f\u0647<\/button>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- AI UNDERGROUND SCANNER -->\r\n<section class=\"py\" id=\"scanner\" style=\"background:rgba(255,255,255,0.012);\">\r\n  <div class=\"container\">\r\n    <div class=\"section-head reveal\">\r\n      <div class=\"section-eyebrow\">\u0627\u0633\u06a9\u0646\u0631 \u0647\u0648\u0634\u0645\u0646\u062f \u0632\u06cc\u0631\u0632\u0645\u06cc\u0646<\/div>\r\n      <h2>\u06cc\u06a9 \u0628\u0631\u0634 \u06a9\u0627\u0645\u0644 \u0627\u0632 \u0647\u0631\u0686\u06cc \u0632\u06cc\u0631 \u0633\u0637\u062d\u0647<\/h2>\r\n      <p>\u067e\u0646\u062c \u0644\u0627\u06cc\u0647 \u0634\u0641\u0627\u0641\u060c \u0647\u0631\u06a9\u062f\u0648\u0645 \u0628\u0627 \u0646\u0648\u0631 \u0648 \u0634\u06cc\u0634\u0647 \u0627\u0632 \u062f\u06cc\u06af\u0631\u06cc \u062c\u062f\u0627 \u0634\u062f\u0647.<\/p>\r\n    <\/div>\r\n    <div class=\"layer-stack reveal\" id=\"layerStack\"><\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- ROOT INTELLIGENCE -->\r\n<section class=\"py\" id=\"root\">\r\n  <div class=\"container\">\r\n    <div class=\"section-head reveal\">\r\n      <div class=\"section-eyebrow\">\u0647\u0648\u0634 \u0631\u06cc\u0634\u0647<\/div>\r\n      <h2>\u0647\u0631 \u0631\u06cc\u0634\u0647\u060c \u0631\u062f\u06cc\u0627\u0628\u06cc \u0648 \u0627\u0645\u062a\u06cc\u0627\u0632\u062f\u0647\u06cc \u0634\u062f\u0647<\/h2>\r\n    <\/div>\r\n    <div class=\"root-layout reveal\">\r\n      <div class=\"root-stage\"><canvas id=\"root-canvas\"><\/canvas><\/div>\r\n      <div class=\"root-legend\" id=\"rootLegend\"><\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- RED PALM WEEVIL DETECTION -->\r\n<section class=\"py\" id=\"weevil\" style=\"background:rgba(255,255,255,0.012);\">\r\n  <div class=\"container\">\r\n    <div class=\"section-head reveal\">\r\n      <div class=\"section-eyebrow\">\u062a\u0634\u062e\u06cc\u0635 \u0633\u0648\u0633\u06a9 \u0633\u0631\u062e\u0631\u0637\u0648\u0645\u06cc \u0646\u062e\u0644<\/div>\r\n      <h2>\u062f\u0627\u062e\u0644 \u062a\u0646\u0647 \u062f\u0631\u062e\u062a\u060c \u0642\u0627\u0628\u0644 \u0645\u0634\u0627\u0647\u062f\u0647 \u0634\u062f\u0647<\/h2>\r\n    <\/div>\r\n    <div class=\"weevil-panel reveal\">\r\n      <div class=\"weevil-visual\"><canvas id=\"weevil-canvas\"><\/canvas><\/div>\r\n      <div class=\"weevil-info\">\r\n        <div class=\"cell\"><div class=\"l\">\u0645\u0633\u06cc\u0631 \u0644\u0627\u0631\u0648<\/div><div class=\"v\">\u0646\u0642\u0634\u0647\u200c\u0628\u0631\u062f\u0627\u0631\u06cc \u0634\u062f<\/div><\/div>\r\n        <div class=\"cell\"><div class=\"l\">\u0645\u062d\u0644 \u062a\u063a\u0630\u06cc\u0647<\/div><div class=\"v\">\u0634\u0646\u0627\u0633\u0627\u06cc\u06cc \u0634\u062f<\/div><\/div>\r\n        <div class=\"cell\"><div class=\"l\">\u0634\u062f\u062a \u062e\u0633\u0627\u0631\u062a<\/div><div class=\"v\">\u0645\u062a\u0648\u0633\u0637<\/div><\/div>\r\n        <div class=\"cell\"><div class=\"l\">\u0627\u062d\u062a\u0645\u0627\u0644 \u06af\u0633\u062a\u0631\u0634<\/div><div class=\"v\">32%<\/div><\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- WHITE GRUB DETECTION -->\r\n<section class=\"py\" id=\"grub\">\r\n  <div class=\"container\">\r\n    <div class=\"section-head reveal\">\r\n      <div class=\"section-eyebrow\">\u062a\u0634\u062e\u06cc\u0635 \u06a9\u0631\u0645 \u0633\u0641\u06cc\u062f \u0631\u06cc\u0634\u0647<\/div>\r\n      <h2>\u0628\u0647 \u062f\u0627\u062e\u0644 \u062e\u0648\u062f \u062e\u0627\u06a9<\/h2>\r\n    <\/div>\r\n    <div class=\"grub-stage reveal\"><canvas id=\"grub-canvas\"><\/canvas><\/div>\r\n    <div class=\"grub-counter reveal\" id=\"grubCounter\">\u0644\u0627\u0631\u0648\u0647\u0627\u06cc \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc\u200c\u0634\u062f\u0647: 0<\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- PISTACHIO PSYLLID INTELLIGENCE -->\r\n<section class=\"py\" id=\"psyllid\" style=\"background:rgba(255,255,255,0.012);\">\r\n  <div class=\"container\">\r\n    <div class=\"section-head reveal\">\r\n      <div class=\"section-eyebrow\">\u0647\u0648\u0634 \u067e\u0633\u06cc\u0644 \u067e\u0633\u062a\u0647<\/div>\r\n      <h2>\u06a9\u0644 \u0628\u0627\u063a\u060c \u0646\u0642\u0634\u0647\u200c\u0628\u0631\u062f\u0627\u0631\u06cc\u200c\u0634\u062f\u0647 \u0628\u0631\u0627\u06cc \u0631\u06cc\u0633\u06a9<\/h2>\r\n    <\/div>\r\n    <div class=\"orchard-stage reveal\"><canvas id=\"orchard-canvas\"><\/canvas><\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- AI MULTI-LAYER DETECTION -->\r\n<section class=\"py\" id=\"multilayer\">\r\n  <div class=\"container\">\r\n    <div class=\"section-head reveal\">\r\n      <div class=\"section-eyebrow\">\u062a\u0634\u062e\u06cc\u0635 \u0686\u0646\u062f\u0644\u0627\u06cc\u0647 \u0647\u0648\u0634\u0645\u0646\u062f<\/div>\r\n      <h2>\u0647\u0631 \u0644\u0627\u06cc\u0647 \u0631\u0648 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0646\u06cc\u0627\u0632 \u0631\u0648\u0634\u0646 \u06cc\u0627 \u062e\u0627\u0645\u0648\u0634 \u06a9\u0646<\/h2>\r\n    <\/div>\r\n    <div class=\"multilayer-layout reveal\">\r\n      <div class=\"cube-stage\"><canvas id=\"cube-canvas\"><\/canvas><\/div>\r\n      <div class=\"layer-toggles\" id=\"layerToggles\"><\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- UNDERGROUND DIGITAL TWIN -->\r\n<section class=\"py\" id=\"twin\" style=\"background:rgba(255,255,255,0.012);\">\r\n  <div class=\"container\">\r\n    <div class=\"section-head reveal\">\r\n      <div class=\"section-eyebrow\">\u062f\u0648\u0642\u0644\u0648\u06cc \u062f\u06cc\u062c\u06cc\u062a\u0627\u0644 \u0632\u06cc\u0631\u0632\u0645\u06cc\u0646<\/div>\r\n      <h2>\u0627\u0632 \u0646\u0645\u0627\u06cc \u0645\u0627\u0647\u0648\u0627\u0631\u0647\u200c\u0627\u06cc \u062a\u0627 \u0639\u0645\u0642 \u062e\u0627\u06a9<\/h2>\r\n    <\/div>\r\n    <div class=\"twin-stage reveal\"><canvas id=\"twin-canvas\"><\/canvas><\/div>\r\n    <div class=\"zoom-slider-wrap reveal\">\r\n      <input type=\"range\" min=\"0\" max=\"100\" value=\"0\" class=\"zoom-slider\" id=\"zoomSlider\">\r\n      <div class=\"zoom-label\" id=\"zoomLabel\">\u0646\u0645\u0627\u06cc \u0645\u0627\u0647\u0648\u0627\u0631\u0647\u200c\u0627\u06cc<\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- AI PREDICTION ENGINE -->\r\n<section class=\"py\" id=\"prediction\">\r\n  <div class=\"container\">\r\n    <div class=\"section-head reveal\">\r\n      <div class=\"section-eyebrow\">\u0645\u0648\u062a\u0648\u0631 \u067e\u06cc\u0634\u200c\u0628\u06cc\u0646\u06cc \u0647\u0648\u0634\u0645\u0646\u062f<\/div>\r\n      <h2>\u0627\u06af\u0647 \u0647\u06cc\u0686 \u0627\u0642\u062f\u0627\u0645\u06cc \u0627\u0646\u062c\u0627\u0645 \u0646\u0634\u0647 \u0686\u06cc \u0645\u06cc\u200c\u0634\u0647<\/h2>\r\n    <\/div>\r\n    <div class=\"timeline-tabs reveal\" id=\"timelineTabs\"><\/div>\r\n    <div class=\"predict-stage reveal\"><canvas id=\"predict-canvas\"><\/canvas><\/div>\r\n    <div class=\"predict-caption reveal\" id=\"predictCaption\">\u0627\u0645\u0631\u0648\u0632 \u2014 \u0645\u0646\u0637\u0642\u0647 \u0645\u0647\u0627\u0631 \u067e\u0627\u06cc\u062f\u0627\u0631\u0647.<\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- PRECISION TREATMENT -->\r\n<section class=\"py\" id=\"treatment\" style=\"background:rgba(255,255,255,0.012);\">\r\n  <div class=\"container\">\r\n    <div class=\"section-head reveal\">\r\n      <div class=\"section-eyebrow\">\u062f\u0631\u0645\u0627\u0646 \u062f\u0642\u06cc\u0642<\/div>\r\n      <h2>\u0641\u0642\u0637 \u0646\u0642\u0637\u0647 \u0622\u0644\u0648\u062f\u0647. \u0646\u0647 \u0647\u06cc\u0686 \u0686\u06cc\u0632 \u062f\u06cc\u06af\u0647.<\/h2>\r\n    <\/div>\r\n    <div class=\"treat-panel reveal\">\r\n      <div class=\"treat-stage\"><canvas id=\"treat-canvas\"><\/canvas><\/div>\r\n      <button class=\"btn-primary\" id=\"treatBtn\">\u0627\u0639\u0645\u0627\u0644 \u062f\u0631\u0645\u0627\u0646 \u062f\u0642\u06cc\u0642<\/button>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- LIVE AI DASHBOARD -->\r\n<section class=\"py\" id=\"dashboard\">\r\n  <div class=\"container\">\r\n    <div class=\"section-head reveal\">\r\n      <div class=\"section-eyebrow\">\u062f\u0627\u0634\u0628\u0648\u0631\u062f \u0647\u0648\u0634\u0645\u0646\u062f \u0632\u0646\u062f\u0647<\/div>\r\n      <h2>\u0647\u0631 \u0645\u0632\u0631\u0639\u0647\u060c \u0634\u0628\u0627\u0646\u0647\u200c\u0631\u0648\u0632 \u0632\u06cc\u0631 \u0646\u0638\u0631<\/h2>\r\n    <\/div>\r\n    <div class=\"stat-grid\">\r\n      <div class=\"stat-card\"><div class=\"stat-label\">\u062f\u0631\u062e\u062a\u0627\u0646 \u0627\u0633\u06a9\u0646\u200c\u0634\u062f\u0647<\/div><div class=\"stat-value\" data-target=\"248421\">0<\/div><\/div>\r\n      <div class=\"stat-card\"><div class=\"stat-label\">\u0622\u0641\u0627\u062a \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc\u200c\u0634\u062f\u0647<\/div><div class=\"stat-value\" data-target=\"18942\">0<\/div><\/div>\r\n      <div class=\"stat-card\"><div class=\"stat-label\">\u062f\u0642\u062a \u062a\u0634\u062e\u06cc\u0635<\/div><div class=\"stat-value\" data-target=\"99.8\" data-decimal=\"1\">0<span class=\"unit\">%<\/span><\/div><\/div>\r\n      <div class=\"stat-card\"><div class=\"stat-label\">\u0647\u0634\u062f\u0627\u0631\u0647\u0627\u06cc \u0627\u0648\u0644\u06cc\u0647<\/div><div class=\"stat-value\" data-target=\"4281\">0<\/div><\/div>\r\n      <div class=\"stat-card\"><div class=\"stat-label\">\u062a\u062d\u0644\u06cc\u0644 \u0631\u06cc\u0634\u0647<\/div><div class=\"stat-value\" data-target=\"12.8\" data-decimal=\"1\">0<span class=\"unit\">M<\/span><\/div><\/div>\r\n      <div class=\"stat-card\"><div class=\"stat-label\">\u067e\u06cc\u0634\u200c\u0628\u06cc\u0646\u06cc\u200c\u0647\u0627\u06cc \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc<\/div><div class=\"stat-value\" data-target=\"8.4\" data-decimal=\"1\">0<span class=\"unit\">M<\/span><\/div><\/div>\r\n      <div class=\"stat-card\"><div class=\"stat-label\">\u062f\u0631\u062e\u062a\u0627\u0646 \u0633\u0627\u0644\u0645<\/div><div class=\"stat-value\" data-target=\"96.2\" data-decimal=\"1\">0<span class=\"unit\">%<\/span><\/div><\/div>\r\n      <div class=\"stat-card\"><div class=\"stat-label\">\u0645\u0633\u0627\u062d\u062a \u062a\u062d\u062a \u067e\u0648\u0634\u0634<\/div><div class=\"stat-value\" data-target=\"52184\" data-suffix=\" ha\">0<span class=\"unit\">ha<\/span><\/div><\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- AI COMMAND CENTER -->\r\n<section class=\"py\" id=\"command\" style=\"background:rgba(255,255,255,0.012);\">\r\n  <div class=\"container\">\r\n    <div class=\"section-head reveal\">\r\n      <div class=\"section-eyebrow\">\u0645\u0631\u06a9\u0632 \u0641\u0631\u0645\u0627\u0646 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc<\/div>\r\n      <h2>\u0645\u0633\u062a\u0642\u06cc\u0645 \u0628\u0627 \u0645\u0632\u0631\u0639\u0647 \u0635\u062d\u0628\u062a \u06a9\u0646<\/h2>\r\n    <\/div>\r\n    <div class=\"terminal reveal\">\r\n      <div class=\"terminal-bar\">\r\n        <div class=\"tdot\" style=\"background:#ff5f57;\"><\/div>\r\n        <div class=\"tdot\" style=\"background:#febc2e;\"><\/div>\r\n        <div class=\"tdot\" style=\"background:#28c840;\"><\/div>\r\n      <\/div>\r\n      <div class=\"terminal-body\" id=\"terminalBody\"><\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- DESIGN \/ TECH -->\r\n<section class=\"py\" id=\"tech\">\r\n  <div class=\"container\">\r\n    <div class=\"section-head reveal\">\r\n      <div class=\"section-eyebrow\">\u0633\u0627\u062e\u062a\u0647\u200c\u0634\u062f\u0647 \u0628\u0627<\/div>\r\n      <h2>\u06cc\u06a9 \u0632\u0628\u0627\u0646 \u0628\u0635\u0631\u06cc \u0627\u062e\u062a\u0635\u0627\u0635\u06cc<\/h2>\r\n    <\/div>\r\n    <div class=\"chip-row reveal\">\r\n      <span class=\"chip\">Glassmorphism<\/span><span class=\"chip\">Volumetric Lighting<\/span><span class=\"chip\">Holographic UI<\/span>\r\n      <span class=\"chip\">Three.js<\/span><span class=\"chip\">WebGL<\/span><span class=\"chip\">GSAP<\/span>\r\n      <span class=\"chip\">Neural Overlay<\/span><span class=\"chip\">X-Ray Rendering<\/span>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<script>\r\n\/* cursor glow *\/\r\nconst glow = document.getElementById('cursorGlow');\r\nlet mouseX = window.innerWidth\/2, mouseY = window.innerHeight\/2;\r\nwindow.addEventListener('pointermove', (e) => {\r\n  glow.style.left = e.clientX + 'px'; glow.style.top = e.clientY + 'px';\r\n  mouseX = e.clientX; mouseY = e.clientY;\r\n}, {passive:true});\r\n\r\n\/* scroll reveal *\/\r\nconst io = new IntersectionObserver((entries) => {\r\n  entries.forEach(entry => { if(entry.isIntersecting){ entry.target.classList.add('in'); io.unobserve(entry.target); } });\r\n}, {threshold:0.15});\r\ndocument.querySelectorAll('.reveal').forEach(el => io.observe(el));\r\n\r\n\/* background particle field *\/\r\n(function(){\r\n  const canvas = document.getElementById('bg-canvas');\r\n  const ctx = canvas.getContext('2d');\r\n  let w,h,particles;\r\n  function resize(){ w = canvas.width = window.innerWidth; h = canvas.height = window.innerHeight; }\r\n  function init(){\r\n    resize();\r\n    const count = Math.min(80, Math.floor(w\/20));\r\n    particles = Array.from({length:count}, () => ({x:Math.random()*w,y:Math.random()*h,vx:(Math.random()-0.5)*0.12,vy:(Math.random()-0.5)*0.12,r:Math.random()*1.3+0.3}));\r\n  }\r\n  function draw(){\r\n    ctx.clearRect(0,0,w,h);\r\n    ctx.fillStyle='rgba(0,255,150,0.4)';\r\n    for(const p of particles){\r\n      p.x+=p.vx; p.y+=p.vy;\r\n      if(p.x<0)p.x=w; if(p.x>w)p.x=0; if(p.y<0)p.y=h; if(p.y>h)p.y=0;\r\n      ctx.globalAlpha=0.3; ctx.beginPath(); ctx.arc(p.x,p.y,p.r,0,Math.PI*2); ctx.fill();\r\n    }\r\n    requestAnimationFrame(draw);\r\n  }\r\n  window.addEventListener('resize', init);\r\n  init(); draw();\r\n})();\r\n\r\n\/* hero: palm tree + AI scan pulse revealing underground layers *\/\r\n(function(){\r\n  const canvas = document.getElementById('tree-canvas');\r\n  const ctx = canvas.getContext('2d');\r\n  let w,h,t=0,scanY=0;\r\n  function resize(){\r\n    const rect = canvas.parentElement.getBoundingClientRect();\r\n    w = canvas.width = rect.width; h = canvas.height = rect.height;\r\n  }\r\n  window.addEventListener('resize', resize); resize();\r\n  const groundY = () => h*0.55;\r\n\r\n  function drawTree(cx, baseY){\r\n    ctx.strokeStyle='rgba(0,255,150,0.7)'; ctx.lineWidth=6; ctx.lineCap='round';\r\n    ctx.beginPath(); ctx.moveTo(cx,baseY); ctx.lineTo(cx-8,baseY-160); ctx.stroke();\r\n    ctx.lineWidth=2;\r\n    for(let i=0;i<7;i++){\r\n      const a = (i\/6)*Math.PI - Math.PI*0.1;\r\n      const lx = cx-8 + Math.cos(a+Math.PI)*70;\r\n      const ly = baseY-160 - Math.sin(a)*40;\r\n      ctx.strokeStyle='rgba(0,255,150,0.5)';\r\n      ctx.beginPath(); ctx.moveTo(cx-8,baseY-160); ctx.quadraticCurveTo(cx-8+(lx-(cx-8))*0.5, baseY-160-30, lx, ly); ctx.stroke();\r\n    }\r\n  }\r\n\r\n  function draw(){\r\n    ctx.clearRect(0,0,w,h); t += 0.01;\r\n    const cx = w\/2, gY = groundY();\r\n\r\n    ctx.strokeStyle='rgba(255,255,255,0.1)';\r\n    ctx.beginPath(); ctx.moveTo(0,gY); ctx.lineTo(w,gY); ctx.stroke();\r\n\r\n    drawTree(cx, gY);\r\n\r\n    scanY += 1.2;\r\n    if(scanY > h+40) scanY = -40;\r\n    const scanGrad = ctx.createLinearGradient(0,scanY-30,0,scanY+30);\r\n    scanGrad.addColorStop(0,'rgba(0,217,255,0)'); scanGrad.addColorStop(0.5,'rgba(0,217,255,0.25)'); scanGrad.addColorStop(1,'rgba(0,217,255,0)');\r\n    ctx.fillStyle = scanGrad;\r\n    ctx.fillRect(0,scanY-30,w,60);\r\n    ctx.strokeStyle='rgba(0,217,255,0.8)'; ctx.lineWidth=1.5;\r\n    ctx.beginPath(); ctx.moveTo(0,scanY); ctx.lineTo(w,scanY); ctx.stroke();\r\n\r\n    if(scanY > gY){\r\n      ctx.save();\r\n      ctx.beginPath(); ctx.rect(0,gY,w,Math.min(scanY,h)-gY); ctx.clip();\r\n      const layers = [[gY,gY+40,'rgba(0,255,150,0.04)'],[gY+40,gY+90,'rgba(0,217,255,0.05)'],[gY+90,gY+150,'rgba(255,184,75,0.04)']];\r\n      layers.forEach(([y1,y2,c]) => { ctx.fillStyle=c; ctx.fillRect(0,y1,w,y2-y1); });\r\n      ctx.strokeStyle='rgba(0,255,150,0.5)'; ctx.lineWidth=1.5;\r\n      for(let i=0;i<6;i++){\r\n        const a = (i\/5-0.5)*1.6;\r\n        ctx.beginPath(); ctx.moveTo(cx,gY);\r\n        ctx.quadraticCurveTo(cx+Math.sin(a)*80, gY+60, cx+Math.sin(a)*140, gY+120+Math.random()*10);\r\n        ctx.stroke();\r\n      }\r\n      for(let i=0;i<8;i++){\r\n        const px = cx + (Math.sin(i*3.1+t)*130);\r\n        const py = gY + 50 + (i%4)*22;\r\n        ctx.fillStyle='rgba(255,95,95,0.7)';\r\n        ctx.beginPath(); ctx.arc(px,py,2.4,0,Math.PI*2); ctx.fill();\r\n      }\r\n      ctx.restore();\r\n    }\r\n\r\n    requestAnimationFrame(draw);\r\n  }\r\n  draw();\r\n})();\r\n\r\n\/* layer stack *\/\r\nconst layers = [\r\n  {name:'\u0633\u0637\u062d \u0632\u0645\u06cc\u0646', depth:'0 cm'},\r\n  {name:'\u0645\u0646\u0637\u0642\u0647 \u0631\u06cc\u0634\u0647', depth:'0 \u2013 40 cm'},\r\n  {name:'\u0644\u0627\u06cc\u0647 \u0631\u0637\u0648\u0628\u062a', depth:'40 \u2013 80 cm'},\r\n  {name:'\u062d\u0641\u0631\u0647\u200c\u0647\u0627\u06cc \u0632\u06cc\u0631\u0632\u0645\u06cc\u0646\u06cc', depth:'80 \u2013 150 cm'},\r\n  {name:'\u0644\u0627\u06cc\u0647 \u0641\u0639\u0627\u0644\u06cc\u062a \u0622\u0641\u0627\u062a', depth:'150 \u2013 220 cm'}\r\n];\r\nconst layerStack = document.getElementById('layerStack');\r\nlayers.forEach((l,i) => {\r\n  const row = document.createElement('div');\r\n  row.className = 'layer-row';\r\n  row.innerHTML = `<div><span class=\"idx\">0${i+1}<\/span> &nbsp; <h4 style=\"display:inline;\">${l.name}<\/h4><\/div><div class=\"depth\">${l.depth}<\/div>`;\r\n  layerStack.appendChild(row);\r\n});\r\n\r\n\/* root intelligence *\/\r\n(function(){\r\n  const canvas = document.getElementById('root-canvas');\r\n  const ctx = canvas.getContext('2d');\r\n  let w,h,t=0;\r\n  function resize(){\r\n    const rect = canvas.parentElement.getBoundingClientRect();\r\n    w = canvas.width = rect.width; h = canvas.height = rect.height;\r\n  }\r\n  window.addEventListener('resize', resize); resize();\r\n  const colors = ['rgba(0,255,150,0.8)','rgba(255,220,100,0.8)','rgba(255,150,60,0.8)','rgba(255,80,80,0.8)'];\r\n  const branches = Array.from({length:14}, (_,i) => ({\r\n    angle:(Math.random()-0.5)*1.6, len:60+Math.random()*100, color: colors[Math.floor(Math.random()*colors.length)], depth:1+Math.floor(Math.random()*3)\r\n  }));\r\n  function draw(){\r\n    ctx.clearRect(0,0,w,h); t+=0.01;\r\n    const cx=w\/2, cy=30;\r\n    ctx.strokeStyle='rgba(255,255,255,0.15)'; ctx.beginPath(); ctx.moveTo(0,cy); ctx.lineTo(w,cy); ctx.stroke();\r\n    branches.forEach((b,i) => {\r\n      ctx.strokeStyle = b.color; ctx.lineWidth = 2;\r\n      ctx.beginPath();\r\n      ctx.moveTo(cx,cy);\r\n      const midX = cx+Math.sin(b.angle)*b.len*0.5, midY = cy+b.len*0.5;\r\n      const endX = cx+Math.sin(b.angle)*b.len, endY = cy+b.len + Math.sin(t+i)*4;\r\n      ctx.quadraticCurveTo(midX,midY,endX,endY);\r\n      ctx.stroke();\r\n    });\r\n    requestAnimationFrame(draw);\r\n  }\r\n  draw();\r\n})();\r\nconst rootLegend = document.getElementById('rootLegend');\r\nconst rootStatuses = [\r\n  ['#00FF96','\u0633\u0627\u0644\u0645','\u06f6\u06f8\u066a \u0627\u0632 \u062a\u0648\u062f\u0647 \u0631\u06cc\u0634\u0647'],\r\n  ['#FFDC64','\u0627\u0633\u062a\u0631\u0633','\u06f2\u06f1\u066a \u0627\u0632 \u062a\u0648\u062f\u0647 \u0631\u06cc\u0634\u0647'],\r\n  ['#FF9636','\u0631\u06cc\u0633\u06a9 \u0639\u0641\u0648\u0646\u062a','\u06f8\u066a \u0627\u0632 \u062a\u0648\u062f\u0647 \u0631\u06cc\u0634\u0647'],\r\n  ['#FF5050','\u0622\u0633\u06cc\u0628 \u0641\u0639\u0627\u0644','\u06f3\u066a \u0627\u0632 \u062a\u0648\u062f\u0647 \u0631\u06cc\u0634\u0647']\r\n];\r\nrootStatuses.forEach(([color,name,desc]) => {\r\n  const item = document.createElement('div'); item.className='root-legend-item';\r\n  item.innerHTML = `<div class=\"sw\" style=\"background:${color};box-shadow:0 0 10px ${color};\"><\/div><div><h5>${name}<\/h5><p>${desc}<\/p><\/div>`;\r\n  rootLegend.appendChild(item);\r\n});\r\n\r\n\/* red palm weevil *\/\r\n(function(){\r\n  const canvas = document.getElementById('weevil-canvas');\r\n  const ctx = canvas.getContext('2d');\r\n  let w,h,t=0;\r\n  function resize(){\r\n    const rect = canvas.parentElement.getBoundingClientRect();\r\n    w = canvas.width = rect.width; h = canvas.height = rect.height;\r\n  }\r\n  window.addEventListener('resize', resize); resize();\r\n  const tunnels = Array.from({length:5}, () => ({y:Math.random(), amp:10+Math.random()*20, speed:0.5+Math.random()}));\r\n  function draw(){\r\n    ctx.clearRect(0,0,w,h); t+=0.015;\r\n    const trunkX1 = w*0.35, trunkX2 = w*0.65;\r\n    ctx.fillStyle='rgba(255,255,255,0.03)'; ctx.fillRect(trunkX1,0,trunkX2-trunkX1,h);\r\n    ctx.strokeStyle='rgba(255,255,255,0.15)'; ctx.beginPath(); ctx.moveTo(trunkX1,0); ctx.lineTo(trunkX1,h); ctx.moveTo(trunkX2,0); ctx.lineTo(trunkX2,h); ctx.stroke();\r\n\r\n    tunnels.forEach((tn,i) => {\r\n      ctx.strokeStyle = i===2 ? 'rgba(255,95,95,0.8)' : 'rgba(0,255,150,0.4)';\r\n      ctx.lineWidth = i===2 ? 2.5 : 1.5;\r\n      ctx.beginPath();\r\n      for(let x=trunkX1; x<=trunkX2; x+=6){\r\n        const y = tn.y*h + Math.sin((x*0.03)+t*tn.speed)*tn.amp;\r\n        if(x===trunkX1) ctx.moveTo(x,y); else ctx.lineTo(x,y);\r\n      }\r\n      ctx.stroke();\r\n    });\r\n    const cx = (trunkX1+trunkX2)\/2, cy = h*tunnels[2].y;\r\n    const pulse = 6+Math.abs(Math.sin(t*2))*6;\r\n    ctx.strokeStyle='rgba(255,95,95,0.6)';\r\n    ctx.beginPath(); ctx.arc(cx,cy,pulse+14,0,Math.PI*2); ctx.stroke();\r\n    ctx.fillStyle='rgba(255,95,95,0.8)';\r\n    ctx.beginPath(); ctx.arc(cx,cy,4,0,Math.PI*2); ctx.fill();\r\n\r\n    requestAnimationFrame(draw);\r\n  }\r\n  draw();\r\n})();\r\n\r\n\/* white grub *\/\r\n(function(){\r\n  const canvas = document.getElementById('grub-canvas');\r\n  const ctx = canvas.getContext('2d');\r\n  let w,h;\r\n  function resize(){\r\n    const rect = canvas.parentElement.getBoundingClientRect();\r\n    w = canvas.width = rect.width; h = canvas.height = rect.height;\r\n  }\r\n  window.addEventListener('resize', resize); resize();\r\n  const grubs = Array.from({length:12}, () => ({x:Math.random(), y:Math.random(), r:6+Math.random()*4, phase:Math.random()*10}));\r\n  let count = 0;\r\n  const counterEl = document.getElementById('grubCounter');\r\n  function draw(t){\r\n    ctx.clearRect(0,0,w,h);\r\n    ctx.fillStyle='rgba(255,255,255,0.02)'; ctx.fillRect(0,0,w,h);\r\n    grubs.forEach((g,i) => {\r\n      const x = g.x*w + Math.sin((t||0)*0.0005+g.phase)*10;\r\n      const y = g.y*h + Math.cos((t||0)*0.0004+g.phase)*10;\r\n      ctx.fillStyle='rgba(255,220,180,0.7)';\r\n      ctx.beginPath(); ctx.ellipse(x,y,g.r,g.r*0.6,0,0,Math.PI*2); ctx.fill();\r\n      ctx.strokeStyle='rgba(0,255,150,0.6)'; ctx.lineWidth=1.2;\r\n      ctx.beginPath(); ctx.arc(x,y,g.r*1.8,0,Math.PI*2); ctx.stroke();\r\n    });\r\n    requestAnimationFrame(draw);\r\n  }\r\n  requestAnimationFrame(draw);\r\n  const interval = setInterval(() => {\r\n    count = Math.min(grubs.length, count+1);\r\n    counterEl.textContent = '\u0644\u0627\u0631\u0648\u0647\u0627\u06cc \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc\u200c\u0634\u062f\u0647: ' + count;\r\n    if(count >= grubs.length) clearInterval(interval);\r\n  }, 400);\r\n})();\r\n\r\n\/* pistachio orchard *\/\r\n(function(){\r\n  const canvas = document.getElementById('orchard-canvas');\r\n  const ctx = canvas.getContext('2d');\r\n  let w,h;\r\n  function resize(){\r\n    const rect = canvas.parentElement.getBoundingClientRect();\r\n    w = canvas.width = rect.width; h = canvas.height = rect.height;\r\n  }\r\n  window.addEventListener('resize', resize); resize();\r\n  const rows=6, cols=9;\r\n  const infected = new Set();\r\n  while(infected.size < 8){ infected.add(Math.floor(Math.random()*rows*cols)); }\r\n  function draw(t){\r\n    ctx.clearRect(0,0,w,h);\r\n    const cellW = w\/cols, cellH = h\/rows;\r\n    for(let r=0;r<rows;r++) for(let c=0;c<cols;c++){\r\n      const idx = r*cols+c;\r\n      const x = c*cellW+cellW\/2, y = r*cellH+cellH\/2;\r\n      const isInfected = infected.has(idx);\r\n      const pulse = isInfected ? 1+Math.sin((t||0)*0.003+idx)*0.15 : 1;\r\n      ctx.fillStyle = isInfected ? 'rgba(255,95,95,0.7)' : 'rgba(0,255,150,0.35)';\r\n      ctx.beginPath(); ctx.arc(x,y,10*pulse,0,Math.PI*2); ctx.fill();\r\n      if(isInfected){\r\n        ctx.strokeStyle='rgba(255,95,95,0.3)';\r\n        ctx.beginPath(); ctx.arc(x,y,20*pulse,0,Math.PI*2); ctx.stroke();\r\n      }\r\n    }\r\n    requestAnimationFrame(draw);\r\n  }\r\n  requestAnimationFrame(draw);\r\n})();\r\n\r\n\/* multi-layer cube *\/\r\nconst layerToggleData = ['\u0633\u0627\u062e\u062a\u0627\u0631 \u062e\u0627\u06a9','\u0633\u06cc\u0633\u062a\u0645 \u0631\u06cc\u0634\u0647','\u0631\u0637\u0648\u0628\u062a','\u062f\u0645\u0627','\u0641\u0639\u0627\u0644\u06cc\u062a \u0622\u0641\u0627\u062a','\u0633\u06cc\u06af\u0646\u0627\u0644\u200c\u0647\u0627\u06cc \u0635\u0648\u062a\u06cc','\u067e\u06cc\u0634\u200c\u0628\u06cc\u0646\u06cc \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc'];\r\nconst activeLayers = new Set([0,1,4]);\r\nconst layerToggles = document.getElementById('layerToggles');\r\nlayerToggleData.forEach((name,i) => {\r\n  const item = document.createElement('div');\r\n  item.className = 'toggle-item' + (activeLayers.has(i) ? ' active' : '');\r\n  item.innerHTML = `<span>${name}<\/span><div class=\"toggle-dot\"><\/div>`;\r\n  item.addEventListener('click', () => {\r\n    if(activeLayers.has(i)) activeLayers.delete(i); else activeLayers.add(i);\r\n    item.classList.toggle('active');\r\n  });\r\n  layerToggles.appendChild(item);\r\n});\r\n(function(){\r\n  const canvas = document.getElementById('cube-canvas');\r\n  const ctx = canvas.getContext('2d');\r\n  let w,h,rot=0;\r\n  function resize(){\r\n    const rect = canvas.parentElement.getBoundingClientRect();\r\n    w = canvas.width = rect.width; h = canvas.height = rect.height;\r\n  }\r\n  window.addEventListener('resize', resize); resize();\r\n  function draw(){\r\n    ctx.clearRect(0,0,w,h); rot += 0.005;\r\n    const cx=w\/2, cy=h\/2, size=Math.min(w,h)*0.28;\r\n    const layerCount = 7;\r\n    for(let i=0;i<layerCount;i++){\r\n      const active = activeLayers.has(i);\r\n      const offset = (i-layerCount\/2)*10;\r\n      const skew = Math.sin(rot)*20;\r\n      ctx.strokeStyle = active ? `rgba(0,255,150,${0.7-i*0.05})` : 'rgba(255,255,255,0.06)';\r\n      ctx.lineWidth = active ? 1.5 : 1;\r\n      ctx.strokeRect(cx-size+skew*0.2, cy-size*0.6+offset, size*2, size*1.2*0.14);\r\n    }\r\n    requestAnimationFrame(draw);\r\n  }\r\n  draw();\r\n})();\r\n\r\n\/* digital twin zoom *\/\r\n(function(){\r\n  const canvas = document.getElementById('twin-canvas');\r\n  const ctx = canvas.getContext('2d');\r\n  let w,h;\r\n  const slider = document.getElementById('zoomSlider');\r\n  const label = document.getElementById('zoomLabel');\r\n  function resize(){\r\n    const rect = canvas.parentElement.getBoundingClientRect();\r\n    w = canvas.width = rect.width; h = canvas.height = rect.height;\r\n  }\r\n  window.addEventListener('resize', resize); resize();\r\n  const riskPoints = Array.from({length:10}, () => ({x:Math.random(), y:Math.random()}));\r\n\r\n  function draw(){\r\n    ctx.clearRect(0,0,w,h);\r\n    const zoom = slider.value\/100;\r\n    ctx.strokeStyle='rgba(255,255,255,0.05)';\r\n    const gridSize = 20 + zoom*40;\r\n    for(let x=0;x<w;x+=gridSize){ ctx.beginPath(); ctx.moveTo(x,0); ctx.lineTo(x,h); ctx.stroke(); }\r\n    for(let y=0;y<h;y+=gridSize){ ctx.beginPath(); ctx.moveTo(0,y); ctx.lineTo(w,y); ctx.stroke(); }\r\n\r\n    ctx.globalAlpha = 1-zoom*0.7;\r\n    ctx.strokeStyle='rgba(0,255,150,0.2)';\r\n    for(let i=0;i<4;i++) for(let j=0;j<3;j++){\r\n      ctx.strokeRect(w*0.1+i*w*0.2, h*0.15+j*h*0.25, w*0.16, h*0.18);\r\n    }\r\n    ctx.globalAlpha = 1;\r\n\r\n    ctx.strokeStyle = `rgba(255,95,95,${0.15+zoom*0.35})`;\r\n    ctx.lineWidth=1;\r\n    for(let i=0;i<riskPoints.length;i++) for(let j=i+1;j<riskPoints.length;j++){\r\n      const a=riskPoints[i], b=riskPoints[j];\r\n      const dx=(a.x-b.x)*w, dy=(a.y-b.y)*h;\r\n      if(Math.sqrt(dx*dx+dy*dy) < 140){\r\n        ctx.beginPath(); ctx.moveTo(a.x*w,a.y*h); ctx.lineTo(b.x*w,b.y*h); ctx.stroke();\r\n      }\r\n    }\r\n    riskPoints.forEach(p => {\r\n      ctx.fillStyle=`rgba(255,95,95,${0.5+zoom*0.4})`;\r\n      ctx.beginPath(); ctx.arc(p.x*w,p.y*h, 3+zoom*3,0,Math.PI*2); ctx.fill();\r\n    });\r\n\r\n    requestAnimationFrame(draw);\r\n  }\r\n  draw();\r\n  slider.addEventListener('input', () => {\r\n    const v = slider.value;\r\n    label.textContent = v < 33 ? '\u0646\u0645\u0627\u06cc \u0645\u0627\u0647\u0648\u0627\u0631\u0647\u200c\u0627\u06cc' : v < 66 ? '\u0646\u0645\u0627\u06cc \u0645\u0632\u0631\u0639\u0647' : '\u0646\u0645\u0627\u06cc \u0632\u06cc\u0631\u0632\u0645\u06cc\u0646';\r\n  });\r\n})();\r\n\r\n\/* prediction timeline *\/\r\nconst timelineSteps = ['\u0627\u0645\u0631\u0648\u0632','\u06f7 \u0631\u0648\u0632','\u06f1\u06f4 \u0631\u0648\u0632','\u06f3\u06f0 \u0631\u0648\u0632'];\r\nconst timelineCaptions = [\r\n  '\u0627\u0645\u0631\u0648\u0632 \u2014 \u0645\u0646\u0637\u0642\u0647 \u0645\u0647\u0627\u0631 \u067e\u0627\u06cc\u062f\u0627\u0631\u0647.',\r\n  '\u06f7 \u0631\u0648\u0632 \u2014 \u0628\u062f\u0648\u0646 \u0627\u0642\u062f\u0627\u0645\u060c \u0645\u0645\u06a9\u0646\u0647 \u0622\u0644\u0648\u062f\u06af\u06cc \u0628\u0647 \u06f3 \u062f\u0631\u062e\u062a \u0645\u062c\u0627\u0648\u0631 \u0628\u0631\u0633\u0647.',\r\n  '\u06f1\u06f4 \u0631\u0648\u0632 \u2014 \u0634\u0639\u0627\u0639 \u06af\u0633\u062a\u0631\u0634 \u062f\u0648 \u0628\u0631\u0627\u0628\u0631 \u0645\u06cc\u200c\u0634\u0647\u061b \u0645\u062f\u0627\u062e\u0644\u0647 \u0632\u0648\u062f\u0647\u0646\u06af\u0627\u0645 \u0647\u0646\u0648\u0632 \u0645\u0624\u062b\u0631\u0647.',\r\n  '\u06f3\u06f0 \u0631\u0648\u0632 \u2014 \u0628\u062f\u0648\u0646 \u062f\u0631\u0645\u0627\u0646\u060c \u06af\u0633\u062a\u0631\u0634 \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u0628\u0647 \u06f2\u06f2\u066a \u0627\u0632 \u0628\u0644\u0648\u06a9 \u0628\u0631\u0633\u0647.'\r\n];\r\nconst timelineTabs = document.getElementById('timelineTabs');\r\nconst predictCaption = document.getElementById('predictCaption');\r\nlet predictStage = 0;\r\ntimelineSteps.forEach((label,i) => {\r\n  const btn = document.createElement('button');\r\n  btn.className = 'btn-mini' + (i===0?' active':'');\r\n  btn.textContent = label;\r\n  btn.addEventListener('click', () => {\r\n    document.querySelectorAll('#timelineTabs .btn-mini').forEach(b => b.classList.remove('active'));\r\n    btn.classList.add('active');\r\n    predictStage = i;\r\n    predictCaption.textContent = timelineCaptions[i];\r\n  });\r\n  timelineTabs.appendChild(btn);\r\n});\r\n(function(){\r\n  const canvas = document.getElementById('predict-canvas');\r\n  const ctx = canvas.getContext('2d');\r\n  let w,h;\r\n  function resize(){\r\n    const rect = canvas.parentElement.getBoundingClientRect();\r\n    w = canvas.width = rect.width; h = canvas.height = rect.height;\r\n  }\r\n  window.addEventListener('resize', resize); resize();\r\n  function draw(t){\r\n    ctx.clearRect(0,0,w,h);\r\n    const cx=w\/2, cy=h\/2;\r\n    const radius = 20 + predictStage*35 + Math.sin((t||0)*0.002)*4;\r\n    const grad = ctx.createRadialGradient(cx,cy,0,cx,cy,radius);\r\n    grad.addColorStop(0,'rgba(255,95,95,0.5)'); grad.addColorStop(1,'rgba(255,95,95,0)');\r\n    ctx.fillStyle = grad;\r\n    ctx.beginPath(); ctx.arc(cx,cy,radius,0,Math.PI*2); ctx.fill();\r\n    ctx.fillStyle='rgba(0,255,150,0.8)';\r\n    ctx.beginPath(); ctx.arc(cx,cy,5,0,Math.PI*2); ctx.fill();\r\n    for(let i=0;i<8;i++){\r\n      const a = (i\/8)*Math.PI*2;\r\n      const tx = cx+Math.cos(a)*130, ty=cy+Math.sin(a)*90;\r\n      const dist = Math.sqrt((tx-cx)**2+(ty-cy)**2);\r\n      const affected = dist < radius;\r\n      ctx.fillStyle = affected ? 'rgba(255,95,95,0.7)' : 'rgba(0,255,150,0.5)';\r\n      ctx.beginPath(); ctx.arc(tx,ty,5,0,Math.PI*2); ctx.fill();\r\n    }\r\n    requestAnimationFrame(draw);\r\n  }\r\n  requestAnimationFrame(draw);\r\n})();\r\n\r\n\/* precision treatment *\/\r\n(function(){\r\n  const canvas = document.getElementById('treat-canvas');\r\n  const ctx = canvas.getContext('2d');\r\n  let w,h,treated=false,t=0;\r\n  function resize(){\r\n    const rect = canvas.parentElement.getBoundingClientRect();\r\n    w = canvas.width = rect.width; h = canvas.height = rect.height;\r\n  }\r\n  window.addEventListener('resize', resize); resize();\r\n  const points = Array.from({length:20}, () => ({x:Math.random(), y:Math.random(), infected:Math.random()<0.15}));\r\n\r\n  function draw(){\r\n    ctx.clearRect(0,0,w,h); t += 0.02;\r\n    points.forEach(p => {\r\n      const x=p.x*w, y=p.y*h;\r\n      if(p.infected){\r\n        ctx.fillStyle = treated ? 'rgba(0,255,150,0.7)' : 'rgba(255,95,95,0.7)';\r\n        ctx.beginPath(); ctx.arc(x,y,5,0,Math.PI*2); ctx.fill();\r\n        if(treated){\r\n          const pulse = 8+Math.abs(Math.sin(t*3))*8;\r\n          ctx.strokeStyle='rgba(0,255,150,0.4)';\r\n          ctx.beginPath(); ctx.arc(x,y,pulse,0,Math.PI*2); ctx.stroke();\r\n        }\r\n      } else {\r\n        ctx.fillStyle='rgba(255,255,255,0.15)';\r\n        ctx.beginPath(); ctx.arc(x,y,2.5,0,Math.PI*2); ctx.fill();\r\n      }\r\n    });\r\n    requestAnimationFrame(draw);\r\n  }\r\n  draw();\r\n\r\n  document.getElementById('treatBtn').addEventListener('click', function(){\r\n    treated = true;\r\n    this.textContent = '\u062f\u0631\u0645\u0627\u0646 \u0627\u0639\u0645\u0627\u0644 \u0634\u062f \u2705';\r\n    this.disabled = true;\r\n  });\r\n})();\r\n\r\n\/* counters *\/\r\nconst counterObserver = new IntersectionObserver((entries) => {\r\n  entries.forEach(entry => {\r\n    if(entry.isIntersecting){\r\n      const el = entry.target;\r\n      const target = parseFloat(el.dataset.target);\r\n      const decimals = parseInt(el.dataset.decimal || '0');\r\n      let start = performance.now();\r\n      function tick(now){\r\n        const p = Math.min(1,(now-start)\/1500);\r\n        const eased = 1 - Math.pow(1-p,3);\r\n        const cur = target*eased;\r\n        el.childNodes[0].nodeValue = decimals>0 ? cur.toFixed(decimals) : Math.round(cur).toLocaleString();\r\n        if(p<1) requestAnimationFrame(tick);\r\n      }\r\n      requestAnimationFrame(tick);\r\n      counterObserver.unobserve(el);\r\n    }\r\n  });\r\n}, {threshold:0.4});\r\ndocument.querySelectorAll('.stat-value[data-target]').forEach(c => counterObserver.observe(c));\r\n\r\n\/* AI command terminal *\/\r\nconst terminalLines = [\r\n  {cmd:'\u0627\u0633\u06a9\u0646 \u062f\u0631\u062e\u062a\u0627\u0646 \u0646\u062e\u0644', ok:'\u062a\u06a9\u0645\u06cc\u0644 \u0634\u062f'},\r\n  {cmd:'\u062a\u0634\u062e\u06cc\u0635 \u0633\u0648\u0633\u06a9 \u0633\u0631\u062e\u0631\u0637\u0648\u0645\u06cc \u0646\u062e\u0644', ok:'\u06cc\u0627\u0641\u062a \u0634\u062f'},\r\n  {cmd:'\u062a\u062d\u0644\u06cc\u0644 \u0633\u06cc\u0633\u062a\u0645 \u0631\u06cc\u0634\u0647', ok:'\u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627'},\r\n  {cmd:'\u067e\u06cc\u0634\u200c\u0628\u06cc\u0646\u06cc \u06af\u0633\u062a\u0631\u0634', ok:'\u062a\u06a9\u0645\u06cc\u0644 \u0634\u062f'},\r\n  {cmd:'\u062a\u0648\u0644\u06cc\u062f \u0637\u0631\u062d \u062f\u0631\u0645\u0627\u0646', ok:'\u0622\u0645\u0627\u062f\u0647'},\r\n  {cmd:'\u062e\u0631\u0648\u062c\u06cc \u06af\u0632\u0627\u0631\u0634', ok:'\u0645\u0648\u0641\u0642'}\r\n];\r\nconst terminalBody = document.getElementById('terminalBody');\r\nlet tIdx = 0;\r\nasync function typeLine(text){\r\n  return new Promise(resolve => {\r\n    let i = 0;\r\n    const span = document.createElement('div');\r\n    terminalBody.appendChild(span);\r\n    const interval = setInterval(() => {\r\n      span.textContent = '> ' + text.slice(0, i+1);\r\n      i++;\r\n      if(i >= text.length){ clearInterval(interval); resolve(span); }\r\n    }, 35);\r\n  });\r\n}\r\nasync function runTerminal(){\r\n  while(true){\r\n    const line = terminalLines[tIdx % terminalLines.length];\r\n    await typeLine(line.cmd);\r\n    await new Promise(r => setTimeout(r, 300));\r\n    const okLine = document.createElement('div');\r\n    okLine.className = 'ok';\r\n    okLine.textContent = '\u2714 ' + line.ok;\r\n    terminalBody.appendChild(okLine);\r\n    tIdx++;\r\n    while(terminalBody.children.length > 8) terminalBody.removeChild(terminalBody.firstChild);\r\n    await new Promise(r => setTimeout(r, 900));\r\n  }\r\n}\r\nrunTerminal();\r\n<\/script>\r\n<\/body>\r\n<\/html><\/div>\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>\u0628\u06cc\u0646\u0627\u06cc\u06cc \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u0632\u06cc\u0631\u0632\u0645\u06cc\u0646\u06cc \u2014 \u0641\u0631\u0627\u062a\u0631 \u0627\u0632 \u062f\u06cc\u062f \u0627\u0646\u0633\u0627\u0646 \u0628\u06cc\u0646\u0627\u06cc\u06cc \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u0632\u06cc\u0631\u0632\u0645\u06cc\u0646\u06cc \u0641\u0631\u0627\u062a\u0631 \u0627\u0632 \u0633\u0637\u062d \u0632\u0645\u06cc\u0646 \u0631\u0627 \u0628\u0628\u06cc\u0646 \u0634\u0631\u0648\u0639 \u0627\u0633\u06a9\u0646 \u25b6 \u062f\u0627\u0634\u0628\u0648\u0631\u062f \u0632\u0646\u062f\u0647 \u0627\u0633\u06a9\u0646\u0631 \u0647\u0648\u0634\u0645\u0646\u062f \u0632\u06cc\u0631\u0632\u0645\u06cc\u0646 \u06cc\u06a9 \u0628\u0631\u0634 \u06a9\u0627\u0645\u0644 \u0627\u0632 \u0647\u0631\u0686\u06cc \u0632\u06cc\u0631 \u0633\u0637\u062d\u0647 \u067e\u0646\u062c \u0644\u0627\u06cc\u0647 \u0634\u0641\u0627\u0641\u060c \u0647\u0631\u06a9\u062f\u0648\u0645 \u0628\u0627 \u0646\u0648\u0631 \u0648 \u0634\u06cc\u0634\u0647 \u0627\u0632 \u062f\u06cc\u06af\u0631\u06cc \u062c\u062f\u0627 \u0634\u062f\u0647. \u0647\u0648\u0634 \u0631\u06cc\u0634\u0647 \u0647\u0631 \u0631\u06cc\u0634\u0647\u060c \u0631\u062f\u06cc\u0627\u0628\u06cc \u0648 \u0627\u0645\u062a\u06cc\u0627\u0632\u062f\u0647\u06cc \u0634\u062f\u0647 \u062a\u0634\u062e\u06cc\u0635 [&hellip;]<\/p>\n","protected":false},"author":9,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-2072","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/amir.farm\/fa\/wp-json\/wp\/v2\/pages\/2072","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/amir.farm\/fa\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/amir.farm\/fa\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/amir.farm\/fa\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/amir.farm\/fa\/wp-json\/wp\/v2\/comments?post=2072"}],"version-history":[{"count":4,"href":"https:\/\/amir.farm\/fa\/wp-json\/wp\/v2\/pages\/2072\/revisions"}],"predecessor-version":[{"id":2076,"href":"https:\/\/amir.farm\/fa\/wp-json\/wp\/v2\/pages\/2072\/revisions\/2076"}],"wp:attachment":[{"href":"https:\/\/amir.farm\/fa\/wp-json\/wp\/v2\/media?parent=2072"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}