/* =========================================================
   idgen.css (IDGEN MODULE)
   - 统一采用 idgen-* 模块化命名
   - 精修后台感：标题区 / 筛选条 / 表格 / 分页 / 复制交互
   ========================================================= */

.idgen-module{
  --idgen-gap:16px;
  --idgen-page-pad:18px;
  --idgen-card-pad:18px;
  --idgen-card-pad-lg:24px;
  --idgen-card-radius:16px;
  --idgen-soft-border:rgba(15,23,42,.08);
  --idgen-soft-line:rgba(15,23,42,.06);
  --idgen-soft-bg:#f8fafc;
  --idgen-muted:#667085;
  --idgen-title:#0f172a;
  --idgen-shadow:0 10px 28px rgba(15,23,42,.06);
  --idgen-shadow-hover:0 16px 34px rgba(15,23,42,.08);
  --idgen-primary-soft:rgba(11,92,255,.08);
}

/* ===== Page spacing ===== */
.idgen-module.idgen-page,
.idgen-module.idgen-index-page{
  padding:4px var(--idgen-page-pad) var(--idgen-page-pad);
}
.idgen-module > * + *{
  margin-top:var(--idgen-gap);
}

/* ===== Card spacing / panel base ===== */
.idgen-module .card.idgen-panel,
.idgen-module .card.pad,
.idgen-module .card.pad.idgen-panel{
  padding:var(--idgen-card-pad);
  border-radius:var(--idgen-card-radius);
  border:1px solid var(--idgen-soft-border);
  box-shadow:var(--idgen-shadow);
  background:#fff;
}
.idgen-module .card.pad > * + *,
.idgen-module .idgen-panel > * + *{
 /* margin-top:18px;*/
}
.idgen-module .idgen-panel--spaced{ margin-bottom:16px; }
.idgen-module .idgen-panel-note{ margin-top:14px; }
.idgen-module .alert.idgen-panel-note{
  border-radius:12px;
  border:1px solid rgba(245,158,11,.18);
  background:linear-gradient(180deg,rgba(255,251,235,.98),rgba(255,247,237,.94));
}

/* ===== Header ===== */
.idgen-module .idgen-header{
  display:grid;
  grid-template-columns:1fr auto 1fr;
  align-items:center;
  gap:14px;
  margin:4px 0 20px;
  text-align:center;
}
.idgen-module .idgen-header--simple{
  grid-template-columns:minmax(0,1fr) auto;
  text-align:left;
}
.idgen-module .idgen-header__main{
  display:flex;
  flex-direction:column;
  gap:8px;
}
.idgen-module .idgen-header__main h2{
  margin:0;
  font-size:26px;
  line-height:1.2;
  letter-spacing:.2px;
  color:var(--idgen-title);
}
.idgen-module .idgen-header__main .tool-sub,
.idgen-module .tool-sub-row{
  color:var(--idgen-muted);
}
.idgen-module .idgen-header__main .tool-sub{
  margin-top:0;
  font-size:14px;
  line-height:1.7;
}
.idgen-module .idgen-header__actions{
  display:flex;
  justify-content:flex-end;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
}
.idgen-module .idgen-header__actions .btn{
  min-height:40px;
}
.idgen-module .tool-sub-row{
  display:flex;
  justify-content:center;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
  line-height:1.7;
}
.idgen-module .idgen-taxfree-note{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:5px 10px;
  border-radius:999px;
  color:#c2410c;
  background:rgba(251,146,60,.12);
  border:1px solid rgba(251,146,60,.18);
  font-weight:800;
  font-size:12px;
}

/* ===== Shell / panel ===== */
.idgen-module .idgen-shell{
  display:grid;
  grid-template-columns:260px 1fr;
  gap:18px;
  align-items:start;
}
.idgen-module .idgen-sidebar{
  position:sticky;
  top:16px;
}
.idgen-module .idgen-content,
.idgen-module .idgen-panel{
  min-width:0;
}
.idgen-module .idgen-block-gap{ height:18px; }

/* ===== Menu ===== */
.idgen-module .idgen-menu{
  display:flex;
  flex-direction:column;
  gap:16px;
}
.idgen-module .idgen-menu__group{
  padding:0;
}
.idgen-module .idgen-menu__group + .idgen-menu__group{
  padding-top:14px;
  border-top:1px dashed var(--idgen-soft-line);
}
.idgen-module .idgen-menu__group h3{
  margin:0 0 12px;
  font-size:14px;
  line-height:1.4;
  color:var(--idgen-title);
}
.idgen-module .idgen-menu__buttons{
  display:flex;
  flex-direction:column;
  gap:12px;
}
.idgen-module .idgen-sidebar .btn{
  width:100%;
  justify-content:center;
  min-height:42px;
  border-radius:5px;
}
.idgen-module .idgen-sidebar .btn.is-active,
.idgen-module .idgen-pager__current{
  box-shadow:0 0 0 2px rgba(11,92,255,.16) inset;
}

