*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,"Noto Sans",sans-serif;line-height:1.6;background:#f7f8fa;color:#111}
.container{max-width:960px;margin:0 auto;padding:16px}
.site-header{background:#1e2329;color:#fff}
.site-title{margin:0;font-size:24px;font-weight:600}
.section-title{margin:16px 0;font-size:18px}
.collector{display:flex;gap:8px;align-items:center;margin:12px 0}
.input{flex:1;padding:8px 10px;border:1px solid #d1d5db;border-radius:6px;background:#fff}
.input.small{width:110px;flex:0 0 auto}
.select{padding:8px 10px;border:1px solid #d1d5db;border-radius:6px;background:#fff}
.range{display:flex;align-items:center;gap:6px}
.dash{color:#6b7280}
.modal{position:fixed;inset:0;background:rgba(0,0,0,.35);display:flex;align-items:center;justify-content:center;padding:16px}
.modal-dialog{background:#fff;border:1px solid #e5e7eb;border-radius:8px;min-width:520px;max-width:720px}
.modal-head{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid #e5e7eb}
.maintain-body{padding:12px 16px}
.row{display:flex;gap:8px;align-items:center;margin:8px 0}
.field{display:flex;flex-direction:row;align-items:center;gap:6px}
.label{font-size:12px;color:#374151;min-width:48px}
.fields-col{display:flex;flex-direction:column;gap:8px;flex:1}
.btn.danger{background:#b91c1c;border-color:#7f1d1d}
.btn.ghost{background:#fff;color:#111;border-color:#d1d5db}
[hidden]{display:none !important}
.btn{padding:8px 14px;border:1px solid #1f2937;border-radius:6px;background:#111827;color:#fff;cursor:pointer}
.btn:disabled{opacity:.6;cursor:not-allowed}
.status{margin-left:8px;color:#374151;font-size:13px}
.draw-table{width:100%;border-collapse:collapse;background:#fff;border:1px solid #e5e7eb}
.draw-table th,.draw-table td{border-bottom:1px solid #e5e7eb;border-right:1px dashed #e5e7eb;padding:12px;text-align:left;vertical-align:top}
.draw-table th:last-child,.draw-table td:last-child{border-right:none}
.draw-table thead th{background:#f2f4f7;font-weight:600}
.sortable{cursor:pointer;user-select:none}
.table-caption{caption-side:bottom;text-align:left;padding-top:8px;color:#6b7280;font-size:12px}
.numbers{display:flex;flex-wrap:wrap;gap:6px}
.ball{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:#2563eb;color:#fff;font-weight:600;font-size:14px}
.ball.odd{background:#ef4444}
.rank-grid{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}
.rank-item{display:flex;align-items:center;gap:6px;padding:6px 8px;border:1px solid #e5e7eb;border-radius:8px;background:#fff}
.rank-count{font-size:12px;color:#374151}
.issue{font-variant-numeric:tabular-nums;color:#374151}

/* 移动端自适应 */
@media (max-width: 640px){
  .site-title{font-size:20px}
  .container{padding:12px}
  .collector{flex-direction:column;align-items:stretch}
  .range{flex-wrap:wrap}
  .input.small{width:100%}
  .select,.input,.btn{width:100%}
  .status{margin-left:0;margin-top:8px}
  .row{flex-direction:column;align-items:stretch}
  .field{flex-direction:column;align-items:flex-start}
  .draw-table{display:block;overflow-x:auto}
  .draw-table th,.draw-table td{padding:8px}
  .numbers{gap:4px}
  .ball{width:24px;height:24px;font-size:12px}
  .modal-dialog{min-width:auto;width:100%}
  /* 形态页热度格子在移动端两列显示 */
  .rank-grid{gap:6px}
  .rank-item{flex:1 1 calc(50% - 6px)}
}
