/* ============================================================
   sniper.css — 代抢机器人页面
   ============================================================ */

.sn-access{
  display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;
  padding:14px 18px;border:1px solid var(--line-soft);border-radius:13px;
  background:linear-gradient(135deg,rgba(216,172,90,.06),rgba(255,255,255,.015));
  margin-bottom:22px;
}
.sn-access .sa-l{display:flex;align-items:center;gap:12px;min-width:0}
.sn-access .sa-dot{width:9px;height:9px;border-radius:50%;background:var(--muted);flex:0 0 auto}
.sn-access.is-on .sa-dot{background:var(--ok);box-shadow:0 0 10px rgba(94,203,136,.8)}
.sn-access.is-wl .sa-dot{background:#8fe0ab;box-shadow:0 0 12px rgba(143,224,171,.9)}
.sn-access b{display:block;font-size:13.5px;color:var(--bone);letter-spacing:.02em}
.sn-access span{font-size:11.5px;color:var(--muted);line-height:1.6}
.sn-access .sa-r{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.sn-badge{
  font-size:10px;letter-spacing:.1em;padding:4px 8px;border-radius:6px;
  border:1px solid rgba(216,172,90,.3);color:var(--gold-lt);background:rgba(216,172,90,.07);
}
.sn-badge.mock{border-color:rgba(226,163,92,.42);color:#f0c795;background:rgba(226,163,92,.08)}
.sn-badge.chain{border-color:rgba(94,203,136,.42);color:#b3e6c9;background:rgba(94,203,136,.08)}

.sn-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:20px;align-items:start;padding-bottom:60px}
.sn-main{display:flex;flex-direction:column;gap:18px;min-width:0}
.sn-side{display:flex;flex-direction:column;gap:18px;position:sticky;top:calc(var(--nav-h) + 20px)}

.sn-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.sn-stat{
  border:1px solid var(--line-soft);border-radius:12px;padding:14px 14px 12px;
  background:linear-gradient(180deg,rgba(255,255,255,.03),rgba(255,255,255,.01));
}
.sn-stat .k{font-size:10.5px;letter-spacing:.1em;color:var(--muted);text-transform:uppercase}
.sn-stat .v{margin-top:8px;font-family:var(--mono);font-size:19px;color:var(--gold-lt);line-height:1.2;word-break:break-all}
.sn-stat .v em{font-style:normal;font-size:10.5px;color:var(--muted);margin-left:5px;font-family:var(--sans)}
.sn-stat .n{font-size:10.5px;color:var(--muted);margin-top:6px}

.sn-panel{
  border:1px solid var(--line-soft);border-radius:13px;
  background:rgba(12,9,7,.72);padding:16px 18px;
}
.sn-panel .sp-head{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding-bottom:12px;border-bottom:1px solid var(--line-soft);margin-bottom:14px;
  font-size:12px;letter-spacing:.1em;color:var(--soft);text-transform:uppercase;
}

.sn-form{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.sn-field{display:flex;flex-direction:column;gap:7px;min-width:0}
.sn-field-wide{grid-column:1/-1}
.sn-field label{font-size:11.5px;color:var(--muted);letter-spacing:.05em}
.sn-field input,.sn-field select{
  width:100%;background:rgba(255,255,255,.035);border:1px solid var(--line);
  color:var(--ink);border-radius:9px;padding:10px 12px;font-size:13px;font-family:var(--mono);
}
.sn-field input:focus,.sn-field select:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px rgba(216,172,90,.12)}
.sn-field .hint{font-size:10.5px;color:var(--muted)}
.sn-preview{
  font-size:12px;color:var(--soft);line-height:1.9;border:1px dashed var(--line);
  border-radius:9px;padding:10px 12px;background:rgba(216,172,90,.03);
}
.sn-preview b{color:var(--gold-lt);font-family:var(--mono)}

.sn-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:16px}
.sn-actions .btn[disabled]{opacity:.45;cursor:not-allowed}
.sn-tip{font-size:11px;color:var(--muted)}

.sn-state{font-size:11px;letter-spacing:.06em;padding:4px 9px;border-radius:6px;border:1px solid var(--line);color:var(--muted)}
.sn-state[data-state="running"]{border-color:rgba(111,182,255,.4);color:#b6d2f0;background:rgba(111,182,255,.07)}
.sn-state[data-state="completed"]{border-color:rgba(94,203,136,.4);color:#b3e6c9;background:rgba(94,203,136,.07)}
.sn-state[data-state="stopped"]{border-color:rgba(226,163,92,.4);color:#f0c795;background:rgba(226,163,92,.07)}

.sn-progress{height:8px;border-radius:6px;background:rgba(255,255,255,.05);overflow:hidden;margin-bottom:12px}
.sn-bar{height:100%;width:0;background:linear-gradient(90deg,var(--gold),#f0c795);transition:width .5s ease;border-radius:6px}
.sn-meta{display:flex;gap:16px;flex-wrap:wrap;font-size:11px;color:var(--muted);margin-bottom:12px}
.sn-meta b{color:var(--soft);font-family:var(--mono);font-weight:500;word-break:break-all}

.sn-logs{
  max-height:320px;overflow:auto;border:1px solid var(--line-soft);border-radius:9px;
  background:rgba(0,0,0,.32);padding:10px 12px;font-family:var(--mono);font-size:11.5px;line-height:1.9;
}
.sn-log{display:flex;gap:9px;color:#c8b79a;padding:3px 0;border-bottom:1px dashed rgba(216,172,90,.08)}
.sn-log:last-child{border-bottom:none}
.sn-log .t{color:#7d6f5c;flex:0 0 auto}
.sn-log .m{flex:1;min-width:0;word-break:break-word}
.sn-log.ok .m{color:#a9efc3}
.sn-log.warn .m{color:#f0c795}
.sn-log.info .m{color:#b6d2f0}
.sn-log-empty{color:var(--muted);font-family:var(--sans);font-size:12px;padding:8px 0}

.sn-kv{display:flex;justify-content:space-between;gap:12px;font-size:11.5px;padding:7px 0;border-bottom:1px dashed rgba(216,172,90,.1)}
.sn-kv span{color:var(--muted);flex:0 0 auto}
.sn-kv b{color:var(--soft);font-weight:500;text-align:right;word-break:break-all}
.sn-config-note{margin-top:12px;font-size:11px;color:var(--muted);line-height:1.9}
.sn-config-note code{font-family:var(--mono);color:var(--gold-lt);background:rgba(216,172,90,.07);padding:1px 4px;border-radius:4px}
.sn-rules{margin:0;padding-left:18px;font-size:11.5px;color:var(--soft);line-height:2}
.sn-admin-link{margin-top:12px;width:100%;justify-content:center;text-align:center}

@media(max-width:1080px){
  .sn-grid{grid-template-columns:1fr}
  .sn-side{position:static;display:grid;grid-template-columns:1fr 1fr;gap:16px}
  .sn-stats{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:700px){
  .sn-side{grid-template-columns:1fr}
  .sn-form{grid-template-columns:1fr}
  .sn-field-wide{grid-column:auto}
  .sn-actions .btn{width:100%}
  .sn-access{align-items:flex-start}
  .sn-access .sa-r{width:100%;justify-content:space-between}
}
@media(max-width:420px){
  .sn-stats{grid-template-columns:1fr}
}

/* ---------- 会员预览 / 解锁入口 ---------- */
.sn-gate{
  display:flex;gap:20px;align-items:center;justify-content:space-between;flex-wrap:wrap;
  border:1px solid rgba(216,172,90,.3);border-radius:14px;padding:20px 22px;
  background:linear-gradient(135deg,rgba(216,172,90,.09),rgba(255,255,255,.02));
}
.sn-gate .sg-l{min-width:0;flex:1}
.sn-gate .sg-k{font-size:10.5px;letter-spacing:.14em;color:var(--gold-lt)}
.sn-gate .sg-t{font-size:19px;color:var(--bone);margin:6px 0 4px}
.sn-gate .sg-d{font-size:12.5px;color:var(--soft);line-height:1.85;max-width:620px}
.sn-gate .sg-flow{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:12px;font-size:11px;color:var(--muted)}
.sn-gate .sg-flow i{font-style:normal;color:var(--gold)}
.sn-gate .sg-r{text-align:right;flex:0 0 auto}
.sn-gate .price{font-family:var(--mono);font-size:22px;color:var(--gold-lt)}
.sn-gate .price-alt{font-size:11.5px;color:var(--muted);margin-top:4px}
.sn-gate .state{font-size:11px;color:var(--muted);margin:8px 0 10px}
.sn-gate .sg-note{font-size:10.5px;color:var(--muted);margin-top:8px}

/* ---------- 地址添加行 ---------- */
.sn-count{font-size:10.5px;letter-spacing:.08em;color:var(--gold-lt)}
.sn-add{margin-bottom:14px}
.sn-add-row{display:grid;grid-template-columns:minmax(0,1.7fr) 110px 120px minmax(0,1.6fr) auto;gap:8px}
.sn-add-row input,.sn-add-row select{
  background:rgba(255,255,255,.035);border:1px solid var(--line);color:var(--ink);
  border-radius:9px;padding:9px 11px;font-size:12.5px;min-width:0;width:100%;
}
.sn-add-row input.mono{font-family:var(--mono)}
.sn-add-row input:focus,.sn-add-row select:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px rgba(216,172,90,.12)}
.sn-add-row .btn{white-space:nowrap}
.sn-add-hint{font-size:10.5px;color:var(--muted);margin-top:8px}
.sn-add-hint a{color:var(--gold-lt);text-decoration:underline}
.sn-add .err{font-size:11px;color:#ff9c9c;margin-top:6px}

/* ---------- 多地址卡片 ---------- */
.sn-cards{display:flex;flex-direction:column;gap:14px}
.sn-card{
  border:1px solid var(--line-soft);border-radius:12px;padding:14px 16px;
  background:linear-gradient(180deg,rgba(255,255,255,.028),rgba(255,255,255,.008));
}
.snc-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}
.snc-id{display:flex;align-items:center;gap:9px;min-width:0;flex:1}
.snc-n{font-family:var(--mono);font-size:11px;color:var(--gold-lt);flex:0 0 auto}
.snc-addr{
  flex:1;min-width:0;background:rgba(255,255,255,.03);border:1px solid var(--line);
  border-radius:8px;padding:7px 10px;color:var(--ink);font-size:12px;
}
.snc-addr:focus{outline:none;border-color:var(--gold)}
.snc-mode{
  font-size:9.5px;letter-spacing:.1em;padding:3px 7px;border-radius:5px;flex:0 0 auto;
  border:1px solid rgba(226,163,92,.42);color:#f0c795;background:rgba(226,163,92,.08);
}
.snc-mode.chain{border-color:rgba(94,203,136,.42);color:#b3e6c9;background:rgba(94,203,136,.08)}
.snc-del{
  background:none;border:1px solid var(--line);color:var(--muted);border-radius:7px;
  font-size:11px;padding:5px 10px;cursor:pointer;flex:0 0 auto;
}
.snc-del:hover{border-color:rgba(255,120,120,.5);color:#ffb3b3}

.snc-form{display:grid;grid-template-columns:110px 100px minmax(0,1fr) auto;gap:10px;align-items:end}
.snc-form label{display:flex;flex-direction:column;gap:5px;font-size:10.5px;color:var(--muted);min-width:0}
.snc-form input,.snc-form select{
  background:rgba(255,255,255,.035);border:1px solid var(--line);color:var(--ink);
  border-radius:8px;padding:7px 9px;font-size:12px;width:100%;min-width:0;
}
.snc-form input:focus,.snc-form select:focus{outline:none;border-color:var(--gold)}
.snc-expect{font-size:10.5px;color:var(--muted);white-space:nowrap;padding-bottom:7px}
.snc-expect b{color:var(--gold-lt);font-family:var(--mono)}

.snc-flow{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:12px}
.snc-cd{
  display:flex;align-items:center;gap:8px;font-size:11px;color:var(--muted);
  border:1px solid var(--line-soft);border-radius:8px;padding:5px 10px;flex:0 0 auto;
}
.snc-cd b{font-family:var(--mono);font-size:15px;color:var(--gold-lt)}
.snc-steps{display:flex;gap:6px;flex-wrap:wrap;flex:1;min-width:0}
.snc-step{
  display:flex;align-items:center;gap:6px;font-size:10.5px;color:var(--muted);
  border:1px dashed var(--line);border-radius:7px;padding:4px 8px;
}
.snc-step i{
  font-style:normal;width:15px;height:15px;border-radius:50%;display:inline-flex;
  align-items:center;justify-content:center;font-size:9px;background:rgba(255,255,255,.05);
}
.snc-step.done{color:#a9efc3;border-color:rgba(94,203,136,.35);border-style:solid}
.snc-step.done i{background:rgba(94,203,136,.16);color:#a9efc3}
.snc-step.on{color:var(--gold-lt);border-color:rgba(216,172,90,.45);border-style:solid}
.snc-step.on i{background:rgba(216,172,90,.18);color:var(--gold-lt)}
.snc-step.fail{color:#ffb3b3;border-color:rgba(255,120,120,.4);border-style:solid}
.snc-step.fail i{background:rgba(255,120,120,.16);color:#ffb3b3}

.snc-statebar{display:flex;align-items:center;gap:10px;margin-top:10px;font-size:11px;color:var(--muted)}
.snc-phase{
  padding:3px 8px;border-radius:5px;border:1px solid var(--line);color:var(--muted);flex:0 0 auto;
}
.snc-phase[data-phase="scheduled"]{border-color:rgba(216,172,90,.4);color:var(--gold-lt)}
.snc-phase[data-phase="signing"]{border-color:rgba(111,182,255,.45);color:#b6d2f0}
.snc-phase[data-phase="held"]{border-color:rgba(143,224,171,.4);color:#a9efc3}
.snc-phase[data-phase="broadcasting"]{border-color:rgba(111,182,255,.45);color:#b6d2f0}
.snc-phase[data-phase="confirmed"]{border-color:rgba(94,203,136,.45);color:#b3e6c9}
.snc-phase[data-phase="failed"]{border-color:rgba(255,120,120,.45);color:#ffb3b3}
.snc-phase[data-phase="stopped"]{border-color:rgba(226,163,92,.4);color:#f0c795}
.snc-progress{flex:1;height:6px;border-radius:5px;background:rgba(255,255,255,.05);overflow:hidden}
.snc-progress i{display:block;height:100%;background:linear-gradient(90deg,var(--gold),#f0c795);transition:width .4s ease}
.snc-progress-n{font-family:var(--mono);flex:0 0 auto}

.snc-result{margin-top:10px;border-radius:8px;padding:8px 11px;font-size:11px;line-height:1.7}
.snc-result b{display:block;font-size:11.5px;margin-bottom:2px}
.snc-result span{color:var(--muted)}
.snc-result.ok{border:1px solid rgba(94,203,136,.35);background:rgba(94,203,136,.07);color:#b3e6c9}
.snc-result.fail{border:1px solid rgba(255,120,120,.35);background:rgba(255,120,120,.07);color:#ffb3b3}
.snc-result.held{border:1px solid rgba(216,172,90,.28);background:rgba(216,172,90,.05);color:var(--gold-lt)}

.snc-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-top:12px}
.snc-actions .btn[disabled]{opacity:.42;cursor:not-allowed}
.snc-tip{font-size:10.5px;color:var(--muted)}
.snc-logs{
  margin-top:11px;max-height:168px;overflow:auto;border:1px solid var(--line-soft);border-radius:8px;
  background:rgba(0,0,0,.3);padding:8px 10px;font-family:var(--mono);font-size:11px;line-height:1.8;
}
.snc-logs .sn-log{padding:2px 0}

.sn-empty{
  border:1px dashed var(--line);border-radius:12px;padding:26px 18px;text-align:center;
}
.sn-empty .se-i{font-size:22px;opacity:.7}
.sn-empty .se-t{font-size:13.5px;color:var(--soft);margin:8px 0 4px}
.sn-empty .se-d{font-size:11.5px;color:var(--muted)}

/* ---------- 节点 / 安全文案 ---------- */
.sn-relay-actions{display:flex;gap:8px;margin-top:12px}
.sn-relay-actions .btn{flex:1;justify-content:center;text-align:center}
.sn-relay-actions .btn[disabled]{opacity:.42;cursor:not-allowed}
.sn-restore{width:100%;justify-content:center;text-align:center;margin-top:8px;border-color:rgba(255,120,120,.35);color:#ffb3b3}
.sn-safety{margin-top:12px;display:flex;flex-direction:column;gap:9px}
.sn-safety>div{
  border:1px solid var(--line-soft);border-radius:8px;padding:8px 10px;background:rgba(255,255,255,.015);
}
.sn-safety b{display:block;font-size:11.5px;color:var(--gold-lt);margin-bottom:2px}
.sn-safety span{font-size:10.5px;color:var(--muted);line-height:1.75}

@media(max-width:900px){
  .sn-add-row{grid-template-columns:minmax(0,1fr) 90px 105px}
  .sn-add-row #snNewTarget{grid-column:1/-1}
  .sn-add-row .btn{grid-column:1/-1;justify-content:center}
  .snc-form{grid-template-columns:1fr 1fr}
  .snc-target{grid-column:1/-1}
  .snc-expect{grid-column:1/-1;padding-bottom:0}
}
@media(max-width:700px){
  .sn-gate .sg-r{text-align:left;width:100%}
  .sn-gate .sg-r .btn{width:100%}
  .snc-head{flex-wrap:wrap}
  .snc-addr{width:100%;flex:1 1 100%}
  .snc-flow{flex-direction:column;align-items:flex-start;gap:9px}
  .snc-cd{width:100%;justify-content:space-between}
  .snc-actions .btn{flex:1 1 40%}
  .sn-add-row{grid-template-columns:1fr 1fr}
  .sn-add-row #snNewAddr{grid-column:1/-1}
  .sn-add-row #snNewRounds,.sn-add-row #snNewAmount{grid-column:auto}
  .sn-add-row #snNewTarget{grid-column:1/-1}
}

