PageSourceSearch

https://shahreketabonline.com/login

html shahreketabonline.com collected 2026-09-27 21:47:56 UTC 329,846 bytes, 10,635 lines download raw bytes

1<!DOCTYPE html>
2<html class="web-pages d-flex justify-content-center" lang="fa">
3
4<head>
5	<meta charset="utf-8">
6	<title itemprop="name">Login</title>
7	<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
8	<meta name="generator" content="Rodin365">
9
10	
11	<meta name="title" content="Login"><meta name="language" content="fa"><meta property="og:type" content="article"><meta property="og:title" content="Login"><meta name="twitter:title" content="Login"><meta name="twitter:card" content="summary">
12	
13
14
15	
16	<link rel="shortcut icon" href="/files/favicon.ico"
17		type="image/x-icon">
18	
19
20
21	<link rel="apple-touch-icon" href="/files/favicon.ico">
22	<link rel="stylesheet" href="/assets/frappe/bootstrap-icons/bootstrap-icons.css">
23	
24	<link rel="canonical" href="https://shahreketabonline.com/login">
25	
26	<link rel="stylesheet" href="/assets/frappe/css/swiper_css.css">
27	<link href="/assets/frappe/css/aos.css" rel="stylesheet">
28	<link href="/assets/frappe/css/glightbox.css" rel="stylesheet">
29
30	<!-- 
30<script src="https://cdnjs.cloudflare.com/ajax/libs/lazysizes/5.3.2/lazysizes.min.js" async=""></script>
30 -->
31	
31<script src="/assets/erpnext/js/swiper_js.js"></script>
31
32	
32<script src="/assets/erpnext/js/isotope.js"></script>
32
33	
33<script src="/assets/erpnext/js/glightbox.js"></script>
33
34	
34<script src="/assets/erpnext/js/imagesloaded.js"></script>
34<!-- Najva Script -->
35	
35<script>
36		var s = document.createElement("script");
37		s.src = "https://van.najva.com/static/js/main-script.js";
38		s.defer = !0;
39		s.id = "najva-mini-script";
40		s.setAttribute("data-najva-id", "f7c6a8e1-9b65-47b2-a675-2dfea34c89d7");
41		document.head.appendChild(s);
42	</script>
42<script type="text/javascript">
43  window.RAYCHAT_TOKEN = "357c2ef2-faa8-4591-a0e2-9cea8fb0c98d";
44    (function () {
45      d = document;
46      s = d.createElement("script");
47      s.src = "https://widget-react.raychat.io/install/widget.js";
48      s.async = 1;
49      d.getElementsByTagName("head")[0].appendChild(s);
50    })();
51  </script>
51
52  
53  
54  
55  
55<script>
56		var s = document.createElement("script");
57		s.src = "https://van.najva.com/static/js/main-script.js";
58		s.defer = !0;
59		s.id = "najva-mini-script";
60		s.setAttribute("data-najva-id", "f7c6a8e1-9b65-47b2-a675-2dfea34c89d7");
61		document.head.appendChild(s);
62</script>
62
63
64
65<script src="https://analytics.ahrefs.com/analytics.js" data-key="awIxZKbOTIed+WfJQEEjRw" async></script>
65
66
67<!-- Google Tag Manager -->
68<script>
vendor: 327 bytes, lines 68-72
68(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
69new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
70j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
71'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
72})(window,document,'script','dataLayer','
72GTM-T4CKZJZ3
vendor: 3 bytes, line 72
72');
72</script>
72
73<!-- End Google Tag Manager --><link type="text/css" rel="stylesheet" href="/files/website_theme/bookcity_f338aafb.css">
74<link type="text/css" rel="stylesheet" href="/assets/erpnext/css/persianDatepicker.bundle.css">
75<link type="text/css" rel="stylesheet" href="/assets/erpnext/css/farsiDatepicker.bundle.css">
76<link type="text/css" rel="stylesheet" href="/assets/erpnext/dist/css-rtl/erpnext-web.bundle.DT54IQDK.css">
77
78
79
80
81<link type="text/css" rel="stylesheet" href="/assets/frappe/dist/css-rtl/login.bundle.D5A4VP7W.css">
82
83<style>
84		.rodin-seo-hidden-heading {
85			display: flex !important;
86			height: 0 !important;
87			overflow: hidden !important;
88			margin: 0 !important;
89			padding: 0 !important;
90		}
91	</style>
92<style>
93	@media screen and (max-width:676px) {
94		.header-title{
95			font-size: 12px;
96		}
97		.page-header-actions-block .dropdown-toggle span{
98		font-size: 12px !important;
99	}
100	}
101</style>
102<script>
103		window.frappe = {};
104		frappe.ready_events = [];
105		frappe.ready = function (fn) {
106			frappe.ready_events.push(fn);
107		}
108		window.dev_server = 0;
109		window.socketio_port = 9000;
110		window.show_language_picker = false;
111	</script>
111
112</head>
113
114<body frappe-session-status="logged-out"
115	data-path="login"
116	
117	
118	class=" w-100">
119	
120	
121	<!-- Google Tag Manager (noscript) -->
vendor: 68 bytes, lines 121-122
121
122<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
122GTM-T4CKZJZ3
vendor: 83 bytes, lines 122-123
122"
123height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
124<!-- End Google Tag Manager (noscript) -->
125
126	
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146  
147
148  
149
150  
151
152  
153
154  
155
156  
157
158  
159
160  
161
162
163  
164
165  
166
167  
168
169  
170
171  
172
173  
174
175  
176
177  
178
179
180
181<style>
182  @import url("https://fonts.googleapis.com/css2?family=Vazirmatn:wght@400;500;600;700;800;900&display=swap");
183
184  .page-content-wrapper {
185    margin-top: 0 !important;
186    margin-bottom: 0 !important;
187    overflow-x: clip;
188  }
189
190  .sk-header,
191  .sk-drawer,
192  .sk-app-nav,
193  .sk-desktop-mask,
194  .rodin-overlay {
195    --sk-brand: #25468F;
196    --sk-brand-soft: #e8f8ff;
197    --sk-ink: #212121;
198    --sk-gold: #f5b301;
199    --sk-muted: #f5f6f8;
200    --sk-muted-fg: #6b7280;
201    --sk-border: #e6e8ee;
202    --sk-danger: #ef4444;
203    --sk-radius: 0.75rem;
204    font-family: "Vazirmatn", ui-sans-serif, system-ui, sans-serif;
205  }
206
207  .sk-header {
208    position: fixed;
209    top: 0;
210    left: 0;
211    right: 0;
212    z-index: 50;
213    background: var(--sk-brand);
214    color: #fff;
215    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
216    direction: rtl;
217  }
218
219  .sk-header *,
220  .sk-header *::before,
221  .sk-header *::after {
222    box-sizing: border-box;
223  }
224
225  /* No browser focus rings on header controls */
226  .sk-header a:focus,
227  .sk-header a:focus-visible,
228  .sk-header button:focus,
229  .sk-header button:focus-visible,
230  .sk-header input:focus,
231  .sk-header input:focus-visible,
232  .sk-header [tabindex]:focus,
233  .sk-header [tabindex]:focus-visible {
234    outline: none !important;
235    box-shadow: none !important;
236  }
237
238  .sk-drawer a:focus,
239  .sk-drawer a:focus-visible,
240  .sk-drawer button:focus,
241  .sk-drawer button:focus-visible,
242  .sk-drawer input:focus,
243  .sk-drawer input:focus-visible {
244    outline: none !important;
245    box-shadow: none !important;
246  }
247
248  .sk-app-nav a:focus,
249  .sk-app-nav a:focus-visible,
250  .sk-app-nav button:focus,
251  .sk-app-nav button:focus-visible {
252    outline: none !important;
253    box-shadow: none !important;
254  }
255
256  .sk-container {
257    width: 100%;
258    max-width: 1280px;
259    margin-inline: auto;
260    padding-inline: 1rem;
261  }
262
263  /* Image promo bar above main header content (swiper) */
264  .sk-img-topbar {
265    width: 100%;
266    direction: rtl;
267    background: #f3f4f6;
268    position: relative;
269    --rit-nav-size: 36px;
270  }
271  .sk-img-topbar__root {
272    width: 100%;
273    overflow: hidden;
274  }
275  .sk-img-topbar__root.sk-img-topbar--single .swiper-button-next,
276  .sk-img-topbar__root.sk-img-topbar--single .swiper-button-prev {
277    display: none !important;
278  }
279  .sk-img-topbar__root:not(.sk-img-topbar--nav) .swiper-button-next,
280  .sk-img-topbar__root:not(.sk-img-topbar--nav) .swiper-button-prev {
281    display: none !important;
282  }
283  .sk-img-topbar__link {
284    display: block;
285    position: relative;
286    width: 100%;
287  }
288  .sk-img-topbar__picture {
289    display: block;
290    width: 100%;
291  }
292  .sk-img-topbar__img {
293    width: 100%;
294    height: auto;
295    max-height: 180px;
296    object-fit: cover;
297    display: block;
298  }
299  .sk-img-topbar .swiper-button-next,
300  .sk-img-topbar .swiper-button-prev {
301    color: var(--sk-brand, #25468F);
302    width: var(--rit-nav-size);
303    height: var(--rit-nav-size);
304    margin-top: calc(-1 * var(--rit-nav-size) / 2);
305    background: rgba(255, 255, 255, 0.92);
306    border-radius: 50%;
307    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.12);
308  }
309  .sk-img-topbar .swiper-button-next:after,
310  .sk-img-topbar .swiper-button-prev:after {
311    font-size: 0.85rem;
312    font-weight: 700;
313  }
314  @media (max-width: 575px) {
315    .sk-img-topbar__img {
316      max-height: 120px;
317    }
318    .sk-img-topbar .swiper-button-next,
319    .sk-img-topbar .swiper-button-prev {
320      display: none !important;
321    }
322  }
323
324  /* ── Top strip (desktop) — only when nav_top_two_active ── */
325  .sk-topstrip {
326    display: none;
327    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
328    padding: 0.5rem 0;
329    font-size: 12px;
330    color: rgba(255, 255, 255, 0.8);
331  }
332
333  @media (min-width: 768px) {
334    .sk-topstrip { display: block; }
335  }
336
337  .sk-topstrip-inner {
338    display: flex;
339    align-items: center;
340    justify-content: space-between;
341    gap: 1rem;
342  }
343
344  .sk-topstrip-right,
345  .sk-topstrip-center,
346  .sk-topstrip-left {
347    flex: 1 1 0;
348    min-width: 0;
349    display: flex;
350    align-items: center;
351    gap: 1rem;
352    flex-wrap: wrap;
353  }
354
355  .sk-topstrip-right { justify-content: flex-start; }
356  .sk-topstrip-center { justify-content: center; text-align: center; }
357  .sk-topstrip-left { justify-content: flex-end; text-align: left; }
358
359  .sk-topstrip p,
360  .sk-topstrip a,
361  .sk-topstrip span {
362    margin: 0;
363    overflow: hidden;
364    text-overflow: ellipsis;
365    white-space: nowrap;
366    max-width: 100%;
367  }
368
369  .sk-topstrip a {
370    color: rgba(255, 255, 255, 0.8);
371    text-decoration: none;
372  }
373
374  .sk-topstrip a:hover {
375    color: #fff;
376    text-decoration: underline;
377  }
378
379  /* Mobile promo carousel (when nav_top_two active) */
380  .sk-promo-mobile {
381    display: none;
382    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
383    min-height: 36px;
384  }
385
386  @media (max-width: 767.98px) {
387    .sk-promo-mobile.sk-promo-mobile--on { display: block; }
388  }
389
390  .sk-promo-mobile .swiper {
391    height: 36px;
392    display: flex;
393    align-items: center;
394    justify-content: center;
395  }
396
397  .sk-promo-mobile .swiper-slide {
398    display: flex;
399    align-items: center;
400    justify-content: center;
401    height: 36px;
402    font-size: 12px;
403    color: rgba(255, 255, 255, 0.9);
404    text-align: center;
405    padding: 0 0.75rem;
406  }
407
408  .sk-promo-mobile .swiper-slide a {
409    color: inherit;
410    text-decoration: none;
411    max-width: 100%;
412    overflow: hidden;
413    text-overflow: ellipsis;
414    white-space: nowrap;
415  }
416
417  /* ── Main bar ── */
418  .sk-mainbar {
419    display: flex;
420    align-items: center;
421    gap: 0.75rem;
422    padding: 0.75rem 1rem;
423  }
424
425  .sk-menu-btn {
426    display: inline-flex;
427    align-items: center;
428    justify-content: center;
429    width: 40px;
430    height: 40px;
431    padding: 0;
432    border: 0;
433    background: transparent;
434    color: #fff;
435    font-size: 1.5rem;
436    line-height: 1;
437    cursor: pointer;
438  }
439
440  @media (min-width: 992px) {
441    .sk-menu-btn { display: none; }
442  }
443
444  .sk-brand {
445    display: inline-flex;
446    align-items: center;
447    flex-shrink: 0;
448    text-decoration: none;
449  }
450
451  .sk-brand:hover { text-decoration: none; }
452
453  .sk-brand img {
454    height: 36px;
455    width: auto;
456    display: block;
457    filter: brightness(0) invert(1);
458  }
459
460  .sk-search-desktop {
461    display: none;
462    flex: 1 1 auto;
463    max-width: 42rem;
464    margin-inline: 0.5rem;
465    position: relative;
466    direction: rtl;
467  }
468
469  @media (min-width: 768px) {
470    .sk-search-desktop { display: block; }
471  }
472
473  .sk-search-box {
474    display: flex;
475    align-items: center;
476    background: #fff;
477    border-radius: 0.5rem;
478    padding: 0 0.75rem;
479    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.06);
480  }
481
482  .sk-search-box i {
483    color: var(--sk-muted-fg);
484    font-size: 0.95rem;
485  }
486
487  .sk-search-box input {
488    flex: 1;
489    border: 0;
490    outline: none;
491    background: transparent;
492    color: var(--sk-ink);
493    font-size: 0.875rem;
494    padding: 0.625rem 0.5rem;
495    font-family: inherit;
496    min-width: 0;
497    text-align: right;
498  }
499
500  .sk-search-box input::placeholder {
501    color: var(--sk-muted-fg);
502  }
503
504  .sk-search-submit {
505    border: 0;
506    border-radius: 0.5rem;
507    background: var(--sk-brand);
508    color: #fff;
509    font-size: 12px;
510    font-weight: 700;
511    padding: 0.375rem 1rem;
512    cursor: pointer;
513    white-space: nowrap;
514    font-family: inherit;
515  }
516
517  .sk-search-dropdown {
518    display: none;
519    position: absolute;
520    top: calc(100% + 6px);
521    right: 0;
522    left: 0;
523    z-index: 60;
524    background: #fff;
525    color: var(--sk-ink);
526    border: 1px solid var(--sk-border);
527    border-radius: 0.75rem;
528    box-shadow: 0 12px 32px rgba(33, 33, 33, 0.12);
529    max-height: min(70vh, 480px);
530    overflow: auto;
531    padding: 0.75rem 1rem;
532    direction: rtl;
533    text-align: right;
534  }
535
536  .sk-search-dropdown.show { display: block; }
537
538  .sk-search-dropdown .rodin-title-sm,
539  .sk-search-dropdown .sk-search-status {
540    margin: 0 0 0.5rem;
541    font-size: 12px;
542    font-weight: 700;
543    color: #444;
544    text-align: right;
545  }
546
547  .sk-search-headline {
548    display: flex;
549    align-items: center;
550    justify-content: flex-start;
551    gap: 0.5rem;
552    direction: rtl;
553  }
554
555  .sk-search-loading-icon {
556    display: inline-flex;
557    align-items: center;
558    justify-content: center;
559    flex-shrink: 0;
560    width: 1rem;
561    height: 1rem;
562    color: var(--sk-brand);
563    animation: sk-search-spin 0.75s linear infinite;
564  }
565
566  .sk-search-loading-icon i {
567    font-size: 0.875rem;
568    line-height: 1;
569  }
570
571  @keyframes sk-search-spin {
572    to { transform: rotate(360deg); }
573  }
574
575  .sk-search-dropdown .rodin-search-result {
576    display: flex;
577    align-items: center;
578    gap: 0.75rem;
579    width: 100%;
580    padding: 0.5rem;
581    border: 0;
582    background: transparent;
583    text-align: right;
584    text-decoration: none;
585    color: var(--sk-ink);
586    border-radius: 0.5rem;
587    cursor: pointer;
588    font-family: inherit;
589  }
590
591  .sk-search-dropdown .rodin-search-result:hover {
592    background: var(--sk-muted);
593    text-decoration: none;
594    color: var(--sk-ink);
595  }
596
597  .sk-search-dropdown .rodin-result-thumb {
598    width: 44px;
599    height: 44px;
600    border-radius: 10px;
601    background: var(--sk-muted);
602    display: grid;
603    place-items: center;
604    overflow: hidden;
605    flex-shrink: 0;
606  }
607
608  .sk-search-dropdown .rodin-suggest-row {
609    display: flex;
610    flex-wrap: wrap;
611    gap: 0.5rem;
612    margin-bottom: 0.5rem;
613  }
614
615  .sk-search-dropdown .rodin-suggest-chip {
616    display: inline-flex;
617    align-items: center;
618    gap: 0.35rem;
619    padding: 0.35rem 0.65rem;
620    border-radius: 999px;
621    background: var(--sk-muted);
622    color: var(--sk-ink);
623    font-size: 12px;
624    font-weight: 600;
625    text-decoration: none;
626  }
627
628  .sk-search-dropdown .rodin-suggest-chip:hover {
629    background: var(--sk-brand-soft);
630    color: var(--sk-brand);
631    text-decoration: none;
632  }
633
634  .sk-actions {
635    margin-right: auto;
636    display: flex;
637    align-items: center;
638    gap: 0.25rem;
639  }
640
641  @media (min-width: 768px) {
642    .sk-actions { gap: 0.5rem; }
643  }
644
645  .sk-action {
646    display: inline-flex;
647    align-items: center;
648    justify-content: center;
649    gap: 0.25rem;
650    border: 0;
651    background: transparent;
652    color: #fff;
653    text-decoration: none;
654    border-radius: 0.5rem;
655    padding: 0.5rem;
656    cursor: pointer;
657    font-family: inherit;
658    font-size: 0.875rem;
659    font-weight: 500;
660    position: relative;
661    outline: none;
662    -webkit-tap-highlight-color: transparent;
663  }
664
665  .sk-action:hover {
666    background: rgba(255, 255, 255, 0.1);
667    color: #fff;
668    text-decoration: none;
669  }
670
671  .sk-action:focus,
672  .sk-action:focus-visible,
673  .sk-action:active {
674    outline: none !important;
675    box-shadow: none !important;
676  }
677
678  .sk-action--pill {
679    display: none;
680    border: 1px solid rgba(255, 255, 255, 0.3);
681    padding: 0.5rem 0.75rem;
682  }
683
684  .sk-action--login {
685    display: none;
686    background: rgba(255, 255, 255, 0.1);
687    padding: 0.5rem 0.75rem;
688  }
689
690  .sk-action--login:hover {
691    background: rgba(255, 255, 255, 0.2);
692  }
693
694  @media (min-width: 768px) {
695    .sk-action--pill,
696    .sk-action--login { display: inline-flex; }
697    .sk-action--icon-only-md { display: none; }
698  }
699
700  .sk-cart-badge {
701    position: absolute;
702    top: -2px;
703    right: -2px;
704    min-width: 16px;
705    height: 16px;
706    padding: 0 4px;
707    border-radius: 999px;
708    background: var(--sk-gold);
709    color: var(--sk-ink);
710    font-size: 10px;
711    font-weight: 800;
712    display: grid;
713    place-items: center;
714    line-height: 1;
715  }
716
717  .sk-cart-badge.rodin-nav-cart-badge--empty {
718    display: none;
719  }
720
721  .sk-account-menu {
722    display: none;
723    position: absolute;
724    top: calc(100% + 8px);
725    left: 0;
726    min-width: 180px;
727    background: #fff;
728    color: var(--sk-ink);
729    border: 1px solid var(--sk-border);
730    border-radius: 0.75rem;
731    box-shadow: 0 12px 28px rgba(0, 0, 0, 0.12);
732    overflow: hidden;
733    z-index: 70;
734    direction: rtl;
735    text-align: right;
736  }
737
738  .sk-account-menu.show { display: block; }
739
740  .sk-account-menu a {
741    display: block;
742    padding: 0.65rem 0.9rem;
743    font-size: 0.875rem;
744    color: var(--sk-ink);
745    text-decoration: none;
746    border-bottom: 1px solid var(--sk-border);
747    text-align: right;
748  }
749
750  .sk-account-menu a:last-child { border-bottom: 0; }
751
752  .sk-account-menu a:hover {
753    background: var(--sk-brand-soft);
754    color: var(--sk-brand);
755    text-decoration: none;
756  }
757
758  .sk-actions-wrap {
759    position: relative;
760  }
761
762  /* ── Mobile search trigger (icon in actions) ── */
763  .sk-action--search-mobile {
764    display: inline-flex;
765  }
766
767  @media (min-width: 768px) {
768    .sk-action--search-mobile { display: none; }
769  }
770
771  /* ── Mobile search overlay (suggest) ── */
772  .rodin-overlay {
773    position: fixed;
774    top: 0;
775    bottom: 0;
776    left: 0;
777    right: 0;
778    width: 100vw;
779    max-width: 100vw;
780    z-index: 10060;
781    background: #ffffff;
782    color: var(--sk-ink);
783    opacity: 0;
784    pointer-events: none;
785    transition: opacity .2s ease, transform .2s ease;
786    transform: translateY(-16px);
787    display: flex;
788    flex-direction: column;
789  }
790
791  .rodin-overlay.is-open {
792    opacity: 1;
793    pointer-events: auto;
794    transform: translateY(0);
795  }
796
797  .rodin-overlay-header {
798    min-height: 58px;
799    display: flex;
800    align-items: center;
801    padding: 0 16px;
802    border-bottom: 1px solid var(--sk-border);
803    background: #ffffff;
804    justify-content: space-between;
805    flex-direction: row-reverse;
806    gap: 12px;
807  }
808
809  .rodin-overlay .rodin-icon-btn {
810    border: 0;
811    background: #f3f3f3;
812    color: var(--sk-ink);
813    padding: 8px !important;
814    display: inline-flex;
815    align-items: center;
816    justify-content: center;
817    font-size: 20px;
818    cursor: pointer;
819    border-radius: 8px !important;
820    flex-shrink: 0;
821  }
822
823  .rodin-search-input-wrap {
824    flex: 1;
825    position: relative;
826  }
827
828  .rodin-search-input {
829    width: 100%;
830    height: 44px;
831    border: 1px solid #e8e8e8;
832    background: #f7f7f7;
833    border-radius: 14px;
834    color: #6b6b6b;
835    font-size: 14px;
836    outline: none;
837    padding: 0 42px 0 14px;
838    direction: rtl;
839    text-align: right;
840    font-family: inherit;
841  }
842
843  .rodin-search-input::placeholder {
844    color: #8c8c8c;
845  }
846
847  .rodin-search-input-icon {
848    position: absolute;
849    right: 14px;
850    top: 50%;
851    transform: translateY(-50%);
852    color: #6f6f6f;
853    font-size: 18px;
854    pointer-events: none;
855  }
856
857  .rodin-search-content {
858    flex: 1;
859    overflow-y: auto;
860    padding: 16px;
861    direction: rtl;
862    text-align: right;
863    -webkit-overflow-scrolling: touch;
864  }
865
866  .rodin-overlay .rodin-title-sm {
867    font-size: 13px;
868    color: #666;
869    margin-bottom: 12px !important;
870  }
871
872  .rodin-overlay .rodin-suggest-row {
873    display: flex;
874    flex-wrap: wrap;
875    gap: 10px;
876    margin-bottom: 10px;
877  }
878
879  .rodin-overlay .rodin-suggest-chip {
880    display: inline-flex;
881    align-items: center;
882    gap: 8px;
883    padding: 8px 12px;
884    border-radius: 12px;
885    border: 1px solid #eeeeee;
886    background: #f4f5f7;
887    color: #333;
888    text-decoration: none;
889    font-size: 13px;
890    line-height: 1;
891    max-width: 100%;
892  }
893
894  .rodin-overlay .rodin-suggest-chip i {
895    font-size: 14px;
896    color: #666;
897    line-height: 1;
898  }
899
900  .rodin-overlay .rodin-suggest-chip span {
901    overflow: hidden;
902    text-overflow: ellipsis;
903    white-space: nowrap;
904    max-width: 220px;
905  }
906
907  .rodin-overlay .rodin-suggest-chip:hover {
908    background: #eef3ff;
909    border-color: rgba(37, 70, 143, 0.2);
910    color: var(--sk-brand);
911    text-decoration: none;
912  }
913
914  .rodin-overlay .rodin-search-result {
915    display: flex;
916    align-items: center;
917    gap: 10px;
918    border: 1px solid var(--sk-border);
919    border-radius: 12px;
920    padding: 10px;
921    margin-bottom: 10px;
922    text-decoration: none;
923    color: var(--sk-ink);
924    width: 100%;
925    background: #fff;
926    text-align: right;
927    cursor: pointer;
928    font-family: inherit;
929  }
930
931  .rodin-overlay .rodin-search-result:hover {
932    background: #f8fafc;
933    text-decoration: none;
934    color: var(--sk-ink);
935  }
936
937  .rodin-overlay .rodin-result-thumb {
938    width: 52px;
939    height: 52px;
940    border-radius: 10px;
941    background: var(--sk-muted);
942    color: #5b5b5b;
943    display: flex;
944    align-items: center;
945    justify-con
945tent: center;
946    font-size: 20px;
947    flex-shrink: 0;
948    overflow: hidden;
949  }
950
951  @media (min-width: 768px) {
952    .rodin-overlay { display: none; }
953  }
954
955  /* ── Mega menubar (desktop) ── */
956  .sk-menubar {
957    display: none;
958    position: relative;
959    background: #fff;
960    color: var(--sk-ink);
961  }
962
963  @media (min-width: 992px) {
964    .sk-menubar { display: block; }
965  }
966
967  .sk-menubar-inner {
968    display: flex;
969    align-items: center;
970    gap: 0.25rem;
971    direction: rtl;
972  }
973
974  /* Layout.tsx category trigger + design screenshot: soft brand chip */
975  .sk-cat-btn {
976    display: inline-flex;
977    align-items: center;
978    gap: 0.375rem;
979    border: 0;
980    border-left: 1px solid var(--sk-border);
981    background: var(--sk-brand-soft);
982    color: var(--sk-brand);
983    font-size: 0.875rem;
984    font-weight: 700;
985    padding: 0.75rem 1rem;
986    cursor: pointer;
987    font-family: inherit;
988    white-space: nowrap;
989    outline: none;
990    -webkit-tap-highlight-color: transparent;
991  }
992
993  .sk-cat-btn:focus,
994  .sk-cat-btn:focus-visible,
995  .sk-cat-btn:active {
996    outline: none !important;
997    box-shadow: none !important;
998  }
999
1000  .sk-cat-btn i {
1001    font-size: 1rem;
1002    line-height: 1;
1003  }
1004
1005  .sk-cat-btn .sk-cat-chevron {
1006    font-size: 0.75rem;
1007    opacity: 0.85;
1008  }
1009
1010  .sk-cat-btn.is-active {
1011    color: var(--sk-brand);
1012  }
1013
1014  .sk-menulink {
1015    display: inline-flex;
1016    align-items: center;
1017    gap: 0.25rem;
1018    padding: 0.75rem 1rem;
1019    font-size: 0.875rem;
1020    font-weight: 500;
1021    color: var(--sk-ink);
1022    text-decoration: none;
1023    background: transparent;
1024    border: 0;
1025    cursor: pointer;
1026    font-family: inherit;
1027    white-space: nowrap;
1028    outline: none;
1029    -webkit-tap-highlight-color: transparent;
1030  }
1031
1032  .sk-menulink:focus,
1033  .sk-menulink:focus-visible,
1034  .sk-menulink:active {
1035    outline: none !important;
1036    box-shadow: none !important;
1037  }
1038
1039  .sk-menulink:hover,
1040  .sk-menulink.is-active {
1041    color: var(--sk-brand);
1042    text-decoration: none;
1043  }
1044
1045  .sk-menubar-extra {
1046    margin-right: auto;
1047    display: flex;
1048    align-items: center;
1049    gap: 1rem;
1050    font-size: 0.875rem;
1051    direction: rtl;
1052  }
1053
1054  .sk-menubar-extra a {
1055    color: var(--sk-ink);
1056    font-weight: 500;
1057    text-decoration: none;
1058  }
1059
1060  .sk-menubar-extra a:hover {
1061    color: var(--sk-brand);
1062    text-decoration: none;
1063  }
1064
1065  .sk-menubar-extra a.sk-extra-brand {
1066    color: var(--sk-brand);
1067    font-weight: 700;
1068  }
1069
1070  /* Mega panel */
1071  .sk-mega-panel {
1072    display: none;
1073    position: absolute;
1074    inset-inline: 0;
1075    top: 100%;
1076    z-index: 55;
1077    background: #fff;
1078    border-top: 1px solid var(--sk-border);
1079    box-shadow: 0 20px 40px rgba(0, 0, 0, 0.12);
1080    max-height: calc(100vh - 170px);
1081    overflow: hidden;
1082    direction: rtl;
1083    text-align: right;
1084    font-family: inherit;
1085    color: var(--sk-ink);
1086  }
1087
1088  .sk-mega-panel.show { display: block; }
1089
1090  .sk-mega-panel-inner {
1091    padding: 1.5rem 0;
1092    direction: rtl;
1093    text-align: right;
1094  }
1095
1096  /* Tree panel: edge-to-edge Digikala-style layout (toggled via JS .is-tree) */
1097  .sk-mega-panel-inner.is-tree {
1098    padding: 0;
1099    max-height: calc(100vh - 170px);
1100    overflow: hidden;
1101  }
1102
1103  .sk-mega-panel-inner.is-tree .rodin-detail-col {
1104    height: 100%;
1105    max-height: calc(100vh - 170px);
1106  }
1107
1108  .sk-mega-pane {
1109    display: none;
1110    direction: rtl;
1111    text-align: right;
1112  }
1113  .sk-mega-pane.active { display: block; }
1114  .sk-mega-panel-inner.is-tree .sk-mega-pane.active {
1115    height: 100%;
1116    max-height: calc(100vh - 170px);
1117  }
1118
1119  .sk-mega-grid {
1120    display: grid;
1121    gap: 1.5rem 1.75rem;
1122    grid-template-columns: repeat(3, minmax(0, 1fr));
1123    direction: rtl;
1124    text-align: right;
1125    justify-items: stretch;
1126    align-content: start;
1127  }
1128
1129  @media (min-width: 1200px) {
1130    .sk-mega-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
1131  }
1132
1133  @media (min-width: 1400px) {
1134    .sk-mega-grid { grid-template-columns: repeat(5, minmax(0, 1fr)); }
1135  }
1136
1137  .sk-mega-group {
1138    direction: rtl;
1139    text-align: right;
1140    min-width: 0;
1141  }
1142
1143  .sk-mega-group-title {
1144    margin: 0 0 0.75rem;
1145    padding-bottom: 0.5rem;
1146    border-bottom: 1px solid var(--sk-border);
1147    font-size: 0.875rem;
1148    font-weight: 900;
1149    color: var(--sk-brand);
1150    text-align: right;
1151    letter-spacing: 0;
1152  }
1153
1154  /* Design screenshot: dark title + brand pipe; muted gray children */
1155  .sk-tree-group-title {
1156    margin: 0 0 0.35rem;
1157    padding: 0 0.5rem 0 0;
1158    border: 0;
1159    border-right: 3px solid var(--sk-brand);
1160    font-size: 0.875rem;
1161    font-weight: 700;
1162    color: #212121;
1163    text-align: right;
1164    line-height: 1.4;
1165    letter-spacing: 0;
1166  }
1167
1168  a.sk-tree-group-title--link {
1169    display: block;
1170    text-decoration: none;
1171    color: #212121;
1172  }
1173
1174  a.sk-tree-group-title--link:hover {
1175    color: var(--sk-brand);
1176    text-decoration: none;
1177    opacity: 1;
1178  }
1179
1180  .sk-mega-list {
1181    list-style: none;
1182    margin: 0;
1183    padding: 0;
1184    text-align: right;
1185  }
1186
1187  .sk-mega-list li {
1188    text-align: right;
1189  }
1190
1191  .sk-mega-list a {
1192    display: block;
1193    padding: 0.375rem 0.5rem;
1194    border-radius: 0.375rem;
1195    font-size: 13px;
1196    font-weight: 400;
1197    color: var(--sk-ink);
1198    text-decoration: none;
1199    text-align: right;
1200    white-space: nowrap;
1201    overflow: hidden;
1202    text-overflow: ellipsis;
1203  }
1204
1205  .sk-mega-list a:hover {
1206    background: var(--sk-brand-soft);
1207    color: var(--sk-brand);
1208    text-decoration: none;
1209  }
1210
1211  .sk-tree-body .sk-mega-list {
1212    display: flex;
1213    flex-direction: column;
1214    gap: 0.15rem;
1215  }
1216
1217  .sk-tree-body .sk-mega-list a {
1218    padding: 0.2rem 0;
1219    border-radius: 0;
1220    color: #6b7280;
1221    font-weight: 400;
1222    font-size: 0.75rem;
1223    line-height: 1.7;
1224  }
1225
1226  .sk-tree-body .sk-mega-list a:hover {
1227    background: transparent;
1228    color: var(--sk-brand);
1229  }
1230
1231  .sk-mega-empty {
1232    padding: 1rem;
1233    font-size: 0.875rem;
1234    color: var(--sk-muted-fg);
1235    text-align: right;
1236  }
1237
1238  /* Tree mega — design screenshot (sidebar + multi-column body) */
1239  .sk-tree-layout {
1240    display: grid;
1241    grid-template-columns: 220px minmax(0, 1fr);
1242    gap: 0;
1243    min-height: 380px;
1244    max-height: calc(100vh - 170px);
1245    direction: rtl;
1246    text-align: right;
1247    background: #fff;
1248  }
1249
1250  .sk-tree-roots {
1251    display: flex;
1252    flex-direction: column;
1253    gap: 0;
1254    margin: 0;
1255    padding: 0.5rem 0;
1256    border-left: 1px solid var(--sk-border);
1257    background: var(--sk-muted);
1258    overflow-y: auto;
1259    overflow-x: hidden;
1260    max-height: calc(100vh - 170px);
1261    min-height: 0;
1262  }
1263
1264  .sk-tree-root-btn {
1265    display: flex;
1266    align-items: center;
1267    gap: 0.625rem;
1268    width: 100%;
1269    border: 0;
1270    border-right: 3px solid transparent;
1271    border-bottom: 0;
1272    border-radius: 0;
1273    background: transparent;
1274    padding: 0.75rem 1rem;
1275    font-size: 0.875rem;
1276    font-weight: 500;
1277    color: var(--sk-ink);
1278    text-align: right;
1279    cursor: pointer;
1280    font-family: inherit;
1281    direction: rtl;
1282    transition: background 0.12s ease, color 0.12s ease, border-color 0.12s ease;
1283    outline: none;
1284    -webkit-tap-highlight-color: transparent;
1285  }
1286
1287  .sk-tree-root-btn:focus,
1288  .sk-tree-root-btn:focus-visible,
1289  .sk-tree-root-btn:active {
1290    outline: none !important;
1291    box-shadow: none !important;
1292  }
1293
1294  .sk-tree-root-btn:hover {
1295    background: rgba(255, 255, 255, 0.7);
1296    color: var(--sk-brand);
1297  }
1298
1299  .sk-tree-root-btn.active {
1300    background: #fff;
1301    color: var(--sk-brand);
1302    font-weight: 700;
1303    border-right-color: var(--sk-brand);
1304  }
1305
1306  .sk-tree-root-thumb {
1307    width: 1.25rem;
1308    height: 1.25rem;
1309    border: 0;
1310    border-radius: 0;
1311    background: transparent;
1312    display: inline-flex;
1313    align-items: center;
1314    justify-content: center;
1315    flex-shrink: 0;
1316  }
1317
1318  .sk-tree-root-thumb img {
1319    width: 1.125rem;
1320    height: 1.125rem;
1321    object-fit: contain;
1322    filter: grayscale(1);
1323    opacity: 0.85;
1324  }
1325
1326  .sk-tree-root-btn.active .sk-tree-root-thumb img,
1327  .sk-tree-root-btn:hover .sk-tree-root-thumb img {
1328    filter: none;
1329    opacity: 1;
1330  }
1331
1332  .sk-tree-root-thumb i {
1333    font-size: 1rem;
1334    color: var(--sk-muted-fg);
1335    line-height: 1;
1336  }
1337
1338  .sk-tree-root-btn:hover .sk-tree-root-thumb i,
1339  .sk-tree-root-btn.active .sk-tree-root-thumb i {
1340    color: var(--sk-brand);
1341  }
1342
1343  .sk-tree-root-label {
1344    flex: 1;
1345    min-width: 0;
1346    overflow: hidden;
1347    text-overflow: ellipsis;
1348    white-space: nowrap;
1349  }
1350
1351  /* Design screenshot: no chevron on root rows */
1352  .sk-tree-chevron {
1353    display: none;
1354  }
1355
1356  .sk-tree-body {
1357    padding: 1rem 0 1.25rem;
1358    overflow-y: auto;
1359    overflow-x: hidden;
1360    max-height: calc(100vh - 170px);
1361    min-height: 0;
1362    background: #fff;
1363  }
1364
1365  .sk-tree-all {
1366    display: inline-flex;
1367    align-items: center;
1368    gap: 0.25rem;
1369    margin: 0 1.25rem 1rem;
1370    padding: 0;
1371    border: 0;
1372    background: transparent;
1373    color: var(--sk-brand);
1374    font-size: 0.8125rem;
1375    font-weight: 600;
1376    font-family: inherit;
1377    text-decoration: none;
1378    line-height: 1.4;
1379  }
1380
1381  .sk-tree-all:hover {
1382    color: var(--sk-brand);
1383    text-decoration: none;
1384    opacity: 0.85;
1385  }
1386
1387  .sk-tree-all .bi {
1388    font-size: 0.7rem;
1389    line-height: 1;
1390  }
1391
1392  /* Equal columns + light vertical rules (design screenshot) */
1393  .sk-tree-layout .sk-mega-grid {
1394    gap: 0;
1395    grid-template-columns: repeat(5, minmax(0, 1fr));
1396  }
1397
1398  .sk-tree-body .sk-mega-group {
1399    padding: 0.25rem 1.25rem 1rem;
1400    border-left: 1px solid #eeeeee;
1401    min-height: 100%;
1402  }
1403
1404  .sk-tree-body .sk-mega-group:nth-child(5n) {
1405    border-left: 0;
1406  }
1407
1408  @media (max-width: 1399.98px) {
1409    .sk-tree-layout .sk-mega-grid {
1410      grid-template-columns: repeat(4, minmax(0, 1fr));
1411    }
1412    .sk-tree-body .sk-mega-group:nth-child(5n) {
1413      border-left: 1px solid #eeeeee;
1414    }
1415    .sk-tree-body .sk-mega-group:nth-child(4n) {
1416      border-left: 0;
1417    }
1418  }
1419
1420  @media (max-width: 1199.98px) {
1421    .sk-tree-layout .sk-mega-grid {
1422      grid-template-columns: repeat(3, minmax(0, 1fr));
1423    }
1424    .sk-tree-body .sk-mega-group:nth-child(4n) {
1425      border-left: 1px solid #eeeeee;
1426    }
1427    .sk-tree-body .sk-mega-group:nth-child(3n) {
1428      border-left: 0;
1429    }
1430  }
1431
1432  .sk-tree-root-panel {
1433    display: none;
1434  }
1435
1436  .sk-tree-root-panel.active {
1437    display: block;
1438  }
1439
1440  .rodin-hidden-panel {
1441    display: none !important;
1442  }
1443
1444  @media (max-width: 991.98px) {
1445    .sk-tree-layout {
1446      grid-template-columns: 1fr;
1447      max-height: none;
1448      min-height: 0;
1449    }
1450    .sk-tree-roots {
1451      flex-direction: row;
1452      flex-wrap: nowrap;
1453      overflow-x: auto;
1454      border-left: 0;
1455      border-bottom: 1px solid var(--sk-border);
1456      max-height: none;
1457    }
1458    .sk-tree-root-btn {
1459      width: auto;
1460      flex-shrink: 0;
1461      border-bottom: 0;
1462      border-left: 1px solid #eef0f4;
1463    }
1464    .sk-tree-chevron { display: none; }
1465    .sk-tree-body {
1466      padding: 1rem;
1467      max-height: none;
1468    }
1469  }
1470
1471  .sk-desktop-mask {
1472    display: none;
1473    position: fixed;
1474    inset: 0;
1475    background: rgba(0, 0, 0, 0.25);
1476    z-index: 45;
1477  }
1478
1479  .sk-desktop-mask.show { display: block; }
1480
1481  /* ── Mobile drawer (Layout.tsx: aside w-80 max-w-[85vw]) ── */
1482  .sk-drawer {
1483    display: none;
1484    position: fixed;
1485    inset: 0;
1486    z-index: 10050;
1487  }
1488
1489  .sk-drawer.is-open { display: block; }
1490
1491  .sk-drawer-backdrop {
1492    position: absolute;
1493    inset: 0;
1494    border: 0;
1495    padding: 0;
1496    margin: 0;
1497    background: rgba(0, 0, 0, 0.4);
1498    cursor: pointer;
1499  }
1500
1501  .sk-drawer-panel {
1502    position: absolute;
1503    top: 0;
1504    bottom: 0;
1505    right: 0;
1506    width: 20rem;
1507    max-width: 85vw;
1508    display: flex;
1509    flex-direction: column;
1510    background: #fff;
1511    color: var(--sk-ink, #212121);
1512    font-family: inherit;
1513    box-shadow: -8px 0 32px rgba(0, 0, 0, 0.18);
1514    direction: rtl;
1515    text-align: right;
1516  }
1517
1518  .sk-drawer-head {
1519    display: flex !important;
1520    flex-direction: row;
1521    align-items: center;
1522    justify-content: space-between;
1523    gap: 0.75rem;
1524    flex-shrink: 0;
1525    padding: 1rem;
1526    background: #25468F !important;
1527    color: #fff !important;
1528    border-bottom: 1px solid rgba(255, 255, 255, 0.12);
1529    direction: rtl;
1530  }
1531
1532  .sk-drawer-head img {
1533    height: 1.75rem;
1534    width: auto;
1535    max-width: 70%;
1536    object-fit: contain;
1537    filter: brightness(0) invert(1);
1538  }
1539
1540  .sk-drawer-close {
1541    display: inline-flex;
1542    align-items: center;
1543    justify-content: center;
1544    width: 2rem;
1545    height: 2rem;
1546    border: 0;
1547    background: transparent;
1548    color: #fff !important;
1549    font-size: 1.35rem;
1550    line-height: 1;
1551    cursor: pointer;
1552    flex-shrink: 0;
1553  }
1554
1555  .sk-drawer-body {
1556    flex: 1 1 auto;
1557    min-height: 0;
1558    overflow-y: auto;
1559    -webkit-overflow-scrolling: touch;
1560    padding: 1rem;
1561    background: #fff;
1562    direction: rtl;
1563    text-align: right;
1564  }
1565
1566  .sk-drawer-login {
1567    display: flex !important;
1568    align-items: center;
1569    justify-content: center;
1570    gap: 0.5rem;
1571    width: 100%;
1572    margin: 0 0 1rem;
1573    padding: 0.75rem 1rem;
1574    border: 0;
1575    border-radius: 0.5rem;
1576    background: #25468F !important;
1577    color: #fff !important;
1578    font-size: 0.875rem;
1579    font-weight: 700;
1580    font-family: inherit;
1581    text-decoration: none;
1582    cursor: pointer;
1583  }
1584
1585  .sk-drawer-login:hover,
1586  .sk-drawer-login:focus {
1587    color: #fff !important;
1588    text-decoration: none;
1589    opacity: 0.95;
1590  }
1591
1592  .sk-drawer-label {
1593    margin: 0 0 0.5rem;
1594    font-size: 0.75rem;
1595    font-weight: 700;
1596    color: #6b7280;
1597  }
1598
1599  .sk-drawer-cats {
1600    list-style: none;
1601    margin: 0 0 1rem;
1602    padding: 0;
1603    display: flex;
1604    flex-direction: column;
1605    gap: 0.5rem;
1606  }
1607
1608  .sk-drawer-cat {
1609    border: 1px solid #e6e8ee;
1610    border-radius: 0.75rem;
1611    overflow: hidden;
1612    background: #fff;
1613  }
1614
1615  .sk-drawer-cat > button,
1616  .sk-drawer-cat-link {
1617    display: flex;
1618    width: 100%;
1619    align-items: center;
1620    justify-content: space-between;
1621    flex-direction: row;
1622    gap: 0.5rem;
1623    padding: 0.75rem;
1624    border: 0;
1625    background: #fff;
1626    color: #212121;
1627    font-size: 0.875rem;
1628    font-weight: 700;
1629    font-family: inherit;
1630    text-align: right;
1631    direction: rtl;
1632    cursor: pointer;
1633    text-decoration: none;
1634  }
1635
1636  .sk-drawer-cat-link:hover,
1637  .sk-drawer-cat-link:focus {
1638    color: #25468F;
1639    text-decoration: none;
1640  }
1641
1642  .sk-drawer-cat .sk-drawer-groups {
1643    display: none;
1644    border-top: 1px solid #e6e8ee;
1645    background: rgba(245, 246, 248, 0.55);
1646  }
1647
1648  .sk-drawer-cat.is-open .sk-drawer-groups { display: block; }
1649
1650  .sk-drawer-group { border-bottom: 1px solid rgba(230, 232, 238, 0.7); }
1651  .sk-drawer-group:last-child { border-bottom: 0; }
1652
1653  .sk-drawer-group > button {
1654    display: flex;
1655    width: 100%;
1656    align-items: center;
1657    justify-content: space-between;
1658    padding: 0.625rem 1.25rem;
1659    border: 0;
1660    background: transparent;
1661    color: #25468F;
1662    font-size: 13px;
1663    font-weight: 700;
1664    font-family: inherit;
1665    text-align: right;
1666    cursor: pointer;
1667  }
1668
1669  .sk-drawer-group .sk-drawer-links {
1670    display: none;
1671    list-style: none;
1672    margin: 0;
1673    padding: 0 0 0.5rem;
1674    background: #fff;
1675  }
1676
1677  .sk-drawer-group.is-open .sk-drawer-links { display: block; }
1678
1679  .sk-drawer-links a {
1680    display: block;
1681    padding: 0.5rem 2rem;
1682    font-size: 13px;
1683    color: #212121;
1684    text-decoration: none;
1685  }
1686
1687  .sk-drawer-links a:hover {
1688    color: #25468F;
1689    text-decoration: none;
1690  }
1691
1692  .sk-drawer-pages {
1693    list-style: none;
1694    margin: 0;
1695    padding: 0;
1696    border: 1px solid #e6e8ee;
1697    border-radius: 0.75rem;
1698    overflow: hidden;
1699    background: #fff;
1700    direction: rtl;
1701    text-align: right;
1702  }
1703
1704  .sk-drawer-pages li { border-bottom: 1px solid #e6e8ee; }
1705  .sk-drawer-pages li:last-child { border-bottom: 0; }
1706
1707  .sk-drawer-pages a {
1708    display: block;
1709    padding: 0.75rem;
1710    font-size: 0.875rem;
1711    color: #212121;
1712    text-decoration: none;
1713    text-align: right;
1714  }
1715
1716  .sk-drawer-pages a:hover {
1717    color: #25468F;
1718    text-decoration: none;
1719  }
1720
1721  .sk-chevron {
1722    transition: transform 0.2s ease;
1723    color: #6b7280;
1724    font-size: 0.85rem;
1725    flex-shrink: 0;
1726  }
1727
1728  .sk-drawer-cat.is-open > button .sk-chevron,
1729  .sk-drawer-group.is-open > button .sk-chevron {
1730    transform: rotate(-90deg);
1731  }
1732
1733  body.sk-drawer-open {
1734    overflow: hidden !important;
1735  }
1736
1737  /* ── Mobile bottom app nav ── */
1738  .sk-app-nav {
1739    display: none;
1740  }
1741  @media (max-width: 991.98px) {
1742    .sk-app-nav {
1743      --sk-brand: #25468F;
1744      --sk-border: #e6e8ee;
1745      position: fixed;
1746      left: 0;
1747      right: 0;
1748      bottom: 0;
1749      z-index: 1050;
1750      display: grid;
1751      grid-template-columns: repeat(5, 1fr);
1752      height: calc(58px + env(safe-area-inset-bottom, 0px));
1753      padding-bottom: env(safe-area-inset-bottom, 0px);
1754      background: #ffffff;
1755      border-top: 1px solid var(--sk-border);
1756      box-shadow: 0 -2px 14px rgba(0, 0, 0, 0.06);
1757      direction: rtl;
1758    }
1759    .sk-app-nav__item {
1760    display: flex;
1761    flex-direction: column;
1762    align-items: center;
1763      justify-content: center;
1764      gap: 0.15rem;
1765      border: 0;
1766    background: transparent;
1767      color: #7b7b7b;
1768      text-decoration: none;
1769      font-size: 10px;
1770      font-weight: 600;
1771      font-family: inherit;
1772      padding: 0.25rem;
1773      line-height: 1.2;
1774      cursor: pointer;
1775    }
1776    .sk-app-nav__item i {
1777      font-size: 1.15rem;
1778      line-height: 1;
1779    }
1780    .sk-app-nav__item.is-active,
1781    .sk-app-nav__item:hover,
1782    .sk-app-nav__item:focus {
1783      color: var(--sk-brand);
1784      text-decoration: none;
1785      outline: none;
1786    }
1787    .sk-app-nav__cart-wrap {
1788      position: relative;
1789      display: inline-flex;
1790      line-height: 1;
1791    }
1792    .sk-app-nav__badge {
1793      position: absolute;
1794      top: -0.35rem;
1795      inset-inline-start: 0.65rem;
1796      min-width: 1rem;
1797      height: 1rem;
1798      padding: 0 0.2rem;
1799      border-radius: 999px;
1800      background: #ef4444;
1801      color: #fff;
1802      font-size: 9px;
1803    font-weight: 800;
1804      line-height: 1rem;
1805      text-align: center;
1806    }
1807    .sk-app-nav__badge.rodin-nav-cart-badge--empty {
1808      display: none;
1809    }
1810    body:has(.sk-app-nav) {
1811      padding-bottom: calc(58px + env(safe-area-inset-bottom, 0px));
1812    }
1813    body:has(.sk-app-nav) .sk-footer {
1814      padding-bottom: calc(58px + env(safe-area-inset-bottom, 0px));
1815    }
1816  }
1817
1818  /* Hide legacy ERPNext login chrome */
1819  #rodin-login-hook,
1820  #rodin-login-hook .logged-in,
1821  #rodin-login-hook #website-post-login {
1822    display: none !important;
1823  }
1824</style>
1825
1826<div class="sk-desktop-mask" id="sk-desktop-mask" aria-hidden="true"></div>
1827
1828<header class="sk-header" dir="rtl" data-component="rodin_navbar_sk" id="skHeader">
1829  
1830  
1831
1832  
1833
1834  <div
1835    class="sk-topstrip"
1836    aria-label="نوار اطلاع‌رسانی بالا"
1837    
1838  >
1839    <div class="sk-container sk-topstrip-inner">
1840      <div class="sk-topstrip-right">
1841        
1842          
1843            <span>10 درصد تخفیف خرید اول با کد: FIRSTBC01</span>
1844          
1845        
1846      </div>
1847      <div class="sk-topstrip-center">
1848        
1849      </div>
1850      <div class="sk-topstrip-left">
1851        
1852          
1853            <span>سریع‌ترین ارسال به همهٔ نقاط ایران</span>
1854          
1855        
1856      </div>
1857    </div>
1858  </div>
1859  <div
1860    class="sk-promo-mobile sk-promo-mobile--on"
1861    aria-label="نوار اطلاع‌رسانی موبایل"
1862    
1863  >
1864    <div class="swiper sk-promo-swiper swiper-rtl">
1865      <div class="swiper-wrapper">
1866        
1867        <div class="swiper-slide">
1868          
1869            <span>10 درصد تخفیف خرید اول با کد: FIRSTBC01</span>
1870          
1871        </div>
1872        
1873        
1874        
1875        <div class="swiper-slide">
1876          
1877            <span>سریع‌ترین ارسال به همهٔ نقاط ایران</span>
1878          
1879        </div>
1880        
1881      </div>
1882    </div>
1883  </div>
1884
1885
1886  
1887  <div class="sk-container sk-mainbar">
1888    <a class="sk-brand" href="/" aria-label="لوگو">
1889      <img src="/files/download.svg" alt="لوگو" />
1890    </a>
1891
1892    <div class="sk-search-desktop" dir="rtl">
1893      <div class="sk-search-box">
1894        <i class="bi bi-search d-flex" aria-hidden="true"></i>
1895        <input id="rodin-desktop-search-input" type="text" placeholder="جست‌وجوی کتاب، نویسنده، ناشر، برند..." autocomplete="off" />
1896        <button type="button" class="sk-search-submit" id="sk-search-submit">جست‌وجو</button>
1897      </div>
1898      <div class="sk-search-dropdown" id="rodin-desktop-search-dropdown" aria-label="نتایج جستجو" dir="rtl">
1899            <p class="rodin-title-sm sk-search-headline" id="rodin-desktop-search-headline">جستجوهای اخیر</p>
1900            <div id="rodin-desktop-search-results"></div>
1901        </div>
1902      </div>
1903
1904    <div class="sk-actions sk-actions-wrap">
1905      <button type="button" class="sk-action sk-action--search-mobile" id="rodin-open-search" aria-label="جستجو">
1906        <i class="bi bi-search" style="font-size:1.25rem;" aria-hidden="true"></i>
1907      </button>
1908
1909      
1910      <button type="button" class="sk-action sk-action--login" data-desktop-action="login" aria-label="ورود یا ثبت‌نام">
1911        <i class="bi bi-person" aria-hidden="true"></i>
1912        <span>ورود | ثبت‌نام</span>
1913        </button>
1914      <button type="button" class="sk-action sk-action--icon-only-md" data-desktop-action="login" aria-label="ورود">
1915        <i class="bi bi-person" style="font-size:1.25rem;" aria-hidden="true"></i>
1916      </button>
1917      
1918
1919      <a class="sk-action" href="/my-account-page?section=wishlist" aria-label="علاقه‌مندی">
1920        <i class="bi bi-heart" style="font-size:1.25rem;" aria-hidden="true"></i>
1921      </a>
1922
1923      <a class="sk-action rodin-nav-cart-link" href="/cart" data-rodin-cart-animate aria-label="سبد خرید">
1924        <i class="bi bi-cart3" style="font-size:1.25rem;" aria-hidden="true"></i>
1925        <span class="sk-cart-badge rodin-nav-cart-badge--empty" data-rodin-cart-badge aria-hidden="true" aria-live="polite"></span>
1926      </a>
1927
1928      <div id="rodin-desktop-account-menu" class="sk-account-menu" dir="rtl" aria-label="منوی حساب کاربری"></div>
1929      </div>
1930    </div>
1931
1932  
1933  <nav class="sk-menubar" id="sk-menubar" aria-label="منوی بالا" data-rodin-activate="hover">
1934    <div class="sk-container sk-menubar-inner">
1935      <div id="rodin-desktop-topitems" class="d-flex align-items-center flex-wrap">
1936        
1937            <button
1938              type="button"
1939            class="sk-menulink rodin-topitem-btn"
1940              data-top-index="0"
1941              data-target-url="category/کتاب"
1942              data-menu-kind="mega">
1943            
1944              <span>کتاب </span>
1945            
1946              <i class="bi bi-chevron-down" style="font-size:0.75rem;" aria-hidden="true"></i>
1947            
1948            </button>
1949          
1950            <button
1951              type="button"
1952            class="sk-menulink rodin-topitem-btn"
1953              data-top-index="1"
1954              data-target-url="/کودک-و-نوجوان"
1955              data-menu-kind="mega">
1956            
1957              <span>کودک و نوجوان</span>
1958            
1959              <i class="bi bi-chevron-down" style="font-size:0.75rem;" aria-hidden="true"></i>
1960            
1961            </button>
1962          
1963            <button
1964              type="button"
1965            class="sk-menulink rodin-topitem-btn"
1966              data-top-index="2"
1967              data-target-url="/نوشت-افزار"
1968              data-menu-kind="mega">
1969            
1970              <span>نوشت افزار</span>
1971            
1972              <i class="bi bi-chevron-down" style="font-size:0.75rem;" aria-hidden="true"></i>
1973            
1974            </button>
1975          
1976            <button
1977              type="button"
1978            class="sk-menulink rodin-topitem-btn"
1979              data-top-index="3"
1980              data-target-url="/محصولات-فرهنگی"
1981              data-menu-kind="mega">
1982            
1983              <span>سرگرمی و خلاقیت</span>
1984            
1985              <i class="bi bi-chevron-down" style="font-size:0.75rem;" aria-hidden="true"></i>
1986            
1987            </button>
1988          
1989            <button
1990              type="button"
1991            class="sk-menulink rodin-topitem-btn"
1992              data-top-index="4"
1993              data-target-url="/گیفت-و-هنری"
1994              data-menu-kind="mega">
1995            
1996              <span>صنایع دستی</span>
1997            
1998              <i class="bi bi-chevron-down" style="font-size:0.75rem;" aria-hidden="true"></i>
1999            
2000            </button>
2001          
2002            <button
2003              type="button"
2004            class="sk-menulink rodin-topitem-btn"
2005              data-top-index="5"
2006              data-target-url="/فروش-سازمانی-شهرکتاب-انلاین"
2007              data-menu-kind="link">
2008            
2009              <span>کارت هدیه</span>
2010            
2011            </button>
2012          
2013            <button
2014              type="button"
2015            class="sk-menulink rodin-topitem-btn"
2016              data-top-index="6"
2017              data-target-url="/mag"
2018              data-menu-kind="link">
2019            
2020              <span>مجله‌ی شهرکتاب آنلاین</span>
2021            
2022            </button>
2023          
2024            <button
2025              type="button"
2026            class="sk-menulink rodin-topitem-btn"
2027              data-top-index="7"
2028              data-target-url="/contact"
2029              data-menu-kind="link">
2030            
2031              <span>تماس با ما</span>
2032            
2033            </button>
2034          
2035        </div>
2036
2037      <div class="sk-menubar-extra">
2038        <a href="/mag">مجله</a>
2039        <a href="/about">درباره ما</a>
2040        <a href="/how%20to%20order">راهنما خرید</a>
2041
2042        <a class="sk-extra-brand" href="/corporate-gift">کارت هدیه سازمانی</a>
2043      </div>
2044    </div>
2045
2046    <div class="sk-mega-panel" id="rodin-desktop-category-panel" aria-label="پنل منو">
2047      <div class="sk-container sk-mega-panel-inner" data-rodin-menu-scope="desktop">
2048              <div class="rodin-detail-col">
2049          
2050            
2051            
2052            
2053            <div
2054              class="sk-mega-pane rodin-detail-panel active "
2055              data-top-panel="0"
2056              data-top-title="کتاب ">
2057
2058                    
2059                <div class="sk-mega-grid">
2060                          
2061                          
2062                            
2063                              
2064                      <div class="sk-mega-group">
2065                        <div class="sk-mega-group-title">ادبیات</div>
2066                        <ul class="sk-mega-list">
2067                                    
2068                                      
2069                              <li><a href="/category/داستان-ایران">داستان ایران</a></li>
2070                                      
2071                                    
2072                                      
2073                              <li><a href="/category/داستان-جهان">داستان جهان</a></li>
2074                                      
2075                                    
2076                                      
2077                              <li><a href="/tag/جستار?existence_filters=%7B&#34;has_selling_stock&#34;%3A%5B1%5D%7D">جستار</a></li>
2078                                      
2079                                    
2080                                      
2081                              <li><a href="/category/نقد-ادبی">نقد ادبی و زبان‌شناسی</a></li>
2082                                      
2083                                    
2084                                      
2085                              <li><a href="/category/شعر-کلاسیک-ایران">شعر ایران</a></li>
2086                                      
2087                                    
2088                                      
2089                              <li><a href="/category/شعر-جهان">شعر جهان</a></li>
2090                                      
2091                                    
2092                                      
2093                              <li><a href="/category/متون-کهن">متون کهن</a></li>
2094                                      
2095                                    
2096                                      
2097                                    
2098                                      
2099                                    
2100                                      
2101                                    
2102                                      
2103                                    
2104                                      
2105                                    
2106                                      
2107                                    
2108                                      
2109                                    
2110                                      
2111                                    
2112                                      
2113                                    
2114                                      
2115                                    
2116                                      
2117                                    
2118                                      
2119                                    
2120                                      
2121                                    
2122                                      
2123                                    
2124                                      
2125                                    
2126                                      
2127                                    
2128                                      
2129                                    
2130                                      
2131                                    
2132                                      
2133                                    
2134                                      
2135                                    
2136                                      
2137                                    
2138                                      
2139                                    
2140                                      
2141                                    
2142                        </ul>
2143                              </div>
2144                            
2145                          
2146                            
2147                          
2148                            
2149                          
2150                            
2151                          
2152                            
2153                          
2154                            
2155                          
2156                            
2157                          
2158                            
2159                              
2160                      <div class="sk-mega-group">
2161                        <div class="sk-mega-group-title">تاریخ و اسطوره</div>
2162                        <ul class="sk-mega-list">
2163                                    
2164                                      
2165                                    
2166                                      
2167                                    
2168                                      
2169                                    
2170                                      
2171                                    
2172                                      
2173                                    
2174                                      
2175                                    
2176                                      
2177                                    
2178                                      
2179                              <li><a href="/category/تاریخ-کهن">تاریخ ایران</a></li>
2180                                      
2181                                    
2182                                      
2183                              <li><a href="/category/تاریخ-جهان">تاریخ جهان</a></li>
2184                                      
2185                                    
2186                                      
2187                              <li><a href="/category/اسطوره">اسطوره</a></li>
2188                                      
2189                                    
2190                                      
2191                              <li><a href="/category/خاطرات-و-سفرنامه-و-سرگذشتنامه">زندگی‌نامه، خاطرات، و سفرنامه</a></li>
2192                                      
2193                                    
2194                                      
2195                                    
2196                                      
2197                                    
2198                                      
2199                                    
2200                                      
2201                                    
2202                                      
2203                                    
2204                                      
2205                                    
2206                                      
2207                                    
2208                                      
2209                                    
2210                                      
2211                                    
2212                                      
2213                                    
2214                                      
2215                                    
2216                                      
2217                                    
2218                                      
2219                                    
2220                                      
2221                                    
2222                                      
2223                                    
2224                                      
2225                                    
2226                                      
2227                                    
2228                                      
2229                                    
2230                                      
2231                                    
2232                        </ul>
2233                              </div>
2234                            
2235                          
2236                            
2237                          
2238                            
2239                          
2240                            
2241                          
2242                            
2243                              
2244                      <div class="sk-mega-group">
2245                        <div class="sk-mega-group-title">کتب مرجع و سایر علوم</div>
2246                        <ul class="sk-mega-list">
2247                                    
2248                                      
2249                                    
2250                                      
2251                                    
2252                                      
2253                                    
2254                                      
2255                                    
2256                                      
2257                                    
2258                                      
2259                                    
2260                                      
2261                                    
2262                                      
2263                                    
2264                                      
2265                                    
2266                                      
2267                                    
2268                                      
2269                                    
2270                                      
2271                              <li><a href="/category/علم">علم</a></li>
2272                                      
2273                                    
2274                                      
2275                              <li><a href="/category/مرجع">مرجع</a></li>
2276                                      
2277                                    
2278                                      
2279                              <li><a href="/category/حقوق">حقوق</a></li>
2280                                      
2281                                    
2282                                      
2283                              <li><a href="/category/گردشگری-و-نقشه">گردشگری و نقشه</a></li>
2284                                      
2285                                    
2286                                      
2287                              <li><a href="/category/آشپزی">آشپزی</a></li>
2288                                      
2289                                    
2290                                      
2291                                    
2292                                      
2293                                    
2294                                      
2295                                    
2296                                      
2297                                    
2298                                      
2299                                    
2300                                      
2301                                    
2302                                      
2303                                    
2304                                      
2305                                    
2306                                      
2307                                    
2308                                      
2309                                    
2310                                      
2311                                    
2312                                      
2313                                    
2314                                      
2315                                    
2316                                      
2317                                    
2318                        </ul>
2319                              </div>
2320                            
2321                          
2322                            
2323                          
2324                            
2325                          
2326                            
2327                          
2328                            
2329                          
2330                            
2331                              
2332                      <div class="sk-mega-group">
2333                        <div class="sk-mega-group-title">علوم انسانی</div>
2334                        <ul class="sk-mega-list">
2335                                    
2336                                      
2337                                    
2338                                      
2339                                    
2340                                      
2341                                    
2342                                      
2343                                    
2344                                      
2345                                    
2346                                      
2347                                    
2348                                      
2349                                    
2350                                      
2351                                    
2352                                      
2353                                    
2354                                      
2355                                    
2356                                      
2357                                    
2358                                      
2359                                    
2360                                      
2361                                    
2362                                      
2363                                    
2364                                      
2365                                    
2366                                      
2367                                    
2368                                      
2369                              <li><a href="/category/اقتصاد">اقتصاد</a></li>
2370                                      
2371                                    
2372                                      
2373                              <li><a href="/category/ایران-شناسی">ایران شناسی</a></li>
2374                            
2374          
2375                                    
2376                                      
2377                              <li><a href="/category/مدیریت">مدیریت</a></li>
2378                                      
2379                                    
2380                                      
2381                              <li><a href="/category/فلسفه">فلسفه و عرفان</a></li>
2382                                      
2383                                    
2384                                      
2385                              <li><a href="/category/فرهنگ-مردم-و-طنز">فرهنگ مردم و طنز</a></li>
2386                                      
2387                                    
2388                                      
2389                              <li><a href="/category/دین-و-مذهب">دین و مذهب</a></li>
2390                                      
2391                                    
2392                                      
2393                              <li><a href="/category/علوم-اجتماعی-و-سیاسی">علوم اجتماعی و سیاسی</a></li>
2394                                      
2395                                    
2396                                      
2397                              <li><a href="/category/زنان-و-فمنیسم">زنان و فمنیسم</a></li>
2398                                      
2399                                    
2400                                      
2401                              <li><a href="/category/روان%E2%80%8Cشناسی">روانشناسی</a></li>
2402                                      
2403                                    
2404                                      
2405                                    
2406                                      
2407                                    
2408                                      
2409                                    
2410                                      
2411                                    
2412                                      
2413                                    
2414                        </ul>
2415                              </div>
2416                            
2417                          
2418                            
2419                          
2420                            
2421                          
2422                            
2423                          
2424                            
2425                          
2426                            
2427                          
2428                            
2429                          
2430                            
2431                          
2432                            
2433                          
2434                            
2435                              
2436                      <div class="sk-mega-group">
2437                        <div class="sk-mega-group-title">هنر</div>
2438                        <ul class="sk-mega-list">
2439                                    
2440                                      
2441                                    
2442                                      
2443                                    
2444                                      
2445                                    
2446                                      
2447                                    
2448                                      
2449                                    
2450                                      
2451                                    
2452                                      
2453                                    
2454                                      
2455                                    
2456                                      
2457                                    
2458                                      
2459                                    
2460                                      
2461                                    
2462                                      
2463                                    
2464                                      
2465                                    
2466                                      
2467                                    
2468                                      
2469                                    
2470                                      
2471                                    
2472                                      
2473                                    
2474                                      
2475                                    
2476                                      
2477                                    
2478                                      
2479                                    
2480                                      
2481                                    
2482                                      
2483                                    
2484                                      
2485                                    
2486                                      
2487                                    
2488                                      
2489                                    
2490                                      
2491                              <li><a href="/category/سینما">سینما</a></li>
2492                                      
2493                                    
2494                                      
2495                              <li><a href="/category/نمایش">نمایش</a></li>
2496                                      
2497                                    
2498                                      
2499                              <li><a href="/category/هنر-تجسمی">هنرهای تجسمی</a></li>
2500                                      
2501                                    
2502                                      
2503                              <li><a href="/category/موسیقی">موسیقی</a></li>
2504                                      
2505                                    
2506                                      
2507                              <li><a href="/category/معماری">معماری</a></li>
2508                                      
2509                                    
2510                        </ul>
2511                              </div>
2512                            
2513                          
2514                            
2515                          
2516                            
2517                          
2518                            
2519                          
2520                            
2521                          
2522                        </div>
2523
2524              
2525                  </div>
2526                
2527            
2528            
2529            
2530            <div
2531              class="sk-mega-pane rodin-detail-panel  "
2532              data-top-panel="1"
2533              data-top-title="کودک و نوجوان">
2534
2535                    
2536                <div class="sk-mega-grid">
2537                          
2538                          
2539                            
2540                              
2541                      <div class="sk-mega-group">
2542                        <div class="sk-mega-group-title">کتاب‌های خردسالان</div>
2543                        <ul class="sk-mega-list">
2544                                    
2545                                      
2546                              <li><a href="/category/صفر-تا-سه-سال">صفر تا سه سال</a></li>
2547                                      
2548                                    
2549                                      
2550                              <li><a href="/category/پیش-از-دبستان">پیش از دبستان</a></li>
2551                                      
2552                                    
2553                                      
2554                              <li><a href="/category/کتابهای-حمام-و-پارچه%E2%80%8Cای">کتاب‌های حمام و پارچه‌ای</a></li>
2555                                      
2556                                    
2557                                      
2558                              <li><a href="/category/رنگ%E2%80%8Cآمیزی">رنگ‌آمیزی</a></li>
2559                                      
2560                                    
2561                                      
2562                                    
2563                                      
2564                                    
2565                                      
2566                                    
2567                                      
2568                                    
2569                                      
2570                                    
2571                                      
2572                                    
2573                                      
2574                                    
2575                                      
2576                                    
2577                                      
2578                                    
2579                                      
2580                                    
2581                                      
2582                                    
2583                                      
2584                                    
2585                                      
2586                                    
2587                                      
2588                                    
2589                                      
2590                                    
2591                                      
2592                                    
2593                                      
2594                                    
2595                                      
2596                                    
2597                                      
2598                                    
2599                        </ul>
2600                              </div>
2601                            
2602                          
2603                            
2604                          
2605                            
2606                          
2607                            
2608                          
2609                            
2610                              
2611                      <div class="sk-mega-group">
2612                        <div class="sk-mega-group-title">کتاب‌های دبستانی</div>
2613                        <ul class="sk-mega-list">
2614                                    
2615                                      
2616                                    
2617                                      
2618                                    
2619                                      
2620                                    
2621                                      
2622                                    
2623                                      
2624                              <li><a href="/category/سال%E2%80%8Cهای-اول-دبستان">سال‌های اول دبستان</a></li>
2625                                      
2626                                    
2627                                      
2628                              <li><a href="/category/سال%E2%80%8Cهای-آخر-دبستان">سال‌های آخر دبستان</a></li>
2629                                      
2630                                    
2631                                      
2632                              <li><a href="/category/آموزشی-کودک">آموزشی کودک</a></li>
2633                                      
2634                                    
2635                                      
2636                                    
2637                                      
2638                                    
2639                                      
2640                                    
2641                                      
2642                                    
2643                                      
2644                                    
2645                                      
2646                                    
2647                                      
2648                                    
2649                                      
2650                                    
2651                                      
2652                                    
2653                                      
2654                                    
2655                                      
2656                                    
2657                                      
2658                                    
2659                                      
2660                                    
2661                                      
2662                                    
2663                                      
2664                                    
2665                                      
2666                                    
2667                        </ul>
2668                              </div>
2669                            
2670                          
2671                            
2672                          
2673                            
2674                          
2675                            
2676                              
2677                      <div class="sk-mega-group">
2678                        <div class="sk-mega-group-title">داستان و تخیل</div>
2679                        <ul class="sk-mega-list">
2680                                    
2681                                      
2682                                    
2683                                      
2684                                    
2685                                      
2686                                    
2687                                      
2688                                    
2689                                      
2690                                    
2691                                      
2692                                    
2693                                      
2694                                    
2695                                      
2696                              <li><a href="/category/داستان-ایرانی">داستان ایرانی</a></li>
2697                                      
2698                                    
2699                                      
2700                              <li><a href="/category/تخیلی">تخیلی</a></li>
2701                                      
2702                                    
2703                                      
2704                              <li><a href="/category/کلاسیک">کلاسیک</a></li>
2705                                      
2706                                    
2707                                      
2708                              <li><a href="/category/واقع%E2%80%8Cگرا">واقع‌گرا</a></li>
2709                                      
2710                                    
2711                                      
2712                              <li><a href="/category/وحشت-و-کارآگاهی">وحشت و کارآگاهی</a></li>
2713                                      
2714                                    
2715                                      
2716                                    
2717                                      
2718                                    
2719                                      
2720                                    
2721                                      
2722                                    
2723                                      
2724                                    
2725                                      
2726                                    
2727                                      
2728                                    
2729                                      
2730                                    
2731                                      
2732                                    
2733                                      
2734                                    
2735                                      
2736                                    
2737                        </ul>
2738                              </div>
2739                            
2740                          
2741                            
2742                          
2743                            
2744                          
2745                            
2746                          
2747                            
2748                          
2749                            
2750                              
2751                      <div class="sk-mega-group">
2752                        <div class="sk-mega-group-title">شعر و طنز</div>
2753                        <ul class="sk-mega-list">
2754                                    
2755                                      
2756                                    
2757                                      
2758                                    
2759                                      
2760                                    
2761                                      
2762                                    
2763                                      
2764                                    
2765                                      
2766                                    
2767                                      
2768                                    
2769                                      
2770                                    
2771                                      
2772                                    
2773                                    
2773  
2774                                    
2775                                      
2776                                    
2777                                      
2778                                    
2779                                      
2780                              <li><a href="/category/شعر-کودک">شعر کودک</a></li>
2781                                      
2782                                    
2783                                      
2784                              <li><a href="/category/شعر-نوجوان">شعر نوجوان</a></li>
2785                                      
2786                                    
2787                                      
2788                              <li><a href="/category/طنز-کودک-و-نوجوان">طنز کودک و نوجوان</a></li>
2789                                      
2790                                    
2791                                      
2792                                    
2793                                      
2794                                    
2795                                      
2796                                    
2797                                      
2798                                    
2799                                      
2800                                    
2801                                      
2802                                    
2803                                      
2804                                    
2805                                      
2806                                    
2807                        </ul>
2808                              </div>
2809                            
2810                          
2811                            
2812                          
2813                            
2814                          
2815                            
2816                              
2817                      <div class="sk-mega-group">
2818                        <div class="sk-mega-group-title">آموزشی و فرهنگی</div>
2819                        <ul class="sk-mega-list">
2820                                    
2821                                      
2822                                    
2823                                      
2824                                    
2825                                      
2826                                    
2827                                      
2828                                    
2829                                      
2830                                    
2831                                      
2832                                    
2833                                      
2834                                    
2835                                      
2836                                    
2837                                      
2838                                    
2839                                      
2840                                    
2841                                      
2842                                    
2843                                      
2844                                    
2845                                      
2846                                    
2847                                      
2848                                    
2849                                      
2850                                    
2851                                      
2852                              <li><a href="/category/دایرة%E2%80%8Cالمعارف---علمی">دایره المعارف و علمی</a></li>
2853                                      
2854                                    
2855                                      
2856                              <li><a href="/category/مهارتهای-زندگی">مهارت‌های زندگی</a></li>
2857                                      
2858                                    
2859                                      
2860                              <li><a href="/category/تاریخ---فلسفه">تاریخ و فلسفه</a></li>
2861                                      
2862                                    
2863                                      
2864                              <li><a href="/category/ادبیات-کهن-فارسی">ادبیات کهن فارسی</a></li>
2865                                      
2866                                    
2867                                      
2868                              <li>
2868<a href="/category/زندگی%E2%80%8Cنامه">زندگینامه</a></li>
2869                                      
2870                                    
2871                                      
2872                              <li><a href="/category/مذهبی">مذهبی</a></li>
2873                                      
2874                                    
2875                                      
2876                                    
2877                                      
2878                                    
2879                        </ul>
2880                              </div>
2881                            
2882                          
2883                            
2884                          
2885                            
2886                          
2887                            
2888                          
2889                            
2890                          
2891                            
2892                          
2893                            
2894                              
2895                      <div class="sk-mega-group">
2896                        <div class="sk-mega-group-title">زبان و نشریات</div>
2897                        <ul class="sk-mega-list">
2898                                    
2899                                      
2900                                    
2901                                      
2902                                    
2903                                      
2904                                    
2905                                      
2906                                    
2907                                      
2908                                    
2909                                      
2910                                    
2911                                      
2912                                    
2913                                      
2914                                    
2915                                      
2916                                    
2917                                      
2918                                    
2919                                      
2920                                    
2921                                      
2922                                    
2923                                      
2924                                    
2925                                      
2926                                    
2927                                      
2928                                    
2929                                      
2930                                    
2931                                      
2932                                    
2933                                      
2934                                    
2935                                      
2936                                    
2937                                      
2938                                    
2939                                      
2940                                    
2941                                      
2942                              <li><a href="/category/زبان%E2%80%8Cهای-خارجی">زبان‌های خارجی</a></li>
2943                                      
2944                                    
2945                                      
2946                              <li><a href="/category/نشریات-کودک">نشریات کودک</a></li>
2947                                      
2948                                    
2949                        </ul>
2950                              </div>
2951                            
2952                          
2953                            
2954                          
2955                        </div>
2956
2957              
2958                  </div>
2959                
2960            
2961            
2962            
2963            <div
2964              class="sk-mega-pane rodin-detail-panel  "
2965              data-top-panel="2"
2966              data-top-title="نوشت افزار">
2967
2968                    
2969                <div class="sk-mega-grid">
2970                          
2971                          
2972                            
2973                              
2974                      <div class="sk-mega-group">
2975                        <div class="sk-mega-group-title">نوشت‌افزار عمومی و مدرسه‌ای</div>
2976                        <ul class="sk-mega-list">
2977                                    
2978                                      
2979                              <li><a href="/category/خودکار-و-روان%E2%80%8Cنویس">خودکار و روان‌نویس</a></li>
2980                                      
2981                                    
2982                                      
2983                              <li><a href="/category/مداد-نوکی-و-نوک">مداد نوکی و نوک</a></li>
2984                                      
2985                                    
2986                                      
2987                              <li><a href="/category/مداد-و-سرمدادی">مداد و سرمدادی</a></li>
2988                                      
2989                                    
2990                                      
2991                              <li><a href="/category/ماژیک-و-هایلایتر">ماژیک و هایلایتر</a></li>
2992                                      
2993                                    
2994                                      
2995                              <li><a href="/category/پاک%E2%80%8Cکن">پاک‌کن</a></li>
2996                                      
2997                                    
2998                                      
2999                              <li><a href="/category/تراش">تراش</a></li>
3000                                      
3001                                    
3002                                      
3003                              <li><a href="/category/غلط%E2%80%8Cگیر">غلط‌گیر</a></li>
3004                                      
3005                                    
3006                                      
3007                              <li><a href="/category/خط-کش-دانش-آموزی">خط‌کش دانش‌آموزی</a></li>
3008                                      
3009                                    
3010                                      
3011                              <li><a href="/category/پرگار-دانش%E2%80%8Cآموزی">پرگار دانش‌آموزی</a></li>
3012                                      
3013                                    
3014                                      
3015                                    
3016                                      
3017                                    
3018                                      
3019                                    
3020                                      
3021                                    
3022                                      
3023                                    
3024                                      
3025                                    
3026                                      
3027                                    
3028                                      
3029                                    
3030                                      
3031                                    
3032                                      
3033                                    
3034                                      
3035                                    
3036                                      
3037                                    
3038                                      
3039                                    
3040                                      
3041                                    
3042                                      
3043                                    
3044                                      
3045                                    
3046                                      
3047                                    
3048                                      
3049                                    
3050                                      
3051                                    
3052                                      
3053                                    
3054                                      
3055                                    
3056                                      
3057                                    
3058                                      
3059                                    
3060                                      
3061                                    
3062                                      
3063                                    
3064                                      
3065                                    
3066                                      
3067                                    
3068                                      
3069                                    
3070                                      
3071                                    
3072                                      
3073                              <li><a href="/category/ظرف-و-لیوان-مدرسه">ظرف غذا و لیوان و قمقمه</a></li>
3074                                      
3075                                    
3076                        </ul>
3077                              </div>
3078                            
3079                          
3080                            
3081                          
3082                            
3083                          
3084                            
3085                          
3086                            
3087                          
3088                            
3089                          
3090                            
3091                          
3092                            
3093                          
3094                            
3095                          
3096                            
3097                              
3098                      <div class="sk-mega-group">
3099                        <div class="sk-mega-group-title">لوازم طراحی و نقاشی</div>
3100                        <ul class="sk-mega-list">
3101                                    
3102                                      
3103                                    
3104                                      
3105                                    
3106                                      
3107                                    
3108                                      
3109                                    
3110                                      
3111                                    
3112                                      
3113                                    
3114                                      
3115                                    
3116                                      
3117                                    
3118                                      
3119                                    
3120                                      
3121                              <li><a href="/category/مداد-رنگی">مداد رنگی</a></li>
3122                                      
3123                                    
3124                                      
3125                              <li><a href="/category/پاستل-و-مداد-شمعی">پاستل و مداد شمعی</a></li>
3126                                      
3127                                    
3128                                      
3129                              <li><a href="/category/آبرنگ">آبرنگ</a></li>
3130                                      
3131                                    
3132                                      
3133                              <li><a href="/category/گواش">گواش</a></li>
3134                                      
3135                                    
3136                                      
3137                              <li><a href="/category/رنگ">رنگ</a></li>
3138                                      
3139                                    
3140                                      
3141                              <li><a href="/category/قلم%E2%80%8Cمو">قلم‌مو</a></li>
3142                                      
3143                                    
3144                                      
3145                              <li><a href="/category/شابلون">شابلون</a></li>
3146                                      
3147                                    
3148                                      
3149                              <li><a href="/category/بوم-و-سه-پایه">بوم و سه‌پایه</a></li>
3150                                      
3151                                    
3152                                      
3153                                    
3154                                      
3155                                    
3156                                      
3157                                    
3158                                      
3159                                    
3160                                      
3161                                    
3162                                      
3163                                    
3164                                      
3165                                    
3166                                      
3167                                    
3168                                      
3169                                    
3170                                      
3171                                    
3172                                      
3173                                    
3174                                      
3175                                    
3176                                      
3177                                    
3178                                      
3179                                    
3180                                      
3181                                    
3182                                      
3183                                    
3184                                      
3185                                    
3186                                      
3187                                    
3188                                      
3189                                    
3190                                      
3191                                    
3192                                      
3193                                    
3194                                      
3195                                    
3196                        </ul>
3197                              </div>
3198                            
3199                          
3200                            
3201                          
3202                            
3203                          
3204                            
3205                          
3206                            
3207                          
3208                            
3209                          
3210                            
3211                          
3212                            
3213                          
3214                            
3215                              
3216                      <div class="sk-mega-group">
3217                        <div class="sk-mega-group-title">لوازم اداری</div>
3218                        <ul class="sk-mega-list">
3219                                    
3220                                      
3221                                    
3222                                      
3223                                    
3224                                      
3225                                    
3226                                      
3227                                    
3228                                      
3229                                    
3230                                      
3231                                    
3232                                      
3233                                    
3234                                      
3235                                    
3236                                      
3237                                    
3238                                      
3239                                    
3240                                      
3241                                    
3242                                      
3243                                    
3244                                      
3245                                    
3246                                      
3247                                    
3248                                      
3249                                    
3250                                      
3251                                    
3252                                      
3253                                    
3254                                      
3255                              <li><a href="/category/چسب-و-پایه-چسب">چسب و پایه‌ چسب</a></li>
3256                                      
3257                                    
3258                                      
3259                              <li><a href="/category/منگنه-و-پانچ">منگنه و پانچ</a></li>
3260                                      
3261                                    
3262                                      
3263                              <li><a href="/category/کاتر-و-قیچی">کاتر و قیچی</a></li>
3264                                      
3265                                    
3266                       
3266               
3267                              <li><a href="/category/ذره-بین">ذره‌بین</a></li>
3268                                      
3269                                    
3270                                      
3271                              <li><a href="/category/ماشین-حساب">ماشین حساب</a></li>
3272                                      
3273                                    
3274                                      
3275                              <li><a href="/category/لوازم-بایگانی">ابزار بایگانی</a></li>
3276                                      
3277                                    
3278                                      
3279                              <li><a href="/category/ست-اداری">ست اداری</a></li>
3280                                      
3281                                    
3282                                      
3283                              <li><a href="/category/سایر-لوازم-اداری">سایر لوازم اداری</a></li>
3284                                      
3285                                    
3286                                      
3287                                    
3288                                      
3289                                    
3290                                      
3291                                    
3292                                      
3293                                    
3294                                      
3295                                    
3296                                      
3297                                    
3298                                      
3299                                    
3300                                      
3301                                    
3302                                      
3303                                    
3304                                      
3305                                    
3306                                      
3307                                    
3308                                      
3309                                    
3310                                      
3311                              <li><a href="/category/دیجیتال">دیجیتال</a></li>
3312                                      
3313                                    
3314                                      
3315                                    
3316                        </ul>
3317                              </div>
3318                            
3319                          
3320                            
3321                          
3322                            
3323                          
3324                            
3325                          
3326                            
3327                          
3328                            
3329                          
3330                            
3331                          
3332                            
3333                          
3334                            
3335                              
3336                      <div class="sk-mega-group">
3337                        <div class="sk-mega-group-title">دفتر، کاغذ و مقوا</div>
3338                        <ul class="sk-mega-list">
3339                                    
3340                                      
3341                                    
3342                                      
3343                                    
3344                                      
3345                                    
3346                                      
3347                                    
3348                                      
3349                                    
3350                                      
3351                                    
3352                                      
3353                                    
3354                                      
3355                                    
3356                                      
3357                                    
3358                                      
3359                                    
3360                                      
3361                                    
3362                                      
3363                                    
3364                                      
3365                                    
3366                                      
3367                                    
3368                                      
3369                                    
3370                                      
3371                                    
3372                                      
3373                                    
3374                                      
3375                                    
3376                                      
3377                                    
3378                                      
3379                                    
3380                                      
3381                                    
3382                                      
3383                                    
3384                                      
3385                                    
3386                                      
3387                                    
3388                                      
3389                                    
3390                                      
3391                              <li><a href="/category/دفتر-مشق-و-یادداشت">دفتر</a></li>
3392                                      
3393                                    
3394                                      
3395                              <li><a href="/category/دفتر-برنامه-ریزی">دفتر برنامه‌ریزی (پلنر)</a></li>
3396                                      
3397                                    
3398                                      
3399                              <li><a href="/category/دفتر-طراحی-و-خوشنویسی">دفتر طراحی و خوشنویسی</a></li>
3400                                      
3401                                    
3402                                      
3403                              <li><a href="/category/یادداشت-چسبدار-(پست%E2%80%8Cایت)">یادداشت چسبدار (پست‌ایت)</a></li>
3404                                      
3405                                    
3406                                      
3407                                    
3408                                      
3409                                    
3410                                      
3411                                    
3412                                      
3413                                    
3414                                      
3415                                    
3416                                      
3417                                    
3418                                      
3419                                    
3420                                      
3421                                    
3422                                      
3423                                    
3424                                      
3425                                    
3426                        </ul>
3427                              </div>
3428                            
3429                          
3430                            
3431                          
3432                            
3433                          
3434                            
3435                          
3436                            
3437                              
3438                      <div class="sk-mega-group">
3439                        <div class="sk-mega-group-title">کیف، کوله‌پشتی و جامدادی</div>
3440                        <ul class="sk-mega-list">
3441                                    
3442                                      
3443                                    
3444                                      
3445                                    
3446                                      
3447                                    
3448                                      
3449                                    
3450                                      
3451                                    
3452                                      
3453                                    
3454                                      
3455                                    
3456                                      
3457                                    
3458                                      
3459                                    
3460                                      
3461                                    
3462                                      
3463                                    
3464                                      
3465                                    
3466                                      
3467                                    
3468                                      
3469                                    
3470                                      
3471                                    
3472                                      
3473                                    
3474                                      
3475                                    
3476                                      
3477                                    
3478                                      
3479                                    
3480                                      
3481                                    
3482                                      
3483                                    
3484                                      
3485                                    
3486                                      
3487                                    
3488                                      
3489                                    
3490                                      
3491                                    
3492                                      
3493                                    
3494                                      
3495                                    
3496                                      
3497                                    
3498                                      
3499                                    
3500                                      
3501                              <li><a href="/category/جامدادی">جامدادی</a></li>
3502                                      
3503                                    
3504                                      
3505                              <li><a href="/category/کیف-و-کوله-مدرسه">کیف و کوله‌پشتی</a></li>
3506                                      
3507                                    
3508                                      
3509                                    
3510                                      
3511                                    
3512                                      
3513                                    
3514                                      
3515                                    
3516                                      
3517                                    
3518                                      
3519                                    
3520                                      
3521                                    
3522                                      
3523                                    
3524                        </ul>
3525                              </div>
3526                            
3527                          
3528                            
3529                          
3530                            
3531                              
3532                      <div class="sk-mega-group">
3533                        <div class="sk-mega-group-title">ابزار و تجهیزات تخصصی هنری و فنی</div>
3534                        <ul class="sk-mega-list">
3535                                    
3536                                      
3537                                    
3538                                      
3539                                    
3540                                      
3541                                    
3542                                      
3543                                    
3544                                      
3545                                    
3546                                      
3547                                    
3548                                      
3549                                    
3550                                      
3551                                    
3552                                      
3553                                    
3554                                      
3555                                    
3556                                      
3557                                    
3558                                      
3559                                    
3560                                      
3561                                    
3562                                      
3563                                    
3564                                      
3565                                    
3566                                      
3567                                    
3568                                      
3569                                    
3570                                      
3571                                    
3572                                      
3573                                    
3574                                      
3575                                    
3576                                      
3577                                    
3578                                      
3579                                    
3580                                      
3581                                    
3582                                      
3583                                    
3584                                      
3585                                    
3586                                      
3587                                    
3588                                      
3589                                    
3590                                      
3591                                    
3592                                      
3593                                    
3594                                      
3595                                    
3596                                      
3597                                    
3598                                      
3599                              <li><a href="/category/مداد-هنری">مداد هنری</a></li>
3600                                      
3601                                    
3602                                      
3603                              <li><a href="/category/قلم-و-مرکب">قلم و مرکب</a></li>
3604                                      
3605                                    
3606                                      
3607                              <li><a href="/category/ابزار-تخصصی-هنری">ابزار تخصصی هنری</a></li>
3608                                      
3609                                    
3610                                      
3611                              <li><a href="/category/خط-کش-و-اشل">خط‌کش و اشل</a></li>
3612                                      
3613                                    
3614                                      
3615                              <li><a href="/category/چراغ-مطالعه">چراغ مطالعه</a></li>
3616                                      
3617                                    
3618                                      
3619                              <li><a href="/category/تخته-و-میزکار">تخته و میزکار</a></li>
3620                                      
3621                                    
3622                                      
3623                                    
3624                                      
3625                                    
3626                        </ul>
3627                              </div>
3628                            
3629                          
3630                            
3631                          
3632                            
3633                          
3634                            
3635                          
3636                            
3637                          
3638                            
3639                          
3640                            
3641                          
3642                            
3643                          
3644                        </div>
3645
3646              
3647                  </div>
3648                
3649            
3650            
3651            
3652            <div
3653              class="sk-mega-pane rodin-detail-panel  "
3654              data-top-panel="3"
3655              data-top-title="سرگرمی و خلاقیت">
3656
3657                    
3658                <div class="sk-mega-grid">
3659                          
3660                          
3661                            
3662                              
3663                      <div class="sk-mega-group">
3664                        <div class="sk-mega-group-title">بازی‌های رومیزی، کارتی و دورهمی</div>
3665                        <ul class="sk-mega-list">
3666                                    
3667                                      
3668                              <li><a href="/category/بازی-کارتی-و-دورهمی">بازی کارتی و دورهمی</a></li>
3669     
3669                                 
3670                                    
3671                                      
3672                              <li><a href="/category/بازی-استراتژی">بازی استراتژی</a></li>
3673                                      
3674                                    
3675                                      
3676                              <li><a href="/category/بازی-معمایی">بازی معمایی</a></li>
3677                                      
3678                                    
3679                                      
3680                              <li><a href="/category/پازل">پازل</a></li>
3681                                      
3682                                    
3683                                      
3684                              <li><a href="/category/جورچین-و-پازل-کودک">جورچین و پازل کودک</a></li>
3685                                      
3686                                    
3687                                      
3688                                    
3689                                      
3690                                    
3691                                      
3692                                    
3693                                      
3694                                    
3695                                      
3696                                    
3697                                      
3698                                    
3699                                      
3700                                    
3701                                      
3702                                    
3703                                      
3704                                    
3705                                      
3706                                    
3707                                      
3708                                    
3709                                      
3710                                    
3711                        </ul>
3712                              </div>
3713                            
3714                          
3715                            
3716                          
3717                            
3718                          
3719                            
3720                          
3721                            
3722                          
3723                            
3724                              
3725                      <div class="sk-mega-group">
3726                        <div class="sk-mega-group-title">کاردستی و مهارتی</div>
3727                        <ul class="sk-mega-list">
3728                                    
3729                                      
3730                                    
3731                                      
3732                                    
3733                                      
3734                                    
3735                                      
3736                                    
3737                                      
3738                                    
3739                                      
3740                              <li><a href="/category/کاردستی">کاردستی</a></li>
3741                                      
3742                                    
3743                                      
3744                              <li><a href="/category/خمیربازی">خمیربازی</a></li>
3745                                      
3746                                    
3747                                      
3748                              <li><a href="/category/رنگ-انگشتی">رنگ انگشتی</a></li>
3749                                      
3750                                    
3751                                      
3752                              <li><a href="/category/لگو-و-ساختنی">لگو و ساختنی</a></li>
3753                                      
3754                                    
3755                                      
3756                              <li><a href="/category/ماکت-سازی">ماکت‌سازی</a></li>
3757                                      
3758                                    
3759                                      
3760                                    
3761                                      
3762                                    
3763                                      
3764                                    
3765                                      
3766                                    
3767                                      
3768                                    
3769                                      
3770                                    
3771                                      
3772                                    
3773                        </ul>
3774                              </div>
3775                            
3776                          
3777                            
3778                          
3779                            
3780                          
3781                            
3782                          
3783                            
3784                          
3785                            
3786                              
3787                      <div class="sk-mega-group">
3788                        <div class="sk-mega-group-title">آموزشی و فکری</div>
3789                        <ul class="sk-mega-list">
3790                                    
3791                                      
3792                                    
3793                                      
3794                                    
3795                                      
3796                                    
3797                                      
3798                                    
3799                                      
3800                                    
3801                                      
3802                                    
3803                                      
3804                                    
3805                                      
3806                                    
3807                                      
3808                                    
3809                                      
3810                                    
3811                                      
3812                              <li><a href="/category/آموزشی-فکری-مهارتی">آموزش فکری مهارتی</a></li>
3813                                      
3814                                    
3815                                      
3816                              <li><a href="/category/وسایل-سرگرمی">وسایل سرگرمی</a></li>
3817                                      
3818                                    
3819                                      
3820                                    
3821                                      
3822                                    
3823                                      
3824                                    
3825                                      
3826                                    
3827                                      
3828                                    
3829                        </ul>
3830                              </div>
3831                            
3832                          
3833                            
3834                          
3835                            
3836                              
3837                      <div class="sk-mega-group">
3838                        <div class="sk-mega-group-title">اسباب‌بازی و فیگور</div>
3839                        <ul class="sk-mega-list">
3840                                    
3841                                      
3842                                    
3843                                      
3844                                    
3845                                      
3846                                    
3847                                      
3848                                    
3849                                      
3850                                    
3851                                      
3852                                    
3853                                      
3854                                    
3855                                      
3856                                    
3857                                      
3858                                    
3859                                      
3860                                    
3861                                      
3862                                    
3863                                      
3864                                    
3865                                      
3866                              <li><a href="/category/عروسک-و-فیگور">فیگور</a></li>
3867                                      
3868                                    
3869                                      
3870                              <li><a href="/category/تفنگ-بازی">تفنگ بازی</a></li>
3871                                      
3872                                    
3873                                      
3874                              <li><a href="/category/ماشین-بازی">ماشین‌بازی</a></li>
3875                                      
3876                                    
3877                                      
3878                              <li><a href="/category/ست‌های-بازی">ست‌های بازی</a></li>
3879                                      
3880                                    
3881                                      
3882                              <li><a href="/category/سایر-اسباب‌بازی‌ها">سایر اسباب‌بازی‌ها</a></li>
3883                                      
3884                                    
3885                        </ul>
3886                              </div>
3887                            
3888                          
3889                            
3890                          
3891                            
3892                          
3893                            
3894                          
3895                            
3896                          
3897                        </div>
3898
3899              
3900                  </div>
3901                
3902            
3903            
3904            
3905            <div
3906              class="sk-mega-pane rodin-detail-panel  "
3907              data-top-panel="4"
3908              data-top-title="صنایع دستی">
3909
3910                    
3911                <div class="sk-mega-grid">
3912                          
3913                          
3914                            
3915                              
3916                      <div class="sk-mega-group">
3917                        <div class="sk-mega-group-title">دکوراسیون و تزیینات منزل</div>
3918                        <ul class="sk-mega-list">
3919                                    
3920                                      
3921                              <li><a href="/category/آباژور-و-روشنایی">آباژور و روشنایی</a></li>
3922                                      
3923                                    
3924                                      
3925                              <li><a href="/category/دیوارکوب-(تابلو---آینه-کاشی-جاکلیدی)">دیوارکوب</a></li>
3926                                      
3927                                    
3928                                      
3929                              <li><a href="/category/رومیزی-رانر-کوسن">رومیزی، رانر، کوسن</a></li>
3930                                      
3931                                    
3932                                      
3933                              <li><a href="/category/مجسمه-و-تندیس">مجسمه و تندیس</a></li>
3934                                      
3935                                    
3936                                      
3937                              <li><a href="/category/گلیم">گلیم</a></li>
3938                                      
3939                                    
3940                                      
3941                              <li><a href="/category/شمع-و-شمعدان-و-عود-و-وارمر">شمع و شمعدان و عود و وارمر</a></li>
3942                                      
3943                                    
3944                                      
3945                              <li><a href="/category/دکوراتیو">دکوراتیو</a></li>
3946                                      
3947                                    
3948                                      
3949                              <li><a href="/category/گوی-و-موزیک-باکس">گوی و موزیک باکس</a></li>
3950                                      
3951                                    
3952                                      
3953                                    
3954                                      
3955                                    
3956                                      
3957                                    
3958                                      
3959                                    
3960                        </ul>
3961                              </div>
3962                            
3963                          
3964                            
3965                          
3966                            
3967                          
3968                            
3969                          
3970                            
3971                          
3972                            
3973                          
3974                            
3975                          
3976                            
3977                          
3978                            
3979                              
3980                      <div class="sk-mega-group">
3981                        <div class="sk-mega-group-title">مد و اکسسوری</div>
3982                        <ul class="sk-mega-list">
3983                                    
3984                                      
3985                                    
3986                                      
3987                                    
3988                                      
3989                                    
3990                                      
3991                                    
3992                                      
3993                                    
3994                                      
3995                                    
3996                                      
3997                                    
3998                                      
3999                                    
4000                                      
4001                              <li><a href="/category/کیف-چرم-و-پارچه">کیف چرم و پارچه</a></li>
4002                                      
4003                                    
4004                                      
4005                              <li><a href="/category/زیورآلات">زیورآلات</a></li>
4006                                      
4007                                    
4008                                      
4009                                    
4010                                      
4011                                    
4012                        </ul>
4013                              </div>
4014                            
4015                          
4016                            
4017                          
4018                            
4019                              
4020                      <div class="sk-mega-group">
4021                        <div class="sk-mega-group-title">ظروف</div>
4022                        <ul class="sk-mega-list">
4023                                    
4024                                      
4025                                    
4026                                      
4027                                    
4028                                      
4029                                    
4030                                      
4031                                    
4032                                      
4033                                    
4034                                      
4035                                    
4036                                      
4037                                    
4038                                      
4039                                    
4040                                      
4041                                    
4042                                      
4043                                    
4044                                      
4045                              <li><a href="/category/ماگ-و-لیوان-و-فنجان">ماگ، لیوان و فنجان</a></li>
4046                                      
4047                                    
4048                                      
4049                              <li><a href="/category/ظروف">همه ظروف</a></li>
4050                                      
4051                                    
4052                        </ul>
4053                              </div>
4054                            
4055                          
4056                            
4057                          
4058                        </div
4058>
4059
4060              
4061                  </div>
4062                
4063            
4064            
4065            
4066            <div
4067              class="sk-mega-pane rodin-detail-panel  rodin-detail-panel--link"
4068              data-top-panel="5"
4069              data-top-title="کارت هدیه">
4070
4071                    
4072                <div class="sk-mega-empty">
4073                  <a href="/فروش-سازمانی-شهرکتاب-انلاین">مشاهده کارت هدیه</a>
4074                      </div>
4075                    
4076                  </div>
4077                
4078            
4079            
4080            
4081            <div
4082              class="sk-mega-pane rodin-detail-panel  rodin-detail-panel--link"
4083              data-top-panel="6"
4084              data-top-title="مجله‌ی شهرکتاب آنلاین">
4085
4086                    
4087                <div class="sk-mega-empty">
4088                  <a href="/mag">مشاهده مجله‌ی شهرکتاب آنلاین</a>
4089                      </div>
4090                    
4091                  </div>
4092                
4093            
4094            
4095            
4096            <div
4097              class="sk-mega-pane rodin-detail-panel  rodin-detail-panel--link"
4098              data-top-panel="7"
4099              data-top-title="تماس با ما">
4100
4101                    
4102                <div class="sk-mega-empty">
4103                  <a href="/contact">مشاهده تماس با ما</a>
4104                      </div>
4105                    
4106                  </div>
4107                
4108
4109          
4110              </div>
4111            </div>
4112          </div>
4113  </nav>
4114</header>
4115<div id="skHeaderSpacer"></div>
4116
4117
4118<div class="rodin-overlay" id="rodin-search-overlay" dir="rtl" aria-hidden="true">
4119  <div class="rodin-overlay-header">
4120    <button class="rodin-icon-btn" type="button" data-close-overlay="rodin-search-overlay" aria-label="بستن">
4121      <i class="bi bi-x-lg d-flex" aria-hidden="true"></i>
4122    </button>
4123    <div class="rodin-search-input-wrap">
4124      <i class="bi bi-search rodin-search-input-icon" aria-hidden="true"></i>
4125      <input id="rodin-search-input" class="rodin-search-input" type="text" placeholder="جست‌وجوی کتاب، نویسنده، ناشر..." autocomplete="off" />
4126    </div>
4127  </div>
4128  <div class="rodin-search-content">
4129    <p class="rodin-title-sm" id="rodin-search-headline">جستجوهای اخیر</p>
4130    <div id="rodin-search-results"></div>
4131  </div>
4132</div>
4133
4134
4135<div class="sk-drawer" id="sk-drawer" aria-hidden="true">
4136  <button type="button" class="sk-drawer-backdrop" data-sk-drawer-close aria-label="بستن منو"></button>
4137  <aside class="sk-drawer-panel" id="skDrawerPanel" aria-label="منوی موبایل" dir="rtl">
4138    <div class="sk-drawer-head">
4139      <img src="/files/download.svg" alt="لوگو" />
4140      <button type="button" class="sk-drawer-close" data-sk-drawer-close aria-label="بستن">
4141        <i class="bi bi-x-lg" aria-hidden="true"></i>
4142    </button>
4143  </div>
4144
4145    <div class="sk-drawer-body">
4146      
4147      <button type="button" class="sk-drawer-login" data-desktop-action="login">
4148        <i class="bi bi-person" aria-hidden="true"></i>
4149        <span>ورود یا ثبت‌نام</span>
4150    </button>
4151      
4152
4153      <div class="sk-drawer-label">دسته‌بندی‌ها</div>
4154      <ul class="sk-drawer-cats" id="sk-drawer-cats">
4155        
4156          
4157            
4158            
4159            
4160            <li class="sk-drawer-cat">
4161              <button type="button" data-sk-cat-toggle>
4162            <span>کتاب </span>
4163                <i class="bi bi-chevron-left sk-chevron" aria-hidden="true"></i>
4164          </button>
4165              <div class="sk-drawer-groups">
4166                
4167                  
4168                  
4169                    
4170                      
4171                      <div class="sk-drawer-group">
4172                        <button type="button" data-sk-group-toggle>
4173                          <span>ادبیات</span>
4174                          <i class="bi bi-chevron-left sk-chevron" aria-hidden="true"></i>
4175                </button>
4176                        <ul class="sk-drawer-links">
4177                          
4178                            
4179                              <li>
4180                                <a href="/category/داستان-ایران" data-sk-drawer-close-nav>داستان ایران</a>
4181                              </li>
4182                            
4183                
4184                            
4185                              <li>
4186                                <a href="/category/داستان-جهان" data-sk-drawer-close-nav>داستان جهان</a>
4187                              </li>
4188                            
4189                
4190                            
4191                              <li>
4192                                <a href="/tag/جستار?existence_filters=%7B&#34;has_selling_stock&#34;%3A%5B1%5D%7D" data-sk-drawer-close-nav>جستار</a>
4193                              </li>
4194                            
4195                
4196                            
4197                              <li>
4198                                <a href="/category/نقد-ادبی" data-sk-drawer-close-nav>نقد ادبی و زبان‌شناسی</a>
4199                              </li>
4200                            
4201                
4202                            
4203                              <li>
4204                                <a href="/category/شعر-کلاسیک-ایران" data-sk-drawer-close-nav>شعر ایران</a>
4205                              </li>
4206                            
4207                
4208                            
4209                              <li>
4210                                <a href="/category/شعر-جهان" data-sk-drawer-close-nav>شعر جهان</a>
4211                              </li>
4212                            
4213                
4214                            
4215                              <li>
4216                                <a href="/category/متون-کهن" data-sk-drawer-close-nav>متون کهن</a>
4217                              </li>
4218                            
4219                
4220                            
4221                
4222                            
4223                
4224                            
4225                
4226                            
4227                
4228                            
4229                
4230                            
4231                
4232                            
4233                
4234                            
4235                
4236                            
4237                
4238                            
4239                
4240                            
4241                
4242                            
4243                
4244                            
4245                
4246                            
4247                
4248                            
4249                
4250                            
4251                
4252                            
4253                
4254                            
4255                
4256                            
4257                
4258                            
4259                
4260                            
4261                
4262                            
4263                
4264                            
4265                
4266                        </ul>
4267            </div>
4268          
4269      
4270                    
4271      
4272                    
4273      
4274                    
4275      
4276                    
4277      
4278                    
4279      
4280                    
4281      
4282                    
4283                      
4284                      <div class="sk-drawer-group">
4285                        <button type="button" data-sk-group-toggle>
4286                          <span>تاریخ و اسطوره</span>
4287                          <i class="bi bi-chevron-left sk-chevron" aria-hidden="true"></i>
4288                </button>
4289                        <ul class="sk-drawer-links">
4290                          
4291                            
4292                
4293                            
4294                
4295                            
4296                
4297                            
4298                
4299                            
4300                
4301                            
4302                
4303                            
4304                
4305                            
4306                              <li>
4307                                <a href="/category/تاریخ-کهن" data-sk-drawer-close-nav>تاریخ ایران</a>
4308                              </li>
4309                            
4310                
4311                            
4312                              <li>
4313                                <a href="/category/تاریخ-جهان" data-sk-drawer-close-nav>تاریخ جهان</a>
4314                              </li>
4315                            
4316                
4317                            
4318                              <li>
4319                                <a href="/category/اسطوره" data-sk-drawer-close-nav>اسطوره</a>
4320                              </li>
4321                            
4322                
4323                            
4324                              <li>
4325                                <a href="/category/خاطرات-و-سفرنامه-و-سرگذشتنامه" data-sk-drawer-close-nav>زندگی‌نامه، خاطرات، و سفرنامه</a>
4326                              </li>
4327                            
4328                
4329                            
4330                
4331                            
4332                
4333                            
4334                
4335                            
4336                
4337                            
4338                
4339                            
4340                
4341                            
4342                
4343                            
4344                
4345                            
4346                
4347                            
4348                
4349                            
4350                
4351                            
4352                
4353                            
4354                
4355                            
4356                
4357                            
4358                
4359                            
4360                
4361                            
4362                
4363                            
4364                
4365                            
4366                
4367                        </ul>
4368            </div>
4369          
4370      
4371                    
4372      
4373                    
4374      
4375                    
4376      
4377                    
4378                      
4379                      <div class="sk-drawer-group">
4380                        <button type="button" data-sk-group-toggle>
4381                          <span>کتب مرجع و سایر علوم</span>
4382                          <i class="bi bi-chevron-left sk-chevron" aria-hidden="true"></i>
4383                </button>
4384                        <ul class="sk-drawer-links">
4385                          
4386                            
4387                
4388                            
4389                
4390                            
4391                
4392                            
4393                
4394                            
4395                
4396                            
4397                
4398                            
4399                
4400                            
4401                
4402                            
4403                
4404                            
4405                
4406                            
4407                
4408                            
4409                              <li>
4410                                <a href="/category/علم" data-sk-drawer-close-nav>علم</a>
4411                              </li>
4412                            
4413                
4414                            
4415                              <li>
4416                                <a href="/category/مرجع" data-sk-drawer-close-nav>مرجع</a>
4417                              </li>
4418                            
4419                
4420                            
4421                              <li>
4422                                <a href="/category/حقوق" data-sk-drawer-close-nav>حقوق</a>
4423                              </li>
4424                            
4425                
4426                            
4427                              <li>
4428                                <a href="/category/گردشگری-و-نقشه" data-sk-drawer-close-nav>گردشگری و نقشه</a>
4429                              </li>
4430                            
4431                
4432                            
4433                              <li>
4434                                <a href="/category/آشپزی" data-sk-drawer-close-nav>آشپزی</a>
4435                              </li>
4436                            
4437                
4438                            
4439                
4440                            
4441                
4442                            
4443                
4444                            
4445                
4446                            
4447                
4448                            
4449                
4450                            
4451                
4452                            
4453                
4454                            
4455                
4456                            
4457                
4458                            
4459                
4460                            
4461                
4462                            
4463                
4464                            
4465                
4466                        </ul>
4467            </div>
4468          
4469      
4470                    
4471      
4472                    
4473      
4474                    
4475      
4476                    
4477      
4478                    
4479                      
4480                      <div class="sk-drawer-group">
4481                        <button type="button" data-sk-group-toggle>
4482                          <span>علوم انسانی</span>
4483                          <i class="bi bi-chevron-left sk-chevron" aria-hidden="true"></i>
4484                </button>
4485                        <ul class="sk-drawer-links">
4486                          
4487                            
4488                
4489                            
4490                
4491                            
4492                
4493                            
4494                
4495                            
4496                
4497                            
4498                
4499                            
4500                
4501                            
4502                
4503                            
4504                
4505                            
4506                
4507                            
4508                
4509                            
4510                
4511                            
4512                
4513                            
4514                
4515                            
4516                
4517                            
4518                
4519                            
4520                              <li>
4521                                <a href="/category/اقتصاد" data-sk-drawer-close-nav>اقتصاد</a>
4522                              </li>
4523                            
4524                
4525                            
4526                              <li>
4527                                <a href="/category/ایران-شناسی" data-sk-drawer-close-nav>ایران شناسی</a>
4528                              </li>
4529                            
4530                
4531                            
4532                              <li>
4533                                <a href="/category/مدیریت" data-sk-drawer-close-nav>مدیریت</a>
4534                              </li>
4535                            
4536                
4537                            
4538                              <li>
4539                                <a href="/category/فلسفه" data-sk-drawer-close-nav>فلسفه و عرفان</a>
4540                              </li>
4541                            
4542                
4543                            
4544                              <li>
4545                                <a href="/category/فرهنگ-مردم-و-طنز" data-sk-drawer-close-nav>فرهنگ مردم و طنز</a>
4546                              </li>
4547                            
4548                
4549                            
4550                              <li>
4551                                <a href="/category/دین-و-مذهب" data-sk-drawer-close-nav>دین و مذهب</a>
4552                              </li>
4553                            
4554                
4555                            
4556                              <li>
4557                                <a href="/category/علوم-اجتماعی-و-سیاسی" data-sk-drawer-close-nav>علوم اجتماعی و سیاسی</a>
4558                              </li>
4559                            
4560                
4561                            
4562                              <li>
4563                                <a href="/category/زنان-و-فمنیسم" data-sk-drawer-close-nav>زنان و فمنیسم</a>
4564                              </li>
4565                            
4566                
4567                            
4568                              <li>
4569                                <a href="/category/روان%E2%80%8Cشناسی" data-sk-drawer-close-nav>روانشناسی</a>
4570                              </li>
4571                            
4572                
4573                            
4574                
4575                            
4576                
4577                            
4578                
4579                            
4580                
4581                            
4582                
4583                        </ul>
4584            </div>
4585          
4586      
4587                    
4588      
4589                    
4590      
4591                    
4592      
4593                    
4594      
4595                    
4596      
4597                    
4598      
4599                    
4600      
4601                    
4602      
4603                    
4604                      
4605                      <div class="sk-drawer-group">
4606                        <button type="button" data-sk-group-toggle>
4607                          <span>هنر</span>
4608                          <i class="bi bi-chevron-left sk-chevron" aria-hidden="true"></i>
4609                </button>
4610                        <ul class="sk-drawer-links">
4611                          
4612                            
4613                
4614                            
4615                
4616                            
4617                
4618                            
4619                
4620                            
4621                
4622                            
4623                
4624                            
4625                
4626                            
4627                
4628                            
4629                
4630                            
4631                
4632                            
4633                
4634                            
4635                
4636                            
4637                
4638                            
4639                
4640                            
4641                
4642                            
4643                
4644                            
4645                
4646                            
4647                
4648                            
4649                
4650                            
4651                
4652                            
4653                
4654                            
4655                
4656                            
4657                
4658                            
4659                
4660                            
4661                
4662                            
4663                              <li>
4664                                <a href="/category/سینما" data-sk-drawer-close-nav>سینما</a>
4665                              </li>
4666                            
4667                
4668                            
4669                              <li>
4670                                <a href="/category/نمایش" data-sk-drawer-close-nav>نمایش</a>
4671                              </li>
4672                            
4673                
4674                            
4675                              <li>
4676                                <a href="/category/هنر-تجسمی" data-sk-drawer-close-nav>هنرهای تجسمی</a>
4677                              </li>
4678                            
4679                
4680                            
4681                              <li>
4682                                <a href="/category/موسیقی" data-sk-drawer-close-nav>موسیقی</a>
4683                              </li>
4684                            
4685                
4686                            
4687                              <li>
4688                                <a href="/category/معماری" data-sk-drawer-close-nav>معماری</a>
4689                              </li>
4690                            
4691                
4692                        </ul>
4693            </div>
4694          
4695      
4696                    
4697      
4698                    
4699      
4700                    
4701      
4702                    
4703      
4704                
4705              </div>
4706            </li>
4707            
4708                
4709            
4710            
4711            
4712            <li class="sk-drawer-cat">
4713              <button type="button" data-sk-cat-toggle>
4714            <span>کودک و نوجوان</span>
4715                <i class="bi bi-chevron-left sk-chevron" aria-hidden="true"></i>
4716          </button>
4717              <div class="sk-drawer-groups">
4718                
4719                  
4720                  
4721                    
4722                      
4723                      <div class="sk-drawer-group">
4724                        <button type="button" data-sk-group-toggle>
4725                          <span>کتاب‌های خردسالان</span>
4726                          <i class="bi bi-chevron-left sk-chevron" aria-hidden="true"></i>
4727                </button>
4728                        <ul class="sk-drawer-links">
4729                          
4730                            
4731                              <li>
4732                                <a href="/category/صفر-تا-سه-سال" data-sk-drawer-close-nav>صفر تا سه سال</a>
4733                              </li>
4734                            
4735                
4736                            
4737                              <li>
4738                                <a href="/category/پیش-از-دبستان" data-sk-drawer-close-nav>پیش از دبستان</a>
4739                              </li>
4740                            
4741                
4742                            
4743                              <li>
4744                                <a href="/category/کتابهای-حمام-و-پارچه%E2%80%8Cای" data-sk-drawer-close-nav>کتاب‌های حمام و پارچه‌ای</a>
4745                              </li>
4746                            
4747                
4748                            
4749                              <li>
4750                                <a href="/category/رنگ%E2%80%8Cآمیزی" data-sk-drawer-close-nav>رنگ‌آمیزی</a>
4751                              </li>
4752                            
4753                
4754                            
4755                
4756                            
4757                
4758                            
4759                
4760                            
4761                
4762                            
4763                
4764                            
4765                
4766                            
4767                
4768                            
4769                
4770                            
4771                
4772                            
4773                
4774                            
4775                
4776                            
4777                
4778                            
4779                
4780                            
4781                
4782                            
4783                
4784                            
4785                
4786                            
4787                
4788                            
4789                
4790                            
4791                
4792                        </ul>
4793            </div>
4794          
4795      
4796                    
4797      
4798                    
4799      
4800                    
4801      
4802                    
4803                      
4804                      <div class="sk-drawer-group">
4805                        <button type="button" data-sk-group-toggle>
4806                          <span>کتاب‌های دبستانی</span>
4807                          <i class="bi bi-chevron-left sk-chevron" aria-hidden="true"></i>
4808                </button>
4809                        <ul class="sk-drawer-links">
4810                          
4811                            
4812                
4813                            
4814                
4815                            
4816                
4817                            
4818                
4819                            
4820                              <li>
4821                                <a href="/category/سال%E2%80%8Cهای-اول-دبستان" data-sk-drawer-close-nav>سال‌های اول دبستان</a>
4822                              </li>
4823                            
4824                
4825                            
4826                              <li>
4827                                <a href="/category/سال%E2%80%8Cهای-آخر-دبستان" data-sk-drawer-close-nav>سال‌های آخر دبستان</a>
4828                              </li>
4829                            
4830                
4831                            
4832                              <li>
4833                                <a href="/category/آموزشی-کودک" data-sk-drawer-close-nav>آموزشی کودک</a>
4834                              </li>
4835                            
4836                
4837                            
4838                
4839                            
4840                
4841                            
4842                
4843                            
4844                
4845                            
4846                
4847                            
4848                
4849                            
4850                
4851                            
4852                
4853                            
4854                
4855                            
4856                
4857                            
4858                
4859                            
4860                
4861                            
4862                
4863                            
4864                
4865                            
4866                
4867                            
4868                
4869                        </ul>
4870            </div>
4871          
4872      
4873                    
4874      
4875                    
4876      
4877                    
4878                      
4879                      <div class="sk-drawer-group">
4880                        <button type="button" data-sk-group-toggle>
4881                          <span>داستان و تخیل</span>
4882                          <i class="bi bi-chevron-left sk-chevron" aria-hidden="true"></i>
4883                </button>
4884                        <ul class="sk-drawer-links">
4885                          
4886                            
4887                
4888                            
4889                
4890                            
4891                
4892                            
4893                
4894                            
4895                
4896                            
4897                
4898                            
4899                
4900                            
4901                              <li>
4902                                <a href="/category/داستان-ایرانی" data-sk-drawer-close-nav>داستان ایرانی</a>
4903                              </li>
4904                            
4905                
4906                            
4907                              <li>
4908                                <a href="/category/تخیلی" data-sk-drawer-close-nav>تخیلی</a>
4909                              </li>
4910                            
4911                
4912                            
4913                              <li>
4914                                <a href="/category/کلاسیک" data-sk-drawer-close-nav>کلاسیک</a>
4915                              </li>
4916                            
4917                
4918                            
4919                              <li>
4920                                <a href="/category/واقع%E2%80%8Cگرا" data-sk-drawer-close-nav>واقع‌گرا</a>
4921                              </li>
4922                            
4923                
4924                            
4925                              <li>
4926                                <a href="/category/وحشت-و-کارآگاهی" data-sk-drawer-close-nav>وحشت و کارآگاهی</a>
4927                              </li>
4928                            
4929                
4930                            
4931                
4932                            
4933                
4934                            
4935                
4936                            
4937                
4938                            
4939                
4940                            
4941                
4942                            
4943                
4944                            
4945                
4946                            
4947                
4948                            
4949                
4950                            
4951                
4952                        </ul>
4953            </div>
4954          
4955      
4956                    
4957      
4958                    
4959      
4960                    
4961      
4962                    
4963      
4964                    
4965                      
4966                      <div class="sk-drawer-group">
4967                        <button type="button" data-sk-group-toggle>
4968                          <span>شعر و طنز</span>
4969                          <i class="bi bi-chevron-left sk-chevron" aria-hidden="true"></i>
4970                </button>
4971                        <ul class="sk-drawer-links">
4972                          
4973                            
4974                
4975                            
4976                
4977                            
4978                
4979                            
4980                
4981                            
4982                
4983                            
4984                
4985                            
4986                
4987                            
4988                
4989                            
4990                
4991                            
4992                
4993                            
4994                
4995                            
4996                
4997                            
4998                              <li>
4999                                <a href="/category/شعر-کودک" data-sk-drawer-close-nav>شعر کودک</a>
5000                              </li>
5001                            
5002                
5003                            
5004                              <li>
5005                                <a href="/category/شعر-نوجوان" data-sk-drawer-close-nav>شعر نوجوان</a>
5006                              </li>
5007                            
5008                
5009                            
5010                              <li>
5011                                <a href="/category/طنز-کودک-و-نوجوان" data-sk-drawer-close-nav>طنز کودک و نوجوان</a>
5012                              </li>
5013                            
5014                
5015                            
5016                
5017                            
5018                
5019                            
5020                
5021                            
5022                
5023                            
5024                
5025                            
5026                
5027                            
5028                
5029                            
5030                
5031                        </ul>
5032            </div>
5033          
5034      
5035                    
5036      
5037                    
5038      
5039                    
5040                      
5041                      <div class="sk-drawer-group">
5042                        <button type="button" data-sk-group-toggle>
5043                          <span>آموزشی و فرهنگی</span>
5044                          <i class="bi bi-chevron-left sk-chevron" aria-hidden="true"></i>
5045                </button>
5046                        <ul class="sk-drawer-links">
5047                          
5048                            
5049                
5050                            
5051                
5052                            
5053                
5054                            
5055                
5056                            
5057                
5058                            
5059                
5060                            
5061                
5062                            
5063                
5064                            
5065                
5066                            
5067                
5068                            
5069                
5070                            
5071                
5072                            
5073                
5074                            
5075                
5076                            
5077                
5078                            
5079                              <li>
5080                                <a href="/category/دایرة%E2%80%8Cالمعارف---علمی" data-sk-drawer-close-nav>دایره المعارف و علمی</a>
5081                              </li>
5082                            
5083                
5084                            
5085                              <li>
5086                                <a href="/category/مهارتهای-زندگی" data-sk-drawer-close-nav>مهارت‌های زندگی</a>
5087                              </li>
5088                            
5089                
5090                            
5091                              <li>
5092                                <a href="/category/تاریخ---فلسفه" data-sk-drawer-close-nav>تاریخ و فلسفه</a>
5093                              </li>
5094                            
5095                
5096                            
5097                              <li>
5098                                <a href="/category/ادبیات-کهن-فارسی" data-sk-drawer-close-nav>ادبیات کهن فارسی</a>
5099                              </li>
5100                            
5101                
5102                            
5103                              <li>
5104                                <a href="/category/زندگی%E2%80%8Cنامه" data-sk-drawer-close-nav>زندگینامه</a>
5105                              </li>
5106                            
5107                
5108                            
5109                              <li>
5110                                <a href="/category/مذهبی" data-sk-drawer-close-nav>مذهبی</a>
5111                              </li>
5112                            
5113                
5114                            
5115                
5116                            
5117                
5118                        </ul>
5119            </div>
5120          
5121      
5122                    
5123      
5124                    
5125      
5126                    
5127      
5128                    
5129      
5130                    
5131      
5132                    
5133                      
5134                      <div class="sk-drawer-group">
5135                        <button type="button" data-sk-group-toggle>
5136                          <span>زبان و نشریات</span>
5137                          <i class="bi bi-chevron-left sk-chevron" aria-hidden="true"></i>
5138                </button>
5139                        <ul class="sk-drawer-links">
5140                          
5141                            
5142                
5143                            
5144                
5145                            
5146                
5147                            
5148                
5149                            
5150                
5151                            
5152                
5153                            
5154                
5155                            
5156                
5157                            
5158                
5159                            
5160                
5161                            
5162                
5163                            
5164                
5165                            
5166                
5167                            
5168                
5169                            
5170                
5171                            
5172                
5173                            
5174                
5175                            
5176                
5177                            
5178                
5179                            
5180                
5181                            
5182                
5183                            
5184                              <li>
5185                                <a href="/category/زبان%E2%80%8Cهای-خارجی" data-sk-drawer-close-nav>زبان‌های خارجی</a>
5186                              </li>
5187                            
5188                
5189                            
5190                              <li>
5191                                <a href="/category/نشریات-کودک" data-sk-drawer-close-nav>نشریات کودک</a>
5192                              </li>
5193                            
5194                
5195                        </ul>
5196            </div>
5197          
5198      
5199                    
5200      
5201                
5202              </div>
5203            </li>
5204            
5205                
5206            
5207            
5208            
5209            <li class="sk-drawer-cat">
5210              <button type="button" data-sk-cat-toggle>
5211            <span>نوشت افزار</span>
5212                <i class="bi bi-chevron-left sk-chevron" aria-hidden="true"></i>
5213          </button>
5214              <div class="sk-drawer-groups">
5215                
5216                  
5217                  
5218                    
5219                      
5220                      <div class="sk-drawer-group">
5221                        <button type="button" data-sk-group-toggle>
5222                          <span>نوشت‌افزار عمومی و مدرسه‌ای</span>
5223                          <i class="bi bi-chevron-left sk-chevron" aria-hidden="true"></i>
5224                </button>
5225                        <ul class="sk-drawer-links">
5226                          
5227                            
5228                              <li>
5229                                <a href="/category/خودکار-و-روان%E2%80%8Cنویس" data-sk-drawer-close-nav>خودکار و روان‌نویس</a>
5230                              </li>
5231                            
5232                
5233                            
5234                              <li>
5235                                <a href="/category/مداد-نوکی-و-نوک" data-sk-drawer-close-nav>مداد نوکی و نوک</a>
5236                              </li>
5237                            
5238                
5239                            
5240                              <li>
5241                                <a href="/category/مداد-و-سرمدادی" data-sk-drawer-close-nav>مداد و سرمدادی</a>
5242                              </li>
5243                            
5244                
5245                            
5246                              <li>
5247                                <a href="/category/ماژیک-و-هایلایتر" data-sk-drawer-close-nav>ماژیک و هایلایتر</a>
5248                              </li>
5249                            
5250                
5251                            
5252                              <li>
5253                                <a href="/category/پاک%E2%80%8Cکن" data-sk-drawer-close-nav>پاک‌کن</a>
5254                              </li>
5255                            
5256                
5257                            
5258                              <li>
5259                                <a href="/category/تراش" data-sk-drawer-close-nav>تراش</a>
5260                              </li>
5261                            
5262                
5263                            
5264                              <li>
5265                                <a href="/category/غلط%E2%80%8Cگیر" data-sk-drawer-close-nav>غلط‌گیر</a>
5266                              </li>
5267                            
5268                
5269                            
5270                              <li>
5271                                <a href="/category/خط-کش-دانش-آموزی" data-sk-drawer-close-nav>خط‌کش دانش‌آموزی</a>
5272                              </li>
5273                            
5274                
5275                            
5276                              <li>
5277                                <a href="/category/پرگار-دانش%E2%80%8Cآموزی" data-sk-drawer-close-nav>پرگار دانش‌آموزی</a>
5278                              </li>
5279                            
5280                
5281                            
5282                
5283                            
5284                
5285                            
5286                
5287                            
5288                
5289                            
5290                
5291                            
5292                
5293                            
5294                
5295                            
5296                
5297                            
5298                
5299                            
5300                
5301                            
5302                
5303                            
5304                
5305                            
5306                
5307                            
5308                
5309                            
5310                
5311                            
5312                
5313                            
5314                
5315                            
5316                
5317                            
5318                
5319                            
5320                
5321                            
5322                
5323                            
5324                
5325                            
5326                
5327                            
5328                
5329                            
5330                
5331                            
5332                
5333                            
5334                
5335                            
5336                
5337                            
5338                
5339                            
5340                              <li>
5341                                <a href="/category/ظرف-و-لیوان-مدرسه" data-sk-drawer-close-nav>ظرف غذا و لیوان و قمقمه</a>
5342                              </li>
5343                            
5344                
5345                        </ul>
5346            </div>
5347          
5348      
5349                    
5350      
5351                    
5352      
5353                    
5354      
5355                    
5356      
5357                    
5358      
5359                    
5360      
5361                    
5362      
5363                    
5364      
5365                    
5366                      
5367                      <div class="sk-drawer-group">
5368                        <button type="button" data-sk-group-toggle>
5369                          <span>لوازم طراحی و نقاشی</span>
5370                          <i class="bi bi-chevron-left sk-chevron" aria-hidden="true"></i>
5371                </button>
5372                        <ul class="sk-drawer-links">
5373                          
5374                            
5375                
5376                            
5377                
5378                            
5379                
5380                            
5381                
5382                            
5383                
5384                            
5385                
5386                            
5387                
5388                            
5389                
5390                            
5391                
5392                            
5393                              <li>
5394                                <a href="/category/مداد-رنگی" data-sk-drawer-close-nav>مداد رنگی</a>
5395                              </li>
5396                            
5397                
5398                            
5399                              <li>
5400                                <a href="/category/پاستل-و-مداد-شمعی" data-sk-drawer-close-nav>پاستل و مداد شمعی</a>
5401                              </li>
5402                            
5403                
5404                            
5405                              <li>
5406                                <a href="/category/آبرنگ" data-sk-drawer-close-nav>آبرنگ</a>
5407                              </li>
5408                            
5409                
5410                            
5411                              <li>
5412                                <a href="/category/گواش" data-sk-drawer-close-nav>گواش</a>
5413                              </li>
5414                            
5415                
5416                            
5417                              <li>
5418                                <a href="/category/رنگ" data-sk-drawer-close-nav>رنگ</a>
5419                              </li>
5420                            
5421                
5422                            
5423                              <li>
5424                                <a href="/category/قلم%E2%80%8Cمو" data-sk-drawer-close-nav>قلم‌مو</a>
5425                              </li>
5426                            
5427                
5428                            
5429                              <li>
5430                                <a href="/category/شابلون" data-sk-drawer-close-nav>شابلون</a>
5431                              </li>
5432                            
5433                
5434                            
5435                              <li>
5436                                <a href="/category/بوم-و-سه-پایه" data-sk-drawer-close-nav>بوم و سه‌پایه</a>
5437                              </li>
5438                            
5439                
5440                            
5441                
5442                            
5443                
5444                            
5445                
5446                            
5447                
5448                            
5449                
5450                            
5451                
5452                            
5453                
5454                            
5455                
5456                            
5457                
5458                            
5459                
5460                            
5461                
5462                            
5463                
5464                            
5465                
5466                            
5467                
5468                            
5469                
5470                            
5471                
5472                            
5473                
5474                            
5475                
5476                            
5477                
5478                            
5479                
5480                            
5481                
5482                            
5483                
5484                        </ul>
5485            </div>
5486          
5487      
5488                    
5489      
5490                    
5491      
5492                    
5493      
5494                    
5495      
5496                    
5497      
5498                    
5499      
5500                    
5501      
5502                    
5503                      
5504                      <div class="sk-drawer-group">
5505                        <button type="button" data-sk-group-toggle>
5506                          <span>لوازم اداری</span>
5507                          <i class="bi bi-chevron-left sk-chevron" aria-hidden="true"></i>
5508                </button>
5509                        <ul class="sk-drawer-links">
5510                          
5511                            
5512                
5513                            
5514                
5515                            
5516                
5517                            
5518                
5519                            
5520                
5521                            
5522                
5523                            
5524                
5525                            
5526                
5527                            
5528                
5529                            
5530                
5531                            
5532                
5533                            
5534                
5535                            
5536                
5537                            
5538                
5539                            
5540                
5541                            
5542                
5543                            
5544                
5545                            
5546                              <li>
5547                                <a href="/category/چسب-و-پایه-چسب" data-sk-drawer-close-nav>چسب و پایه‌ چسب</a>
5548                              </li>
5549                            
5550                
5551                            
5552                              <li>
5553                                <a href="/category/منگنه-و-پانچ" data-sk-drawer-close-nav>منگنه و پانچ</a>
5554                              </li>
5555                            
5556                
5557                            
5558                              <li>
5559                                <a href="/category/کاتر-و-قیچی" data-sk-drawer-close-nav>کاتر و قیچی</a>
5560                              </li>
5561                            
5562                
5563                            
5564                              <li>
5565                                <a href="/category/ذره-بین" data-sk-drawer-close-nav>ذره‌بین</a>
5566                              </li>
5567                            
5568                
5569                            
5570                              <li>
5571                                <a href="/category/ماشین-حساب" data-sk-drawer-close-nav>ماشین حساب</a>
5572                              </li>
5573                            
5574                
5575                            
5576                              <li>
5577                                <a href="/category/لوازم-بایگانی" data-sk-drawer-close-nav>ابزار بایگانی</a>
5578                              </li>
5579                            
5580                
5581                            
5582                              <li>
5583                                <a href="/category/ست-اداری" data-sk-drawer-close-nav>ست اداری</a>
5584                              </li>
5585                            
5586                
5587                            
5588                              <li>
5589                                <a href="/category/سایر-لوازم-اداری" data-sk-drawer-close-nav>سایر لوازم اداری</a>
5590                              </li>
5591                            
5592                
5593                            
5594                
5595                            
5596                
5597                            
5598                
5599                            
5600                
5601                            
5602                
5603                            
5604                
5605                            
5606                
5607                            
5608                
5609                            
5610                
5611                            
5612                
5613                            
5614                
5615                            
5616                
5617                            
5618                              <li>
5619                                <a href="/category/دیجیتال" data-sk-drawer-close-nav>دیجیتال</a>
5620                              </li>
5621                            
5622                
5623                            
5624                
5625                        </ul>
5626            </div>
5627          
5628      
5629                    
5630      
5631                    
5632      
5633                    
5634      
5635                    
5636      
5637                    
5638      
5639                    
5640      
5641                    
5642      
5643                    
5644                      
5645                      <div class="sk-drawer-group">
5646                        <button type="button" data-sk-group-toggle>
5647                          <span>دفتر، کاغذ و مقوا</span>
5648                          <i class="bi bi-chevron-left sk-chevron" aria-hidden="true"></i>
5649                </button>
5650                        <ul class="sk-drawer-links">
5651                          
5652                            
5653                
5654                            
5655                
5656                            
5657                
5658                            
5659                
5660                            
5661                
5662                            
5663                
5664                            
5665                
5666                            
5667                
5668                            
5669                
5670                            
5671                
5672                            
5673                
5674                            
5675                
5676                            
5677                
5678                            
5679                
5680                            
5681                
5682                            
5683                
5684                            
5685                
5686                            
5687                
5688                            
5689                
5690                            
5691                
5692                            
5693                
5694                            
5695                
5696                            
5697                
5698                            
5699                
5700                            
5701                
5702                            
5703                              <li>
5704                                <a href="/category/دفتر-مشق-و-یادداشت" data-sk-drawer-close-nav>دفتر</a>
5705                              </li>
5706                            
5707                
5708                            
5709                              <li>
5710                                <a href="/category/دفتر-برنامه-ریزی" data-sk-drawer-close-nav>دفتر برنامه‌ریزی (پلنر)</a>
5711                              </li>
5712                            
5713                
5714                            
5715                              <li>
5716                                <a href="/category/دفتر-طراحی-و-خوشنویسی" data-sk-drawer-close-nav>دفتر طراحی و خوشنویسی</a>
5717                              </li>
5718                            
5719                
5720                            
5721                              <li>
5722                                <a href="/category/یادداشت-چسبدار-(پست%E2%80%8Cایت)" data-sk-drawer-close-nav>یادداشت چسبدار (پست‌ایت)</a>
5723                              </li>
5724                            
5725                
5726                            
5727                
5728                            
5729                
5730                            
5731                
5732                            
5733                
5734                            
5735                
5736                            
5737                
5738                            
5739                
5740                            
5741                
5742                            
5743                
5744                            
5745                
5746                        </ul>
5747            </div>
5748          
5749      
5750                    
5751      
5752                    
5753      
5754                    
5755      
5756                    
5757                      
5758                      <div class="sk-drawer-group">
5759                        <button type="button" data-sk-group-toggle>
5760                          <span>کیف، کوله‌پشتی و جامدادی</span>
5761                          <i class="bi bi-chevron-left sk-chevron" aria-hidden="true"></i>
5762                </button>
5763                        <ul class="sk-drawer-links">
5764                          
5765                            
5766                
5767                            
5768                
5769                            
5770                
5771                            
5772                
5773                            
5774                
5775                            
5776                
5777                            
5778                
5779                            
5780                
5781                            
5782                
5783                            
5784                
5785                            
5786                
5787                            
5788                
5789                            
5790                
5791                            
5792                
5793                            
5794                
5795                            
5796                
5797                            
5798                
5799                            
5800                
5801                            
5802                
5803                            
5804                
5805                            
5806                
5807                            
5808                
5809                            
5810                
5811                            
5812                
5813                            
5814                
5815                            
5816                
5817                            
5818                
5819                            
5820                
5821                            
5822                
5823                            
5824                              <li>
5825                                <a href="/category/جامدادی" data-sk-drawer-close-nav>جامدادی</a>
5826                              </li>
5827                            
5828                
5829                            
5830                              <li>
5831                                <a href="/category/کیف-و-کوله-مدرسه" data-sk-drawer-close-nav>کیف و کوله‌پشتی</a>
5832                              </li>
5833                            
5834                
5835                            
5836                
5837                            
5838                
5839                            
5840                
5841                            
5842                
5843                            
5844                
5845                            
5846                
5847                            
5848                
5849                            
5850                
5851                        </ul>
5852            </div>
5853          
5854      
5855                    
5856      
5857                    
5858                      
5859                      <div class="sk-drawer-group">
5860                        <button type="button" data-sk-group-toggle>
5861                          <span>ابزار و تجهیزات تخصصی هنری و فنی</span>
5862                          <i class="bi bi-chevron-left sk-chevron" aria-hidden="true"></i>
5863                </button>
5864                        <ul class="sk-drawer-links">
5865                          
5866                            
5867                
5868                            
5869                
5870                            
5871                
5872                            
5873                
5874                            
5875                
5876                            
5877                
5878                            
5879                
5880                            
5881                
5882                            
5883                
5884                            
5885                
5886                            
5887                
5888                            
5889                
5890                            
5891                
5892                            
5893                
5894                            
5895                
5896                            
5897                
5898                            
5899                
5900                            
5901                
5902                            
5903                
5904                            
5905                
5906                            
5907                
5908                            
5909                
5910                            
5911                
5912                            
5913                
5914                            
5915                
5916                            
5917                
5918                            
5919                
5920                            
5921                
5922                            
5923                
5924                            
5925                
5926                            
5927                
5928                            
5929                              <li>
5930                                <a href="/category/مداد-هنری" data-sk-drawer-close-nav>مداد هنری</a>
5931                              </li>
5932                            
5933                
5934                            
5935                              <li>
5936                                <a href="/category/قلم-و-مرکب" data-sk-drawer-close-nav>قلم و مرکب</a>
5937                              </li>
5938                            
5939                
5940                            
5941                              <li>
5942                                <a href="/category/ابزار-تخصصی-هنری" data-sk-drawer-close-nav>ابزار تخصصی هنری</a>
5943                              </li>
5944                            
5945                
5946                            
5947                              <li>
5948                                <a href="/category/خط-کش-و-اشل" data-sk-drawer-close-nav>خط‌کش و اشل</a>
5949                              </li>
5950                            
5951                
5952                            
5953                              <li>
5954                                <a href="/category/چراغ-مطالعه" data-sk-drawer-close-nav>چراغ مطالعه</a>
5955                              </li>
5956                            
5957                
5958                            
5959                              <li>
5960                                <a href="/category/تخته-و-میزکار" data-sk-drawer-close-nav>تخته و میزکار</a>
5961                              </li>
5962                            
5963                
5964                            
5965                
5966                            
5967                
5968                        </ul>
5969            </div>
5970          
5971      
5972                    
5973      
5974                    
5975      
5976                    
5977      
5978                    
5979      
5980                    
5981      
5982                    
5983      
5984                    
5985      
5986                
5987              </div>
5988            </li>
5989            
5990                
5991            
5992            
5993            
5994            <li class="sk-drawer-cat">
5995              <button type="button" data-sk-cat-toggle>
5996            <span>سرگرمی و خلاقیت</span>
5997                <i class="bi bi-chevron-left sk-chevron" aria-hidden="true"></i>
5998          </button>
5999              <div class="sk-drawer-groups">
6000                
6001                  
6002                  
6003                    
6004                      
6005                      <div class="sk-drawer-group">
6006                        <button type="button" data-sk-group-toggle>
6007                          <span>بازی‌های رومیزی، کارتی و دورهمی</span>
6008                          <i class="bi bi-chevron-left sk-chevron" aria-hidden="true"></i>
6009                </button>
6010                        <ul class="sk-drawer-links">
6011                          
6012                            
6013                              <li>
6014                                <a href="/category/بازی-کارتی-و-دورهمی" data-sk-drawer-close-nav>بازی کارتی و دورهمی</a>
6015                              </li>
6016                            
6017                
6018                            
6019                              <li>
6020                                <a href="/category/بازی-استراتژی" data-sk-drawer-close-nav>بازی استراتژی</a>
6021                              </li>
6022                            
6023                
6024                            
6025                              <li>
6026                                <a href="/category/بازی-معمایی" data-sk-drawer-close-nav>بازی معمایی</a>
6027                              </li>
6028                            
6029                
6030                            
6031                              <li>
6032                                <a href="/category/پازل" data-sk-drawer-close-nav>پازل</a>
6033                              </li>
6034                            
6035                
6036                            
6037                              <li>
6038                                <a href="/category/جورچین-و-پازل-کودک" data-sk-drawer-close-nav>جورچین و پازل کودک</a>
6039                              </li>
6040                            
6041                
6042                            
6043                
6044                            
6045                
6046                            
6047                
6048                            
6049                
6050                            
6051                
6052                            
6053                
6054                            
6055                
6056                            
6057                
6058                            
6059                
6060                            
6061                
6062                            
6063                
6064                            
6065                
6066                        </ul>
6067            </div>
6068          
6069      
6070                    
6071      
6072                    
6073      
6074                    
6075      
6076                    
6077      
6078                    
6079                      
6080                      <div class="sk-drawer-group">
6081                        <button type="button" data-sk-group-toggle>
6082                          <span>کاردستی و مهارتی</span>
6083                          <i class="bi bi-chevron-left sk-chevron" aria-hidden="true"></i>
6084                </button>
6085                        <ul class="sk-drawer-links">
6086                          
6087                            
6088                
6089                            
6090                
6091                            
6092                
6093                            
6094                
6095                            
6096                
6097                            
6098                              <li>
6099                                <a href="/category/کاردستی" data-sk-drawer-close-nav>کاردستی</a>
6100                              </li>
6101                            
6102                
6103                            
6104                              <li>
6105                                <a href="/category/خمیربازی" data-sk-drawer-close-nav>خمیربازی</a>
6106                              </li>
6107                            
6108                
6109                            
6110                              <li>
6111                                <a href="/category/رنگ-انگشتی" data-sk-drawer-close-nav>رنگ انگشتی</a>
6112                              </li>
6113                            
6114                
6115                            
6116                              <li>
6117                                <a href="/category/لگو-و-ساختنی" data-sk-drawer-close-nav>لگو و ساختنی</a>
6118                              </li>
6119                            
6120                
6121                            
6122                              <li>
6123                                <a href="/category/ماکت-سازی" data-sk-drawer-close-nav>ماکت‌سازی</a>
6124                              </li>
6125                            
6126                
6127                            
6128                
6129                            
6130                
6131                            
6132                
6133                            
6134                
6135                            
6136                
6137                            
6138                
6139                            
6140                
6141                        </ul>
6142            </div>
6143          
6144      
6145                    
6146      
6147                    
6148      
6149                    
6150      
6151                    
6152      
6153                    
6154                      
6155                      <div class="sk-drawer-group">
6156                        <button type="button" data-sk-group-toggle>
6157                          <span>آموزشی و فکری</span>
6158                          <i class="bi bi-chevron-left sk-chevron" aria-hidden="true"></i>
6159                </button>
6160                        <ul class="sk-drawer-links">
6161                          
6162                            
6163                
6164                            
6165                
6166                            
6167                
6168                            
6169                
6170                            
6171                
6172                            
6173                
6174                            
6175                
6176                            
6177                
6178                            
6179                
6180                            
6181                
6182                            
6183                              <li>
6184                                <a href="/category/آموزشی-فکری-مهارتی" data-sk-drawer-close-nav>آموزش فکری مهارتی</a>
6185                              </li>
6186                            
6187                
6188                            
6189                              <li>
6190                                <a href="/category/وسایل-سرگرمی" data-sk-drawer-close-nav>وسایل سرگرمی</a>
6191                              </li>
6192                            
6193                
6194                            
6195                
6196                            
6197                
6198                            
6199                
6200                            
6201                
6202                            
6203                
6204                        </ul>
6205            </div>
6206          
6207      
6208                    
6209      
6210                    
6211                      
6212                      <div class="sk-drawer-group">
6213                        <button type="button" data-sk-group-toggle>
6214                          <span>اسباب‌بازی و فیگور</span>
6215                          <i class="bi bi-chevron-left sk-chevron" aria-hidden="true"></i>
6216                </button>
6217                        <ul class="sk-drawer-links">
6218                          
6219                            
6220                
6221                            
6222                
6223                            
6224                
6225                            
6226                
6227                            
6228                
6229                            
6230                
6231                            
6232                
6233                            
6234                
6235                            
6236                
6237                            
6238                
6239                            
6240                
6241                            
6242                
6243                            
6244                              <li>
6245                                <a href="/category/عروسک-و-فیگور" data-sk-drawer-close-nav>فیگور</a>
6246                              </li>
6247                            
6248                
6249                            
6250                              <li>
6251                                <a href="/category/تفنگ-بازی" data-sk-drawer-close-nav>تفنگ بازی</a>
6252                              </li>
6253                            
6254                
6255                            
6256                              <li>
6257                                <a href="/category/ماشین-بازی" data-sk-drawer-close-nav>ماشین‌بازی</a>
6258                              </li>
6259                            
6260                
6261                            
6262                              <li>
6263                                <a href="/category/ست‌های-بازی" data-sk-drawer-close-nav>ست‌های بازی</a>
6264                              </li>
6265                            
6266                
6267                            
6268                              <li>
6269                                <a href="/category/سایر-اسباب‌بازی‌ها" data-sk-drawer-close-nav>سایر اسباب‌بازی‌ها</a>
6270                              </li>
6271                            
6272                
6273                        </ul>
6274            </div>
6275          
6276      
6277                    
6278      
6279                    
6280      
6281                    
6282      
6283                    
6284      
6285                
6286              </div>
6287            </li>
6288            
6289                
6290            
6291            
6292            
6293            <li class="sk-drawer-cat">
6294              <button type="button" data-sk-cat-toggle>
6295            <span>صنایع دستی</span>
6296                <i class="bi bi-chevron-left sk-chevron" aria-hidden="true"></i>
6297          </button>
6298              <div class="sk-drawer-groups">
6299                
6300                  
6301                  
6302                    
6303                      
6304                      <div class="sk-drawer-group">
6305                        <button type="button" data-sk-group-toggle>
6306                          <span>دکوراسیون و تزیینات منزل</span>
6307                          <i class="bi bi-chevron-left sk-chevron" aria-hidden="true"></i>
6308                </button>
6309                        <ul class="sk-drawer-links">
6310                          
6311                            
6312                              <li>
6313                                <a href="/category/آباژور-و-روشنایی" data-sk-drawer-close-nav>آباژور و روشنایی</a>
6314                              </li>
6315                            
6316                
6317                            
6318                              <li>
6319                                <a href="/category/دیوارکوب-(تابلو---آینه-کاشی-جاکلیدی)" data-sk-drawer-close-nav>دیوارکوب</a>
6320                              </li>
6321                            
6322                
6323                            
6324                              <li>
6325                                <a href="/category/رومیزی-رانر-کوسن" data-sk-drawer-close-nav>رومیزی، رانر، کوسن</a>
6326                              </li>
6327                            
6328                
6329                            
6330                              <li>
6331                                <a href="/category/مجسمه-و-تندیس" data-sk-drawer-close-nav>مجسمه و تندیس</a>
6332                              </li>
6333                            
6334                
6335                            
6336                              <li>
6337                                <a href="/category/گلیم" data-sk-drawer-close-nav>گلیم</a>
6338                              </li>
6339                            
6340                
6341                            
6342                              <li>
6343                                <a href="/category/شمع-و-شمعدان-و-عود-و-وارمر" data-sk-drawer-close-nav>شمع و شمعدان و عود و وارمر</a>
6344                              </li>
6345                            
6346                
6347                            
6348                              <li>
6349                                <a href="/category/دکوراتیو" data-sk-drawer-close-nav>دکوراتیو</a>
6350                              </li>
6351                            
6352                
6353                            
6354                              <li>
6355                                <a href="/category/گوی-و-موزیک-باکس" data-sk-drawer-close-nav>گوی و موزیک باکس</a>
6356                              </li>
6357                            
6358                
6359                            
6360                
6361                            
6362                
6363                            
6364                
6365                            
6366                
6367                        </ul>
6368            </div>
6369          
6370      
6371                    
6372      
6373                    
6374      
6375                    
6376      
6377                    
6378      
6379                    
6380      
6381                    
6382      
6383                    
6384      
6385                    
6386                      
6387                      <div class="sk-drawer-group">
6388                        <button type="button" data-sk-group-toggle>
6389                          <span>مد و اکسسوری</span>
6390                          <i class="bi bi-chevron-left sk-chevron" aria-hidden="true"></i>
6391                </button>
6392                        <ul class="sk-drawer-links">
6393                          
6394                            
6395                
6396                            
6397                
6398                            
6399                
6400                            
6401                
6402                            
6403                
6404                            
6405                
6406                            
6407                
6408                            
6409                
6410                            
6411                              <li>
6412                                <a href="/category/کیف-چرم-و-پارچه" data-sk-drawer-close-nav>کیف چرم و پارچه</a>
6413                              </li>
6414                            
6415                
6416                            
6417                              <li>
6418                                <a href="/category/زیورآلات" data-sk-drawer-close-nav>زیورآلات</a>
6419                              </li>
6420                            
6421                
6422                            
6423                
6424                            
6425                
6426                        </ul>
6427            </div>
6428          
6429      
6430                    
6431      
6432                    
6433                      
6434                      <div class="sk-drawer-group">
6435                        <button type="button" data-sk-group-toggle>
6436                          <span>ظروف</span>
6437                          <i class="bi bi-chevron-left sk-chevron" aria-hidden="true"></i>
6438                </button>
6439                        <ul class="sk-drawer-links">
6440                          
6441                            
6442                
6443                            
6444                
6445                            
6446                
6447                            
6448                
6449                            
6450                
6451                            
6452                
6453                            
6454                
6455                            
6456                
6457                            
6458                
6459                            
6460                
6461                            
6462                              <li>
6463                                <a href="/category/ماگ-و-لیوان-و-فنجان" data-sk-drawer-close-nav>ماگ، لیوان و فنجان</a>
6464                              </li>
6465                            
6466                
6467                            
6468                              <li>
6469                                <a href="/category/ظروف" data-sk-drawer-close-nav>همه ظروف</a>
6470                              </li>
6471                            
6472                
6473                        </ul>
6474            </div>
6475          
6476      
6477                    
6478      
6479                
6480              </div>
6481            </li>
6482            
6483                
6484            
6485            
6486            
6487            <li class="sk-drawer-cat sk-drawer-cat--link">
6488              <a href="/فروش-سازمانی-شهرکتاب-انلاین" data-sk-drawer-close-nav class="sk-drawer-cat-link">
6489                <span>کارت هدیه</span>
6490                <i class="bi bi-chevron-left sk-chevron" aria-hidden="true"></i>
6491              </a>
6492                    </li>
6493                  
6494                
6495            
6496            
6497            
6498            <li class="sk-drawer-cat sk-drawer-cat--link">
6499              <a href="/mag" data-sk-drawer-close-nav class="sk-drawer-cat-link">
6500                <span>مجله‌ی شهرکتاب آنلاین</span>
6501                <i class="bi bi-chevron-left sk-chevron" aria-hidden="true"></i>
6502              </a>
6503                    </li>
6504                  
6505                
6506            
6507            
6508            
6509            <li class="sk-drawer-cat sk-drawer-cat--link">
6510              <a href="/contact" data-sk-drawer-close-nav class="sk-drawer-cat-link">
6511                <span>تماس با ما</span>
6512                <i class="bi bi-chevron-left sk-chevron" aria-hidden="true"></i>
6513              </a>
6514                    </li>
6515                  
6516                
6517        
6518      </ul>
6519
6520      <div class="sk-drawer-label">صفحات</div>
6521      <ul class="sk-drawer-pages">
6522        <li><a href="/blog" data-sk-drawer-close-nav>مجله</a></li>
6523        <li><a href="/about" data-sk-drawer-close-nav>درباره ما</a></li>
6524        <li><a href="/help" data-sk-drawer-close-nav>راهنمای خرید</a></li>
6525        <li><a href="/corporate-gift" data-sk-drawer-close-nav>کارت هدیه سازمانی</a></li>
6526        <li><a href="/contact" data-sk-drawer-close-nav>تماس با ما</a></li>
6527              </ul>
6528            </div>
6529  </aside>
6530</div>
6531
6532
6533<nav class="sk-app-nav" aria-label="ناوبری پایین" data-sk-app-nav>
6534  <a class="sk-app-nav__item" href="/" data-sk-nav-match="home">
6535    <i class="bi bi-house" aria-hidden="true"></i>
6536    <span>خانه</span>
6537  </a>
6538  <button type="button" class="sk-app-nav__item" data-sk-app-nav-categories aria-label="منو">
6539    <i class="bi bi-list" aria-hidden="true"></i>
6540    <span>منو</span>
6541  </button>
6542  <a class="sk-app-nav__item rodin-nav-cart-link" href="/cart" data-sk-nav-match="cart" data-rodin-cart-animate>
6543    <span class="sk-app-nav__cart-wrap">
6544      <i class="bi bi-bag" aria-hidden="true"></i>
6545      <span class="sk-app-nav__badge sk-cart-badge rodin-nav-cart-badge--empty" data-rodin-cart-badge aria-hidden="true" aria-live="polite"></span>
6546    </span>
6547    <span>سبد</span>
6548  </a>
6549  <a class="sk-app-nav__item" href="/my-account-page?section=wishlist" data-sk-nav-match="wishlist">
6550    <i class="bi bi-heart" aria-hidden="true"></i>
6551    <span>علاقه‌مندی</span>
6552  </a>
6553  <a class="sk-app-nav__item" href="/login" data-sk-nav-match="account" data-desktop-action="login">
6554    <i class="bi bi-person" aria-hidden="true"></i>
6555    <span>ورود</span>
6556  </a>
6557</nav>
6558
6559<div style="display:none;" id="rodin-login-hook">
6560
6561    
6562    
6563    <li class="nav-item">
6564    <a class="nav-link btn-login-area kara-login d-flex align-items-center" href="/login"><i class="bi bi-person"></i></a>
6565    </li>
6566    
6567
6568</div>
6569
6570<script src="/assets/rodin_services/js/rodin_navbar_search_dynamic.js"></script>
vendor: 1 bytes, line 6570
6570
6571<script>
6572  (function () {
6573  if (window.__skHeaderInit) return;
6574  window.__skHeaderInit = true;
6575
6576    const body = document.body;
6577  const skHeaderEl = document.getElementById("skHeader");
6578  const skHeaderSpacer = document.getElementById("skHeaderSpacer");
6579  function syncHeaderSpacer() {
6580    if (skHeaderEl && skHeaderSpacer) {
6581      skHeaderSpacer.style.height = skHeaderEl.offsetHeight + "px";
6582    }
6583  }
6584  syncHeaderSpacer();
6585  window.addEventListener("resize", syncHeaderSpacer);
6586  if (skHeaderEl && typeof ResizeObserver !== "undefined") {
6587    new ResizeObserver(syncHeaderSpacer).observe(skHeaderEl);
6588  }
6589  const drawer = document.getElementById("sk-drawer");
6590  const menuOpen = document.getElementById("sk-menu-open");
6591    const desktopCatToggle = document.getElementById("rodin-desktop-category-toggle");
6592    const desktopCatPanel = document.getElementById("rodin-desktop-category-panel");
6593  const desktopMask = document.getElementById("sk-desktop-mask");
6594  const menubar = document.getElementById("sk-menubar");
6595  const desktopButtonsRoot = document.getElementById("rodin-desktop-topitems");
6596    const desktopSearchInput = document.getElementById("rodin-desktop-search-input");
6597    const desktopSearchDropdown = document.getElementById("rodin-desktop-search-dropdown");
6598    const desktopSearchHeadline = document.getElementById("rodin-desktop-search-headline");
6599    const desktopSearchResults = document.getElementById("rodin-desktop-search-results");
6600  const openSearch = document.getElementById("rodin-open-search");
6601  const searchOverlay = document.getElementById("rodin-search-overlay");
6602  const searchInput = document.getElementById("rodin-search-input");
6603  const loginHook = document.getElementById("rodin-login-hook");
6604  const desktopAccountMenu = document.getElementById("rodin-desktop-account-menu");
6605
6606  /* Escape overflow/sticky stacking from page wrappers */
6607  if (drawer && drawer.parentElement !== document.body) {
6608    document.body.appendChild(drawer);
6609  }
6610  if (searchOverlay && searchOverlay.parentElement !== document.body) {
6611    document.body.appendChild(searchOverlay);
6612  }
6613
6614  const loginBtns = document.querySelectorAll('[data-desktop-action="login"]');
6615
6616  function setDrawerOpen(open) {
6617    if (!drawer) return;
6618    drawer.classList.toggle("is-open", open);
6619    drawer.setAttribute("aria-hidden", open ? "false" : "true");
6620    body.classList.toggle("sk-drawer-open", open);
6621    if (menuOpen) menuOpen.setAttribute("aria-expanded", open ? "true" : "false");
6622    if (open) {
6623      closeSearchOverlay();
6624      drawer.querySelector(".sk-drawer-body")?.scrollTo(0, 0);
6625    }
6626  }
6627
6628  function closeDrawer() {
6629    setDrawerOpen(false);
6630  }
6631
6632  function openSearchOverlay() {
6633    if (!searchOverlay) return;
6634    closeDrawer();
6635    hideDesktopSearch();
6636    searchOverlay.classList.add("is-open");
6637    searchOverlay.setAttribute("aria-hidden", "false");
6638    body.style.overflow = "hidden";
6639    if (searchInput) setTimeout(() => searchInput.focus(), 120);
6640  }
6641
6642  function closeSearchOverlay() {
6643    if (!searchOverlay) return;
6644    searchOverlay.classList.remove("is-open");
6645    searchOverlay.setAttribute("aria-hidden", "true");
6646    if (!drawer?.classList.contains("is-open")) {
6647      body.style.overflow = "";
6648    }
6649  }
6650
6651  function openDesktopCategory() {
6652    if (!desktopCatPanel) return;
6653    hideDesktopSearch();
6654    desktopCatPanel.classList.add("show");
6655    desktopMask?.classList.add("show");
6656  }
6657
6658  function closeDesktopCategory() {
6659    desktopCatPanel?.classList.remove("show");
6660    desktopMask?.classList.remove("show");
6661    desktopButtonsRoot?.querySelectorAll(".rodin-topitem-btn").forEach((b) => b.classList.remove("is-active"));
6662    desktopCatPanel?.querySelectorAll(".rodin-detail-panel").forEach((p) => p.classList.remove("active"));
6663    desktopCatPanel?.querySelector(".sk-mega-panel-inner")?.classList.remove("is-tree");
6664  }
6665
6666  let desktopCloseT = null;
6667  function scheduleDesktopClose() {
6668    if (desktopCloseT) clearTimeout(desktopCloseT);
6669    desktopCloseT = setTimeout(closeDesktopCategory, 180);
6670  }
6671  function cancelDesktopClose() {
6672    if (desktopCloseT) clearTimeout(desktopCloseT);
6673    desktopCloseT = null;
6674  }
6675
6676  function activateTreeRoot(topIndex, rootIndex) {
6677    if (topIndex == null || rootIndex == null) return;
6678    const detailPanel = desktopCatPanel?.querySelector('.rodin-detail-panel[data-top-panel="' + topIndex + '"]');
6679    if (!detailPanel) return;
6680
6681    detailPanel.querySelectorAll(".rodin-tree-root-btn").forEach((btn) => {
6682      const on = String(rootIndex) === btn.dataset.rootIndex;
6683      btn.classList.toggle("active", on);
6684      btn.setAttribute("aria-selected", on ? "true" : "false");
6685    });
6686
6687    detailPanel.querySelectorAll(".rodin-root-panel, .sk-tree-root-panel").forEach((rootPanel) => {
6688      const on = String(rootIndex) === rootPanel.dataset.treeRootPanel;
6689      rootPanel.classList.toggle("active", on);
6690      rootPanel.classList.toggle("rodin-hidden-panel", !on);
6691      if (on) rootPanel.removeAttribute("hidden");
6692      else rootPanel.setAttribute("hidden", "");
6693    });
6694  }
6695
6696  function activateTopPanel(index) {
6697    const panels = desktopCatPanel?.querySelectorAll(".rodin-detail-panel") || [];
6698    panels.forEach((p) => p.classList.toggle("active", String(index) === p.dataset.topPanel));
6699    desktopButtonsRoot?.querySelectorAll(".rodin-topitem-btn").forEach((b) => {
6700      b.classList.toggle("is-active", String(index) === b.dataset.topIndex);
6701    });
6702    const panel = desktopCatPanel?.querySelector('.rodin-detail-panel[data-top-panel="' + index + '"]');
6703    const isTree = !!panel?.querySelector(".sk-tree-layout");
6704    desktopCatPanel?.querySelector(".sk-mega-panel-inner")?.classList.toggle("is-tree", isTree);
6705    const firstRoot = panel?.querySelector(".rodin-tree-root-btn");
6706    if (firstRoot) {
6707      const activeRoot = panel.querySelector(".rodin-tree-root-btn.active") || firstRoot;
6708      activateTreeRoot(index, activeRoot.dataset.rootIndex);
6709    }
6710  }
6711
6712  function handleTopItem(btn) {
6713    if (btn.dataset.menuKind === "link" && btn.dataset.targetUrl) {
6714      window.location.href = btn.dataset.targetUrl;
6715      return;
6716    }
6717    activateTopPanel(btn.dataset.topIndex);
6718    openDesktopCategory();
6719  }
6720
6721  /* Init tree root panels (first root visible) */
6722  desktopCatPanel?.querySelectorAll(".rodin-detail-panel").forEach((panel) => {
6723    const firstRoot = panel.querySelector(".rodin-tree-root-btn");
6724    if (firstRoot && panel.dataset.topPanel != null) {
6725      activateTreeRoot(panel.dataset.topPanel, firstRoot.dataset.rootIndex);
6726    }
6727  });
6728
6729  desktopCatPanel?.querySelectorAll(".rodin-tree-root-btn").forEach((btn) => {
6730    btn.addEventListener("click", function (e) {
6731      e.preventDefault();
6732      e.stopPropagation();
6733      cancelDesktopClose();
6734      const topIndex = btn.dataset.topPanelRoot;
6735      activateTreeRoot(topIndex, btn.dataset.rootIndex);
6736    });
6737    btn.addEventListener("mouseenter", function () {
6738      cancelDesktopClose();
6739      const topIndex = btn.dataset.topPanelRoot;
6740      activateTreeRoot(topIndex, btn.dataset.rootIndex);
6741    });
6742  });
6743
6744  menuOpen?.addEventListener("click", function () {
6745    setDrawerOpen(!drawer?.classList.contains("is-open"));
6746  });
6747  document.querySelectorAll("[data-sk-drawer-close]").forEach((el) => {
6748    el.addEventListener("click", closeDrawer);
6749  });
6750  drawer?.addEventListener("click", function (event) {
6751    if (event.target.closest("[data-sk-drawer-close-nav]")) closeDrawer();
6752  });
6753
6754  document.querySelectorAll("[data-sk-app-nav-categories]").forEach((btn) => {
6755    btn.addEventListener("click", function () {
6756      setDrawerOpen(true);
6757    });
6758  });
6759  (function markAppNavActive() {
6760    const nav = document.querySelector("[data-sk-app-nav]");
6761    if (!nav) return;
6762    const path = (window.location.pathname || "/").replace(/\/+$/, "") || "/";
6763    const search = window.location.search || "";
6764    nav.querySelectorAll(".sk-app-nav__item").forEach((el) => el.classList.remove("is-active"));
6765    let key = "";
6766    if (path === "/") key = "home";
6767    else if (path.indexOf("/cart") === 0) key = "cart";
6768    else if (path.indexOf("/my-account-page") === 0 && search.indexOf("wishlist") !== -1) key = "wishlist";
6769    else if (path.indexOf("/my-account-page") === 0 || path.indexOf("/login") === 0) key = "account";
6770    else if (path.indexOf("/all-products") === 0) key = "categories";
6771    if (key === "categories") {
6772      nav.querySelector("[data-sk-app-nav-categories]")?.classList.add("is-active");
6773    } else if (key) {
6774      nav.querySelector('[data-sk-nav-match="' + key + '"]')?.classList.add("is-active");
6775    }
6776  })();
6777
6778  document.querySelectorAll("[data-sk-cat-toggle]").forEach((btn) => {
6779    btn.addEventListener("click", function () {
6780      const cat = btn.closest(".sk-drawer-cat");
6781      if (!cat) return;
6782      const willOpen = !cat.classList.contains("is-open");
6783      document.querySelectorAll(".sk-drawer-cat.is-open").forEach((n) => {
6784        if (n !== cat) n.classList.remove("is-open");
6785      });
6786      cat.classList.toggle("is-open", willOpen);
6787      cat.querySelectorAll(".sk-drawer-group.is-open").forEach((g) => g.classList.remove("is-open"));
6788    });
6789  });
6790
6791  document.querySelectorAll("[data-sk-group-toggle]").forEach((btn) => {
6792    btn.addEventListener("click", function () {
6793      const group = btn.closest(".sk-drawer-group");
6794      if (!group) return;
6795      const parent = group.parentElement;
6796      if (parent) {
6797        parent.querySelectorAll(".sk-drawer-group.is-open").forEach((g) => {
6798          if (g !== group) g.classList.remove("is-open");
6799        });
6800      }
6801      group.classList.toggle("is-open");
6802    });
6803  });
6804
6805  desktopCatToggle?.addEventListener("click", function () {
6806    const first = desktopButtonsRoot?.querySelector('.rodin-topitem-btn[data-menu-kind="tree"], .rodin-topitem-btn[data-menu-kind="mega"]');
6807    if (first) {
6808      handleTopItem(first);
6809    } else if (desktopCatPanel?.classList.contains("show")) {
6810      closeDesktopCategory();
6811    } else {
6812      activateTopPanel("0");
6813      openDesktopCategory();
6814    }
6815  });
6816  desktopCatToggle?.addEventListener("mouseenter", function () {
6817    cancelDesktopClose();
6818    const first = desktopButtonsRoot?.querySelector('.rodin-topitem-btn[data-menu-kind="tree"], .rodin-topitem-btn[data-menu-kind="mega"]');
6819    if (first) handleTopItem(first);
6820    else {
6821      activateTopPanel("0");
6822      openDesktopCategory();
6823    }
6824  });
6825
6826  desktopButtonsRoot?.querySelectorAll(".rodin-topitem-btn").forEach((btn) => {
6827    btn.addEventListener("click", function () {
6828      handleTopItem(btn);
6829    });
6830    btn.addEventListener("mouseenter", function () {
6831      cancelDesktopClose();
6832      if (btn.dataset.menuKind === "link") return;
6833      handleTopItem(btn);
6834    });
6835  });
6836
6837  menubar?.addEventListener("mouseleave", scheduleDesktopClose);
6838  desktopCatPanel?.addEventListener("mouseenter", cancelDesktopClose);
6839  desktopCatPanel?.addEventListener("mouseleave", scheduleDesktopClose);
6840  desktopMask?.addEventListener("click", closeDesktopCategory);
6841
6842  /* ── Account / login ── */
6843  function userIsLoggedIn() {
6844    return !!loginHook?.querySelector("#website-post-login");
6845  }
6846
6847  function isRodinSystemUser() {
6848    const postLogin = loginHook?.querySelector("#website-post-login");
6849    if (postLogin?.dataset.rodinSystemUser === "1") return true;
6850    if (postLogin?.dataset.rodinSystemUser === "0") return false;
6851    if (typeof frappe !== "undefined" && typeof frappe.get_cookie === "function") {
6852      return frappe.get_cookie("system_user") === "yes";
6853    }
6854    return document.cookie.split(";").some((part) => part.trim().startsWith("system_user=yes"));
6855  }
6856
6857  function shouldShowAccountLink(link) {
6858    if (!link.getAttribute("href")) return false;
6859    if (link.classList.contains("switch-to-desk")) return isRodinSystemUser();
6860    if (link.classList.contains("hidden")) return false;
6861    return true;
6862  }
6863
6864  function buildAccountMenu() {
6865    if (!desktopAccountMenu || !loginHook) return;
6866    const links = Array.from(loginHook.querySelectorAll("#website-post-login .dropdown-item")).filter(shouldShowAccountLink);
6867    desktopAccountMenu.innerHTML = links
6868      .map((link) => `<a href="${link.getAttribute("href")}">${link.textContent.trim()}</a>`)
6869      .join("");
6870  }
6871
6872  function goToLogin() {
6873    const loginBtn = loginHook?.querySelector(".btn-login-area, a[href*='login']");
6874    if (loginBtn) loginBtn.click();
6875    else window.location.href = "/login";
6876  }
6877
6878  function toggleDesktopAccountMenu() {
6879    if (!desktopAccountMenu || !desktopAccountMenu.innerHTML.trim()) return;
6880    hideDesktopSearch();
6881    desktopAccountMenu.classList.toggle("show");
6882  }
6883
6884  loginBtns.forEach((btn) => {
6885    btn.addEventListener("click", function () {
6886      closeDrawer();
6887      if (window.innerWidth < 992) {
6888        if (userIsLoggedIn()) {
6889          window.location.href = "/my-account-page";
6890        } else {
6891          goToLogin();
6892        }
6893        return;
6894      }
6895      if (userIsLoggedIn()) toggleDesktopAccountMenu();
6896      else goToLogin();
6897    });
6898  });
6899
6900  document.addEventListener("click", function (event) {
6901    if (!desktopAccountMenu?.classList.contains("show")) return;
6902    if (event.target.closest("#rodin-desktop-account-menu") || event.target.closest('[data-desktop-action="login"]')) return;
6903    desktopAccountMenu.classList.remove("show");
6904  });
6905
6906  buildAccountMenu();
6907  if (typeof jQuery !== "undefined") {
6908    jQuery(document).ready(buildAccountMenu);
6909    jQuery(document).on("page-change", buildAccountMenu);
6910  }
6911
6912  /* ── Desktop search ── */
6913    function normalizeQuery(query) {
6914      const fn = window.rodinNavbarNormalizeSearchQuery;
6915      if (typeof fn === "function") return fn(query);
6916      let q = (query || "").replace(/^[\s\u200c]+|[\s\u200c]+$/g, "");
6917    return q.replace(/ي/g, "ی").replace(/ك/g, "ک");
6918    }
6919
6920    function debounce(fn, delay) {
6921      let t = null;
6922    return function (...args) {
6923        clearTimeout(t);
6924        t = setTimeout(() => fn.apply(this, args), delay);
6925      };
6926    }
6927
6928    function getRecentSearches() {
6929      try {
6930        return JSON.parse(localStorage.getItem("recent_searches") || "[]").slice(-5);
6931      } catch (e) {
6932        return [];
6933      }
6934    }
6935
6936    function setRecentSearch(query) {
6937      if (!query) return;
6938      const recents = getRecentSearches();
6939      if (recents.includes(query)) return;
6940      if (recents.length >= 5) recents.shift();
6941      recents.push(query);
6942      localStorage.setItem("recent_searches", JSON.stringify(recents));
6943    }
6944
6945    function showDesktopSearch() {
6946      desktopSearchDropdown?.classList.add("show");
6947    }
6948    function hideDesktopSearch() {
6949      desktopSearchDropdown?.classList.remove("show");
6950    }
6951
6952    function setDesktopSearchHeadline(text, loading) {
6953      if (!desktopSearchHeadline) return;
6954      const safeText = String(text || "");
6955      desktopSearchHeadline.textContent = "";
6956      if (loading) {
6957        const icon = document.createElement("span");
6958        icon.className = "sk-search-loading-icon";
6959        icon.setAttribute("aria-hidden", "true");
6960        icon.innerHTML = '<i class="bi bi-arrow-repeat"></i>';
6961        const label = document.createElement("span");
6962        label.textContent = safeText;
6963        desktopSearchHeadline.appendChild(icon);
6964        desktopSearchHeadline.appendChild(label);
6965        desktopSearchHeadline.setAttribute("aria-busy", "true");
6966        return;
6967      }
6968      desktopSearchHeadline.textContent = safeText;
6969      desktopSearchHeadline.removeAttribute("aria-busy");
6970    }
6971
6972    function renderDesktopLoadingState() {
6973      if (!desktopSearchResults) return;
6974      desktopSearchResults.innerHTML =
6975        '<div class="sk-search-status" style="padding:12px 0;font-weight:500;color:#6b7280;">در حال جستجو...</div>';
6976    }
6977
6978    function renderDesktopEmptyState() {
6979      if (!desktopSearchResults) return;
6980      desktopSearchResults.innerHTML = '<div class="sk-search-status" style="padding:12px 0;">موردی یافت نشد</div>';
6981    }
6982
6983    function renderDesktopRecentSearches() {
6984      if (!desktopSearchResults) return;
6985      const recents = getRecentSearches().slice().reverse();
6986      if (!recents.length) {
6987        desktopSearchResults.innerHTML =
6988          '<div class="sk-search-status" style="padding:12px 0;font-weight:500;color:#6b7280;">هنوز جستجویی انجام نشده است.</div>';
6989        return;
6990      }
6991      desktopSearchResults.innerHTML = recents
6992        .map(
6993          (term) => `
6994          <button class="rodin-search-result rodin-recent-item" type="button" data-recent-term="${String(term).replace(/"/g, "&quot;")}">
6995            <div class="rodin-result-thumb"><i class="bi bi-clock-history"></i></div>
6996            <div>
6997            <div style="font-size:14px;font-weight:600;text-align:right;">${term}</div>
6998            <div style="font-size:12px;color:#7c7c7c;text-align:right;">جستجوی اخیر</div>
6999            </div>
7000        </button>`
7001        )
7002        .join("");
7003      desktopSearchResults.querySelectorAll(".rodin-recent-item").forEach((node) => {
7004        node.addEventListener("click", function () {
7005          const term = node.dataset.recentTerm || "";
7006          if (desktopSearchInput) desktopSearchInput.value = term;
7007          doDesktopSearch(term);
7008          desktopSearchInput?.focus();
7009        });
7010      });
7011    }
7012
7013    function desktopResolveThumb(item, payload) {
7014      if (typeof window.rodinNavbarResolveThumb === "function") {
7015        return window.rodinNavbarResolveThumb(item, payload);
7016      }
7017      return (
7018        (item && (item.image || item.website_image || item.thumbnail)) ||
7019        (payload && (payload.thumbnail_place_holder || payload.place_holder)) ||
7020        "/assets/erpnext/images/ui-states/cart-empty-state.png"
7021      );
7022    }
7023
7024    function desktopProductCard(item, payload) {
7025      const thumb = desktopResolveThumb(item, payload);
7026      const name = item.web_item_name || item.item_name || "محصول";
7027      const route = item.route ? `/${item.route}` : "#";
7028      return `
7029        <a class="rodin-search-result" href="${route}">
7030          <div class="rodin-result-thumb">
7031            <img src="${thumb}" alt="${name}" style="width:100%;height:100%;object-fit:cover;border-radius:10px;" />
7032          </div>
7033          <div>
7034            <div style="font-size:14px;font-weight:600;">${name}</div>
7035            <div style="font-size:12px;color:#7c7c7c;">مشاهده محصول</div>
7036          </div>
7037      </a>`;
7038    }
7039
7040    function desktopEscapeHtml(value) {
7041      return String(value || "")
7042        .replace(/&/g, "&amp;")
7043        .replace(/</g, "&lt;")
7044        .replace(/>/g, "&gt;")
7045        .replace(/"/g, "&quot;")
7046        .replace(/'/g, "&#039;");
7047    }
7048
7049  function desktopSectionTitle(text) {
7050    return `<div class="rodin-title-sm" style="padding:12px 0 6px;margin:0;font-weight:700;color:#444;">${text}</div>`;
7051    }
7052
7053    function desktopRenderSuggestChips(title, items, getLabel, getRoute, iconClass) {
7054      if (!items || !items.length) return "";
7055      const chips = items
7056        .slice(0, 12)
7057        .map((it) => {
7058          const label = desktopEscapeHtml(getLabel(it));
7059          const route = desktopEscapeHtml(getRoute(it));
7060          return `<a class="rodin-suggest-chip" href="${route}"><i class="bi ${iconClass}"></i><span>${label}</span></a>`;
7061        })
7062        .join("");
7063      return `${desktopSectionTitle(title)}<div class="rodin-suggest-row">${chips}</div>`;
7064    }
7065
7066    function desktopBuildBrandRoute(brand) {
7067      if (brand.route) return `/${brand.route}`;
7068      const filters = encodeURIComponent(JSON.stringify({ brand: [brand.brand || brand.name] }));
7069      return `/all-products?field_filters=${filters}`;
7070    }
7071
7072    function desktopBuildCategoryRoute(category) {
7073      if (category.route) return `/${category.route}`;
7074      return `/all-products/${encodeURIComponent(category.name || category.item_group || "")}`;
7075    }
7076
7077    function desktopBuildTagRoute(tag) {
7078      if (tag.route) return `/${tag.route}`;
7079      const filters = encodeURIComponent(JSON.stringify({ tags: [tag.name] }));
7080      return `/all-products?tag_filters=${filters}`;
7081    }
7082
7083    function renderDesktopResultPayload(payload, query) {
7084      if (!desktopSearchResults) return;
7085      const productResults = payload.product_results || [];
7086      const categoryResults = payload.category_results || [];
7087      const brandResults = payload.brand_results || [];
7088      const tagResults = payload.tag_results || [];
7089      const hasSuggests = !!(categoryResults.length || brandResults.length || tagResults.length);
7090      const html = [
7091      desktopRenderSuggestChips("دسته‌بندی‌ها", categoryResults, (c) => c.name || c.item_group || "دسته‌بندی", desktopBuildCategoryRoute, "bi-folder"),
7092      desktopRenderSuggestChips("برندها", brandResults, (b) => b.brand || b.name || "برند", desktopBuildBrandRoute, "bi-award"),
7093      desktopRenderSuggestChips("تگ‌ها", tagResults, (t) => t.name || "تگ", desktopBuildTagRoute, "bi-tag"),
7094      productResults.length
7095        ? (hasSuggests ? desktopSectionTitle("محصولات") : "") + productResults.map((item) => desktopProductCard(item, payload)).join("")
7096        : "",
7097      ]
7098        .filter(Boolean)
7099        .join("");
7100      desktopSearchResults.innerHTML = html;
7101      if (!productResults.length && !categoryResults.length && !brandResults.length && !tagResults.length) {
7102        renderDesktopEmptyState();
7103        return;
7104      }
7105      setRecentSearch(query);
7106    }
7107
7108    function doDesktopSearch(rawQuery) {
7109      if (!desktopSearchHeadline) return;
7110      const query = normalizeQuery(rawQuery);
7111      if (!query || query.length < 3) {
7112        setDesktopSearchHeadline("جستجوهای اخیر", false);
7113        renderDesktopRecentSearches();
7114        showDesktopSearch();
7115        return;
7116      }
7117      setDesktopSearchHeadline(`جستجو برای «${query}»`, true);
7118      renderDesktopLoadingState();
7119      showDesktopSearch();
7120      if (!(window.frappe && frappe.call)) {
7121        setDesktopSearchHeadline(`جستجو برای «${query}»`, false);
7122        renderDesktopEmptyState();
7123        return;
7124      }
7125      frappe.call({
7126        method: "erpnext.templates.pages.product_search.search",
7127        args: { query },
7128        callback: function (res) {
7129          setDesktopSearchHeadline(`جستجو برای «${query}»`, false);
7130          renderDesktopResultPayload(res.message || {}, query);
7131          showDesktopSearch();
7132        },
7133      });
7134    }
7135
7136  function redirectSearch(query) {
7137        if (!query || !(window.frappe && frappe.call)) return;
7138        frappe.call({
7139          method: "frappe.website.web_template.mega_navbar.mega_navbar.get_item_group",
7140          args: { input: query },
7141          callback: function (res) {
7142            frappe.call("erpnext.e_commerce.api.get_guest_redirect_on_action").then(() => {
7143              if (localStorage) {
7144                localStorage.setItem("last_visited", window.location.pathname + window.location.search);
7145              }
7146              if (res.message && res.message.name) {
7147                window.location.href = `/all-products/${res.message.name}`;
7148              } else {
7149                window.location.href = `/all-products?name=${encodeURIComponent(query)}`;
7150              }
7151            });
7152          },
7153    });
7154  }
7155
7156  if (desktopSearchInput) {
7157    const onDesktopInput = debounce(function (event) {
7158      doDesktopSearch(event.target.value || "");
7159    }, 450);
7160    desktopSearchInput.addEventListener("input", onDesktopInput);
7161    desktopSearchInput.addEventListener("focus", function () {
7162      if (!normalizeQuery(desktopSearchInput.value)) renderDesktopRecentSearches();
7163      showDesktopSearch();
7164    });
7165    desktopSearchInput.addEventListener("keydown", function (event) {
7166      if (event.key !== "Enter") return;
7167      event.preventDefault();
7168      redirectSearch(normalizeQuery(desktopSearchInput.value));
7169    });
7170  }
7171
7172  document.getElementById("sk-search-submit")?.addEventListener("click", function () {
7173    redirectSearch(normalizeQuery(desktopSearchInput?.value || ""));
7174  });
7175
7176  document.addEventListener("click", function (event) {
7177    if (!desktopSearchDropdown?.classList.contains("show")) return;
7178    if (event.target.closest("#rodin-desktop-search-dropdown") || event.target.closest("#rodin-desktop-search-input") || event.target.closest(".sk-search-desktop")) return;
7179      hideDesktopSearch();
7180  });
7181
7182  openSearch?.addEventListener("click", function () {
7183    openSearchOverlay();
7184  });
7185
7186  document.querySelectorAll("[data-close-overlay]").forEach((btn) => {
7187    btn.addEventListener("click", function () {
7188      const target = document.getElementById(btn.dataset.closeOverlay);
7189      if (target === searchOverlay) closeSearchOverlay();
7190      else target?.classList.remove("is-open");
7191    });
7192  });
7193
7194    document.addEventListener("keydown", function (event) {
7195      if (event.key === "Escape") {
7196        closeDesktopCategory();
7197      closeDrawer();
7198      closeSearchOverlay();
7199        hideDesktopSearch();
7200      desktopAccountMenu?.classList.remove("show");
7201    }
7202  });
7203
7204  (function initPromoSwiper() {
7205    const el = document.querySelector(".sk-promo-swiper");
7206    if (!el || typeof Swiper === "undefined") return;
7207    if (el.querySelectorAll(".swiper-slide").length < 2) return;
7208    new Swiper(el, {
7209      slidesPerView: 1,
7210      loop: true,
7211      speed: 500,
7212      autoplay: { delay: 3000, disableOnInteraction: false, pauseOnMouseEnter: true },
7213    });
7214  })();
7215
7216  (function initImgTopbarSwiper() {
7217    const el = document.querySelector(".sk-img-topbar__root");
7218    if (!el || typeof Swiper === "undefined") return;
7219    const slideCount = el.querySelectorAll(".swiper-slide").length;
7220    if (slideCount < 1) return;
7221    const autoplayOn = el.getAttribute("data-rit-autoplay") === "1";
7222    let delay = parseInt(el.getAttribute("data-rit-delay"), 10);
7223    if (isNaN(delay) || delay < 1000) delay = 2000;
7224    const loopOn = el.getAttribute("data-rit-loop") === "1";
7225    const nextEl = el.querySelector(".swiper-button-next");
7226    const prevEl = el.querySelector(".swiper-button-prev");
7227    new Swiper(el, {
7228      rtl: true,
7229      loop: loopOn && slideCount > 1,
7230      speed: 500,
7231      slidesPerView: 1,
7232      spaceBetween: 0,
7233      watchOverflow: true,
7234      autoplay:
7235        autoplayOn && slideCount > 1
7236          ? { delay: delay, disableOnInteraction: false, pauseOnMouseEnter: true }
7237          : false,
7238      navigation:
7239        slideCount > 1 && nextEl && prevEl
7240          ? { nextEl: nextEl, prevEl: prevEl }
7241          : false,
7242    });
7243  })();
7244  })();
7245</script>
7245
7246	
7247
7248
7249
7250
7251
7252
7253
7254
7255<div id="page-login" data-path="login">
7256	
7257<div class="page-content-wrapper">
7258	<!-- breadcrumbs -->
7259	<div class="page-breadcrumbs">
7260		
7261			
7262		
7263	</div>
7264
7265	
7266	<main class="page-container container my-4">
7267		<div class="page-header-wrapper d-none">
7268			<div class="page-header">
7269				
7270			</div>
7271
7272			
7273		</div>
7274
7275		<div class="page_content">
7276<!-- login.html -->
7277
7278
7279
7280<div>
7281	<noscript>
7282		<div class="text-center my-5">
7283			<h4>جاوا اسکریپت بر روی مرورگر شما غیر فعال شده است</h4>
7284			<p class="text-muted">
7285				باید جاوا اسکریپت را فعال کنید تا برنامه شما کار کند.
7286			</p>
7287		</div>
7288	</noscript>
7289	<section class='for-login d-flex justify-content-center col-12 p-0'>
7290		<!-- Login Form Container -->
7291		<div class="d-flex justify-content-center col-12 login-form-container flex-column">
7292			<div class="logo-wrapper">
7293				
7294<div class="mx-0 d-flex justify-content-center" style="text-align: center; margin-bottom: 20px;">
7295	<img class="app-logo w-100 m-0" src="/files/bookcity-typography.svg" alt="لوگو" style="max-width: 200px;">
7296</div>
7297
7298			</div>
7299			<div class="login-content page-card w-100" style="max-width: 450px;">
7300				<div class="mobile-logo-wrapper">
7301					
7302<div class="mx-0 d-flex justify-content-center" style="text-align: center; margin-bottom: 20px;">
7303	<img class="app-logo w-100 m-0" src="/files/bookcity-typography.svg" alt="لوگو" style="max-width: 200px;">
7304</div>
7305
7306				</div>
7307				<!-- Loader Overlay -->
7308				<div class="loader-overlay" id="loginLoader">
7309					<div class="loader-container">
7310						<div class="loader-spinner"></div>
7311						<div class="loader-text" dir="rtl">در حال ارسال...</div>
7312					</div>
7313				</div>
7314				<div class="page-card-head">
7315					<h4 style="margin-top: 20px;">ورود / ثبت نام</h4>
7316					<p id="login-form-subtitle">شماره موبایل خود را وارد کنید</p>
7317				</div>
7318				<form class="form-signin form-login" role="form">
7319					
7320
7321
7322<style>
7323	/* Background */
7324	.page-content-wrapper {
7325		background-color: #f0f4f8;
7326		min-height: 100vh;
7327	}
7328
7329	.for-login .page-card,
7330	.for-forgot .page-card,
7331	.for-login-with-email-link .page-card,
7332	.for-signup .page-card,
7333	.for-email-login .page-card,
7334	.for-otp-verification .page-card {
7335		margin: 0 auto;
7336		max-width: 450px;
7337		padding: 40px 30px;
7338		border-radius: 12px;
7339		background: white;
7340		box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
7341	}
7342
7343	.for-login .page-card form,
7344	.for-forgot .page-card form,
7345	.for-login-with-email-link .page-card form,
7346	.for-signup .page-card form,
7347	.for-email-login .page-card form,
7348	.for-otp-verification .page-card form {
7349		max-width: 100%;
7350	}
7351
7352	/* Title */
7353	.page-card-head h4 {
7354		font-size: 24px;
7355		font-weight: 600;
7356		text-align: center;
7357		margin-bottom: 8px;
7358		color: #1a1a1a;
7359	}
7360
7361	.page-card-head p {
7362		font-size: 14px;
7363		color: #666;
7364		text-align: center;
7365		margin-bottom: 24px;
7366	}
7367
7368	/* Mobile Number Input */
7369	.mobile-input-container {
7370		position: relative;
7371		margin-bottom: 24px;
7372	}
7373
7374	.mobile-input-container label {
7375		display: block;
7376		font-size: 14px;
7377		color: #666;
7378		margin-bottom: 8px;
7379		text-align: right;
7380	}
7381
7382	.mobile-input-wrapper {
7383		display: flex;
7384		align-items: center;
7385		background: #f8f9fa;
7386		border: 1px solid #e0e0e0;
7387		border-radius: 8px;
7388		padding: 12px 16px;
7389	}
7390
7391	.mobile-input-wrapper input {
7392		flex: 1;
7393		border: none;
7394		background: transparent;
7395		font-size: 16px;
7396		outline: none;
7397		direction: rtl;
7398		text-align: right;
7399	}
7400
7401	.mobile-input-wrapper input::placeholder {
7402		color: #999;
7403	}
7404
7405	/* Register Button */
7406	.btn-register {
7407		width: 100%;
7408		background: var(--dark-primary);
7409		color: white;
7410		border: none;
7411		border-radius: 8px;
7412		padding: 14px;
7413		font-size: 16px;
7414		font-weight: 500;
7415		cursor: pointer;
7416		transition: background 0.2s;
7417	}
7418
7419	.btn-register:hover {
7420		opacity: 0.9;
7421	}
7422
7423	.btn-register:disabled {
7424		background: #9ca3af;
7425		cursor: not-allowed;
7426	}
7427
7428	/* OTP Section */
7429	.otp-instructions {
7430		font-size: 14px;
7431		color: #666;
7432		text-align: center;
7433		margin-bottom: 20px;
7434		line-height: 1.6;
7435		direction: rtl;
7436	}
7437
7438	.mobile-display-container {
7439		background: #25408F33;
7440		border-radius: 20px;
7441		padding: 8px 16px;
7442		margin-bottom: 24px;
7443		display: flex;
7444		width: fit-content;
7445		flex-direction: row-reverse;
7446		align-items: center;
7447		justify-content: space-between;
7448	}
7449
7450	.mobile-display-number {
7451		font-size: 16px;
7452		color: #1a1a1a;
7453		font-weight: 500;
7454		direction: rtl;
7455	}
7456
7457	.edit-mobile-btn {
7458		background: none;
7459		border: none;
7460		cursor: pointer;
7461		padding: 4px;
7462		display: flex;
7463		align-items: center;
7464	}
7465
7466	.edit-mobile-btn svg {
7467		width: 18px;
7468		height: 18px;
7469		color: var(--dark-primary);
7470	}
7471
7472	/* OTP Input Fields */
7473	.otp-input-container {
7474		display: flex;
7475		justify-content: center;
7476		gap: 12px;
7477		margin-bottom: 24px;
7478	}
7479
7480	.otp-input {
7481		width: 56px;
7482		height: 56px;
7483		border: 2px solid #e0e0e0 !important;
7484		border-radius: 8px;
7485		text-align: center;
7486		font-size: 24px;
7487		font-weight: 600;
7488		outline: none;
7489		transition: border-color 0.2s;
7490		color: #1a1a1a;
7491		background: white;
7492		position: relative;
7493	}
7494
7495	.otp-input:focus {
7496		border: 2px solid var(--dark-primary) !important;
7497		box-shadow: none;
7498	}
7499
7500	.otp-input.filled {
7501		border: 2px solid var(--dark-primary) !important;
7502		background: white;
7503		color: var(--dark-primary);
7504	}
7505
7506	.otp-input.otp-invalid,
7507	.otp-input.otp-invalid:focus,
7508	.otp-input.otp-invalid.filled,
7509	.otp-input.otp-invalid.empty {
7510		border: 2px solid #ef4444 !important;
7511		color: #ef4444 !important;
7512	}
7513
7514	.otp-input.empty:not(:focus) {
7515		border: 2px solid #e0e0e0 !important;
7516		color: transparent;
7517	}
7518
7519	.otp-input-wrapper {
7520		position: relative;
7521		display: inline-block;
7522	}
7523
7524	.otp-input-wrapper::after {
7525		content: "-";
7526		color: #999;
7527		position: absolute;
7528		left: 50%;
7529		top: 50%;
7530		transform: translate(-50%, -50%);
7531		pointer-events: none;
7532		font-size: 24px;
7533		font-weight: 400;
7534		line-height: 1;
7535		z-index: 1;
7536		display: none;
7537	}
7538
7539	.otp-input-wrapper.show-dash::after {
7540		display: block;
7541	}
7542
7543	/* Terms */
7544	.terms-text {
7545		font-size: 12px;
7546		color: #999;
7547		text-align: center;
7548		margin-bottom: 24px;
7549		line-height: 1.5;
7550	}
7551
7552	/* Buttons in OTP page */
7553	.otp-actions {
7554		display: flex;
7555		gap: 12px;
7556	}
7557
7558	.btn-login-submit {
7559		width: 100%;
7560		background: var(--primary);
7561		color: white;
7562		border: none;
7563		border-radius: 8px;
7564		padding: 14px;
7565		font-size: 16px;
7566		font-weight: 500;
7567		cursor: pointer;
7568		transition: background 0.2s;
7569	}
7570
7571	.btn-login-submit:hover:not(:disabled) {
7572		opacity: 0.9;
7573	}
7574
7575	.btn-login-submit:disabled {
7576		background: #F2F2F2;
7577		cursor: not-allowed;
7578		color: #BDBDBD;
7579	}
7580
7581	.btn-edit-mobile {
7582		width: 100%;
7583		background: transparent;
7584		color: var(--dark-primary);
7585		border: none;
7586		padding: 12px;
7587		font-size: 14px;
7588		cursor: pointer;
7589		border-radius: 8px;
7590		border: 1px solid #F2F2F2;
7591	}
7592
7593	.btn-edit-mobile:hover {
7594		border: 1px solid var(--dark-primary);
7595	}
7596
7597	#login-label-name {
7598		display: block;
7599		text-align: right;
7600		font-size: 14px;
7601		color: #333;
7602		margin-bottom: 8px;
7603		font-weight: 500;
7604	}
7605
7606	#login-name-field-group {
7607		margin-bottom: 1rem;
7608		direction: rtl;
7609		text-align: right;
7610	}
7611
7612	#login_name {
7613		direction: rtl;
7614		text-align: right;
7615	}
7616
7617	#login_name::placeholder {
7618		text-align: right;
7619	}
7620
7621	/* Hide default elements */
7622	#login-label-username,
7623	#edit-mobile-number,
7624	#countdown-container,
7625	#send-code-again,
7626	#staff,
7627	#staff-label {
7628		display: none !important;
7629	}
7630
7631	/* Password login fields styling */
7632	#login-label-email,
7633	#login-label-password {
7634		display: block;
7635		text-align: right;
7636		font-size: 14px;
7637		color: #333;
7638		margin-bottom: 8px;
7639		font-weight: 500;
7640	}
7641
7642
7643	.toggle-password {
7644		cursor: pointer;
7645		font-size: 14px;
7646		color: #666;
7647		margin-right: 8px;
7648		user-select: none;
7649	}
7650
7651	.toggle-password:hover {
7652		color: var(--primary);
7653	}
7654
7655	/* Password login button */
7656	.btn-password-login {
7657		width: 100%;
7658		background: var(--dark-primary);
7659		color: white;
7660		border: none;
7661		border-radius: 8px;
7662		padding: 14px;
7663		font-size: 16px;
7664		font-weight: 500;
7665		cursor: pointer;
7666		transition: background 0.2s;
7667		margin-bottom: 20px;
7668	}
7669
7670	.btn-password-login:hover {
7671		background: var(--primary);
7672	}
7673
7674	.btn-password-login:disabled {
7675		background: #9ca3af;
7676		cursor: not-allowed;
7677	}
7678
7679	/* Toggle to OTP login link */
7680	.toggle-to-otp-login {
7681		text-align: center;
7682		margin-top: 10px;
7683	}
7684
7685	.toggle-to-otp-login a {
7686		color: var(--dark-primary);
7687		text-decoration: none;
7688		font-size: 14px;
7689		cursor: pointer;
7690	}
7691
7692	.toggle-to-otp-login a:hover {
7693		text-decoration: underline;
7694	}
7695
7696	/* Toggle to password login button */
7697	.btn-toggle-password-login {
7698		width: 100%;
7699		background: transparent;
7700		color: var(--dark-primary);
7701		border: 1px solid var(--dark-primary);
7702		border-radius: 8px;
7703		padding: 14px;
7704		font-size: 16px;
7705		font-weight: 500;
7706		cursor: pointer;
7707		transition: all 0.2s;
7708		margin-top: 15px;
7709	}
7710
7711	.btn-toggle-password-login:hover {
7712		background: var(--dark-primary);
7713		color: white;
7714	}
7715
7716	/* Logo adjustments */
7717	.app-logo {
7718		max-width: 200px;
7719		margin: 0 auto 30px;
7720		display: block;
7721	}
7722
7723	/* Ensure only one container is visible at a time */
7724	.for-login {
7725		position: relative;
7726		display: flex;
7727		flex-direction: column;
7728		align-items: center;
7729		justify-content: center;
7730		min-height: 100vh;
7731	}
7732
7733	.logo-wrapper {
7734		width: 100%;
7735		display: flex;
7736		justify-content: center;
7737		margin-bottom: 20px;
7738		z-index: 1;
7739	}
7740
7741	.mobile-logo-wrapper {
7742		display: none;
7743	}
7744
7745	.login-form-container {
7746		position: relative;
7747		width: 100%;
7748		display: flex !important;
7749		flex-direction: column;
7750		align-items: center;
7751		justify-content: center;
7752	}
7753
7754	.otp-container {
7755		position: absolute;
7756		top: 0;
7757		left: 0;
7758		right: 0;
7759		width: 100%;
7760		height: 100%;
7761		z-index: 10;
7762		display: none !important;
7763		visibility: hidden;
7764		flex-direction: column;
7765		align-items: center;
7766		justify-content: center;
7767	}
7768	
7769	.otp-container.show-otp {
7770		display: flex !important;
7771		visibility: visible !important;
7772	}
7773	
7774	/* Hide login container when OTP is shown */
7775	.otp-container.show-otp ~ .login-form-container {
7776		display: none !important;
7777	}
7778	
7779	/* Hide logo in OTP container when login is shown */
7780	.otp-container:not(.show-otp) .logo-wrapper {
7781		display: none !important;
7782	}
7783	
7784	/* Hide logo in login container when OTP is shown */
7785	.otp-container.show-otp ~ .login-form-container .logo-wrapper {
7786		display: none !important;
7787	}
7788	
7789	/* Hide all other logos in other sections */
7790	.for-email-login .app-logo,
7791	.for-email-login .logo-wrapper,
7792	.for-signup .app-logo,
7793	.for-signup .logo-wrapper,
7794	.for-forgot .app-logo,
7795	.for-forgot .logo-wrapper,
7796	.for-login-with-email-link .app-logo,
7797	.for-login-with-email-link .logo-wrapper,
7798	section:not(.for-login) .app-logo,
7799	section:not(.for-login) .logo-wrapper,
7800	section:not(.for-login) .page-card-head .app-logo {
7801		display: none !important;
7802		visibility: hidden !important;
7803		height: 0 !important;
7804		overflow: hidden !important;
7805		margin: 0 !important;
7806		padding: 0 !important;
7807	}
7808
7809	/* Hide header and footer */
7810	.navbar,
7811	.page-header-wrapper,
7812	.page-footer,
7813	.page-breadcrumbs,
7814	header,
7815	footer,
7816	.web-footer,
7817	.footer-padding,
7818	.footer-spacer,
7819	.navbar-header,
7820	.navbar-nav,
7821	.bottom-menu-space {
7822		display: none !important;
7823		visibility: hidden !important;
7824		height: 0 !important;
7825		overflow: hidden !important;
7826		margin: 0 !important;
7827		padding: 0 !important;
7828	}
7829
7830	/* Full page login */
7831	.page-content-wrapper {
7832		padding: 0 !important;
7833		margin: 0 !important;
7834	}
7835
7836	.page-container {
7837		margin: 0 !important;
7838		padding: 0 !important;
7839		max-width: unset !important;
7840		height: 100vh !important;
7841		align-content: center !important;
7842		background: linear-gradient(180deg, rgba(37, 64, 143, 0.2) 0%, rgba(37, 64, 143, 0) 100%) !important;
7843	}
7844
7845	/* Countdown Timer */
7846	.otp-countdown {
7847		text-align: center;
7848		margin: 20px 0;
7849		font-size: 14px;
7850		color: #666;
7851	}
7852
7853	.otp-resend-link {
7854		text-align: center;
7855		margin: 10px 0;
7856	}
7857
7858	.otp-resend-link a {
7859		color: var(--primary);
7860		text-decoration: none;
7861		cursor: pointer;
7862		font-size: 14px;
7863	}
7864
7865	.otp-resend-link a:hover {
7866		text-decoration: underline;
7867	}
7868
7869	.otp-resend-link a:disabled,
7870	.otp-resend-link a.disabled {
7871		color: #999;
7872		cursor: not-allowed;
7873		pointer-events: none;
7874	}
7875
7876	/* Loader Styles */
7877	.loader-overlay {
7878		position: absolute;
7879		top: 0;
7880		left: 0;
7881		right: 0;
7882		bottom: 0;
7883		background: rgba(255, 255, 255, 0.9);
7884		display: none;
7885		align-items: center;
7886		justify-content: center;
7887		z-index: 1000;
7888		border-radius: 12px;
7889		backdrop-filter: blur(2px);
7890	}
7891
7892	.loader-overlay.active {
7893		display: flex;
7894	}
7895
7896	.loader-spinner {
7897		width: 40px;
7898		height: 40px;
7899		border: 4px solid #f3f3f3;
7900		border-top: 4px solid var(--dark-primary);
7901		border-radius: 50%;
7902		animation: spin 1s linear infinite;
7903	}
7904
7905	@keyframes spin {
7906		0% { transform: rotate(0deg); }
7907		100% { transform: rotate(360deg); }
7908	}
7909
7910	.loader-text {
7911		margin-top: 12px;
7912		color: var(--dark-primary);
7913		font-size: 14px;
7914		font-weight: 500;
7915		text-align: center;
7916	}
7917
7918	.loader-container {
7919		display: flex;
7920		flex-direction: column;
7921		align-items: center;
7922		justify-content: center;
7923	}
7924
7925	/* Disable form elements when loading */
7926	.page-card.loading input,
7927	.page-card.loading button,
7928	.page-card.loading select,
7929	.page-card.loading textarea {
7930		pointer-events: none;
7931		opacity: 0.6;
7932		cursor: not-allowed;
7933	}
7934
7935	.page-card {
7936		position: relative;
7937	}
7938
7939	@media (max-width: 767.98px) {
7940		.for-login .login-form-container {
7941			margin-bottom: 50px;
7942		}
7943
7944		.for-login .login-form-container > .logo-wrapper,
7945		.for-login .otp-container > .logo-wrapper {
7946			display: none !important;
7947		}
7948
7949		.for-login .login-content .mobile-logo-wrapper {
7950			display: flex !important;
7951			justify-content: center;
7952			margin-bottom: 20px;
7953		}
7954
7955		.for-login .login-content .mobile-logo-wrapper .app-logo {
7956			max-height: 70px;
7957			object-fit: contain;
7958		}
7959	}
7960</style>
7961
7962<div class="page-card-body">
7963	<div class="form-group" id="login-name-field-group" style="display: none;" dir="rtl">
7964		<p id="login-label-name" class="text-right py-2 login-label">نام و نام خانوادگی</p>
7965		<input type="text" id="login_name" class="form-control" placeholder="نام و نام خانوادگی" autocomplete="name" dir="rtl">
7966	</div>
7967	<div class="d-flex justify-content-end">
7968		<p id="edit-mobile-number" class="justify-content-end" disabled="false" style="display: none;"
7969			onclick="active_number()">ویرایش شماره موبایل/ ایمیل</p>
7970	</div>
7971	<div class="form-group" id="email-field-group" style="display: none;">
7972		<p id="login-label-email" class="text-right py-2 login-label">شماره موبایل / ایمیل</p>
7973		<div class="email-field" id="email-field">
7974			<input type="text" id="login_email" class="form-control m-0"
7975				placeholder="[email protected] یا 09*********"
7976				autocomplete="username">
7977
7978
7979
7980
7981			<svg class="field-icon email-icon" width="20" height="20" viewBox="0 0 20 20" fill="none"
7982				xmlns="http://www.w3.org/2000/svg">
7983				<path
7984					d="M2.5 7.65149V15.0757C2.5 15.4374 2.64367 15.7842 2.8994 16.04C3.15513 16.2957 3.50198 16.4394 3.86364 16.4394H16.1364C16.498 16.4394 16.8449 16.2957 17.1006 16.04C17.3563 15.7842 17.5 15.4374 17.5 15.0757V7.65149"
7985					stroke="#74808B" stroke-miterlimit="10" stroke-linecap="square" />
7986				<path
7987					d="M17.5 7.57572V5.53026C17.5 5.1686 17.3563 4.82176 17.1006 4.56603C16.8449 4.31029 16.498 4.16663 16.1364 4.16663H3.86364C3.50198 4.16663 3.15513 4.31029 2.8994 4.56603C2.64367 4.82176 2.5 5.1686 2.5 5.53026V7.57572L10 10.8333L17.5 7.57572Z"
7988					stroke="#74808B" stroke-miterlimit="10" stroke-linecap="square" />
7989			</svg>
7990		</div>
7991	</div>
7992
7993
7994
7995
7996
7997
7998
7999	<div class="form-group" id="password-field-group" style="display: none;">
8000		<p id="login-label-password" class="text-right py-2 login-label">کلمه عبور</p>
8001		<div class="password-field" id="password-field">
8002			<input type="password" id="login_password" class="form-control m-0"
8003				placeholder="لطفا رمز عبور را وارد نمایید" autocomplete="current-password">
8004
8005			<svg class="field-icon password-icon" width="20" height="20" viewBox="0 0 20 20" fill="none"
8006				xmlns="http://www.w3.org/2000/svg">
8007				<path fill-rule="evenodd" clip-rule="evenodd"
8008					d="M10.0961 1.93768H10.0264C8.94806 1.92763 7.90976 2.34591 7.13951 3.10075C6.36866 3.85619 5.9294 4.88687 5.91833 5.96612L5.91831 5.96612V5.97124V6.52695H4.3125C3.20793 6.52695 2.3125 7.42238 2.3125 8.52695V16.0165C2.3125 17.121 3.20793 18.0165 4.3125 18.0165H15.7356C16.8401 18.0165 17.7356 17.121 17.7356 16.0165V8.52695C17.7356 7.42238 16.8401 6.52695 15.7356 6.52695H14.1297V6.04576C14.1397 4.96742 13.7214 3.92913 12.9666 3.15888C12.2112 2.38803 
800811.1805 1.94877 10.1012 1.9377V1.93768H10.0961ZM13.1297 6.52695V6.04336V6.03838H13.1297C13.1378 5.22428 12.8222 4.44029 12.2524 3.85881C11.6831 3.27793 10.9067 2.94667 10.0934 2.93768H10.024H10.019V2.93765C9.20491 2.92955 8.42092 3.24512 7.83944 3.81497C7.25856 4.38423 6.9273 5.1607 6.91831 5.9739V6.52695H13.1297ZM4.3125 7.52695C3.76022 7.52695 3.3125 7.97467 3.3125 8.52695V16.0165C3.3125 16.5687 3.76022 17.0165 4.3125 17.0165H15.7356C16.2879 17.0165 16.7356 16.5687 16.7356 16.0165V8.52695C16.7356 7.97467 16.2879 7.52695 15.7356 7.52695H4.3125ZM10.0242 13.2384C10.5581 13.2384 10.9909 12.8056 10.9909 12.2717C10.9909 11.7377 10.5581 11.3049 10.0242 11.3049C9.49023 11.3049 9.05738 11.7377 9.05738 12.2717C9.05738 12.8056 9.49023 13.2384 10.0242 13.2384ZM11.9909 12.2717C11.9909 13.3579 11.1104 14.2384 10.0242 14.2384C8.93794 14.2384 8.05738 13.3579 8.05738 12.2717C8.05738 11.1854 8.93794 10.3049 10.0242 10.3049C11.1104 10.3049 11.9909 11.1854 11.9909 12.2717Z"
8009					fill="#74808B" />
8010			</svg>
8011			<span toggle="#login_password" class="toggle-password text-muted">نمایش دهید</span>
8012		</div>
8013	</div>
8014
8015	<div class="form-group" id="mobile-field-group">
8016		
8017		
8018		<p id="login-label-username" class="text-right py-2 login-label" style="display: none;">شماره موبایل
8019		</p>
8020		<input type="text" id="login_mobile" class="form-control" placeholder="09*********" autofocus>
8021		
8022	</div>
8023
8024
8025
8026
8027
8028	<p class="forgot-password-message d-flex justify-content-end" style="display: none !important;">
8029		<a href="#forgot">رمز عبور را فراموش کرده اید؟</a>
8030	</p>
8031	<div class="d-flex justify-content-between" id="counter" dir="rtl">
8032		<h4 id="countdown-container" class="m-0" style="display: none;">
8033			<p id="countdown">120 ثانیه تا ارسال مجدد کد</p>
8034		</h4>
8035
8036		<h4 id="send-code-again" class="m-0 gap-1 align-items-center" style="display: none;">ارسال مجدد<i
8037				class="bi bi-arrow-clockwise"></i></h4>
8038	</div>
8039</div>
8040
8041
8042<div class="page-card-actions">
8043	<!-- OTP Login Button (Default) -->
8044	
8045	<button id="loginButton" class="btn-register" type="submit">
8046		ورود / ثبت نام</button>
8047	
8048	
8049	<!-- Password Login Button (Hidden by default) -->
8050	<button id="passwordLoginButton" class="btn-password-login" type="submit" style="display: none;">
8051		ورود / ثبت نام</button>
8052	
8053	<!-- Toggle to Password Login Button -->
8054	<button type="button" id="togglePasswordLoginBtn" class="btn-toggle-password-login" onclick="togglePasswordLogin()">
8055		ورود با رمز ثابت</button>
8056	
8057	<!-- Toggle to OTP Login Link (in password mode) -->
8058	<div class="toggle-to-otp-login" id="toggleToOtpLogin" style="display: none;">
8059		<a href="#" onclick="togglePasswordLogin(); return false;">ورود با رمز یکبار مصرف</a>
8060	</div>
8061	
8062	
8063	<!-- Hidden staff checkbox -->
8064	<input type="checkbox" class="m-0" id="staff" name="staff" onclick="staff_login()" hidden>
8065	
8066	<label class="m-0" id="staff-label" for="staff" style="display: none;">ورود با رمز ثابت</label>
8067	
8068</div>
8069</form>
8070			</div>
8071		</div>
8072
8073		<!-- OTP Verification Section - Same Container -->
8074		<div class="d-flex justify-content-center col-12 otp-container flex-column">
8075			<div class="logo-wrapper">
8076				
8077<div class="mx-0 d-flex justify-content-center" style="text-align: center; margin-bottom: 20px;">
8078	<img class="app-logo w-100 m-0" src="/files/bookcity-typography.svg" alt="لوگو" style="max-width: 200px;">
8079</div>
8080
8081			</div>
8082			<div class="login-content page-card w-100" style="max-width: 450px;">
8083				<div class="mobile-logo-wrapper">
8084					
8085<div class="mx-0 d-flex justify-content-center" style="text-align: center; margin-bottom: 20px;">
8086	<img class="app-logo w-100 m-0" src="/files/bookcity-typography.svg" alt="لوگو" style="max-width: 200px;">
8087</div>
8088
8089				</div>
8090				<!-- Loader Overlay -->
8091				<div class="loader-overlay" id="otpLoader">
8092					<div class="loader-container">
8093						<div class="loader-spinner"></div>
8094						<div class="loader-text" dir="rtl">در حال بررسی...</div>
8095					</div>
8096				</div>
8097				<div class="page-card-head">
8098					<h4 style="margin-top: 20px;">ثبت نام</h4>
8099					<p class="otp-instructions">
8100						کد پنج رقمی ارسال شده به شماره زیر را وارد کنید.<br>
8101						در صورت نیاز می‌توانید شماره موبایل را ویرایش کنید.
8102					</p>
8103				</div>
8104				<form class="form-signin form-otp-verification" role="form">
8105					<div class="page-card-body d-flex flex-column align-items-center justify-content-center">
8106						<!-- Mobile Number Display -->
8107						<div class="mobile-display-container">
8108							<span class="mobile-display-number" id="display_mobile_number">Û°Û¹Û³ÛµÛ·Û¸Û¹Û´ÛµÛ¶Û°</span>
8109							<button type="button" class="edit-mobile-btn" id="edit_mobile_btn" onclick="editMobileNumber()">
8110								<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
8111									<path d="M13.5 2.25L15.75 4.5L5.25 15H2.25V12L12.75 1.5L13.5 2.25Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
8112								</svg>
8113							</button>
8114						</div>
8115
8116						<!-- OTP Input Fields (5 digits) -->
8117						<div class="otp-input-container">
8118							<div class="otp-input-wrapper">
8119							<input type="text" class="otp-input" id="otp_1" maxlength="1" inputmode="numeric" pattern="[0-9]*" autocomplete="off">
8120							</div>
8121							<div class="otp-input-wrapper">
8122							<input type="text" class="otp-input" id="otp_2" maxlength="1" inputmode="numeric" pattern="[0-9]*" autocomplete="off">
8123							</div>
8124							<div class="otp-input-wrapper">
8125							<input type="text" class="otp-input" id="otp_3" maxlength="1" inputmode="numeric" pattern="[0-9]*" autocomplete="off">
8126							</div>
8127							<div class="otp-input-wrapper">
8128							<input type="text" class="otp-input" id="otp_4" maxlength="1" inputmode="numeric" pattern="[0-9]*" autocomplete="off">
8129							</div>
8130							<div class="otp-input-wrapper">
8131							<input type="text" class="otp-input" id="otp_5" maxlength="1" inputmode="numeric" pattern="[0-9]*" autocomplete="off">
8132							</div>
8133						</div>
8134
8135						<!-- Countdown Timer and Resend -->
8136						<div class="otp-countdown" id="otp_countdown" style="display: none;">
8137							<span id="countdown_text">120 ثانیه تا ارسال مجدد کد</span>
8138						</div>
8139						<div class="otp-resend-link" id="otp_resend_link" style="display: none;">
8140							<a href="#" onclick="resendOTP(); return false;">ارسال مجدد</a>
8141						</div>
8142
8143						<!-- Terms -->
8144						
8145					</div>
8146					<div class="page-card-actions otp-actions">
8147						<button type="submit" class="btn-login-submit" id="otp_submit_btn" disabled>
8148							ورود
8149						</button>
8150						<button type="button" class="btn-edit-mobile" id="edit_mobile_link" onclick="editMobileNumber()">
8151							ویرایش شماره همراه
8152						</button>
8153					</div>
8154				</form>
8155			</div>
8156		</div><div class="text-center sign-up-message" style="display: none;">
8157			حساب کاربری ندارید؟
8158			<a href="#signup">ثبت نام</a>
8159		</div></section><section class='for-signup '>
8160		<div class="login-content page-card">
8161			
8162<div class="mx-0 d-flex justify-content-center" style="text-align: center; margin-bottom: 20px;">
8163	<img class="app-logo w-100 m-0" src="/files/bookcity-typography.svg" alt="لوگو" style="max-width: 200px;">
8164</div>
8165<style>
8166    .sign-up-message{
8167        margin-top: 20px !important;
8168    }
8169
8170    .sign-up-message a{
8171        color: black !important;
8172        text-decoration: underline !important;
8173    }
8174</style>
8175
8176<form class="form-signin form-signup hide" role="form">
8177    <div class="page-card-body">
8178        <div class="form-group">
8179            <label class="form-label sr-only" for="signup_fullname" >نام کامل</label>
8180            <input type="text" id="signup_fullname" class="form-control" dir="rtl" placeholder="نام کامل"
8181                required autofocus autocomplete="name">
8182        </div>
8183        
8184        <div class="form-group">
8185            <label class="form-label sr-only" for="mobile_no">شماره موبایل</label>
8186            <input type="text" id="mobile_no" class="form-control text-right"
8187                placeholder="09*********" required autocomplete="username">
8188        </div>
8189        
8190    </div>
8191    <div class="page-card-actions">
8192        <button class="btn btn-sm btn-primary btn-block btn-signup"
8193            type="submit">ثبت نام</button>
8194
8195        <p class="text-center sign-up-message">
8196            <a href="#login">حساب کاربری دارید؟ وارد شدن</a>
8197        </p>
8198    </div>
8199</form></div>
8200
8201	</section>
8202
8203	<section class='for-forgot' style="display: none;">
8204		
8205		<div class="login-content page-card">
8206			<form class="form-signin form-forgot hide" role="form">
8207				<div class="page-card-head">
8208					<h4>رمز عبور را فراموش کرده اید</h4>
8209				</div>
8210				<div class="page-card-body">
8211					
8212
8213					
8214					<div class="mobile-field">
8215						<input type="text" id="forgot_mobile" class="form-control" placeholder="09*********"
8216							required autofocus autocomplete="username">
8217
8218					</div>
8219					
8220					
8221				</div>
8222				<div class="page-card-actions">
8223					<button class="btn btn-sm btn-primary btn-block btn-forgot" type="submit">بازنشانی رمز عبور</button>
8224					<p class="text-center verification-mail">
8225
8226					</p>
8227					<p class="text-center sign-up-message">
8228						<a href="#login">بازگشت به صفحه ورود</a>
8229					</p>
8230				</div>
8231
8232			</form>
8233		</div>
8234	</section>
8235
8236	<section class='for-login-with-email-link'>
8237		<div class="login-content page-card">
8238			<form class="form-signin form-login-with-email-link hide" role="form">
8239				<div class="page-card-head">
8240					<h4>با لینک ایمیل وارد شوید</h4>
8241				</div>
8242				<div class="page-card-body">
8243					<div class="email-field">
8244						<input type="email" id="login_with_email_link_email" class="form-control"
8245							placeholder="آدرس ایمیل" required autofocus autocomplete="username">
8246						<svg class="field-icon email-icon" width="20" height="20" viewBox="0 0 20 20" fill="none"
8247							xmlns="http://www.w3.org/2000/svg">
8248							<path
8249								d="M2.5 7.65149V15.0757C2.5 15.4374 2.64367 15.7842 2.8994 16.04C3.15513 16.2957 3.50198 16.4394 3.86364 16.4394H16.1364C16.498 16.4394 16.8449 16.2957 17.1006 16.04C17.3563 15.7842 17.5 15.4374 17.5 15.0757V7.65149"
8250								stroke="#74808B" stroke-miterlimit="10" stroke-linecap="square" />
8251							<path
8252								d="M17.5 7.57572V5.53026C17.5 5.1686 17.3563 4.82176 17.1006 4.56603C16.8449 4.31029 16.498 4.16663 16.1364 4.16663H3.86364C3.50198 4.16663 3.15513 4.31029 2.8994 4.56603C2.64367 4.82176 2.5 5.1686 2.5 5.53026V7.57572L10 10.8333L17.5 7.57572Z"
8253								stroke="#74808B" stroke-miterlimit="10" stroke-linecap="square" />
8254						</svg>
8255					</div>
8256				</div>
8257				<div class="page-card-actions">
8258					<button class="btn btn-sm btn-primary btn-block btn-login-with-email-link" type="submit">ارسال لینک ورود</button>
8259					<p class="text-center sign-up-message">
8260						<a href="#login">بازگشت به صفحه ورود</a>
8261					</p>
8262				</div>
8263			</form>
8264		</div>
8265	</section>
8266
8267</div>
8268
8269
8270<script>
8271	window.system_settings = {
8272		allow_easy_login_with_email: 0
8273    };
8274	window.get_name_at_sign_up = false;
8275</script>
8275
8276</div>
8277
8278		<div class="page-footer"></div>
8279	</main>
8280	
8281</div>
8282
8283</div>
8284
8285
8286
8287
8288
8289
8290
8291
8292
8293
8294
8295  
8296    
8297  
8298    
8299  
8300    
8301  
8302
8303
8304
8305  
8306    
8307  
8308    
8309  
8310    
8311  
8312
8313
8314<style>
8315
8316  .sk-footer {
8317    --sk-brand: #25468F;
8318    --sk-brand-soft: #e8f8ff;
8319    --sk-ink: #212121;
8320    --sk-muted-fg: rgba(255, 255, 255, 0.72);
8321    --sk-border: rgba(255, 255, 255, 0.18);
8322    --sk-radius: 0.5rem;
8323
8324    margin-top: 4rem;
8325    border-top: 1px solid var(--sk-border);
8326    background-color: var(--sk-brand);
8327    background-size: cover;
8328    background-position: center;
8329    color: #ffffff;
8330    direction: rtl;
8331    text-align: right;
8332  }
8333
8334  .sk-footer *,
8335  .sk-footer *::before,
8336  .sk-footer *::after {
8337    box-sizing: border-box;
8338  }
8339
8340  .sk-footer a {
8341    transition: color 0.15s ease;
8342  }
8343
8344  .sk-footer h1,
8345  .sk-footer h2,
8346  .sk-footer h3,
8347  .sk-footer h4,
8348  .sk-footer h5,
8349  .sk-footer h6 {
8350    color: #ffffff;
8351    font-family: inherit;
8352  }
8353
8354  .sk-footer__container {
8355    width: 100%;
8356    max-width: 1280px;
8357    margin-inline: auto;
8358    padding-left: 1rem;
8359    padding-right: 1rem;
8360  }
8361
8362  .sk-footer__main {
8363    display: grid;
8364    grid-template-columns: 1fr;
8365    gap: 0;
8366    padding-top: 1.5rem;
8367    padding-bottom: 1.5rem;
8368  }
8369
8370  @media (min-width: 768px) {
8371    .sk-footer__main {
8372      grid-template-columns: repeat(4, minmax(0, 1fr));
8373      gap: 2rem;
8374      padding-top: 2.5rem;
8375      padding-bottom: 2.5rem;
8376    }
8377  }
8378
8379  .sk-footer__col {
8380    min-width: 0;
8381  }
8382
8383  .sk-footer__logo {
8384    display: block;
8385    height: 36px;
8386    width: auto;
8387    margin-bottom: 0.75rem;
8388    filter: brightness(0) invert(1);
8389  }
8390
8391  .sk-footer__meta {
8392    margin-top: 0.75rem;
8393    display: flex;
8394    flex-direction: column;
8395    gap: 0.25rem;
8396  }
8397
8398  .sk-footer__meta-row {
8399    display: flex;
8400    align-items: flex-start;
8401    gap: 0.5rem;
8402    font-size: 0.875rem;
8403    line-height: 1.6;
8404    color: #ffffff;
8405  }
8406
8407  .sk-footer__meta-row i {
8408    color: rgba(255, 255, 255, 0.9);
8409    margin-top: 0.15rem;
8410    flex-shrink: 0;
8411    font-size: 1rem;
8412    line-height: 1;
8413  }
8414
8415  .sk-footer__address {
8416    font-size: inherit;
8417    line-height: inherit;
8418    color: inherit;
8419  }
8420
8421  .sk-footer__address p {
8422    margin: 0;
8423    color: inherit;
8424  }
8425
8426  .sk-footer__address a {
8427    color: var(--sk-brand-soft);
8428  }
8429
8430  /* ——— Accordion drawers (mobile) ——— */
8431  .sk-footer__drawer {
8432    border: 0;
8433    border-bottom: 1px solid var(--sk-border);
8434    margin: 0;
8435    padding: 0;
8436  }
8437
8438  .sk-footer__main > .sk-footer__drawer:last-child {
8439    border-bottom: 0;
8440  }
8441
8442  .sk-footer__drawer > summary {
8443    list-style: none;
8444    display: flex;
8445    align-items: center;
8446    justify-content: space-between;
8447    gap: 0.75rem;
8448    margin: 0;
8449    padding: 0.875rem 0;
8450    font-size: 0.875rem;
8451    font-weight: 700;
8452    line-height: 1.4;
8453    color: #ffffff;
8454    cursor: pointer;
8455    user-select: none;
8456  }
8457
8458  .sk-footer__drawer > summary::-webkit-details-marker {
8459    display: none;
8460  }
8461
8462  /* Chevron: closed → down, open → up (physical borders, no RTL flip) */
8463  .sk-footer__drawer > summary::after {
8464    content: "";
8465    width: 0.5rem;
8466    height: 0.5rem;
8467    border-right: 2px solid rgba(255, 255, 255, 0.9);
8468    border-bottom: 2px solid rgba(255, 255, 255, 0.9);
8469    transform: rotate(45deg);
8470    transition: transform 0.2s ease;
8471    flex-shrink: 0;
8472    margin-top: -0.2rem;
8473  }
8474
8475  .sk-footer__drawer[open] > summary::after {
8476    transform: rotate(225deg);
8477    margin-top: 0.2rem;
8478  }
8479
8480  .sk-footer__drawer-body {
8481    padding: 0 0 0.875rem;
8482  }
8483
8484  .sk-footer__heading {
8485    margin: 0 0 0.75rem;
8486    font-size: 0.875rem;
8487    font-weight: 700;
8488    line-height: 1.4;
8489    color: #ffffff;
8490  }
8491
8492  .sk-footer__links {
8493    list-style: none;
8494    margin: 0;
8495    padding: 0;
8496  }
8497
8498  .sk-footer__links li + li {
8499    margin-top: 0.5rem;
8500  }
8501
8502  .sk-footer__links a {
8503    display: inline-block;
8504    font-size: 0.875rem;
8505    font-weight: 400;
8506    line-height: 1.5;
8507    color: var(--sk-muted-fg);
8508    text-decoration: none;
8509  }
8510
8511  .sk-footer__links a:hover,
8512  .sk-footer__links a:focus {
8513    color: #ffffff;
8514    text-decoration: none;
8515  }
8516
8517  .sk-footer__newsletter-text {
8518    margin: 0 0 0.75rem !important;
8519    font-size: 0.875rem;
8520    line-height: 1.7;
8521    color: var(--sk-muted-fg);
8522  }
8523
8524  .sk-footer__newsletter-form {
8525    display: flex;
8526    flex-direction: row;
8527    flex-wrap: nowrap;
8528    align-items: stretch;
8529    gap: 0.5rem;
8530    direction: rtl;
8531  }
8532
8533  .sk-footer__newsletter-form input {
8534    flex: 1 1 auto;
8535    min-width: 0;
8536    width: 100%;
8537    border: 1px solid rgba(255, 255, 255, 0.35);
8538    border-radius: var(--sk-radius);
8539    background: rgba(255, 255, 255, 0.12);
8540    color: #ffffff;
8541    padding: 0.5rem 0.75rem;
8542    font-size: 0.875rem;
8543    line-height: 1.4;
8544    outline: none;
8545    font-family: inherit;
8546    text-align: right;
8547  }
8548
8549  .sk-footer__newsletter-form input::placeholder {
8550    color: rgba(255, 255, 255, 0.65);
8551  }
8552
8553  .sk-footer__newsletter-form input:focus {
8554    border-color: #ffffff;
8555    box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.2);
8556  }
8557
8558  .sk-footer__newsletter-form button {
8559    flex: 0 0 auto;
8560    border: 0;
8561    border-radius: var(--sk-radius);
8562    background: #ffffff;
8563    color: var(--sk-brand);
8564    font-size: 0.875rem;
8565    font-weight: 700;
8566    padding: 0.5rem 1rem;
8567    cursor: pointer;
8568    white-space: nowrap;
8569    font-family: inherit;
8570    line-height: 1.4;
8571  }
8572
8573  .sk-footer__newsletter-form button:hover,
8574  .sk-footer__newsletter-form button:focus {
8575    opacity: 0.95;
8576    outline: none;
8577  }
8578
8579  .sk-footer__social {
8580    margin-top: 1rem;
8581    display: flex;
8582    flex-wrap: wrap;
8583    align-items: center;
8584    gap: 0.5rem;
8585  }
8586
8587  .sk-footer__social a {
8588    display: inline-flex;
8589    align-items: center;
8590    justify-content: center;
8591    width: 36px;
8592    height: 36px;
8593    padding: 0.5rem;
8594    border: 1px solid var(--sk-border);
8595    border-radius: var(--sk-radius);
8596    color: #ffffff;
8597    text-decoration: none;
8598    overflow: hidden;
8599  }
8600
8601  .sk-footer__social a:hover,
8602  .sk-footer__social a:focus {
8603    color: var(--sk-brand);
8604    background: #ffffff;
8605    border-color: #ffffff;
8606    text-decoration: none;
8607  }
8608
8609  .sk-footer__social img {
8610    width: 16px;
8611    height: 16px;
8612    object-fit: contain;
8613  }
8614
8615  .sk-footer__social a:hover img {
8616    filter: none;
8617  }
8618
8619  .sk-footer__social i {
8620    font-size: 1rem;
8621    line-height: 1;
8622  }
8623
8624  .sk-footer__bottom {
8625    border-top: 1px solid var(--sk-border);
8626  }
8627
8628  .sk-footer__bottom-inner {
8629    display: flex;
8630    flex-direction: column;
8631    align-items: center;
8632    justify-content: space-between;
8633    gap: 0.5rem;
8634    padding-top: 1rem;
8635    padding-bottom: 1rem;
8636    font-size: 12px;
8637    line-height: 1.6;
8638    color: var(--sk-muted-fg);
8639    text-align: center;
8640  }
8641
8642  @media (min-width: 768px) {
8643    .sk-footer__bottom-inner {
8644      flex-direction: row;
8645      text-align: right;
8646    }
8647
8648    /* Desktop: drawers always open, no accordion chrome */
8649    .sk-footer__drawer {
8650      border-bottom: 0;
8651    }
8652
8653    .sk-footer__drawer > summary {
8654      pointer-events: none;
8655      padding: 0 0 0.75rem;
8656      cursor: default;
8657    }
8658
8659    .sk-footer__drawer > summary::after {
8660      display: none;
8661    }
8662
8663    .sk-footer__drawer-body {
8664      padding: 0;
8665    }
8666  }
8667
8668  .sk-footer__bottom a {
8669    color: var(--sk-muted-fg);
8670    text-decoration: none;
8671  }
8672
8673  .sk-footer__bottom a:hover {
8674    color: #ffffff;
8675    text-decoration: none;
8676  }
8677</style>
8678
8679<footer
8680  class="sk-footer"
8681  dir="rtl"
8682  data-component="rodin_footer_sk"
8683  >
8684  <div class="sk-footer__container sk-footer__main">
8685    
8686    <div class="sk-footer__col sk-footer__brand">
8687      <a href="/" aria-label="لوگو">
8688        <img class="sk-footer__logo" src="/files/download.svg" alt="لوگو" />
8689      </a>
8690      <div class="sk-footer__meta">
8691        
8692        <div class="sk-footer__meta-row">
8693          <div class="sk-footer__address"><a href="https://trustseal.enamad.ir/?id=602137&amp;Code=ev8N46JxjOVs3VO0LLNxHFBTM7wt4i7P" target="_blank"><img alt="" src="https://trustseal.enamad.ir/logo.aspx?id=602137&amp;Code=ev8N46JxjOVs3VO0LLNxHFBTM7wt4i7P" style="cursor: pointer;"></a></div>
8694        </div>
8695        
8696      </div>
8697    </div>
8698
8699    
8700    
8701      
8702      <details class="sk-footer__col sk-footer__drawer" open>
8703        <summary>آدرس</summary>
8704        <div class="sk-footer__drawer-body">
8705          <ul class="sk-footer__links">
8706            
8707            <li>
8708              <a href="https://maps.app.goo.gl/8z9a8u5J2pd1qx5n7" >
8709                تهران، خیابان دکتر شریعتی، بالاتر از مطهری، نبش کوچه کلاته
8710              </a>
8711            </li>
8712            
8713          </ul>
8714        </div>
8715      </details>
8716      
8717      <details class="sk-footer__col sk-footer__drawer" open>
8718        <summary>پشتیبانی</summary>
8719        <div class="sk-footer__drawer-body">
8720          <ul class="sk-footer__links">
8721            
8722            <li>
8723              <a href="/contact" >
8724                تماس با ما
8725              </a>
8726            </li>
8727            
8728            <li>
8729              <a href="/contact" >
8730                روزهای کاری از ساعت 9 تا 17 پاسخ‌گوی شما هستیم
8731              </a>
8732            </li>
8733            
8734            <li>
8735              <a href="tel:02192001408" >
8736                02192001408
8737              </a>
8738            </li>
8739            
8740          </ul>
8741        </div>
8742      </details>
8743      
8744      
8745    
8746
8747    
8748    <details class="sk-footer__col sk-footer__drawer sk-footer__newsletter" open>
8749      
8750      <summary>
8751        خبرنامه
8752      </summary>
8753      <div class="sk-footer__drawer-body">
8754        <p class="sk-footer__newsletter-text">
8755          
8756            برای دریافت تازه‌ها و پیشنهادهای ویژه در خبرنامه عضو شوید.
8757          
8758        </p>
8759        <div class="sk-footer__newsletter-form">
8760          <input
8761            type="email"
8762            id="subscribe-email"
8763            placeholder="ایمیل شما"
8764            aria-label="ایمیل شما"
8765            autocomplete="email" />
8766          <button type="button" id="subscribe-button">عضویت</button>
8767        </div>
8768        <div class="sk-footer__social">
8769          
8770            
8771            <a href="https://www.instagram.com/online.bookcity/?hl=en"  rel="noreferrer" aria-label="اینستاگرام">
8772              
8773                <img src="/files/Instagram_logo_2016.svg" alt="اینستاگرام" />
8774              
8775            </a>
8776            
8777            <a href="https://t.me/Online_Bookcity"  rel="noreferrer" aria-label="تلگرام">
8778              
8779                <img src="/files/Telegram_logo.svg" alt="تلگرام" />
8780              
8781            </a>
8782            
8783            <a href="http://ble.ir/onlinebookcity"  rel="noreferrer" aria-label="بله">
8784              
8785                <img src="/files/-67955373788714bb085.jpg" alt="بله" />
8786              
8787            </a>
8788            
8789          
8790        </div>
8791      </div>
8792      
8793    </details>
8794  </div>
8795
8796  <div class="sk-footer__bottom">
8797    <div class="sk-footer__container sk-footer__bottom-inner">
8798      <span>
8799        
8800          © تمامی حقوق این وب‌سایت محفوظ است.
8801        
8802      </span>
8803      <span>
8804        
8805          طراحی و توسعه با Rodin365
8806        
8807      </span>
8808    </div>
8809  </div>
8810</footer>
8811
8812<script>
8813(function () {
8814  function skFooterMobileDrawers() {
8815    var root = document.querySelector('.sk-footer[data-component="rodin_footer_sk"]');
8816    if (!root) return;
8817    var isMobile = window.matchMedia("(max-width: 767px)").matches;
8818    root.querySelectorAll(".sk-footer__drawer").forEach(function (el) {
8819      if (isMobile) {
8820        el.removeAttribute("open");
8821      } else {
8822        el.setAttribute("open", "");
8823      }
8824    });
8825  }
8826  skFooterMobileDrawers();
8827  window.addEventListener("resize", skFooterMobileDrawers);
8828})();
8829</script>
8829
8830
8831
8832<script src="/assets/erpnext/js/subscribe.js?v=1.1.0"></script>
8832
8833
8834	
8835	<!-- js should be loaded in body! -->
8836	
8836<script>
8837		frappe.boot = {'sysdefaults': {'float_precision': 3, 'date_format': 'yyyy-mm-dd', 'time_format': 'HH:mm:ss'}, 'time_zone': {'system': 'Asia/Tehran', 'user': 'Asia/Kolkata'}}
8838		// for backward compatibility of some libs
8839		frappe.sys_defaults = frappe.boot.sysdefaults;
8840		frappe._messages = frappe.boot["__messages"] || {};
8841		window.__ = frappe._;
8842	</script>
8842
8843	
8843<script type="text/javascript" src="/assets/frappe/dist/js/frappe-web.bundle.SI6CYMX2.js"></script>
8843
8844	
8845	
8845<script type="text/javascript" src="/website_script.js"></script>
8845
8846	
8846<script type="text/javascript" src="/assets/frappe/js/portal_field_validation.js?v=20260715b"></script>
8846
8847	
8847<script type="text/javascript" src="/assets/frappe/js/person_name_validation.js"></script>
8847
8848	
8848<script type="text/javascript" src="/assets/erpnext/dist/js/erpnext-web.bundle.IO24HLWL.js"></script>
8848
8849	
8849<script type="text/javascript" src="/assets/erpnext/dist/js/components.bundle.GDKTY5AX.js"></script>
8849
8850	
8850<script type="text/javascript" src="/assets/erpnext/js/persian-date.js"></script>
8850
8851	
8851<script type="text/javascript" src="/assets/erpnext/js/persian-datepicker.js"></script>
8851
8852	
8852<script type="text/javascript" src="/assets/erpnext/js/jalaali.js"></script>
8852
8853	
8853<script type="text/javascript" src="/assets/erpnext/js/persian_read_only.js"></script>
8853
8854	
8854<script type="text/javascript" src="/assets/erpnext/js/persian_js_class.js"></script>
8854
8855	
8855<script type="text/javascript" src="/assets/erpnext/js/beauty_banner.js?v=1.0.1"></script>
8855
8856	
8856<script type="text/javascript" src="/assets/erpnext/js/blog_post_swiper.js?v=1.0.0"></script>
8856
8857	
8857<script type="text/javascript" src="/assets/erpnext/js/customer_reviews_rodin.js?v=1.0.0"></script>
8857
8858	
8858<script type="text/javascript" src="/assets/erpnext/js/engraving_gallery_swiper_section.js?v=1.0.0"></script>
8858
8859	
8859<script type="text/javascript" src="/assets/erpnext/js/item_brand_card_group.js?v=1.0.2"></script>
8859
8860	
8860<script type="text/javascript" src="/assets/erpnext/js/mega_nav_4.js?v=1.0.6"></script>
8860
8861	
8861<script type="text/javascript" src="/assets/erpnext/js/publishers_section_swiper.js?v=1.0.0"></script>
8861
8862	
8862<script type="text/javascript" src="/assets/erpnext/js/subscribe.js?v=1.1.0"></script>
8862
8863	
8863<script type="text/javascript" src="/assets/erpnext/js/sub_bs.js?v=1.1.0"></script>
8863
8864	
8864<script type="text/javascript" src="/assets/erpnext/js/swipper_group.js?v=1.0.1"></script>
8864
8865	
8865<script type="text/javascript" src="/assets/erpnext/js/glightbox.js?v=1.0.0"></script>
8865
8866	
8866<script type="text/javascript" src="/assets/erpnext/js/isotope.js?v=1.0.0"></script>
8866
8867	
8867<script type="text/javascript" src="/assets/erpnext/js/imagesloaded.js?v=1.0.0"></script>
8867
8868	
8868<script type="text/javascript" src="/assets/erpnext/js/rodin_slider.js?v=1.0.52"></script>
8868
8869	
8869<script type="text/javascript" src="/assets/erpnext/js/pdf/pdf.js"></script>
8869
8870	
8870<script type="text/javascript" src="/assets/erpnext/js/pdf/pdf.worker.js"></script>
8870
8871	
8871<script type="text/javascript" src="/assets/rodin_services/js/rodin_navbar_cart_sync.js?v=1.0.0"></script>
8871
8872	
8872<script type="text/javascript" src="/assets/rodin_services/js/r365_website_session.js?v=1.3"></script>
vendor: 1 bytes, line 8872
8872
8873<script>// Helper functions for loader
8874function showLoader(loaderId, text) {
8875	const loader = document.getElementById(loaderId);
8876	if (loader) {
8877		if (text) {
8878			const textElement = loader.querySelector('.loader-text');
8879			if (textElement) {
8880				textElement.textContent = text;
8881			}
8882		}
8883		loader.classList.add('active');
8884		// Add loading class to page-card to disable inputs
8885		const pageCard = loader.closest('.page-card');
8886		if (pageCard) {
8887			pageCard.classList.add('loading');
8888		}
8889	}
8890}
8891
8892function hideLoader(loaderId) {
8893	const loader = document.getElementById(loaderId);
8894	if (loader) {
8895		loader.classList.remove('active');
8896		// Remove loading class from page-card
8897		const pageCard = loader.closest('.page-card');
8898		if (pageCard) {
8899			pageCard.classList.remove('loading');
8900		}
8901	}
8902}
8903
8904// login.js
8905
8906window.disable_signup = false;
8907
8908window.login = {};
8909
8910window.verify = {};
8911
8912function person_name_validation_message(result) {
8913	if (!result || result.ok) {
8914		return null;
8915	}
8916	if (result.message) {
8917		return result.message;
8918	}
8919	switch (result.reason) {
8920		case "empty":
8921			return 'لطفا نام خود را وارد کنید';
8922		case "first":
8923			return 'نام نمی تواند شامل عدد یا ستاره (*) باشد';
8924		case "last":
8925			return 'نام خانوادگی نمی تواند شامل عدد یا ستاره (*) باشد';
8926		default:
8927			return 'Please enter a valid name.';
8928	}
8929}
8930
8931const LOGIN_PENDING_NAME_KEY = "login_pending_full_name";
8932
8933function setLoginNameFieldVisible(visible) {
8934	const group = document.getElementById("login-name-field-group");
8935	const input = document.getElementById("login_name");
8936	if (!group || !input) {
8937		return;
8938	}
8939	group.style.display = visible ? "block" : "none";
8940	if (visible) {
8941		input.setAttribute("required", "required");
8942		bindLoginNameInputFilter();
8943	} else {
8944		input.removeAttribute("required");
8945		input.value = "";
8946	}
8947}
8948
8949function isLoginNameRequired() {
8950	return window.get_name_at_sign_up;
8951}
8952
8953function isLoginNameFieldVisible() {
8954	return $("#login-name-field-group").is(":visible");
8955}
8956
8957function normalizeLoginFullName(rawName) {
8958	let full_name = frappe.utils.xss_sanitise((rawName || "").trim());
8959	if (!full_name) {
8960		return { ok: false, full_name: "" };
8961	}
8962	const nameCheck =
8963		window.frappe_validate_person_name &&
8964		window.frappe_validate_person_name.checkSignupFullName(full_name);
8965	if (nameCheck && !nameCheck.ok) {
8966		return { ok: false, full_name: "", message: person_name_validation_message(nameCheck) };
8967	}
8968	if (nameCheck && nameCheck.ok && nameCheck.normalized) {
8969		full_name = frappe.utils.xss_sanitise(nameCheck.normalized);
8970	}
8971	return { ok: true, full_name };
8972}
8973
8974function storePendingLoginName(fullName) {
8975	if (fullName) {
8976		sessionStorage.setItem(LOGIN_PENDING_NAME_KEY, fullName);
8977	} else {
8978		sessionStorage.removeItem(LOGIN_PENDING_NAME_KEY);
8979	}
8980}
8981
8982function getPendingLoginName() {
8983	return sessionStorage.getItem(LOGIN_PENDING_NAME_KEY) || "";
8984}
8985
8986function resolveLoginFullName(mobileNo) {
8987	if (!window.get_name_at_sign_up) {
8988		return { ok: true, full_name: mobileNo };
8989	}
8990	if (!isLoginNameFieldVisible()) {
8991		return { ok: true, full_name: "" };
8992	}
8993	return normalizeLoginFullName($("#login_name").val());
8994}
8995
8996function updateLoginNameForMobile() {
8997	if (!window.get_name_at_sign_up) {
8998		return;
8999	}
9000	const mobile = frappe.utils.xss_sanitise(($("#login_mobile").val() || "").trim());
9001	const mobileNo = check_digits_ascii(mobile);
9002	const regex = /^09\d{9}$/;
9003	if (!regex.test(mobileNo)) {
9004		setLoginNameFieldVisible(true);
9005		return;
9006	}
9007	frappe.call({
9008		method: "frappe.core.doctype.user.user.check_got_name",
9009		args: { user: mobileNo },
9010		callback: function (response) {
9011			setLoginNameFieldVisible(!!response.message);
9012		},
9013	});
9014}
9015
9016function loginNameCharIsDigit(ch) {
9017	try {
9018		return /\p{Nd}/u.test(ch);
9019	} catch (e) {
9020		var code = ch.charCodeAt(0);
9021		return (
9022			(code >= 48 && code <= 57) ||
9023			(code >= 0x06f0 && code <= 0x06f9) ||
9024			(code >= 0x0660 && code <= 0x0669)
9025		);
9026	}
9027}
9028
9029function loginNameCharIsLetter(ch) {
9030	try {
9031		return /\p{L}/u.test(ch);
9032	} catch (e) {
9033		return /[A-Za-z\u0600-\u06FF]/.test(ch);
9034	}
9035}
9036
9037function filterLoginNameInput(raw) {
9038	var s = raw == null ? "" : String(raw);
9039	var out = "";
9040	for (var i = 0; i < s.length; i++) {
9041		var ch = s[i];
9042		if (/\s/u.test(ch) || ch === "\u200c") {
9043			out += ch;
9044			continue;
9045		}
9046		if (loginNameCharIsDigit(ch) || ch === "*") {
9047			continue;
9048		}
9049		if (loginNameCharIsLetter(ch)) {
9050			out += ch;
9051		}
9052	}
9053	return out;
9054}
9055
9056function bindLoginNameInputFilter() {
9057	var el = document.getElementById("login_name");
9058	if (!el || el.__loginNameInputBound) {
9059		return;
9060	}
9061	el.__loginNameInputBound = true;
9062
9063	function applyFilter() {
9064		var filtered = filterLoginNameInput(el.value);
9065		if (filtered !== el.value) {
9066			var pos = el.selectionStart;
9067			var newPos =
9068				typeof pos === "number"
9069					? Math.min(filterLoginNameInput(el.value.slice(0, pos)).length, filtered.length)
9070					: filtered.length;
9071			el.value = filtered;
9072			try {
9073				el.setSelectionRange(newPos, newPos);
9074			} catch (e) {
9075				/* ignore */
9076			}
9077		}
9078	}
9079
9080	el.addEventListener("input", applyFilter);
9081	el.addEventListener("keydown", function (e) {
9082		if (e.ctrlKey || e.metaKey || e.altKey) {
9083			return;
9084		}
9085		if (
9086			e.key === "Backspace" ||
9087			e.key === "Delete" ||
9088			e.key === "Tab" ||
9089			e.key === "Enter" ||
9090			e.key.indexOf("Arrow") === 0
9091		) {
9092			return;
9093		}
9094		if (e.key && e.key.length === 1 && !filterLoginNameInput(e.key)) {
9095			e.preventDefault();
9096		}
9097	});
9098	el.addEventListener("paste", function (e) {
9099		e.preventDefault();
9100		var pasted = (e.clipboardData || window.clipboardData).getData("text");
9101		var start = el.selectionStart == null ? el.value.length : el.selectionStart;
9102		var end = el.selectionEnd == null ? start : el.selectionEnd;
9103		var merged = el.value.slice(0, start) + pasted + el.value.slice(end);
9104		el.value = filterLoginNameInput(merged);
9105		var newPos = filterLoginNameInput(el.value.slice(0, start) + pasted).length;
9106		try {
9107			el.setSelectionRange(newPos, newPos);
9108		} catch (err) {
9109			/* ignore */
9110		}
9111	});
9112}
9113
9114function initLoginNameField() {
9115	if (!window.get_name_at_sign_up) {
9116		setLoginNameFieldVisible(false);
9117		return;
9118	}
9119	setLoginNameFieldVisible(true);
9120	$("#login_mobile").off("blur.loginName").on("blur.loginName", updateLoginNameForMobile);
9121}
9122
9123login.bind_events = function () {
9124	$(window).on("hashchange", function () {
9125		login.route();
9126	});
9127
9128
9129	$(".form-login").on("submit", function (event) {
9130
9131		event.preventDefault();
9132		const password = $("#login_password").val();
9133		const user = frappe.utils.xss_sanitise(($("#login_email").val() || "").trim());
9134		const mobile = frappe.utils.xss_sanitise(($("#login_mobile").val() || "").trim());
9135
9136		// Check if we're in password login mode
9137		const isPasswordMode = $('#email-field-group').is(':visible') && $('#password-field-group').is(':visible');
9138		
9139		// If in password mode, validate email and password
9140		if (isPasswordMode) {
9141			if (!user) {
9142				frappe.msgprint('لطفا شماره موبایل یا ایمیل را وارد کنید');
9143				return false;
9144			}
9145			if (!password) {
9146				frappe.msgprint('لطفا رمز عبور را وارد کنید');
9147				return false;
9148			}
9149			// Show loader for password login
9150			showLoader('loginLoader', 'در حال ورود...');
9151			
9152			// Continue with normal login flow for password mode
9153			var args = {};
9154			args.cmd = "login";
9155			args.usr = check_digits_ascii(user);
9156			args.pwd = check_digits_ascii(password);
9157			args.staff = $("#staff").is(":checked");
9158			args.device = "desktop";
9159
9160			login.call(args).then(() => {
9161				hideLoader('loginLoader');
9162			}).catch(() => {
9163				hideLoader('loginLoader');
9164			});
9165			return false;
9166		}
9167
9168		// OTP login mode - validate mobile number BEFORE making API call
9169		if (!mobile || mobile.trim() === '') {
9170			frappe.msgprint('لطفا یک شماره موبایل معتبر وارد نمایید');
9171			return false;
9172		}
9173		
9174		var args = {};
9175		args.mobile_no = check_digits_ascii(mobile);
9176		const regex = /^09\d{9}$/;
9177		const email_regex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/
9178		if (!regex.test(args.mobile_no) && !email_regex.test(args.mobile_no)) {
9179			frappe.msgprint('شماره موبایل معتبر نیست');
9180			return false;
9181		}
9182
9183		let allow_email_login = window.system_settings && window.system_settings.allow_easy_login_with_email;
9184		if (email_regex.test(args.mobile_no) && !allow_email_login) {
9185			frappe.msgprint('شماره موبایل معتبر نیست');
9186			return false;
9187		}
9188
9189		// Show loader
9190		showLoader('loginLoader', 'در حال ارسال کد...');
9191
9192		let button = document.getElementById("loginButton");
9193		if (button) {
9194			button.disabled = true;
9195		}
9196
9197		args.cmd = "login";
9198		args.staff = $("#staff").is(":checked");
9199		args.device = "desktop";
9200		
9201		// Only set usr and pwd if we're in password mode (they should be empty for OTP mode)
9202		// We already checked isPasswordMode above, so if we reach here, we're in OTP mode
9203		args.usr = "";
9204		args.pwd = "";
9205
9206		const nameResult = resolveLoginFullName(args.mobile_no);
9207		if (!nameResult.ok) {
9208			hideLoader("loginLoader");
9209			if (button) {
9210				button.disabled = false;
9211			}
9212			frappe.msgprint(nameResult.message || 'لطفا نام خود را وارد کنید');
9213			return false;
9214		}
9215
9216		const full_name = nameResult.full_name;
9217		args.name = full_name;
9218		args.get_name = window.get_name_at_sign_up;
9219		args.full_name = full_name;
9220		storePendingLoginName(full_name);
9221
9222		// Send OTP and show OTP page
9223		args.email = frappe.utils.xss_sanitise(($("#login_email").val() || "").trim());
9224		args.cmd = "frappe.core.doctype.user.user.login_sign_up_mobile";
9225		args.redirect_to = "";
9226
9227		frappe.call({
9228			type: "POST",
9229			method: "frappe.core.doctype.user.user.login_sign_up_mobile",
9230			args: args,
9231			callback: function(r) {
9232				hideLoader('loginLoader');
9233				if (button) {
9234					button.disabled = false;
9235				}
9236				if (r && r.exc) {
9237					frappe.msgprint(r.exc);
9238					return;
9239				}
9240				showOTPPage(args.mobile_no, full_name);
9241				if (r && r.message) {
9242					if (typeof r.message === 'object' && r.message.tmp_id) {
9243						document.cookie = "tmp_id=" + r.message.tmp_id;
9244					} else if (r.tmp_id) {
9245						document.cookie = "tmp_id=" + r.tmp_id;
9246					}
9247				}
9248			},
9249			error: function(r) {
9250				hideLoader('loginLoader');
9251				if (button) {
9252					button.disabled = false;
9253				}
9254				let message = 'خطا در ارسال کد. لطفا دوباره تلاش کنید.';
9255				if (r && r.responseJSON && r.responseJSON._server_messages) {
9256					try {
9257						message = JSON.parse(r.responseJSON._server_messages || '[]').map(function(v) {
9258							try {
9259								return JSON.parse(v).message;
9260							} catch (e) {
9261								return v;
9262							}
9263						}).filter(Boolean).join('<br>') || message;
9264					} catch (e) {
9265						// use default message
9266					}
9267				}
9268				frappe.msgprint(message);
9269			}
9270		});
9271		return false;
9272	});
9273
9274	$(".form-signup").on("submit", function (event) {
9275		event.preventDefault();
9276		var args = {};
9277		args.cmd = "frappe.core.doctype.user.user.sign_up";
9278		args.email = check_digits_ascii(($("#signup_email").val() || "").trim());
9279		args.mobile_no = check_digits_ascii(($("#mobile_no").val() || "").trim());
9280		args.redirect_to = frappe.utils.sanitise_redirect(frappe.utils.get_url_arg("redirect-to"));
9281		args.full_name = frappe.utils.xss_sanitise(($("#signup_fullname").val() || "").trim());
9282
9283		var signupNameCheck =
9284			window.frappe_validate_person_name &&
9285			window.frappe_validate_person_name.checkSignupFullName(args.full_name);
9286		if (signupNameCheck && !signupNameCheck.ok) {
9287			login.set_status(person_name_validation_message(signupNameCheck), "red");
9288			return false;
9289		}
9290		if (signupNameCheck && signupNameCheck.ok && signupNameCheck.normalized) {
9291			args.full_name = frappe.utils.xss_sanitise(signupNameCheck.normalized);
9292		}
9293
9294		if (!args.mobile_no) {
9295
9296			if (!args.email || !validate_email(args.email) || !args.full_name) {
9297				login.set_status('ایمیل و نام معتبر مورد نیاز است', 'red');
9298				return false;
9299			}
9300			login.call(args);
9301		}
9302		else {
9303			if (!args.mobile_no || !args.full_name) {
9304				login.set_status('Valid mobile and name required', 'red');
9305				return false;
9306			}
9307			const regex = /^09\d{9}$/;
9308			if (!regex.test(args.mobile_no)) {
9309				login.set_status('شماره موبایل معتبر نیست', 'red');
9310				return false;
9311			}
9312			login.call(args);
9313			window.location.href = "/login#login";
9314
9315		}
9316
9317
9318		return false;
9319	});
9320
9321	$(".form-forgot").on("submit", function (event) {
9322		event.preventDefault();
9323		var args = {};
9324		args.cmd = "frappe.core.doctype.user.user.reset_password";
9325		args.user = ($("#forgot_email").val() || "").trim();
9326		args.mobile_no = ($("#forgot_mobile").val() || "").trim();
9327		if (!args.mobile_no) {
9328			if (!args.user) {
9329				login.set_status('شناسه ورود معتبر مورد نیاز است.', 'red');
9330				return false;
9331			}
9332			login.call(args);
9333			return false;
9334		}
9335		else {
9336			if (!args.mobile_no) {
9337
9338
9339
9340				login.set_status('Valid mobile and name required', 'red');
9341				return false;
9342
9343
9344			}
9345			const regex = /^09\d{9}$/;
9346			if (!regex.test(args.mobile_no)) {
9347				login.set_status('شماره موبایل معتبر نیست', 'red');
9348				return false;
9349			}
9350			login.call(args);
9351			window.location.href = "/login#login";
9352
9353		}
9354
9355	});
9356
9357	$(".form-login-with-email-link").on("submit", function (event) {
9358		event.preventDefault();
9359		var args = {};
9360		args.cmd = "frappe.www.login.send_login_link";
9361		args.email = ($("#login_with_email_link_email").val() || "").trim();
9362		if (!args.email) {
9363			login.set_status('شناسه ورود معتبر مورد نیاز است.', 'red');
9364			return false;
9365		}
9366		login.call(args).then(() => {
9367			login.set_status('لینک ورود به ایمیل شما ارسال شد', 'blue');
9368			$("#login_with_email_link_email").val("");
9369		}).catch(() => {
9370			login.set_status('ارسال لینک ورود', 'blue');
9371		});
9372
9373		return false;
9374	});
9375
9376	$(".toggle-password").click(function () {
9377		var input = $($(this).attr("toggle"));
9378		if (input.attr("type") == "password") {
9379			input.attr("type", "text");
9380			$(this).text('پنهان کردن')
9381		} else {
9382			input.attr("type", "password");
9383			$(this).text('نمایش دهید')
9384		}
9385	});
9386
9387	
9388}
9389
9390
9391login.route = function () {
9392	var route = window.location.hash.slice(1);
9393	if (!route) route = "login";
9394	route = route.replaceAll("-", "_");
9395	login[route]();
9396}
9397
9398login.reset_sections = function (hide) {
9399	if (hide || hide === undefined) {
9400		$("section.for-login").toggle(false);
9401		$("section.for-email-login").toggle(false);
9402		$("section.for-forgot").toggle(false);
9403		$("section.for-login-with-email-link").toggle(false);
9404		$("section.for-signup").toggle(false);
9405	}
9406	$('section:not(.signup-disabled) .indicator').each(function () {
9407		$(this).removeClass().addClass('indicator').addClass('blue')
9408			.text($(this).attr('data-text'));
9409	});
9410}
9411
9412login.login = function () {
9413	login.reset_sections();
9414	$(".for-login").toggle(true);
9415}
9416
9417login.email = function () {
9418	login.reset_sections();
9419	$(".for-email-login").toggle(true);
9420	$("#login_email").focus();
9421}
9422
9423login.steptwo = function () {
9424	login.reset_sections();
9425	$(".for-login").toggle(true);
9426	$("#login_email").focus();
9427}
9428
9429login.forgot = function () {
9430	login.reset_sections();
9431	if ($("#login_email").val()) {
9432		$("#forgot_email").val($("#login_email").val());
9433	}
9434	$(".for-forgot").toggle(true);
9435	$("#forgot_email").focus();
9436}
9437
9438login.login_with_email_link = function () {
9439	login.reset_sections();
9440	if ($("#login_email").val()) {
9441		$("#login_with_email_link_email").val($("#login_email").val());
9442	}
9443	$(".for-login-with-email-link").toggle(true);
9444	$("#login_with_email_link_email").focus();
9445}
9446
9447login.signup = function () {
9448	login.reset_sections();
9449	$(".for-signup").toggle(true);
9450	$("#signup_fullname").focus();
9451}
9452
9453
9454// Login
9455login.call = function (args, callback) {
9456	// setTimeout(()=>{
9457
9458	// 	login.set_status('در حال تأیید...', 'blue');
9459	// }, "1000")
9460	if (!args.staff) {
9461		login.set_status('ورود', 'green');
9462
9463	} else {
9464
9465		login.set_status('در حال تأیید...', 'blue');
9466		$('.verification-mail').text("Check your email please.");
9467	}
9468
9469
9470
9471
9472	return frappe.call({
9473		type: "POST",
9474		args: args,
9475		callback: callback,
9476		freeze: true,
9477		statusCode: login.login_handlers
9478	});
9479}
9480
9481login.set_status = function (message, color) {
9482	$('section:visible .btn-primary').text(message)
9483	if (color == "red") {
9484		$('section:visible .page-card-body').addClass("invalid");
9485	}
9486}
9487
9488login.set_invalid = function (message) {
9489	$(".login-content.page-card").addClass('invalid-login');
9490	setTimeout(() => {
9491		$(".login-content.page-card").removeClass('invalid-login');
9492	}, 500)
9493	login.set_status(message, 'red');
9494	$("#login_password").focus();
9495}
9496
9497login.login_handlers = (function () {
9498	var get_error_handler = function (default_message) {
9499		return function (xhr, data) {
9500			if (xhr.responseJSON) {
9501				data = xhr.responseJSON;
9502			}
9503
9504			var message = default_message;
9505			if (data._server_messages) {
9506				message = ($.map(JSON.parse(data._server_messages || '[]'), function (v) {
9507					// temp fix for messages sent as dict
9508					try {
9509						return JSON.parse(v).message;
9510					} catch (e) {
9511						return v;
9512					}
9513				}) || []).join('<br>') || default_message;
9514			}
9515
9516			if (message === default_message) {
9517				login.set_invalid(message);
9518			} else {
9519				login.reset_sections(false);
9520			}
9521
9522		};
9523	}
9524
9525	var login_handlers = {
9526		200: function (data) {
9527			if (data.message == 'Logged In') {
9528				storePendingLoginName("");
9529				login.set_status('ورود با موفقیت انجام شد', 'green');
9530				document.body.innerHTML = `<div class="centered splash d-flex w-100 h-100 justify-content-center align-items-center" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;">
9531	<img src="/files/bookcity-typography.svg"
9532		style="max-width: 100px; max-height: 100px;display: flex;">
9533</div>`;
9534				window.location.href = frappe.utils.sanitise_redirect(frappe.utils.get_url_arg("redirect-to")) || data.home_page;
9535			} else if (data.message == 'Password Reset') {
9536				window.location.href = frappe.utils.sanitise_redirect(data.redirect_to);
9537			} else if (data.message == "No App") {
9538				storePendingLoginName("");
9539				login.set_status("ورود با موفقیت انجام شد", 'green');
9540				if (localStorage) {
9541					localStorage.removeItem("last_visited");
9542				}
9543				window.location.href = "/";
9544			} else if (window.location.hash === '#forgot') {
9545				if (data.message === 'not found') {
9546					login.set_status('کاربر معتبری نیست', 'red');
9547				} else if (data.message == 'not allowed') {
9548					login.set_status('مجاز نیست', 'red');
9549				} else if (data.message == 'disabled') {
9550					login.set_status('مجاز نیست: کاربر غیرفعال', 'red');
9551				} else {
9552					login.set_status('دستورالعمل ها ایمیل شد', 'green');
9553				}
9554
9555
9556			} else if (window.location.hash === '#signup') {
9557				if (cint(data.message[0]) == 0) {
9558					login.set_status(data.message[1], 'red');
9559				} else {
9560					login.set_status('موفقیت', 'green');
9561					frappe.msgprint(data.message[1])
9562				}
9563				//login.set_status(__(data.message), 'green');
9564			}
9565
9566			//OTP verification
9567			if (data.verification && data.message != 'Logged In') {
9568				login.set_status('موفقیت', 'green');
9569
9570				document.cookie = "tmp_id=" + data.tmp_id;
9571
9572				if (data.verification.method == 'OTP App') {
9573					continue_otp_app(data.verification.setup, data.verification.qrcode);
9574				} else if (data.verification.method == 'SMS') {
9575					// Show OTP page for SMS
9576					const mobileNo = args.mobile_no || $('#login_mobile').val();
9577					if (mobileNo) {
9578						showOTPPage(mobileNo);
9579					} else {
9580						continue_sms(data.verification.setup, data.verification.prompt);
9581					}
9582				} else if (data.verification.method == 'Email') {
9583					continue_email(data.verification.setup, data.verification.prompt);
9584				}
9585			}
9586		},
9587		401: get_error_handler('ورود نامعتبر دوباره امتحان کنید.'),
9588		417: get_error_handler('اوه! مشکلی پیش آمد'),
9589		404: get_error_handler('کاربر وجود ندارد.')
9590	};
9591
9592	return login_handlers;
9593})();
9594
9595frappe.ready(function () {
9596
9597	login.bind_events();
9598	initLoginNameField();
9599
9600	if (!window.location.hash) {
9601		window.location.hash = "#login";
9602	} else {
9603		$(window).trigger("hashchange");
9604	}
9605
9606	$(".form-signup, .form-forgot, .form-login-with-email-link").removeClass("hide");
9607	$(document).trigger('login_rendered');
9608
9609	// Auto-enable staff mode if signup is disabled
9610	if (window.disable_signup) {
9611		$("#staff").prop("checked", true);
9612		staff_login();
9613		// Hide the staff label and its container when signup is disabled
9614		$("#staff-label").closest(".form-group").hide();
9615	}
9616});
9617
9618var verify_token = function (event) {
9619	$(".form-verify").on("submit", function (eventx) {
9620		eventx.preventDefault();
9621		var args = {};
9622		args.cmd = "login";
9623		args.otp = $("#login_token").val();
9624		args.tmp_id = frappe.get_cookie('tmp_id');
9625		if (!args.otp) {
9626			frappe.msgprint('رمز ورود لازم است');
9627			return false;
9628		}
9629		login.call(args);
9630		return false;
9631	});
9632}
9633
9634var request_otp = function (r) {
9635	$('.login-content').empty();
9636	$('.login-content:visible').append(
9637		`<div id="twofactor_div">
9638			<form class="form-verify">
9639				<div class="page-card-head">
9640					<span class="indicator blue" data-text="Verification">تایید</span>
9641				</div>
9642				<div id="otp_div"></div>
9643				<input type="text" id="login_token" autocomplete="off" class="form-control" placeholder=کد تایید required="" autofocus="">
9644				<button class="btn btn-sm btn-primary btn-block mt-3" id="verify_token">بررسی مجدد</button>
9645			</form>
9646		</div>`
9647	);
9648	// add event handler for submit button
9649	verify_token();
9650}
9651
9652var continue_otp_app = function (setup, qrcode) {
9653	request_otp();
9654	var qrcode_div = $('<div class="text-muted" style="padding-bottom: 15px;"></div>');
9655
9656	if (setup) {
9657		direction = $('<div>').attr('id', 'qr_info').html('کد نمایش داده شده در OTP App را وارد کنید.');
9658		qrcode_div.append(direction);
9659		$('#otp_div').prepend(qrcode_div);
9660	} else {
9661		direction = $('<div>').attr('id', 'qr_info').html('راه‌اندازی OTP با استفاده از برنامه OTP تکمیل نشد. لطفا با مدیر تماس بگیرید');
9662		qrcode_div.append(direction);
9663		$('#otp_div').prepend(qrcode_div);
9664	}
9665}
9666
9667var continue_sms = function (setup, prompt) {
9668	// Use new OTP page instead of old request_otp
9669	const mobileNo = $('#login_mobile').val() || $('#display_mobile_number').text();
9670	if (mobileNo && setup) {
9671		showOTPPage(mobileNo);
9672	} else {
9673		// Fallback to old method if needed
9674		request_otp();
9675		var sms_div = $('<div class="text-muted" style="padding-bottom: 15px;"></div>');
9676		if (setup) {
9677			sms_div.append(prompt)
9678			$('#otp_div').prepend(sms_div);
9679		} else {
9680			direction = $('<div>').attr('id', 'qr_info').html(prompt || 'اس ام اس ارسال نشد لطفا با مدیر تماس بگیرید');
9681			sms_div.append(direction);
9682			$('#otp_div').prepend(sms_div)
9683		}
9684	}
9685}
9686
9687var continue_email = function (setup, prompt) {
9688	request_otp();
9689	var email_div = $('<div class="text-muted" style="padding-bottom: 15px;"></div>');
9690
9691	if (setup) {
9692		email_div.append(prompt)
9693		$('#otp_div').prepend(email_div);
9694	} else {
9695		var direction = $('<div>').attr('id', 'qr_info').html(prompt || 'ایمیل کد تأیید ارسال نشد. لطفا با مدیر تماس بگیرید');
9696		email_div.append(direction);
9697		$('#otp_div').prepend(email_div);
9698	}
9699}
9700let interval; // Store the interval ID globally
9701let countdown; // Store the countdown value globally
9702
9703function startCountdown(seconds) {
9704	// Clear any existing interval to avoid multiple intervals running simultaneously
9705	clearInterval(interval);
9706
9707	if (seconds !== 0) {
9708		countdown = seconds;
9709		const countdownElement = document.getElementById('countdown-container');
9710		countdownElement.style.display = 'flex';
9711
9712		interval = setInterval(() => {
9713			document.getElementById('countdown').textContent = `${countdown} ثانیه تا ارسال مجدد کد`;
9714			if (countdown === 0) {
9715				clearInterval(interval);
9716				var is_checked = $("#staff").is(":checked");
9717				if (!is_checked) {
9718					const send_again = document.getElementById('send-code-again');
9719					send_again.style.display = 'flex';
9720				}
9721			}
9722			countdown--;
9723		}, 1000);
9724	}
9725}
9726
9727function stopCountdown() {
9728	clearInterval(interval);
9729}
9730
9731function resetCountdown(seconds) {
9732	stopCountdown();
9733	startCountdown(seconds);
9734}
9735
9736document.addEventListener('DOMContentLoaded', function () {
9737
9738	// document.getElementById("loginButton").addEventListener("click", function() {
9739	// 	let button = document.getElementById("loginButton");
9740	// 	button.disabled = true;  // Disable button
9741	// 	setTimeout(() => {
9742	// 		button.disabled = false;  // Re-enable after 100ms
9743	// 	}, 500);
9744	// });
9745
9746	const login_password = document.getElementById('password-field');
9747
9748	const login_email = document.getElementById('email-field');
9749
9750	const mobile = frappe.utils.xss_sanitise(($("#login_mobile").val() || "").trim());
9751	if (login_password.style.display == 'none' && !mobile) {
9752		$("#login_email").val("");
9753		$("#login_password").val("");
9754		login_email.style.display = 'none';
9755		const username_label = document.getElementById('login-label-username');
9756		username_label.style.display = 'flex';
9757	}
9758
9759	const element = document.getElementById("send-code-again");
9760	// element.addEventListener("click", myFunction);
9761	if (!element.hasEventListener) {
9762		element.addEventListener("click", myFunction);
9763		element.hasEventListener = true; // Mark that the event listener has been added
9764	}
9765	// u = $("#login_email").val();
9766
9767
9768	function myFunction() {
9769
9770		const login_email = document.getElementById('login_email');
9771		login_email.disabled = true;
9772		$('#login_email').css('color', 'gray')
9773		$('#login_email').css('background-color', 'rgba(255, 255, 255, 0.43')
9774
9775		// var get_name = false;
9776		// var full_name = "";
9777
9778
9779		// frappe.call({
9780		// 	method: "frappe.website.doctype.website_settings.website_settings.get_name_at_sign_up",
9781		// 	args:{},
9782		// 	callback: function(response){
9783		// 		if(response){
9784
9785		// 			get_name = response.message;
9786
9787		// 		}
9788		// 	}
9789		// })
9790
9791		// if(get_name){
9792		// 	full_name = frappe.utils.xss_sanitise(($("#name").val() || "").trim())
9793
9794		// }else{
9795		// 	full_name = frappe.utils.xss_sanitise(($("#login_email").val() || "").trim())
9796		// }
9797		let inputVal = ($("#login_email").val() || "").trim();
9798		let isEmail = /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(inputVal);
9799
9800		if (isEmail && allow_email_login) {
9801			frappe.call({
9802				type: "POST",
9803				method: "frappe.core.doctype.user.user.login_sign_up_mobile",
9804				args: {
9805					email: frappe.utils.xss_sanitise(($("#login_email").val() || "").trim()),
9806					full_name: "",
9807					mobile_no: frappe.utils.xss_sanitise(($("#login_email").val() || "").trim()),
9808					redirect_to: frappe.utils.xss_sanitise(($("#login_email").val() || "").trim())
9809				},
9810
9811				callback: function (r) {
9812					const send_again = document.getElementById('send-code-again');
9813					send_again.style.display = 'none';
9814
9815					startCountdown(120);
9816
9817				}
9818			})
9819
9820		} else {
9821			frappe.call({
9822				type: "POST",
9823				method: "frappe.core.doctype.user.user.login_sign_up_mobile",
9824				args: {
9825					email: "",
9826					full_name: frappe.utils.xss_sanitise(($("#login_email").val() || "").trim()),
9827					mobile_no: frappe.utils.xss_sanitise(($("#login_email").val() || "").trim()),
9828					redirect_to: frappe.utils.xss_sanitise(($("#login_email").val() || "").trim())
9829				},
9830
9831				callback: function (r) {
9832					const send_again = document.getElementById('send-code-again');
9833					send_again.style.display = 'none';
9834
9835					startCountdown(120);
9836
9837				}
9838			})
9839		}
9840
9841		// frappe.call({
9842		// 	type: "POST",
9843		// 	method: "frappe.core.doctype.user.user.login_sign_up_mobile",
9844		// 	args: (function () {
9845		// 		let inputVal = ($("#login_email").val() || "").trim();
9846		// 		let isEmail = /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(inputVal);
9847
9848		// 		return {
9849		// 			email: isEmail ? frappe.utils.xss_sanitise(inputVal) : "",
9850		// 			full_name: frappe.utils.xss_sanitise(inputVal),
9851		// 			mobile_no: isEmail ? "" : frappe.utils.xss_sanitise(inputVal),
9852		// 			redirect_to: frappe.utils.xss_sanitise(inputVal)
9853		// 		};
9854		// 	})(),
9855
9856		// 	callback: function (r) {
9857		// 		const send_again = document.getElementById('send-code-again');
9858		// 		send_again.style.display = 'none';
9859
9860		// 		startCountdown(120);
9861		// 	}
9862		// });
9863
9864	}
9865
9866});
9867
9868function active_number() {
9869	const login_email = document.getElementById('login_email');
9870	login_email.disabled = false;
9871
9872	const edit_number = document.getElementById('edit-mobile-number');
9873	edit_number.disabled = true;
9874	stopCountdown();
9875
9876
9877	$('#login_email').css('color', 'black')
9878	$('#login_email').css('background-color', 'white')
9879	const send_again = document.getElementById('send-code-again');
9880	send_again.style.display = 'flex';
9881	// startCountdown(0);
9882
9883}
9884
9885function staff_login() {
9886	var is_staff = $("#staff").is(":checked");
9887
9888	if (is_staff) {
9889		setLoginNameFieldVisible(false);
9890		login.set_status('ورود', 'blue');
9891		const email_label = document.getElementById('login-label-email');
9892		email_label.style.display = 'flex';
9893		const password_label = document.getElementById('login-label-password');
9894		password_label.style.display = 'flex';
9895		const username_label = document.getElementById('login-label-username');
9896		username_label.style.display = 'none';
9897		$("#login_mobile").css("border", "none");
9898		$("#login_email").css("border", "none");
9899		$("#login_password").css("border", "none");
9900		const email_field = document.getElementById('email-field');
9901		email_field.style.display = 'flex';
9902		const password_field = document.getElementById('password-field');
9903		password_field.style.display = 'flex';
9904		const login_mobile = document.getElementById('login_mobile');
9905		login_mobile.style.display = 'none';
9906		const login_email = document.getElementById('login_email');
9907		login_email.disabled = false;
9908		$('#login_email').css('color', 'black')
9909		$('#login_email').css('background-color', 'white')
9910
9911		const countdownElement = document.getElementById('countdown-container');
9912		countdownElement.style.display = 'none';
9913		const send_again = document.getElementById('send-code-again');
9914		send_again.style.display = 'none ';
9915		const edit_mobile = document.getElementById('edit-mobile-number');
9916		edit_mobile.style.display = 'none';
9917
9918		const user = frappe.utils.xss_sanitise(($("#login_email").val() || "").trim());
9919
9920		// Hide staff label if signup is disabled, otherwise set the text
9921		if (window.disable_signup === false || window.disable_signup === "false") {
9922			$("#staff-label").text("ورود با رمز یکبار مصرف");
9923		} 
9924
9925
9926
9927
9928
9929
9930
9931	} else {
9932		initLoginNameField();
9933		login.set_status('ورود', 'blue');
9934		$("#login_email").val("");
9935		$("#login_password").val("");
9936
9937		const email_label = document.getElementById('login-label-email');
9938		email_label.style.display = 'none';
9939		const password_label = document.getElementById('login-label-password');
9940		password_label.style.display = 'none';
9941		const username_label = document.getElementById('login-label-username');
9942		username_label.style.display = 'flex';
9943		$("#login_mobile").css("border", "none");
9944		$("#login_email").css("border", "none");
9945		$("#login_password").css("border", "none");
9946		const user = frappe.utils.xss_sanitise(($("#login_email").val() || "").trim());
9947		const mobile = frappe.utils.xss_sanitise(($("#login_mobile").val() || "").trim());
9948		const pass = $("#login_password").val()
9949		const email_field = document.getElementById('email-field');
9950		email_field.style.display = 'none';
9951		const password_field = document.getElementById('password-field');
9952		password_field.style.display = 'none';
9953		const login_mobile = document.getElementById('login_mobile');
9954		login_mobile.style.display = 'flex';
9955		const login_email = document.getElementById('login_email');
9956		login_email.disabled = true;
9957		$('#login_email').css('color', 'gray')
9958		$('#login_email').css('background-color', 'rgba(255, 255, 255, 0.43)');
9959		if (user && mobile) {
9960
9961			const edit_mobile = document.getElementById('edit-mobile-number');
9962			edit_mobile.style.display = 'flex';
9963
9964
9965		}
9966		if (user && !mobile) {
9967
9968			$("#login_email").val("");
9969			$("#login_password").val("");
9970
9971		}
9972		if (pass && !mobile) {
9973			$("#login_email").val("");
9974			$("#login_password").val("");
9975
9976		}
9977		if (password_field.style.display == 'none') {
9978			var edit_mobile = document.getElementById('edit-mobile-number');
9979			edit_mobile.style.display = 'none';
9980		}
9981
9982		// Hide staff label if signup is disabled, otherwise set the text
9983		if (window.disable_signup) {
9984			$("#staff-label").closest(".form-group").hide();
9985		} else {
9986			$("#staff-label").text("ورود با رمز ثابت");
9987		}
9988
9989
9990
9991
9992
9993
9994	}
9995
9996}
9997
9998
9999
10000
10001
10002function check_staff() {
10003	var is_checked = $("#staff").is(":checked");
10004
10005	if ($("#staff-label").text() == "Website User") {
10006		const user = frappe.utils.xss_sanitise(($("#login_email").val() || "").trim());
10007		const mobile = frappe.utils.xss_sanitise(($("#login_mobile").val() || "").trim());
10008
10009	}
10010	if (is_checked) {
10011		$("#staff").is(":checked") = false;
10012
10013
10014	} else {
10015
10016		$("#staff").is(":checked") = true;
10017
10018
10019	}
10020
10021}
10022
10023
10024function check_digits_ascii(digits) {
10025
10026	var inputValue = "";
10027
10028	for (var i = 0; i < digits.length; i++) {
10029		var currentChar = digits.charAt(i);
10030		var ascii = currentChar.charCodeAt(0);
10031
10032
10033
10034
10035		switch (ascii) {
10036
10037			// 0
10038			case 176219:
10039				currentChar = String.fromCharCode(48);
10040				inputValue = inputValue.substring(0, i) + currentChar + inputValue.substring(i + 1);
10041				break;
10042
10043			case 1776:
10044				currentChar = String.fromCharCode(48);
10045				inputValue = inputValue.substring(0, i) + currentChar + inputValue.substring(i + 1);
10046				break;
10047
10048			// 1
10049			case 177219:
10050				currentChar = String.fromCharCode(49);
10051				inputValue = inputValue.substring(0, i) + currentChar + inputValue.substring(i + 1);
10052				break;
10053
10054			case 1777:
10055				currentChar = String.fromCharCode(49);
10056				inputValue = inputValue.substring(0, i) + currentChar + inputValue.substring(i + 1);
10057				break;
10058
10059			// 2
10060			case 178219:
10061				currentChar = String.fromCharCode(50);
10062				inputValue = inputValue.substring(0, i) + currentChar + inputValue.substring(i + 1);
10063				break;
10064
10065			case 1778:
10066				currentChar = String.fromCharCode(50);
10067				inputValue = inputValue.substring(0, i) + currentChar + inputValue.substring(i + 1);
10068				break;
10069
10070			// 3
10071			case 179219:
10072				currentChar = String.fromCharCode(51);
10073				inputValue = inputValue.substring(0, i) + currentChar + inputValue.substring(i + 1);
10074				break;
10075
10076			case 1779:
10077				currentChar = String.fromCharCode(51);
10078				inputValue = inputValue.substring(0, i) + currentChar + inputValue.substring(i + 1);
10079				break;
10080
10081			// 4
10082			case 180219:
10083				currentChar = String.fromCharCode(52);
10084				inputValue = inputValue.substring(0, i) + currentChar + inputValue.substring(i + 1);
10085				break;
10086
10087			case 1780:
10088				currentChar = String.fromCharCode(52);
10089				inputValue = inputValue.substring(0, i) + currentChar + inputValue.substring(i + 1);
10090				break;
10091
10092			// 5
10093			case 181219:
10094				currentChar = String.fromCharCode(53);
10095				inputValue = inputValue.substring(0, i) + currentChar + inputValue.substring(i + 1);
10096				break;
10097
10098			case 1781:
10099				currentChar = String.fromCharCode(53);
10100				inputValue = inputValue.substring(0, i) + currentChar + inputValue.substring(i + 1);
10101				break;
10102
10103			// 6
10104			case 182219:
10105				currentChar = String.fromCharCode(54);
10106				inputValue = inputValue.substring(0, i) + currentChar + inputValue.substring(i + 1);
10107				break;
10108
10109			case 1782:
10110				currentChar = String.fromCharCode(54);
10111				inputValue = inputValue.substring(0, i) + currentChar + inputValue.substring(i + 1);
10112				break;
10113
10114			// 7
10115			case 183219:
10116				currentChar = String.fromCharCode(55);
10117				inputValue = inputValue.substring(0, i) + currentChar + inputValue.substring(i + 1);
10118				break;
10119
10120			case 1783:
10121				currentChar = String.fromCharCode(55);
10122				inputValue = inputValue.substring(0, i) + currentChar + inputValue.substring(i + 1);
10123				break;
10124
10125			// 8
10126			case 184219:
10127				currentChar = String.fromCharCode(56);
10128				inputValue = inputValue.substring(0, i) + currentChar + inputValue.substring(i + 1);
10129				break;
10130
10131			case 1784:
10132				currentChar = String.fromCharCode(56);
10133				inputValue = inputValue.substring(0, i) + currentChar + inputValue.substring(i + 1);
10134				break;
10135
10136			// 9
10137			case 185219:
10138				currentChar = String.fromCharCode(57);
10139				inputValue = inputValue.substring(0, i) + currentChar + inputValue.substring(i + 1);
10140				break;
10141
10142			case 1785:
10143				currentChar = String.fromCharCode(57);
10144				inputValue = inputValue.substring(0, i) + currentChar + inputValue.substring(i + 1);
10145				break;
10146
10147			default:
10148				inputValue = inputValue.substring(0, i) + currentChar + inputValue.substring(i + 1);
10149		}
10150
10151
10152	}
10153
10154
10155	return inputValue
10156
10157}
10158
10159// OTP Management Functions
10160function showOTPPage(mobileNumber, fullName) {
10161	if (fullName) {
10162		storePendingLoginName(fullName);
10163	}
10164	// Hide login loader if active
10165	hideLoader('loginLoader');
10166	
10167	// Convert to Persian digits if needed
10168	const persianDigits = ['Û°', 'Û±', 'Û²', 'Û³', 'Û´', 'Ûµ', 'Û¶', 'Û·', 'Û¸', 'Û¹'];
10169	let displayNumber = mobileNumber;
10170	if (/^\d+$/.test(mobileNumber)) {
10171		displayNumber = mobileNumber.split('').map(d => persianDigits[parseInt(d)]).join('');
10172	}
10173	
10174	// Hide login form container completely
10175	$('.login-form-container').css('display', 'none').attr('style', function(i, s) {
10176		return (s || '') + ' display: none !important;';
10177	});
10178	// Show OTP page container - add show-otp class
10179	$('.otp-container').addClass('show-otp');
10180	
10181	// Set mobile number
10182	$('#display_mobile_number').text(displayNumber);
10183	// Focus first OTP input
10184	setTimeout(() => {
10185		$('#otp_1').focus();
10186	}, 100);
10187	// Clear all OTP inputs
10188	$('.otp-input').val('').removeClass('filled').addClass('empty').css('color', 'transparent');
10189	clearOTPErrorState();
10190	otpAutoSubmitEnabled = true;
10191	otpSubmitInProgress = false;
10192	// Disable submit button
10193	$('#otp_submit_btn').prop('disabled', true).text('ورود');
10194	
10195	// Start countdown timer
10196	startOTPCountdown(120);
10197}
10198
10199function editMobileNumber() {
10200	// Hide OTP loader if active
10201	hideLoader('otpLoader');
10202	
10203	// Get mobile number from display (convert Persian to English if needed)
10204	const displayNumber = $('#display_mobile_number').text();
10205	const englishDigits = displayNumber.replace(/[Û°-Û¹]/g, function(d) {
10206		return 'Û°Û±Û²Û³Û´ÛµÛ¶Û·Û¸Û¹'.indexOf(d);
10207	}).replace(/\D/g, '');
10208	
10209	// Hide OTP page container - remove show-otp class
10210	$('.otp-container').removeClass('show-otp');
10211	// Show login form container
10212	$('.login-form-container').attr('style', function(i, s) {
10213		return (s ? s.replace(/display:\s*none\s*!important;?/gi, '') : '') + ' display: flex !important;';
10214	});
10215	// Set mobile number in input field
10216	$('#login_mobile').val(englishDigits);
10217	// Focus mobile input
10218	setTimeout(() => {
10219		$('#login_mobile').focus().select();
10220		if (window.get_name_at_sign_up) {
10221			updateLoginNameForMobile();
10222		}
10223	}, 100);
10224	
10225	// Stop countdown if running
10226	if (otpCountdownInterval) {
10227		clearInterval(otpCountdownInterval);
10228		otpCountdownInterval = null;
10229	}
10230	$('#otp_countdown').hide();
10231	$('#otp_resend_link').hide();
10232}
10233
10234// Initialize OTP input handlers
10235function initOTPInputs() {
10236	// Function to update empty state (show/hide dash)
10237	function updateEmptyState(input) {
10238		const $input = $(input);
10239		const $wrapper = $input.closest('.otp-input-wrapper');
10240		if (!$input.val() || $input.val().trim() === '') {
10241			$input.addClass('empty');
10242			// Only show dash if not focused
10243			if (!$input.is(':focus')) {
10244				$wrapper.addClass('show-dash');
10245			} else {
10246				$wrapper.removeClass('show-dash');
10247			}
10248		} else {
10249			$input.removeClass('empty');
10250			$wrapper.removeClass('show-dash');
10251		}
10252	}
10253	
10254	// Initialize all inputs with empty state
10255	$('.otp-input').each(function() {
10256		updateEmptyState(this);
10257	});
10258	
10259	// Handle focus - border changes to dark blue, hide dash
10260	$('.otp-input').on('focus', function() {
10261		const $input = $(this);
10262		const $wrapper = $input.closest('.otp-input-wrapper');
10263		// Hide dash when focused
10264		$wrapper.removeClass('show-dash');
10265		// Border will change to dark blue via CSS :focus
10266	});
10267	
10268	// Handle blur - show dash if empty, reset border
10269	$('.otp-input').on('blur', function() {
10270		const $input = $(this);
10271		updateEmptyState(this);
10272	});
10273	
10274	$('.otp-input').on('input', function() {
10275		const currentInput = $(this);
10276		const value = currentInput.val();
10277		
10278		// Only allow numbers
10279		if (value && !/^\d$/.test(value)) {
10280			currentInput.val('');
10281			updateEmptyState(currentInput[0]);
10282			return;
10283		}
10284		
10285		// Remove empty class and add filled class
10286		if (value) {
10287			clearOTPErrorState();
10288			currentInput.removeClass('empty');
10289			currentInput.addClass('filled');
10290			// Change text color to dark primary color
10291			currentInput.css('color', 'var(--dark-primary)');
10292		} else {
10293			currentInput.removeClass('filled');
10294			currentInput.addClass('empty');
10295			currentInput.css('color', 'transparent');
10296		}
10297		
10298		// Update empty state to manage dash display
10299		updateEmptyState(currentInput[0]);
10300		
10301		// Move to next input if value entered
10302		if (value && currentInput.closest('.otp-input-wrapper').next('.otp-input-wrapper').length) {
10303			currentInput.closest('.otp-input-wrapper').next('.otp-input-wrapper').find('.otp-input').focus();
10304		}
10305		
10306		// Check if all fields are filled
10307		checkOTPComplete();
10308	});
10309	
10310	// Handle backspace
10311	$('.otp-input').on('keydown', function(e) {
10312		const $input = $(this);
10313		if (e.key === 'Backspace' && !$input.val() && $input.closest('.otp-input-wrapper').prev('.otp-input-wrapper').length) {
10314			$input.closest('.otp-input-wrapper').prev('.otp-input-wrapper').find('.otp-input').focus();
10315		} else if (e.key === 'Backspace' && $input.val()) {
10316			// Clear current input on backspace
10317			setTimeout(() => {
10318				if (!$input.val()) {
10319					$input.removeClass('filled');
10320					$input.addClass('empty');
10321					$input.css('color', 'transparent');
10322					updateEmptyState($input[0]);
10323				}
10324			}, 0);
10325		}
10326	});
10327	
10328	// Handle paste
10329	$('.otp-input').on('paste', function(e) {
10330		e.preventDefault();
10331		const pastedData = (e.originalEvent.clipboardData || window.clipboardData).getData('text');
10332		const digits = pastedData.replace(/\D/g, '').substring(0, 5);
10333		
10334		$('.otp-input').each(function(index) {
10335			const $input = $(this);
10336			if (index < digits.length) {
10337				$input.val(digits[index]).addClass('filled').removeClass('empty');
10338				$input.css('color', 'var(--dark-primary)');
10339			} else {
10340				$input.val('').removeClass('filled').addClass('empty');
10341				$input.css('color', 'transparent');
10342			}
10343			updateEmptyState($input[0]);
10344		});
10345		
10346		if (digits.length === 5) {
10347			$('#otp_5').focus();
10348		} else if (digits.length > 0) {
10349			$('#otp_' + digits.length).focus();
10350		}
10351		
10352		checkOTPComplete();
10353	});
10354}
10355
10356function checkOTPComplete() {
10357	const otp1 = $('#otp_1').val();
10358	const otp2 = $('#otp_2').val();
10359	const otp3 = $('#otp_3').val();
10360	const otp4 = $('#otp_4').val();
10361	const otp5 = $('#otp_5').val();
10362	
10363	if (otp1 && otp2 && otp3 && otp4 && otp5) {
10364		$('#otp_submit_btn').prop('disabled', false);
10365		if (otpAutoSubmitEnabled && !otpSubmitInProgress) {
10366			handleOTPSubmit(true);
10367		}
10368	} else {
10369		$('#otp_submit_btn').prop('disabled', true);
10370	}
10371}
10372
10373// Handle OTP form submission
10374function handleOTPSubmit(isAutoSubmit = false) {
10375	if (otpSubmitInProgress) {
10376		return;
10377	}
10378
10379	const otp = $('#otp_1').val() + $('#otp_2').val() + $('#otp_3').val() + $('#otp_4').val() + $('#otp_5').val();
10380	
10381	if (otp.length !== 5) {
10382		frappe.msgprint('لطفا کد 5 رقمی را کامل وارد کنید');
10383		return;
10384	}
10385	
10386	// Get mobile number and convert Persian to English
10387	const displayNumber = $('#display_mobile_number').text();
10388	const mobileNo = displayNumber.replace(/[Û°-Û¹]/g, function(d) {
10389		return 'Û°Û±Û²Û³Û´ÛµÛ¶Û·Û¸Û¹'.indexOf(d);
10390	}).replace(/\D/g, '');
10391	
10392	if (!mobileNo) {
10393		frappe.msgprint('شماره موبایل یافت نشد');
10394		return;
10395	}
10396	
10397	otpSubmitInProgress = true;
10398
10399	// Show loader
10400	showLoader('otpLoader', 'در حال بررسی...');
10401	
10402	var args = {};
10403	args.cmd = "login";
10404	args.usr = mobileNo; // Mobile number as username
10405	args.pwd = otp; // OTP as password for SMS login
10406	args.otp = otp; // Also send as otp for 2FA compatibility
10407	args.mobile_no = mobileNo;
10408	args.tmp_id = frappe.get_cookie('tmp_id');
10409	const pendingName = getPendingLoginName();
10410	if (pendingName) {
10411		args.name = pendingName;
10412	}
10413	
10414	// Disable submit button during request
10415	$('#otp_submit_btn').prop('disabled', true).text('در حال بررسی...');
10416	
10417	login.call(args, function(data) {
10418		// Hide loader
10419		hideLoader('otpLoader');
10420		otpSubmitInProgress = false;
10421		// Re-enable button if login fails
10422		if (data && data.message !== 'Logged In' && data.message !== 'No App') {
10423			if (isAutoSubmit) {
10424				otpAutoSubmitEnabled = false;
10425			}
10426			setOTPErrorState();
10427			$('#otp_submit_btn').prop('disabled', false).text('ورود');
10428			// Show error message if available
10429			if (data.exc) {
10430				frappe.msgprint(data.exc);
10431			} else if (data.message) {
10432				frappe.msgprint(data.message);
10433			}
10434		}
10435	}).fail(function(error) {
10436		// Hide loader
10437		hideLoader('otpLoader');
10438		otpSubmitInProgress = false;
10439		otpAutoSubmitEnabled = false;
10440		setOTPErrorState();
10441		$('#otp_submit_btn').prop('disabled', false).text('ورود');
10442		if (error && error.responseJSON && error.responseJSON._server_messages) {
10443			try {
10444				const messages = JSON.parse(error.responseJSON._server_messages || '[]').map(function(v) {
10445					try {
10446						return JSON.parse(v).message;
10447					} catch (e) {
10448						return v;
10449					}
10450				}).filter(Boolean);
10451				if (messages.length) {
10452					frappe.msgprint(messages.join('<br>'));
10453					return;
10454				}
10455			} catch (e) {
10456				// fall through to generic message
10457			}
10458		}
10459		if (error && error.message) {
10460			frappe.msgprint(error.message);
10461		} else {
10462			frappe.msgprint('خطا در ورود. لطفا دوباره تلاش کنید.');
10463		}
10464	});
10465}
10466
10467// OTP Countdown Timer
10468let otpCountdownInterval = null;
10469let otpCountdownSeconds = 0;
10470let otpAutoSubmitEnabled = true;
10471let otpSubmitInProgress = false;
10472
10473function clearOTPErrorState() {
10474	$('.otp-input').removeClass('otp-invalid');
10475}
10476
10477function setOTPErrorState() {
10478	$('.otp-input').addClass('otp-invalid');
10479}
10480
10481function startOTPCountdown(seconds) {
10482	otpCountdownSeconds = seconds;
10483	
10484	// Clear existing interval
10485	if (otpCountdownInterval) {
10486		clearInterval(otpCountdownInterval);
10487	}
10488	
10489	// Show countdown, hide resend link
10490	$('#otp_countdown').show();
10491	$('#otp_resend_link').hide();
10492	
10493	// Update countdown display
10494	updateOTPCountdown();
10495	
10496	// Start interval
10497	otpCountdownInterval = setInterval(function() {
10498		otpCountdownSeconds--;
10499		updateOTPCountdown();
10500		
10501		if (otpCountdownSeconds <= 0) {
10502			clearInterval(otpCountdownInterval);
10503			otpCountdownInterval = null;
10504			// Show resend link, hide countdown
10505			$('#otp_countdown').hide();
10506			$('#otp_resend_link').show();
10507		}
10508	}, 1000);
10509}
10510
10511function updateOTPCountdown() {
10512	const minutes = Math.floor(otpCountdownSeconds / 60);
10513	const seconds = otpCountdownSeconds % 60;
10514	const persianDigits = ['Û°', 'Û±', 'Û²', 'Û³', 'Û´', 'Ûµ', 'Û¶', 'Û·', 'Û¸', 'Û¹'];
10515	
10516	let displayText = '';
10517	if (minutes > 0) {
10518		displayText = minutes.toString().split('').map(d => persianDigits[parseInt(d)]).join('') + ':' + 
10519			seconds.toString().padStart(2, '0').split('').map(d => persianDigits[parseInt(d)]).join('');
10520	} else {
10521		displayText = seconds.toString().split('').map(d => persianDigits[parseInt(d)]).join('') + ' ثانیه تا ارسال مجدد کد';
10522	}
10523	
10524	$('#countdown_text').text(displayText);
10525}
10526
10527function resendOTP() {
10528	const mobileNumber = $('#display_mobile_number').text().replace(/[Û°-Û¹]/g, function(d) {
10529		return 'Û°Û±Û²Û³Û´ÛµÛ¶Û·Û¸Û¹'.indexOf(d);
10530	}).replace(/\D/g, '');
10531	
10532	if (!mobileNumber) {
10533		frappe.msgprint('شماره موبایل یافت نشد');
10534		return;
10535	}
10536	
10537	// Call API to resend OTP
10538	var args = {
10539		cmd: "frappe.core.doctype.user.user.login_sign_up_mobile",
10540		mobile_no: mobileNumber,
10541		email: "",
10542		full_name: getPendingLoginName(),
10543		redirect_to: ""
10544	};
10545	
10546	frappe.call({
10547		type: "POST",
10548		method: "frappe.core.doctype.user.user.login_sign_up_mobile",
10549		args: args,
10550		callback: function(r) {
10551			if (r && !r.exc) {
10552				frappe.show_alert('کد مجدداً ارسال شد', 3);
10553				// Restart countdown
10554				startOTPCountdown(120);
10555			} else {
10556				frappe.msgprint('خطا در ارسال مجدد کد');
10557			}
10558		}
10559	});
10560}
10561
10562// Toggle between mobile OTP login and password login
10563function togglePasswordLogin() {
10564	// Hide any active loaders
10565	hideLoader('loginLoader');
10566	hideLoader('otpLoader');
10567	
10568	const isPasswordMode = $('#email-field-group').is(':visible');
10569	
10570	if (isPasswordMode) {
10571		// Switch to mobile OTP mode
10572		$('#email-field-group').hide();
10573		$('#password-field-group').hide();
10574		$('#login_mobile').closest('.form-group').show();
10575		initLoginNameField();
10576		$('#loginButton').show();
10577		$('#passwordLoginButton').hide();
10578		$('#togglePasswordLoginBtn').show();
10579		$('#toggleToOtpLogin').hide();
10580		// Clear email and password fields when switching back to OTP mode
10581		$('#login_email').val('');
10582		$('#login_password').val('');
10583		$('#login_mobile').focus();
10584	} else {
10585		// Switch to password login mode — name is only collected in OTP/signup flow
10586		setLoginNameFieldVisible(false);
10587		$('#login_mobile').closest('.form-group').hide();
10588		$('#email-field-group').show();
10589		$('#password-field-group').show();
10590		$('#loginButton').hide();
10591		$('#passwordLoginButton').show();
10592		$('#togglePasswordLoginBtn').hide();
10593		$('#toggleToOtpLogin').show();
10594		// Clear mobile field when switching to password mode
10595		$('#login_mobile').val('');
10596		$('#login_email').focus();
10597	}
10598}
10599
10600// Initialize on page load
10601$(document).ready(function() {
10602	// Ensure OTP container is hidden on page load
10603	$('.otp-container').removeClass('show-otp');
10604	$('.login-form-container').attr('style', function(i, s) {
10605		return (s ? s.replace(/display:\s*none\s*!important;?/gi, '') : '') + ' display: flex !important;';
10606	});
10607	
10608	// Ensure password login fields are hidden by default
10609	$('#email-field-group').hide();
10610	$('#password-field-group').hide();
10611	$('#passwordLoginButton').hide();
10612	$('#toggleToOtpLogin').hide();
10613	
10614	initOTPInputs();
10615	
10616	// Handle OTP form submission
10617	$('.form-otp-verification').on('submit', function(e) {
10618		e.preventDefault();
10619		handleOTPSubmit(false);
10620	});
10621});</script>
10621
10622
10623	
10623<script>frappe.csrf_token = "None";</script>
10623<!-- 
10623<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/aos.js"></script>
10623
10624	
10624<script>
10625		AOS.init({
10626			duration: 300,  // Faster animation (default: 1000ms)
10627			once: true,     // Animation happens only once
10628			offset: 200,    // Trigger animation 100px before element comes into view
10629			easing: 'ease-in-out'
10630		});
10631	</script>
10631 -->
10632
10633</body>
10634
10635</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.