# -*- coding: utf-8 -*-
"""
HUD Dashboard v6.0 - Ultra Cyberpunk Sci-Fi Interface
Matrix/Terminator/Mirror's Edge inspired - Compact & Minimal
"""

import sys
import json
import math
import random
from datetime import datetime, timedelta
from typing import Dict, List, Optional, Any
from dataclasses import dataclass, asdict

from PyQt6.QtWidgets import (
    QApplication, QMainWindow, QWidget, QVBoxLayout, QHBoxLayout,
    QGridLayout, QLabel, QPushButton, QFrame, QScrollArea,
    QProgressBar, QStackedWidget, QSplitter, QTextEdit,
    QSpinBox, QDoubleSpinBox, QComboBox, QLineEdit, QCheckBox,
    QSlider, QGroupBox, QTableWidget, QTableWidgetItem,
    QHeaderView, QAbstractItemView, QMenu, QMenuBar,
    QStatusBar, QToolBar, QToolButton, QButtonGroup,
    QRadioButton, QTabWidget, QTreeWidgetItem, QTreeWidget,
    QGraphicsView, QGraphicsScene, QGraphicsOpacityEffect,
    QGraphicsDropShadowEffect, QSizePolicy, QSpacerItem,
    QGraphicsTextItem, QGraphicsRectItem
)
from PyQt6.QtCore import (
    Qt, QTimer, QThread, pyqtSignal, QPropertyAnimation,
    QEasingCurve, QParallelAnimationGroup, QSequentialAnimationGroup,
    QRect, QPointF, QSize, pyqtProperty, QUrl, QVariantAnimation,
    QTimeLine, QEvent, QEventLoop, QRectF, QThread
)
from PyQt6.QtGui import (
    QFont, QColor, QPalette, QLinearGradient, QRadialGradient,
    QPen, QBrush, QPainter, QPixmap, QIcon, QCursor,
    QPolygonF, QFontDatabase, QHoverEvent, QEnterEvent,
    QMouseEvent, QResizeEvent, QShowEvent, QPainterPath,
    QTransform, QFontMetrics, QConicalGradient, QKeySequence,
    QFontMetricsF, QTextCursor, QPainter, QBrush
)


@dataclass
class Proje:
    """Proje veri yapısı"""
    id: str
    ad: str
    musteri: str
    durum: str
    baslangic: datetime
    bitis: datetime
    bütce: float
    harcanan: float
    ilerleme: float
    sorumlu: str
    takim_uyeleri: List[str]
    oncelik: str
    risk_seviyesi: str


class CyberButton(QPushButton):
    """Ultra kompakt cyberpunk buton"""

    def __init__(self, text, color="#00ff00"):
        super().__init__(text)
        self.color = QColor(color)
        self.glitch_offset = 0
        self.matrix_char = random.choice(['█', '▓', '▒', '░', '◈', '◊', '◉'])
        self.setupStyle()
        self.startGlitch()

    def setupStyle(self):
        self.setStyleSheet(f"""
            CyberButton {{
                background: #000000;
                border: 1px solid {self.color.name()};
                color: {self.color.name()};
                font-family: 'Consolas', monospace;
                font-size: 11px;
                font-weight: bold;
                padding: 6px 12px;
                text-transform: uppercase;
                letter-spacing: 1px;
            }}
            CyberButton:hover {{
                background: rgba({self.color.red()}, {self.color.green()}, {self.color.blue()}, 30);
                border: 1px solid rgba({self.color.red()}, {self.color.green()}, {self.color.blue()}, 255);
                text-shadow: 0 0 5px {self.color.name()};
            }}
        """)

    def startGlitch(self):
        self.glitch_timer = QTimer()
        self.glitch_timer.timeout.connect(self.glitch)
        self.glitch_timer.start(200)

    def glitch(self):
        if random.random() < 0.1:
            self.setText(self.matrix_char + " " + self.text())
            QTimer.singleShot(100, self.restoreText)

    def restoreText(self):
        original_text = self.text().replace(self.matrix_char + " ", "")
        self.setText(original_text)


