@font-face { font-family: 'Vazirmatn'; src: local('Vazirmatn'), url('https://fonts.googleapis.com/css2?family=Vazirmatn:wght@300;400;600;800&display=swap'); }
:root{ --bg1:#0a0a0f; --text:#eaeef7; --muted:#b7c1d6; --card:rgba(255,255,255,0.06); --glass:rgba(255,255,255,0.08); --yellow:#ffd000; --orange:#ff8800; --shadow:0 10px 30px rgba(0,0,0,.5); }
*{box-sizing:border-box} html,body{height:100%} body{margin:0;background:var(--bg1);color:var(--text);font-family: Vazirmatn, system-ui, sans-serif;}
.gradient-bg{ background: radial-gradient(1200px 600px at 10% -10%, #00f, transparent), radial-gradient(1200px 600px at 90% 110%, #0ff, transparent), radial-gradient(1200px 600px at 10% 110%, #f0f, transparent), #02030f; min-height:100vh;}

/* --- Anti-jitter fixes for download center background & layout --- */
html { overflow-y: scroll; }         /* keep vertical scrollbar always to prevent horizontal jump */
body { overflow-x: hidden; }

/* Make gradient/image background a fixed layer independent of content height */
body.gradient-bg, body.admin-bg {
  position: relative;
}
body.gradient-bg::before, body.admin-bg::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: -1;
  /* inherit final background from inline style or theme */
  background: inherit;
  background-attachment: fixed;
  background-repeat: no-repeat;
  background-position: center;
  background-size: cover;
  transform: translateZ(0); /* force its own compositing layer */
  will-change: transform;
}
.nav{display:flex;justify-content:space-between;align-items:center;padding:14px 24px;backdrop-filter: blur(8px);background: linear-gradient(180deg, rgba(0,0,0,.5), rgba(0,0,0,.1)); position:sticky; top:0; z-index:10}
.nav a{color:var(--text); text-decoration:none; margin-inline:10px}
.nav a.active{color:var(--yellow)}
.brand{font-weight:800}
.center{display:flex;justify-content:center;align-items:center;flex-direction:column;padding:8vh 16px;text-align:center}
.hero h1{margin:0 0 8px 0; letter-spacing:-1px}
.sub{color:var(--muted)}
.container{max-width:1000px;margin:20px auto;padding:0 16px}
.card{background:var(--card);border:1px solid rgba(255,255,255,.08);border-radius:16px;padding:16px;box-shadow:var(--shadow);backdrop-filter: blur(10px);}
.kpi{font-size:24px}
.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;align-items:center}
.list{display:grid;gap:12px;margin-top:14px}
.item-head{display:flex;justify-content:space-between;align-items:center}
.pill{border:1px solid rgba(255,255,255,.2);padding:.2rem .6rem;border-radius:999px;color:var(--muted);font-size:.85rem}
.item-actions{display:flex;gap:8px;flex-wrap:wrap}
.empty{color:var(--muted)}
.form label{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}
.form input,.form textarea,.form select{padding:10px;border-radius:10px;border:1px solid rgba(255,255,255,.15);background:rgba(255,255,255,.04);color:var(--text)}
.alert{padding:10px 12px;border-radius:12px;margin:10px 0}
.alert.success{background: rgba(0,255,120,.15);border:1px solid rgba(0,255,120,.3)}
.alert.error{background: rgba(255,0,70,.12);border:1px solid rgba(255,0,70,.3)}
.alert.info{background: rgba(0,150,255,.12);border:1px solid rgba(0,150,255,.3)}
.btn{padding:10px 14px;border-radius:14px;border:none;background:rgba(255,255,255,.08);color:var(--text);cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:8px; box-shadow: var(--shadow)}
.btn.glass{background:rgba(255,255,255,.12); border:1px solid rgba(255,255,255,.2)}
.btn.yellow{background: linear-gradient(90deg, var(--yellow), var(--orange)); color:#111; font-weight:700}
.btn.outline{background:transparent;border:1px solid rgba(255,255,255,.3)}
.btn.danger{background: rgba(255,0,70,.2);border:1px solid rgba(255,255,255,.5)}
.table{width:100%;border-collapse: collapse}
.table th,.table td{padding:10px;border-bottom:1px dashed rgba(255,255,255,.15)}
.mono{font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace}
.grid2{display:grid;grid-template-columns:1fr 1fr; gap:10px}
.grid2 .full{grid-column:1/-1}
.cards-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}
.collection-tile{ text-decoration:none; color: var(--text); }
.collection-tile:hover{ text-decoration:none; }
.collection-tile h3, .collection-tile p{ color: var(--text); }
.collection-tile .muted{ color: var(--muted); }
.parts{display:flex;flex-direction:column;gap:8px;margin-top:8px}
.part-row{display:flex;gap:8px;align-items:center;justify-content:flex-start;flex-wrap:wrap}
.part-row .title{flex:1; color:#eaeef7}


/* search */
.form input[name="q"]{ min-width: 220px; }


/* responsive tweaks */
.table-wrap{ width:100%; overflow-x:auto; -webkit-overflow-scrolling:touch }
.table{ min-width: 720px }

@media (max-width: 880px){
  .container{ padding: 0 12px }
  .cards-grid{ grid-template-columns: repeat(auto-fit, minmax(220px,1fr)); }
  .stats-grid{ grid-template-columns: repeat(auto-fit, minmax(180px,1fr)); }
  .grid2{ grid-template-columns: 1fr; }
  .item-head{ flex-direction: column; align-items: flex-start; gap: 8px; }
  .item-actions{ flex-direction: column; align-items: stretch; }
  .part-row{ flex-direction: column; align-items: stretch; }
  .pill{ align-self: flex-start; }
  .nav{ flex-wrap: wrap; gap: 8px; }
  .nav nav{ display:flex; flex-wrap:wrap; gap:8px; }
  .hero{ padding: 6vh 12px; }
}

/* Extra small phones */
@media (max-width: 420px){
  .brand{ font-size: 16px }
  .btn{ padding: 9px 12px; }
  .pill{ font-size: .8rem }
  .kpi{ font-size: 20px }
}

.brand .logo{height:28px;display:inline-block;vertical-align:middle}


/* === Neon Progress Preloader === */
#preloader-overlay{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.88);backdrop-filter:blur(3px);}
.preloader-box{width:320px;max-width:80vw;text-align:center;}
.preloader-title{font-weight:700;letter-spacing:.5px;margin-bottom:10px;opacity:.9}
.preloader-bar{height:6px;border-radius:999px;overflow:hidden;background:rgba(255,255,255,.12);box-shadow:0 0 24px rgba(255,120,0,.25) inset;}
.preloader-fill{width:0;height:100%;border-radius:999px;background:linear-gradient(90deg,#ff7a00,#ffd500);
animation:preloader-fill 2.2s ease-in-out infinite;}
.preloader-glow{position:relative;height:22px;margin-top:8px;filter:blur(8px);opacity:.7}
.preloader-dot{position:absolute;left:0;top:0;width:10px;height:10px;border-radius:50%;background:#ffd500;animation:preloader-dot 1.1s linear infinite;}
@keyframes preloader-fill{0%{width:0%}50%{width:84%}100%{width:100%}}
@keyframes preloader-dot{0%{transform:translateX(0)}100%{transform:translateX(100%)}}
@media (prefers-reduced-motion: reduce){.preloader-fill,.preloader-dot{animation-duration:1ms;animation-iteration-count:1}}

/* === Global Button Click Animations (Ripple + Press) === */
.btn, button, .button, input[type=submit], a.btn, .btn.outline {
  position: relative;
  overflow: hidden;
  transform: translateZ(0);
  transition: transform .08s ease, box-shadow .2s ease;
}
.btn:active, button:active, .button:active, input[type=submit]:active, a.btn:active {
  transform: scale(0.98);
}
.ripple {
  position: absolute;
  border-radius: 50%;
  pointer-events: none;
  inset: 0 auto auto 0;
  transform: translate(-50%, -50%);
  width: 10px; height: 10px;
  background: radial-gradient(circle, rgba(255,213,0,.65) 0%, rgba(255,122,0,.45) 40%, rgba(255,122,0,0) 70%);
  opacity: 0;
  animation: ripple-anim .6s ease-out forwards;
  filter: drop-shadow(0 0 8px rgba(255,122,0,.6));
}
@keyframes ripple-anim {
  0% { opacity: .9; transform: translate(-50%, -50%) scale(0.2); }
  70% { opacity: .35; transform: translate(-50%, -50%) scale(16); }
  100% { opacity: 0; transform: translate(-50%, -50%) scale(22); }
}
.btn:hover, button:hover, .button:hover, input[type=submit]:hover, a.btn:hover {
  box-shadow: 0 0 0 0 rgba(255,122,0,0), 0 0 24px rgba(255,122,0,.2) inset;
}


/* === Unified Persian font: Vazir === */
@font-face{
  font-family:'Vazir';
  src: url('/assets/fonts/Vazir.woff2') format('woff2'),
       url('/assets/fonts/Vazir.woff') format('woff');
  font-weight: normal;
  font-style: normal;
  font-display: swap;
}
html, body, button, input, select, textarea {
  font-family: 'Vazir', sans-serif !important;
}



/* Prevent grid reflow jitter while images or counts load */
.cards-grid { contain: layout paint; }


/* === NEON ORANGE GLOBAL SCROLLBAR (2025-11-12) === */
html, body { height: 100%; overflow-y: auto; }

/* Use a single global scrollbar: prevent nested scrollbars */
[class*="overflow"], [class*="scroll"], .scroll, .scroll-y, .overflow-auto, .overflow-y-auto, .overflow { 
  overflow: visible !important;
}

/* Keep scrollbar on the RIGHT even on RTL pages.
   Trick: body ltr + content rtl */
body { direction: ltr; }
body > * { direction: rtl; }

/* Firefox (Gecko) */
html { 
  scrollbar-width: thin;
  scrollbar-color: #ff7a00 #0a0a0a;
}

/* WebKit (Chrome, Edge, Opera, Safari) */
::-webkit-scrollbar {
  width: 11px;
}
::-webkit-scrollbar-track {
  background: #0a0a0a;
}
::-webkit-scrollbar-thumb {
  background: linear-gradient(180deg, #ffae00 0%, #ff4d00 100%);
  border: 2px solid #0f0f0f;
  border-radius: 8px;
  box-shadow: 0 0 8px rgba(255, 120, 0, 0.8), inset 0 0 8px rgba(255, 120, 0, 0.6);
}
::-webkit-scrollbar-thumb:hover {
  background: linear-gradient(180deg, #ffc000 0%, #ff3b00 100%);
  box-shadow: 0 0 10px rgba(255, 140, 0, 0.95), inset 0 0 10px rgba(255, 100, 0, 0.75);
}
/* Optional glow on track edges */
::-webkit-scrollbar-corner {
  background: #0a0a0a;
}
/* === /NEON ORANGE GLOBAL SCROLLBAR === */


/* === Neon Download Button (2025-11-12) === */
.neon-download{
  background: linear-gradient(90deg,#ffae00,#ff4d00);
  color:#0a0a0a;
  border:none;
  padding:8px 14px;
  border-radius:10px;
  font-weight:700;
  cursor:pointer;
  box-shadow: 0 0 8px rgba(255,120,0,.8), inset 0 0 6px rgba(255,120,0,.6);
  transition: transform .08s ease, box-shadow .2s ease, filter .2s ease;
  margin-inline-start:8px;
}
.neon-download:hover{
  filter: brightness(1.05);
  box-shadow: 0 0 10px rgba(255,140,0,.95), inset 0 0 8px rgba(255,100,0,.75);
  transform: translateY(-1px);
}
.neon-download:active{ transform: translateY(0); }
/* === /Neon Download Button === */


/* === Neon 'Crack Online' Button (2025-11-12) === */
.neon-crack{
  background: linear-gradient(90deg,#ffae00,#ff4d00);
  color:#0a0a0a;
  border:none;
  padding:8px 14px;
  border-radius:10px;
  font-weight:800;
  cursor:pointer;
  display:inline-flex;
  align-items:center;
  gap:8px;
  text-decoration:none;
  box-shadow: 0 0 8px rgba(255,120,0,.8), inset 0 0 6px rgba(255,120,0,.6);
  transition: transform .08s ease, box-shadow .2s ease, filter .2s ease;
  margin-inline-start:8px;
}
.neon-crack:hover{
  filter: brightness(1.05);
  box-shadow: 0 0 10px rgba(255,140,0,.95), inset 0 0 8px rgba(255,100,0,.75);
  transform: translateY(-1px);
}
.neon-crack:active{ transform: translateY(0); }
/* === /Neon 'Crack Online' Button === */
