/* ==========================================================
   AD 域账号批处理 · 交互演示
   复用 demo.css 的纸面/黑墨/橙色体系
   ========================================================== */

.stage.ad{grid-template-columns:344px minmax(0,1fr)}

/* ---------------- 待处理名单 ---------------- */
.roster{
  background:var(--mock-bg);
  border:1px solid var(--mock-line);
  box-shadow:0 30px 70px -52px rgba(20,17,15,.55);
  display:flex;flex-direction:column;
  min-width:0;
}
.roster-top{
  padding:.8rem .9rem;border-bottom:1px solid var(--mock-line);
  background:#FBF7EE;
}
.roster-top h2{
  font-family:var(--serif);font-weight:400;font-size:1.0625rem;
  letter-spacing:-.01em;
}
.roster-top p{margin-top:.15rem;font-size:.6875rem;color:var(--ink-faint)}

.roster-tools{
  display:flex;align-items:center;justify-content:space-between;gap:.6rem;
  padding:.45rem .9rem;border-bottom:1px solid var(--mock-line);
  background:#FCF9F2;
}
.check-all{
  display:inline-flex;align-items:center;gap:.4rem;
  font-size:.6875rem;color:var(--ink-soft);cursor:pointer;
}
.check-all input{accent-color:var(--accent);width:14px;height:14px;margin:0}
.check-all:has(input:disabled){color:color-mix(in srgb,var(--ink) 38%,transparent);cursor:default}
.roster-count{
  font-size:.625rem;color:var(--ink-faint);
  font-variant-numeric:tabular-nums;white-space:nowrap;
}