/* ===== Index link grid ===== */
.idgen-module .idgen-link-grid{
  display:flex;
  flex-wrap:wrap;
  gap:12px;
  align-items:center;
}
.idgen-module .idgen-link-grid .btn{
  min-height:42px;
  padding-inline:16px;
  border-radius:12px;
}
.idgen-module .idgen-link-grid__spacer{
  flex:1 1 24px;
  min-width:24px;
}

/* ===== Filters / meta ===== */
.idgen-module .idgen-filterbar{
  display:flex;
  gap:12px;
  flex-wrap:wrap;
  align-items:center;
  justify-content:center;
  padding:14px;
  border:1px solid var(--idgen-soft-line);
  border-radius:14px;
  background:linear-gradient(180deg,#fbfcfe 0%, #f8fafc 100%);
}
.idgen-module .idgen-filterbar select,
.idgen-module .idgen-filterbar input{
  min-width:160px;
  height:42px;
  border-radius:12px;
  border:1px solid #dfe3ea;
  padding:0 13px;
  background:#fff;
  box-shadow:0 1px 2px rgba(15,23,42,.03) inset;
}
.idgen-module .idgen-filterbar .btn{
  min-height:42px;
  border-radius:12px;
  padding-inline:16px;
}
.idgen-module .idgen-meta{
  margin-top:14px;
  padding-top:14px;
  border-top:1px dashed var(--idgen-soft-line);
  font-size:13px;
  line-height:1.7;
  color:var(--idgen-muted);
  text-align:center;
}

/* ===== Data tables (identity info) ===== */
.idgen-module .idgen-data-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:12px;
}
.idgen-module .idgen-data-table{
  width:100%;
  border-collapse:separate;
  border-spacing:0;
  overflow:hidden;
  border:1px solid var(--idgen-soft-line);
  border-radius:14px;
  background:#fff;
}
.idgen-module .idgen-data-table th,
.idgen-module .idgen-data-table td{
  border-bottom:1px solid #eef2f6;
  padding:13px 15px;
  vertical-align:middle;
  text-align:left;
}
.idgen-module .idgen-data-table tr:last-child th,
.idgen-module .idgen-data-table tr:last-child td{
  border-bottom:none;
}
.idgen-module .idgen-data-table th{
  width:132px;
  color:var(--idgen-muted);
  white-space:nowrap;
  background:#fafbfc;
  font-weight:700;
}
.idgen-module .mono,
.idgen-module .idgen-data-table .mono,
.idgen-module .idgen-data-list .mono{
  font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
  letter-spacing:.2px;
}

/* ===== List tables ===== */
.idgen-module .idgen-table-wrap{
  width:100%;
  max-width:100%;
  overflow-x:auto;
  overflow-y:hidden;
  -webkit-overflow-scrolling:touch;
  padding:2px 2px 8px;
  border-radius:14px;
  background:var(--idgen-soft-bg);
}
.idgen-module .idgen-data-list{
  width:100%;
  min-width:max-content;
  border-collapse:separate;
  border-spacing:0;
  font-size:14px;
}
.idgen-module .idgen-data-list th,
.idgen-module .idgen-data-list td{
  border-right:1px solid #e7ebf0;
  border-bottom:1px solid #e7ebf0;
  padding:12px 14px;
  vertical-align:middle;
  white-space:nowrap;
  background:#fff;
}
.idgen-module .idgen-data-list th:first-child,
.idgen-module .idgen-data-list td:first-child{
  border-left:1px solid #e7ebf0;
}
.idgen-module .idgen-data-list thead th{
  text-align:left;
  color:var(--idgen-muted);
  background:#f8fafc;
  font-weight:700;
  position:sticky;
  top:0;
  z-index:1;
}
.idgen-module .idgen-data-list tbody tr:first-child td{
  border-top:none;
}
.idgen-module .idgen-data-list--grid{
  border:none;
  background:transparent;
}
.idgen-module .idgen-data-list__merged{
  vertical-align:middle !important;
  font-weight:700;
  background:#fbfcfe !important;
}
.idgen-module .idgen-data-list__row--taxfree td{
  color:#c2410c;
  font-weight:800;
  background:rgba(255,247,237,.7);
}
.idgen-module .nowrap{ white-space:nowrap; }