class NanoCard(QFrame):
    """Ultra kompakt HUD kartı"""

    def __init__(self, title, value, color="#00ff00"):
        super().__init__()
        self.color = QColor(color)
        self.title = title
        self.value = value
        self.setupStyle()
        self.addEffects()

    def setupStyle(self):
        self.setFixedSize(160, 70)
        self.setFrameStyle(QFrame.Shape.Box)

        self.setStyleSheet(f"""
            NanoCard {{
                background: #000000;
                border: 1px solid {self.color.name()};
                padding: 8px;
            }}
        """)

        layout = QVBoxLayout()
        layout.setSpacing(3)
        layout.setContentsMargins(10, 8, 10, 8)

        # Title
        title_label = QLabel(self.title)
        title_label.setStyleSheet(f"""
            color: {self.color.name()};
            font-family: 'Consolas', monospace;
            font-size: 10px;
            font-weight: bold;
            text-transform: uppercase;
        """)
        layout.addWidget(title_label)

        # Value
        value_label = QLabel(self.value)
        value_label.setStyleSheet(f"""
            color: #ffffff;
            font-family: 'Orbitron', monospace;
            font-size: 20px;
            font-weight: bold;
        """)
        layout.addWidget(value_label)

        self.setLayout(layout)

    def addEffects(self):
        # Scan line animation
        self.scan_timer = QTimer()
        self.scan_pos = 0
        self.scan_timer.timeout.connect(self.scan)
        self.scan_timer.start(50)

    def scan(self):
        self.scan_pos = (self.scan_pos + 5) % self.height()
        self.update()

    def paintEvent(self, event):
        super().paintEvent(event)
        painter = QPainter(self)

        # Scan line effect
        scan_color = QColor(self.color)
        scan_color.setAlpha(100)
        painter.setPen(QPen(scan_color, 1))
        painter.drawLine(0, self.scan_pos, self.width(), self.scan_pos)


class MatrixSidebar(QWidget):
    """Matrix rain sidebar"""

    menuItemSelected = pyqtSignal(str)

    def __init__(self):
        super().__init__()
        self.selected_item = "dashboard"
        self.matrix_chars = "ｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜﾝ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
        self.setupUI()
        self.startMatrix()

    def setupUI(self):
        self.setFixedWidth(160)
        self.setStyleSheet("""
            MatrixSidebar {
                background: #000000;
                border-right: 1px solid #00ff00;
            }
        """)

        layout = QVBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)
        layout.setSpacing(0)

        # Logo - Minimal
        logo = QLabel("[FIKATIA]")
        logo.setStyleSheet("""
            color: #00ff00;
            font-family: 'Consolas', monospace;
            font-size: 12px;
            font-weight: bold;
            padding: 10px;
            text-align: center;
            text-transform: uppercase;
        """)
        logo.setAlignment(Qt.AlignmentFlag.AlignCenter)
        layout.addWidget(logo)

        # Separator
        sep = QLabel("═" * 20)
        sep.setStyleSheet("color: #003300; font-size: 8px;")
        sep.setAlignment(Qt.AlignmentFlag.AlignCenter)
        layout.addWidget(sep)

        # Menu items
        menu_items = [
            ("dashboard", "DASHBOARD", "#00ff00"),
            ("cnc", "CNC.TAKIP", "#00ffff"),
            ("uretim", "URETIM", "#ff00ff"),
            ("projeler", "PROJELER", "#ffff00"),
            ("siparisler", "SIPARIS", "#ff8800"),
            ("teklifler", "TEKLIFLER", "#00ffaa"),
            ("analiz", "ANALIZ", "#ff0088"),
            ("admin", "ADMIN", "#8800ff"),
        ]

        for item_id, text, color in menu_items:
            btn = MatrixMenuButton(text, color, item_id == self.selected_item)
            btn.clicked.connect(lambda checked, mid=item_id: self.onMenuClick(mid))
            layout.addWidget(btn)

        layout.addStretch()

        # Status bar
        status = QLabel("[ONLINE]")
        status.setStyleSheet("""
            color: #00ff00;
            font-family: 'Consolas', monospace;
            font-size: 9px;
            padding: 8px;
            text-align: center;
        """)
        layout.addWidget(status)

        self.setLayout(layout)

    def startMatrix(self):
        self.matrix_timer = QTimer()
        self.matrix_timer.timeout.connect(self.matrixDrop)
        self.matrix_drops = []
        self.matrix_timer.start(100)

    def matrixDrop(self):
        # Matrix rain effect
        if random.random() < 0.3:
            x = random.randint(0, 15)
            y = 0
            char = random.choice(self.matrix_chars)
            self.matrix_drops.append({'x': x, 'y': y, 'char': char, 'life': 20})

    def onMenuClick(self, menu_id):
        self.selected_item = menu_id
        self.menuItemSelected.emit(menu_id)


