/* ══════════════════════════════════════════
   styles.css — ProxyConfig v3
   ══════════════════════════════════════════ */
@import url('https://fonts.googleapis.com/css2?family=Vazirmatn:wght@300;400;500;600;700;900&family=JetBrains+Mono:wght@400;500;600&display=swap');

:root {
  --cyan:    #22d3ee;
  --indigo:  #818cf8;
  --green:   #34d399;
  --amber:   #fbbf24;
  --rose:    #f87171;
  --text:    #e2e8f0;
  --muted:   #64748b;
  --dim:     #475569;
  --bg:      #030912;
  --surf1:   rgba(255,255,255,.035);
  --surf2:   rgba(255,255,255,.065);
  --border:  rgba(255,255,255,.08);
  --bord2:   rgba(255,255,255,.13);
  --glass:   blur(24px);
  --r-card:  18px;
  --r-row:   11px;
  --mono:    'JetBrains Mono', monospace;
  --sans:    'Vazirmatn', sans-serif;
  --ease:    .22s ease;
}

*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{font-family:var(--sans);background:var(--bg);color:var(--text);min-height:100vh;direction:rtl;overflow-x:hidden;-webkit-tap-highlight-color:transparent}
a{text-decoration:none;color:inherit}
button{font-family:var(--sans);cursor:pointer;border:none;background:none}

/* ── Background ── */
.bg-wrap{position:fixed;inset:0;z-index:0;pointer-events:none}
.bg-wrap::before{
  content:'';position:absolute;inset:0;
  background:
    radial-gradient(ellipse 65% 55% at 12% 8%,  rgba(34,211,238,.07) 0%,transparent 55%),
    radial-gradient(ellipse 55% 50% at 88% 88%,  rgba(129,140,248,.07) 0%,transparent 55%),
    radial-gradient(ellipse 45% 40% at 55% 48%,  rgba(52,211,153,.04) 0%,transparent 55%),
    linear-gradient(160deg,#030912 0%,#060f1e 60%,#030912 100%);
}
.orb{position:absolute;border-radius:50%;filter:blur(80px);pointer-events:none}
.o1{width:380px;height:380px;background:rgba(34,211,238,.06);top:-100px;right:-60px;animation:drift1 22s ease-in-out infinite}
.o2{width:340px;height:340px;background:rgba(129,140,248,.06);bottom:5%;left:-70px;animation:drift2 26s ease-in-out infinite}
.o3{width:220px;height:220px;background:rgba(52,211,153,.05);bottom:40%;right:20%;animation:drift3 18s ease-in-out infinite}
@keyframes drift1{0%,100%{transform:translate(0,0)}50%{transform:translate(-40px,50px)}}
@keyframes drift2{0%,100%{transform:translate(0,0)}50%{transform:translate(50px,-40px)}}
@keyframes drift3{0%,100%{transform:translate(0,0)}50%{transform:translate(-25px,30px)}}

.grid-overlay{
  position:absolute;inset:0;
  background-image:linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 1px);
  background-size:48px 48px;
  mask-image:radial-gradient(ellipse 80% 80% at 50% 50%,black 0%,transparent 100%);
}

