PageSourceSearch

https://amigastore.netlify.app/

html amigastore.netlify.app collected 2026-10-03 10:26:30 UTC 204,066 bytes, 562 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en" dir="ltr" translate="no" class="notranslate">
3<head>
4    <meta charset="UTF-8">
5<!-- This site is hosted on Netlify. Anyone can build and deploy a site
6     like this one for free: https://netlify.new/?utm_campaign=loops&utm_source=ai-legible&utm_medium=owned&utm_content=comment&utm_id=64f98274-c4ad-4ea0-845b-73f57a175780
7     Netlify hosting facts for this site: static/SSR served via Netlify Edge. --><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"><meta name="google" content="notranslate">
8    <title>AmigaStore — Amiga Workbench 1.3 Online & Retro Platform | c64spark</title>
9    <meta name="description" content="AmigaStore — A live Workbench 1.3 in your browser. Online Amiga emulator, C64 tools, Z80 Story, and a retro community bazaar. Built by c64spark.">
10    <meta name="keywords" content="AmigaStore, Amiga Workbench online, Amiga emulator, Commodore 64 tools, Z80 Story, retro computing, retro bazaar, Amiga 500, C64 sprite editor, C64 BASIC to PRG, PETSCII art converter, c64spark, رتروکامپیوتر, آمیگا, کمودور">
11    <meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1"><meta name="language" content="English"><meta name="author" content="c64spark">
12    <meta name="theme-color" content="#0000AA">
13    <meta name="apple-mobile-web-app-capable" content="yes"><meta name="mobile-web-app-capable" content="yes">
14    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
15    <meta name="apple-mobile-web-app-title" content="AmigaStore"><meta name="application-name" content="AmigaStore">
16    <link rel="icon" type="image/png" href="https://raw.githubusercontent.com/silverspark-ir/Amigastore/main/c64spark.ir%20logo.png">
17    <link rel="apple-touch-icon" href="https://raw.githubusercontent.com/silverspark-ir/Amigastore/main/c64spark.ir%20logo.png">
18    <link rel="canonical" href="https://amigastore.ir">
19    <link rel="sitemap" type="application/xml" href="/sitemap.xml">
20    <link rel="alternate" hreflang="en" href="https://amigastore.ir/">
21    <link rel="alternate" hreflang="fa" href="https://amigastore.ir/">
22    <link rel="alternate" hreflang="x-default" href="https://amigastore.ir/">
23    <meta property="og:site_name" content="AmigaStore">
24    <meta property="og:title" content="AmigaStore — Amiga Workbench 1.3 Online & Retro Platform"><meta property="og:description" content="A live Workbench 1.3 in your browser. Online Amiga emulator, C64 tools, Z80 Story, and a retro community bazaar. Built by c64spark."><meta property="og:url" content="https://amigastore.ir"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:locale:alternate" content="fa_IR">
25    <meta property="og:image" content="https://raw.githubusercontent.com/silverspark-ir/Amigastore/main/c64spark.ir%20logo.png">
26    <meta property="og:image:alt" content="AmigaStore — Amiga Workbench 1.3 in your browser">
27    <meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content="@c64spark"><meta name="twitter:creator" content="@c64spark"><meta name="twitter:title" content="AmigaStore — Amiga Workbench 1.3 Online & Retro Platform"><meta name="twitter:description" content="A live Workbench 1.3 in your browser. Online Amiga emulator, C64 tools, Z80 Story, and a retro community bazaar.">
28    <meta name="twitter:image" content="https://raw.githubusercontent.com/silverspark-ir/Amigastore/main/c64spark.ir%20logo.png">
29    <meta name="twitter:image:alt" content="AmigaStore — Amiga Workbench 1.3 in your browser">
30    
30<script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"WebSite","name":"AmigaStore","alternateName":"Amiga Workbench 1.3 Online & Retro Platform","url":"https://amigastore.ir","description":"A live Workbench 1.3 in your browser. Online Amiga emulator, C64 tools, Z80 Story, and a retro community bazaar.","inLanguage":["en-US","fa-IR"],"author":{"@type":"Person","name":"c64spark","email":"[email protected]"},"publisher":{"@type":"Organization","name":"AmigaStore","url":"https://amigastore.ir","logo":"https://raw.githubusercontent.com/silverspark-ir/Amigastore/main/c64spark.ir%20logo.png"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://amigastore.ir/search?q={search_term_string}"},"query-input":"required name=search_term_string"}},{"@type":"WebApplication","name":"AmigaStore","url":"https://amigastore.ir","applicationCategory":"MultimediaApplication","operatingSystem":"Web","description":"A live Amiga Workbench 1.3 environment in the browser, featuring an online Amiga emulator, Commodore 64 utilities, and a retro community bazaar.","offers":{"@type":"Offer","price":"0","priceCurrency":"USD"},"browserRequirements":"Requires JavaScript","author":{"@type":"Person","name":"c64spark"}},{"@type":"Organization","name":"AmigaStore","alternateName":"AmigaStore.ir","url":"https://amigastore.ir","logo":"https://raw.githubusercontent.com/silverspark-ir/Amigastore/main/c64spark.ir%20logo.png","email":"[email protected]","founder":{"@type":"Person","name":"c64spark"},"sameAs":["https://zxspectrum.ir","https://c64spark.bandcamp.com","https://retrolab.ir","https://commodore-amiga.blogfa.com"]}]}</script>
30
31    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/amiga4ever/stylesheet.css">
32    <style>
33        *{margin:0;padding:0;box-sizing:border-box;image-rendering:pixelated;image-rendering:crisp-edges}
34        body{font-family:'Amiga4Ever',monospace;background-color:#000;color:white;height:100vh;overflow:hidden;cursor:default;display:flex;flex-direction:column}
35        #main-container{width:100%;height:100vh;display:none;flex-direction:column;overflow:hidden}
36        #main-container.active{display:flex}
37        #splash-screen{width:100%;height:100vh;display:flex;flex-direction:column;justify-content:center;align-items:center;background-color:#000;z-index:99999;position:fixed;top:0;left:0;transition:opacity 0.5s ease}
38        #splash-screen img{max-width:90vw;max-height:75vh;object-fit:contain;display:block}
39        #splash-btn{margin-top:20px;padding:12px 28px;background-color:#0000AA;border:3px solid;border-top-color:#FFFFFF;border-left-color:#FFFFFF;border-right-color:#000000;border-bottom-color:#000000;color:#FFF;cursor:pointer;font-family:'Amiga4Ever',monospace;font-size:14px;letter-spacing:1px;animation:splash-pulse 2s infinite;text-shadow:0 0 8px rgba(255,255,255,0.5)}
40        #splash-btn:hover{animation:splash-pulse 0.5s infinite;text-shadow:0 0 15px #FFF}
41        @keyframes splash-pulse{0%{border-top-color:#FFF;border-left-color:#FFF}50%{border-top-color:#FF5500;border-left-color:#FF5500}100%{border-top-color:#FFF;border-left-color:#FFF}}
42        #boot-screen{width:100%;height:100vh;display:none;justify-content:center;align-items:center;background-color:#000;z-index:99998;position:fixed;top:0;left:0;transition:opacity 0.5s ease;overflow:auto}
43        #boot-screen.active{display:flex}
44        #boot-window{width:970px;max-width:95vw;height:auto;min-height:2100px;background-color:#0000AA;border:2px solid #FFFFFF;box-shadow:4px 4px 0 rgba(0,0,0,0.5);margin:20px auto;display:flex;flex-direction:column}
45        #boot-titlebar{background-color:#FF7700;color:#FFF;padding:6px 12px;font-size:13px;font-weight:bold;border-bottom:1px solid #000;flex-shrink:0}
46        #boot-cli{background-color:#000;color:#FFF;padding:15px;font-family:'Amiga4Ever',monospace;font-size:12px;line-height:1.6;min-height:200px;white-space:pre-wrap;text-align:left;direction:ltr;flex-grow:1}
47        #fast-load-btn{margin:15px auto 20px auto;padding:10px 24px;background-color:#0000AA;border:3px solid;border-top-color:#FFFFFF;border-left-color:#FFFFFF;border-right-color:#000000;border-bottom-color:#000000;color:#FFF;cursor:pointer;font-family:'Amiga4Ever',monospace;font-size:13px;letter-spacing:1px;animation:splash-pulse 2s infinite;text-shadow:0 0 8px rgba(255,255,255,0.5);display:block;text-align:center;flex-shrink:0}
48        #fast-load-btn:hover{animation:splash-pulse 0.5s infinite;text-shadow:0 0 15px #FFF}
49        @media(max-width:768px){#boot-window{width:95vw!important;min-height:auto;height:auto}#boot-cli{font-size:10px;padding:12px}#fast-load-btn{font-size:11px;padding:8px 18px}}
50        @media(max-width:480px){#boot-window{width:95vw!important;min-height:auto;height:auto}#boot-cli{font-size:8px;padding:10px;line-height:1.3}#fast-load-btn{font-size:10px;padding:6px 14px}}
51        #workbench-container{width:100%;flex:1;display:flex;flex-direction:column;overflow:hidden}
52        #top-white-bar{height:40px;height:calc(40px + env(safe-area-inset-top, 0px));background-color:#FFFFFF;color:#000000;display:flex;align-items:center;padding:0 15px;padding-top:env(safe-area-inset-top, 0px);font-size:16px;border-bottom:2px solid #000000;flex-shrink:0;position:relative;z-index:500}
53        #workbench-title{font-weight:bold;margin-right:20px}
54        #lang-toggle-header{margin-right:20px;padding:5px 14px;background-color:#E85050;border:2px solid;border-top-color:#FF8888;border-left-color:#FF8888;border-right-color:#AA0000;border-bottom-color:#AA0000;color:#FFF;cursor:pointer;font-family:'Amiga4Ever',monospace;font-size:13px;letter-spacing:0.5px}
55        #lang-toggle-header:hover{background-color:#FF6A6A}#articles-toggle{margin-left:auto;padding:6px 12px;background-color:#CCCCCC;border:2px solid;border-top-color:#FFFFFF;border-left-color:#FFFFFF;border-right-color:#000000;border-bottom-color:#000000;cursor:pointer;font-size:13px}
56        #articles-toggle:hover{background-color:#DDDDDD}#articles-menu{position:absolute;top:40px;right:15px;background-color:#FFFFFF;border:2px solid #000000;padding:5px 0;display:none;z-index:1000;min-width:220px;max-height:360px;overflow-y:auto}
57        .article-item{padding:8px 15px;color:#000000;cursor:pointer;font-size:13px;white-space:nowrap;border-bottom:1px solid #CCCCCC}
58        .article-item:last-child{border-bottom:none}.article-item:hover{background-color:#0000AA;color:white}
59        #desktop{position:relative;flex-grow:1;padding:25px 20px;background-color:#0000AA;overflow:auto}
60        #retro-tv-container{position:absolute;top:25px;right:25px;width:280px;z-index:0;user-select:none}
61        #retro-tv-frame{background-color:#222;border:5px solid #555;border-radius:14px;padding:10px;box-shadow:0 0 0 3px #111,0 0 20px rgba(0,0,0,0.6);position:relative;pointer-events:none}
62        #retro-tv-antenna{position:absolute;top:-30px;left:50%;transform:translateX(-50%);width:70px;height:34px}
63        .antenna-left,.antenna-right{position:absolute;bottom:0;width:3px;background-color:#888;border-radius:2px;transform-origin:bottom center}
64        .antenna-left{height:32px;left:24px;transform:rotate(-28deg)}.antenna-right{height:32px;right:24px;transform:rotate(28deg)}
65        .antenna-ball{position:absolute;top:-4px;left:50%;transform:translateX(-50%);width:7px;height:7px;background-color:#ccc;border-radius:50%}
66        #retro-tv-screen{width:100%;height:190px;background-color:#000;border:3px solid #333;border-radius:8px;overflow:hidden;position:relative;pointer-events:none}
67        #retro-tv-screen canvas{width:100%;height:100%;display:block}
68        #retro-tv-play-overlay{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:0;height:0;border-left:28px solid rgba(255,255,255,0.75);border-top:18px solid transparent;border-bottom:18px solid transparent;pointer-events:none;z-index:2;animation:tv-play-pulse 2.5s ease-in-out infinite;filter:drop-shadow(0 0 8px rgba(255,255,255,0.5))}
69        @keyframes tv-play-pulse{0%,100%{opacity:0.45;transform:translate(-50%,-50%) scale(1)}50%{opacity:1;transform:translate(-50%,-50%) scale(1.2)}}
70        #retro-tv-label{text-align:center;color:#FFAA66;font-size:12px;margin-top:7px;font-family:'Amiga4Ever',monospace;text-shadow:0 0 5px rgba(255,170,102,0.5);letter-spacing:1px;pointer-events:none}
71        #tv-click-overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:3;pointer-events:auto;cursor:pointer}
72        #tv-lightbox{display:none;position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:rgba(0,0,0,0.85);z-index:9999;justify-content:center;align-items:center;flex-direction:column}
73        #tv-lightbox.active{display:flex}#tv-lightbox-video{max-width:90vw;max-height:75vh;border:4px solid #555;border-radius:12px;box-shadow:0 0 40px rgba(0,0,0,0.8);background:#000}
74        #tv-lightbox-close{position:absolute;top:20px;right:30px;width:40px;height:40px;background-color:#FF5500;border:2px solid #FFF;border-radius:4px;color:#FFF;font-size:22px;text-align:center;line-height:36px;cursor:pointer;z-index:10000;font-family:'Amiga4Ever',monospace}
75        #tv-lightbox-close:hover{background-color:#FF7733}
76        #amiga-player{position:absolute;top:310px;right:25px;width:280px;height:90px;background-color:#1a1a2e;border:4px solid #555;border-radius:8px;box-shadow:0 0 0 2px #222,0 0 15px rgba(0,0,0,0.5);z-index:0;pointer-events:auto;display:flex;flex-direction:column;padding:8px 10px}
77        #player-display{width:100%;height:24px;background-color:#000;border:2px solid #333;border-radius:3px;margin-bottom:8px;overflow:hidden;position:relative}
78        #player-marquee{white-space:nowrap;color:#00FF88;font-family:'Amiga4Ever',monospace;font-size:12px;line-height:20px;position:absolute;animation:marquee 70s linear infinite}
79        @keyframes marquee{0%{transform:translateX(240px)}100%{transform:translateX(-100%)}}
80        #player-controls{display:flex;justify-content:center;align-items:center;gap:20px;flex-grow:1}
81        .player-btn{width:36px;height:36px;background-color:#444;border:2px solid;border-top-color:#888;border-left-color:#888;border-right-color:#222;border-bottom-color:#222;cursor:pointer;display:flex;align-items:center;justify-content:center;position:relative;transition:all 0.1s}
82        .player-btn:active{border-top-color:#222;border-left-color:#222;border-right-color:#888;border-bottom-color:#888}
83        .player-btn .prev-icon{width:0;height:0;border-top:8px solid transparent;border-bottom:8px solid transparent;border-right:12px solid #CCC;margin-left:4px}
84        .player-btn .prev-icon::after{content:'';position:absolute;
84left:10px;top:50%;transform:translateY(-50%);width:0;height:0;border-top:8px solid transparent;border-bottom:8px solid transparent;border-right:12px solid #CCC}
85        .player-btn .next-icon{width:0;height:0;border-top:8px solid transparent;border-bottom:8px solid transparent;border-left:12px solid #CCC;margin-right:4px}
86        .player-btn .next-icon::after{content:'';position:absolute;right:10px;top:50%;transform:translateY(-50%);width:0;height:0;border-top:8px solid transparent;border-bottom:8px solid transparent;border-left:12px solid #CCC}
87        .player-btn.play-btn .play-icon{width:0;height:0;border-top:9px solid transparent;border-bottom:9px solid transparent;border-left:15px solid #55FF55;margin-left:3px;animation:play-blink 2.5s infinite}
88        @keyframes play-blink{0%,65%{border-left-color:#55FF55}70%,100%{border-left-color:#FF3333}}
89        .player-btn.play-btn.playing .play-icon{border:none;width:14px;height:14px;background:linear-gradient(to right,#FFAA00 0%,#FFAA00 40%,transparent 40%,transparent 60%,#FFAA00 60%,#FFAA00 100%);animation:none;margin-left:0}
90        #online-game-banner{position:absolute;top:460px;right:25px;width:280px;height:46px;background-color:#1a1a1a;border-radius:4px;cursor:pointer;z-index:0;pointer-events:auto;display:flex;align-items:center;justify-content:center;font-family:'Amiga4Ever',monospace;color:#FFF;letter-spacing:1px;overflow:hidden}
91        #online-game-banner img{width:100%;height:100%;object-fit:contain;display:block}
92        #online-game-banner:hover{opacity:0.9}
93        #right-icon-panel{position:absolute;top:566px;right:25px;width:224px;background-color:#1a1a2e;border:4px solid #555;border-radius:8px;box-shadow:0 0 0 2px #222,0 0 15px rgba(0,0,0,0.5);z-index:0;pointer-events:auto;padding:14px 12px;display:flex;flex-direction:column;gap:14px}
94        .right-panel-item{width:100%;height:56px;background-color:#2a2a3e;border:2px solid;border-top-color:#666;border-left-color:#666;border-right-color:#111;border-bottom-color:#111;cursor:pointer;display:flex;align-items:center;justify-content:center;overflow:hidden}
95        .right-panel-item:hover{background-color:#3a3a4e}.right-panel-item:active{border-top-color:#111;border-left-color:#111;border-right-color:#666;border-bottom-color:#666}
96        .right-panel-display{width:90%;height:26px;background-color:#000;border:1px solid #333;border-radius:2px;display:flex;align-items:center;justify-content:center;overflow:hidden}
97        .right-panel-label{color:#FFAA66;font-family:'Amiga4Ever',monospace;font-size:12px;letter-spacing:0.5px;animation:label-glow 3s ease-in-out infinite;white-space:nowrap}
98        @keyframes label-glow{0%,100%{text-shadow:0 0 4px rgba(255,170,102,0.4)}50%{text-shadow:0 0 10px rgba(255,170,102,0.9)}}
99        #discussion-icon-panel{position:absolute;top:840px;right:25px;width:224px;background-color:#1a1a2e;border:4px solid #3a3a5e;border-radius:8px;box-shadow:0 0 0 2px #222,0 0 15px rgba(0,0,0,0.5);z-index:0;pointer-events:auto;padding:0}
100        .discussion-panel-item{width:100%;height:56px;background-color:#1e1e35;border:2px solid;border-top-color:#555;border-left-color:#555;border-right-color:#111;border-bottom-color:#111;cursor:pointer;display:flex;align-items:center;justify-content:center;overflow:hidden}
101        .discussion-panel-item:hover{background-color:#2a2a45}.discussion-panel-item:active{border-top-color:#111;border-left-color:#111;border-right-color:#555;border-bottom-color:#555}
102        .discussion-panel-display{width:90%;height:26px;background-color:#000;border:1px solid #3a3a5e;border-radius:2px;display:flex;align-items:center;justify-content:center;overflow:hidden}
103        .discussion-panel-label{color:#AAFFAA;font-family:'Amiga4Ever',monospace;font-size:11px;letter-spacing:0.5px;animation:discussion-label-glow 4s ease-in-out infinite;white-space:nowrap}
104        @keyframes discussion-label-glow{0%,100%{text-shadow:0 0 4px rgba(170,255,170,0.3)}50%{text-shadow:0 0 12px rgba(170,255,170,0.7)}}
105        #retro-bazaar-icon{position:absolute;top:926px;right:25px;width:224px;height:75px;background-color:#1a1a2e;border:3px solid #FFAA00;border-radius:8px;box-shadow:0 0 0 2px #222,0 0 15px rgba(0,0,0,0.5);
105cursor:pointer;display:flex;align-items:center;justify-content:center;animation:bazaar-glow 3s infinite;z-index:0}
106        #retro-bazaar-icon:hover{animation:bazaar-glow 0.5s infinite;box-shadow:0 0 0 2px #222,0 0 25px rgba(255,170,0,0.7)}
107        #retro-bazaar-icon .bazaar-label{color:#FFAA00;font-family:'Amiga4Ever',monospace;font-size:18px;letter-spacing:1px;text-shadow:0 0 8px rgba(255,170,0,0.5)}
108        @keyframes bazaar-glow{0%{border-color:#FFAA00;box-shadow:0 0 10px rgba(255,170,0,0.3)}50%{border-color:#FFD700;box-shadow:0 0 20px rgba(255,215,0,0.5)}100%{border-color:#FFAA00;box-shadow:0 0 10px rgba(255,170,0,0.3)}}
109        #amiga-emu-banner{float:left;clear:left;width:280px;height:46px;background-color:#111;border:3px solid #FF5500;border-radius:4px;cursor:pointer;z-index:0;pointer-events:auto;display:flex;align-items:center;justify-content:center;font-family:'Amiga4Ever',monospace;font-size:13px;color:#FFF;text-shadow:0 0 8px rgba(255,255,255,0.6);letter-spacing:1px;animation:neon-border 3s infinite;margin-bottom:20px;margin-left:0}
110        #amiga-emu-banner:hover{animation:neon-border 0.5s infinite;text-shadow:0 0 15px #FFF}
111        @keyframes neon-border{0%{border-color:#FF5500;box-shadow:0 0 12px #FF5500,inset 0 0 8px rgba(255,85,0,0.3)}25%{border-color:#FFFFFF;box-shadow:0 0 16px #FFFFFF,inset 0 0 10px rgba(255,255,255,0.3)}50%{border-color:#0088FF;box-shadow:0 0 16px #0088FF,inset 0 0 10px rgba(0,136,255,0.4)}75%{border-color:#888888;box-shadow:0 0 12px #CCCCCC,inset 0 0 8px rgba(136,136,136,0.3)}100%{border-color:#FF5500;box-shadow:0 0 12px #FF5500,inset 0 0 8px rgba(255,85,0,0.3)}}
112        #amiga-apps-banner{float:left;clear:left;width:196px;height:46px;background-color:#111;border:3px solid #0088FF;border-radius:4px;cursor:pointer;z-index:0;pointer-events:auto;display:flex;align-items:center;justify-content:center;font-family:'Amiga4Ever',monospace;font-size:12px;color:#FFF;text-shadow:0 0 8px rgba(255,255,255,0.6);letter-spacing:1px;animation:neon-border-simple 4.5s infinite;margin-bottom:20px;margin-left:0}
113        #amiga-apps-banner:hover{animation:neon-border-simple 0.6s infinite;text-shadow:0 0 15px #FFF}
114        @keyframes neon-border-simple{0%{border-color:#0088FF;box-shadow:0 0 10px #0088FF,inset 0 0 6px rgba(0,136,255,0.3)}50%{border-color:#FF5500;box-shadow:0 0 10px #FF5500,inset 0 0 6px rgba(255,85,0,0.3)}100%{border-color:#0088FF;box-shadow:0 0 10px #0088FF,inset 0 0 6px rgba(0,136,255,0.3)}}
115        #amiga-games-banner{float:left;clear:left;width:196px;height:46px;background-color:#111;border:3px solid #0088FF;border-radius:4px;cursor:pointer;z-index:0;pointer-events:auto;display:flex;align-items:center;justify-content:center;font-family:'Amiga4Ever',monospace;font-size:12px;color:#FFF;text-shadow:0 0 8px rgba(255,255,255,0.6);letter-spacing:1px;animation:neon-border-simple 4.5s infinite;margin-bottom:20px;margin-left:0}
116        #amiga-games-banner:hover{animation:neon-border-simple 0.6s infinite;text-shadow:0 0 15px #FFF}
117        .desktop-icon{position:relative;width:90px;text-align:center;cursor:pointer;padding:10px 5px;margin-bottom:20px;float:left;clear:left}
118        .desktop-icon:hover{background-color:rgba(255,255,255,0.3)}.icon-img{width:52px;height:52px;display:block;margin:0 auto 8px;object-fit:contain}
119        .icon-label{font-size:11px;color:white;text-shadow:1px 1px 0 #000;background-color:rgba(0,0,0,0.5);padding:2px 4px;white-space:nowrap;overflow:visible;text-overflow:clip;display:inline-block;max-width:100%}
120        .cart-icon-glow{outline:3px solid #FF5500;outline-offset:4px;filter:drop-shadow(0 0 8px #FF7733);animation:cart-glow-pulse 1.5s infinite alternate}
121        @keyframes cart-glow-pulse{from{outline-color:#FF5500;filter:drop-shadow(0 0 6px #FF7733)}to{outline-color:#FF7733;filter:drop-shadow(0 0 14px #FFAA00)}}
122        @keyframes gold-rotate{0%{filter:hue-rotate(0deg)}100%{filter:hue-rotate(360deg)}}.blog-icon-glow .icon-img{animation:gold-rotate 3s infinite linear}
123        .market-icon-glow .icon-img{animation:market-pulse 2s infinite alternate}
124        @keyframes market-pulse{0%{filter:brightness(1)}100%{filter:brightness(1.2)}}
125        .book-badge{width:120px;height:40px;position:relative;overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;font-family:'Inter','Segoe UI',system-ui,sans-serif;border-radius:4px;box-shadow:0 0 12px rgba(0,0,0,0.5),0 0 24px rgba(0,229,255,0.15);cursor:pointer;text-decoration:none;transition:all 0.4s;float:left;clear:left;margin:10px 5px 20px 5px}
126        .book-badge:hover{box-shadow:0 0 18px rgba(0,0,0,0.7),0 0 36px rgba(0,229,255,0.3);transform:translateY(-2px)}
127        .bb-slide{position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;transition:opacity 1.2s ease-in-out}
128        .bb-slide.active{opacity:1}
129        .bb-slide:nth-child(1){background:linear-gradient(180deg,#000060,#000040);border-bottom:2px solid #ffcc00}
130        .bb-slide:nth-child(2){background:linear-gradient(180deg,#1a1a3e,#0d0d2e);border-bottom:2px solid #ff6600}
131        .bb-slide:nth-child(3){background:linear-gradient(180deg,#4040a0,#202060);border-bottom:2px solid #8888ff}
132        .bb-slide:nth-child(4){background:linear-gradient(180deg,#333340,#1a1a20);border-bottom:2px solid #ff8800}
133        .bb-slide:nth-child(5){background:linear-gradient(180deg,#0060a0,#003060);border-bottom:2px solid #ffcc00}
134        .bb-slide:nth-child(6){background:linear-gradient(180deg,#000,#1a1a1a);border-bottom:2px solid #00ff41}
135        .bb-slide:nth-child(7){background:linear-gradient(180deg,#202020,#101010);border-bottom:2px solid #00cc00}
136        .bb-rainbow{position:absolute;top:0;left:0;width:200%;height:2px;background:linear-gradient(to right,#ff0000,#ffff00,#00ff00,#00ffff,#0000ff,#ff00ff,#ff0000);animation:bbRainbow 3s linear infinite;z-index:3}
137        @keyframes bbRainbow{0%{transform:translateX(0)}100%{transform:translateX(-50%)}}
138        .bb-scan{position:absolute;top:-10%;left:0;width:100%;height:8px;background:linear-gradient(180deg,transparent,rgba(255,255,255,0.06),transparent);animation:bbScan 4s linear infinite;z-index:3;pointer-events:none}
139        @keyframes bbScan{0%{top:-10%}100%{top:110%}}
140        .bb-text{position:relative;z-index:4;text-align:center}
141        .bb-line1{font-size:11px;font-weight:800;letter-spacing:0.5px;color:#ffcc00;text-shadow:0 0 6px rgba(255,255,255,0.4);line-height:1.2;transition:color 0.8s}
142        .bb-line2{font-size:8px;font-weight:600;letter-spacing:3px;color:#ccc;text-shadow:0 0 4px rgba(255,255,255,0.3);line-height:1.2;margin-top:4px;transition:color 0.8s}
143        .bb-line2::after{content:'';display:inline-block;width:7px;height:10px;background:#fff;margin-left:8px;vertical-align:middle;animation:bbCursorBlink 0.8s steps(1) infinite;box-shadow:0 0 4px #fff}
144        @keyframes bbCursorBlink{0%,100%{opacity:1}50%{opacity:0}
144}
145        .window{position:absolute;background-color:#0000AA;border:2px solid #FFFFFF;display:none;z-index:1;overflow:hidden;box-shadow:4px 4px 0 rgba(0,0,0,0.3);min-width:250px;min-height:200px}
146        .window.active{display:block;z-index:100}.window.active>.window-header{background-color:#FF7700;color:#FFFFFF}
147        .window.minimized{height:33px!important;min-height:33px!important}.window.minimized .window-content{display:none}
148        .window-header{background-color:#FFFFFF;color:#000000;padding:6px 12px 4px 12px;font-size:14px;display:flex;justify-content:space-between;align-items:center;cursor:move;user-select:none;position:relative;border-bottom:1px solid #000000;touch-action:none;height:33px;box-sizing:border-box}
149        .window-title-container{display:flex;align-items:center;flex-grow:1;min-width:0}.window-title{font-weight:bold;margin-right:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:0}
150        .parallel-lines{flex-grow:1;height:12px;background:linear-gradient(to bottom,#000 0%,#000 30%,transparent 30%,transparent 70%,#000 70%,#000 100%);margin-right:12px;min-width:50px}
151        .window-controls{display:flex;gap:8px;flex-shrink:0}.window-btn{width:20px;height:20px;background-color:#888;border:1px solid;border-top-color:#FFF;border-left-color:#FFF;border-right-color:#000;border-bottom-color:#000;font-size:12px;text-align:center;line-height:18px;cursor:pointer;z-index:20;position:relative}
152        .window-btn:hover{background-color:#AAA}.window-btn.close{background-color:#FF5500}.window-btn.close:hover{background-color:#FF7733}
153        .window-btn.manage-btn{background-color:#000;color:#FFF;width:50px;font-size:10px;border-top-color:#444;border-left-color:#444;border-right-color:#000;border-bottom-color:#000}
154        .window-btn.manage-btn:hover{background-color:#222}
155        .resize-handle{position:absolute;bottom:0;right:0;width:20px;height:20px;cursor:se-resize;z-index:1000}
156        .resize-handle::after{content:'';position:absolute;bottom:3px;right:3px;width:12px;height:12px;background:linear-gradient(135deg,#FFFFFF 50%,transparent 50%)}
157        .window.minimized .resize-handle{display:none}
158        .window-content{padding:20px;font-size:14px;color:#FFF;height:calc(100% - 33px);overflow:auto;background-color:#0000AA;line-height:1.5;text-align:justify;pointer-events:auto}
159        .window-content.no-padding{padding:0;overflow:hidden;text-align:initial}.window-content.no-padding iframe{width:100%;height:100%;border:none;background-color:#FFF}
160        .article-content{max-width:800px;margin:0 auto}.article-title{font-size:18px;margin-bottom:15px;color:#FFF;border-bottom:2px solid #FF5500;padding-bottom:5px}
161        .article-paragraph{margin-bottom:15px;text-align:justify}.article-paragraph p{text-align:justify;text-justify:inter-word;hyphens:auto;word-spacing:-0.5px;margin-bottom:12px}
162        .article-image{display:block;max-width:100%;height:auto;margin:18px auto;border:2px solid #FFF;background-color:rgba(0,0,0,0.3);padding:4px;image-rendering:auto}
163        .article-hashtags{font-size:10px;color:#888;line-height:1.6;padding:10px 0;user-select:text;pointer-events:auto;margin-top:15px;border-top:1px solid rgba(255,255,255,0.2)}
164        .rtl-text{direction:rtl;text-align:justify}.rtl-text p{direction:rtl;text-align:justify}.ltr-text{direction:ltr;text-align:justify}.ltr-text p{direction:ltr;text-align:justify}
165        .about-logo{width:110px;height:auto;max-height:110px;object-fit:contain;object-position:center;display:block;margin:0 auto 15px}
166        .content-text{background-color:rgba(255,255,255,0.1);border:1px dashed #FFF;padding:20px;margin:15px 0;display:none;grid-template-columns:repeat(2,1fr);gap:25px}
167        @media(max-width:600px){.content-text{grid-template-columns:1fr}}
168        .product-icon{text-align:center;cursor:pointer;padding:15px 10px;border:1px solid transparent;transition:all 0.2s}
169        .product-icon:hover{background-color:rgba(255,255,255,0.15);border:1px solid rgba(255,255,255,0.3)}
170        .product-icon-label{font-size:12px;color:white;margin-top:8px;word-break:break-word;min-height:30px;display:flex;align-items:center;justify-content:center}
171        .product-image-container{margin:15px 0;text-align:center}.product-image{max-width:100%;max-height:250px;border:2px solid #FFF;background-color:rgba(0,0,0,0.3);padding:5px}
172        .product-image-placeholder{width:400px;height:300px;max-width:100%;
172border:2px dashed #FFF;background-color:rgba(255,255,255,0.1);display:flex;align-items:center;justify-content:center;margin:0 auto;color:#888;font-size:14px}
173        .cart-item{display:flex;justify-content:space-between;align-items:center;padding:12px 0;border-bottom:1px solid rgba(255,255,255,0.3)}
174        .cart-item:last-child{border-bottom:none}.cart-item-info{flex-grow:1}.cart-item-name{font-weight:bold;margin-bottom:3px}.cart-item-price{color:#FFAA66;font-size:13px}
175        .cart-item-remove{color:#F55;cursor:pointer;font-size:16px;margin-left:15px;width:20px;height:20px;display:flex;align-items:center;justify-content:center;border:1px solid #F55;background-color:rgba(255,0,0,0.1)}
176        .cart-item-remove:hover{background-color:rgba(255,0,0,0.3)}.cart-total{margin-top:25px;padding-top:15px;border-top:2px solid #FFF;font-size:16px;text-align:right}
177        .cart-total-label{font-weight:bold;margin-bottom:8px}.cart-total-amount{color:#FFAA66;font-size:18px}
178        .cart-buttons{display:flex;justify-content:space-between;margin-top:25px;gap:15px}
179        .cart-btn{flex:1;padding:10px;text-align:center;cursor:pointer;border:2px solid;border-top-color:#FFF;border-left-color:#FFF;border-right-color:#000;border-bottom-color:#000;background-color:#888;font-family:'Amiga4Ever',monospace;font-size:14px}
180        .cart-btn:hover{background-color:#AAA}.cart-btn.confirm{background-color:#5A5;color:white}.cart-btn.confirm:hover{background-color:#6C6}.cart-btn.cancel{background-color:#888}
181        .cart-input-section{margin-top:25px;padding-top:20px;border-top:1px dashed #FFF;display:none}.cart-input-group{margin-bottom:20px}.cart-input-label{display:block;margin-bottom:8px;color:#FFAA66}
182        .cart-input{width:100%;padding:10px;background-color:rgba(0,0,0,0.3);border:1px solid #FFF;color:white;font-family:'Amiga4Ever',monospace;font-size:14px}
183        .cart-input:focus{outline:2px solid #FF5500;outline-offset:1px}
184        .cart-final-buttons{display:none;justify-content:center;gap:20px;margin-top:25px}
185        .cart-final-btn{width:60px;height:60px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;border:2px solid;border-top-color:#FFF;border-left-color:#FFF;border-right-color:#000;border-bottom-color:#000;font-size:24px;transition:all 0.2s}
186        .cart-final-btn.send{background-color:#5A5;color:white}.cart-final-btn.send:hover{background-color:#6C6;transform:scale(1.05)}
187        .cart-final-btn.cancel-final{background-color:#A55;color:white}.cart-final-btn.cancel-final:hover{background-color:#C66;transform:scale(1.05)}
188        .email-form{margin-top:20px}.email-textarea{width:100%;height:150px;padding:15px;background-color:rgba(0,0,0,0.3);border:2px solid #FFF;color:white;font-family:'Amiga4Ever',monospace;font-size:14px;resize:vertical;margin-bottom:20px}
189        .email-textarea:focus{outline:2px solid #FF5500;outline-offset:2px}
190        .email-send-btn{padding:12px 30px;background-color:#888;color:white;border:2px solid;border-top-color:#FFF;border-left-color:#FFF;border-right-color:#000;border-bottom-color:#000;cursor:not-allowed;font-family:'Amiga4Ever',monospace;font-size:14px;float:right}
191        .email-send-btn.active{background-color:#5A5;cursor:pointer}.email-send-btn.active:hover{background-color:#6C6}
192        .glowing-link{color:#FFAA66;text-decoration:none;animation:pulse-link 2s infinite alternate;cursor:pointer;font-weight:bold;display:inline-block}
193        @keyframes pulse-link{from{text-shadow:0 0 5px #FF5500,0 0 10px #FF5500}to{text-shadow:0 0 15px #FF7733,0 0 25px #FF7733}}
194        #footer{height:32px;background-color:#000;color:#FFF;display:flex;align-items:center;padding:0 15px;padding-bottom:env(safe-area-inset-bottom, 0px);font-size:13px;flex-shrink:0;font-family:'Amiga4Ever',monospace}
195        #footer-left{flex-grow:1;text-transform:lowercase}#footer-right{text-align:right;font-family:monospace;font-size:14px}
196        .window-content::-webkit-scrollbar{width:14px;height:14px}.window-content::-webkit-scrollbar-track{background:#000066}
197        .window-content::-webkit-scrollbar-thumb{background:#FF5500;border:2px solid #000066;border-radius:0}
198        .window-content::-webkit-scrollbar-thumb:hover{background:#FF7700}.window-content::-webkit-scrollbar-corner{background:#000066}
199        .news-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:15px;background-color:rgba(255,255,255,0.08);
199border:1px dashed #FFF;padding:15px;margin-top:20px;max-height:500px;overflow-y:auto}
200        .news-card{background-color:rgba(0,0,0,0.3);border:1px solid rgba(255,255,255,0.2);padding:10px;cursor:pointer;text-align:center;transition:all 0.2s;position:relative}
201        .news-card:hover{border-color:#FFAA66;background-color:rgba(0,0,0,0.5)}
202        .news-card img{width:100%;height:140px;object-fit:cover;border:1px solid #555;display:block;margin-bottom:8px}
203        .news-card .news-title{color:#FFAA66;font-size:13px;font-weight:bold;line-height:1.4;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
204        .news-detail-slider{position:relative;width:100%;margin-bottom:15px;text-align:center}
205        .news-detail-slider img{max-width:100%;max-height:300px;object-fit:contain;border:2px solid #555}
206        .news-detail-slider .slider-btn{position:absolute;top:50%;transform:translateY(-50%);background:rgba(0,0,0,0.7);color:#FFF;border:1px solid #FFF;cursor:pointer;font-size:20px;width:32px;height:32px;text-align:center;line-height:30px;z-index:2}
207        .news-detail-slider .slider-btn.prev{left:6px}.news-detail-slider .slider-btn.next{right:6px}
208        .news-reporter-section{display:flex;align-items:center;gap:12px;margin-top:20px;padding-top:15px;border-top:1px solid rgba(255,255,255,0.3)}
209        .news-reporter-photo{width:44px;height:44px;border-radius:50%;object-fit:cover;border:2px solid #FFAA66}
210        .rate-btn{padding:6px 14px;background-color:#333;border:2px solid;border-top-color:#666;border-left-color:#666;border-right-color:#111;border-bottom-color:#111;color:#FFAA66;cursor:pointer;font-family:'Amiga4Ever',monospace;font-size:11px}
211        .rate-btn:hover{background-color:#444}.rate-btn:disabled{opacity:0.5;cursor:not-allowed}
212        .stars-container{display:inline-flex;gap:4px;margin-left:8px}
213        .star{cursor:pointer;font-size:20px;color:#555;transition:color 0.2s}
214        .star.active,.star:hover{color:#FFD700}
215        .reporter-rating{color:#FFD700;font-size:12px;margin-top:4px}
216        .rating-confirm-btn{display:inline-block;margin-left:10px;padding:3px 10px;background-color:#5A5;border:1px solid #FFF;color:#FFF;cursor:pointer;font-family:'Amiga4Ever',monospace;font-size:11px;vertical-align:middle}
217        .rating-confirm-btn:hover{background-color:#6C6}
218        .admin-del-btn,.admin-edit-btn{display:inline-block;position:absolute;top:5px;width:24px;height:24px;background-color:#333;border:1px solid #FFF;color:#FFF;cursor:pointer;font-family:'Amiga4Ever',monospace;font-size:13px;text-align:center;line-height:22px;z-index:10}
219        .admin-del-btn{right:5px;background-color:#A55}.admin-del-btn:hover{background-color:#C66}
220        .admin-edit-btn{right:34px;background-color:#55A}.admin-edit-btn:hover{background-color:#77C}
221        #delete-confirm-modal-overlay{display:none;position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:rgba(0,0,0,0.85);z-index:10007;justify-content:center;align-items:center}
222        #delete-confirm-modal-overlay.active{display:flex}
223        #delete-confirm-modal{background-color:#0000AA;border:2px solid #FFF;padding:25px;width:380px;max-width:90vw;text-align:center;box-shadow:4px 4px 0 rgba(0,0,0,0.5)}
224        #delete-confirm-modal .confirm-text{color:#FFF;font-family:'Amiga4Ever',monospace;font-size:14px;margin-bottom:20px;line-height:1.5}
225        #delete-confirm-modal .modal-buttons{display:flex;justify-content:center;gap:20px}
226        #delete-confirm-modal .modal-btn{padding:10px 24px;border:2px solid;border-top-color:#FFF;border-left-color:#FFF;border-right-color:#000;border-bottom-color:#000;cursor:pointer;font-family:'Amiga4Ever',monospace;font-size:14px}
227        #delete-confirm-modal .modal-btn.confirm-yes{background-color:#C44;color:#FFF}#delete-confirm-modal .modal-btn.confirm-yes:hover{background-color:#D55}
228        #delete-confirm-modal .modal-btn.confirm-no{background-color:#888;color:#FFF}#delete-confirm-modal .modal-btn.confirm-no:hover{background-color:#999}
229        #code-modal-overlay,#news-submit-modal-overlay,#team-apply-modal-overlay,#market-access-modal-overlay{display:none;position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:rgba(0,0,0,0.85);z-index:10001;justify-content:center;align-items:center}
230        #code-modal-overlay.active,#news-submit-modal-overlay.active,#team-apply-modal-overlay.active,#market-access-modal-overlay.active{display:flex}
231        #code-modal,#news-submit-modal,#team-apply-modal,#market-access-modal{background-color:#0000AA;border:2px solid #FFFFFF;padding:20px;width:420px;max-width:90vw;max-height:85vh;overflow-y:auto;box-shadow:4px 4px 0 rgba(0,0,0,0.5)}
232        #code-modal input,#news-submit-modal input,#news-submit-modal textarea,#team-apply-modal input,#market-access-modal input{width:100%;margin-bottom:8px;background:#111;border:1px solid #FFF;color:#FFF;font-family:'Amiga4Ever',monospace;font-size:13px;padding:8px}
233        #news-submit-modal textarea{height:80px;resize:vertical}
234        #code-modal .modal-hint,#news-submit-modal .modal-hint,#team-apply-modal .modal-hint,#market-access-modal .modal-hint{font-size:11px;color:#FFAA66;margin-bottom:8px}
235        #market-access-modal .market-access-text{font-size:13px;color:#FFF;line-height:1.8;margin-bottom:15px;text-align:justify;direction:rtl}
236        #code-modal .modal-buttons,#news-submit-modal .modal-buttons,#team-apply-modal .modal-buttons,#market-access-modal .modal-buttons{display:flex;justify-content:space-between;gap:8px;margin-top:10px;flex-wrap:wrap}
237        #code-modal .modal-btn,#news-submit-modal .modal-btn,#team-apply-modal .modal-btn,#market-access-modal .modal-btn{padding:8px 16px;border:2px solid;border-top-color:#FFF;border-left-color:#FFF;border-right-color:#000;border-bottom-color:#000;background-color:#888;color:#FFF;
237cursor:pointer;font-family:'Amiga4Ever',monospace;font-size:12px}
238        #code-modal .modal-btn.send,#news-submit-modal .modal-btn.send,#team-apply-modal .modal-btn.send,#market-access-modal .modal-btn.send{background-color:#5A5}#code-modal .modal-btn.send:hover,#news-submit-modal .modal-btn.send:hover,#team-apply-modal .modal-btn.send:hover,#market-access-modal .modal-btn.send:hover{background-color:#6C6}
239        #code-modal .modal-btn.cancel,#news-submit-modal .modal-btn.cancel,#team-apply-modal .modal-btn.cancel,#market-access-modal .modal-btn.cancel{background-color:#A55}#code-modal .modal-btn.cancel:hover,#news-submit-modal .modal-btn.cancel:hover,#team-apply-modal .modal-btn.cancel:hover,#market-access-modal .modal-btn.cancel:hover{background-color:#C66}
240        #market-access-modal .modal-btn.request{background-color:#0088CC}#market-access-modal .modal-btn.request:hover{background-color:#00AAFF}
241        .discussion-submit-banner{display:block;width:196px;margin:15px auto;height:46px;background-color:#111;border:3px solid #0088FF;border-radius:4px;cursor:pointer;font-family:'Amiga4Ever',monospace;font-size:12px;color:#FFF;text-shadow:0 0 8px rgba(255,255,255,0.6);letter-spacing:1px;animation:neon-border-simple 4.5s infinite;text-align:center;line-height:40px}
242        .discussion-submit-banner:hover{animation:neon-border-simple 0.6s infinite;text-shadow:0 0 15px #FFF}
243        #shop-modal-overlay{display:none;position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:rgba(0,0,0,0.85);z-index:10001;justify-content:center;align-items:center}
244        #shop-modal-overlay.active{display:flex}#shop-modal{background-color:#0000AA;border:2px solid #FFFFFF;padding:20px;width:420px;max-width:90vw;box-shadow:4px 4px 0 rgba(0,0,0,0.5)}
245        #shop-modal input,#shop-modal select,#shop-modal textarea{width:100%;margin-bottom:8px;background:#111;border:1px solid #FFF;color:#FFF;font-family:'Amiga4Ever',monospace;font-size:13px;padding:8px}
246        #shop-modal select option{background:#111;color:#FFF}
247        #shop-modal .modal-hint{font-size:11px;color:#FFAA66;margin-bottom:8px}
248        #shop-modal .modal-buttons{display:flex;justify-content:space-between;gap:10px;margin-top:10px}
249        #shop-modal .modal-btn{padding:8px 20px;border:2px solid;border-top-color:#FFF;border-left-color:#FFF;border-right-color:#000;border-bottom-color:#000;background-color:#888;color:#FFF;cursor:pointer;font-family:'Amiga4Ever',monospace;font-size:13px}
250        #shop-modal .modal-btn.send{background-color:#5A5}#shop-modal .modal-btn.send:hover{background-color:#6C6}
251        #shop-modal .modal-btn.cancel{background-color:#A55}#shop-modal .modal-btn.cancel:hover{background-color:#C66}
252        .shop-modal-hint{font-size:11px;color:#FFAA66;text-align:center;margin-top:12px;line-height:1.5}
253        #success-alert-overlay{display:none;position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:rgba(0,0,0,0.7);z-index:10002;justify-content:center;align-items:center}
254        #success-alert-overlay.active{display:flex}#success-alert{background-color:#0000AA;border:2px solid #FFF;padding:25px;width:320px;max-width:90vw;text-align:center;box-shadow:4px 4px 0 rgba(0,0,0,0.5)}
255        #success-alert .alert-icon{font-size:32px;margin-bottom:12px}
256        #success-alert .alert-text{color:#FFF;font-family:'Amiga4Ever',monospace;font-size:13px;margin-bottom:18px;line-height:1.5}
257        #success-alert .alert-btn{background-color:#CCC;border:2px solid;border-top-color:#FFF;border-left-color:#FFF;border-right-color:#000;border-bottom-color:#000;padding:7px 30px;cursor:pointer;font-family:'Amiga4Ever',monospace;font-size:13px;color:#000}
258        #success-alert .alert-btn:hover{background-color:#DDD}
259        .disclaimer-text{color:#FFAA66;font-size:11px}
260        .market-ads-box{background-color:rgba(255,255,255,0.08);border:1px dashed #FFF;padding:15px;margin-top:20px;max-height:400px;overflow-y:auto;display:flex;flex-direction:column;gap:12px}
261        .ad-card{background-color:rgba(0,0,0,0.3);border:1px solid rgba(255,255,255,0.2);padding:12px;cursor:pointer;text-align:center}.ad-card:hover{border-color:#FFAA66}
262        .ad-card .ad-title{color:#FFAA66;font-size:14px;margin-bottom:6px;font-weight:bold}
263        .ad-card .ad-summary{font-size:12px;color:#CCC;margin-bottom:8px}.ad-card .ad-slider{display:flex;align-items:center;justify-content:center;gap:8px;position:relative}
264        .ad-card .ad-slider img{width:100%;max-height:160px;object-fit:cover;border:1px solid #555}
265        .ad-card .ad-slider .slider-btn{position:absolute;top:50%;transform:translateY(-50%);background:rgba(0,0,0,0.7);color:#FFF;border:1px solid #FFF;
265cursor:pointer;font-size:16px;width:26px;height:26px;text-align:center;line-height:24px;z-index:2}
266        .ad-card .ad-slider .slider-btn.prev{left:4px}.ad-card .ad-slider .slider-btn.next{right:4px}
267        .ad-card .ad-province{font-size:12px;color:#FFAA66;margin-top:8px}
268        .ad-card .ad-date{font-size:10px;color:#888;margin-top:4px}
269        .ad-card .ad-violation-bar{width:100%;background-color:#FFD700;color:#000;font-size:10px;padding:4px 0;margin-top:8px;text-align:center;font-weight:bold}
270        #ad-lightbox{display:none;position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:rgba(0,0,0,0.9);z-index:10003;justify-content:center;align-items:center;flex-direction:column}
271        #ad-lightbox.active{display:flex}#ad-lightbox-content{background-color:#0000AA;border:2px solid #FFF;padding:20px;width:600px;max-width:90vw;max-height:85vh;overflow-y:auto}
272        #ad-lightbox .ad-lightbox-slider{position:relative;width:100%;margin-bottom:15px}#ad-lightbox .ad-lightbox-slider img{width:100%;max-height:200px;object-fit:contain;border:2px solid #555}
273        #ad-lightbox .ad-lightbox-slider .slider-btn{position:absolute;top:50%;transform:translateY(-50%);background:rgba(0,0,0,0.7);color:#FFF;border:1px solid #FFF;cursor:pointer;font-size:20px;width:32px;height:32px;text-align:center;line-height:30px;z-index:2}
274        #ad-lightbox .ad-lightbox-slider .slider-btn.prev{left:6px}#ad-lightbox .ad-lightbox-slider .slider-btn.next{right:6px}
275        #ad-lightbox .ad-lightbox-title{font-size:16px;color:#FFAA66;margin-bottom:10px;font-weight:bold;text-align:center}
276        #ad-lightbox .ad-lightbox-name{font-size:13px;color:#FFF;margin-bottom:6px;text-align:center}
277        #ad-lightbox .ad-lightbox-phone{font-size:13px;color:#FFF;margin-bottom:6px;text-align:center}
278        #ad-lightbox .ad-lightbox-desc{font-size:13px;color:#FFF;margin-bottom:12px;line-height:1.6;text-align:center}
279        #ad-lightbox .ad-lightbox-close{position:absolute;top:20px;right:30px;width:40px;height:40px;background-color:#FF5500;border:2px solid #FFF;border-radius:4px;color:#FFF;font-size:22px;text-align:center;line-height:36px;cursor:pointer;z-index:10004;font-family:'Amiga4Ever',monospace}
280        #ad-lightbox .ad-lightbox-close:hover{background-color:#FF7733}
281        #ad-lightbox .ad-lightbox-report-btn{display:block;width:200px;margin:15px auto 0;padding:8px;background-color:#A55;border:2px solid;border-top-color:#FFF;border-left-color:#FFF;border-right-color:#000;border-bottom-color:#000;color:#FFF;cursor:pointer;font-family:'Amiga4Ever',monospace;font-size:12px;text-align:center}
282        #ad-lightbox .ad-lightbox-report-btn:hover{background-color:#C66}
283        #ad-submit-modal-overlay{display:none;position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:rgba(0,0,0,0.85);z-index:10001;justify-content:center;align-items:center}
284        #ad-submit-modal-overlay.active{display:flex}#ad-submit-modal{background-color:#0000AA;border:2px solid #FFFFFF;padding:20px;width:460px;max-width:90vw;max-height:85vh;overflow-y:auto;box-shadow:4px 4px 0 rgba(0,0,0,0.5)}
285        #ad-submit-modal input,#ad-submit-modal textarea{width:100%;margin-bottom:8px;background:#111;border:1px solid #FFF;color:#FFF;font-family:'Amiga4Ever',monospace;font-size:13px;padding:8px}
286        #ad-submit-modal textarea{height:80px;resize:vertical}
287        #ad-submit-modal .modal-hint{font-size:11px;color:#FFAA66;margin-bottom:8px}
288        #ad-submit-modal .modal-buttons{display:flex;justify-content:flex-end;gap:10px;margin-top:10px}
289        #ad-submit-modal .modal-btn{padding:8px 20px;border:2px solid;border-top-color:#FFF;border-left-color:#FFF;border-right-color:#000;border-bottom-color:#000;background-color:#888;color:#FFF;cursor:pointer;font-family:'Amiga4Ever',monospace;font-size:13px}
290        #ad-submit-modal .modal-btn.send{background-color:#5A5}#ad-submit-modal .modal-btn.send:hover{background-color:#6C6}
291        #ad-submit-modal .modal-btn.cancel{background-color:#A55}#ad-submit-modal .modal-btn.cancel:hover{background-color:#C66}
292        #ad-submit-modal .upload-hint{font-size:11px;color:#FFAA66;text-align:center;margin-top:12px;line-height:1.5}
293        #ad-submit-modal .upload-hint a{color:#FFAA66;text-decoration:underline;cursor:pointer}
294        .market-submit-banner{display:block;width:196px;margin:15px auto;height:46px;background-color:#111;border:3px solid #FFAA00;border-radius:4px;cursor:pointer;font-family:'Amiga4Ever',monospace;font-size:12px;color:#FFF;text-shadow:0 0 8px rgba(255,255,255,0.6);letter-spacing:1px;animation:neon-border-market 3s infinite;text-align:center;line-height:40px}
295        .market-submit-banner:hover{animation:neon-border-market 0.6s infinite}
296        @keyframes neon-border-market{0%{border-color:#FFAA00;box-shadow:0 0 10px #FFAA00}50%{border-color:#FF5500;box-shadow:0 0 10px #FF5500}100%{border-color:#FFAA00;box-shadow:0 0 10px #FFAA00}}
297        .products-dynamic-box{background-color:rgba(255,255,255,0.08);
297border:1px dashed #FFF;padding:15px;margin-top:20px;max-height:450px;overflow-y:auto;display:flex;flex-direction:column;gap:15px}
298        .product-card-dynamic{background-color:rgba(0,0,0,0.3);border:1px solid rgba(255,255,255,0.2);padding:15px;text-align:center;cursor:default}.product-card-dynamic:hover{border-color:#FFAA66}
299        .product-card-dynamic .product-dynamic-title{color:#FFAA66;font-size:15px;font-weight:bold;margin-bottom:8px}
300        .product-card-dynamic .product-dynamic-desc{color:#CCC;font-size:12px;margin-bottom:8px;line-height:1.5}
301        .product-card-dynamic .product-dynamic-price{color:#FFAA66;font-size:14px;font-weight:bold;margin-bottom:10px}
302        .product-card-dynamic .product-add-cart-btn{display:inline-block;padding:6px 16px;background-color:#5A5;border:2px solid;border-top-color:#FFF;border-left-color:#FFF;border-right-color:#000;border-bottom-color:#000;color:#FFF;cursor:pointer;font-family:'Amiga4Ever',monospace;font-size:12px}
303        .product-card-dynamic .product-add-cart-btn:hover{background-color:#6C6}
304        .product-slider{position:relative;display:flex;align-items:center;justify-content:center;gap:8px;margin-bottom:10px}
305        .product-slider img{width:100%;max-width:200px;max-height:200px;object-fit:contain;border:1px solid #555}
306        .product-slider .slider-btn{position:absolute;top:50%;transform:translateY(-50%);background:rgba(0,0,0,0.7);color:#FFF;border:1px solid #FFF;cursor:pointer;font-size:16px;width:26px;height:26px;text-align:center;line-height:24px;z-index:2}
307        .product-slider .slider-btn.prev{left:20px}.product-slider .slider-btn.next{right:20px}
308        #admin-pass-products-modal-overlay,#admin-pass-discussion-modal-overlay{display:none;position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:rgba(0,0,0,0.85);z-index:10005;justify-content:center;align-items:center}
309        #admin-pass-products-modal-overlay.active,#admin-pass-discussion-modal-overlay.active{display:flex}
310        #admin-pass-products-modal,#admin-pass-discussion-modal{background-color:#0000AA;border:2px solid #FFF;padding:20px;width:380px;max-width:90vw;box-shadow:4px 4px 0 rgba(0,0,0,0.5)}
311        #admin-pass-products-modal input,#admin-pass-discussion-modal input{width:100%;margin-bottom:8px;background:#111;border:1px solid #FFF;color:#FFF;font-family:'Amiga4Ever',monospace;font-size:14px;padding:10px;letter-spacing:2px}
312        #admin-pass-products-modal .modal-buttons,#admin-pass-discussion-modal .modal-buttons{display:flex;justify-content:flex-end;gap:10px;margin-top:10px}
313        #admin-pass-products-modal .modal-btn,#admin-pass-discussion-modal .modal-btn{padding:8px 20px;border:2px solid;border-top-color:#FFF;border-left-color:#FFF;border-right-color:#000;border-bottom-color:#000;background-color:#888;color:#FFF;cursor:pointer;font-family:'Amiga4Ever',monospace;font-size:13px}
314        #product-admin-modal-overlay{display:none;position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:rgba(0,0,0,0.85);z-index:10005;justify-content:center;align-items:center}
315        #product-admin-modal-overlay.active{display:flex}
316        #product-admin-modal{background-color:#0000AA;border:2px solid #FFF;padding:20px;width:480px;max-width:90vw;max-height:85vh;overflow-y:auto;box-shadow:4px 4px 0 rgba(0,0,0,0.5)}
317        #product-admin-modal input,#product-admin-modal textarea{width:100%;margin-bottom:10px;background:#111;border:1px solid #FFF;color:#FFF;font-family:'Amiga4Ever',monospace;font-size:13px;padding:8px}
318        #product-admin-modal textarea{height:80px;resize:vertical}
319        #product-confirm-modal-overlay{display:none;position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:rgba(0,0,0,0.85);z-index:10006;justify-content:center;align-items:center}
320        #product-confirm-modal-overlay.active{display:flex}
321        #product-confirm-modal{background-color:#0000AA;border:2px solid #FFF;padding:25px;width:380px;max-width:90vw;text-align:center;box-shadow:4px 4px 0 rgba(0,0,0,0.5)}
322        .cart-notification,.comment-notification{position:fixed;top:20px;left:50%;transform:translateX(-50%);color:#FFF;padding:12px 25px;border:2px solid #FFF;font-family:'Amiga4Ever',monospace;font-size:14px;z-index:20000;box-shadow:4px 4px 0 rgba(0,0,0,0.5);animation:notificationFade 2s forwards;pointer-events:none}
323        .cart-notification{background-color:#5A5}.comment-notification{background-color:#0088FF}
324        @keyframes notificationFade{0%{opacity:0;top:0}15%{opacity:1;top:20px}75%{opacity:1;top:20px}100%{opacity:0;top:0}}
325        input,textarea,select{user-select:text!important;pointer-events:auto!important;-webkit-user-select:text!important}
326        .emu-launch-btn-new{display:block;width:260px;margin:50px auto 0;padding:12px 20px;background-color:#AA00FF;border:3px solid #FF5500;border-radius:4px;cursor:pointer;font-family:'Amiga4Ever',monospace;font-size:14px;color:#FFF;text-align:center;text-shadow:0 0 8px rgba(255,255,255,0.6);letter-spacing:1px;animation:neon-border-emu 3s infinite;text-decoration:none}
327        .emu-launch-btn-new:hover{animation:neon-border-emu 0.5s infinite;text-shadow:0 0 15px #FFF}
328        @keyframes neon-border-emu{0%{border-color:#FF5500;box-shadow:0 0 12px #FF5500,inset 0 0 8px rgba(255,85,0,0.3)}25%{border-color:#FFFFFF;box-shadow:0 0 16px #FFFFFF,inset 0 0 10px rgba(255,255,255,0.3)}50%{border-color:#FFD700;box-shadow:0 0 16px #FFD700,inset 0 0 10px rgba(255,215,0,0.4)}75%{border-color:#888888;box-shadow:0 0 12px #CCCCCC,inset 0 0 8px rgba(136,136,136,0.3)}100%{border-color:#FF5500;box-shadow:0 0 12px #FF5500,inset 0 0 8px rgba(255,85,0,0.3)}}
329        .bazaar-shop-card{background-color:rgba(0,0,0,0.4);border:2px solid rgba(255,170,0,0.3);padding:15px;text-align:center;cursor:pointer;transition:all 0.2s;margin-bottom:15px;overflow:hidden}
330        .bazaar-shop-card:hover{border-color:#FFAA00;background-color:rgba(0,0,0,0.6);box-shadow:0 0 15px rgba(255,170,0,0.2)}
331        .bazaar-shop-card img{width:auto;max-width:100%;height:auto;max-height:390px;object-fit:contain;display:block;margin:0 auto 12px;border:1px solid #555}
332        .bazaar-shop-card .shop-name{color:#FFAA66;font-size:14px;font-weight:bold;margin-top:8px}
333        .about-contact-btn{display:inline-block;margin-top:20px;padding:8px 22px;background-color:#0088CC;color:#FFF;border:2px solid;border-top-color:#00AAFF;border-left-color:#00AAFF;border-right-color:#004466;border-bottom-color:#004466;cursor:pointer;font-family:'Amiga4Ever',monospace;font-size:13px;text-decoration:none;text-align:center;letter-spacing:1px;transition:all 0.2s}
334        .about-contact-btn:hover{background-color:#00AAFF;text-shadow:0 0 8px rgba(255,255,255,0.5);border-top-color:#00CCFF;border-left-color:#00CCFF}
335        @media(max-width:768px){#top-white-bar{font-size:14px;padding:0 10px}.desktop-icon{width:85px;padding:8px 4px;margin-bottom:15px}.icon-label{font-size:10px}.window{min-width:220px!important;min-height:33px!important;max-width:95vw!important;max-height:75vh!important}.window:not(.minimized){min-height:160px!important}.window-header{padding:5px 10px 3px 10px;font-size:13px}#footer{font-size:10px;padding:0 10px}#footer-right{font-size:12px}.content-text{gap:15px;padding:15px}.cart-buttons{flex-direction:column}.product-image-placeholder{height:200px}
335#retro-tv-container{width:200px;top:30px;right:15px}#retro-tv-screen{height:135px}#retro-tv-label{font-size:10px}#retro-tv-antenna{width:50px;height:26px;top:-22px}.antenna-left,.antenna-right{height:24px}.antenna-left{left:16px}.antenna-right{right:16px}#amiga-player{width:200px;top:260px;right:15px;height:80px;padding:6px 8px}#player-display{height:20px}#player-marquee{font-size:10px;line-height:16px}.player-btn{width:30px;height:30px}#online-game-banner{width:200px;top:400px;right:15px;height:40px;font-size:10px}#right-icon-panel{width:160px;top:500px;right:15px;padding:10px 8px;gap:10px}.right-panel-item{height:44px}.right-panel-label{font-size:10px}.right-panel-display{height:22px}#discussion-icon-panel{width:160px;top:720px;right:15px}.discussion-panel-item{height:44px}.discussion-panel-label{font-size:9px}.discussion-panel-display{height:22px}#retro-bazaar-icon{width:160px;top:806px;right:15px;height:65px}#retro-bazaar-icon .bazaar-label{font-size:15px}#amiga-emu-banner{width:200px;height:40px;font-size:11px}#amiga-apps-banner,#amiga-games-banner{width:140px;height:40px;font-size:10px}#tv-lightbox-video{max-width:95vw;max-height:60vh}.bandcamp-logo-img{width:50px;height:50px}.cart-notification,.comment-notification{font-size:12px;padding:10px 20px}#boot-window{width:95vw!important;min-height:auto;height:auto}#boot-cli{font-size:10px;padding:12px}#fast-load-btn{font-size:11px;padding:8px 18px}#splash-screen img{max-width:85vw;max-height:65vh}#splash-btn{font-size:12px;padding:10px 22px}.book-badge{width:100px;height:36px}.bb-line1{font-size:9px}.bb-line2{font-size:7px}}
336        @media(max-width:480px){.desktop-icon{width:75px;padding:6px 3px}.icon-img{width:45px;height:45px}.icon-label{font-size:9px}
336.window{min-width:200px!important;min-height:33px!important;max-width:92vw!important}.window:not(.minimized){min-height:140px!important}#retro-tv-container{width:150px;top:25px;right:8px}#retro-tv-screen{height:100px}#retro-tv-label{font-size:9px}#retro-tv-antenna{width:40px;height:20px;top:-18px}.antenna-left,.antenna-right{height:18px}.antenna-left{left:12px}.antenna-right{right:12px}#amiga-player{width:150px;top:185px;right:8px;height:70px;padding:4px 6px}#player-display{height:18px}#player-marquee{font-size:8px;line-height:14px}.player-btn{width:26px;height:26px}#player-controls{gap:10px}#online-game-banner{width:150px;top:305px;right:8px;height:35px;font-size:9px;border-width:2px}#right-icon-panel{width:120px;top:385px;right:8px;padding:8px 6px;gap:8px}.right-panel-item{height:36px}.right-panel-label{font-size:8px}.right-panel-display{height:18px}#discussion-icon-panel{width:120px;top:570px;right:8px}.discussion-panel-item{height:36px}.discussion-panel-label{font-size:7px}.discussion-panel-display{height:18px}#retro-bazaar-icon{width:120px;top:636px;right:8px;height:55px}#retro-bazaar-icon .bazaar-label{font-size:13px}#amiga-emu-banner{width:150px;height:35px;font-size:9px;border-width:2px}#amiga-apps-banner,#amiga-games-banner{width:105px;height:35px;font-size:8px;border-width:2px}.bandcamp-logo-img{width:45px;height:45px}.cart-notification,.comment-notification{font-size:11px;padding:8px 15px}#boot-window{width:95vw!important;min-height:auto;height:auto}#boot-cli{font-size:8px;padding:10px;line-height:1.3}#fast-load-btn{font-size:10px;padding:6px 14px}#splash-screen img{max-width:90vw;max-height:60vh}#splash-btn{font-size:11px;padding:8px 18px}.book-badge{width:90px;height:34px}.bb-line1{font-size:8px}.bb-line2{font-size:6px}}
337    </style>
338</head>
339<body>
340<div id="splash-screen">
341    <img src="https://raw.githubusercontent.com/silverspark-ir/Amigastore/main/tasviir%20workbench.jpg" alt="Amiga Kickstart">
342    <div id="splash-btn" onclick="startBoot()">Load Workbench 1.3</div>
343</div>
344<div id="boot-screen">
345    <div id="boot-window">
346        <div id="boot-titlebar">CLI - Amiga 500 Workbench 1.3</div>
347        <div id="boot-cli"></div>
348        <div id="fast-load-btn" onclick="skipBoot()">Fast Loading</div>
349    </div>
350</div>
351<div id="main-container">
352<div id="workbench-container">
353    <div id="top-white-bar"><div id="workbench-title">Workbench 1.3</div><div id="lang-toggle-header" onclick="toggleLanguage()">فارسی</div><div id="articles-toggle" onclick="toggleArticlesMenu()" data-lang-key="articles_btn">Articles</div></div>
354    <div id="articles-menu">
355        <div class="article-item" onclick="openArticle(1)">تاریخچه Amiga 500</div>
356        <div class="article-item" onclick="openArticle(2)">راهنمای Workbench 1.3</div>
357        <div class="article-item" onclick="openArticle(3)">ارتقاء آمیگا ۶۰۰</div>
358        <div class="article-item" onclick="openArticle(4)">نگهداری سخت‌افزار</div>
359        <div class="article-item" onclick="openArticle(5)">پایان کمودور ۱۲۸</div>
360        <div class="article-item" onclick="openArticle(6)">تراشه آگنس</div>
361        <div class="article-item" onclick="openArticle(7)">آتاری ۲۶۰۰</div>
362        <div class="article-item" onclick="openArticle(8)">تاریخچه کمودور ۶۴</div>
363        <div class="article-item" onclick="openArticle(9)">سخت‌افزار کمودور ۶۴</div>
364        <div class="article-item" onclick="openArticle(10)">خرید آمیگا ۵۰۰ دست دوم</div>
365        <div class="article-item" onclick="openArticle(11)">تاریخچه آمیگا ۱۲۰۰</div>
366    </div>
367    <div id="desktop">
368        <div id="retro-tv-container"><div id="retro-tv-frame"><div id="retro-tv-antenna"><div class="antenna-left"><div class="antenna-ball"></div></div><div class="antenna-right"><div class="antenna-ball"></div></div></div><div id="retro-tv-screen"><canvas id="tv-noise-canvas"></canvas><div id="retro-tv-play-overlay"></div></div><div id="retro-tv-label" data-lang-key="tv_click_label">برای تماشا کلیک کنید ◄</div></div><div id="tv-click-overlay" onclick="openTvLightbox()"></div></div>
369        <div id="amiga-player"><div id="player-display"><div id="player-marquee">Bitstream Odyssey is the manifestation of an instrumental sonic universe; a realm where cyberpunk glimmers and synthwave pulses paint pixelated memories upon the canvas of time. This album invites you to explore the hidden layers of data and encounter the beauty of digital forms...... The complete version of this memorable work has been produced as a physical cassette tape by c64spark and released in 2025</div></div>
369<div id="player-controls"><div class="player-btn" id="btn-prev" onmousedown="startHold('prev')" onmouseup="stopHold()" onmouseleave="stopHold()" ontouchstart="startHold('prev')" ontouchend="stopHold()"><div class="prev-icon"></div></div><div class="player-btn play-btn" id="btn-play" onclick="togglePlay()"><div class="play-icon"></div></div><div class="player-btn" id="btn-next" onmousedown="startHold('next')" onmouseup="stopHold()" onmouseleave="stopHold()" ontouchstart="startHold('next')" ontouchend="stopHold()"><div class="next-icon"></div></div></div><audio id="music-player" preload="none" loop><source src="https://raw.githubusercontent.com/silverspark-ir/Amigastore/main/Bitstream%20Odyssey%20%20-%20%20side%20B%20%20-%20%20part%20A.mp3" type="audio/mpeg"></audio></div>
370        <div id="online-game-banner" onclick="handleBannerClick()"></div>
371        <div id="right-icon-panel">
372            <div class="right-panel-item" onclick="navigateTo('/about')"><div class="right-panel-display"><span class="right-panel-label">About Me</span></div></div>
373            <div class="right-panel-item" onclick="navigateTo('/blog')"><div class="right-panel-display"><span class="right-panel-label">Blog</span></div></div>
374            <div class="right-panel-item" onclick="navigateTo('/email')"><div class="right-panel-display"><span class="right-panel-label">Send Email</span></div></div>
375        </div>
376        <div id="discussion-icon-panel"><div class="discussion-panel-item" onclick="navigateTo('/discussion')"><div class="discussion-panel-display"><span class="discussion-panel-label" data-lang-key="discussion_label">دنیای تکنولوژی</span></div></div></div>
377        <div id="retro-bazaar-icon" onclick="navigateTo('/bazaar')"><span class="bazaar-label" data-lang-key="bazaar_label">پاساژ رترو</span></div>
378        <a href="#" class="book-badge" id="bookBadge" onclick="openBookListWindow();return false;"><div class="bb-rainbow"></div><div class="bb-scan"></div><div class="bb-slide active"></div><div class="bb-slide"></div><div class="bb-slide"></div><div class="bb-slide"></div><div class="bb-slide"></div><div class="bb-slide"></div><div class="bb-slide"></div><div class="bb-text"><div class="bb-line1" id="bbLine1">Home Computers</div><div class="bb-line2" id="bbLine2">The 1980s</div></div></a>
379        <div class="desktop-icon" id="icon-project" onclick="navigateTo('/products')"><svg class="icon-img" viewBox="0 0 32 32"><rect x="4" y="4" width="24" height="24" fill="#FFF" stroke="#00A" stroke-width="2"/><rect x="8" y="8" width="16" height="16" fill="#888" stroke="#00A" stroke-width="1"/><rect x="12" y="12" width="8" height="8" fill="#FFF"/><rect x="10" y="22" width="12" height="2" fill="#00A"/></svg><div class="icon-label" data-lang-key="icon_products">Products.info</div></div>
380        <div class="desktop-icon" id="icon-bandcamp" onclick="handleBandcampClick()"><img src="https://raw.githubusercontent.com/silverspark-ir/Amigastore/main/c64spark.ir%20logo.png" class="icon-img" id="bandcamp-icon-img" alt="bandcamp"><div class="icon-label" id="bandcamp-icon-label">bandcamp</div></div>
381        <div class="desktop-icon market-icon-glow" id="icon-market" onclick="openMarketAccessModal()"><svg class="icon-img" viewBox="0 0 32 32"><rect x="3" y="8" width="26" height="18" rx="2" fill="#FFF" stroke="#00A" stroke-width="1.5"/><rect x="5" y="10" width="3" height="2.5" fill="#888" rx=".5"/><rect x="9" y="10" width="3" height="2.5" fill="#888" rx=".5"/><rect x="13" y="10" width="3" height="2.5" fill="#888" rx=".5"/><rect x="17" y="10" width="3" height="2.5" fill="#888" rx=".5"/><rect x="21" y="10" width="3" height="2.5" fill="#888" rx=".5"/><rect x="6" y="13.5" width="3" height="2.5" fill="#F50" rx=".5"/><rect x="10" y="13.5" width="3" height="2.5" fill="#888" rx=".5"/><rect x="14" y="13.5" width="3" height="2.5" fill="#888" rx=".5"/><rect x="18" y="13.5" width="3" height="2.5" fill="#888" rx=".5"/><rect x="22" y="13.5" width="3" height="2.5" fill="#F50" rx=".5"/><rect x="7" y="17" width="3" height="2.5" fill="#888" rx=".5"/><rect x="11" y="17" width="3" height="2.5" fill="#F50" rx=".5"/><rect x="15" y="17" width="3" height="2.5" fill="#888" rx=".5"/><rect x="19" y="17" width="3" height="2.5" fill="#F50" rx=".5"/><rect x="8" y="20.5" width="14" height="2.5" fill="#888" rx=".5"/><rect x="22" y="20" width="6" height="5" rx="1" fill="#F96" stroke="#00A" stroke-width=".8"/><text x="25" y="24" text-anchor="middle" font-size="4" fill="#00A" font-family="monospace" font-weight="bold">IRR</text></svg><div class="icon-label" data-lang-key="icon_market">آگهی رایگان</div></div>
382        <div class="desktop-icon" id="icon-cart" onclick="navigateTo('/cart')"><svg class="icon-img" viewBox="0 0 32 32"><circle cx="12" cy="24" r="2" fill="#FFF" stroke="#00A" stroke-width="1"/><circle cx="22" cy="24" r="2" fill="#FFF" stroke="#00A" stroke-width="1"/><path d="M6,8 L10,8 L12,20 L22,20 L24,8 L28,8" fill="none" stroke="#FFF" stroke-width="2"/><rect x="10" y="8" width="14" height="12" fill="none" stroke="#FFF" stroke-width="1"/><rect x="12" y="10" width="4" height="3" fill="#F50"/><rect x="18" y="10" width="4" height="3" fill="#F50"/></svg><div class="icon-label" data-lang-key="icon_cart">Shopping Cart</div></div>
383        <div class="desktop-icon" id="icon-tutorials" onclick="navigateTo('/tutorials')"><svg class="icon-img" viewBox="0 0 32 32"><rect x="4" y="4" width="24" height="24" fill="#FFF" stroke="#00A" stroke-width="2"/><rect x="7" y="7" width="18" height="3" fill="#00A"/><rect x="7" y="12" width="14" height="2" fill="#888"/><rect x="7" y="16" width="16" height="2" fill="#888"/><rect x="7" y="20" width="10" height="2" fill="#888"/><polygon points="20,20 26,22 20,24" fill="#F50"/></svg><div class="icon-label" data-lang-key="icon_tutorials">Tutorials</div></div>
384        <div id="amiga-emu-banner" onclick="navigateTo('/emulator')" style="margin-top:25px;">Amiga emulator online</div>
385        <div id="amiga-apps-banner" onclick="navigateTo('/apps')">Amiga apps ADF</div>
386        <div id="amiga-games-banner" onclick="navigateTo('/games')">Amiga games ADF</div>
387    </div>
388    <div id="footer"><div id="footer-left">AmigaStore.ir © 2026 c64spark</div><div id="footer-right">00:00:00</div></div>
389</div>
390</div>
391<div id="tv-lightbox"><div id="tv-lightbox-close" onclick="closeTvLightbox()">✕</div><video id="tv-lightbox-video" autoplay loop muted playsinline><source src="https://raw.githubusercontent.com/silverspark-ir/Amigastore/main/demo%20c64spark.mp4" type="video/mp4"></video></div>
392<div id="code-modal-overlay"><div id="code-modal"><div class="modal-hint" data-lang-key="code_hint">لطفاً کد عضویت خود را وارد کنید</div><input type="text" id="code-input" placeholder="کد عضویت..." maxlength="20"><div class="modal-buttons"><div class="modal-btn cancel" onclick="closeCodeModal()">انصراف</div><div class="modal-btn send" onclick="verifyCode()">تأیید</div></div></div></div>
393<div id="market-access-modal-overlay"><div id="market-access-modal"><div class="modal-hint">دسترسی به آگهی رایگان</div><div class="market-access-text">بخش آگهی رایگان یک بازار تخصصی برای فعالان جدی دنیای رتروکامپیوتر است. برای حفظ کیفیت و اعتبار این فضا، ورود فقط با کد عضویت امکان‌پذیر است. اگر خریدار، فروشنده، تعمیرکار یا مجموعه‌دار هستید و مایل به فعالیت در این بازار هستید، از طریق ایمیل درخواست خود را ارسال کنید.</div><input type="text" id="market-access-code-input" placeholder="کد ۱۰ رقمی..." maxlength="10"><div class="modal-buttons"><div class="modal-btn request" onclick="requestMarketAccess()">ثبت درخواست</div><div class="modal-btn send" onclick="verifyMarketAccessCode()">ورود با کد</div><div class="modal-btn cancel" onclick="closeMarketAccessModal()">انصراف</div></div></div></div>
394<div id="news-submit-modal-overlay"><div id="news-submit-modal"><div class="modal-hint" id="news-submit-modal-hint">فرم ثبت خبر</div><input type="text" id="news-image1" placeholder="لینک تصویر ۱ *" maxlength="300"><input type="text" id="news-image2" placeholder="لینک تصویر ۲ (اختیاری)" maxlength="300"><input type="text" id="news-image3" placeholder="لینک تصویر ۳ (اختیاری)" maxlength="300"><input type="text" id="news-title" placeholder="موضوع فارسی *" maxlength="200"><textarea id="news-body" placeholder="توضیحات فارسی *" maxlength="3000"></textarea><input type="text" id="news-title-en" placeholder="English Title (Optional)" maxlength="200"><textarea id="news-body-en" placeholder="English Body (Optional)" maxlength="3000"></textarea><input type="text" id="news-source" placeholder="لینک منبع (اختیاری)" maxlength="300"><div class="modal-buttons"><div class="modal-btn cancel" onclick="closeNewsSubmitModal()">انصراف</div><div class="modal-btn send" id="news-submit-btn" onclick="submitNews()">ثبت</div></div></div></div>
395<div id="team-apply-modal-overlay"><div id="team-apply-modal"><div class="modal-hint" data-lang-key="team_apply_hint">فرم درخواست عضویت در تیم خبری</div><input type="text" id="team-email" placeholder="ایمیل *" maxlength="100"><input type="text" id="team-name" placeholder="نام و نام خانوادگی *" maxlength="100"><input type="text" id="team-phone" placeholder="شماره تماس *" maxlength="11"><input type="text" id="team-photo" placeholder="لینک عکس خبرنگار *" maxlength="300"><div class="modal-buttons"><div class="modal-btn cancel" onclick="closeTeamApplyModal()">انصراف</div><div class="modal-btn send" id="team-apply-btn" onclick="submitTeamApplication()">ثبت درخواست عضویت</div></div></div></div>
396<div id="shop-modal-overlay"><div id="shop-modal"><div class="modal-hint">اطلاعات فروشگاه خود را وارد کنید</div><input type="text" id="shop-owner-name" placeholder="نام و نام خانوادگی" maxlength="80"><input type="text" id="shop-owner-phone" placeholder="شماره موبایل (09xxxxxxxxx)" maxlength="11"><input type="text" id="shop-name" placeholder="نام فروشگاه" maxlength="100"><select id="shop-category"><option value="">حوزه فعالیت</option><option value="retrocomputing">رتروکامپیوتر</option><option value="modern-consoles">کنسول‌های مدرن</option><option value="electronics">الکترونیک</option><option value="hardware">سخت‌افزار</option><option value="software">نرم‌افزار</option><option value="repair">تعمیرات تخصصی</option><option value="other">سایر</option></select><textarea id="shop-description" placeholder="توضیحات" style="height:80px;resize:vertical;" maxlength="1000"></textarea><input type="text" id="shop-website" placeholder="آدرس وبسایت شخصی (اگر ندارید چیزی ننویسید)" maxlength="300"><input type="text" id="shop-logo" placeholder="لینک مستقیم لوگوی فروشگاه" maxlength="300"><div class="modal-buttons"><div class="modal-btn send" id="shop-send-btn" onclick="submitShopRequest()">ارسال درخواست</div><div class="modal-btn cancel" onclick="closeShopModal()">بازگشت</div></div><div class="shop-modal-hint">لوگوی فروشگاه خود را در وبسایت imgurl.ir آپلود کنید، و لینک مستقیم تصویر آپلود شده را در فیلد مربوطه کپی کنید.</div></div></div>
397<div id="success-alert-overlay"><div id="success-alert"><div class="alert-icon">✓</div><div class="alert-text" id="success-alert-text">با موفقیت ثبت شد.</div><div class="alert-btn" onclick="closeSuccessAlert()">باشه</div></div></div>
398<div id="ad-lightbox"><div id="ad-lightbox-content"></div><div class="ad-lightbox-close" onclick="closeAdLightbox()">✕</div></div>
399<div id="ad-submit-modal-overlay"><div id="ad-submit-modal"><div class="modal-hint">فرم ثبت آگهی رایگان</div><input type="text" id="ad-subject" placeholder="موضوع *" maxlength="100"><textarea id="ad-description" placeholder="توضیحات *" maxlength="1000"></textarea><input type="text" id="ad-name" placeholder="نام و نام خانوادگی *" maxlength="80"><input type="text" id="ad-phone" placeholder="شماره تماس * (09xxxxxxxxx)" maxlength="11"><input type="text" id="ad-province" placeholder="استان *" maxlength="50"><input type="text" id="ad-image1" class="market-link-input" placeholder="لینک تصویر ۱ *" maxlength="300"><input type="text" id="ad-image2" class="market-link-input" placeholder="لینک تصویر ۲ *" maxlength="300"><input type="text" id="ad-image3" class="market-link-input" placeholder="لینک تصویر ۳ *" maxlength="300"><div class="upload-hint">برای آپلود تصاویر آگهی خود از وبسایت <a onclick="openUploadKon();event.stopPropagation();" style="text-decoration:underline;cursor:pointer;">UploadKon.ir</a> استفاده کنید. لینک تصاویر باید با <span style="color:#FFF;font-size:10px;">https://uploadkon.ir/uploads/</span> شروع شود.</div><div class="modal-buttons"><div class="modal-btn send" onclick="submitNewAd()">ارسال آگهی</div><div class="modal-btn cancel" onclick="closeAdSubmitModal()">انصراف</div></div></div></div>
400<div class="window" id="window-uploadkon"><div class="window-header"><div class="window-title-container"><div class="window-title">UploadKon.ir</div><div class="parallel-lines"></div></div><div class="window-controls"><div class="window-btn" onclick="toggleMinimize('window-uploadkon')">_</div><div class="window-btn close" onclick="closeWindow('window-uploadkon')">X</div></div></div><div class="window-content no-padding"><iframe src="https://uploadkon.ir" title="UploadKon.ir"></iframe></div><div class="resize-handle"></div></div>
401<div class="window" id="window-book-list"><div class="window-header"><div class="window-title-container"><div class="window-title">Amazing Computers of the 1980s</div><div class="parallel-lines"></div></div><div class="window-controls"><div class="window-btn" onclick="toggleMinimize('window-book-list')">_</div><div class="window-btn close" onclick="closeWindow('window-book-list')">X</div></div></div><div class="window-content no-padding"><iframe src="https://amigastore.ir/book-list.html" title="Amazing Computers of the 1980s"></iframe></div><div class="resize-handle"></div></div>
402<div class="window" id="window-tutorials"><div class="window-header"><div class="window-title-container"><div class="window-title" data-lang-key="win_tutorials">Tutorials</div><div class="parallel-lines"></div></div><div class="window-controls"><div class="window-btn" onclick="toggleMinimize('window-tutorials')">_</div><div class="window-btn close" onclick="closeWindow('window-tutorials')">X</div></div></div><div class="window-content"><div class="article-content"><div class="article-title" data-lang-key="win_tutorials">Tutorials</div><div style="text-align:center;padding:15px 0;"><div class="tutorial-card" onclick="openForthWindow()" style="display:inline-block;cursor:pointer;border:2px solid #FFF;background-color:rgba(0,0,0,0.3);padding:8px;max-width:100%;transition:all 0.2s;"><img src="https://cdn.imgurl.ir/uploads/f000974_Screenshot_------_files.fileexorer.jpg" alt="C64-FORTH Tutorial" style="display:block;width:100%;max-width:320px;height:auto;border:1px solid #555;"><div data-lang-key="tutorials_forth_label" style="color:#FFAA66;font-size:14px;font-weight:bold;margin-top:12px;text-align:center;font-family:'Amiga4Ever',monospace;">Complete Commodore FORTH Tutorial</div></div></div></div></div><div class="resize-handle"></div></div>
403<div id="admin-pass-products-modal-overlay"><div id="admin-pass-products-modal"><div class="modal-hint">لطفاً رمز مدیریت را وارد کنید</div><input type="password" id="admin-password-products-input" placeholder="رمز ۲۰ کاراکتری..." maxlength="20"><div class="modal-buttons"><div class="modal-btn cancel" onclick="closeAdminPassProductsModal()">انصراف</div><div class="modal-btn send" onclick="checkAdminPasswordProducts()">تأیید</div></div></div></div>
404<div id="admin-pass-discussion-modal-overlay"><div id="admin-pass-discussion-modal"><div class="modal-hint">لطفاً رمز مدیریت را وارد کنید</div><input type="password" id="admin-password-discussion-input" placeholder="رمز ۲۰ کاراکتری..." maxlength="20"><div class="modal-buttons"><div class="modal-btn cancel" onclick="closeAdminPassDiscussionModal()">انصراف</div><div class="modal-btn send" onclick="checkAdminPasswordDiscussion()">تأیید</div></div></div></div>
405<div id="product-admin-modal-overlay"><div id="product-admin-modal"><div class="modal-hint">مدیریت محصولات - ثبت محصول جدید</div><input type="text" id="product-name" placeholder="نام محصول *" maxlength="150"><textarea id="product-description" placeholder="توضیحات *" maxlength="1000"></textarea><input type="text" id="product-image1" placeholder="لینک تصویر ۱ *" maxlength="300"><input type="text" id="product-image2" placeholder="لینک تصویر ۲ *" maxlength="300"><input type="text" id="product-image3" placeholder="لینک تصویر ۳ *" maxlength="300"><input type="text" id="product-price" placeholder="قیمت (به تومان) *" maxlength="15"><div class="modal-buttons"><div class="modal-btn send" onclick="preSubmitProduct()">ثبت محصول</div><div class="modal-btn cancel" onclick="closeProductAdminModal()">انصراف</div></div></div></div>
406<div id="product-confirm-modal-overlay"><div id="product-confirm-modal"><div class="confirm-text">آیا از ثبت این محصول اطمینان دارید؟</div><div class="modal-buttons"><div class="modal-btn confirm-yes" onclick="finalSubmitProduct()">✓ تأیید</div><div class="modal-btn confirm-no" onclick="closeProductConfirmModal()">✕ انصراف</div></div></div></div>
407<div id="delete-confirm-modal-overlay"><div id="delete-confirm-modal"><div class="confirm-text">آیا از حذف این خبر اطمینان دارید؟</div><div class="modal-buttons"><div class="modal-btn confirm-yes" id="delete-confirm-yes-btn">✓ تأیید</div><div class="modal-btn confirm-no" onclick="closeDeleteConfirmModal()">✕ انصراف</div></div></div></div>
408<div class="window" id="window-market"><div class="window-header"><div class="window-title-container"><div class="window-title" data-lang-key="market_title">آگهی رایگان</div><div class="parallel-lines"></div></div><div class="window-controls"><div class="window-btn" onclick="toggleMinimize('window-market')">_</div><div class="window-btn close" onclick="closeWindow('window-market')">X</div></div></div><div class="window-content"><div class="article-content"><div class="article-title" data-lang-key="market_title">آگهی رایگان</div><div class="article-paragraph" data-lang-key="market_intro"></div><div class="article-paragraph disclaimer-text" data-lang-key="market_disclaimer"></div><div class="market-submit-banner" onclick="openAdSubmitModal()" data-lang-key="market_btn">ثبت آگهی رایگان</div><div class="market-ads-box" id="market-ads-container"><div data-lang-key="discussion_loading">در حال بارگذاری آگهی‌ها...</div></div></div></div><div class="resize-handle"></div></div>
409<div class="window" id="window-bandcamp"><div class="window-header"><div class="window-title-container"><div class="window-title">bandcamp</div><div class="parallel-lines"></div></div><div class="window-controls"><div class="window-btn" onclick="toggleMinimize('window-bandcamp')">_</div><div class="window-btn close" onclick="closeWindow('window-bandcamp')">X</div></div></div><div class="window-content no-padding"><iframe src="https://c64spark.bandcamp.com" title="bandcamp"></iframe></div><div class="resize-handle"></div></div>
410<div class="window" id="window-project"><div class="window-header"><div class="window-title-container"><div class="window-title" data-lang-key="win_products">Products.info</div><div class="parallel-lines"></div></div><div class="window-controls"><div class="window-btn manage-btn" onclick="openAdminPassProductsModal()">مدیریت</div><div class="window-btn" onclick="toggleMinimize('window-project')">_</div><div class="window-btn close" onclick="closeWindow('window-project')">X</div></div></div><div class="window-content"><div class="article-content"><div class="article-title" data-lang-key="products_title">Products Information</div><div class="article-paragraph" data-lang-key="products_desc"></div><div class="products-dynamic-box" id="products-dynamic-container"><div style="text-align:center;padding:15px;color:#888;">در حال بارگذاری محصولات...</div></div></div></div><div class="resize-handle"></div></div>
411<div class="window" id="window-about"><div class="window-header"><div class="window-title-container"><div class="window-title" data-lang-key="win_about">About Me</div><div class="parallel-lines"></div></div><div class="window-controls"><div class="window-btn" onclick="toggleMinimize('window-about')">_</div><div class="window-btn close" onclick="closeWindow('window-about')">X</div></div></div><div class="window-content"><div class="article-content" id="about-content"></div><div id="about-contact" style="text-align:center;margin-top:20px;padding-top:15px;border-top:1px solid rgba(255,255,255,0.3);"></div></div><div class="resize-handle"></div></div>
412<div class="window" id="window-email"><div class="window-header"><div class="window-title-container"><div class="window-title" data-lang-key="win_email">Send Email</div><div class="parallel-lines"></div></div><div class="window-controls"><div class="window-btn" onclick="toggleMinimize('window-email')">_</div><div class="window-btn close" onclick="closeWindow('window-email')">X</div></div></div><div class="window-content"><div class="article-content"><div class="article-title" data-lang-key="email_title">Contact Us via Email</div><div class="article-paragraph" data-lang-key="email_desc"></div><div class="email-form"><textarea id="email-message" class="email-textarea" data-lang-key="email_placeholder" placeholder="Type your message here..." maxlength="3000"></textarea><button id="email-send-btn" class="email-send-btn" onclick="sendEmail()" disabled data-lang-key="email_send">Send</button><div style="clear:both;"></div></div></div></div><div class="resize-handle"></div></div>
413<div class="window" id="window-cart"><div class="window-header"><div class="window-title-container"><div class="window-title" data-lang-key="win_cart">Shopping Cart</div><div class="parallel-lines"></div></div><div class="window-controls"><div class="window-btn" onclick="toggleMinimize('window-cart')">_</div><div class="window-btn close" onclick="closeWindow('window-cart')">X</div></div></div><div class="window-content"><div class="article-content"><div class="article-title" data-lang-key="cart_title">Your Shopping Cart</div><div id="cart-items-container"></div><div id="cart-total-container" class="cart-total"></div><div class="cart-buttons" id="cart-buttons-container"><div class="cart-btn cancel" onclick="closeWindow('window-cart')" data-lang-key="cart_
413cancel">Cancel</div><div class="cart-btn confirm" onclick="showCartInputs()" data-lang-key="cart_confirm">Confirm</div></div><div id="cart-input-section" class="cart-input-section"><div class="cart-input-group"><label class="cart-input-label" data-lang-key="cart_name_label">Full Name:</label><input type="text" id="cart-customer-name" class="cart-input" data-lang-key="cart_name_placeholder" placeholder="Enter your full name" required maxlength="80"></div><div class="cart-input-group"><label class="cart-input-label" data-lang-key="cart_phone_label">Phone Number:</label><input type="number" id="cart-customer-phone" class="cart-input" data-lang-key="cart_phone_placeholder" placeholder="Enter phone number (digits only)" required maxlength="11"></div><div class="cart-input-group"><label class="cart-input-label" data-lang-key="cart_address_label">Address:</label><input type="text" id="cart-customer-address" class="cart-input" data-lang-key="cart_address_placeholder" placeholder="Enter your full address" required maxlength="500"></div><div id="cart-final-buttons" class="cart-final-buttons"><div class="cart-final-btn send" onclick="sendInvoice()">✉</div><div class="cart-final-btn cancel-final" onclick="closeWindow('window-cart')">✕</div></div></div></div></div><div class="resize-handle"></div></div>
414<div class="window" id="window-blog"><div class="window-header"><div class="window-title-container"><div class="window-title">وبلاگ | AmigaStore</div><div class="parallel-lines"></div></div><div class="window-controls"><div class="window-btn" onclick="toggleMinimize('window-blog')">_</div><div class="window-btn close" onclick="closeWindow('window-blog')">X</div></div></div><div class="window-content no-padding"><iframe src="https://commodore-amiga.blogfa.com" title="وبلاگ AmigaStore"></iframe></div><div class="resize-handle"></div></div>
415<div class="window" id="window-emu-guide"><div class="window-header"><div class="window-title-container"><div class="window-title" data-lang-key="emu_guide_title">Amiga Emulator Guide</div><div class="parallel-lines"></div></div><div class="window-controls"><div class="window-btn" onclick="toggleMinimize('window-emu-guide')">_</div><div class="window-btn close" onclick="closeWindow('window-emu-guide')">X</div></div></div><div class="window-content"><div class="article-content"><div class="article-title" data-lang-key="emu_guide_title">Amiga Emulator Guide</div><div class="article-paragraph" data-lang-key="emu_guide_content"></div><a class="emu-launch-btn-new" href="https://vamiganet.github.io" target="_blank" data-lang-key="emu_launch_btn">Launch Amiga Emulator</a></div></div><div class="resize-handle"></div></div>
416<div class="window" id="window-amigaadfs"><div class="window-header"><div class="window-title-container"><div class="window-title">Amiga apps ADF</div><div class="parallel-lines"></div></div><div class="window-controls"><div class="window-btn" onclick="toggleMinimize('window-amigaadfs')">_</div><div class="window-btn close" onclick="closeWindow('window-amigaadfs')">X</div></div></div><div class="window-content no-padding"><iframe src="https://archive.org/download/CommodoreAmigaApplicationsADF" title="Amiga Apps ADF"></iframe></div><div class="resize-handle"></div></div>
417<div class="window" id="window-amigagames"><div class="window-header"><div class="window-title-container"><div class="window-title">Amiga games ADF</div><div class="parallel-lines"></div></div><div class="window-controls"><div class="window-btn" onclick="toggleMinimize('window-amigagames')">_</div><div class="window-btn close" onclick="closeWindow('window-amigagames')">X</div></div></div><div class="window-content no-padding"><iframe src="https://www.freeroms.com/amiga.htm" title="Amiga Games ADF"></iframe></div><div class="resize-handle"></div></div>
418<div class="window" id="window-discussion"><div class="window-header"><div class="window-title-container"><div class="window-title" data-lang-key="discussion_title">دنیای تکنولوژی</div><div class="parallel-lines"></div></div><div class="window-controls"><div class="window-btn manage-btn" onclick="openAdminPassDiscussionModal()">مدیریت</div><div class="window-btn" onclick="toggleMinimize('window-discussion')">_</div><div class="window-btn close" onclick="closeWindow('window-discussion')">X</div></div></div><div class="window-content"><div class="article-content"><div class="article-title" data-lang-key="discussion_title">دنیای تکنولوژی</div><div class="article-paragraph" data-lang-key="discussion_intro"></div><div style="text-align:center;margin-top:15px;
418display:flex;gap:15px;justify-content:center;flex-wrap:wrap;"><div class="discussion-submit-banner" onclick="openTeamApplyModal()" data-lang-key="team_apply_btn">درخواست عضویت</div><div class="discussion-submit-banner" onclick="openCodeModal()" data-lang-key="submit_news_btn">ثبت خبر</div></div><div class="news-grid" id="news-container"><div style="text-align:center;padding:15px;color:#888;" data-lang-key="news_loading">در حال بارگذاری اخبار...</div></div></div></div><div class="resize-handle"></div></div>
419<div class="window" id="window-retro-bazaar"><div class="window-header"><div class="window-title-container"><div class="window-title">پاساژ رترو</div><div class="parallel-lines"></div></div><div class="window-controls"><div class="window-btn" onclick="toggleMinimize('window-retro-bazaar')">_</div><div class="window-btn close" onclick="closeWindow('window-retro-bazaar')">X</div></div></div><div class="window-content"><div class="article-content"><div class="article-title">پاساژ رترو</div><div class="article-paragraph rtl-text" data-lang-key="bazaar_intro_fa"><p>به پاساژ رترو خوش آمدید.</p><p>اینجا اولین بازارچه تخصصی رترو و تکنولوژی ایران است. اگر در زمینه کامپیوترهای کلاسیک، کنسول‌های قدیمی و مدرن، قطعات الکترونیک، سخت‌افزار، نرم‌افزار، تعمیرات تخصصی یا هر حوزه مرتبط دیگری فعالیت دارید، می‌توانید فروشگاه حرفه‌ای خود را در این پاساژ افتتاح کنید. حتی اگر وبسایت شخصی هم داشته باشید، می‌توانید در این پنجره، وبسایت شخصی خود را به‌صورت یکی از پنجره‌های زنده Workbench آمیگا، در معرض بازدیدکنندگان پاساژ رترو قرار دهید.</p><p><strong>چه خدماتی ارائه می‌دهیم؟</strong></p><p>• غرفه اختصاصی با نام و لوگوی شما<br>• درج محصولات و خدمات با قیمت‌گذاری<br>• نمایش وبسایت شخصی شما در قالب پنجره زنده آمیگا<br>• لینک مستقیم تماس با شما</p><p>برای ثبت درخواست، کافیست دکمه سبز رنگ زیر را لمس کنید.</p><div style="background-color:rgba(0,0,0,0.4);border:1px solid rgba(255,170,102,0.4);padding:10px 15px;border-radius:4px;margin-top:15px;font-size:10px;color:#FFAA66;text-align:center;">مدیریت هرکدام از فروشگاه‌های پاساژ رترو به‌عهده مالک فروشگاه است. آمیگااستور هیچ‌گونه مسئولیتی در قبال محتوا، خدمات و تعهدات فروشگاه‌ها نمی‌پذیرد. در صورت مشاهدهٔ هرگونه تخلف، لطفاً مراتب را از طریق ارسال ایمیل به [email protected] اطلاع دهید.</div></div><div class="article-paragraph ltr-text" data-lang-key="bazaar_intro_en" style="display:none"><p>This is a domestic marketplace for Iranians. If you offer products or services, please post them in the Free Ads section.</p><div style="background-color:rgba(0,0,0,0.4);border:1px solid rgba(255,170,102,0.4);padding:10px 15px;border-radius:4px;margin-top:15px;font-size:10px;color:#FFAA66;text-align:center;">Each shop in the Retro Bazaar is managed by its respective owner. AmigaStore assumes no responsibility for the content, services, or commitments of any shop. If you notice any violation, please report it via email to [email protected].</div></div><div style="text-align:center;margin-top:20px;"><button class="modal-btn send" style="padding:10px 30px;font-size:14px;font-family:'Amiga4Ever',monospace;background-color:#5A5;color:#FFF;cursor:pointer;" onclick="openShopModal()">ثبت فروشگاه</button></div><div id="bazaar-shops-container" style="margin-top:25px;"></div></div></div><div class="resize-handle"></div></div>
420<div class="window" id="window-shop-retrolab"><div class="window-header"><div class="window-title-container"><div class="window-title">پاساژ رترو</div><div class="parallel-lines"></div></div><div class="window-controls"><div class="window-btn" onclick="toggleMinimize('window-shop-retrolab')">_</div><div class="window-btn close" onclick="closeWindow('window-shop-retrolab')">X</div></div></div><div class="window-content no-padding"><iframe src="https://retrolab.ir" title="لابراتوار رتروفیو
420چر"></iframe></div><div class="resize-handle"></div></div>
421<img src="https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https://amigastore.ir" style="display:none" alt="">
422<script>
423let currentLang = 'en', cartFormVisible = false;
424const ADMIN_PASSWORD = 'A7xQ9mK2pL5rV8wY1bN4';
425const MARKET_ACCESS_CODE = 'R7X9M2K4LQ';
426const GITHUB_TOKEN = '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', REPO_OWNER = 'silverspark-ir', REPO_NAME = 'Amigastore', COMMENTS_FILE = 'comments.json', ADS_FILE = 'market-ads.json', SHOP_FILE = 'shop-applications.json', PRODUCTS_FILE = 'Products.json', SETTINGS_FILE = 'settings.amiga.json';
427let cachedComments = null, cachedAds = null, cachedShops = null, cachedProducts = null, pendingProductData = null;
428let bannerSettings = null;
429let currentReporterCode = null, adminMode = false, pendingDeleteData = null, pendingEditData = null, pendingRatingValue = null, pendingRatingWinId = null, pendingRatingNewsId = null, pendingRatingReporterIndex = null;
430let initialPath = null;
431const routeMap = {'/': null, '/about': 'window-about', '/blog': 'window-blog', '/email': 'window-email', '/cart': 'window-cart', '/market': 'window-market', '/discussion': 'window-discussion', '/bazaar': 'window-retro-bazaar', '/products': 'window-project', '/emulator': 'window-emu-guide', '/apps': 'window-amigaadfs', '/games': 'window-amigagames', '/bandcamp': 'window-bandcamp', '/book-list': 'window-book-list', '/tutorials': 'window-tutorials'};
432const articleTitles = {1:{fa:'تاریخچه Amiga 500',en:'Amiga 500 History'},2:{fa:'راهنمای Workbench 1.3',en:'Workbench 1.3 Guide'},3:{fa:'ارتقاء آمیگا ۶۰۰',en:'Upgrade Amiga 600'},4:{fa:'نگهداری سخت‌افزار',en:'Hardware Maintenance'},5:{fa:'پایان کمودور ۱۲۸',en:'The End of Commodore 128'},6:{fa:'تراشه آگنس',en:'The Agnus Chip'},7:{fa:'آتاری ۲۶۰۰',en:'Atari 2600'},8:{fa:'تاریخچه کمودور ۶۴',en:'Commodore 64 History'},9:{fa:'سخت‌افزار کمودور ۶۴',en:'Commodore 64 Hardware'},10:{fa:'خرید آمیگا ۵۰۰ دست دوم',en:'Buying Used Amiga 500'},11:{fa:'تاریخچه آمیگا ۱۲۰۰',en:'Amiga 1200 History'}};
433function openBookListWindow(){openWindow('window-book-list');}
434function openMarketAccessModal(){document.getElementById('market-access-code-input').value='';document.getElementById('market-access-modal-overlay').classList.add('active');}
435function closeMarketAccessModal(){document.getElementById('market-access-modal-overlay').classList.remove('active');}
436function verifyMarketAccessCode(){const input=document.getElementById('market-access-code-input')?.value.trim();if(input===MARKET_ACCESS_CODE){closeMarketAccessModal();navigateTo('/market');}else{alert(currentLang==='fa'?'کد وارد شده صحیح نیست.':'Invalid code.');}}
437function requestMarketAccess(){const subject='درخواست دسترسی به آگهی رایگان';
437const body='سلام،\n\nمایل به دریافت کد عضویت بخش آگهی رایگان هستم.\n\nنام:\nشماره تماس:\nحوزه فعالیت:\n';window.location.href=`mailto:[email protected]?subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(body)}`;}
438function setBookBadgeLang(lang){const bbLine1=document.getElementById('bbLine1');const bbLine2=document.getElementById('bbLine2');if(bbLine1&&bbLine2){if(lang==='fa'){bbLine1.textContent='کامپیوترهای خانگی';bbLine2.textContent='دهه ۱۹۸۰';}else{bbLine1.textContent='Home Computers';bbLine2.textContent='The 1980s';}}}
439function openExternalWindow(url,title){const winId='window-ext-'+btoa(url).replace(/[^a-zA-Z0-9]/g,'').substring(0,20);if(document.getElementById(winId)){openWindow(winId);return;}const newWin=document.createElement('div');newWin.className='window';newWin.id=winId;newWin.innerHTML=`<div class="window-header"><div class="window-title-container"><div class="window-title">${escapeHTML(title)}</div><div class="parallel-lines"></div></div><div class="window-controls"><div class="window-btn" onclick="toggleMinimize('${winId}')">_</div><div class="window-btn close" onclick="closeWindow('${winId}')">X</div></div></div><div class="window-content no-padding"><iframe src="${url}" title="${escapeHTML(title)}"></iframe></div><div class="resize-handle"></div>`;document.body.appendChild(newWin);setupWindowDrag(winId);setupWindowResize(winId);openWindow(winId);}
440function openForthWindow(){const winId='window-forth-live';const existing=document.getElementById(winId);if(existing){openWindow(winId);return;}const newWin=document.createElement('div');newWin.className='window';newWin.id=winId;newWin.innerHTML=`<div class="window-header"><div class="window-title-container"><div class="window-title" style="direction:rtl;">آموزش Forth</div><div class="parallel-lines"></div></div><div class="window-controls"><div class="window-btn" onclick="toggleMinimize('${winId}')">_</div><div class="window-btn close" onclick="closeWindow('${winId}')">X</div></div></div><div class="window-content no-padding"><iframe src="https://amigastore.ir/forth.html" title="آموزش Forth"></iframe></div><div class="resize-handle"></div>`;document.body.appendChild(newWin);setupWindowDrag(winId);setupWindowResize(winId);openWindow(winId);}
441function openArticle(num){const lang=currentLang==='fa'?'fa':'en';const path=`/article${num}.html`;history.pushState(null,'',path);const winId='window-article-'+num;const src=`article${num}.html?lang=${lang}`;const title=currentLang==='fa'?articleTitles[num].fa:articleTitles[num].en;if(document.getElementById(winId)){const existing=document.getElementById(winId);const iframe=existing.querySelector('iframe');if(iframe)iframe.src=src;existing.querySelector('.window-title').textContent=title;openWindow(winId);return;}const newWin=document.createElement('div');newWin.className='window';newWin.id=winId;newWin.innerHTML=`<div class="window-header"><div class="window-title-container"><div class="window-title">${title}</div><div class="parallel-lines"></div></div><div class="window-controls"><div class="window-btn" onclick="toggleMinimize('${winId}')">_</div><div class="window-btn close" onclick="closeWindow('${winId}')">X</div></div></div><div class="window-content no-padding"><iframe src="${src}" title="${title}"></iframe></div><div class="resize-handle"></div>`;document.body.appendChild(newWin);setupWindowDrag(winId);setupWindowResize(winId);openWindow(winId);}
442function handleBannerClick(){if(!bannerSettings||!bannerSettings.banners||!bannerSettings.banners.underPlayer)return;const link=bannerSettings.banners.underPlayer.link;if(!link)return;if(link.startsWith('http')){openExternalWindow(link,'Banner');}else{navigateTo(link);}}
443function handleBandcampClick(){if(!bannerSettings||!bannerSettings.desktopIcons||!bannerSettings.desktopIcons.bandcamp){openExternalWindow('https://c64spark.bandcamp.com','bandcamp');return;}const link=bannerSettings.desktopIcons.bandcamp.link;if(!link){openExternalWindow('https://c64spark.bandcamp.com','bandcamp');return;}if(link.startsWith('http')){openExternalWindow(link,'bandcamp');}else{navigateTo(link);}}
444function escapeHTML(str){const div=document.createElement('div');div.textContent=str||'';return div.innerHTML;}
445function getCurrentPath(){return window.location.pathname.replace(/\/$/,'')||'/';}
446function findArticleByPath(path){const match=path.match(/^\/article(\d+)\.html$/);if(match){const num=parseInt(match[1]);if(num>=1&&num<=11)return num;}return null;}
447function findNewsByPath(path){const match=path.match(/^\/news\/(\d+)\/(\d+)$/);if(!match||!cachedComments)return null;const ri=parseInt(match[1]),ni=parseInt(match[2]);const reporters=cachedComments.filter(a=>a.type==='team_application'&&a.approved===true);const rep=reporters[ri];if(rep&&rep.news&&rep.news[ni]){return{...rep.news[ni],reporterName:rep.name,reporterPhoto:rep.photo,reporterIndex:ri,newsIndex:ni,ratings:rep.ratings||[]};}return null;}
448function findShopByPath(path){const match=path.match(/^\/bazaar\/(.+)$/);if(!match||!cachedShops)return null;const shopId=match[1];const shop=cachedShops.find(s=>s.approved===true&&(s.shopName||'').replace(/[^a-z0-9]/gi,'').toLowerCase()===shopId);return shop||null;}
449function navigateTo(path){if(path.startsWith('/news/')){const item=findNewsByPath(path);if(item){openNewsDetail(item);return;}else{history.pushState(null,'','/');return;}}if(path.startsWith('/bazaar/')){const shop=findShopByPath(path);if(shop){openShopWindow(shop);return;}else{history.pushState(null,'','/');return;}}const articleNum=findArticleByPath(path);if(articleNum){openArticle(articleNum);return;}history.pushState(null,'',path);const windowId=routeMap[path];if(windowId)openWindow(windowId);}
450window.addEventListener('popstate',function(){const path=getCurrentPath();if(path.startsWith('/news/')){const item=findNewsByPath(path);if(item){openNewsDetail(item);return;}}if(path.startsWith('/bazaar/')){const shop=findShopByPath(path);if(shop){openShopWindow(shop);return;}}const articleNum=findArticleByPath(path);if(articleNum){openArticle(articleNum);return;}const windowId=routeMap[path];if(windowId){openWindow(windowId);}else{document.querySelectorAll('.window.active').forEach(w=>{w.classList.remove('active');w.classList.remove('minimized');});activeWindow=null;}});
451function loadSettings(){fetch(`https://api.github.com/repos/${REPO_OWNER}/${REPO_NAME}/contents/${SETTINGS_FILE}`,{headers:{'Authorization':`token ${GITHUB_TOKEN}`,'Accept':'application/vnd.github.v3+json'}}).then(r=>{if(!r.ok)return;return r.json();}).then(d=>{if(!d)return;bannerSettings=JSON.parse(decodeURIComponent(escape(atob(d.content))));applyBannerSettings();applyDesktopIcons();}).catch(()=>{});}
452function applyBannerSettings(){if(!bannerSettings||!bannerSettings.banners||!bannerSettings.banners.underPlayer)return;const bannerEl=document.getElementById('online-game-banner');if(!bannerEl)return;const bannerData=bannerSettings.banners.underPlayer;if(bannerData.image){bannerEl.innerHTML='';const img=document.createElement('img');img.src=bannerData.image;img.alt='Banner';bannerEl.appendChild(img);}}
453function applyDesktopIcons(){if(!bannerSettings||!bannerSettings.desktopIcons||!bannerSettings.desktopIcons.bandcamp)return;const bandcampData=bannerSettings.desktopIcons.bandcamp;const img=document.getElementById('bandcamp-icon-img');const label=document.getElementById('bandcamp-icon-label');if(img&&bandcampData.image)img.src=bandcampData.image;if(label&&bandcampData.label)label.textContent=bandcampData.label;}
454function openShopWindow(shop){const shopId=(shop.shopName||'').replace(/[^a-z0-9]/gi,'').toLowerCase();const winId='window-shop-'+shopId;history.pushState(null,'','/bazaar/'+shopId);if(document.getElementById(winId)){openWindow(winId);return;}const newWin=document.createElement('div');newWin.className='window';newWin.id=winId;if(shop.website){newWin.innerHTML=`<div class="window-header"><div class="window-title-container"><div class="window-title">پاساژ رترو</div><div class="parallel-lines"></div></div><div class="window-controls"><div class="window-btn" onclick="toggleMinimize('${winId}')">_</div><div class="window-btn close" onclick="closeWindow('${winId}')">X</div></div></div><div class="window-content no-padding"><iframe src="${shop.website}" title="${escapeHTML(shop.shopName)}"></iframe></div><div class="resize-handle"></div>`;}else{newWin.innerHTML=`<div class="window-header"><div class="window-title-container"><div class="window-title">پاساژ رترو</div><div class="parallel-lines"></div></div><div class="window-controls"><div class="window-btn" onclick="toggleMinimize('${winId}')">_</div><div class="window-btn close" onclick="closeWindow('${winId}')">X</div></div></div><div class="window-content"><div style="text-align:center;padding:20px;">${shop.logo?`<div style="text-align:center;margin-bottom:15px;"><img src="${shop.logo}" style="width:240px;height:350px;object-fit:contain;border:1px solid #555;" alt="${escapeHTML(shop.shopName)}"></div>`:''}<div style="direction:rtl;text-align:justify;padding:0 20px;"><div style="color:#FFAA66;font-size:14px;margin-bottom:8px;text-align:center;">${shop.shopNumber?'غرفه شماره '+shop.shopNumber:''}</div><div style="color:#FFF;font-size:16px;font-weight:bold;margin-bottom:8px;text-align:center;">${escapeHTML(shop.shopName)}</div><div style="color:#AAA;font-size:13px;margin-bottom:6px;text-align:center;">${escapeHTML(shop.ownerName)}</div><div style="color:#AAA;font-size:13px;margin-bottom:6px;text-align:center;">${escapeHTML(shop.category)}</div><div style="color:#AAA;font-size:13px;margin-bottom:10px;text-align:center;">${escapeHTML(shop.ownerPhone)}</div>${shop.description?`<div style="color:#CCC;font-size:12px;line-height:1.8;margin-top:12px;padding-top:12px;border-top:1px dashed rgba(255,255,255,0.3);">${escapeHTML(shop.description).replace(/\n/g,'<br>')}</div>`:''}</div></div></div><div class="resize-handle"></div>`;}document.body.appendChild(newWin);setupWindowDrag(winId);setupWindowResize(winId);openWindow(winId);}
455const translations={en:{icon_products:"Products.info",icon_market:"Free Ads",icon_cart:"Shopping Cart",icon_tutorials:"Tutorials",
455win_tutorials:"Tutorials",tutorials_forth_label:"Complete Commodore FORTH Tutorial",win_products:"Products.info",win_about:"About Me",win_email:"Send Email",win_cart:"Shopping Cart",articles_btn:"Articles",emu_guide_title:"Amiga Emulator Guide",emu_guide_content:"Clicking the button below will open the online Amiga emulator in a new page. This emulator allows you to run classic Amiga ROM and ADF game and application files directly in your browser.\n\nHow to use:\n1. Obtain the ADF files you need from the \"Amiga apps ADF\" and \"Amiga games ADF\" banners\n2. Click the button below to open the emulator\n3. Load the downloaded ADF file into the emulator\n4. Enjoy your Amiga game or application",emu_launch_btn:"Launch Amiga Emulator",discussion_title:"World of Technology",discussion_label:"World of Technology",discussion_intro:"Welcome to the 'World of Technology' — AmigaStore's news bulletin covering technology, retro, classic and modern computers, and hardware & software innovations. A window to the past, present, and future of technology. You can also join us as a news contributor and take part in creating news content.",team_apply_btn:"Apply for Membership",submit_news_btn:"Submit News",news_loading:"Loading news...",code_hint:"Please enter your membership code",team_apply_hint:"Apply for News Team Membership",email_title:"Contact Us via Email",email_desc:"Send your message to [email protected]",email_placeholder:"Type your message here...",email_send:"Send",products_title:"Products Information",products_desc:"Welcome to the c64spark products! This is a complete recreation of the classic Amiga 500 Workbench 1.3 experience in a modern web browser.",cart_title:"Your Shopping Cart",cart_cancel:"Cancel",cart_confirm:"Confirm",cart_name_label:"Full Name:",cart_name_placeholder:"Enter your full name",cart_phone_label:"Phone Number:",cart_phone_placeholder:"Enter phone number (digits only)",cart_address_label:"Address:",cart_address_placeholder:"Enter your full address",cart_empty:"Your cart is empty",cart_calculate:"Total:",label_price:"Price:",currency:"Toman",btn_add:"Add to Cart",cart_added:"Added to cart successfully!",coming_soon:"Coming Soon",market_title:"Free Ads",market_intro:"Welcome to the Free Ads section! This is a space for posting and browsing listings related to the world of retro computing and classic technology. You can advertise vintage computers, consoles, peripherals, rare components, and retro hardware for buying and selling. Additionally, if you offer related services – including specialized repairs, programming for classic systems, pixel art design, chiptune music production, PCB and hardware design, technical consultation, or any type of freelancing services in this field – you can post your service ad here completely free of charge. Your ad will be published instantly.",market_disclaimer:"The advertiser is solely responsible for the content, accuracy, and fulfillment of each ad. AmigaStore accepts no responsibility for transactions between users.",market_btn:"Submit Free Ad",market_ad_success:"Your ad has been successfully submitted and will appear in the \"Free Ads\" window without approval. Due to the lack of website review of ad content, any discrepancies or violations can be reported by users.",tv_click_label:"Click to Watch ◄",about_title:"About Me",about_p1:"My earliest digital memory is a Game & Watch. A small screen in hand, two buttons on the sides, and a burning building whose people I had to save. That same night, under a starry sky I watched from the rooftop, I wondered if this tiny device could ever show movies, send words to a distant place, or type the name of a cinema in New York and read its program. Decades later, we all carried such a screen in our pockets.",about_p2:"Years later, I stood at the display window of a small shop at the end of Iran Passage in Shiraz, mesmerized by the karate fighters of the Commodore 64 blinking on the monitor. The shop was always crowded, with customers lining up outside, and like many kids of that generation, I had glimpsed something in those small screens that couldn't be explained – only lived.",about_p3:"The Commodore 64 arrived and split my world into before and after. A year later, the Amiga 500 came, and then the Amiga 600 the year after – and I lived with these machines for more than three decades. The Amiga wasn't just a computer. It was a world of thousands of colors, sound pouring from four digital channels, and a boun
455dary dissolving between programmer, painter, and musician. That same world later led me to launch the digital printing department of a photography atelier – where analog photography met professional plotters and the first digital cameras.",about_p4:"But something in me had changed. The Amiga made me a narrator of these machines. For years I wrote on a blog called <a href='https://commodore-amiga.blogfa.com' target='_blank' style='color:#FFAA66;'>Commodore-Amiga on Blogfa</a>. I published the book \"The Amazing Computers of the 1980s.\" And in Iran, for over a decade, I have been writing in the small but passionate world of retrocomputers.",about_p5:"Alongside this nostalgic world, another corner of my mind has always been busy with design. At <a href='https://retrolab.ir' target='_blank' style='color:#FFAA66;'>retroLab.ir</a>, I design minimal and static themes. Perhaps the same aesthetic I once admired in the Amiga's graphics chipset now finds its way into modern websites. <a href='https://retrolab.ir' target='_blank' style='color:#FFAA66;'>retroLab.ir</a> is my professional window, and this website, my personal one.",about_p6:"This is the home of all those years – a place for introducing peripheral hardware, restored systems, and everything that helps keep the Commodore and Amiga legacy alive. And my newest project? A book about the Z80 – the processor that, had that winter's ZX Spectrum found its way into my hands, might have shaped my entire life differently. A tribute to a path I never took. This book is now complete and available as 'Z80 Story' on the Workbench screen.",about_p7:"I have always believed that narrating the history of these machines is a form of immortality. A way to ensure those days, those colors, those sounds, never fully fade away.",about_p8:"Welcome here.",about_p9:"c64spark",about_contact:"Direct contact: <a href='https://t.me/c64spark' target='_blank' style='color:#FFAA66;'>telegram: @c64spark</a>",bazaar_label:"Retro Bazaar",bazaar_intro_fa:"<p>به پاساژ رترو خوش آمدید.</p><p>اینجا اولین بازارچه تخصصی رترو و تکنولوژی ایران است. اگر در زمینه کامپیوترهای کلاسیک، کنسول‌های قدیمی و مدرن، قطعات الکترونیک، سخت‌افزار، نرم‌افزار، تعمیرات تخصصی یا هر حوزه مرتبط دیگری فعالیت دارید، می‌توانید فروشگاه حرفه‌ای خود را در این پاساژ افتتاح کنید. حتی اگر وبسایت شخصی هم داشته باشید، می‌توانید در این پنجره، وبسایت شخصی خود را به‌صورت یکی از پنجره‌های زنده Workbench آمیگا، در معرض بازدیدکنندگان پاساژ رترو قرار دهید.</p><p><strong>چه خدماتی ارائه می‌دهیم؟</strong></p><p>• غرفه اختصاصی با نام و لوگوی شما<br>• درج محصولات و خدمات با قیمت‌گذاری<br>• نمایش وبسایت شخصی شما در قالب پنجره زنده آمیگا<br>• لینک مستقیم تماس با شما</p><p>برای ثبت درخواست، کافیست دکمه سبز رنگ زیر را لمس کنید.</p><div style=\"background-color:rgba(0,0,0,0.4);border:1px solid rgba(255,170,102,0.4);padding:10px 15px;border-radius:4px;margin-top:15px;font-size:10px;color:#FFAA66;text-align:center;\">مدیریت هرکدام از فروشگاه‌های پاساژ رترو به‌عهده مالک فروشگاه است. آمیگااستور هیچ‌گونه مسئولیتی در قبال محتوا، خدمات و تعهدات فروشگاه‌ها نمی‌پذیرد. در صورت مشاهدهٔ هرگونه تخلف، لطفاً مراتب را از طریق ارسال ایمیل به [email protected] اطلاع دهید.</div>",bazaar_intro_en:"<p>Welcome to the Retro Bazaar.</p><p>This is Iran's first specialized retro and technology marketplace. If you are active in the field of classic computers, vintage and modern consoles, electronic components, hardware, softw
455are, specialized repairs, or any other related area, you can open your professional store in this bazaar. Even if you have a personal website, you can showcase it here as one of the live Amiga Workbench windows for Retro Bazaar visitors.</p><p><strong>What services do we offer?</strong></p><p>• A dedicated booth with your name and logo<br>• Listing products and services with pricing<br>• Displaying your personal website as a live Amiga window<br>• Direct contact link to you</p><p>To submit your request, simply click the green button below.</p><div style=\"background-color:rgba(0,0,0,0.4);border:1px solid rgba(255,170,102,0.4);padding:10px 15px;border-radius:4px;margin-top:15px;font-size:10px;color:#FFAA66;text-align:center;\">Each shop in the Retro Bazaar is managed by its respective owner. AmigaStore assumes no responsibility for the content, services, or commitments of any shop. If you notice any violation, please report it via email to [email protected].</div>"},fa:{icon_products:"محصولات",icon_market:"آگهی رایگان",icon_cart:"سبد خرید",icon_tutorials:"آموزش‌ها",win_tutorials:"آموزش‌ها",tutorials_forth_label:"آموزش کامل Forth کمودور",win_products:"محصولات",win_about:"درباره من",win_email:"ارسال ایمیل",win_cart:"سبد خرید",articles_btn:"مقالات",emu_guide_title:"راهنمای امولاتور آمیگا",emu_guide_content:"با کلیک روی دکمه زیر، امولاتور آنلاین آمیگا در یک صفحه جدید باز می‌شود. این امولاتور به شما امکان می‌دهد فایل‌های ROM و ADF بازی‌ها و نرم‌افزارهای کلاسیک آمیگا را مستقیماً در مرورگر خود اجرا کنید.\n\nنحوه استفاده:\nÛ±. فایل‌های ADF مورد نیاز خود را از بنرهای «Amiga apps ADF» و «Amiga games ADF» تهیه Ú©Ù
455†ÛŒØ¯\nÛ². روی دکمه زیر کلیک کنید تا امولاتور باز شود\nÛ³. فایل ADF دانلود شده را در امولاتور بارگذاری (Load) کنید\nÛ´. از اجرای بازی یا نرم‌افزار آمیگا لذت ببرید",emu_launch_btn:"ورود به امولاتور آنلاین آمیگا",discussion_title:"دنیای تکنولوژی",discussion_label:"دنیای تکنولوژی",discussion_intro:"به «دنیای تکنولوژی» خوش آمدید؛ بولتن خبری آمیگااستور برای پوشش اخبار دنیای فناوری، کامپیوترهای رترو و کلاسیک و مدرن، و نوآوری‌های سخت‌افزاری و نرم‌افزاری است. اینجا پنجره‌ای است رو به گذشته، حال، و آیندهٔ تکنولوژی. شما هم می‌توانید به عنوان همکار خبرنگار ما، در فرآیند تولید محتوای خبری مشارکت داشته باشید.",team_apply_btn:"درخواست عضویت",submit_news_btn:"ثبت خبر",news_loading:"در حال بارگذاری اخبار...",code_hint:"لطفاً کد عضویت خود را وارد کنید",team_apply_hint:"فرم درخواست عضویت در تیم خبری",email_title:"تماس از طریق ایمیل",email_desc:"پیام خود را به [email protected] ارسال کنید",email_placeholder:"پیام خود را اینجا بنویسید...",email_send:"ارسال",products_title:"اطلاعات محصولات",products_desc:"به محصولات c64spark خوش آمدید! این صفحه، یک شبیه‌سازی زنده و تعاملی از محیط کلاسیک Workbench 1.3 است. شما می‌توانید پنجره‌ها را جابه‌جا کنید، اندازه‌شان را تغییر دهید، آنها را Minimize کنید و دقیقاً مانند یک سیستم‌عامل واقعی با این فضا تعامل داشته باشید. هر آیکون، یک درگاه به بخشی از دنیای رتروکامپیوترهاست. اگرچه در این بخش چند محصول سخت‌افزاری معرفی شده‌اند، اما هدف اصلی و نبض تپنده این وبسایت، بخش آگهی رایگان است. در آن پنجره، کاربران می‌توانند کامپیوترهای قدیمی، کنسول‌های کلاسیک، قطعات کمیاب و حتی خدمات تخصصی خود را به رایگان ثبت کنند تا در معرض دید علاقه‌مندان سراسر ایران قرار گیرد. این یک بازار اجتماعی برای جامعه رترو است — جایی برای خرید، فروش، تبادل و ارتباط. پس قلم را بردارید و کاوش کنید؛ هر پنجره، داستانی تازه دارد.",cart_title:"سبد خرید شما",cart_cancel:"انصراف",cart_confirm:"تأیید",cart_name_label:"نام کامل:",cart_name_placeholder:"نام کامل خود را وارد کنید",cart_phone_label:"شماره تماس:",cart_phone_placeholder:"شماره تماس را وارد کنید (فقط عدد)",cart_address_label:"آدرس:",cart_address_placeholder:"آدرس کامل خود را وارد کنید",cart_empty:"سبد خرید شما خالی است",cart_calculate:"جمع کل:",label_price:"قیمت:",currency:"تومان",btn_add:"افزودن به سبد",cart_added:"با موفقیت به سبد خرید اضافه شد!",coming_soon:"به زودی موجود می‌شود",market_title:"آگهی رایگان",market_intro:"به بخش آگهی‌های رایگان خوش آمدید! اینجا فضایی برای ثبت و مشاهدهٔ آگهی‌های مرتبط با دنیای رتروکامپیوتینگ و فناوری‌های کلاسیک است. می‌توانید کامپیوترها، کنسول‌ها و لوازم جانبی قدیمی، قطعات کمیاب و سخت‌افزارهای رترو را برای خرید و فروش آگهی کنید. همچنین اگر در زمینه‌های مرتبط – از جمله تعمیرات تخصصی، برنامه‌نویسی برای سیستم‌های کلاسیک، طراحی گرافیک پیکسلی، ساخت موسیقی چیپ‌تیون، طراحی PCB و سخت‌افزار، مشاورهٔ فنی، یا هر نوع خدمات فریلنسری در این حوزه – فعالیت دارید، می‌توانید آگهی خدمات خود را به صورت کاملاً رایگان در این پنجره ثبت کنید. آگهی شما بلادرنگ ثبت می‌گردد.",market_disclaimer:"مسئولیت محتوا، صحت اطلاعات و انجام تعهدات هر آگهی بر عهدهٔ آگهی‌دهنده است. آمیگااستور هیچ‌گونه مسئولیتی در قبال معاملات بین کاربران نمی‌پذیرد.",market_btn:"ثبت آگهی رایگان",market_ad_success:"آگهی شما با موفقیت ثبت شد و بدون نیاز به تأیید در پنجرهٔ «آگهی رایگان» قرار می‌گیرد. با توجه به عدم بازبینی وبسایت روی محتوای آگهی‌ها، هرگونه مغایرت یا تخلف توسط کاربران قابل گزارش خواهد بود.",tv_click_label:"برای تماشا کلیک کنید ◄",about_title:"درباره من",about_p1:"دورترین خاطره‌ای که از دنیای دیجیتال دارم، یک گیم واچ است. صفحه‌ای کوچک در دست، دو دکمه در طرفین، و ساختمانی در حال سوختن که باید آدم‌هایش را نجات می‌دادم. همان شب، زیر آسمان پرستاره‌ای که روی پشت‌بام تماشایش می‌کردم، به این فکر می‌کردم که کاش می‌شد با این دستگاه کوچک، فیلم و کارتون دید، نوشته‌ای به جایی دوردست فرستاد، یا اسم سینمایی در نیویورک را تایپ کرد و برنامه‌اش را خواند. دهه‌ها بعد، همهٔ ما چنین صفحه‌ای در جیبمان داشتیم.",about_p2:"سال‌ها بعد، پای ویترین فروشگاه کوچکی در انتهای ایران پاساژ شیراز می‌ایستادم و محو تماشای کاراته‌بازهای کمودور Û¶Û´ می‌شدم که روی مانیتور چشمک می‌زدند. فروشگاه همیشه شلوغ بود، صف مشتری‌ها تا بیرون می‌رسید، و من مثل خیلی از بچه‌های آن نسل، چیزی را در آن صفحه‌های کوچک دیده بودم که نمی‌شد توضیحش داد – فقط می‌شد زندگی‌اش کرد.",about_p3:"کمودور Û¶Û´ آمد، و دنیایم را به قبل و بعد تقسیم کرد. یک سال بعد، آمیگا ÛµÛ°Û° از راه رسید و سال بعد آمیگا Û¶Û°Û° – و من برای بیش از سه دهه با این ماشین زندگی کردم. آمیگا فقط یک کامپیوتر نبود. دنیایی بود با هزاران رنگ، صدایی که از چهار کانال دیجیتال بیرون می‌ریخت، و مرزی که بین برنامه‌نویس و نقاش و موسیقی‌دان محو می‌شد. همان دنیا، بعدها مرا به راه‌اندازی بخش چاپ دیجیتال یک آتلیهٔ عکاسی کشاند – جایی که عکاسی آنالوگ با پلاترهای حرفه‌ای و اولین دوربین‌های دیجیتال پیوند می‌خورد.",about_p4:"اما چیزی در من تغییر کرده بود. آمیگا مرا راوی این ماشین‌ها کرد. سال‌ها در وبلاگی به نام <a href='https://commodore-amiga.blogfa.com' target='_blank' style='color:#FFAA66;'>کمودور-آمیگا در بلاگفا</a> نوشتم. کتاب «کامپیوترهای شگفت‌انگیز دهه ۱۹۸۰» را منتشر کردم. و در ایران، بیش از یک دهه است که در دنیای کوچک اما پرشور رتروکامپیوترها قلم می‌زنم.",about_p5:"در کنار این دنیای نوستالژیک، گوشهٔ دیگری از ذهنم همیشه به طراحی مشغول بوده است. در <a href='https://retrolab.ir' target='_blank' style='color:#FFAA66;'>retroLab.ir</a> ، پوسته‌های مینیمال و استاتیک طراحی می‌کنم. شاید بتوان گفت همان زیبایی‌شناسی‌ای که روزگاری در چیپست گرافیکی آمیگا تحسینش می‌کردم، حالا در قالب وبسایت‌های مدرن به کار می‌رود. <a href='https://retrolab.ir' target='_blank' style='color:#FFAA66;'>retroLab.ir</a> پنجرهٔ حرفه‌ای من است، و این وبسایت، پنجرهٔ شخصی‌ام.",about_p6:"اینجا خانهٔ همهٔ آن سال‌هاست – جایی برای معرفی سخت‌افزارهای جانبی، سیستم‌های بازسازی‌شده، و هر آنچه به زنده ماندن میراث کمودور و آمیگا کمک می‌کند. و تازه‌ترین پروژه‌ام؟ کتابی دربارهٔ Z80 – پردازنده‌ای که اگر آن زمستان اسپکتروم به دستم می‌رسید، شاید تمام زندگی‌ام را با آن می‌گذراندم. ادای دینی به مسیری که نرفتم. این کتاب اکنون تکمیل شده و با نام «Z80 Story» در صفحه Workbench در دسترس است.",about_p7:"همیشه باور داشته‌ام که روایت کردن تاریخ این ماشین‌ها، خودش شکلی از جاودانگی است. راهی برای اینکه آن روزها، آن رنگ‌ها، آن صداها، هرگز کاملاً خاموش نشوند.",about_p8:"به اینجا خوش آمدید.",about_p9:"c64spark",about_contact:"ارتباط مستقیم با من: <a href='https://t.me/c64spark' target='_blank' style='color:#FFAA66;'>telegram: @c64spark</a>",bazaar_label:"پاساژ رترو",bazaar_intro_fa:"<p>به پاساژ رترو خوش آمدید.</p><p>اینجا اولین بازارچه تخصصی رترو و تکنولوژی ایران است. اگر در زمینه کامپیوترهای کلاسیک، کنسول‌های قدیمی و مدرن، قطعات الکترونیک، سخت‌افزار، نرم‌افزار، تعمیرات تخصصی یا هر حوزه مرتبط دیگری فعالیت دارید، می‌توانید فروشگاه حرفه‌ای خود را در این پاساژ افتتاح کنید. حتی اگر وبسایت شخصی هم داشته باشید، می‌توانید در این پنجره، وبسایت شخصی خود را به‌صورت یکی از پنجره‌های زنده Workbench آمیگا، در معرض بازدیدکنندگان پاساژ رترو قرار دهید.</p><p><strong>چه خدماتی ارائه می‌دهیم؟</strong></p><p>• غرفه اختصاصی با نام و لوگوی شما<br>• درج محصولات و خدمات با قیمت‌گذاری<br>• نمایش وبسایت شخصی شما در قالب پنجره زنده آمیگا<br>• لینک مستقیم تماس با شما</p><p>برای ثبت درخواست، کافیست دکمه سبز رنگ زیر را لمس کنید.</p><div style=\"background-color:rgba(0,0,0,0.4);border:1px solid rgba(255,170,102,0.4);padding:10px 15px;border-radius:4px;margin-top:15px;font-size:10px;color:#FFAA66;text-align:center;\">مدیریت هرکدام از فروشگاه‌های پاساژ رترو به‌عهده مالک فروشگاه است. آمیگااستور هیچ‌گونه مسئولیتی در قبال محتوا، خدمات و تعهدات فروشگاه‌ها نمی‌پذیرد. در صورت مشاهدهٔ هرگونه تخلف، لطفاً مراتب را از طریق ارسال ایمیل به [email protected] اطلاع دهید.</div>",bazaar_intro_en:"<p>Welcome to the Retro Bazaar.</p><p>This is Iran's first specialized retro and technology marketplace. If you are active in the field of classic computers, vintage and modern consoles, electronic components, hardware, softw
455are, specialized repairs, or any other related area, you can open your professional store in this bazaar. Even if you have a personal website, you can showcase it here as one of the live Amiga Workbench windows for Retro Bazaar visitors.</p><p><strong>What services do we offer?</strong></p><p>• A dedicated booth with your name and logo<br>• Listing products and services with pricing<br>• Displaying your personal website as a live Amiga window<br>• Direct contact link to you</p><p>To submit your request, simply click the green button below.</p><div style=\"background-color:rgba(0,0,0,0.4);border:1px solid rgba(255,170,102,0.4);padding:10px 15px;border-radius:4px;margin-top:15px;font-size:10px;color:#FFAA66;text-align:center;\">Each shop in the Retro Bazaar is managed by its respective owner. AmigaStore assumes no responsibility for the content, services, or commitments of any shop. If you notice any violation, please report it via email to [email protected].</div>"}};
456function t(key){return translations[currentLang][key]||key;}
457function applyTranslations(){document.querySelectorAll('[data-lang-key]').forEach(el=>{const key=el.getAttribute('data-lang-key');if(el.tagName==='INPUT'||el.tagName==='TEXTAREA')el.placeholder=t(key);
457else el.innerHTML=t(key);});document.querySelectorAll('.article-paragraph').forEach(el=>{if(currentLang==='fa'){el.classList.add('rtl-text');el.classList.remove('ltr-text');}else{el.classList.add('ltr-text');el.classList.remove('rtl-text');}});const bazaarFa=document.querySelector('[data-lang-key="bazaar_intro_fa"]');const bazaarEn=document.querySelector('[data-lang-key="bazaar_intro_en"]');if(bazaarFa)bazaarFa.style.display=currentLang==='fa'?'':'none';if(bazaarEn)bazaarEn.style.display=currentLang==='en'?'':'none';document.querySelectorAll('.window-content').forEach(el=>{el.style.direction=currentLang==='fa'?'rtl':'ltr';});document.getElementById('lang-toggle-header').textContent=currentLang==='en'?'فارسی':'English';setBookBadgeLang(currentLang);updateCartDisplay();updateCartIcon();}
458function toggleLanguage(){currentLang=currentLang==='en'?'fa':'en';applyTranslations();}
459function toggleArticlesMenu(){const m=document.getElementById('articles-menu');m.style.display=m.style.display==='block'?'none':'block';}
460document.addEventListener('click',function(e){const m=document.getElementById('articles-menu'),t=document.getElementById('articles-toggle');if(!m.contains(e.target)&&!t.contains(e.target))m.style.display='none';});
461function updateFooterTime(){const n=new Date();document.getElementById('footer-right').textContent=`${String(n.getHours()).padStart(2,'0')}:${String(n.getMinutes()).padStart(2,'0')}:${String(n.getSeconds()).padStart(2,'0')}`;}setInterval(updateFooterTime,1000);updateFooterTime();
462function openTvLightbox(){const lb=document.getElementById('tv-lightbox'),lbV=document.getElementById('tv-lightbox-video');if(musicAudio&&!musicAudio.paused)musicAudio.pause();if(lbV){lbV.currentTime=0;lbV.muted=false;lbV.play();}lb.classList.add('active');}
463function closeTvLightbox(){const lb=document.getElementById('tv-lightbox'),lbV=document.getElementById('tv-lightbox-video');if(lbV){lbV.pause();lbV.muted=true;}lb.classList.remove('active');}
464document.addEventListener('keydown',function(e){if(e.key==='Escape'){closeTvLightbox();closeAdLightbox();closeShopModal();closeCodeModal();closeNewsSubmitModal();closeTeamApplyModal();closeAdSubmitModal();closeProductAdminModal();closeProductConfirmModal();closeAdminPassProductsModal();closeAdminPassDiscussionModal();closeDeleteConfirmModal();closeMarketAccessModal();}});
465const playlist=[{title:"Bitstream Odyssey is the manifestation of an instrumental sonic universe; a realm where cyberpunk glimmers and synthwave pulses paint pixelated memories upon the canvas of time. This album invites you to explore the hidden layers of data and encounter the beauty of digital forms...... The complete version of this memorable work has been produced as a physical cassette tape by c64spark and released in 2025",url:"https://raw.githubusercontent.com/silverspark-ir/Amigastore/main/Bitstream%20Odyssey%20%20-%20%20side%20B%20%20-%20%20part%20A.mp3"}];
466let currentTrack=0,isPlaying=false,holdInterval=null;
467const musicAudio=document.getElementById('music-player'),playBtn=document.getElementById('btn-play'),marqueeEl=document.getElementById('player-marquee');
468function loadTrack(index){if(index<0||index>=playlist.length)return;currentTrack=index;musicAudio.src=playlist[currentTrack].url;musicAudio.load();marqueeEl.textContent=playlist[currentTrack].title;}
469function togglePlay(){if(isPlaying){musicAudio.pause();playBtn.classList.remove('playing');isPlaying=false;}else{const lbV=document.getElementById('tv-lightbox-video');if(lbV&&!lbV.paused)lbV.muted=true;musicAudio.play().then(()=>{playBtn.classList.add('playing');isPlaying=true;}).catch(()=>{});}}
470musicAudio.addEventListener('ended',()=>{playBtn.classList.remove('playing');isPlaying=false;});
471function startHold(direction){seekTrack(direction);holdInterval=setInterval(()=>seekTrack(direction),150);}
472function stopHold(){if(holdInterval){clearInterval(holdInterval);holdInterval=null;}}
473function seekTrack(direction){if(direction==='next')musicAudio.currentTime=Math.min(musicAudio.duration||0,musicAudio.currentTime+5);else musicAudio.currentTime=Math.max(0,musicAudio.currentTime-5);}loadTrack(0);
474let activeWindow=null,isDraggingW=false,isResizingW=false,dragWindow=null,resizeWindow=null,dragOffset={x:0,y:0},resizeStart={x:0,y:0,width:0,height:0},zIndexCounter=100,openWindowCount=0;
475const windowOriginalSizes=new Map(),windowPositions=new Map();
476let cartItems=[];const cartIcon=document.getElementById('icon-cart');
477function showCartNotification(msg){const notification=document.createElement('div');notification.className='cart-notification';notification.textContent=msg;const desktop=document.getElementById('desktop');if(desktop){desktop.appendChild(notification);}else{document.body.appendChild(notification);}setTimeout(()=>{if(notification.parentNode)notification.parentNode.removeChild(notification);},2200);}
478function addToCart(n,p){cartItems.push({name:n,price:p});localStorage.setItem('amigaCart',JSON.stringify(cartItems));updateCartIcon();updateCartDisplay();showCartNotification(t('cart_added'));}
479function removeFromCart(i){cartItems.splice(i,1);localStorage.setItem('amigaCart',JSON.stringify(cartItems));updateCartIcon();updateCartDisplay();}
480function updateCartIcon(){if(cartIcon)cartIcon.classList.toggle('cart-icon-glow',cartItems.length>0);}
481function updateCartDisplay(){const c=document.getElementById('cart-items-container');if(!c)return;const tc=document.getElementById('cart-total-container'),bc=document.getElementById('cart-buttons-container'),isec=document.getElementById('cart-input-section');if(!cartFormVisible){if(isec)isec.style.display='none';if(bc)bc.style.display='flex';}if(cartItems.length===0){cartFormVisible=false;if(isec)isec.style.display='none';if(bc)bc.style.display='flex';const fb=document.getElementById('cart-final-buttons');if(fb)fb.style.display='none';c.innerHTML=`<div style="text-align:center;padding:20px;color:#888;">${t('cart_empty')}</div>`;tc.innerHTML='';return;}let h='',tot=0;
481cartItems.forEach((it,i)=>{tot+=it.price;h+=`<div class="cart-item"><div class="cart-item-info"><div class="cart-item-name">${escapeHTML(it.name)}</div><div class="cart-item-price">${it.price.toLocaleString()} ${t('currency')}</div></div><div class="cart-item-remove" data-index="${i}">✕</div></div>`;});c.innerHTML=h;tc.innerHTML=`<div class="cart-total-label">${t('cart_calculate')}</div><div class="cart-total-amount">${tot.toLocaleString()} ${t('currency')}</div>`;c.querySelectorAll('.cart-item-remove').forEach(b=>{b.addEventListener('click',function(e){e.stopPropagation();e.preventDefault();removeFromCart(parseInt(this.getAttribute('data-index')));});});}
482function showCartInputs(){if(cartItems.length===0){alert(t('cart_empty'));return;}cartFormVisible=true;document.getElementById('cart-input-section').style.display='block';document.getElementById('cart-buttons-container').style.display='none';document.getElementById('cart-final-buttons').style.display='flex';}
483function sendInvoice(){const nm=document.getElementById('cart-customer-name')?.value;const ph=document.getElementById('cart-customer-phone')?.value;const ad=document.getElementById('cart-customer-address')?.value;if(!nm||!ph||!ad){alert('لطفاً تمام فیلدها را پر کنید.');return;}let msg=`🛒 ${nm}\n📞 ${ph}\n📍 ${ad}\n\n`;let tot=0;cartItems.forEach(it=>{tot+=it.price;msg+=`• ${it.name}: ${it.price.toLocaleString()} ${t('currency')}\n`;});msg+=`\n💰 ${t('cart_calculate')}: ${tot.toLocaleString()} ${t('currency')}`;window.open(`https://wa.me/989116546234?text=${encodeURIComponent(msg)}`,'_blank');cartItems=[];localStorage.removeItem('amigaCart');cartFormVisible=false;updateCartIcon();updateCartDisplay();closeWindow('window-cart');}
484function getWindowSize(wid){if(wid==='window-discussion')return{width:400,height:500};if(wid==='window-market')return{width:450,height:550};if(wid==='window-project')return{width:450,height:600};if(wid==='window-retro-bazaar')return{width:450,height:550};if(wid==='window-book-list')return{width:520,height:600};if(wid==='window-uploadkon')return{width:500,height:600};if(wid==='window-shop-retrolab')return{width:470,height:670};if(wid==='window-tutorials')return{width:420,height:480};if(wid.startsWith('window-shop-'))return{width:500,height:600};if(wid.startsWith('window-news-'))return{width:500,height:600};if(wid.startsWith('window-article-'))return{width:500,height:600};if(wid.startsWith('window-ext-'))return{width:500,height:600};if(wid==='window-forth-live')return{width:900,height:700};return{width:300,height:600};}
485function getStaggeredPosition(wid){if(windowPositions.has(wid))return windowPositions.get(wid);const p={left:50+(openWindowCount*30)%400,top:50+(openWindowCount*30)%300};windowPositions.set(wid,p);openWindowCount++;return p;}
486function openWindow(wid){document.getElementById('articles-menu').style.display='none';const w=document.getElementById(wid);if(!w)return;zIndexCounter++;w.style.zIndex=zIndexCounter;w.classList.add('active');if(!w.dataset.positioned){const pos=getStaggeredPosition(wid),sz=getWindowSize(wid);w.style.left=pos.left+'px';w.style.top=pos.top+'px';w.style.width=sz.width+'px';w.style.height=sz.height+'px';w.dataset.positioned='true';setupWindowDrag(wid);setupWindowResize(wid);}keepWindowInBounds(w);activeWindow=w;if(wid==='window-cart')updateCartDisplay();if(wid==='window-about')buildAboutContent();if(wid==='window-discussion'&&!cachedComments)loadNews();if(wid==='window-market'&&!cachedAds)loadAds();if(wid==='window-retro-bazaar')loadShops();if(wid==='window-project'&&!cachedProducts)loadProducts();}
487function buildAboutContent(){const ac=document.getElementById('about-content');const contactEl=document.getElementById('about-contact');if(!ac)return;let p='';for(let i=1;i<=9;i++)p+=`<div class="article-paragraph ${currentLang==='fa'?'rtl-text':'ltr-text'}">${t('about_p'+i)}</div>`;ac.innerHTML=`<div class="article-title">${t('about_title')}</div><img src="https://raw.githubusercontent.com/silverspark-ir/Amigastore/main/c64spark.ir%20logo.png" class="about-logo" alt="c64spark">${p}`;if(contactEl){if(currentLang==='fa'){contactEl.innerHTML=`<a href="https://t.me/c64spark" target="_blank" class="about-contact-btn">📡 ارتباط در تلگرام</a>`;}else{contactEl.innerHTML=`<a href="https://t.me/c64spark" target="_blank" class="about-contact-btn">📡 Contact on Telegram</a>`;}}}
488function closeWindow(wid){const w=document.getElementById(wid);if(!w)return;w.classList.remove('active');w.classList.remove('minimized');if(activeWindow===w)activeWindow=null;if(wid==='window-discussion'){adminMode=false;}if(getCurrentPath()!=='/'){history.pushState(null,'','/');}}
489function toggleMinimize(wid){const w=document.getElementById(wid);if(!w)return;if(w.classList.contains('minimized')){w.classList.remove('minimized');if(windowOriginalSizes.has(wid)){w.style.height=windowOriginalSizes.get(wid).height+'px';windowOriginalSizes.delete(wid);}}else{windowOriginalSizes.set(wid,{height:w.offsetHeight,width:w.offsetWidth});w.classList.add('minimized');w.style.height='33px';}openWindow(wid);}
490function setupWindowDrag(wid){const w=document.getElementById(wid);if(!w)return;const h=w.querySelector('.window-header');if(!h)return;h.addEventListener('mousedown',function(e){if(e.target.classList.contains('window-btn'))return;e.preventDefault();e.stopPropagation();dragWindow=w;isDraggingW=true;dragOffset.x=e.clientX-w.offsetLeft;dragOffset.y=e.clientY-w.offsetTop;openWindow(wid);document.addEventListener('mousemove',drag);document.addEventListener('mouseup',stopDrag);});h.addEventListener('touchstart',function(e){if(e.target.classList.contains('window-btn'))return;e.preventDefault();e.stopPropagation();const t=e.touches[0];dragWindow=w;isDraggingW=true;dragOffset.x=t.clientX-w.offsetLeft;dragOffset.y=t.clientY-w.offsetTop;openWindow(wid);document.addEventListener('touchmove',dragTouch);document.addEventListener('touchend',stopDragTouch);});}
491function drag(e){if(!isDraggingW||!dragWindow)return;e.preventDefault();const d=document.getElementById('desktop');dragWindow.style.left=Math.max(10,Math.min(e.clientX-dragOffset.x,d.scrollWidth-dragWindow.offsetWidth-10))+'px';dragWindow.style.top=Math.max(10,Math.min(e.clientY-dragOffset.y,d.scrollHeight-dragWindow.offsetHeight-10))+'px';}
492function dragTouch(e){if(!isDraggingW||!dragWindow)return;e.preventDefault();const d=document.getElementById('desktop'),t=e.touches[0];dragWindow.style.left=Math.max(10,Math.min(t.clientX-dragOffset.x,d.scrollWidth-dragWindow.offsetWidth-10))+'px';dragWindow.style.top=Math.max(10,Math.min(t.clientY-dragOffset.y,d.scrollHeight-dragWindow.offsetHeight-10))+'px';}
493function stopDrag(){isDraggingW=false;dragWindow=null;document.removeEventListener('mousemove',drag);document.removeEventListener('mouseup',stopDrag);}
494function stopDragTouch(){isDraggingW=false;dragWindow=null;document.removeEventListener('touchmove',dragTouch);document.removeEventListener('touchend',stopDragTouch);}
495function setupWindowResize(wid){const w=document.getElementById(wid);if(!w)return;const rh=w.querySelector('.resize-handle');if(!rh)return;rh.addEventListener('mousedown',function(e){e.preventDefault();e.stopPropagation();resizeWindow=w;isResizingW=true;resizeStart={x:e.clientX,y:e.clientY,width:w.offsetWidth,height:w.offsetHeight};openWindow(wid);document.addEventListener('mousemove',resize);document.addEventListener('mouseup',stopResize);});rh.addEventListener('touchstart',function(e){e.preventDefault();e.stopPropagation();const t=e.touches[0];resizeWindow=w;isResizingW=true;resizeStart={x:t.clientX,y:t.clientY,width:w.offsetWidth,height:w.offsetHeight};openWindow(wid);document.addEventListener('touchmove',resizeTouch);document.addEventListener('touchend',stopResizeTouch);});}
496function resize(e){if(!isResizingW||!resizeWindow)return;e.preventDefault();resizeWindow.style.width=Math.min(1200,Math.max(250,resizeStart.width+(e.clientX-resizeStart.x)))+'px';resizeWindow.style.height=Math.min(800,Math.max(200,resizeStart.height+(e.clientY-resizeStart.y)))+'px';keepWindowInBounds(resizeWindow);}
497function resizeTouch(e){if(!isResizingW||!resizeWindow)return;e.preventDefault();const t=e.touches[0];resizeWindow.style.width=Math.min(1200,Math.max(250,resizeStart.width+(t.clientX-resizeStart.x)))+'px';resizeWindow.style.height=Math.min(800,Math.max(200,resizeStart.height+(t.clientY-resizeStart.y)))+'px';keepWindowInBounds(resizeWindow);}
498function stopResize(){isResizingW=false;resizeWindow=null;document.removeEventListener('mousemove',resize);document.removeEventListener('mouseup',stopResize);}
499function stopResizeTouch(){isResizingW=false;resizeWindow=null;document.removeEventListener('touchmove',resizeTouch);document.removeEventListener('touchend',stopResizeTouch);}
500function keepWindowInBounds(w){const d=document.getElementById('desktop');let l=parseInt(w.style.left)||50,t=parseInt(w.style.top)||50,wd=parseInt(w.style.width)||300,h=w.classList.contains('minimized')?33:(parseInt(w.style.height)||600);if(l+wd>d.scrollWidth)l=Math.max(10,d.scrollWidth-wd-10);if(t+h>d.scrollHeight)t=Math.max(10,d.scrollHeight-h-10);if(l<10)l=10;if(t<10)t=10;w.style.left=l+'px';w.style.top=t+'px';}
501function openAdminPassDiscussionModal(){document.getElementById('admin-password-discussion-input').value='';document.getElementById('admin-pass-discussion-modal-overlay').classList.add('active');}
502function closeAdminPassDiscussionModal(){document.getElementById('admin-pass-discussion-modal-overlay').classList.remove('active');}
503function checkAdminPasswordDiscussion(){const input=document.getElementById('admin-password-discussion-input')?.value.trim();if(input===ADMIN_PASSWORD){closeAdminPassDiscussionModal();adminMode=true;const container=document.getElementById('news-container');if(container&&cachedComments){renderNews(cachedComments.filter(a=>a.type==='team_application'&&a.approved===true),container);}}else{alert(currentLang==='fa'?'رمز عبور اشتباه است.':'Incorrect password.');}}
504function openDeleteConfirmModal(item){pendingDeleteData=item;const modalText=document.querySelector('#delete-confirm-modal .confirm-text');if(modalText){modalText.textContent=currentLang==='fa'?'آیا از حذف این خبر اطمینان دارید؟':'Are you sure you want to delete this news?';}document.getElementById('delete-confirm-modal-overlay').classList.add('active');const yesBtn=document.getElementById('delete-confirm-yes-btn');if(yesBtn){yesBtn.onclick=function(){executeDeleteNews();};}}
505function closeDeleteConfirmModal(){document.getElementById('delete-confirm-modal-overlay').classList.remove('active');pendingDeleteData=null;}
506async function executeDeleteNews(){if(!pendingDeleteData||!cachedComments)return;const ri=pendingDeleteData.reporterIndex,ni=pendingDeleteData.newsIndex;const all=JSON.parse(JSON.stringify(cachedComments));const reporters=all.filter(a=>a.type==='team_application'&&a.approved===true);if(!reporters[ri]||!reporters[ri].news[ni])return;reporters[ri].news.splice(ni,1);if(reporters[ri].news.length===0){reporters[ri].ratings=[];}const fullAll=all.map(a=>{if(a.type==='team_application'&&a.approved===true){const idx=cachedComments.filter(x=>x.type==='team_application'&&x.approved===true).indexOf(cachedComments.filter(x=>x.type==='team_application'&&x.approved===true).find(r=>r.phone===a.phone));if(idx===ri){a.news=reporters[ri].news;a.ratings=reporters[ri].ratings;}}return a;});const jsonStr=JSON.stringify(fullAll,null,2);try{const r=await fetch(`https://api.github.com/repos/${REPO_OWNER}/${REPO_NAME}/contents/${COMMENTS_FILE}`,{headers:{'Authorization':`token ${GITHUB_TOKEN}`,'Accept':'application/vnd.github.v3+json'}});let sha=null;if(r.ok){const d=await r.json();sha=d.sha;}const ur=await fetch(`https://api.github.com/repos/${REPO_OWNER}/${REPO_NAME}/contents/${COMMENTS_FILE}`,{method:'PUT',headers:{'Authorization':`token ${GITHUB_TOKEN}`,'Accept':'application/vnd.github.v3+json','Content-Type':'application/json'},body:JSON.stringify({message:`delete news ${ri}/${ni}`,content:btoa(unescape(encodeURIComponent(jsonStr))),sha})});if(ur.ok){cachedComments=fullAll;closeDeleteConfirmModal();const container=document.getElementById('news-container');if(container)renderNews(cachedComments.filter(a=>a.type==='team_application'&&a.approved===true),container);document.getElementById('success-alert-text').textContent=currentLang==='fa'?'خبر با موفقیت حذف شد.':'News deleted successfully.';document.getElementById('success-alert-overlay').classList.add('active');}else{alert(currentLang==='fa'?'خطا در حذف خبر.':'Error deleting news.');}}catch(e){alert(currentLang==='fa'?'خطا در ارتباط با سرور.':'Server connection error.');}}
507function openCodeModal(){document.getElementById('code-input').value='';document.getElementById('code-modal-overlay').classList.add('active');}
508function closeCodeModal(){document.getElementById('code-modal-overlay').classList.remove('active');}
509function verifyCode(){const code=document.getElementById('code-input')?.value.trim();if(!code)return;fetch(`https://api.github.com/repos/${REPO_OWNER}/${REPO_NAME}/contents/${COMMENTS_FILE}`,{headers:{'Authorization':`token ${GITHUB_TOKEN}`,'Accept':'application/vnd.github.v3+json'}}).then(r=>{if(!r.ok)throw new Error();return r.json();}).then(d=>{const all=JSON.parse(decodeURIComponent(escape(atob(d.content))));const reporter=all.find(a=>a.type==='team_application'&&a.code===code&&a.approved===true);if(reporter){currentReporterCode=code;closeCodeModal();openNewsSubmitModal();}else{alert(currentLang==='fa'?'کد عضویت نامعتبر است.':'Invalid membership code.');}}
509).catch(()=>{alert(currentLang==='fa'?'خطا در بررسی کد.':'Error verifying code.');});}
510function openNewsSubmitModal(item){const hint=document.getElementById('news-submit-modal-hint');const btn=document.getElementById('news-submit-btn');if(item){pendingEditData=item;document.getElementById('news-image1').value=item.images?item.images[0]||'':'';document.getElementById('news-image2').value=item.images?item.images[1]||'':'';document.getElementById('news-image3').value=item.images?item.images[2]||'':'';document.getElementById('news-title').value=item.title||'';document.getElementById('news-body').value=item.body||'';document.getElementById('news-title-en').value=item.title_en||'';document.getElementById('news-body-en').value=item.body_en||'';document.getElementById('news-source').value=item.source||'';if(hint)hint.textContent=currentLang==='fa'?'ویرایش خبر':'Edit News';if(btn){btn.textContent=currentLang==='fa'?'اعمال تغییرات':'Apply Changes';btn.onclick=function(){submitEditedNews();};}}else{pendingEditData=null;document.getElementById('news-image1').value='';document.getElementById('news-image2').value='';document.getElementById('news-image3').value='';document.getElementById('news-title').value='';document.getElementById('news-body').value='';document.getElementById('news-title-en').value='';document.getElementById('news-body-en').value='';document.getElementById('news-source').value='';if(hint)hint.textContent=currentLang==='fa'?'فرم ثبت خبر':'Submit News';if(btn){btn.textContent=currentLang==='fa'?'ثبت':'Submit';btn.onclick=function(){submitNews();};}if(btn){btn.style.opacity='1';btn.style.pointerEvents='auto';btn.disabled=false;btn.style.cursor='pointer';}}document.getElementById('news-submit-modal-overlay').classList.add('active');}
511function closeNewsSubmitModal(){document.getElementById('news-submit-modal-overlay').classList.remove('active');pendingEditData=null;}
512async function submitNews(){const img1=document.getElementById('news-image1')?.value.trim();const img2=document.getElementById('news-image2')?.value.trim();const img3=document.getElementById('news-image3')?.value.trim();const title=document.getElementById('news-title')?.value.trim();const body=document.getElementById('news-body')?.value.trim();const title_en=document.getElementById('news-title-en')?.value.trim();const body_en=document.getElementById('news-body-en')?.value.trim();const source=document.getElementById('news-source')?.value.trim();if(!img1||!title||!body){alert(currentLang==='fa'?'لطفاً فیلدهای اجباری را پر کنید.':'Please fill in required fields.');return;}const btn=document.getElementById('news-submit-btn');if(btn){btn.textContent=currentLang==='fa'?'در حال ثبت...':'Submitting...';btn.disabled=true;btn.style.opacity='0.5';btn.style.cursor='wait';}try{const r=await fetch(`https://api.github.com/repos/${REPO_OWNER}/${REPO_NAME}/contents/${COMMENTS_FILE}`,{headers:{'Authorization':`token ${GITHUB_TOKEN}`,'Accept':'application/vnd.github.v3+json'}});let all=[];let sha=null;if(r.ok){const d=await r.json();all=JSON.parse(decodeURIComponent(escape(atob(d.content))));sha=d.sha;}const reporter=all.find(a=>a.type==='team_application'&&a.code===currentReporterCode&&a.approved===true);if(!reporter){alert(currentLang==='fa'?'خبرنگار یافت نشد.':'Reporter not found.');if(btn){btn.textContent=currentLang==='fa'?'ثبت':'Submit';btn.disabled=false;btn.style.opacity='1';btn.style.cursor='pointer';}return;}if(!reporter.news)reporter.news=[];reporter.news.push({images:[img1,img2,img3].filter(i=>i),title,body,title_en:title_en||'',body_en:body_en||'',source:source||'',date:new Date().toLocaleDateString('fa-IR')});const jsonStr=JSON.stringify(all,null,2);const ur=await fetch(`https://api.github.com/repos/${REPO_OWNER}/${REPO_NAME}/contents/${COMMENTS_FILE}`,{method:'PUT',headers:{'Authorization':`token ${GITHUB_TOKEN}`,'Accept':'application/vnd.github.v3+json','Content-Type':'application/json'},body:JSON.stringify({message:`news from ${reporter.name}`,content:btoa(unescape(encodeURIComponent(jsonStr))),sha})});if(ur.ok){closeNewsSubmitModal();cachedComments=all;document.getElementById('success-alert-overlay').classList.add('active');const container=document.getElementById('news-container');if(container)renderNews(all.filter(a=>a.type==='team_application'&&a.approved===true),container);}else{alert(currentLang==='fa'?'خطا در ثبت خبر.':'Error submitting news.');}}catch(e){alert(currentLang==='fa'?'خطا در ارتباط با سرور.':'Server connection error.');}if(btn){btn.textContent=currentLang==='fa'?'ثبت':'Submit';btn.disabled=false;btn.style.opacity='1';btn.style.cursor='pointer';}}
513async function submitEditedNews(){if(!pendingEditData||!cachedComments)return;const img1=document.getElementById('news-image1')?.value.trim();const img2=document.getElementById('news-image2')?.value.trim();const img3=document.getElementById('news-image3')?.value.trim();const title=document.getElementById('news-title')?.value.trim();const body=document.getElementById('news-body')?.value.trim();const title_en=document.getElementById('news-title-en')?.value.trim();const body_en=document.getElementById('news-body-en')?.value.trim();const source=document.getElementById('news-source')?.value.trim();
513if(!img1||!title||!body){alert(currentLang==='fa'?'لطفاً فیلدهای اجباری را پر کنید.':'Please fill in required fields.');return;}const btn=document.getElementById('news-submit-btn');if(btn){btn.textContent=currentLang==='fa'?'در حال ثبت...':'Applying...';btn.disabled=true;btn.style.opacity='0.5';btn.style.cursor='wait';}try{const r=await fetch(`https://api.github.com/repos/${REPO_OWNER}/${REPO_NAME}/contents/${COMMENTS_FILE}`,{headers:{'Authorization':`token ${GITHUB_TOKEN}`,'Accept':'application/vnd.github.v3+json'}});let all=[];let sha=null;if(r.ok){const d=await r.json();all=JSON.parse(decodeURIComponent(escape(atob(d.content))));sha=d.sha;}const ri=pendingEditData.reporterIndex,ni=pendingEditData.newsIndex;const reporters=all.filter(a=>a.type==='team_application'&&a.approved===true);if(!reporters[ri]||!reporters[ri].news[ni]){alert(currentLang==='fa'?'خبر یافت نشد.':'News not found.');if(btn){btn.textContent=currentLang==='fa'?'اعمال تغییرات':'Apply Changes';btn.disabled=false;btn.style.opacity='1';btn.style.cursor='pointer';}return;}reporters[ri].news[ni]={images:[img1,img2,img3].filter(i=>i),title,body,title_en:title_en||'',body_en:body_en||'',source:source||'',date:reporters[ri].news[ni].date||new Date().toLocaleDateString('fa-IR')};const fullAll=all.map(a=>{if(a.type==='team_application'&&a.approved===true){const idx=cachedComments.filter(x=>x.type==='team_application'&&x.approved===true).indexOf(cachedComments.filter(x=>x.type==='team_application'&&x.approved===true).find(r=>r.phone===a.phone));if(idx===ri)a.news=reporters[ri].news;}return a;});const jsonStr=JSON.stringify(fullAll,null,2);const ur=await fetch(`https://api.github.com/repos/${REPO_OWNER}/${REPO_NAME}/contents/${COMMENTS_FILE}`,{method:'PUT',headers:{'Authorization':`token ${GITHUB_TOKEN}`,'Accept':'application/vnd.github.v3+json','Content-Type':'application/json'},body:JSON.stringify({message:`edit news ${ri}/${ni}`,content:btoa(unescape(encodeURIComponent(jsonStr))),sha})});if(ur.ok){closeNewsSubmitModal();cachedComments=fullAll;pendingEditData=null;const container=document.getElementById('news-container');if(container)renderNews(cachedComments.filter(a=>a.type==='team_application'&&a.approved===true),container);document.getElementById('success-alert-text').textContent=currentLang==='fa'?'خبر با موفقیت ویرایش شد.':'News edited successfully.';document.getElementById('success-alert-overlay').classList.add('active');}else{alert(currentLang==='fa'?'خطا در ویرایش خبر.':'Error editing news.');}}catch(e){alert(currentLang==='fa'?'خطا در ارتباط با سرور.':'Server connection error.');}if(btn){btn.textContent=currentLang==='fa'?'اعمال تغییرات':'Apply Changes';btn.disabled=false;btn.style.opacity='1';btn.style.cursor='pointer';}}
514function openTeamApplyModal(){document.getElementById('team-email').value='';document.getElementById('team-name').value='';document.getElementById('team-phone').value='';document.getElementById('team-photo').value='';const btn=document.getElementById('team-apply-btn');if(btn){btn.style.opacity='1';btn.style.pointerEvents='auto';btn.textContent=currentLang==='fa'?'ثبت درخواست عضویت':'Submit Application';btn.disabled=false;btn.style.cursor='pointer';}document.getElementById('team-apply-modal-overlay').classList.add('active');}
515function closeTeamApplyModal(){document.getElementById('team-apply-modal-overlay').classList.remove('active');}
516async function submitTeamApplication(){const email=document.getElementById('team-email')?.value.trim();const name=document.getElementById('team-name')?.value.trim();const phone=document.getElementById('team-phone')?.value.trim();const photo=document.getElementById('team-photo')?.value.trim();if(!email||!name||!phone||!photo){alert(currentLang==='fa'?'لطفاً تمام فیلدهای اجباری را پر کنید.':'Please fill in all required fields.');return;}if(!/^09\d{9}$/.test(phone)){alert(currentLang==='fa'?'شماره موبایل معتبر نیست.':'Invalid phone number.');return;}const btn=document.getElementById('team-apply-btn');if(btn){btn.textContent=currentLang==='fa'?'در حال ثبت...':'Submitting...';btn.disabled=true;btn.style.opacity='0.5';btn.style.cursor='wait';}try{const r=await fetch(`https://api.github.com/repos/${REPO_OWNER}/${REPO_NAME}/contents/${COMMENTS_FILE}`,{headers:{'Authorization':`token ${GITHUB_TOKEN}`,'Accept':'application/vnd.github.v3+json'}});let all=[];let sha=null;if(r.ok){const d=await r.json();all=JSON.parse(decodeURIComponent(escape(atob(d.content))));sha=d.sha;}all.push({type:'team_application',email,name,phone,photo,code:'',ratings:[],news:[],date:new Date().toLocaleDateString('fa-IR'),approved:false});const jsonStr=JSON.stringify(all,null,2);const ur=await fetch(`https://api.github.com/repos/${REPO_OWNER}/${REPO_NAME}/contents/${COMMENTS_FILE}`,{method:'PUT',headers:{'Authorization':`token ${GITHUB_TOKEN}`,'Accept':'application/vnd.github.v3+json','Content-Type':'application/json'},body:JSON.stringify({message:`team application from ${name}`,content:btoa(unescape(encodeURIComponent(jsonStr))),sha})});if(ur.ok){closeTeamApplyModal();cachedComments=all;document.getElementById('success-alert-overlay').classList.add('active');}else{alert(currentLang==='fa'?'خطا در ثبت درخواست.':'Error submitting application.');}}catch(e){alert(currentLang==='fa'?'خطا در ارتباط با سرور.':'Server connection error.');}if(btn){btn.textContent=currentLang==='fa'?'ثبت درخواست عضویت':'Submit Application';btn.disabled=false;btn.style.opacity='1';btn.style.cursor='pointer';}}
517function loadNews(){const container=document.getElementById('news-container');if(!container)return;container.innerHTML=`<div style="text-align:center;padding:15px;color:#888;">${t('news_loading')}</div>`;try{fetch(`https://api.github.com/repos/${REPO_OWNER}/${REPO_NAME}/contents/${COMMENTS_FILE}`,{headers:{'Authorization':`token ${GITHUB_TOKEN}`,'Accept':'application/vnd.github.v3+json'}}).then(r=>{if(!r.ok){container.innerHTML=`<div style="text-align:center;padding:15px;color:#FFAA66;">${currentLang==='fa'?'هنوز خبری ثبت نشده است.':'No news registered yet.'}</div>`;cachedComments=[];return;}return r.json();}).then(d=>{if(!d)return;cachedComments=JSON.parse(decodeURIComponent(escape(atob(d.content))));renderNews(cachedComments.filter(a=>a.type==='team_application'&&a.approved===true),container);}).catch(()=>{container.innerHTML=`<div style="text-align:center;padding:15px;color:#F55;">${currentLang==='fa'?'خطا':'Error'}</div>`;});}catch(e){}}
518function renderNews(reporters,container){container.innerHTML='';let allNews=[];
518reporters.forEach(rep=>{if(rep.news&&rep.news.length>0){rep.news.forEach((n,idx)=>{allNews.push({...n,reporterName:rep.name,reporterPhoto:rep.photo,reporterIndex:cachedComments.indexOf(rep),newsIndex:idx,ratings:rep.ratings||[]});});}});if(allNews.length===0){container.innerHTML=`<div style="text-align:center;padding:15px;color:#FFAA66;">${currentLang==='fa'?'هنوز خبری ثبت نشده است.':'No news registered yet.'}</div>`;return;}allNews.reverse().forEach(item=>{const card=document.createElement('div');card.className='news-card';if(adminMode){const delBtn=document.createElement('div');delBtn.className='admin-del-btn';delBtn.textContent='🗑';delBtn.addEventListener('click',function(e){e.stopPropagation();e.preventDefault();openDeleteConfirmModal(item);});card.appendChild(delBtn);const editBtn=document.createElement('div');editBtn.className='admin-edit-btn';editBtn.textContent='✏';editBtn.addEventListener('click',function(e){e.stopPropagation();e.preventDefault();openNewsSubmitModal(item);});card.appendChild(editBtn);}const validImages=item.images?item.images.filter(i=>i&&i.trim()!==''):[];if(validImages.length>0){const img=document.createElement('img');img.src=validImages[0];img.alt=escapeHTML(item.title||'');card.appendChild(img);}const titleEl=document.createElement('div');titleEl.className='news-title';titleEl.textContent=escapeHTML(item.title||'');card.appendChild(titleEl);card.addEventListener('click',function(e){if(adminMode)return;e.stopPropagation();e.preventDefault();openNewsDetail(item);},true);container.appendChild(card);});}
519function openNewsDetail(item){const winId='window-news-'+item.reporterIndex+'-'+item.newsIndex;const newsPath=`/news/${item.reporterIndex}/${item.newsIndex}`;history.pushState(null,'',newsPath);if(document.getElementById(winId)){openWindow(winId);return;}const newWin=document.createElement('div');newWin.className='window';newWin.id=winId;const avgRating=item.ratings.length>0?(item.ratings.reduce((a,b)=>a+b,0)/item.ratings.length).toFixed(1):'0.0';const starDisplay='★'.repeat(Math.round(avgRating))+'☆'.repeat(5-Math.round(avgRating));const validImages=item.images?item.images.filter(i=>i&&i.trim()!==''):[];let sliderHTML='';if(validImages.length>0){sliderHTML=`<div class="news-detail-slider">`;if(validImages.length>1)sliderHTML+=`<div class="slider-btn prev" onclick="slideNewsImage(this,-1)">◀</div>`;sliderHTML+=`<img src="${validImages[0]}" data-images='${JSON.stringify(validImages)}' data-current="0" id="news-detail-img-${winId}">`;if(validImages.length>1)sliderHTML+=`<div class="slider-btn next" onclick="slideNewsImage(this,1)">▶</div>`;sliderHTML+=`</div>`;}const ratedNews=JSON.parse(localStorage.getItem('rated_news')||'[]');const newsId=`${item.reporterIndex}-${item.newsIndex}`;const alreadyRated=ratedNews.includes(newsId);const textDir=currentLang==='fa'?'rtl':'ltr';const shortTitle=(item.title||'').split(' ').slice(0,3).join(' ')+((item.title||'').split(' ').length>3?'...':'');const displayTitle=currentLang==='en'&&item.title_en?item.title_en:item.title;const displayBody=currentLang==='en'&&item.body_en?item.body_en:item.body;newWin.innerHTML=`<div class="window-header"><div class="window-title-container"><div class="window-title" style="direction:${textDir};text-align:${textDir==='rtl'?'right':'left'};">${escapeHTML(shortTitle)}</div><div class="parallel-lines"></div></div><div class="window-controls"><div class="window-btn" onclick="toggleMinimize('${winId}')">_</div><div class="window-btn close" onclick="closeWindow('${winId}')">X</div></div></div><div class="window-content"><div class="article-content" style="direction:${textDir};text-align:justify;">${sliderHTML}<div class="article-title" style="direction:${textDir};text-align:${textDir==='rtl'?'right':'left'};">${escapeHTML(displayTitle||'')}</div><div class="article-paragraph ${textDir==='rtl'?'rtl-text':'ltr-text'}" style="direction:${textDir};text-align:justify;">${(displayBody||'').replace(/\n/g,'<br>')}</div>${item.source?`<div style="margin-top:15px;direction:${textDir};text-align:${textDir==='rtl'?'right':'left'};"><a href="${item.source}" target="_blank" style="color:#FFAA66;">${currentLang==='fa'?'منبع خبر':'Source'}</a></div>`:''}<div style="text-align:center;color:#888;margin-top:15px;">${item.date||''}</div><div class="news-reporter-section">${item.reporterPhoto?`<img src="${item.reporterPhoto}" class="news-reporter-photo" alt="${escapeHTML(item.reporterName||'')}">`:''}<div style="flex-grow:1;"><div style="color:#FFF;font-size:13px;">${escapeHTML(item.reporterName||'')}</div><div class="reporter-rating">${starDisplay} ${avgRating}</div></div>${alreadyRated?`<span style="color:#FFD700;font-size:18px;">${starDisplay}</span>`:`<button class="rate-btn" onclick="openRating('${winId}','${newsId}',${item.reporterIndex})">${currentLang==='fa'?'امتیاز دهید':'Rate'}</button>`}</div><div id="rating-stars-${winId}" class="stars-container" style="display:none;"></div></div></div><div class="resize-handle"></div>`;document.body.appendChild(newWin);setupWindowDrag(winId);setupWindowResize(winId);openWindow(winId);}
520function slideNewsImage(btn,dir){const slider=btn.closest('.news-detail-slider');const img=slider.querySelector('img');const images=JSON.parse(img.getAttribute('data-images'));let cur=parseInt(img.getAttribute('data-current'));cur=(cur+dir+images.length)%images.length;img.src=images[cur];img.setAttribute('data-current',cur);}
521function openRating(winId,newsId,reporterIndex){const container=document.getElementById('rating-stars-'+winId);if(!container)return;container.style.display='inline-flex';container.innerHTML='';pendingRatingWinId=winId;pendingRatingNewsId=newsId;pendingRatingReporterIndex=reporterIndex;pendingRatingValue=null;for(let i=1;i<=5;i++){const star=document.createElement('span');star.className='star';star.textContent='★';star.setAttribute('data-value',i);star.addEventListener('mouseenter',function(){const val=parseInt(this.getAttribute('data-value'));const allStars=container.querySelectorAll('.star');
521allStars.forEach(s=>{if(parseInt(s.getAttribute('data-value'))<=val){s.classList.add('active');}else{s.classList.remove('active');}});});star.addEventListener('mouseleave',function(){if(!pendingRatingValue){const allStars=container.querySelectorAll('.star');allStars.forEach(s=>s.classList.remove('active'));}});star.addEventListener('click',function(e){e.stopPropagation();pendingRatingValue=parseInt(this.getAttribute('data-value'));const allStars=container.querySelectorAll('.star');allStars.forEach(s=>{if(parseInt(s.getAttribute('data-value'))<=pendingRatingValue){s.classList.add('active');}else{s.classList.remove('active');}});let confirmBtn=container.parentElement.querySelector('.rating-confirm-btn');if(!confirmBtn){confirmBtn=document.createElement('span');confirmBtn.className='rating-confirm-btn';confirmBtn.textContent=currentLang==='fa'?'✓ تأیید':'✓ Confirm';confirmBtn.addEventListener('click',function(e){e.stopPropagation();submitRating(pendingRatingValue,pendingRatingWinId,pendingRatingNewsId,pendingRatingReporterIndex);});container.parentElement.appendChild(confirmBtn);}});container.appendChild(star);}}
522async function submitRating(rating,winId,newsId,reporterIndex){const ratedNews=JSON.parse(localStorage.getItem('rated_news')||'[]');if(ratedNews.includes(newsId))return;try{const r=await fetch(`https://api.github.com/repos/${REPO_OWNER}/${REPO_NAME}/contents/${COMMENTS_FILE}`,{headers:{'Authorization':`token ${GITHUB_TOKEN}`,'Accept':'application/vnd.github.v3+json'}});if(!r.ok)return;const d=await r.json();const all=JSON.parse(decodeURIComponent(escape(atob(d.content))));const sha=d.sha;const reporter=all[reporterIndex];if(!reporter||!reporter.ratings)return;reporter.ratings.push(rating);const jsonStr=JSON.stringify(all,null,2);await fetch(`https://api.github.com/repos/${REPO_OWNER}/${REPO_NAME}/contents/${COMMENTS_FILE}`,{method:'PUT',headers:{'Authorization':`token ${GITHUB_TOKEN}`,'Accept':'application/vnd.github.v3+json','Content-Type':'application/json'},body:JSON.stringify({message:`rating for news`,content:btoa(unescape(encodeURIComponent(jsonStr))),sha})});ratedNews.push(newsId);localStorage.setItem('rated_news',JSON.stringify(ratedNews));cachedComments=all;const container=document.getElementById('rating-stars-'+winId);if(container){container.innerHTML='★'.repeat(rating)+'☆'.repeat(5-rating);container.style.display='inline-flex';const confirmBtn=container.parentElement.querySelector('.rating-confirm-btn');if(confirmBtn)confirmBtn.remove();const btn=document.querySelector(`#${winId} .rate-btn`);if(btn)btn.style.display='none';}}catch(e){}}
523function openShopModal(){document.getElementById('shop-owner-name').value='';document.getElementById('shop-owner-phone').value='';document.getElementById('shop-name').value='';document.getElementById('shop-category').value='';document.getElementById('shop-description').value='';document.getElementById('shop-website').value='';document.getElementById('shop-logo').value='';document.getElementById('shop-modal-overlay').classList.add('active');}
524function closeShopModal(){document.getElementById('shop-modal-overlay').classList.remove('active');}
525async function submitShopRequest(){const name=document.getElementById('shop-owner-name')?.value.trim(),phone=document.getElementById('shop-owner-phone')?.value.trim(),shopName=document.getElementById('shop-name')?.value.trim(),category=document.getElementById('shop-category')?.value,description=document.getElementById('shop-description')?.value.trim(),website=document.getElementById('shop-website')?.value.trim(),logo=document.getElementById('shop-logo')?.value.trim();if(!name||!phone||!shopName||!category){alert('لطفاً فیلدهای اجباری را پر کنید.');return;}if(!/^09\d{9}$/.test(phone)){alert('شماره موبایل معتبر نیست.');return;}try{const r=await fetch(`https://api.github.com/repos/${REPO_OWNER}/${REPO_NAME}/contents/${SHOP_FILE}`,{headers:{'Authorization':`token ${GITHUB_TOKEN}`,'Accept':'application/vnd.github.v3+json'}});let shops=[];let sha=null;if(r.ok){const d=await r.json();shops=JSON.parse(decodeURIComponent(escape(atob(d.content))));sha=d.sha;}shops.push({ownerName:name,ownerPhone:phone,shopName,category,description:description||'',website:website||'',logo:logo||'',shopNumber:'',date:new Date().toLocaleDateString('fa-IR'),approved:false});const jsonStr=JSON.stringify(shops,null,2);const ur=await fetch(`https://api.github.com/repos/${REPO_OWNER}/${REPO_NAME}/contents/${SHOP_FILE}`,{method:'PUT',headers:{'Authorization':`token ${GITHUB_TOKEN}`,'Accept':'application/vnd.github.v3+json','Content-Type':'application/json'},body:JSON.stringify({message:`shop request from ${name}`,content:btoa(unescape(encodeURIComponent(jsonStr))),sha})});if(ur.ok){closeShopModal();cachedShops=shops;document.getElementById('success-alert-overlay').classList.add('active');const container=document.getElementById('bazaar-shops-container');if(container)renderShops(cachedShops.filter(s=>s.approved===true),container);}else alert('خطا در ثبت درخواست.');}catch(e){alert('خطا در ارتباط با سرور.');}}
526function closeSuccessAlert(){document.getElementById('success-alert-overlay').classList.remove('active');}
527function loadShops(){const container=document.getElementById('bazaar-shops-container');if(!container)return;try{fetch(`https://api.github.com/repos/${REPO_OWNER}/${REPO_NAME}/contents/${SHOP_FILE}`,{headers:{'Authorization':`token ${GITHUB_TOKEN}`,'Accept':'application/vnd.github.v3+json'}}).then(r=>{if(!r.ok){cachedShops=[];renderDefaultShop(container);return;}return r.json();}).then(d=>{if(!d)return;cachedShops=JSON.parse(decodeURIComponent(escape(atob(d.content))));const approved=cachedShops.filter(s=>s.approved===true);if(approved.length===0){renderDefaultShop(container);}else{renderShops(approved,container);}}
527).catch(()=>{renderDefaultShop(container);});}catch(e){renderDefaultShop(container);}}
528function renderDefaultShop(container){container.innerHTML=`<div class="bazaar-shop-card" onclick="openShopWindow({shopName:'RetroFuture Lab',website:'https://retrolab.ir',shopNumber:'101'})"><img src="https://raw.githubusercontent.com/silverspark-ir/Amigastore/main/Screenshot_%DB%B2%DB%B0%DB%B2%DB%B6-%DB%B0%DB%B6-%DB%B2%DB%B2-%DB%B2%DB%B3-%DB%B1%DB%B3-%DB%B3%DB%B8-%DB%B0%DB%B0%DB%B0_com.canva.editor_Edited.jpg" alt="RetroFuture Lab"><div class="shop-name">غرفه شماره ۱۰۱<br>لابراتوار رتروفیوچر</div></div>`;}
529function renderShops(shops,container){container.innerHTML='';shops.reverse().forEach(shop=>{const card=document.createElement('div');card.className='bazaar-shop-card';if(shop.logo){const img=document.createElement('img');img.src=shop.logo;img.alt=escapeHTML(shop.shopName);card.appendChild(img);}const nameEl=document.createElement('div');nameEl.className='shop-name';const shopNum=shop.shopNumber?'غرفه شماره '+shop.shopNumber:'';nameEl.textContent=shopNum+(shopNum?' - ':'')+escapeHTML(shop.shopName);card.appendChild(nameEl);card.onclick=function(){openShopWindow(shop);};container.appendChild(card);});}
530async function loadAds(){const container=document.getElementById('market-ads-container');if(!container)return;container.innerHTML=`<div style="text-align:center;padding:15px;color:#888;">${t('discussion_loading')}</div>`;try{const r=await fetch(`https://api.github.com/repos/${REPO_OWNER}/${REPO_NAME}/contents/${ADS_FILE}`,{headers:{'Authorization':`token ${GITHUB_TOKEN}`,'Accept':'application/vnd.github.v3+json'}});if(!r.ok){container.innerHTML='<div style="text-align:center;padding:15px;color:#FFAA66;">هنوز آگهی ثبت نشده است.</div>';cachedAds=[];return;}const d=await r.json();cachedAds=JSON.parse(decodeURIComponent(escape(atob(d.content))));renderAds(cachedAds.filter(a=>a.approved===true),container);}catch(e){container.innerHTML='<div style="text-align:center;padding:15px;color:#F55;">خطا</div>';}}
531function renderAds(ads,container){container.innerHTML='';if(ads.length===0){container.innerHTML='<div style="text-align:center;padding:15px;color:#FFAA66;">هنوز آگهی ثبت نشده است.</div>';return;}[...ads].reverse().forEach((ad,i)=>{const card=document.createElement('div');card.className='ad-card';const validImages=ad.images?(Array.isArray(ad.images)?ad.images.filter(img=>img&&img.trim()!==''&&!img.includes('pic link')):[]):[];const titleEl=document.createElement('div');titleEl.className='ad-title';titleEl.textContent=escapeHTML(ad.title||'');card.appendChild(titleEl);if(validImages.length>0){const sliderDiv=document.createElement('div');sliderDiv.className='ad-slider';if(validImages.length>1){const prevBtn=document.createElement('div');prevBtn.className='slider-btn prev';prevBtn.textContent='◀';prevBtn.onclick=function(e){e.stopPropagation();slideAdImage(this,-1);};sliderDiv.appendChild(prevBtn);}const img=document.createElement('img');img.src=validImages[0];img.setAttribute('data-images',JSON.stringify(validImages));img.setAttribute('data-current','0');sliderDiv.appendChild(img);if(validImages.length>1){const nextBtn=document.createElement('div');nextBtn.className='slider-btn next';nextBtn.textContent='▶';nextBtn.onclick=function(e){e.stopPropagation();slideAdImage(this,1);};sliderDiv.appendChild(nextBtn);}card.appendChild(sliderDiv);}const provinceEl=document.createElement('div');provinceEl.className='ad-province';provinceEl.textContent='🇮🇷 '+escapeHTML(ad.province||'');card.appendChild(provinceEl);if(ad.violation!==undefined&&ad.violation===false){const violationBar=document.createElement('div');violationBar.className='ad-violation-bar';violationBar.textContent=currentLang==='fa'?'⚠ ثبت تخلف: در حال بررسی':'⚠ Violation Reported: Under Review';card.appendChild(violationBar);}card.onclick=function(){openAdLightbox(ad);};container.appendChild(card);});}
532function slideAdImage(btn,dir){const slider=btn.closest('.ad-slider'),img=slider.querySelector('img'),images=JSON.parse(img.getAttribute('data-images'));let cur=parseInt(img.getAttribute('data-current'));cur=(cur+dir+images.length)%images.length;img.src=images[cur];img.setAttribute('data-current',cur);}
533function openAdLightbox(ad){const content=document.getElementById('ad-lightbox-content'),lb=document.getElementById('ad-lightbox');const validImages=ad.images?(Array.isArray(ad.images)?ad.images.filter(img=>img&&img.trim()!==''&&!img.includes('pic link')):[]):[];content.innerHTML='';if(validImages.length>
5330){const sliderDiv=document.createElement('div');sliderDiv.className='ad-lightbox-slider';if(validImages.length>1){const prevBtn=document.createElement('div');prevBtn.className='slider-btn prev';prevBtn.textContent='◀';prevBtn.onclick=function(){slideLightboxImage(-1);};sliderDiv.appendChild(prevBtn);}const img=document.createElement('img');img.src=validImages[0];img.id='lightbox-ad-img';img.setAttribute('data-images',JSON.stringify(validImages));img.setAttribute('data-current','0');sliderDiv.appendChild(img);if(validImages.length>1){const nextBtn=document.createElement('div');nextBtn.className='slider-btn next';nextBtn.textContent='▶';nextBtn.onclick=function(){slideLightboxImage(1);};sliderDiv.appendChild(nextBtn);}content.appendChild(sliderDiv);}const titleEl=document.createElement('div');titleEl.className='ad-lightbox-title';titleEl.textContent=escapeHTML(ad.title||'');content.appendChild(titleEl);const nameEl=document.createElement('div');nameEl.className='ad-lightbox-name';nameEl.textContent=escapeHTML(ad.name||'');content.appendChild(nameEl);const phoneEl=document.createElement('div');phoneEl.className='ad-lightbox-phone';phoneEl.textContent=escapeHTML(ad.phone||'');content.appendChild(phoneEl);const descEl=document.createElement('div');descEl.className='ad-lightbox-desc';descEl.textContent=escapeHTML(ad.description||'');content.appendChild(descEl);const reportBtn=document.createElement('div');reportBtn.className='ad-lightbox-report-btn';reportBtn.textContent=currentLang==='fa'?'⚠ گزارش تخلف':'⚠ Report Violation';reportBtn.onclick=function(){const subject=(currentLang==='fa'?'گزارش تخلف آگهی':'Report Ad Violation')+' – '+escapeHTML(ad.title||'');const body=(currentLang==='fa'?'عنوان آگهی: ':'Ad Title: ')+escapeHTML(ad.title||'')+'\n'+(currentLang==='fa'?'نام آگهی‌دهنده: ':'Advertiser Name: ')+escapeHTML(ad.name||'')+'\n'+(currentLang==='fa'?'استان: ':'Province: ')+escapeHTML(ad.province||'')+'\n\n'+(currentLang==='fa'?'لطفاً تخلف مشاهده‌شده را شرح دهید:':'Please describe the violation:');window.location.href=`mailto:[email protected]?subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(body)}`;};content.appendChild(reportBtn);lb.classList.add('active');}
534function slideLightboxImage(dir){const img=document.getElementById('lightbox-ad-img');if(!img)return;const images=JSON.parse(img.getAttribute('data-images'));let cur=parseInt(img.getAttribute('data-current'));cur=(cur+dir+images.length)%images.length;img.src=images[cur];img.setAttribute('data-current',cur);}
535function closeAdLightbox(){document.getElementById('ad-lightbox').classList.remove('active');}
536function openAdSubmitModal(){document.getElementById('ad-subject').value='';document.getElementById('ad-description').value='';document.getElementById('ad-name').value='';document.getElementById('ad-phone').value='';document.getElementById('ad-province').value='';document.getElementById('ad-image1').value='';document.getElementById('ad-image2').value='';document.getElementById('ad-image3').value='';document.getElementById('ad-submit-modal-overlay').classList.add('active');}
537function closeAdSubmitModal(){document.getElementById('ad-submit-modal-overlay').classList.remove('active');}
538function openUploadKon(){const winId='window-uploadkon';if(!document.getElementById(winId)){const newWin=document.createElement('div');newWin.className='window';newWin.id=winId;newWin.innerHTML=`<div class="window-header"><div class="window-title-container"><div class="window-title">UploadKon.ir</div><div class="parallel-lines"></div></div><div class="window-controls"><div class="window-btn" onclick="toggleMinimize('${winId}')">_</div><div class="window-btn close" onclick="closeWindow('${winId}')">X</div></div></div><div class="window-content no-padding"><iframe src="https://uploadkon.ir" title="UploadKon.ir"></iframe></div><div class="resize-handle"></div>`;document.body.appendChild(newWin);setupWindowDrag(winId);setupWindowResize(winId);}openWindow(winId);}
539async function submitNewAd(){const subject=document.getElementById('ad-subject')?.value.trim(),description=document.getElementById('ad-description')?.value.trim(),name=document.getElementById('ad-name')?.value.trim(),phone=document.getElementById('ad-phone')?.value.trim(),province=
539document.getElementById('ad-province')?.value.trim(),img1=document.getElementById('ad-image1')?.value.trim(),img2=document.getElementById('ad-image2')?.value.trim(),img3=document.getElementById('ad-image3')?.value.trim();if(!subject||!description||!name||!phone||!province||!img1||!img2||!img3){alert(currentLang==='fa'?'لطفاً تمام فیلدهای اجباری را پر کنید.':'Please fill in all required fields.');return;}if(!/^09\d{9}$/.test(phone)){alert(currentLang==='fa'?'شماره موبایل معتبر نیست.':'Invalid phone number.');return;}const uploadkonPrefix='https://uploadkon.ir/uploads/';const invalidImgMsg=currentLang==='fa'?'لینک تصویر باید با https://uploadkon.ir/uploads/ شروع شود.':'Image link must start with https://uploadkon.ir/uploads/';if(!img1.startsWith(uploadkonPrefix)){alert(invalidImgMsg);return;}if(!img2.startsWith(uploadkonPrefix)){alert(invalidImgMsg);return;}if(!img3.startsWith(uploadkonPrefix)){alert(invalidImgMsg);return;}try{const r=await fetch(`https://api.github.com/repos/${REPO_OWNER}/${REPO_NAME}/contents/${ADS_FILE}`,{headers:{'Authorization':`token ${GITHUB_TOKEN}`,'Accept':'application/vnd.github.v3+json'}});let ads=[];let sha=null;if(r.ok){const d=await r.json();ads=JSON.parse(decodeURIComponent(escape(atob(d.content))));sha=d.sha;}ads.push({title:subject,description,name,phone,province,images:[img1,img2,img3],approved:true,violation:true,date:new Date().toLocaleDateString('fa-IR')});const jsonStr=JSON.stringify(ads,null,2);const ur=await fetch(`https://api.github.com/repos/${REPO_OWNER}/${REPO_NAME}/contents/${ADS_FILE}`,{method:'PUT',headers:{'Authorization':`token ${GITHUB_TOKEN}`,'Accept':'application/vnd.github.v3+json','Content-Type':'application/json'},body:JSON.stringify({message:`ad from ${name}`,content:btoa(unescape(encodeURIComponent(jsonStr))),sha})});if(ur.ok){closeAdSubmitModal();cachedAds=ads;document.getElementById('success-alert-text').textContent=t('market_ad_success');document.getElementById('success-alert-overlay').classList.add('active');const container=document.getElementById('market-ads-container');if(container)renderAds(cachedAds.filter(a=>a.approved===true),container);}else alert(currentLang==='fa'?'خطا در ثبت آگهی.':'Error submitting ad.');}catch(e){alert(currentLang==='fa'?'خطا در ارتباط با سرور.':'Server connection error.');}}
540function openAdminPassProductsModal(){document.getElementById('admin-password-products-input').value='';document.getElementById('admin-pass-products-modal-overlay').classList.add('active');}
541function closeAdminPassProductsModal(){document.getElementById('admin-pass-products-modal-overlay').classList.remove('active');}
542function checkAdminPasswordProducts(){const input=document.getElementById('admin-password-products-input')?.value.trim();if(input===ADMIN_PASSWORD){closeAdminPassProductsModal();openProductAdminModal();}else{alert(currentLang==='fa'?'رمز عبور اشتباه است.':'Incorrect password.');}}
543function openProductAdminModal(){document.getElementById('product-name').value='';document.getElementById('product-description').value='';document.getElementById('product-image1').value='';document.getElementById('product-image2').value='';document.getElementById('product-image3').value='';document.getElementById('product-price').value='';document.getElementById('product-admin-modal-overlay').classList.add('active');}
544function closeProductAdminModal(){document.getElementById('product-admin-modal-overlay').classList.remove('active');}
545function preSubmitProduct(){const name=document.getElementById('product-name')?.value.trim();const description=document.getElementById('product-description')?.value.trim();const image1=document.getElementById('product-image1')?.value.trim();const image2=document.getElementById('product-image2')?.value.trim();const image3=document.getElementById('product-image3')?.value.trim();const price=document.getElementById('product-price')?.value.trim();if(!name||!description||!image1||!image2||!image3||!price){alert(currentLang==='fa'?'لØ
545·ÙØ§Ù‹ تمام فیلدها را پر کنید.':'Please fill in all fields.');return;}if(isNaN(price)||parseInt(price)<=0){alert(currentLang==='fa'?'قیمت باید یک عدد صحیح مثبت باشد.':'Price must be a positive integer.');return;}pendingProductData={name,description,images:[image1,image2,image3],price:parseInt(price)};closeProductAdminModal();const confirmText=document.querySelector('#product-confirm-modal .confirm-text');if(confirmText){confirmText.textContent=currentLang==='fa'?'آیا از ثبت این محصول اطمینان دارید؟':'Are you sure you want to submit this product?';}document.getElementById('product-confirm-modal-overlay').classList.add('active');}
546function closeProductConfirmModal(){document.getElementById('product-confirm-modal-overlay').classList.remove('active');pendingProductData=null;}
547async function finalSubmitProduct(){if(!pendingProductData)return;try{const r=await fetch(`https://api.github.com/repos/${REPO_OWNER}/${REPO_NAME}/contents/${PRODUCTS_FILE}`,{headers:{'Authorization':`token ${GITHUB_TOKEN}`,'Accept':'application/vnd.github.v3+json'}});let productsData=[];let sha=null;if(r.ok){const d=await r.json();productsData=JSON.parse(decodeURIComponent(escape(atob(d.content))));sha=d.sha;}else if(r.status===404){productsData=[];}productsData.push({...pendingProductData,approved:true});const jsonStr=JSON.stringify(productsData,null,2);const ur=await fetch(`https://api.github.com/repos/${REPO_OWNER}/${REPO_NAME}/contents/${PRODUCTS_FILE}`,{method:'PUT',headers:{'Authorization':`token ${GITHUB_TOKEN}`,'Accept':'application/vnd.github.v3+json','Content-Type':'application/json'},body:JSON.stringify({message:`new product: ${pendingProductData.name}`,content:btoa(unescape(encodeURIComponent(jsonStr))),sha})});if(ur.ok){closeProductConfirmModal();cachedProducts=productsData;document.getElementById('success-alert-text').textContent=currentLang==='fa'?'محصول با موفقیت ثبت شد.':'Product submitted successfully.';document.getElementById('success-alert-overlay').classList.add('active');const container=document.getElementById('products-dynamic-container');if(container)renderProductsDynamic(cachedProducts.filter(p=>p.approved===true),container);pendingProductData=null;}else{alert(currentLang==='fa'?'خطا در ثبت محصول.':'Error submitting product.');}}catch(e){alert(currentLang==='fa'?'خطا در ارتباط با سرور.':'Server connection error.');}}
548async function loadProducts(){const container=document.getElementById('products-dynamic-container');if(!container)return;container.innerHTML=`<div style="text-align:center;padding:15px;color:#888;">${currentLang==='fa'?'در حال بارگذاری محصولات...':'Loading products...'}</div>`;try{const r=await fetch(`https://api.github.com/repos/${REPO_OWNER}/${REPO_NAME}/contents/${PRODUCTS_FILE}`,{headers:{'Authorization':`token ${GITHUB_TOKEN}`,'Accept':'application/vnd.github.v3+json'}});if(!r.ok){container.innerHTML='<div style="text-align:center;padding:15px;color:#FFAA66;">'+(currentLang==='fa'?'هنوز محصولی ثبت نشده است.':'No products registered yet.')+'</div>';cachedProducts=[];return;}const d=await r.json();cachedProducts=JSON.parse(decodeURIComponent(escape(atob(d.content))));renderProductsDynamic(cachedProducts.filter(p=>p.approved===true),container);}catch(e){container.innerHTML='<div style="text-align:center;padding:15px;color:#F55;">'+(currentLang==='fa'?'خطا':'Error')+'</div>';}}
549function renderProductsDynamic(productsArr,container){container.innerHTML='';if(productsArr.length===0){container.innerHTML='<div style="text-align:center;padding:15px;color:#FFAA66;">'+(currentLang==='fa'?'هنوز محصولی ثبت نشده است.':'No products registered yet.')+'</div>';return;}[...productsArr].reverse().forEach(product=>{const card=document.createElement('div');card.className='product-card-dynamic';const validImages=product.images?product.images.filter(img=>img&&img.trim()!==''):[];if(validImages.length>0){const sliderDiv=document.createElement('div');sliderDiv.className='product-slider';if(validImages.length>1){const prevBtn=document.createElement('div');prevBtn.className='slider-btn prev';prevBtn.textContent='◀';prevBtn.onclick=function(e){e.stopPropagation();slideProductImage(this,-1);};sliderDiv.appendChild(prevBtn);}const img=document.createElement('img');img.src=validImages[0];img.setAttribute('data-images',JSON.stringify(validImages));img.setAttribute('data-current','0');sliderDiv.appendChild(img);if(validImages.length>1){const nextBtn=document.createElement('div');nextBtn.className='slider-btn next';nextBtn.textContent='▶';nextBtn.onclick=function(e){e.stopPropagation();slideProductImage(this,1);};sliderDiv.appendChild(nextBtn);}card.appendChild(sliderDiv);}const titleEl=document.createElement('div');titleEl.className='product-dynamic-title';titleEl.textContent=escapeHTML(product.name);card.appendChild(titleEl);const descEl=document.createElement('div');descEl.className='product-dynamic-desc';descEl.textContent=escapeHTML(product.description);card.appendChild(descEl);const priceEl=document.createElement('div');priceEl.className='product-dynamic-price';priceEl.textContent=(currentLang==='fa'?'قیمت: ':'Price: ')+(product.price||0).toLocaleStr
549ing()+' '+t('currency');card.appendChild(priceEl);const addCartBtn=document.createElement('div');addCartBtn.className='product-add-cart-btn';addCartBtn.textContent=t('btn_add');addCartBtn.onclick=function(e){e.stopPropagation();addToCart(product.name,product.price);};card.appendChild(addCartBtn);container.appendChild(card);});}
550function slideProductImage(btn,dir){const slider=btn.closest('.product-slider'),img=slider.querySelector('img'),images=JSON.parse(img.getAttribute('data-images'));let cur=parseInt(img.getAttribute('data-current'));cur=(cur+dir+images.length)%images.length;img.src=images[cur];img.setAttribute('data-current',cur);}
551document.getElementById('email-message')?.addEventListener('input',function(){const btn=document.getElementById('email-send-btn');if(btn){if(this.value.trim()){btn.classList.add('active');btn.disabled=false;btn.style.cursor='pointer';btn.style.backgroundColor='#5A5';}else{btn.classList.remove('active');btn.disabled=true;btn.style.cursor='not-allowed';btn.style.backgroundColor='#888';}}});
552function sendEmail(){const msg=document.getElementById('email-message')?.value;if(!msg)return;const subject='AmigaStore Contact';window.location.href=`mailto:[email protected]?subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(msg)}`;}
553function startTVNoise(){const canvas=document.getElementById('tv-noise-canvas');if(!canvas)return;const container=document.getElementById('retro-tv-screen');if(!container)return;canvas.width=container.offsetWidth||280;canvas.height=container.offsetHeight||190;const ctx=canvas.getContext('2d');function drawNoise(){if(!canvas||!canvas.parentElement)return;const imageData=ctx.createImageData(canvas.width,canvas.height);const data=imageData.data;for(let i=0;i<data.length;i+=4){const v=Math.random()<0.5?0:255;data[i]=v;data[i+1]=v;data[i+2]=v;data[i+3]=255;}ctx.putImageData(imageData,0,0);requestAnimationFrame(drawNoise);}drawNoise();}
554let bootTypeTimeout=null;let initialPathForBoot=null;
555function startBoot(){initialPathForBoot=getCurrentPath();const splash=document.getElementById('splash-screen');const boot=document.getElementById('boot-screen');const cli=document.getElementById('boot-cli');const main=document.getElementById('main-container');splash.style.opacity='0';setTimeout(()=>{splash.style.display='none';boot.classList.add('active');const lines=["Amiga ROM 1.3 (Kickstart 34.5)","Copyright © 1987 Commodore-Amiga, Inc.","All rights reserved.","","Loading Workbench 1.3...","c64spark presents...","Welcome to AmigaStore.ir","The Home of Commodore & Amiga","Retro Computing Never Dies","","Workbench loaded successfully.","Starting desktop..."];let currentLine=0;let currentText='';let fullText='';function typeChar(){if(currentLine<lines.length){if(currentText.length<lines[currentLine].length){currentText+=lines[currentLine][currentText.length];cli.textContent=fullText+currentText;const delay=50+Math.random()*35;bootTypeTimeout=setTimeout(typeChar,delay);}else{fullText+=lines[currentLine]+'\n';currentText='';currentLine++;cli.textContent=fullText;bootTypeTimeout=setTimeout(typeChar,700);}}else{bootTypeTimeout=setTimeout(()=>{boot.style.opacity='0';setTimeout(()=>{boot.style.display='none';boot.classList.remove('active');main.classList.add('active');document.body.style.overflow='hidden';startTVNoise();const path=initialPathForBoot||getCurrentPath();if(path&&path!=='/'){if(path.startsWith('/news/')){const item=findNewsByPath(path);if(item)openNewsDetail(item);}else if(path.startsWith('/bazaar/')){const shop=findShopByPath(path);if(shop)openShopWindow(shop);}else{const articleNum=findArticleByPath(path);if(articleNum){openArticle(articleNum);}else{const windowId=routeMap[path];if(windowId)openWindow(windowId);}}}},500);},4000);}}cli.textContent='';bootTypeTimeout=setTimeout(typeChar,400);},500);}
556function skipBoot(){initialPathForBoot=getCurrentPath();const boot=document.getElementById('boot-screen');const main=document.getElementById('main-container');if(bootTypeTimeout){clearTimeout(bootTypeTimeout);bootTypeTimeout=null;}boot.style.opacity='0';setTimeout(()=>{boot.style.display='none';boot.classList.remove('active');main.classList.add('active');document.body.style.overflow='hidden';startTVNoise();const path=initialPathForBoot||getCurrentPath();if(path&&path!=='/'){if(path.startsWith('/news/')){const item=findNewsByPath(path);if(item)openNewsDetail(item);}else if(path.startsWith('/bazaar/')){const shop=findShopByPath(path);if(shop)openShopWindow(shop);}else{const articleNum=findArticleByPath(path);if(articleNum){openArticle(articleNum);}else{const windowId=routeMap[path];if(windowId)openWindow(windowId);}}}},500);}
557document.addEventListener('mousedown',function(e){if(e.target.tagName==='INPUT'||e.target.tagName==='TEXTAREA'||e.target.tagName==='SELECT'||e.target.tagName==='BUTTON'||e.target.tagName==='IFRAME')return;if(e.target.classList.contains('window-btn')||e.target.classList.contains('cart-item-remove')||e.target.closest('.slider-btn')||e.target.closest('.modal-btn')||e.target.closest('.rate-btn')||e.target.closest('.star')||e.target.closest('.rating-confirm-btn')||e.target.closest('.admin-del-btn')||e.target.closest('.admin-edit-btn')||e.target.closest('.news-card')||e.target.closest('a'))return;const we=e.target.closest('.window');if(we&&!e.target.classList.contains('window-btn')&&!e.target.classList.contains('cart-item-remove')){if(we.id)openWindow(we.id);}});
558document.addEventListener('touchstart',function(e){if(e.target.tagName==='INPUT'||e.target.tagName==='TEXTAREA'||e.target.tagName==='SELECT'||e.target.tagName==='BUTTON'||e.target.tagName==='IFRAME')return;if(e.target.classList.contains('window-btn')||e.target.classList.contains('cart-item-remove')||e.target.closest('.slider-btn')||e.target.closest('.modal-btn')||e.target.closest('.rate-btn')||e.target.closest('.star')||e.target.closest('.rating-confirm-btn')||e.target.closest('.admin-del-btn')||e.target.closest('.admin-edit-btn')||e.target.closest('.news-card')||e.target.closest('a'))return;const we=e.target.closest('.window');if(we&&!e.target.classList.contains('window-btn')&&!e.target.classList.contains('cart-item-remove')){if(we.id)openWindow(we.id);}});
559document.addEventListener('DOMContentLoaded',function(){updateFooterTime();updateCartIcon();applyTranslations();loadSettings();setBookBadgeLang(currentLang);const bbSlides=document.querySelectorAll('#bookBadge .bb-slide');let bbCurrent=0;setInterval(()=>{bbSlides[bbCurrent].classList.remove('active');bbCurrent=(bbCurrent+1)%bbSlides.length;bbSlides[bbCurrent].classList.add('active');},3000);initialPath=getCurrentPath();if(initialPath.startsWith('/news/')){loadNews();const checkAndOpen=setInterval(function(){if(cachedComments){clearInterval(checkAn
559dOpen);const item=findNewsByPath(initialPath);if(item)openNewsDetail(item);}},300);setTimeout(function(){clearInterval(checkAndOpen);},5000);}else if(initialPath.startsWith('/bazaar/')){const checkShop=setInterval(function(){if(cachedShops){clearInterval(checkShop);const shop=findShopByPath(initialPath);if(shop)openShopWindow(shop);}},300);setTimeout(function(){clearInterval(checkShop);},5000);}const savedCart=localStorage.getItem('amigaCart');if(savedCart){try{cartItems=JSON.parse(savedCart);updateCartIcon();}catch(e){}}});
560</script>
560
561</body>
562</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.