<?php
// DOSYA: sera-similatoru.php
// ZYRRA AI — PROFESYONEL ÇİFTÇİ SİMÜLATÖRÜ v9.1 (FULL SÜRÜM)
// Aydınlık Tema, Kategori Popupları, Full Hesaplama, Finans, Orijinal Traktör

if (session_status() === PHP_SESSION_NONE) { session_start(); }
require_once 'includes/db.php';

$customer_id = $_SESSION['customer_id'] ?? $_SESSION['user_id'] ?? $_SESSION['uye_id'] ?? $_SESSION['id'] ?? 0;
$is_logged_in = ($customer_id > 0);

$origami_moduller = ['top'=>[],'content_top'=>[],'content_bottom'=>[],'bottom'=>[],'column_left'=>[],'column_right'=>[]];
try {
    $q = $db->prepare("SELECT * FROM origami_sayfa_duzeni WHERE sayfa_tipi='sera-similatoru' AND durum=1 ORDER BY sira ASC");
    $q->execute();
    while($m=$q->fetch(PDO::FETCH_ASSOC)) $origami_moduller[$m['konum']][] = $m;
} catch(Exception $e) {}

function renderOrigamiModule($modul) {
    global $db,$customer_id,$is_logged_in;
    $ayarlar = json_decode($modul['ayarlar_json'],true);
    $modul_tipi = $modul['modul_tipi'];
    $gizle_class = '';
    if(isset($ayarlar['mobil_gizle'])&&$ayarlar['mobil_gizle']==1) $gizle_class.=' d-none d-md-block';
    if(isset($ayarlar['masaustu_gizle'])&&$ayarlar['masaustu_gizle']==1) $gizle_class.=' d-block d-md-none';
    echo "<div class='origami-module-wrapper {$gizle_class}'>";
    $paths = [__DIR__.'/moduller/'.$modul_tipi.'.php',__DIR__.'/modules/'.$modul_tipi.'.php',__DIR__.'/includes/moduller/'.$modul_tipi.'.php',__DIR__.'/tema/moduller/'.$modul_tipi.'.php',__DIR__.'/inc/moduller/'.$modul_tipi.'.php'];
    $found = false;
    foreach($paths as $p){if(file_exists($p)){include $p;$found=true;break;}}
    if(!$found&&$modul_tipi=='html'&&isset($ayarlar['kod'])) echo $ayarlar['kod'];
    echo "</div>";
}

// Gerekli Tablolar
try {
    $db->exec("CREATE TABLE IF NOT EXISTS `origami_sera_simulations`(`id` int(11) NOT NULL AUTO_INCREMENT,`customer_id` int(11) NOT NULL,`title` varchar(255) NOT NULL,`data_json` longtext NOT NULL,`created_at` timestamp DEFAULT CURRENT_TIMESTAMP,PRIMARY KEY(`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;");
    $db->exec("CREATE TABLE IF NOT EXISTS `origami_sera_stats`(`id` int(1) NOT NULL DEFAULT 1,`views` int(11) DEFAULT 0,`likes` int(11) DEFAULT 0,PRIMARY KEY(`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;");
    $db->exec("INSERT IGNORE INTO origami_sera_stats(id,views,likes) VALUES(1,0,0);");
    $db->exec("CREATE TABLE IF NOT EXISTS `origami_sera_active`(`session_id` varchar(100) NOT NULL,`last_seen` timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY(`session_id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;");
    $db->exec("CREATE TABLE IF NOT EXISTS `origami_sera_comments`(`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(255) NOT NULL,`email` varchar(255) DEFAULT NULL,`comment` text NOT NULL,`status` int(1) DEFAULT 1,`created_at` timestamp DEFAULT CURRENT_TIMESTAMP,PRIMARY KEY(`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;");
} catch(Exception $e) {}

// POST / İstatistik İşlemleri
if($_SERVER['REQUEST_METHOD']!=='POST'){
    if(!isset($_SESSION['sera_viewed'])){$db->exec("UPDATE origami_sera_stats SET views=views+1 WHERE id=1");$_SESSION['sera_viewed']=true;}
    $sid=session_id();
    $db->prepare("REPLACE INTO origami_sera_active(session_id,last_seen) VALUES(?,NOW())")->execute([$sid]);
    $db->exec("DELETE FROM origami_sera_active WHERE last_seen<NOW()-INTERVAL 5 MINUTE");
    $_SESSION['bot_num1']=rand(1,9);$_SESSION['bot_num2']=rand(1,9);
}

if($_SERVER['REQUEST_METHOD']==='POST'&&isset($_POST['action'])){
    if($_POST['action']==='zyrra_bulk_cart'){
        if(!isset($_SESSION['cart']))$_SESSION['cart']=[];
        if(isset($_POST['products'])&&is_array($_POST['products'])){
            foreach($_POST['products'] as $p){
                $pid=intval($p['id']);$pqty=intval($p['qty']);
                if($pid>0&&$pqty>0){
                    if(isset($_SESSION['cart'][$pid]))$_SESSION['cart'][$pid]['quantity']+=$pqty;
                    else $_SESSION['cart'][$pid]=['product_id'=>$pid,'quantity'=>$pqty];
                }
            }
        }
        header("Location: /cart.php");exit;
    }
    if($_POST['action']==='like_page'){
        header('Content-Type: application/json');
        if(isset($_SESSION['sera_liked'])){echo json_encode(['status'=>'error','msg'=>'Zaten beğendiniz.']);exit;}
        $db->exec("UPDATE origami_sera_stats SET likes=likes+1 WHERE id=1");$_SESSION['sera_liked']=true;
        echo json_encode(['status'=>'success','likes'=>$db->query("SELECT likes FROM origami_sera_stats WHERE id=1")->fetch(PDO::FETCH_ASSOC)['likes']]);exit;
    }
    if($_POST['action']==='submit_comment'){
        header('Content-Type: application/json');
        $name=htmlspecialchars(trim($_POST['name']??''));$email=htmlspecialchars(trim($_POST['email']??''));$comment=htmlspecialchars(trim($_POST['comment']??''));$bot_answer=intval($_POST['bot_answer']??0);
        if($bot_answer!==($_SESSION['bot_num1']+$_SESSION['bot_num2'])){echo json_encode(['status'=>'error','msg'=>'Güvenlik hatalı.']);exit;}
        if(empty($name)||empty($comment)){echo json_encode(['status'=>'error','msg'=>'Ad ve yorum gerekli.']);exit;}
        if($db->prepare("INSERT INTO origami_sera_comments(name,email,comment,status) VALUES(?,?,?,0)")->execute([$name,$email,$comment])){$_SESSION['bot_num1']=rand(1,9);$_SESSION['bot_num2']=rand(1,9);echo json_encode(['status'=>'success','msg'=>'Onay sürecine alındı.']);}else echo json_encode(['status'=>'error','msg'=>'Hata.']);
        exit;
    }
    if($_POST['action']==='save_sim'&&$is_logged_in){
        header('Content-Type: application/json');
        $title=htmlspecialchars(trim($_POST['title']));if(empty($title))$title="Simülasyon (".date('d.m.Y').")";
        $db->prepare("INSERT INTO origami_sera_simulations(customer_id,title,data_json) VALUES(?,?,?)")->execute([$customer_id,$title,$_POST['data_json']]);
        echo json_encode(['status'=>'success','msg'=>'Kaydedildi!']);exit;
    }
    if($_POST['action']==='delete_sim'&&$is_logged_in){
        header('Content-Type: application/json');
        $db->prepare("DELETE FROM origami_sera_simulations WHERE id=? AND customer_id=?")->execute([intval($_POST['sim_id']),$customer_id]);
        echo json_encode(['status'=>'success']);exit;
    }
}

// Veritabanından Verileri Çek
$page_stats=$db->query("SELECT * FROM origami_sera_stats WHERE id=1")->fetch(PDO::FETCH_ASSOC);
$active_users=$db->query("SELECT COUNT(*) as count FROM origami_sera_active")->fetch(PDO::FETCH_ASSOC)['count'];
$comments=$db->query("SELECT * FROM origami_sera_comments WHERE status=1 ORDER BY id DESC LIMIT 20")->fetchAll(PDO::FETCH_ASSOC);

