:root{
  --bg:#ffffff; --ink:#0a0a0a; --muted:#8a8a8a; --line:#ececec;
  --soft:#fafafa; --accent:#0a0a0a; --ok:#0f9d58; --err:#d93025; --warn:#f4b400;
  --radius:16px;
  --ui-font:'AradFDVF Dots2',Vazirmatn,-apple-system,sans-serif;
}

/* فونت آراد (AradFDVF Dots2) — فایل متغیّرِ فونت را در frontend/fonts/ بگذارید.
   تا وقتی فایل موجود نباشد، خودکار Vazirmatn جایگزین می‌شود. */
@font-face{
  font-family:'AradFDVF Dots2';
  src:url('fonts/AradFDVFDots2.woff2') format('woff2'),
      url('fonts/AradFDVFDots2.woff') format('woff'),
      url('fonts/AradFDVFDots2.ttf') format('truetype'),
      url('fonts/AradFDVFDots2.otf') format('opentype');
  font-weight:100 800;   /* فونت متغیّر: از نازک تا اکسترابولد */
  font-display:swap;
}

*{margin:0;padding:0;box-sizing:border-box;font-family:var(--ui-font)}
body{background:var(--bg);color:var(--ink);line-height:1.7}
a{color:inherit;text-decoration:none}
.view{max-width:1180px;margin:0 auto;padding:26px 32px 80px}