/* ── Pull-to-refresh ── */
.ptr{
  position:fixed;top:-56px;left:50%;transform:translateX(-50%);
  display:flex;align-items:center;gap:.5rem;
  padding:.5rem 1.2rem;border-radius:999px;
  background:rgba(34,211,238,.12);border:1px solid rgba(34,211,238,.25);
  color:var(--cyan);font-size:.78rem;font-weight:600;
  backdrop-filter:blur(18px);z-index:100;
  transition:top .3s ease;
}
.ptr.visible{top:1rem}
.ptr.ready .ptr-icon{animation:spin .6s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* ── Layout ── */
.page{position:relative;z-index:1;max-width:520px;margin:0 auto;padding:0 1rem 3.5rem}

/* ── Header ── */
.hdr{
  position:sticky;top:0;z-index:50;
  padding:.6rem 0;
  transition:background var(--ease),box-shadow var(--ease);
}
.hdr.scrolled{background:rgba(6,17,31,.85);backdrop-filter:blur(20px);box-shadow:0 1px 0 var(--border)}
.hdr-inner{display:flex;align-items:center;justify-content:space-between;gap:.5rem}
.logo{display:flex;align-items:center;gap:.4rem;font-size:.92rem;font-weight:700;color:#fff}
.logo-ic{font-size:1.1rem}
.logo-tx{background:linear-gradient(135deg,#fff 30%,var(--cyan));-webkit-background-clip:text;-webkit-text-fill-color:transparent}
.hdr-btns{display:flex;gap:.4rem}
.hbtn{
  display:flex;align-items:center;gap:.35rem;
  padding:.32rem .75rem;border-radius:10px;
  background:var(--surf1);border:1px solid var(--border);
  color:var(--muted);font-size:.72rem;font-weight:600;
  transition:all var(--ease);
}
.hbtn:hover{background:var(--surf2);color:var(--cyan);border-color:rgba(34,211,238,.25)}
.hbtn.active-sort{color:var(--cyan);border-color:rgba(34,211,238,.35);background:rgba(34,211,238,.1)}
.hbtn.spinning svg{animation:spin .7s linear infinite}
.hbtn-lbl{display:none}
@media(min-width:420px){.hbtn-lbl{display:inline}}

/* ── Hero ── */
.hero{text-align:center;padding:1.6rem 0 .6rem;animation:fadeDown .5s ease both}
.hero-title{
  font-size:1.85rem;font-weight:900;letter-spacing:-.5px;
  background:linear-gradient(135deg,#fff 25%,var(--cyan));
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  display:inline-block;
}
.hero-title:hover{opacity:.88}
.hero-sub{color:var(--muted);font-size:.78rem;margin-top:.25rem}
.live-bar{
  display:inline-flex;align-items:center;gap:.4rem;
  margin-top:.6rem;font-size:.73rem;font-weight:600;color:var(--muted);
  background:var(--surf1);border:1px solid var(--border);
  border-radius:999px;padding:.22rem .85rem;
}
.live-dot{width:7px;height:7px;border-radius:50%;background:var(--green);box-shadow:0 0 6px var(--green);animation:blink 2s ease infinite}
.live-dot.pulse{background:var(--cyan);box-shadow:0 0 6px var(--cyan);animation:blink .7s ease infinite}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.3}}

/* ── Section nav ── */
.sec-nav{
  display:flex;gap:.35rem;margin-bottom:.9rem;
  padding:.35rem;border-radius:14px;
  background:var(--surf1);border:1px solid var(--border);
  animation:fadeUp .45s ease .1s both;
}
.snav-btn{
  flex:1;padding:.38rem .3rem;border-radius:10px;
  font-size:.78rem;font-weight:600;color:var(--muted);
  transition:all var(--ease);
}
.snav-btn.active{background:rgba(34,211,238,.14);color:var(--cyan);border:1px solid rgba(34,211,238,.28)}
.snav-btn:hover:not(.active){background:var(--surf2);color:var(--text)}

/* ── Card ── */
.card{
  background:var(--surf1);
  border:1px solid var(--border);
  border-radius:var(--r-card);
  backdrop-filter:var(--glass);
  -webkit-backdrop-filter:var(--glass);
  padding:1.1rem;
  margin-bottom:.8rem;
  animation:fadeUp .55s ease both;
  transition:border-color var(--ease),box-shadow var(--ease);
}
.card:hover{border-color:var(--bord2);box-shadow:0 8px 36px rgba(0,0,0,.3)}
.card:nth-child(1){animation-delay:.04s}.card:nth-child(2){animation-delay:.09s}
.card:nth-child(3){animation-delay:.14s}.card:nth-child(4){animation-delay:.19s}
.card:nth-child(5){animation-delay:.24s}.card:nth-child(6){animation-delay:.29s}
.card:nth-child(7){animation-delay:.34s}

/* ── Card header ── */
.ch{margin-bottom:.85rem}
.ch-row{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}
.ch-ic{font-size:1.1rem;line-height:1}
.ch-title{font-size:.96rem;font-weight:700;color:#fff;flex:1}
.ch-badge{font-size:.68rem;color:var(--muted);background:rgba(255,255,255,.06);padding:.12rem .45rem;border-radius:6px}
.ch-mtime{font-size:.68rem;color:var(--dim);margin-top:.25rem;font-family:var(--mono)}

/* ── Row item ── */
.row-item{
  display:flex;align-items:center;gap:.45rem;
  padding:.5rem .75rem;
  border-radius:var(--r-row);
  background:rgba(255,255,255,.03);
  border:1px solid rgba(255,255,255,.055);
  margin-bottom:.4rem;
  transition:background var(--ease),border-color var(--ease),transform var(--ease);
  position:relative;overflow:hidden;
}
.row-item:last-child{margin-bottom:0}
.row-item:hover{background:var(--surf2);border-color:var(--bord2);transform:translateX(-2px)}
.row-item.timeout-row{opacity:.65}

/* Swipe hint highlight */
.row-item.swiping-left {background:rgba(34,211,238,.08)}
.row-item.swiping-right{background:rgba(52,211,153,.08)}

.item-meta{flex:1;min-width:0;overflow:hidden}
.item-name{
  font-size:.86rem;font-weight:500;color:var(--text);
  display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
a.item-name{color:var(--cyan)}
a.item-name:hover{text-decoration:underline}

/* Protocol sub-label */
.item-proto{
  font-size:.64rem;font-family:var(--mono);font-weight:600;letter-spacing:.2px;
  color:var(--dim);margin-top:.12rem;display:block;
}
.item-desc{font-size:.7rem;color:var(--muted);margin-top:.12rem;display:block}

/* ── Protocol badge ── */
.pbadge{
  display:inline-flex;align-items:center;
  font-size:.62rem;font-weight:700;font-family:var(--mono);
  padding:.1rem .42rem;border-radius:5px;
  white-space:nowrap;
}
.pbadge-tg   {background:rgba(34,211,238,.12);color:var(--cyan);border:1px solid rgba(34,211,238,.2)}
.pbadge-vless{background:rgba(129,140,248,.12);color:#a5b4fc;border:1px solid rgba(129,140,248,.2)}
.pbadge-vmess{background:rgba(251,191,36,.10);color:var(--amber);border:1px solid rgba(251,191,36,.2)}
.pbadge-trojan{background:rgba(52,211,153,.10);color:var(--green);border:1px solid rgba(52,211,153,.2)}
.pbadge-ss   {background:rgba(248,113,113,.10);color:var(--rose);border:1px solid rgba(248,113,113,.2)}
.pbadge-file {background:rgba(255,255,255,.08);color:var(--muted);border:1px solid var(--border)}
.pbadge-slip {background:rgba(52,211,153,.10);color:var(--green);border:1px solid rgba(52,211,153,.2)}
.pbadge-storm{background:rgba(34,211,238,.10);color:var(--cyan);border:1px solid rgba(34,211,238,.15)}

/* ── Ping badge ── */
.ping-badge{
  font-size:.72rem;font-weight:700;font-family:var(--mono);
  padding:.18rem .55rem;border-radius:999px;
  min-width:58px;text-align:center;white-space:nowrap;
  transition:all var(--ease);
}
.pb-chk{background:rgba(100,116,139,.12);color:var(--muted);animation:blink 1s ease infinite}
.pb-g  {background:rgba(52,211,153,.15);border:1px solid rgba(52,211,153,.3);color:var(--green);box-shadow:0 0 8px rgba(52,211,153,.15)}
.pb-t  {background:rgba(34,211,238,.14);border:1px solid rgba(34,211,238,.28);color:var(--cyan)}
.pb-o  {background:rgba(251,191,36,.12);border:1px solid rgba(251,191,36,.25);color:var(--amber)}
.pb-r  {background:rgba(248,113,113,.12);border:1px solid rgba(248,113,113,.25);color:var(--rose)}
.pb-na {background:rgba(100,116,139,.08);color:var(--dim);font-size:.65rem}

/* Sparkline */
.sparkline{display:block;opacity:.7;vertical-align:middle}

/* ── Action buttons ── */
.acts{display:flex;gap:.3rem;align-items:center}
.abtn{
  width:30px;height:30px;border-radius:8px;
  display:grid;place-items:center;
  background:rgba(255,255,255,.05);border:1px solid var(--border);
  color:var(--muted);transition:all var(--ease);flex-shrink:0;
}
.abtn:hover{background:rgba(34,211,238,.12);border-color:rgba(34,211,238,.25);color:var(--cyan)}
.abtn.copied{background:rgba(52,211,153,.15);border-color:rgba(52,211,153,.3);color:var(--green)}

/* File action buttons */
.abtn-dl {background:rgba(52,211,153,.08)}
.abtn-dl:hover{background:rgba(52,211,153,.18);color:var(--green);border-color:rgba(52,211,153,.3)}

/* ── Sent section tabs ── */
.sent-tabs{display:flex;gap:.3rem;margin-right:auto}
.stab{
  font-size:.73rem;font-weight:600;
  padding:.25rem .7rem;border-radius:8px;
  color:var(--muted);background:var(--surf1);border:1px solid var(--border);
  transition:all var(--ease);
}
.stab.active{background:rgba(34,211,238,.12);color:var(--cyan);border-color:rgba(34,211,238,.25)}

/* ── Form ── */
.fg{margin-bottom:.65rem}
.fg label{display:block;font-size:.75rem;font-weight:600;color:var(--muted);margin-bottom:.3rem}
.opt{font-weight:400;color:var(--dim)}
.fg input,.fg textarea,.fg select{
  width:100%;background:var(--surf1);border:1px solid var(--border);border-radius:12px;
  padding:.6rem .9rem;color:var(--text);font-family:var(--sans);font-size:.86rem;
  outline:none;transition:all var(--ease);direction:rtl;appearance:none;-webkit-appearance:none;
}
.fg input::placeholder,.fg textarea::placeholder{color:rgba(100,116,139,.5)}
.fg input:focus,.fg textarea:focus,.fg select:focus{
  border-color:rgba(34,211,238,.4);background:rgba(34,211,238,.04);box-shadow:0 0 0 3px rgba(34,211,238,.07)
}
.fg textarea{resize:vertical;min-height:60px}
.sel-wrap{position:relative}
.sel-wrap select{padding-left:2.4rem}
.sel-arrow{
  position:absolute;
  left:.85rem;top:50%;
  transform:translateY(-50%);
  color:var(--muted);
  pointer-events:none;
  z-index:2;
  width:12px;height:12px;
  display:block;
}
.fg select option{background:#0f1c2e;color:#e2e8f0}
.inp-wrap{position:relative}
.inp-wrap textarea{padding-left:2.2rem}
.inp-clear{position:absolute;left:.5rem;top:.5rem;width:22px;height:22px;border-radius:6px;background:var(--surf2);color:var(--muted);font-size:.75rem;display:grid;place-items:center;opacity:.7}
.inp-clear:hover{opacity:1;color:var(--rose)}
.convert-tag{
  display:inline-flex;align-items:center;gap:.3rem;
  font-size:.68rem;font-weight:600;color:var(--cyan);
  background:rgba(34,211,238,.08);border:1px solid rgba(34,211,238,.2);
  padding:.15rem .6rem;border-radius:999px;margin-top:.3rem;
  animation:fadeIn .3s ease;
}
.convert-tag.hidden{display:none}

/* File drop */
.file-drop{
  border:2px dashed var(--border);border-radius:12px;
  padding:1.2rem;text-align:center;cursor:pointer;
  transition:all var(--ease);position:relative;
}
.file-drop:hover,.file-drop.over{border-color:rgba(34,211,238,.35);background:rgba(34,211,238,.04)}
.file-inp{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%}
.file-drop-inner{display:flex;flex-direction:column;align-items:center;gap:.3rem;pointer-events:none}
.file-drop-icon{font-size:1.5rem}
.file-drop-txt{font-size:.78rem;color:var(--muted)}
.file-drop-txt.has-file{color:var(--cyan);font-weight:600}

.btn-sub{
  width:100%;padding:.68rem;border-radius:13px;
  background:linear-gradient(135deg,var(--cyan),var(--indigo));
  color:#fff;font-size:.9rem;font-weight:700;
  display:flex;align-items:center;justify-content:center;gap:.4rem;
  margin-top:.6rem;
  transition:transform var(--ease),box-shadow var(--ease),opacity var(--ease);
  box-shadow:0 4px 22px rgba(34,211,238,.2);
  position:relative;overflow:hidden;
}
.btn-sub::before{content:'';position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.12),transparent);opacity:0;transition:opacity var(--ease)}
.btn-sub:hover{transform:translateY(-2px);box-shadow:0 8px 28px rgba(34,211,238,.3)}
.btn-sub:hover::before{opacity:1}
.btn-sub:active{transform:translateY(0)}
.btn-sub:disabled{opacity:.6;cursor:not-allowed;transform:none}

.form-hint{
  font-size:.72rem;color:var(--muted);line-height:1.75;margin-top:.65rem;
  padding:.6rem .8rem;background:rgba(255,255,255,.025);
  border:1px solid rgba(255,255,255,.055);border-radius:11px;
}
.hint-star{color:var(--cyan);font-weight:700}
code{font-family:var(--mono);font-size:.7rem;color:var(--cyan);background:rgba(34,211,238,.08);padding:.05rem .3rem;border-radius:4px}

/* ── Internet info ── */
.info-card .info-grid{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}
.info-cell{background:rgba(255,255,255,.025);border:1px solid rgba(255,255,255,.06);border-radius:11px;padding:.6rem .75rem;transition:background var(--ease)}
.info-cell:hover{background:var(--surf2)}
.info-cell.full{grid-column:1/-1}
.info-label{font-size:.65rem;font-weight:600;color:var(--dim);display:block;margin-bottom:.18rem;text-transform:uppercase;letter-spacing:.4px}
.info-val{font-size:.82rem;font-weight:600;color:var(--text);display:block;word-break:break-all;font-family:var(--mono)}
.info-val.cyan{color:var(--cyan)}
.info-val.dim{color:var(--muted)}

/* ── States ── */
.skel{padding:.1rem 0}
.sr{height:46px;border-radius:11px;background:linear-gradient(90deg,rgba(255,255,255,.04) 25%,rgba(255,255,255,.07) 50%,rgba(255,255,255,.04) 75%);background-size:200% 100%;animation:shimmer 1.4s ease infinite;margin-bottom:.4rem}
.sr:last-child{margin-bottom:0}
@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}
.msg-info{color:var(--muted);font-size:.82rem;padding:.4rem 0;text-align:center}
.msg-empty{color:var(--muted);font-size:.8rem;padding:1.2rem;text-align:center;border:1px dashed rgba(255,255,255,.07);border-radius:11px}
.msg-error{color:var(--rose);font-size:.8rem;padding:.4rem 0}

/* ── Toast ── */
#toast{
  position:fixed;bottom:2rem;left:50%;
  transform:translateX(-50%) translateY(16px);
  font-size:.82rem;font-weight:600;
  padding:.58rem 1.4rem;border-radius:999px;
  backdrop-filter:blur(22px);z-index:999;
  opacity:0;transition:opacity .3s,transform .3s;
  white-space:nowrap;pointer-events:none;
  background:rgba(52,211,153,.15);border:1px solid rgba(52,211,153,.3);color:var(--green);
}
#toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
#toast.err {background:rgba(248,113,113,.15);border-color:rgba(248,113,113,.3);color:var(--rose)}
#toast.warn{background:rgba(251,191,36,.12);border-color:rgba(251,191,36,.25);color:var(--amber)}
#toast.info{background:rgba(34,211,238,.12);border-color:rgba(34,211,238,.25);color:var(--cyan)}

/* ── App open modal ── */
.app-modal-bg{
  position:fixed;inset:0;background:rgba(0,0,0,.55);backdrop-filter:blur(8px);
  z-index:200;display:flex;align-items:flex-end;justify-content:center;
  padding-bottom:env(safe-area-inset-bottom);
  animation:fadeIn .2s ease;
}
.app-modal-bg.hidden{display:none}
.app-modal{
  width:100%;max-width:520px;
  background:#0d1f35;border:1px solid var(--bord2);
  border-radius:22px 22px 0 0;padding:1.2rem;
  animation:slideUp .28s ease;
}
.app-modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:.9rem}
.app-modal-head h3{font-size:.9rem;font-weight:700;color:#fff}
.app-modal-close{width:28px;height:28px;border-radius:8px;background:var(--surf2);color:var(--muted);display:grid;place-items:center;font-size:.8rem}
.app-opt{
  display:flex;align-items:center;gap:.7rem;
  padding:.65rem .8rem;border-radius:12px;
  background:var(--surf1);border:1px solid var(--border);
  margin-bottom:.45rem;cursor:pointer;
  transition:all var(--ease);text-decoration:none;
}
.app-opt:hover{background:var(--surf2);border-color:var(--bord2)}
.app-opt-icon{font-size:1.3rem;width:32px;text-align:center;flex-shrink:0}
.app-opt-info{flex:1;min-width:0}
.app-opt-name{font-size:.84rem;font-weight:600;color:var(--text);display:block}
.app-opt-sub {font-size:.68rem;color:var(--muted);display:block;margin-top:.08rem}
.app-opt-arrow{color:var(--muted);font-size:.8rem}
.app-copy-row{
  display:flex;gap:.5rem;margin-top:.6rem;
}
.app-copy-inp{flex:1;background:var(--surf1);border:1px solid var(--border);border-radius:10px;padding:.5rem .75rem;color:var(--muted);font-size:.72rem;font-family:var(--mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;outline:none;cursor:default}
.app-copy-btn{padding:.5rem .9rem;border-radius:10px;background:rgba(34,211,238,.12);border:1px solid rgba(34,211,238,.25);color:var(--cyan);font-size:.78rem;font-weight:600;flex-shrink:0;transition:all var(--ease)}
.app-copy-btn:hover{background:rgba(34,211,238,.2)}

/* ── Footer ── */
.ftr{text-align:center;padding:.9rem 0 .3rem;animation:fadeUp .5s ease 1s both}
.ftr-link{font-size:.78rem;color:var(--muted)}
.ftr-link:hover{color:var(--cyan)}

/* ── Scrollbar ── */
::-webkit-scrollbar{width:4px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:rgba(34,211,238,.18);border-radius:999px}

/* ── Animations ── */
@keyframes fadeDown{from{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}
@keyframes fadeUp  {from{opacity:0;transform:translateY(18px)} to{opacity:1;transform:translateY(0)}}
@keyframes fadeIn  {from{opacity:0}to{opacity:1}}
@keyframes slideUp {from{transform:translateY(100%)}to{transform:translateY(0)}}

/* ── Responsive ── */
@media(max-width:400px){
  .page{padding:0 .7rem 3rem}
  .hero-title{font-size:1.6rem}
  .card{padding:.9rem;border-radius:15px}
  .hbtn{padding:.28rem .55rem}
}

/* ── Utility ── */
.hidden{display:none!important}