// KATEGORİ VE ÜRÜNLERİ ÇEK (Popup İçin)
$kategoriler = []; $urunler = [];
try {
    $kategoriler = $db->query("SELECT * FROM categories WHERE status=1 ORDER BY sort_order ASC, name ASC")->fetchAll(PDO::FETCH_ASSOC);
    $urunler = $db->query("SELECT * FROM products WHERE status=1 ORDER BY name ASC")->fetchAll(PDO::FETCH_ASSOC);
} catch(Exception $e) {}

$kategori_urunleri = []; $islenen_urunler = [];
foreach($kategoriler as $kat) {
    $kategori_urunleri[$kat['id']] = [];
    foreach($urunler as $u) {
        if (!in_array($u['id'], $islenen_urunler)) {
            $cat_ids = explode(',', $u['category_id']);
            if (in_array($kat['id'], $cat_ids)) {
                $kategori_urunleri[$kat['id']][] = $u;
                $islenen_urunler[] = $u['id'];
            }
        }
    }
}

$hpa_product=null;try{$hpa_product=$db->query("SELECT * FROM products WHERE status=1 AND name LIKE'%HPA%'LIMIT 1")->fetch(PDO::FETCH_ASSOC);}catch(Exception $e){}
$saved_sims=[];if($is_logged_in){try{$saved_sims=$db->prepare("SELECT * FROM origami_sera_simulations WHERE customer_id=? ORDER BY id DESC LIMIT 10");$saved_sims->execute([$customer_id]);$saved_sims=$saved_sims->fetchAll(PDO::FETCH_ASSOC);}catch(Exception $e){}}

$page_title="Tarımsal Üretim Planlama & Çiftçi Simülatörü";
require_once 'includes/header.php';
?>
<?php foreach($origami_moduller['top'] as $modul){renderOrigamiModule($modul);} ?>

<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700;800;900&family=JetBrains+Mono:wght@400;500;600;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css">

<style>
/* ═══════════════════════════════════════════════════════════
   ZYRRA v9.1 — AYDINLIK & PROFESYONEL TEMA (FULL ÖZELLİK)
   Outfit Font, Açık Renkler, Tam Hesaplama Sistemi
   ═══════════════════════════════════════════════════════════ */
:root {
  /* Aydınlık Tema Renkleri */
  --bg: #f8fafc;
  --bg2: #ffffff;
  --bg3: #f1f5f9;
  --surface: #ffffff;
  --surface2: #f8fafc;
  --border: #e2e8f0;
  --border2: #cbd5e1;
  --text: #0f172a;
  --text2: #334155;
  --text3: #64748b;
  --green: #10b981;
  --green2: #059669;
  --green-glow: #d1fae5;
  --green-glow2: #ecfdf5;
  --blue: #3b82f6;
  --blue-glow: #eff6ff;
  --amber: #f59e0b;
  --amber-glow: #fef3c7;
  --red: #ef4444;
  --red-glow: #fee2e2;
  
  --r1: 8px; --r2: 12px; --r3: 20px; --r4: 24px; --rfull: 9999px;
  --s1: 0 2px 8px rgba(0,0,0,0.04);
  --s2: 0 8px 24px rgba(0,0,0,0.06);
  --s3: 0 15px 40px rgba(0,0,0,0.1);
  --tr: 200ms cubic-bezier(0.4,0,0.2,1);
  
  --fb: 'Outfit', sans-serif;
  --fd: 'Outfit', sans-serif;
  --fm: 'JetBrains Mono', monospace;
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--text);font-family:var(--fb);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;overflow-x:hidden}
a{text-decoration:none;color:inherit}button{cursor:pointer;font-family:inherit;border:none;background:none}
input,select,textarea{font-family:inherit}

@keyframes fadeUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.5}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes tractorMove{0%{transform:translateX(-120px)}100%{transform:translateX(calc(100% + 120px))}}
@keyframes smoke{0%{opacity:.6;transform:translate(0,0) scale(1)}100%{opacity:0;transform:translate(15px,-30px) scale(2.5)}}
@keyframes wheelSpin{to{transform:rotate(360deg)}}
@keyframes soilScroll{0%{transform:translateX(100%)}100%{transform:translateX(-100%)}}

.au{animation:fadeUp .5s var(--tr) both}.au1{animation-delay:.05s}.au2{animation-delay:.1s}.au3{animation-delay:.15s}.au4{animation-delay:.2s}.au5{animation-delay:.25s}

