
/* ---------------- 工具站 ---------------- */
.tool-shell{padding-top:18px}
.crumb{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--xh-faint);margin:0 0 14px}
.crumb a{color:var(--xh-muted);text-decoration:none}
.crumb a:hover{color:var(--xh-primary)}
.crumb i{font-style:normal;opacity:.5}

.tool-panel{background:var(--xh-panel);border:1px solid var(--xh-line);border-radius:var(--xh-radius-lg);
  padding:22px;box-shadow:var(--xh-shadow);margin-bottom:26px}
.tool-loading{padding:30px;text-align:center;color:var(--xh-faint);font-size:13px}
.tool-frame-wrap{border:1px solid var(--xh-line);border-radius:var(--xh-radius-lg);overflow:hidden;
  background:var(--xh-panel);box-shadow:var(--xh-shadow);margin-bottom:26px}
.tool-frame{display:block;width:100%;height:min(78vh,860px);border:0;background:transparent}

.tp-row{margin-bottom:16px}
.tp-label{display:block;font-size:12.5px;color:var(--xh-muted);margin-bottom:8px;letter-spacing:.02em}
.tp-area,.tp-input,.tp-select{
  width:100%;box-sizing:border-box;padding:12px 14px;border-radius:var(--xh-radius-sm);
  border:1px solid var(--xh-line);background:var(--xh-input-bg);color:var(--xh-text);
  font-size:14px;line-height:1.6;outline:none;transition:.16s;font-family:var(--xh-font)}
.tp-area{resize:vertical;min-height:150px}
.tp-area.mono,.tp-input.mono{font-family:var(--xh-mono);font-size:13px}
.tp-area:focus,.tp-input:focus,.tp-select:focus{border-color:rgba(var(--xh-primary-rgb),.6);
  box-shadow:0 0 0 3px rgba(var(--xh-primary-rgb),.14)}
.tp-select{width:auto;min-width:130px;cursor:pointer}
.tp-inline{display:flex;align-items:center;gap:8px}
.tp-slash{color:var(--xh-faint);font-family:var(--xh-mono)}

.tp-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:16px}
.tp-btn{appearance:none;cursor:pointer;border:1px solid var(--xh-line);background:transparent;
  color:var(--xh-text);font-size:13.5px;padding:9px 16px;border-radius:var(--xh-radius-pill);
  transition:.16s;font-family:inherit}
.tp-btn:hover{border-color:rgba(var(--xh-primary-rgb),.55);color:var(--xh-primary)}
.tp-btn.primary{background:var(--xh-primary-grad);border-color:transparent;color:#fff;
  box-shadow:0 8px 20px rgba(var(--xh-primary-rgb),.26)}
.tp-btn.primary:hover{filter:brightness(1.06);color:#fff}
.tp-btn.ghost{border-color:transparent;color:var(--xh-muted)}
.tp-mini{cursor:pointer;border:0;background:transparent;color:var(--xh-primary);font-size:12px;padding:2px 6px}

.tp-msg{min-height:18px;font-size:13px;color:var(--xh-muted);margin-bottom:12px}
.tp-msg.ok{color:var(--xh-ok)}
.tp-msg.err{color:var(--xh-danger)}

.tp-grid2{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.tp-block{background:rgba(var(--xh-w),var(--xh-w),var(--xh-w),.03);border:1px solid var(--xh-line);
  border-radius:var(--xh-radius);padding:16px}
.tp-out{margin-top:12px;padding:12px 14px;border-radius:var(--xh-radius-sm);background:var(--xh-input-bg);
  border:1px dashed var(--xh-line);font-family:var(--xh-mono);font-size:13px;color:var(--xh-text);
  word-break:break-all;min-height:20px}
.tp-kv>div{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--xh-line);font-size:13.5px}
.tp-kv>div:last-child{border-bottom:0}
.tp-kv span{width:64px;color:var(--xh-faint);font-size:12.5px}
.tp-kv code{font-family:var(--xh-mono);color:var(--xh-text);flex:1}
.tp-color-preview{height:96px;border-radius:var(--xh-radius);border:1px solid var(--xh-line);margin-bottom:16px;
  box-shadow:inset 0 0 0 1px rgba(0,0,0,.04)}
.tp-color{width:46px;height:40px;padding:0;border:1px solid var(--xh-line);border-radius:10px;background:transparent;cursor:pointer}

.tp-stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:12px;margin-bottom:18px}
.tp-stat{background:rgba(var(--xh-w),var(--xh-w),var(--xh-w),.04);border:1px solid var(--xh-line);
  border-radius:var(--xh-radius);padding:14px;text-align:center}
.tp-stat b{display:block;font-size:20px;font-variant-numeric:tabular-nums;color:var(--xh-text)}
.tp-stat span{font-size:11.5px;color:var(--xh-faint)}

.tp-match{display:flex;flex-wrap:wrap;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid var(--xh-line);font-size:13px}
.tp-match b{color:var(--xh-faint);font-weight:500;font-size:12px}
.tp-match code{font-family:var(--xh-mono);color:var(--xh-primary);background:rgba(var(--xh-primary-rgb),.1);
  padding:2px 8px;border-radius:6px;word-break:break-all}
.tp-pos{color:var(--xh-faint);font-size:12px}
.tp-grp-wrap{flex-basis:100%;display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}
.tp-grp{font-family:var(--xh-mono);font-size:12px;color:var(--xh-muted);border:1px solid var(--xh-line);
  padding:2px 8px;border-radius:6px}
.tp-replace{margin-top:16px}
.tp-replace span{font-size:12.5px;color:var(--xh-faint)}
.tp-replace pre{margin:8px 0 0;padding:12px;border-radius:var(--xh-radius-sm);background:var(--xh-input-bg);
  border:1px solid var(--xh-line);white-space:pre-wrap;word-break:break-all;font-size:13px;font-family:var(--xh-mono)}
.tp-check{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--xh-muted);cursor:pointer}
.tp-pw-list{display:flex;flex-direction:column;gap:8px}
.tp-pw{display:flex;justify-content:space-between;align-items:center;gap:12px;cursor:pointer;
  border:1px solid var(--xh-line);background:rgba(var(--xh-w),var(--xh-w),var(--xh-w),.03);
  border-radius:var(--xh-radius-sm);padding:11px 14px;transition:.14s;text-align:left}
.tp-pw:hover{border-color:rgba(var(--xh-primary-rgb),.5)}
.tp-pw code{font-family:var(--xh-mono);font-size:13.5px;color:var(--xh-text);word-break:break-all}
.tp-pw span{font-size:12px;color:var(--xh-primary);flex:none}

.tool-toast{position:fixed;left:50%;bottom:38px;transform:translateX(-50%);z-index:9999;
  background:var(--xh-toast-bg);color:#fff;font-size:13px;padding:10px 18px;border-radius:var(--xh-radius-pill);
  box-shadow:var(--xh-shadow-lg);opacity:1;transition:.35s}
.tool-toast.out{opacity:0;transform:translate(-50%,8px)}

@media (max-width:760px){
  .tp-grid2{grid-template-columns:1fr}
  .tool-panel{padding:16px}
  .tp-actions{gap:8px}
  .tp-btn{padding:8px 14px;font-size:13px}
  .tool-frame{height:min(72vh,640px)}
}