class MatrixMenuButton(QPushButton):
    """Matrix tarzı menü butonu"""

    def __init__(self, text, color="#00ff00", selected=False):
        super().__init__(text)
        self.color = QColor(color)
        self.selected = selected
        self.setupStyle()

    def setupStyle(self):
        if self.selected:
            bg = f"rgba({self.color.red()}, {self.color.green()}, {self.color.blue()}, 50)"
            text = self.color.name()
        else:
            bg = "transparent"
            text = "rgba(255, 255, 255, 100)"

        self.setStyleSheet(f"""
            MatrixMenuButton {{
                background: {bg};
                border: none;
                border-left: 2px solid rgba({self.color.red()}, {self.color.green()}, {self.color.blue()}, 200);
                color: {text};
                font-family: 'Consolas', monospace;
                font-size: 11px;
                font-weight: bold;
                padding: 8px 15px;
                text-align: left;
                text-transform: uppercase;
            }}
            MatrixMenuButton:hover {{
                background: rgba({self.color.red()}, {self.color.green()}, {self.color.blue()}, 30);
                color: #ffffff;
            }}
        """)


class CyberTerminal(QTextEdit):
    """Cyberpunk terminal widget"""

    def __init__(self):
        super().__init__()
        self.setupStyle()
        self.startTerminalOutput()

    def setupStyle(self):
        self.setReadOnly(True)
        self.setMaximumHeight(150)
        self.setStyleSheet("""
            CyberTerminal {
                background: #000000;
                color: #00ff00;
                border: 1px solid #00ff00;
                font-family: 'Consolas', monospace;
                font-size: 10px;
                padding: 8px;
            }
        """)

    def startTerminalOutput(self):
        self.terminal_timer = QTimer()
        self.lines = []
        self.terminal_timer.timeout.connect(self.addLine)
        self.terminal_timer.start(1500)

        # Initial content
        self.setPlainText("""
root@fikatia:~$ ./system_monitor.sh
[INIT] Neural interface online
[SCAN] Checking modules...
        """.strip())

    def addLine(self):
        timestamp = datetime.now().strftime("%H:%M:%S")
        messages = [
            f"[{timestamp}] CNC-001: Efficiency 94%",
            f"[{timestamp}] Network: Nominal",
            f"[{timestamp}] Alert: Temperature spike detected",
            f"[{timestamp}] Auto-calibration initiated",
            f"[{timestamp}] New order: SIP-2024-{random.randint(100, 999)}",
            f"[{timestamp}] All systems operational",
            f"[{timestamp}] Matrix sync: {random.randint(85, 100)}%",
            f"[{timestamp}] Quantum link stable",
        ]

        new_line = random.choice(messages)
        cursor = self.textCursor()
        cursor.movePosition(QTextCursor.MoveOperation.End)
        cursor.insertText("\n" + new_line)

        # Keep last 10 lines
        lines = self.toPlainText().split('\n')
        if len(lines) > 10:
            self.setPlainText('\n'.join(lines[-10:]))