/* NAV */
.f8-nav{
  position:sticky;top:0;z-index:100;background:rgba(255,255,255,0.95);backdrop-filter:blur(10px);
  border-bottom:1px solid var(--border);padding:0 20px;height:55px;display:flex;align-items:center;justify-content:space-between;
}
.f8-logo{font-weight:800;font-size:1rem;color:var(--green);display:flex;align-items:center;gap:8px;}
.f8-logo-icon{width:30px;height:30px;background:var(--green);border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:14px;color:#fff;box-shadow:0 4px 10px rgba(16,185,129,0.3);}
.f8-nav-actions{display:flex;align-items:center;gap:8px}
.f8-btn{width:36px;height:36px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:14px;color:var(--text2);transition:var(--tr);border:1px solid transparent;background:var(--bg3)}
.f8-btn:hover{background:var(--surface);color:var(--text);border-color:var(--border)}
.f8-btn.accent{background:var(--green);color:#fff;border-color:var(--green)}
.f8-btn.accent:hover{background:var(--green2);}
.f8-nav-stats{display:none;align-items:center;gap:15px}
@media(min-width:768px){.f8-nav-stats{display:flex}}
.f8-stat{font-size:12px;font-weight:600;color:var(--text3);display:flex;align-items:center;gap:5px;font-family:var(--fb)}
.f8-stat strong{color:var(--text);font-family:var(--fm)}
.f8-dot{width:6px;height:6px;border-radius:50%;background:var(--green);animation:pulse 2s infinite;}

/* HERO */
.f8-hero{
  padding:40px 20px;text-align:center;background:#fff;border-bottom:1px solid var(--border);box-shadow:var(--s1);margin-bottom:30px;
}
.f8-hero-inner{max-width:600px;margin:0 auto;}
.f8-badge{display:inline-flex;align-items:center;gap:6px;background:var(--green-glow);border:1px solid var(--border);border-radius:var(--rfull);padding:5px 14px;font-size:10px;font-weight:700;color:var(--green2);text-transform:uppercase;letter-spacing:1px;margin-bottom:15px;}
.f8-badge-dot{width:6px;height:6px;border-radius:50%;background:var(--green);animation:pulse 2s infinite;}
.f8-hero h1{font-size:clamp(1.6rem,4vw,2.4rem);font-weight:800;line-height:1.2;margin-bottom:10px;color:var(--text);letter-spacing:-0.5px}
.f8-hero h1 em{font-style:normal;color:var(--green)}
.f8-hero-desc{font-size:1rem;color:var(--text3);max-width:500px;margin:0 auto 20px;}
.f8-hero-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.f8-btn2{display:inline-flex;align-items:center;gap:6px;padding:10px 20px;border-radius:var(--rfull);font-size:13px;font-weight:700;transition:var(--tr);border:1px solid transparent;}
.f8-btn2-primary{background:var(--green);color:#fff;box-shadow:0 4px 15px rgba(16,185,129,0.3)}
.f8-btn2-primary:hover{background:var(--green2);transform:translateY(-2px);}
.f8-btn2-ghost{background:var(--surface);border-color:var(--border);color:var(--text2)}
.f8-btn2-ghost:hover{background:var(--bg3);color:var(--text);}

/* MAIN & GRID */
.f8-main{max-width:1250px;margin:0 auto;padding:0 15px 60px}
.f8-grid{display:grid;grid-template-columns:1fr;gap:20px}
@media(min-width:960px){.f8-grid{grid-template-columns:350px 1fr}}
.f8-left{display:flex;flex-direction:column;gap:20px}
.f8-right{display:flex;flex-direction:column;gap:20px}

/* KART TASARIMI */
.f8-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r3);overflow:hidden;box-shadow:var(--s1);}
.f8-card-head{display:flex;align-items:center;justify-content:space-between;padding:15px 20px;border-bottom:1px solid var(--border);background:#f8fafc}
.f8-card-title{font-size:1rem;font-weight:800;color:var(--text);display:flex;align-items:center;gap:8px;}
.f8-card-icon{width:28px;height:28px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:13px}
.f8-card-icon.g{background:var(--green-glow);color:var(--green2)}
.f8-card-icon.b{background:var(--blue-glow);color:var(--blue)}
.f8-card-icon.a{background:var(--amber-glow);color:var(--amber)}
.f8-card-icon.r{background:var(--red-glow);color:var(--red)}
.f8-card-body{padding:20px}

/* ARAZİ */
.terrain-group{display:flex;flex-direction:column;gap:15px}
.terrain-label{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.terrain-label span{font-size:0.85rem;font-weight:700;color:var(--text2)}
.terrain-val{font-family:var(--fm);font-size:0.85rem;font-weight:800;color:var(--green2);background:var(--green-glow);padding:3px 10px;border-radius:var(--rfull)}
.f8-range{-webkit-appearance:none;width:100%;height:6px;border-radius:3px;background:var(--border);outline:none;transition:var(--tr)}
.f8-range::-webkit-slider-thumb{-webkit-appearance:none;width:20px;height:20px;border-radius:50%;background:var(--green);border:2px solid #fff;box-shadow:0 2px 5px rgba(0,0,0,0.2);cursor:pointer}
.area-box{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:15px;background:var(--bg3);border:1px dashed var(--border2);border-radius:var(--r2);margin-top:5px}
.area-box-num{font-family:var(--fm);font-size:1.6rem;font-weight:800;color:var(--green2);line-height:1}
.area-box-unit{font-size:0.75rem;font-weight:600;color:var(--text3);margin-top:2px}

/* KATEGORİ BUTONLARI (SOL PANEL) */
.cat-list { display: flex; flex-direction: column; gap: 8px; }
.cat-btn {
    width: 100%; text-align: left; padding: 12px 15px;
    background: #fff; border: 1px solid var(--border);
    border-radius: var(--r1); font-family: var(--fb);
    font-size: 0.9rem; font-weight: 600; color: var(--text2);
    cursor: pointer; transition: 0.2s;
    display: flex; justify-content: space-between; align-items: center;
}
.cat-btn:hover { background: var(--green-glow); border-color: var(--green); color: var(--green2); }
.cat-btn i { color: var(--text3); }

/* SEÇİLEN ÜRÜNLER (SOL PANEL) */
.sel-items-wrap { margin-top: 15px; display:flex; flex-direction:column; gap:8px;}
.sel-item {
    background: #fff; border: 1px solid var(--border); border-left: 3px solid var(--green);
    padding: 10px 12px; border-radius: var(--r1);
    display: flex; justify-content: space-between; align-items: center;
}
.sel-item-info { flex: 1; }
.sel-item-name { font-weight: 700; font-size: 0.8rem; color: var(--text); }
.sel-item-price { font-size: 0.7rem; color: var(--text3); font-family:var(--fm); }
.sel-item-qty { font-weight: 800; color: var(--green2); font-size: 0.9rem; font-family:var(--fm);}

/* SİMÜLATÖR (CANVAS & TRAKTÖR) */
.sim-module{background:#fff;border:1px solid var(--border);border-radius:var(--r3);overflow:hidden;position:relative;box-shadow:var(--s1)}
.sim-head{display:flex;align-items:center;justify-content:space-between;padding:12px 20px;border-bottom:1px solid var(--border);background:#f8fafc}
.sim-title{font-size:0.9rem;font-weight:800;color:var(--text);display:flex;align-items:center;gap:8px;text-transform:uppercase}
.sim-area{font-family:var(--fm);font-size:0.8rem;font-weight:800;color:var(--green2);background:var(--green-glow);padding:3px 10px;border-radius:var(--rfull)}

/* CANVAS VE ARKA PLAN (Aydınlık Toprak/Gökyüzü) */
.sim-wrap{
  position:relative;width:100%;height:450px;overflow:hidden;
  background:linear-gradient(180deg,#87CEEB 0%,#E0F6FF 40%,#8B5A2B 40%,#654321 100%); /* Açık Mavi -> Açık Toprak */
  pointer-events:none;user-select:none;
}
@media(max-width:959px){.sim-wrap{height:320px}}
.sim-wrap canvas{display:block;width:100%;height:100%;position:absolute;top:0;left:0}

/* V8 ORİJİNAL HTML TRAKTÖR (Aydınlık Tema Renkleriyle) */
.tractor-container{
  position:absolute;bottom:28%;left:0;right:0;height:60px;
  z-index:4;pointer-events:none;overflow:hidden;
}
.tractor-wrapper{
  position:absolute;bottom:0;
  animation:tractorMove 18s linear infinite;
}
.tractor-body{ width:70px;height:35px;position:relative; }
.tractor-cabin{
  position:absolute;bottom:12px;left:8px; width:38px;height:22px;
  background:linear-gradient(180deg,#dc2626,#991b1b); /* Kırmızı Traktör */
  border-radius:4px 4px 0 0; border:1px solid #7f1d1d;
}
.tractor-cabin::before{
  content:'';position:absolute;top:3px;left:3px;right:3px;bottom:3px;
  background:rgba(255,255,255,0.4);border-radius:2px; /* Cam */
}
.tractor-hood{
  position:absolute;bottom:12px;left:44px; width:24px;height:14px;
  background:linear-gradient(180deg,#dc2626,#991b1b);
  border-radius:3px 6px 0 0; border:1px solid #7f1d1d;
}
.tractor-exhaust{
  position:absolute;bottom:30px;left:52px; width:4px;height:10px;
  background:#333;border-radius:2px;
}
.smoke-particle{
  position:absolute;bottom:40px;left:50px; width:6px;height:6px;
  background:rgba(80,80,80,0.5); border-radius:50%;
  animation:smoke 1.5s ease-out infinite;
}
.smoke-particle:nth-child(2){animation-delay:.5s;left:52px}
.smoke-particle:nth-child(3){animation-delay:1s;left:48px}
.tractor-wheel{
  position:absolute;bottom:0; width:18px;height:18px;
  background:#1e293b;border-radius:50%; border:3px solid #0f172a;
  animation:wheelSpin 1s linear infinite;
}
.tractor-wheel::after{
  content:'';position:absolute;inset:3px; border-radius:50%;border:1px dashed #64748b;
}
.tractor-wheel.rear{left:10px;width:20px;height:20px}
.tractor-wheel.front{left:48px;width:14px;height:14px;bottom:2px}
.tractor-farmer{
  position:absolute;bottom:34px;left:20px; width:10px;height:14px;
}
.farmer-head{
  width:8px;height:8px;background:#fcd34d;border-radius:50%; /* Sarı kafa */
  position:absolute;top:0;left:1px;
}
.farmer-hat{
  position:absolute;top:-3px;left:-1px; width:12px;height:4px;
  background:#78350f;border-radius:3px 3px 0 0; /* Kahve Şapka */
}
.farmer-body{
  position:absolute;top:7px;left:1px; width:8px;height:7px;
  background:#2563eb;border-radius:2px; /* Mavi tulum */
}
.soil-lines{
  position:absolute;bottom:15%;left:0;right:0;height:40px;
  z-index:2;pointer-events:none;overflow:hidden;
}
.soil-line{
  position:absolute;height:2px; background:rgba(0,0,0,0.15);
  animation:soilScroll 3s linear infinite;
}

.sim-empty{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:var(--text2);font-weight:700;font-size:1rem;background:rgba(255,255,255,0.85);backdrop-filter:blur(5px);z-index:5}
.sim-empty i{font-size:3rem;color:var(--border2)}
.sim-empty span{font-size:0.8rem;color:var(--text3);font-weight:500;}

/* HAVA DURUMU BAR */
.weather-bar{display:flex;flex-wrap:wrap;gap:10px;padding:15px 20px;border-bottom:1px solid var(--border);background:#f8fafc}
.wb-card{flex:1;min-width:100px;background:#fff;border:1px solid var(--border);border-radius:var(--r1);padding:10px;display:flex;align-items:center;gap:10px;}
.wb-icon{font-size:1.5rem;line-height:1}
.wb-info{flex:1}
.wb-label{font-size:0.65rem;font-weight:700;color:var(--text3);text-transform:uppercase;margin-bottom:2px}
.wb-value{font-family:var(--fm);font-size:1rem;font-weight:800;color:var(--text);line-height:1}
.wb-clock{flex:0 0 auto;min-width:120px;background:#fff;border:1px solid var(--border);border-radius:var(--r1);padding:10px;text-align:center}
.wb-clock-time{font-family:var(--fm);font-size:1.1rem;font-weight:800;color:var(--green2)}
.wb-clock-date{font-size:0.65rem;color:var(--text3);font-weight:600;}

/* SONUÇLAR */
.f8-results{display:grid;grid-template-columns:1fr 1fr;gap:15px}
.f8-res{background:#fff;border:1px solid var(--border);border-radius:var(--r3);padding:20px;text-align:center;box-shadow:var(--s1)}
.f8-res-label{font-size:0.75rem;font-weight:800;text-transform:uppercase;color:var(--text3);margin-bottom:5px}
.f8-res-val{font-family:var(--fm);font-size:1.8rem;font-weight:800;color:var(--text);line-height:1}
.f8-res.g .f8-res-label{color:var(--green2)}.f8-res.g .f8-res-val{color:var(--green2)}
.f8-res.bl .f8-res-label{color:var(--blue)}.f8-res.bl .f8-res-val{color:var(--blue)}
.f8-res-sub{font-size:0.7rem;color:var(--text3);margin-top:5px;font-weight:600;}

/* SEPET & HPA */
.summary-list{display:flex;flex-direction:column;gap:0; margin-bottom:15px;}
.summary-row{display:flex;align-items:center;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--border)}
.summary-row-label{font-size:0.85rem;color:var(--text2);font-weight:600}
.summary-row-value{font-family:var(--fm);font-size:0.9rem;font-weight:800;color:var(--text)}

.hpa-box{display:flex;align-items:flex-start;gap:12px;padding:15px;background:var(--blue-glow);border:1px dashed #93c5fd;border-radius:var(--r2);margin-bottom:20px}
.hpa-check{width:22px;height:22px;border-radius:6px;border:2px solid #93c5fd;flex-shrink:0;display:flex;align-items:center;justify-content:center;cursor:pointer;background:#fff;transition:0.2s}
.hpa-check.ck{background:var(--blue);border-color:var(--blue)}
.hpa-check i{opacity:0;color:#fff;font-size:12px;transition:0.2s}
.hpa-check.ck i{opacity:1}
.hpa-info{flex:1}
.hpa-title{font-size:0.85rem;font-weight:800;color:var(--text);margin-bottom:3px}
.hpa-desc{font-size:0.75rem;color:var(--text2);line-height:1.4}
.hpa-price{font-weight:800;color:var(--blue);font-family:var(--fm)}

.cart-total-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:15px;padding-top:15px;border-top:2px solid var(--border)}
.cart-total-label{font-size:1rem;font-weight:800;color:var(--text)}
.cart-total-val{font-family:var(--fm);font-size:1.6rem;font-weight:800;color:var(--green2)}
.cart-btn{width:100%;padding:15px;background:var(--green);color:#fff;border:none;border-radius:var(--r2);font-size:1rem;font-weight:800;display:flex;align-items:center;justify-content:center;gap:8px;box-shadow:0 5px 15px rgba(16,185,129,0.3);transition:var(--tr)}
.cart-btn:hover{background:var(--green2);transform:translateY(-2px)}

/* FİNANS (KÂR / ZARAR) */
.fin-section{margin-top:40px; background:#fff; padding:30px; border-radius:var(--r3); box-shadow:var(--s1); border:1px solid var(--border);}
.fin-header{text-align:center;margin-bottom:25px}
.fin-title{font-size:1.6rem;font-weight:800;color:var(--text);margin-bottom:5px}
.fin-sub{font-size:0.9rem;color:var(--text3)}
.fin-grid{display:grid;grid-template-columns:1fr;gap:20px}
@media(min-width:768px){.fin-grid{grid-template-columns:1fr 1fr 1fr}}
.fin-col-head{display:flex;align-items:center;gap:8px;padding-bottom:10px;margin-bottom:15px;border-bottom:2px solid var(--bg3)}
.fin-col-title{font-size:0.9rem;font-weight:800;text-transform:uppercase}
.fin-col-head.red .fin-col-title{color:var(--red)}
.fin-col-head.green .fin-col-title{color:var(--green2)}
.fin-col-head.blue .fin-col-title{color:var(--blue)}
.fin-field{margin-bottom:12px}
.fin-label{font-size:0.75rem;font-weight:700;color:var(--text2);margin-bottom:5px;display:block}
.fin-input{width:100%;padding:10px 15px;background:var(--bg3);border:1px solid var(--border);border-radius:var(--r1);font-size:0.9rem;font-weight:700;color:var(--text);outline:none;font-family:var(--fm);transition:0.2s}
.fin-input:focus{border-color:var(--green);background:#fff;box-shadow:0 0 0 3px var(--green-glow)}
.fin-input:read-only{background:var(--red-glow);color:var(--red);border-color:transparent}
.fin-select{width:100%;padding:10px 15px;background:var(--bg3);border:1px solid var(--border);border-radius:var(--r1);font-size:0.9rem;font-weight:700;color:var(--text);outline:none;}
.profit-box{background:var(--bg3);border:2px dashed var(--border2);border-radius:var(--r2);padding:30px 20px;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%; transition:0.3s;}
.profit-box.success{background:var(--green-glow2);border-color:var(--green);border-style:solid}
.profit-box.danger{background:var(--red-glow);border-color:var(--red);border-style:solid}
.profit-box.neutral{background:var(--amber-glow);border-color:var(--amber);border-style:solid}
.profit-icon{font-size:2rem;margin-bottom:10px;opacity:0.5;}
.profit-box.success .profit-icon,.profit-box.danger .profit-icon{opacity:1}
.profit-title{font-size:0.8rem;font-weight:800;text-transform:uppercase;color:var(--text3);margin-bottom:10px}
.profit-amount{font-family:var(--fm);font-size:2rem;font-weight:800;line-height:1;color:var(--text3)}
.profit-box.success .profit-title, .profit-box.success .profit-amount{color:var(--green2)}
.profit-box.danger .profit-title, .profit-box.danger .profit-amount{color:var(--red)}

/* MODALLAR (KATEGORİ İÇERİKLERİ İÇİN) */
.zy-modal-backdrop { position:fixed; inset:0; background:rgba(15,23,42,0.6); backdrop-filter:blur(5px); z-index:9998; display:none; align-items:center; justify-content:center; padding:20px; }
.zy-modal-backdrop.show { display:flex; }
.zy-modal { background:#fff; width:100%; max-width:600px; border-radius:var(--r3); box-shadow:var(--s3); max-height:85vh; display:flex; flex-direction:column; animation:fadeUp 0.3s ease forwards; }
.zy-modal-head { padding:20px 25px; border-bottom:1px solid var(--border); display:flex; justify-content:space-between; align-items:center; background:#f8fafc; border-radius:var(--r3) var(--r3) 0 0; }
.zy-modal-head h3 { margin:0; font-size:1.2rem; font-weight:800; color:var(--text); }
.zy-modal-close { background:#fff; border:1px solid var(--border); width:32px; height:32px; border-radius:50%; color:var(--text3); cursor:pointer; transition:0.2s; display:flex; align-items:center; justify-content:center;}
.zy-modal-close:hover { background:var(--red-glow); color:var(--red); border-color:var(--red); }
.zy-modal-body { padding:20px 25px; overflow-y:auto; flex:1; display:flex; flex-direction:column; gap:10px; }
.modal-prod-item { display:flex; align-items:center; justify-content:space-between; padding:15px; border:1px solid var(--border); border-radius:var(--r2); transition:0.2s; }
.modal-prod-item:hover { border-color:var(--green); background:var(--green-glow2); }
.modal-prod-info h5 { margin:0 0 5px 0; font-size:0.95rem; font-weight:700; color:var(--text); }
.modal-prod-info p { margin:0; font-size:0.85rem; color:var(--green2); font-weight:800; font-family:var(--fm); }
.modal-prod-action { display:flex; align-items:center; gap:10px; }
.qty-ctrl { display:flex; align-items:center; border:1px solid var(--border); border-radius:var(--r1); overflow:hidden; background:#fff; }
.qty-btn { background:#f8fafc; border:none; padding:8px 12px; cursor:pointer; font-weight:800; color:var(--text2); }
.qty-btn:hover { background:var(--border); }
.qty-input { width:55px; text-align:center; border:none; border-left:1px solid var(--border); border-right:1px solid var(--border); font-weight:800; font-size:0.9rem; font-family:var(--fm); -moz-appearance:textfield; }
.qty-input::-webkit-outer-spin-button, .qty-input::-webkit-inner-spin-button { -webkit-appearance:none; margin:0; }
.add-btn { background:var(--green); color:#fff; border:none; padding:10px 20px; border-radius:var(--r1); font-weight:800; cursor:pointer; transition:0.2s; width:100px; text-align:center;}
.add-btn:hover { background:var(--green2); }
.add-btn.added { background:var(--bg3); color:var(--text3); border:1px solid var(--border); }

/* MOBİL ALT BAR */
.mobile-cart-bar { display:none; position:fixed; bottom:0; left:0; right:0; background:#fff; border-top:1px solid var(--border); padding:12px 20px; z-index:99; box-shadow:0 -4px 15px rgba(0,0,0,0.05); }
@media(max-width:992px) { .mobile-cart-bar { display:flex; justify-content:space-between; align-items:center; } .f8-main { padding-bottom:100px; } }
.m-bar-info span { display:block; font-size:0.75rem; color:var(--text3); font-weight:700; }
.m-bar-info strong { font-size:1.2rem; font-weight:800; color:var(--green2); line-height:1; font-family:var(--fm); }
.m-bar-btn { background:var(--green); color:#fff; border:none; padding:12px 24px; border-radius:50px; font-weight:800; font-size:0.9rem; }
</style>

<nav class="f8-nav">
  <div class="f8-logo"><div class="f8-logo-icon"><i class="fas fa-leaf"></i></div><span>ZYRRA</span><span style="font-size:9px;font-weight:800;color:var(--green2);background:var(--green-glow);padding:2px 6px;border-radius:10px;margin-left:5px;">v9.1</span></div>
  <div class="f8-nav-stats">
    <div class="f8-stat"><strong><?=number_format($page_stats['views'])?></strong> kullanım</div>
    <div class="f8-stat"><span class="f8-dot"></span> <strong><?=$active_users?></strong> aktif</div>
  </div>
  <div class="f8-nav-actions">
    <button class="f8-btn" onclick="window.location.reload()" title="Sıfırla"><i class="fas fa-redo"></i></button>
  </div>
</nav>

<section class="f8-hero">
  <div class="f8-hero-inner au">
    <div class="f8-badge"><span class="f8-badge-dot"></span> ÇİFTÇİ SİMÜLATÖRÜ</div>
    <h1>Tarlanızı <em>Canlı</em> Planlayın</h1>
    <p class="f8-hero-desc">Gerçekçi tarla simülasyonu ile ekim planınızı yapın, boru ihtiyacını ve kâr/zarar maliyetinizi anında hesaplayın.</p>
  </div>
</section>

<?php foreach($origami_moduller['content_top'] as $modul){renderOrigamiModule($modul);} ?>

<main class="f8-main">
  <div class="f8-grid">
    
    <div class="f8-left">
      <div class="f8-card au au1">
        <div class="f8-card-head"><div class="f8-card-title"><div class="f8-card-icon b"><i class="fas fa-ruler-combined"></i></div>Arazi Ölçüleri</div></div>
        <div class="f8-card-body">
          <div class="terrain-group">
            <div class="terrain-item"><div class="terrain-label"><span>Genişlik</span><span class="terrain-val" id="valWidth">20 m</span></div><input type="range" class="f8-range" id="inpWidth" min="4" max="100" value="20" step="1"></div>
            <div class="terrain-item"><div class="terrain-label"><span>Uzunluk</span><span class="terrain-val" id="valLength">50 m</span></div><input type="range" class="f8-range" id="inpLength" min="10" max="500" value="50" step="5"></div>
            <div class="area-box"><span class="area-box-num" id="toplamAlan">1.000</span><span class="area-box-unit">Toplam Metrekare (m²)</span></div>
          </div>
        </div>
      </div>

      <div class="f8-card au au2">
        <div class="f8-card-head"><div class="f8-card-title"><div class="f8-card-icon g"><i class="fas fa-seedling"></i></div>Fide Seçimi</div></div>
        <div class="f8-card-body">
          <?php if(empty($kategoriler)): ?><p class="text-muted small">Kategori bulunamadı.</p><?php else: ?>
          <div class="cat-list">
            <?php foreach($kategoriler as $kat): if(empty($kategori_urunleri[$kat['id']])) continue; ?>
              <button class="cat-btn" onclick="openCatModal('catModal_<?= $kat['id'] ?>')">
                <?= htmlspecialchars($kat['name']) ?> <i class="fas fa-chevron-right"></i>
              </button>
            <?php endforeach; ?>
          </div>
          <?php endif; ?>

          <div class="sel-items-wrap" id="sidebarSelectedItems"></div>
        </div>
      </div>
    </div>

    <div class="f8-right">
      
      <div class="sim-module au au3">
        <div class="weather-bar" id="weatherBar">
          <div class="wb-loading" id="weatherLoading" style="font-size:0.8rem; font-weight:600; color:var(--text3)"><i class="fas fa-spinner fa-spin"></i> Hava durumu yükleniyor...</div>
          <div id="weatherCards" style="display:none;width:100%">
            <div style="display:flex;flex-wrap:wrap;gap:10px">
              <div class="wb-card"><span class="wb-icon" id="weatherIcon">☀️</span><div class="wb-info"><div class="wb-label">Sıcaklık</div><div class="wb-value" id="weatherTemp">--°C</div></div></div>
              <div class="wb-card"><span class="wb-icon">💧</span><div class="wb-info"><div class="wb-label">Nem</div><div class="wb-value" style="color:var(--blue)" id="weatherHumidity">--%</div></div></div>
              <div class="wb-card"><span class="wb-icon">💨</span><div class="wb-info"><div class="wb-label">Rüzgar</div><div class="wb-value" style="color:var(--amber)" id="weatherWind">-- km/s</div></div></div>
              <div class="wb-clock"><div class="wb-clock-time" id="clockTime">--:--:--</div><div class="wb-clock-date" id="clockDate">--</div></div>
            </div>
          </div>
        </div>

        <div class="sim-head"><div class="sim-title"><i class="fas fa-layer-group text-success"></i> Tarla Planı</div><div class="sim-area"><span id="simAreaDisplay">1.000</span> m²</div></div>

        <div class="sim-wrap" id="simContainer">
          <canvas id="simCanvas"></canvas>

          <div class="tractor-container" id="tractorContainer" style="display:none">
            <div class="tractor-wrapper" id="tractorWrapper">
              <div class="tractor-body">
                <div class="tractor-cabin"></div>
                <div class="tractor-hood"></div>
                <div class="tractor-exhaust"></div>
                <div class="smoke-particle"></div><div class="smoke-particle"></div><div class="smoke-particle"></div>
                <div class="tractor-farmer"><div class="farmer-head"><div class="farmer-hat"></div></div><div class="farmer-body"></div></div>
                <div class="tractor-wheel rear"></div>
                <div class="tractor-wheel front"></div>
              </div>
            </div>
          </div>
          <div class="sim-empty" id="simEmpty">
            <i class="fas fa-tractor"></i>
            <div>Fide seçerek simülasyonu başlatın.</div>
            <span>Sol panelden kategorilere tıklayın.</span>
          </div>
        </div>
      </div>

      <div class="f8-results au au4">
        <div class="f8-res g"><div class="f8-res-label">Toplam Fide</div><div class="f8-res-val" id="resFide">0</div><div class="f8-res-sub">Gerekli Adet</div></div>
        <div class="f8-res bl"><div class="f8-res-label">Damlama Borusu</div><div class="f8-res-val" id="resBoru">0</div><div class="f8-res-sub">Metre İhtiyaç</div></div>
      </div>

      <div class="f8-card au au5">
        <div class="f8-card-head"><div class="f8-card-title"><div class="f8-card-icon g"><i class="fas fa-shopping-cart"></i></div>Sipariş Özeti</div></div>
        <div class="f8-card-body">
          <div class="summary-list" id="summaryList"><div style="text-align:center;padding:10px;color:var(--text3);font-size:0.85rem;font-weight:600;">Sepetiniz boş.</div></div>
          
          <?php if($hpa_product): $hpa_price=($hpa_product['discount_price']>0)?$hpa_product['discount_price']:$hpa_product['price']; ?>
          <div class="hpa-box">
            <div class="hpa-check" id="hpaUpsell" onclick="toggleHpa(this)" data-id="<?=$hpa_product['id']?>" data-price="<?=$hpa_price?>"><i class="fas fa-check"></i></div>
            <div class="hpa-info"><div class="hpa-title"><i class="fas fa-shield-alt text-primary"></i> Toprak Dezenfeksiyonu Tavsiyesi</div><div class="hpa-desc"><?=htmlspecialchars($hpa_product['name'])?> — <span class="hpa-price">+<?=number_format($hpa_price,2)?> ₺</span></div></div>
          </div>
          <?php endif; ?>
          
          <form method="POST" action="" id="cartSubmitForm">
            <input type="hidden" name="action" value="zyrra_bulk_cart">
            <div id="dynamicFormInputs"></div>
            <div class="cart-total-row">
                <span class="cart-total-label">Toplam Fide Maliyeti</span>
                <span class="cart-total-val" id="resMaliyet">0,00 ₺</span>
            </div>
            <button type="button" onclick="topluSepeteEkle()" class="cart-btn" id="btnSepet">🛒 Güvenle Sepete Ekle</button>
          </form>
        </div>
      </div>

      <section class="fin-section au au5">
        <div class="fin-header"><h2 class="fin-title">Kâr & Zarar Hesaplayıcı</h2><p class="fin-sub">Tarlanızı ektikten sonra oluşacak gider ve muhtemel gelir tablonuz.</p></div>
        <div class="fin-grid">
          <div>
            <div class="fin-col-head red"><i class="fas fa-arrow-trend-down text-danger"></i><span class="fin-col-title">Giderler</span></div>
            <div class="fin-field"><label class="fin-label">Fide (Sistemden Çekildi)</label><input type="number" class="fin-input" id="costFide" readonly value="0"></div>
            <div class="fin-field"><label class="fin-label">Damlama Borusu (₺)</label><input type="number" class="fin-input fin-calc" id="costBoru" placeholder="Tahmini boru masrafı"></div>
            <div class="fin-field"><label class="fin-label">Gübre (₺)</label><input type="number" class="fin-input fin-calc" id="costGubre" placeholder="Tahmini gübre masrafı"></div>
            <div class="fin-field"><label class="fin-label">İlaç & İşçilik (₺)</label><input type="number" class="fin-input fin-calc" id="costIlacIsci" placeholder="Diğer masraflar"></div>
          </div>
          <div>
            <div class="fin-col-head green"><i class="fas fa-arrow-trend-up text-success"></i><span class="fin-col-title">Gelirler</span></div>
            <div class="fin-field"><label class="fin-label">Satış Birimi</label><select class="fin-select" id="saleUnit"><option value="kg">Kilogram (Kg)</option><option value="adet">Adet</option></select></div>
            <div class="fin-field"><label class="fin-label">Beklenen Hasat Miktarı</label><input type="number" class="fin-input fin-calc" id="yieldAmount" placeholder="Örn: 5000"></div>
            <div class="fin-field"><label class="fin-label">Birim Satış Fiyatı (₺)</label><input type="number" class="fin-input fin-calc" id="unitPrice" placeholder="Örn: 25"></div>
          </div>
          <div>
            <div class="fin-col-head blue"><i class="fas fa-scale-balanced text-primary"></i><span class="fin-col-title">Net Sonuç</span></div>
            <div class="profit-box" id="profitCard">
              <div class="profit-icon">⚖️</div>
              <div class="profit-title" id="profitTitle">Durum</div>
              <div class="profit-amount" id="displayNetProfit">0 ₺</div>
            </div>
          </div>
        </div>
      </section>

    </div>
  </div>
</main>

<div class="mobile-cart-bar">
    <div class="m-bar-info"><span>Fide Maliyeti</span><strong id="mobTotal">0 ₺</strong></div>
    <button class="m-bar-btn" onclick="topluSepeteEkle()"><i class="fas fa-shopping-cart"></i> Sepete Ekle</button>
</div>

<?php foreach($kategoriler as $kat): if(empty($kategori_urunleri[$kat['id']])) continue; ?>
<div class="zy-modal-backdrop" id="catModal_<?= $kat['id'] ?>" onclick="closeModals(event)">
    <div class="zy-modal">
        <div class="zy-modal-head">
            <h3><?= htmlspecialchars($kat['name']) ?></h3>
            <button class="zy-modal-close" onclick="closeCatModal('catModal_<?= $kat['id'] ?>')"><i class="fas fa-times"></i></button>
        </div>
        <div class="zy-modal-body">
            <?php foreach($kategori_urunleri[$kat['id']] as $p): 
                $price = ($p['discount_price'] > 0) ? $p['discount_price'] : $p['price'];
                $min_qty = isset($p['min_order']) && $p['min_order'] > 0 ? $p['min_order'] : (isset($p['min_order_quantity']) && $p['min_order_quantity'] > 0 ? $p['min_order_quantity'] : 384);
            ?>
            <div class="modal-prod-item">
                <div class="modal-prod-info">
                    <h5><?= htmlspecialchars($p['name']) ?></h5>
                    <p><?= number_format($price, 2) ?> ₺ <span style="font-size:0.75rem; color:var(--text-muted); font-weight:600;">(Min: <?= $min_qty ?>)</span></p>
                </div>
                <div class="modal-prod-action">
                    <div class="qty-ctrl">
                        <button type="button" class="qty-btn" onclick="modalQty(this, -1, <?= $min_qty ?>)">-</button>
                        <input type="number" class="qty-input global-product-input" 
                               data-id="<?= $p['id'] ?>" 
                               data-name="<?= htmlspecialchars($p['name']) ?>" 
                               data-price="<?= $price ?>" 
                               data-min="<?= $min_qty ?>" 
                               value="<?= $min_qty ?>" readonly>
                        <button type="button" class="qty-btn" onclick="modalQty(this, 1, <?= $min_qty ?>)">+</button>
                    </div>
                    <button type="button" class="add-btn" onclick="toggleProductSelect(this, <?= $p['id'] ?>)">Seç</button>
                </div>
            </div>
            <?php endforeach; ?>
        </div>
    </div>
</div>
<?php endforeach; ?>

<?php foreach($origami_moduller['bottom'] as $modul){renderOrigamiModule($modul);} ?>

<script>
// --- CANVAS VE SİMÜLASYON MOTORU (v8.0 Orijinal Mantık) ---
const S={plants:[],canvasW:0,canvasH:0,selectedProducts:[],fieldWidth:20,fieldLength:50,totalRows:0,totalPipe:0,totalPlants:0,animFrame:null,tractorX:-120,tractorDir:1,tractorSpeed:0.8,userLat:39.9,userLon:32.8};

const canvas=document.getElementById('simCanvas');
const ctx=canvas?canvas.getContext('2d'):null;
const container=document.getElementById('simContainer');
let selectedPool={}; let globalTotalCost=0;

// Orijinal Bitki Çizim Özellikleri
function getPT(name){
    const n=name.toLowerCase();
    if(n.includes('domates')&&!n.includes('sırık')&&!n.includes('sirık'))return{t:'tomato',c:'#22c55e',f:'#ef4444',s:12,st:2.5,l:'Domates'};
    if(n.includes('sırık')||n.includes('sirık'))return{t:'tpole',c:'#16a34a',f:'#ef4444',s:10,st:2,l:'Sırık'};
    if(n.includes('biber'))return{t:'pepper',c:'#4ade80',f:'#f59e0b',s:9,st:2,l:'Biber'};
    if(n.includes('patlıcan')||n.includes('patlican'))return{t:'eggplant',c:'#15803d',f:'#a855f7',s:11,st:2.5,l:'Patlıcan'};
    if(n.includes('hıyar')||n.includes('hiyar')||n.includes('salatalık')||n.includes('salatalik'))return{t:'cucumber',c:'#86efac',f:'#10b981',s:13,st:2,l:'Hıyar'};
    if(n.includes('karpuz'))return{t:'watermelon',c:'#0d9488',f:'#166534',s:15,st:3,l:'Karpuz'};
    if(n.includes('kabak'))return{t:'zucchini',c:'#4ade80',f:'#f97316',s:14,st:2.5,l:'Kabak'};
    if(n.includes('kavun'))return{t:'melon',c:'#84cc16',f:'#ea580c',s:13,st:2.5,l:'Kavun'};
    if(n.includes('marul'))return{t:'lettuce',c:'#bbf7d0',f:null,s:8,st:1.5,l:'Marul'};
    return{t:'generic',c:'#4ade80',f:'#f59e0b',s:9,st:2,l:'Fide'};
}

function getSp(name){const n=name.toLowerCase();if(n.includes('karpuz')||n.includes('kavun')||n.includes('kabak'))return{row:2};if(n.includes('hıyar')||n.includes('hiyar')||n.includes('salatalık'))return{row:1};if(n.includes('patlıcan'))return{row:.9};if(n.includes('biber'))return{row:.7};return{row:.8};}
function calcPipe(w,l,sp){if(!sp||sp<0.3)sp=0.8;const uw=Math.max(1,w-1);const nr=Math.max(1,Math.floor(uw/sp));return Math.ceil(l+nr*l);}
function ltC(h,f){return h;} function dkC(h,f){return h;} // Sadeleştirildi

function resizeCanvas(){
    if(!canvas||!container||!ctx)return;
    const rect=container.getBoundingClientRect();const dpr=window.devicePixelRatio||1;
    canvas.width=rect.width*dpr;canvas.height=rect.height*dpr;
    canvas.style.width=rect.width+'px';canvas.style.height=rect.height+'px';
    ctx.setTransform(1,0,0,1,0,0);ctx.scale(dpr,dpr);
    S.canvasW=rect.width;S.canvasH=rect.height;
}

function buildPlants(){
    if(!ctx||S.selectedProducts.length===0){S.plants=[];return;}
    const w=S.fieldWidth,l=S.fieldLength,m=20;
    const fX=m,fY=S.canvasH*0.15+m,fW=S.canvasW-m*2,fH=S.canvasH*0.7-m;
    let ts=0;S.selectedProducts.forEach(p=>{ts+=p.spacing.row;});
    const avg=ts/S.selectedProducts.length;const uw=Math.max(1,w-1);const nr=Math.max(1,Math.floor(uw/avg));
    S.totalRows=nr;
    S.plants=[];let cr=0;
    S.selectedProducts.forEach(prod=>{
        const pt=getPT(prod.name);const pct=S.totalPlants>0?(prod.qty/S.totalPlants):0;
        const pr=Math.max(1,Math.round(nr*pct));const rs=fW/(nr+1);
        for(let r=0;r<pr&&cr<nr;r++,cr++){
            const rx=fX+rs*(cr+1);const pir=Math.max(2,Math.ceil(prod.qty/pr));
            const visualPlants = Math.min(pir, 20); // Performans için kısıtlama
            const psy=fH/(visualPlants+1);
            for(let p=0;p<visualPlants;p++)S.plants.push({x:rx,y:fY+psy*(p+1),c:pt.c,f:pt.f,s:pt.s});
        }
    });
}

function drawSim(){
    if(!ctx||!S.canvasW){S.animFrame=requestAnimationFrame(drawSim);return;}
    ctx.clearRect(0,0,S.canvasW,S.canvasH);
    
    // Gökyüzü (Aydınlık)
    const sg=ctx.createLinearGradient(0,0,0,S.canvasH*0.3);
    sg.addColorStop(0,'#87CEEB');sg.addColorStop(1,'#E0F6FF');
    ctx.fillStyle=sg;ctx.fillRect(0,0,S.canvasW,S.canvasH*0.3);
    ctx.beginPath();ctx.arc(S.canvasW*0.8,S.canvasH*0.15,25,0,Math.PI*2);ctx.fillStyle='#FFD700';ctx.fill();

    // Toprak (Aydınlık)
    const gy=S.canvasH*0.3;
    const tg=ctx.createLinearGradient(0,gy,0,S.canvasH);
    tg.addColorStop(0,'#A0522D');tg.addColorStop(1,'#654321');
    ctx.fillStyle=tg;ctx.fillRect(0,gy,S.canvasW,S.canvasH-gy);

    // Çizgiler
    for(let i=0;i<8;i++){
        ctx.beginPath();ctx.moveTo(0,gy+i*((S.canvasH-gy)/8));ctx.lineTo(S.canvasW,gy+i*((S.canvasH-gy)/8));
        ctx.strokeStyle='rgba(0,0,0,0.1)';ctx.lineWidth=1;ctx.stroke();
    }

    // Bitkiler
    S.plants.forEach(p=>{
        ctx.beginPath();ctx.ellipse(p.x,p.y+2,p.s*0.5,p.s*0.15,0,0,Math.PI*2);ctx.fillStyle='rgba(0,0,0,0.2)';ctx.fill();
        ctx.beginPath();ctx.moveTo(p.x,p.y);ctx.lineTo(p.x,p.y-p.s*0.8);ctx.strokeStyle='#064e3b';ctx.lineWidth=2;ctx.stroke();
        ctx.beginPath();ctx.arc(p.x,p.y-p.s*0.4,p.s*0.6,0,Math.PI*2);ctx.fillStyle=p.c;ctx.fill();
        if(p.f){ctx.beginPath();ctx.arc(p.x-1,p.y-p.s*0.6,2,0,Math.PI*2);ctx.fillStyle=p.f;ctx.fill();}
    });

    // V8 HTML Traktörü yürütme
    if(S.plants.length>0){
        S.tractorX+=S.tractorSpeed*S.tractorDir;
        if(S.tractorX>S.canvasW+80)S.tractorDir=-1;
        if(S.tractorX<-100)S.tractorDir=1;
        const tw=document.getElementById('tractorWrapper');
        if(tw) {
            tw.style.transform = `translateX(${S.tractorX}px) scaleX(${S.tractorDir < 0 ? -1 : 1})`;
        }
    }
    
    updateClock();
    S.animFrame=requestAnimationFrame(drawSim);
}

function updateClock(){
    const now=new Date();
    const tE=document.getElementById('clockTime');const dE=document.getElementById('clockDate');
    if(tE)tE.textContent=now.toLocaleTimeString('tr-TR',{hour:'2-digit',minute:'2-digit',second:'2-digit'});
    if(dE){const days=['Paz','Pzt','Sal','Çar','Per','Cum','Cmt'];const months=['Oca','Şub','Mar','Nis','May','Haz','Tem','Ağu','Eyl','Eki','Kas','Ara'];dE.textContent=`${days[now.getDay()]} ${now.getDate()} ${months[now.getMonth()]}`;}
}

function loadWeather(){
    fetch(`https://api.open-meteo.com/v1/forecast?latitude=${S.userLat}&longitude=${S.userLon}&current=temperature_2m,relative_humidity_2m,wind_speed_10m,weather_code&timezone=auto`)
    .then(r=>r.json()).then(data=>{
        document.getElementById('weatherLoading').style.display='none';
        document.getElementById('weatherCards').style.display='block';
        document.getElementById('weatherTemp').textContent=Math.round(data.current.temperature_2m)+'°C';
        document.getElementById('weatherHumidity').textContent=data.current.relative_humidity_2m+'%';
        document.getElementById('weatherWind').textContent=Math.round(data.current.wind_speed_10m)+' km/s';
    }).catch(e=>{});
}

// --- MODAL VE KULLANICI İŞLEMLERİ ---
function openCatModal(id){document.getElementById(id).classList.add('show');}
function closeCatModal(id){document.getElementById(id).classList.remove('show');}
function closeModals(e){if(e.target.classList.contains('zy-modal-backdrop'))e.target.classList.remove('show');}

function modalQty(btn, dir, min){
    const inp=btn.parentNode.querySelector('.qty-input');
    let val=parseInt(inp.value)||min;
    if(dir>0)val+=min;else if(dir<0&&val>min)val-=min;
    inp.value=val;
    const pid=inp.getAttribute('data-id');
    const selBtn=btn.parentNode.parentNode.querySelector('.add-btn');
    if(selBtn.classList.contains('added')){selectedPool[pid].qty=val;calculateAndDraw();}
}

function toggleProductSelect(btn, pid){
    const inp=btn.parentNode.querySelector('.qty-input');
    if(btn.classList.contains('added')){
        btn.classList.remove('added');btn.textContent='Seç';
        delete selectedPool[pid];
    }else{
        btn.classList.add('added');btn.innerHTML='<i class="fas fa-check"></i> Eklendi';
        selectedPool[pid]={id:pid,name:inp.getAttribute('data-name'),price:parseFloat(inp.getAttribute('data-price')),qty:parseInt(inp.value),spacing:getSp(inp.getAttribute('data-name'))};
    }
    calculateAndDraw();
}

function toggleHpa(el){el.classList.toggle('ck');calculateAndDraw();}

const inpW=document.getElementById('inpWidth');const inpL=document.getElementById('inpLength');
inpW.addEventListener('input',()=>{document.getElementById('valWidth').innerText=inpW.value+' m';S.fieldWidth=parseFloat(inpW.value);calculateAndDraw();});
inpL.addEventListener('input',()=>{document.getElementById('valLength').innerText=inpL.value+' m';S.fieldLength=parseFloat(inpL.value);calculateAndDraw();});

function calculateAndDraw(){
    const w=S.fieldWidth,l=S.fieldLength,area=w*l;
    document.getElementById('toplamAlan').innerText=area.toLocaleString('tr-TR');
    document.getElementById('simAreaDisplay').innerText=area.toLocaleString('tr-TR');
    
    S.selectedProducts=Object.values(selectedPool);
    let tP=0; globalTotalCost=0; let sHtml='';

    const hpa=document.getElementById('hpaUpsell');
    if(S.selectedProducts.length===0){
        if(hpa&&hpa.classList.contains('ck'))globalTotalCost+=parseFloat(hpa.getAttribute('data-price'));
        document.getElementById('resFide').innerText='0';document.getElementById('resBoru').innerText='0';
        document.getElementById('resMaliyet').innerText=globalTotalCost.toLocaleString('tr-TR',{minimumFractionDigits:2})+' ₺';
        document.getElementById('mobTotal').innerText=globalTotalCost.toLocaleString('tr-TR',{minimumFractionDigits:0})+' ₺';
        document.getElementById('costFide').value=globalTotalCost;
        document.getElementById('simEmpty').style.display='flex';
        document.getElementById('tractorContainer').style.display='none';
        document.getElementById('sidebarSelectedItems').innerHTML='';
        document.getElementById('summaryList').innerHTML='<div style="text-align:center;padding:10px;color:var(--text3);font-size:0.85rem;font-weight:600;">Sepetiniz boş.</div>';
        S.plants=[]; calcFin(); return;
    }

    S.selectedProducts.forEach(p=>{
        tP+=p.qty; globalTotalCost+=(p.qty*p.price);
        sHtml+=`<div class="sel-item"><div class="sel-item-info"><div class="sel-item-name">${p.name}</div><div class="sel-item-price">${p.price.toLocaleString('tr-TR')} ₺ x ${p.qty}</div></div><div class="sel-item-qty">${p.qty}</div></div>`;
    });
    document.getElementById('sidebarSelectedItems').innerHTML=sHtml;

    let ts=0;S.selectedProducts.forEach(p=>{ts+=p.spacing.row;});
    const avg=ts/S.selectedProducts.length;
    S.totalPipe=calcPipe(w,l,avg); S.totalPlants=tP;
    
    if(hpa&&hpa.classList.contains('ck'))globalTotalCost+=parseFloat(hpa.getAttribute('data-price'));

    document.getElementById('resFide').innerText=tP.toLocaleString('tr-TR');
    document.getElementById('resBoru').innerText=S.totalPipe.toLocaleString('tr-TR');
    document.getElementById('resMaliyet').innerText=globalTotalCost.toLocaleString('tr-TR',{minimumFractionDigits:2})+' ₺';
    document.getElementById('mobTotal').innerText=globalTotalCost.toLocaleString('tr-TR',{minimumFractionDigits:0})+' ₺';
    document.getElementById('costFide').value=globalTotalCost;
    
    // Sepet Özeti
    let sumHtml='';
    S.selectedProducts.forEach(p=>{sumHtml+=`<div class="summary-row"><span class="summary-row-label">${p.name}</span><span class="summary-row-value">${p.qty} Ad.</span></div>`;});
    sumHtml+=`<div class="summary-row" style="background:#f1f5f9;padding:10px;border-radius:8px;margin-top:10px;"><span class="summary-row-label fw-bold">Tahmini Damlama Borusu</span><span class="summary-row-value text-primary">${S.totalPipe} Metre</span></div>`;
    document.getElementById('summaryList').innerHTML=sumHtml;

    document.getElementById('simEmpty').style.display='none';
    document.getElementById('tractorContainer').style.display='block';
    
    buildPlants(); calcFin();
}

function topluSepeteEkle(){
    if(S.selectedProducts.length===0){alert('Lütfen fide seçin.');return;}
    const btn=document.getElementById('btnSepet');btn.innerHTML='<i class="fas fa-spinner fa-spin"></i> Ekleniyor...';btn.disabled=true;
    const fi=document.getElementById('dynamicFormInputs');fi.innerHTML='';
    S.selectedProducts.forEach((p,i)=>{fi.innerHTML+=`<input type="hidden" name="products[${i}][id]" value="${p.id}"><input type="hidden" name="products[${i}][qty]" value="${p.qty}">`;});
    const hpa=document.getElementById('hpaUpsell');
    if(hpa&&hpa.classList.contains('ck')){fi.innerHTML+=`<input type="hidden" name="products[${S.selectedProducts.length}][id]" value="${hpa.getAttribute('data-id')}"><input type="hidden" name="products[${S.selectedProducts.length}][qty]" value="1">`;}
    document.getElementById('cartSubmitForm').submit();
}

// --- FİNANS HESAPLAMA (V8.0) ---
const finCalcs=document.querySelectorAll('.fin-calc');
finCalcs.forEach(inp=>{inp.addEventListener('input',calcFin);});

function calcFin(){
    const cF=parseFloat(document.getElementById('costFide').value)||0;const cB=parseFloat(document.getElementById('costBoru').value)||0;const cG=parseFloat(document.getElementById('costGubre').value)||0;const cI=parseFloat(document.getElementById('costIlacIsci').value)||0;
    const tc=cF+cB+cG+cI;const yA=parseFloat(document.getElementById('yieldAmount').value)||0;const uP=parseFloat(document.getElementById('unitPrice').value)||0;const tr=yA*uP;const net=tr-tc;
    
    const card=document.getElementById('profitCard');const title=document.getElementById('profitTitle');const amount=document.getElementById('displayNetProfit');
    if(tc===0&&tr===0){card.className='profit-box';title.innerText='DURUM';amount.innerText='0 ₺';}
    else if(net>0){card.className='profit-box success';title.innerText='NET KÂR';amount.innerText='+'+net.toLocaleString('tr-TR')+' ₺';}
    else if(net<0){card.className='profit-box danger';title.innerText='ZARAR';amount.innerText=net.toLocaleString('tr-TR')+' ₺';}
    else{card.className='profit-box neutral';title.innerText='BAŞA BAŞ';amount.innerText='0 ₺';}
}

// --- BAŞLATMA ---
window.addEventListener('resize', resizeCanvas);
document.addEventListener('DOMContentLoaded', ()=>{
    resizeCanvas(); loadWeather(); S.animFrame=requestAnimationFrame(drawSim);
});
</script>

<?php require_once 'includes/footer.php'; ?>