.plist{display:flex;flex-direction:column}
.prow{
  display:grid;grid-template-columns:18px minmax(0,1fr) auto;
  gap:.5rem;align-items:center;
  padding:.5rem .9rem;
  border-bottom:1px solid color-mix(in srgb,var(--mock-line) 70%,transparent);
  transition:background .18s var(--ease);
}
.prow:last-child{border-bottom:0}
.prow:hover{background:color-mix(in srgb,var(--ink) 3%,transparent)}
.prow.is-on{background:#fff;box-shadow:inset 3px 0 0 var(--accent)}
.prow-check{accent-color:var(--accent);width:14px;height:14px;margin:0;justify-self:center}
.prow-check:disabled{opacity:.35;cursor:not-allowed}
.prow-main{
  display:flex;flex-direction:column;gap:.12rem;
  text-align:left;min-width:0;cursor:pointer;
}
.prow-main:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.prow-name{
  display:flex;align-items:baseline;gap:.4rem;flex-wrap:wrap;
  font-size:.8125rem;font-weight:500;line-height:1.4;color:var(--ink);
}
.prow-id{
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace;
  font-size:.5625rem;font-weight:400;letter-spacing:.04em;color:var(--ink-faint);
}
.prow-sub{
  font-size:.625rem;color:var(--ink-faint);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.prow-status{
  flex:none;white-space:nowrap;
  font-size:.5625rem;letter-spacing:.04em;
  padding:.1rem .35rem;border:1px solid var(--mock-line);
  color:var(--ink-faint);
  transition:color .18s var(--ease),border-color .18s var(--ease),background .18s var(--ease);
}
.prow-status[data-k="ready"]{color:#2F6B41;border-color:#BFD8C5;background:#EEF6F0}
.prow-status[data-k="error"]{color:var(--accent-deep);border-color:color-mix(in srgb,var(--accent) 45%,transparent);background:color-mix(in srgb,var(--accent) 7%,transparent)}
.prow-status[data-k="skip"]{color:var(--ink-faint);background:color-mix(in srgb,var(--ink) 4%,transparent)}
.prow-status[data-k="running"]{color:var(--accent-deep);border-color:color-mix(in srgb,var(--accent) 45%,transparent);background:color-mix(in srgb,var(--accent) 9%,transparent)}
.prow-status[data-k="done"]{color:#2F6B41;border-color:#BFD8C5;background:#EEF6F0}

.roster-foot{
  margin-top:auto;
  display:flex;align-items:center;justify-content:space-between;gap:.6rem;
  padding:.55rem .9rem;border-top:1px solid var(--mock-line);
  background:#FBF7EE;font-size:.625rem;color:var(--ink-faint);
}
.run-link{
  font-size:.625rem;letter-spacing:.04em;color:var(--accent-deep);
  border-bottom:1px solid color-mix(in srgb,var(--accent) 40%,transparent);
  padding-bottom:.05rem;flex:none;
  transition:color .2s var(--ease),border-color .2s var(--ease);
}
.run-link:hover{color:var(--accent);border-color:var(--accent)}

/* ---------------- 批处理控制台 ---------------- */
.console{
  background:var(--mock-bg);
  border:1px solid var(--mock-line);
  box-shadow:0 30px 70px -52px rgba(20,17,15,.55);
  display:flex;flex-direction:column;
  min-width:0;
}
.console-top{
  display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;
  padding:.85rem 1rem;border-bottom:1px solid var(--mock-line);
  background:#FBF7EE;
}
.console-heading{min-width:0}
.console-id{
  display:flex;align-items:center;gap:.45rem;flex-wrap:wrap;
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace;
  font-size:.625rem;letter-spacing:.05em;color:var(--ink-faint);
  font-variant-numeric:tabular-nums;
}
.batch-state{
  font-family:var(--sans);font-size:.5625rem;letter-spacing:.04em;
  padding:.05rem .3rem;border:1px solid var(--mock-line);color:var(--ink-faint);
}
.batch-state[data-k="prechecking"],
.batch-state[data-k="executing"]{color:var(--accent-deep);border-color:color-mix(in srgb,var(--accent) 45%,transparent);background:color-mix(in srgb,var(--accent) 8%,transparent)}
.batch-state[data-k="prechecked"]{color:var(--ink-soft);background:color-mix(in srgb,var(--ink) 4%,transparent)}
.batch-state[data-k="done"]{color:#2F6B41;border-color:#BFD8C5;background:#EEF6F0}
.console-title{
  margin-top:.3rem;font-size:1.0625rem;font-weight:700;line-height:1.4;
  letter-spacing:-.005em;
}
.console-sub{margin-top:.25rem;font-size:.6875rem;color:var(--ink-faint)}
.engine{
  flex:none;display:inline-flex;align-items:center;gap:.4rem;
  padding:.22rem .5rem;border:1px solid var(--mock-line);
  font-size:.5625rem;letter-spacing:.06em;color:var(--ink-faint);
  white-space:nowrap;
}
.engine i{
  width:6px;height:6px;border-radius:50%;background:#5E9B6C;display:block;
  box-shadow:0 0 0 3px rgba(94,155,108,.16);
}
.engine b{
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace;
  font-weight:500;font-size:.5625rem;color:var(--ink-soft);
}

.console-body{
  padding:clamp(.85rem,2vw,1.1rem);
  display:flex;flex-direction:column;gap:.85rem;
  min-width:0;
}

/* 预检汇总 */
.summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem}
.summary li{
  border:1px solid var(--mock-line);background:#FCF9F2;
  padding:.5rem .6rem;display:flex;flex-direction:column;gap:.1rem;
}
.summary span{font-size:.625rem;letter-spacing:.04em;color:var(--ink-faint)}
.summary b{
  font-family:var(--serif);font-weight:400;font-size:1.25rem;line-height:1.1;
  font-variant-numeric:tabular-nums;color:var(--ink);
}
.summary li[data-s="error"] b{color:var(--accent-deep)}
.summary li[data-s="skip"] b{color:var(--ink-faint)}
.summary li[data-s="done"] b{color:#2F6B41}

/* 操作条 */
.runbar{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}
.runbar .btn{min-width:112px}
.runbar .run-hint{flex:1 1 12rem}
.btn[aria-disabled="true"]{opacity:.4;cursor:not-allowed;transform:none}
.btn-accent.is-busy{background:var(--ink);opacity:1;cursor:progress}
.btn-accent.is-busy:hover{background:var(--ink)}
.run-hint{font-size:.6875rem;line-height:1.55;color:var(--ink-faint)}

/* 变更预览 */
.detail{
  border:1px solid var(--mock-line);background:#fff;
  padding:.8rem .9rem;min-height:268px;
  display:flex;flex-direction:column;gap:.55rem;
  min-width:0;
}
.detail-empty{display:flex;flex-direction:column;gap:.4rem;justify-content:center;height:100%}
.detail-empty h3{
  font-family:var(--serif);font-weight:400;font-size:1.15rem;
  letter-spacing:-.01em;
}
.detail-kicker{
  font-size:.5625rem;letter-spacing:.18em;text-transform:uppercase;
  color:var(--accent-deep);
}
.detail-empty p{font-size:.75rem;line-height:1.7;color:var(--ink-soft);max-width:34rem}
.detail-tips{display:grid;gap:.3rem;margin-top:.25rem}
.detail-tips li{
  position:relative;padding-left:1rem;
  font-size:.6875rem;color:var(--ink-faint);
}
.detail-tips li::before{
  content:"";position:absolute;left:0;top:.6em;
  width:.45rem;height:1px;background:var(--accent);
}

.detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:.8rem}
.detail-name{
  display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;
  font-size:.9375rem;font-weight:700;line-height:1.4;
}
.act{
  font-size:.5625rem;font-weight:500;letter-spacing:.04em;
  padding:.1rem .35rem;border:1px solid var(--mock-line);
  color:var(--ink-soft);background:color-mix(in srgb,var(--ink) 4%,transparent);
}
.act[data-a="create"]{color:#2F6B41;border-color:#BFD8C5;background:#EEF6F0}
.act[data-a="disable"]{color:var(--accent-deep);border-color:color-mix(in srgb,var(--accent) 40%,transparent);background:color-mix(in srgb,var(--accent) 7%,transparent)}
.detail-meta{margin-top:.2rem;font-size:.625rem;color:var(--ink-faint)}
.detail-status{
  flex:none;font-size:.625rem;letter-spacing:.04em;
  padding:.12rem .4rem;border:1px solid var(--mock-line);color:var(--ink-faint);
}
.detail-status[data-k="ready"]{color:#2F6B41;border-color:#BFD8C5;background:#EEF6F0}
.detail-status[data-k="error"]{color:var(--accent-deep);border-color:color-mix(in srgb,var(--accent) 45%,transparent);background:color-mix(in srgb,var(--accent) 7%,transparent)}
.detail-status[data-k="skip"]{color:var(--ink-faint);background:color-mix(in srgb,var(--ink) 4%,transparent)}
.detail-status[data-k="running"]{color:var(--accent-deep);border-color:color-mix(in srgb,var(--accent) 45%,transparent);background:color-mix(in srgb,var(--accent) 9%,transparent)}
.detail-status[data-k="done"]{color:#2F6B41;border-color:#BFD8C5;background:#EEF6F0}

.detail-alert{
  border-left:2px solid var(--accent);background:#FFF8F3;
  padding:.45rem .55rem;font-size:.75rem;line-height:1.65;color:var(--accent-deep);
}

.diff{
  display:flex;flex-direction:column;gap:.32rem;
  border-top:1px solid var(--mock-line);padding-top:.55rem;
}
.diff-row{display:grid;grid-template-columns:4.6rem minmax(0,1fr);gap:.6rem}
.diff-row dt{font-size:.625rem;letter-spacing:.02em;color:var(--ink-faint);padding-top:.12rem}
.diff-row dd{
  display:flex;flex-wrap:wrap;align-items:baseline;gap:.4rem;
  font-size:.75rem;line-height:1.6;color:var(--ink-soft);min-width:0;
}
.diff .from{
  color:var(--ink-faint);
  text-decoration:line-through;
  text-decoration-color:color-mix(in srgb,var(--ink) 30%,transparent);
}
.diff .to{color:var(--ink)}
.diff .none{color:var(--ink-faint)}
.diff .arw{font-size:.625rem;color:var(--ink-faint)}

.script-wrap{border:1px solid var(--mock-line);background:#FCF9F2;min-width:0}
.script-head{
  display:flex;align-items:baseline;justify-content:space-between;gap:.6rem;
  padding:.35rem .55rem;border-bottom:1px dashed var(--mock-line);
  font-size:.5625rem;letter-spacing:.06em;color:var(--ink-faint);
}
.script-head b{font-weight:500;color:var(--accent-deep)}
.script{
  margin:0;padding:.5rem .55rem;overflow-x:auto;
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace;
  font-size:.625rem;line-height:1.75;color:var(--ink-soft);
  white-space:pre;scrollbar-width:thin;
}
.detail-note{font-size:.625rem;line-height:1.65;color:var(--ink-faint)}
.detail-result{
  display:flex;align-items:baseline;gap:.5rem;flex-wrap:wrap;
  border-top:1px dashed var(--mock-line);padding-top:.45rem;
  font-size:.6875rem;color:#2F6B41;
}
.detail-result time{font-variant-numeric:tabular-nums;color:var(--ink-faint)}

/* 审计日志 */
.audit{
  border:1px solid var(--mock-line);background:#FCF9F2;
  padding:.7rem .8rem;
}
.audit h3{
  display:flex;align-items:baseline;justify-content:space-between;gap:.6rem;
  font-size:.6875rem;font-weight:500;letter-spacing:.1em;color:var(--accent-deep);
}
.audit h3 span{font-weight:400;letter-spacing:.04em;color:var(--ink-faint)}
.audit ol{margin-top:.5rem;display:flex;flex-direction:column;gap:.28rem}
.audit li{
  display:grid;grid-template-columns:58px 4.6rem minmax(0,1fr);gap:.5rem;
  align-items:baseline;font-size:.6875rem;color:var(--ink-soft);
  animation:auditIn .3s var(--ease) both;
}
@keyframes auditIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.audit time{font-size:.625rem;color:var(--ink-faint);font-variant-numeric:tabular-nums}
.audit b{font-weight:500;color:var(--ink)}
.audit span{min-width:0}

/* 页脚状态 */
.console-foot{
  margin-top:auto;
  display:flex;align-items:center;justify-content:space-between;gap:1rem;
  padding:.55rem 1rem;border-top:1px solid var(--mock-line);
  background:#FBF7EE;font-size:.625rem;color:var(--ink-faint);
}
.console-status{color:var(--ink-soft);font-variant-numeric:tabular-nums;transition:color .2s var(--ease)}
.console-status.is-run{color:var(--accent-deep)}
.console-status.is-done{color:#2F6B41}

/* ---------------- 响应式 ---------------- */
@media (max-width:1120px){
  .stage.ad{grid-template-columns:300px minmax(0,1fr)}
}
@media (max-width:900px){
  .stage.ad{grid-template-columns:minmax(0,1fr)}
  .detail{min-height:0}
}
@media (max-width:720px){
  .plist{display:grid;grid-template-columns:1fr 1fr}
  .prow{border-right:1px solid color-mix(in srgb,var(--mock-line) 70%,transparent)}
  .prow:nth-child(2n){border-right:0}
  .prow:nth-last-child(-n+2){border-bottom:0}
  .prow-sub{white-space:normal;line-height:1.45}
}
@media (max-width:560px){
  .plist{grid-template-columns:1fr}
  .prow{border-right:0}
  .prow:nth-last-child(-n+2){border-bottom:1px solid color-mix(in srgb,var(--mock-line) 70%,transparent)}
  .prow:last-child{border-bottom:0}
  .console-top{flex-direction:column;gap:.55rem}
  .engine{align-self:flex-start}
  .console-title{font-size:1rem}
  .summary{grid-template-columns:1fr 1fr}
  .runbar{gap:.5rem}
  .runbar .btn{flex:1 1 8rem}
  .runbar .run-hint{flex-basis:100%}
  .diff-row{grid-template-columns:1fr;gap:.05rem}
  .audit li{grid-template-columns:52px 3.6rem minmax(0,1fr);gap:.4rem}
  .console-foot{flex-direction:column;align-items:flex-start;gap:.2rem}
}