/* topbar */
.topbar{display:flex;align-items:center;justify-content:space-between;
  padding:14px 28px;border-bottom:1px solid var(--line);position:sticky;top:0;background:#fff;z-index:50}
.brand{font-weight:900;font-size:22px;cursor:pointer;letter-spacing:.18em;
  font-family:var(--ui-font);white-space:nowrap}
.badge-admin{font-size:11px;letter-spacing:0;color:var(--muted);font-weight:600;
  border:1px solid var(--line);border-radius:20px;padding:2px 8px;margin-inline-start:6px}
.nav{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.nav a{padding:8px 14px;border-radius:10px;color:var(--muted);font-weight:600;font-size:14px;cursor:pointer}
.nav a:hover{background:var(--soft);color:var(--ink)}
.nav a.active{color:var(--ink);background:var(--soft)}
.nav .pill{background:var(--ink);color:#fff;border-radius:10px;padding:8px 14px;font-size:13px}
.navtoggle{display:none;background:none;border:none;font-size:24px;cursor:pointer;color:var(--ink);line-height:1}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;
  background:var(--ink);color:#fff;border:none;border-radius:12px;padding:13px 22px;
  font-weight:700;font-size:15px;cursor:pointer;transition:.15s}
.btn:hover{opacity:.88}
.btn:disabled{opacity:.4;cursor:not-allowed}
.btn.ghost{background:#fff;color:var(--ink);border:1.5px solid var(--line)}
.btn.ghost:hover{border-color:var(--ink)}
.btn.block{width:100%}
.btn.sm{padding:8px 14px;font-size:13px;border-radius:10px}

/* cards & layout */
.card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:24px}
.card+.card{margin-top:16px}
h1{font-size:28px;font-weight:900;margin-bottom:6px}
h2{font-size:20px;font-weight:800;margin-bottom:14px}
.sub{color:var(--muted);font-size:14px;margin-bottom:22px}
.row{display:flex;gap:16px;flex-wrap:wrap}
.row>*{flex:1;min-width:220px}
label{display:block;font-size:13px;font-weight:700;margin:14px 0 6px}
input,select{width:100%;padding:12px 14px;border:1.5px solid var(--line);border-radius:12px;
  font-size:15px;background:#fff;transition:.15s}
input:focus,select:focus{outline:none;border-color:var(--ink)}
.muted{color:var(--muted)}
.center{text-align:center}
.spacer{height:14px}

/* stepper */
.steps{display:flex;gap:8px;margin-bottom:26px;flex-wrap:wrap}
.step{flex:1;min-width:120px;padding:12px;border:1px solid var(--line);border-radius:12px;
  font-size:13px;font-weight:700;color:var(--muted);text-align:center}
.step.active{border-color:var(--ink);color:var(--ink)}
.step.done{background:var(--ink);color:#fff;border-color:var(--ink)}

/* dropzone */
.drop{border:2px dashed var(--line);border-radius:20px;padding:48px 20px;text-align:center;
  cursor:pointer;transition:.15s;background:var(--soft)}
.drop:hover,.drop.over{border-color:var(--ink);background:#fff}
.drop .big{font-size:18px;font-weight:800;margin:10px 0 4px}

/* quality options */
.opts{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.opt{border:1.5px solid var(--line);border-radius:16px;padding:20px;cursor:pointer;transition:.15s;position:relative}
.opt:hover{border-color:#bdbdbd}
.opt.sel{border-color:var(--ink);box-shadow:0 0 0 3px rgba(10,10,10,.06)}
.opt .tag{position:absolute;top:14px;left:14px;background:var(--ink);color:#fff;
  font-size:11px;padding:3px 9px;border-radius:20px;font-weight:700}
.opt h3{font-size:18px;font-weight:800;margin-bottom:6px}
.opt .price{font-size:22px;font-weight:900;margin-top:12px}
.opt .price small{font-size:13px;color:var(--muted);font-weight:600}
.opt ul{list-style:none;margin-top:10px;font-size:13px;color:var(--muted)}
.opt li{margin:4px 0}

/* upload reconnect notice */
.upwait{background:#fff7e0;color:#9a7b00;border:1px solid #f4e2a8;border-radius:10px;
  padding:10px 14px;font-size:13px;font-weight:700;margin-top:6px}

/* summary table */
.kv{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--line);font-size:14px}
.kv:last-child{border:none}
.kv .total{font-weight:900;font-size:18px}

/* progress */
.bar{height:10px;background:var(--soft);border-radius:20px;overflow:hidden;border:1px solid var(--line)}
.bar>i{display:block;height:100%;background:var(--ink);width:0;transition:width .4s}
.stagelist{margin-top:20px}
.stagerow{display:flex;align-items:center;gap:10px;padding:8px 0;color:var(--muted);font-size:14px}
.stagerow.active{color:var(--ink);font-weight:700}
.stagerow.done{color:var(--ok)}
.dot{width:10px;height:10px;border-radius:50%;background:var(--line)}
.stagerow.active .dot{background:var(--ink)}
.stagerow.done .dot{background:var(--ok)}

/* lists / tables */
table{width:100%;border-collapse:collapse;font-size:13px}
th,td{text-align:right;padding:11px 10px;border-bottom:1px solid var(--line)}
th{color:var(--muted);font-weight:700;font-size:12px}
.badge{display:inline-block;padding:3px 10px;border-radius:20px;font-size:12px;font-weight:700}
.b-done{background:#e7f6ec;color:var(--ok)}
.b-failed{background:#fdeceb;color:var(--err)}
.b-processing,.b-queued{background:#fff7e0;color:#9a7b00}
.b-created{background:var(--soft);color:var(--muted)}

/* wallet */
.balance{font-size:40px;font-weight:900}
.toggle{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}
.chip{padding:9px 16px;border:1.5px solid var(--line);border-radius:30px;cursor:pointer;font-weight:700;font-size:14px}
.chip.sel,.chip:hover{border-color:var(--ink)}

/* toast */
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(120px);
  background:var(--ink);color:#fff;padding:13px 22px;border-radius:12px;font-size:14px;
  transition:.3s;z-index:100;max-width:90%}
.toast.show{transform:translateX(-50%) translateY(0)}
.toast.err{background:var(--err)}

/* project env: player + chat */
.penv{display:grid;grid-template-columns:1fr 370px;gap:16px;align-items:start}
.pcol{min-width:0}
video::cue{
  font-family:var(--ui-font); direction:rtl;
  background:rgba(0,0,0,.72); color:#fff; line-height:1.6;
}
.chatwrap{display:flex;flex-direction:column;height:540px}
.chatlog{flex:1;overflow-y:auto;border:1px solid var(--line);border-radius:12px;padding:12px;margin:10px 0;background:var(--soft)}
.msg{max-width:88%;padding:9px 13px;border-radius:14px;margin:7px 0;font-size:14px;line-height:1.8;white-space:pre-wrap}
.msg.user{background:var(--ink);color:#fff;margin-inline-start:auto;border-bottom-right-radius:4px}
.msg.assistant{background:#fff;border:1px solid var(--line);margin-inline-end:auto;border-bottom-left-radius:4px}
.chatbar{display:flex;gap:6px;align-items:center}
.chatbar input#chatmsg{flex:1}
.chathdr{display:flex;align-items:center;gap:10px;margin-bottom:6px}
.atnow-lbl{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--muted);white-space:nowrap}
.atnow-lbl input{width:auto}
.msg-who{font-size:11px;opacity:.65;margin-bottom:3px;font-weight:700}

/* project tabs (mobile only) */
.ptabs{display:none;gap:8px;margin-bottom:14px}
.ptab{flex:1;padding:12px;border:1.5px solid var(--line);border-radius:12px;background:#fff;
  font-weight:800;font-size:14px;cursor:pointer;color:var(--muted)}
.ptab.active{border-color:var(--ink);color:var(--ink);background:var(--soft)}

/* project header */
.proj-head{display:flex;align-items:center;gap:12px;margin-bottom:16px}
.proj-title{flex:1;min-width:0}
.proj-title h1{font-size:24px;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.btn.danger{color:var(--err);border-color:#f3c7c4}
.btn.danger:hover{border-color:var(--err);background:#fdeceb}

/* dashboard */
.dash-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px;flex-wrap:wrap}
.dash-cards{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.minicard{border:1px solid var(--line);border-radius:16px;padding:18px;display:flex;flex-direction:column;gap:8px;align-items:flex-start}
.minicard .balance{font-size:28px}
.minicard .btn{margin-top:6px}

/* project / ticket cards grid */
.pgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px}
.empty{grid-column:1/-1;text-align:center;color:var(--muted);padding:44px 20px;border:1px dashed var(--line);border-radius:16px}
.pcard{position:relative;border:1px solid var(--line);border-radius:16px;background:#fff;overflow:hidden;transition:.15s;min-height:120px}
.pcard.clickable{cursor:pointer}
.pcard.clickable:hover{border-color:#bdbdbd;box-shadow:0 4px 16px rgba(0,0,0,.05)}
.pcard.busy{border-style:dashed}
.pcard-fill{position:absolute;top:0;bottom:0;right:0;width:var(--p,0);background:rgba(10,10,10,.05);transition:width .6s ease;z-index:0}
.pcard-in{position:relative;z-index:1;padding:16px 18px;display:flex;flex-direction:column;gap:7px;height:100%}
.pcard-title{font-weight:800;font-size:15px;line-height:1.5;overflow:hidden;text-overflow:ellipsis;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.pcard-meta{font-size:12px;color:var(--muted)}
.pcard-foot{margin-top:auto;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.pcard-pct{font-weight:900;font-size:18px}
.pcard-del{position:absolute;top:8px;left:8px;z-index:3;background:rgba(255,255,255,.92);border:1px solid var(--line);
  border-radius:9px;width:30px;height:30px;cursor:pointer;font-size:13px;opacity:.5;transition:.15s;line-height:1}
.pcard-del:hover{opacity:1;border-color:var(--err)}
.yt-tag{font-size:10px;color:var(--muted);font-weight:600}

/* ticket status badges + thread */
.tk-open{background:#fff7e0;color:#9a7b00}
.tk-answered{background:#e7f6ec;color:var(--ok)}
.tk-closed{background:var(--soft);color:var(--muted)}
.tk-thread{display:flex;flex-direction:column}
textarea{width:100%;padding:12px 14px;border:1.5px solid var(--line);border-radius:12px;font-size:15px;
  font-family:inherit;background:#fff;resize:vertical}
textarea:focus{outline:none;border-color:var(--ink)}

@media(max-width:820px){
  .penv{grid-template-columns:1fr}
  .ptabs{display:flex}
  .penv.show-video #tab-chat{display:none}
  .penv.show-chat #tab-video{display:none}
  .chatwrap{height:calc(100dvh - 250px);min-height:420px}
}

/* landing hero (animated) */
.hero-land{position:relative;overflow:hidden;border-radius:22px;padding:56px 26px;margin-bottom:22px;
  background:radial-gradient(1200px 400px at 80% -10%, #23263a 0%, #0f111a 55%);color:#fff;text-align:center}
.hero-bg{position:absolute;inset:0;pointer-events:none;opacity:.5}
.hero-bg span{position:absolute;height:10px;border-radius:6px;
  background:linear-gradient(90deg,rgba(0,255,204,.0),rgba(0,255,204,.35),rgba(0,255,204,.0));
  animation:drift 11s ease-in-out infinite}
.hero-bg span:nth-child(1){top:18%;right:8%;width:160px;animation-delay:0s}
.hero-bg span:nth-child(2){top:34%;right:22%;width:240px;animation-delay:1.5s;opacity:.7}
.hero-bg span:nth-child(3){top:54%;right:12%;width:120px;animation-delay:3s}
.hero-bg span:nth-child(4){top:70%;right:30%;width:200px;animation-delay:2s;opacity:.6}
.hero-bg span:nth-child(5){top:86%;right:16%;width:140px;animation-delay:4s}
@keyframes drift{0%,100%{transform:translateX(0);opacity:.25}50%{transform:translateX(-40px);opacity:.7}}
.hero-inner{position:relative;z-index:1}
.hero-badge{display:inline-block;background:rgba(255,255,255,.12);padding:6px 14px;border-radius:30px;
  font-size:13px;margin-bottom:16px;letter-spacing:.02em}
.hero-title{font-size:clamp(24px,4vw,38px);font-weight:900;margin-bottom:12px;line-height:1.4}
.hero-sub{color:#c4c6d2;max-width:640px;margin:0 auto;font-size:15px;line-height:1.9}

/* hero (auth) */
.hero{max-width:420px;margin:60px auto}
.hero .logo-big{font-size:52px;text-align:center}

/* ---- Responsive / Mobile ---- */
@media(max-width:640px){
  .topbar{padding:12px 16px;position:relative}
  .brand{font-size:18px;letter-spacing:.14em}
  .navtoggle{display:block;order:-1}
  .nav{display:none;position:absolute;top:100%;right:0;left:0;background:#fff;
    border-bottom:1px solid var(--line);flex-direction:column;align-items:stretch;
    gap:2px;padding:8px 12px;box-shadow:0 8px 20px rgba(0,0,0,.06)}
  .nav.open{display:flex}
  .nav a{padding:12px 10px;border-radius:8px}
  .nav .pill{text-align:center}
  .view{padding:20px 14px 70px}
  h1{font-size:23px}
  h2{font-size:18px}
  .card{padding:18px}
  .opts{grid-template-columns:1fr}
  .row>*{min-width:0}
  .balance{font-size:30px}
  .card{overflow-x:auto}            /* جدول‌ها روی موبایل اسکرول افقی می‌شوند */
  table{min-width:480px}
  .steps{gap:6px}
  .step{min-width:0;flex:1 1 40%;font-size:12px;padding:9px}
  .dash-cards{grid-template-columns:1fr}
  .dash-head h1{font-size:22px}
  .pgrid{grid-template-columns:1fr 1fr;gap:10px}
  .pcard-title{font-size:14px}
  .pcard-in{padding:13px 14px}
  .proj-title h1{font-size:19px}
  .proj-head{gap:8px}
  .proj-head .btn.sm{padding:7px 10px;font-size:12px}
}
@media(max-width:400px){.pgrid{grid-template-columns:1fr}}
@media(max-width:560px){.opts{grid-template-columns:1fr}}