/* ===== Pager ===== */
.idgen-module .idgen-pager{
  display:flex;
  justify-content:center;
  gap:8px;
  flex-wrap:wrap;
  margin-top:20px;
  align-items:center;
  padding-top:4px;
}
.idgen-module .idgen-pager .btn,
.idgen-module .idgen-pager__current{
  min-width:42px;
  min-height:40px;
  border-radius:12px;
  padding:0 14px;
}
.idgen-module .idgen-pager .btn{
  border-color:#dde3ec;
  background:#fff;
  box-shadow:0 4px 10px rgba(15,23,42,.04);
}
.idgen-module .idgen-pager .btn:hover{
  transform:translateY(-1px);
  box-shadow:0 8px 18px rgba(15,23,42,.07);
}
.idgen-module .idgen-pager__ellipsis{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:26px;
  padding:0 4px;
  color:var(--idgen-muted);
}
.idgen-module .idgen-pager__current{
  pointer-events:none;
  opacity:1;
  color:#0b5cff;
  background:rgba(11,92,255,.08);
  border:1px solid rgba(11,92,255,.12);
  font-weight:800;
}

/* ===== Copy ===== */
.idgen-module .idgen-copyable{
  cursor:pointer;
  display:inline-block;
  padding:2px 6px;
  border-radius:8px;
  transition:background .15s ease, color .15s ease;
  user-select:text;
  position:relative;
}
.idgen-module .idgen-copyable:hover{
  background:rgba(11,92,255,.06);
  color:#0b5cff;
}
.idgen-module .idgen-copyable:active{ background:rgba(11,92,255,.1); }
.idgen-module .idgen-copy-hint{
  font-size:12px;
  color:var(--idgen-muted);
  margin-top:10px;
  padding-top:10px;
  border-top:1px dashed var(--idgen-soft-line);
}
.idgen-module .idgen-copyable__bubble{
  position:absolute;
  left:100%;
  top:50%;
  transform:translate(10px, -50%);
  background:rgba(15,23,42,.92);
  color:#fff;
  font-size:12px;
  line-height:1;
  padding:7px 9px;
  border-radius:10px;
  white-space:nowrap;
  pointer-events:none;
  opacity:0;
  transition:opacity .12s ease;
  box-shadow:0 8px 20px rgba(15,23,42,.18);
}
.idgen-module .idgen-copyable__bubble.show{ opacity:1; }

/* ===== Responsive ===== */
@media (max-width:980px){
  .idgen-module .idgen-shell{ grid-template-columns:1fr; }
  .idgen-module .idgen-sidebar{ position:static; }
  .idgen-module .idgen-header,
  .idgen-module .idgen-header--simple{
    grid-template-columns:1fr;
  }
  .idgen-module .idgen-header,
  .idgen-module .idgen-header--simple,
  .idgen-module .idgen-header__actions{
    text-align:center;
    justify-content:center;
  }
  .idgen-module .idgen-filterbar{
    justify-content:flex-start;
  }
  .idgen-module .idgen-copyable__bubble{ transform:translate(8px, -50%); }
}
@media (max-width:880px){
  .idgen-module .idgen-data-grid{ grid-template-columns:1fr; }
}
@media (min-width:1200px){
  .idgen-module{
    --idgen-page-pad:22px;
    --idgen-card-pad:20px;
    --idgen-card-pad-lg:24px;
  }
  .idgen-module .card.idgen-panel,
  .idgen-module .card.pad,
  .idgen-module .card.pad.idgen-panel{
    padding:var(--idgen-card-pad-lg);
  }
}
@media (max-width:980px){
  .idgen-module.idgen-page,
  .idgen-module.idgen-index-page{
    padding:0 14px 14px;
  }
  .idgen-module .card.idgen-panel,
  .idgen-module .card.pad,
  .idgen-module .card.pad.idgen-panel{
    padding:16px;
    border-radius:14px;
  }
  .idgen-module .idgen-filterbar{
    padding:12px;
  }
}
@media (max-width:640px){
  .idgen-module.idgen-page,
  .idgen-module.idgen-index-page{
    padding:0 10px 12px;
  }
  .idgen-module .card.idgen-panel,
  .idgen-module .card.pad,
  .idgen-module .card.pad.idgen-panel{
    padding:14px;
    border-radius:12px;
  }
  .idgen-module .idgen-header{ margin:2px 0 16px; }
  .idgen-module .idgen-header__main h2{ font-size:22px; }
  .idgen-module .idgen-filterbar select,
  .idgen-module .idgen-filterbar input,
  .idgen-module .idgen-filterbar .btn{
    width:100%;
  }
  .idgen-module .idgen-data-table th,
  .idgen-module .idgen-data-table td,
  .idgen-module .idgen-data-list th,
  .idgen-module .idgen-data-list td{
    padding:10px 12px;
  }
  .idgen-module .idgen-pager{
    gap:6px;
  }
  .idgen-module .idgen-pager .btn,
  .idgen-module .idgen-pager__current{
    min-width:38px;
    min-height:38px;
    padding:0 12px;
  }
}