class HUDDashboard(QMainWindow):
    """Ultra Cyberpunk Dashboard"""

    def __init__(self):
        super().__init__()
        self.setupSampleData()
        self.current_page = "dashboard"
        self.setupUI()
        self.addCyberEffects()

    def setupSampleData(self):
        """Örnek veriler"""
        self.projeler = [
            Proje(
                id="PRJ-001", ad="Otomatik Vites", musteri="OtoTek",
                durum="Üretim", baslangic=datetime.now() - timedelta(days=30),
                bitis=datetime.now() + timedelta(days=45), bütce=250000,
                harcanan=125000, ilerleme=65, sorumlu="Ahmet",
                takim_uyeleri=["Mehmet"], oncelik="Kritik", risk_seviyesi="Orta"
            ),
        ]

    def setupUI(self):
        self.setWindowTitle("[F.I.K.A.T.I.A] - NEURAL INTERFACE")
        self.showMaximized()
        self.setMinimumSize(1200, 800)

        # Tamamen siyah tema
        self.setStyleSheet("""
            QMainWindow {
                background: #000000;
            }
            QWidget {
                font-family: 'Consolas', monospace;
                color: rgba(255, 255, 255, 200);
            }
            QScrollArea {
                background: #000000;
                border: none;
            }
            QScrollBar:vertical {
                background: #000000;
                width: 8px;
                border: 1px solid rgba(0, 255, 0, 50);
            }
            QScrollBar::handle:vertical {
                background: #00ff00;
                min-height: 10px;
            }
        """)

        central_widget = QWidget()
        self.setCentralWidget(central_widget)

        main_layout = QHBoxLayout()
        main_layout.setContentsMargins(0, 0, 0, 0)
        main_layout.setSpacing(0)

        # Matrix sidebar
        self.sidebar = MatrixSidebar()
        self.sidebar.menuItemSelected.connect(self.navigateToPage)
        main_layout.addWidget(self.sidebar)

        # İçerik
        self.content_stack = QStackedWidget()
        self.content_stack.setStyleSheet("background: #000000;")
        self.createPages()

        main_layout.addWidget(self.content_stack)
        central_widget.setLayout(main_layout)

    def createPages(self):
        """Sayfaları oluştur"""
        # Dashboard
        dashboard_page = QWidget()
        dashboard_scroll = QScrollArea()
        dashboard_scroll.setWidgetResizable(True)
        dashboard_scroll.setWidget(self.createDashboardPage())
        dashboard_scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOff)

        dashboard_container = QWidget()
        dashboard_container.setLayout(QVBoxLayout())
        dashboard_container.layout().addWidget(dashboard_scroll)
        dashboard_container.layout().setContentsMargins(0, 0, 0, 0)
        self.content_stack.addWidget(dashboard_container)

        # Diğer sayfaları oluştur
        self.cnc_page = self.createCNCPage()
        self.content_stack.addWidget(self.cnc_page)

        self.uretim_page = self.createUretimPage()
        self.content_stack.addWidget(self.uretim_page)

        self.projeler_page = self.createProjelerPage()
        self.content_stack.addWidget(self.projeler_page)

        self.siparisler_page = self.createSiparislerPage()
        self.content_stack.addWidget(self.siparisler_page)

        self.teklifler_page = self.createTekliflerPage()
        self.content_stack.addWidget(self.teklifler_page)

        self.analiz_page = self.createAnalizPage()
        self.content_stack.addWidget(self.analiz_page)

        self.admin_page = self.createAdminPage()
        self.content_stack.addWidget(self.admin_page)

    def createDashboardPage(self):
        """Dashboard sayfası"""
        page = QWidget()
        main_layout = QVBoxLayout()
        main_layout.setContentsMargins(15, 15, 15, 15)
        main_layout.setSpacing(10)

        # Header - Ultra minimal
        header = QFrame()
        header.setStyleSheet("""
            QFrame {
                background: #000000;
                border: 1px solid #00ff00;
                padding: 8px;
            }
        """)

        header_layout = QHBoxLayout()

        # ASCII header
        ascii_header = QLabel("┌─ SYSTEM CONTROL ─┐")
        ascii_header.setStyleSheet("""
            color: #00ff00;
            font-family: 'Consolas', monospace;
            font-size: 11px;
            font-weight: bold;
        """)
        header_layout.addWidget(ascii_header)

        header_layout.addStretch()

        # Status
        status = QLabel(f"[ONLINE] {datetime.now().strftime('%H:%M:%S')}")
        status.setStyleSheet("color: #00ff00; font-size: 9px;")
        header_layout.addWidget(status)

        header.setLayout(header_layout)
        main_layout.addWidget(header)

        # Stats row 1 - Kompakt
        stats1 = QHBoxLayout()
        stats1.setSpacing(8)

        cards1 = [
            ("PROJECTS", "24", "#00ff00"),
            ("ACTIVE", "18", "#00ffff"),
            ("PENDING", "6", "#ff00ff"),
            ("EFFICIENCY", "94%", "#ffff00"),
            ("MACHINES", "7/8", "#ff8800"),
            ("ALERTS", "2", "#ff0000"),
        ]

        for title, value, color in cards1:
            card = NanoCard(title, value, color)
            stats1.addWidget(card)

        main_layout.addLayout(stats1)

        # Terminal
        terminal_frame = QFrame()
        terminal_frame.setStyleSheet("""
            QFrame {
                background: #000000;
                border: 1px solid #00ff00;
                padding: 4px;
            }
        """)

        term_header = QLabel("[TERMINAL] Real-time Monitor")
        term_header.setStyleSheet("""
            color: #00ff00;
            font-size: 10px;
            font-weight: bold;
            padding: 4px;
        """)

        terminal = CyberTerminal()

        terminal_layout = QVBoxLayout()
        terminal_layout.setContentsMargins(0, 0, 0, 0)
        terminal_layout.setSpacing(0)
        terminal_layout.addWidget(term_header)
        terminal_layout.addWidget(terminal)
        terminal_frame.setLayout(terminal_layout)

        main_layout.addWidget(terminal_frame)

        # Action buttons
        actions = QHBoxLayout()
        actions.setSpacing(5)

        btn_actions = [
            ("NEW_JOB", "#00ff00"),
            ("SCAN", "#00ffff"),
            ("MAINT", "#ff00ff"),
            ("ALERT", "#ff0000"),
            ("SYNC", "#ffff00"),
        ]

        for text, color in btn_actions:
            btn = CyberButton(text, color)
            btn.setMinimumHeight(30)
            actions.addWidget(btn)

        actions.addStretch()
        main_layout.addLayout(actions)

        # Quick stats
        quick_stats = QGridLayout()
        quick_stats.setSpacing(5)

        stat_items = [
            ("CPU:", "67%", "#00ff00"),
            ("RAM:", "4.2GB", "#00ffff"),
            ("NET:", "1.2MB/s", "#ff00ff"),
            ("TEMP:", "42°C", "#ffff00"),
            ("UPTIME:", "48h", "#ff8800"),
            ("LOAD:", "2.34", "#00ffaa"),
        ]

        for i, (label, value, color) in enumerate(stat_items):
            lbl = QLabel(f"{label} {value}")
            lbl.setStyleSheet(f"color: {color}; font-size: 9px; font-weight: bold;")
            quick_stats.addWidget(lbl, i // 3, i % 3)

        main_layout.addLayout(quick_stats)

        # Footer
        footer = QFrame()
        footer.setStyleSheet("""
            QFrame {
                background: #000000;
                border-top: 1px solid #00ff00;
                padding: 4px;
            }
        """)

        footer_layout = QHBoxLayout()
        version = QLabel("FIKATIA v2.0.1 | MATRIX OS")
        version.setStyleSheet("color: #003300; font-size: 8px;")
        footer_layout.addWidget(version)

        footer_layout.addStretch()

        build = QLabel(f"BUILD {datetime.now().strftime('%Y%m%d')}")
        build.setStyleSheet("color: #003300; font-size: 8px;")
        footer_layout.addWidget(build)

        footer.setLayout(footer_layout)
        main_layout.addWidget(footer)

        main_layout.addStretch()
        page.setLayout(main_layout)

        # Status update timer
        self.status_timer = QTimer()
        self.status_timer.timeout.connect(self.updateStatus)
        self.status_timer.start(1000)

        return page

    def updateStatus(self):
        """Status güncelle"""
        pass

    def addCyberEffects(self):
        """Cyber efektleri"""
        # Background flicker
        self.flicker_timer = QTimer()
        self.flicker_timer.timeout.connect(self.flicker)
        self.flicker_timer.start(3000)

    def flicker(self):
        # Ekranı anlık karart
        if random.random() < 0.1:
            self.setStyleSheet("background: #080808;")
            QTimer.singleShot(50, lambda: self.setStyleSheet("background: #000000;"))

    def navigateToPage(self, page_id):
        """Sayfa geçişi"""
        self.current_page = page_id
        page_map = {
            "dashboard": 0,
            "cnc": 1,
            "uretim": 2,
            "projeler": 3,
            "siparisler": 4,
            "teklifler": 5,
            "analiz": 6,
            "admin": 7
        }

        if page_id in page_map:
            self.content_stack.setCurrentIndex(page_map[page_id])

    def createCNCPage(self):
        """CNC Takip sayfası"""
        page = QWidget()
        main_layout = QVBoxLayout()
        main_layout.setContentsMargins(15, 15, 15, 15)
        main_layout.setSpacing(10)

        # Header
        header = QFrame()
        header.setStyleSheet("""
            QFrame {
                background: #000000;
                border: 1px solid #00ffff;
                padding: 8px;
            }
        """)
        header_layout = QHBoxLayout()
        title = QLabel("┌─ CNC CONTROL MODULE ─┐")
        title.setStyleSheet("color: #00ffff; font-size: 11px; font-weight: bold;")
        header_layout.addWidget(title)
        header_layout.addStretch()
        status = QLabel("[SCANNING]")
        status.setStyleSheet("color: #00ffff; font-size: 10px;")
        header_layout.addWidget(status)
        header.setLayout(header_layout)
        main_layout.addWidget(header)

        # Stats
        stats_row = QHBoxLayout()
        stats_row.setSpacing(10)
        cnc_stats = [
            ("ACTIVE", "4", "#00ffff"),
            ("IDLE", "2", "#ffff00"),
            ("MAINT", "2", "#ff8800"),
            ("EFFICIENCY", "93%", "#00ff00"),
        ]
        for title, value, color in cnc_stats:
            card = NanoCard(title, value, color)
            stats_row.addWidget(card)
        main_layout.addLayout(stats_row)

        # Terminal
        terminal_frame = QFrame()
        terminal_frame.setStyleSheet("""
            QFrame {
                background: #000000;
                border: 1px solid #00ffff;
                padding: 4px;
            }
        """)
        term_header = QLabel("[CNC] Machine Status Monitor")
        term_header.setStyleSheet("color: #00ffff; font-size: 10px; font-weight: bold; padding: 4px;")
        terminal = CyberTerminal()
        terminal_layout = QVBoxLayout()
        terminal_layout.setContentsMargins(0, 0, 0, 0)
        terminal_layout.addWidget(term_header)
        terminal_layout.addWidget(terminal)
        terminal_frame.setLayout(terminal_layout)
        main_layout.addWidget(terminal_frame)

        # Machine grid
        machines_grid = QGridLayout()
        machines_grid.setSpacing(10)
        for i in range(6):
            machine_frame = QFrame()
            machine_frame.setStyleSheet("""
                QFrame {
                    background: #000000;
                    border: 1px solid #00ffff;
                    padding: 8px;
                }
            """)
            machine_layout = QVBoxLayout()
            name = QLabel(f"CNC-{i+1:03d}")
            name.setStyleSheet("color: #00ffff; font-size: 12px; font-weight: bold;")
            machine_layout.addWidget(name)
            status = random.choice(["RUNNING", "IDLE", "MAINTENANCE"])
            status_color = {"RUNNING": "#00ff00", "IDLE": "#ffff00", "MAINTENANCE": "#ff8800"}[status]
            status_label = QLabel(status)
            status_label.setStyleSheet(f"color: {status_color}; font-size: 11px;")
            machine_layout.addWidget(status_label)
            machine_frame.setLayout(machine_layout)
            machines_grid.addWidget(machine_frame, i // 3, i % 3)
        main_layout.addLayout(machines_grid)
        main_layout.addStretch()
        page.setLayout(main_layout)
        return page

    def createUretimPage(self):
        """Üretim sayfası"""
        page = QWidget()
        main_layout = QVBoxLayout()
        main_layout.setContentsMargins(15, 15, 15, 15)
        main_layout.setSpacing(10)

        # Header
        header = QFrame()
        header.setStyleSheet("""
            QFrame {
                background: #000000;
                border: 1px solid #ff00ff;
                padding: 8px;
            }
        """)
        header_layout = QHBoxLayout()
        title = QLabel("┌─ PRODUCTION CONTROL ─┐")
        title.setStyleSheet("color: #ff00ff; font-size: 11px; font-weight: bold;")
        header_layout.addWidget(title)
        header_layout.addStretch()
        header.setLayout(header_layout)
        main_layout.addWidget(header)

        # Stats
        stats_row = QHBoxLayout()
        stats_row.setSpacing(10)
        uretim_stats = [
            ("JOBS", "47", "#ff00ff"),
            ("ACTIVE", "12", "#00ffff"),
            ("QUEUE", "35", "#ffff00"),
            ("COMPLETED", "156", "#00ff00"),
        ]
        for title, value, color in uretim_stats:
            card = NanoCard(title, value, color)
            stats_row.addWidget(card)
        main_layout.addLayout(stats_row)

        # Terminal
        terminal = CyberTerminal()
        main_layout.addWidget(terminal)
        main_layout.addStretch()
        page.setLayout(main_layout)
        return page

    def createProjelerPage(self):
        """Projeler sayfası"""
        page = QWidget()
        main_layout = QVBoxLayout()
        main_layout.setContentsMargins(15, 15, 15, 15)
        main_layout.setSpacing(10)

        # Header
        header = QFrame()
        header.setStyleSheet("""
            QFrame {
                background: #000000;
                border: 1px solid #ffff00;
                padding: 8px;
            }
        """)
        header_layout = QHBoxLayout()
        title = QLabel("┌─ PROJECT MATRIX ─┐")
        title.setStyleSheet("color: #ffff00; font-size: 11px; font-weight: bold;")
        header_layout.addWidget(title)
        header_layout.addStretch()
        header.setLayout(header_layout)
        main_layout.addWidget(header)

        # Stats
        stats_row = QHBoxLayout()
        stats_row.setSpacing(10)
        proje_stats = [
            ("TOTAL", "24", "#ffff00"),
            ("ACTIVE", "8", "#00ff00"),
            ("DELAYED", "3", "#ff0000"),
            ("ON-TIME", "85%", "#00ffff"),
        ]
        for title, value, color in proje_stats:
            card = NanoCard(title, value, color)
            stats_row.addWidget(card)
        main_layout.addLayout(stats_row)

        # Terminal
        terminal = CyberTerminal()
        main_layout.addWidget(terminal)
        main_layout.addStretch()
        page.setLayout(main_layout)
        return page

    def createSiparislerPage(self):
        """Siparişler sayfası"""
        page = QWidget()
        main_layout = QVBoxLayout()
        main_layout.setContentsMargins(15, 15, 15, 15)
        main_layout.setSpacing(10)

        # Header
        header = QFrame()
        header.setStyleSheet("""
            QFrame {
                background: #000000;
                border: 1px solid #ff8800;
                padding: 8px;
            }
        """)
        header_layout = QHBoxLayout()
        title = QLabel("┌─ ORDER MANAGEMENT ─┐")
        title.setStyleSheet("color: #ff8800; font-size: 11px; font-weight: bold;")
        header_layout.addWidget(title)
        header_layout.addStretch()
        header.setLayout(header_layout)
        main_layout.addWidget(header)

        # Stats
        stats_row = QHBoxLayout()
        stats_row.setSpacing(10)
        siparis_stats = [
            ("TOTAL", "342", "#ff8800"),
            ("PENDING", "47", "#ffff00"),
            ("SHIPPED", "289", "#00ff00"),
            ("RETURNED", "6", "#ff0000"),
        ]
        for title, value, color in siparis_stats:
            card = NanoCard(title, value, color)
            stats_row.addWidget(card)
        main_layout.addLayout(stats_row)

        # Terminal
        terminal = CyberTerminal()
        main_layout.addWidget(terminal)
        main_layout.addStretch()
        page.setLayout(main_layout)
        return page

    def createTekliflerPage(self):
        """Teklifler sayfası"""
        page = QWidget()
        main_layout = QVBoxLayout()
        main_layout.setContentsMargins(15, 15, 15, 15)
        main_layout.setSpacing(10)

        # Header
        header = QFrame()
        header.setStyleSheet("""
            QFrame {
                background: #000000;
                border: 1px solid #00ffaa;
                padding: 8px;
            }
        """)
        header_layout = QHBoxLayout()
        title = QLabel("┌─ QUOTE SYSTEM ─┐")
        title.setStyleSheet("color: #00ffaa; font-size: 11px; font-weight: bold;")
        header_layout.addWidget(title)
        header_layout.addStretch()
        header.setLayout(header_layout)
        main_layout.addWidget(header)

        # Stats
        stats_row = QHBoxLayout()
        stats_row.setSpacing(10)
        teklif_stats = [
            ("ACTIVE", "18", "#00ffaa"),
            ("PENDING", "9", "#ffff00"),
            ("ACCEPTED", "156", "#00ff00"),
            ("CONVERSION", "67%", "#ff00ff"),
        ]
        for title, value, color in teklif_stats:
            card = NanoCard(title, value, color)
            stats_row.addWidget(card)
        main_layout.addLayout(stats_row)

        # Terminal
        terminal = CyberTerminal()
        main_layout.addWidget(terminal)
        main_layout.addStretch()
        page.setLayout(main_layout)
        return page

    def createAnalizPage(self):
        """Analiz sayfası"""
        page = QWidget()
        main_layout = QVBoxLayout()
        main_layout.setContentsMargins(15, 15, 15, 15)
        main_layout.setSpacing(10)

        # Header
        header = QFrame()
        header.setStyleSheet("""
            QFrame {
                background: #000000;
                border: 1px solid #ff0088;
                padding: 8px;
            }
        """)
        header_layout = QHBoxLayout()
        title = QLabel("┌─ ANALYTICS CORE ─┐")
        title.setStyleSheet("color: #ff0088; font-size: 11px; font-weight: bold;")
        header_layout.addWidget(title)
        header_layout.addStretch()
        header.setLayout(header_layout)
        main_layout.addWidget(header)

        # Stats
        stats_row = QHBoxLayout()
        stats_row.setSpacing(10)
        analiz_stats = [
            ("REVENUE", "$2.4M", "#ff0088"),
            ("GROWTH", "+18%", "#00ff00"),
            ("EFFICIENCY", "94%", "#00ffff"),
            ("RATING", "4.9/5", "#ffff00"),
        ]
        for title, value, color in analiz_stats:
            card = NanoCard(title, value, color)
            stats_row.addWidget(card)
        main_layout.addLayout(stats_row)

        # Terminal
        terminal = CyberTerminal()
        main_layout.addWidget(terminal)
        main_layout.addStretch()
        page.setLayout(main_layout)
        return page

    def createAdminPage(self):
        """Admin sayfası"""
        page = QWidget()
        main_layout = QVBoxLayout()
        main_layout.setContentsMargins(15, 15, 15, 15)
        main_layout.setSpacing(10)

        # Header
        header = QFrame()
        header.setStyleSheet("""
            QFrame {
                background: #000000;
                border: 1px solid #8800ff;
                padding: 8px;
            }
        """)
        header_layout = QHBoxLayout()
        title = QLabel("┌─ ADMIN TERMINAL ─┐")
        title.setStyleSheet("color: #8800ff; font-size: 11px; font-weight: bold;")
        header_layout.addWidget(title)
        header_layout.addStretch()
        header.setLayout(header_layout)
        main_layout.addWidget(header)

        # Stats
        stats_row = QHBoxLayout()
        stats_row.setSpacing(10)
        admin_stats = [
            ("USERS", "47", "#8800ff"),
            ("ACTIVE", "23", "#00ff00"),
            ("ADMIN", "5", "#ff0000"),
            ("SYSTEM", "OK", "#00ffff"),
        ]
        for title, value, color in admin_stats:
            card = NanoCard(title, value, color)
            stats_row.addWidget(card)
        main_layout.addLayout(stats_row)

        # Terminal
        terminal = CyberTerminal()
        main_layout.addWidget(terminal)

        # Admin buttons
        admin_buttons = QHBoxLayout()
        admin_buttons.setSpacing(5)
        admin_actions = [
            ("USER_MGMT", "#8800ff"),
            ("SYSTEM", "#00ffff"),
            ("BACKUP", "#00ff00"),
            ("RESET", "#ff0000"),
        ]
        for text, color in admin_actions:
            btn = CyberButton(text, color)
            admin_buttons.addWidget(btn)
        main_layout.addLayout(admin_buttons)
        main_layout.addStretch()
        page.setLayout(main_layout)
        return page


def main():
    app = QApplication(sys.argv)
    app.setStyle('Fusion')

    # Compact font
    font = QFont("Consolas", 10)
    app.setFont(font)

    # Koyu tema
    palette = QPalette()
    palette.setColor(QPalette.ColorRole.Window, QColor(0, 0, 0))
    palette.setColor(QPalette.ColorRole.WindowText, QColor(0, 255, 0))
    app.setPalette(palette)

    window = HUDDashboard()
    window.showMaximized()

    sys.exit(app.exec())


if __name__ == "__main__":
    main()