/* ==========================================================================
   多媒体归档批量处理 · 独立设计「素材流水线」
   --------------------------------------------------------------------------
   设计概念：把杂乱文件名当成一批待上线的素材——左边是规则与输入，
   右边是流水线预览与结果对照表，最后直接产出可执行的批量重命名脚本。
   配色：石板蓝 + 亮青 + 琥珀黄，像一条干净的生产线。
   所有规则限定在 .tsk.mab 作用域内。
   ========================================================================== */

.tsk.mab {
    --bg: #eef2f6;
    --bg-2: #e1e8ef;
    --card: #ffffff;
    --card-2: #f4f7fa;
    --ink: #101922;
    --ink-2: #4a5b6b;
    --faint: #7f8f9e;
    --line: #d9e1e9;
    --line-2: #eaf0f5;
    --line-3: #bcc9d6;

    --pri: #16506e;
    --pri-2: #0e8ba8;
    --pri-soft: #dff0f5;
    --pri-ink: #10455f;

    --cyan: #0e8ba8;
    --cyan-soft: #dff0f5;
    --amber: #b5700a;
    --amber-soft: #fbeed6;
    --ok: #16794f;
    --ok-soft: #e0f1e9;
    --red: #b02a2a;
    --red-soft: #f9e4e4;
    --violet: #5c4bb0;
    --violet-soft: #eae8fa;

    --shadow-sm: 0 1px 2px rgba(16, 25, 34, .05), 0 6px 16px rgba(16, 25, 34, .05);
    --shadow: 0 2px 6px rgba(16, 25, 34, .07), 0 20px 46px rgba(16, 25, 34, .10);
    --r: 16px;
    --r-sm: 10px;
    --num: "Bahnschrift", "Segoe UI Variable Text", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;

    background:
        radial-gradient(900px 400px at 96% -8%, rgba(14, 139, 168, .13), transparent 62%),
        radial-gradient(700px 380px at 2% 4%, rgba(181, 112, 10, .07), transparent 58%),
        var(--bg);
    color: var(--ink);
    font-size: 15.5px;
    line-height: 1.85;
    overflow-x: clip;
}
:root[data-theme="dark"] .tsk.mab {
    --bg: #080d12;
    --bg-2: #0d141b;
    --card: #0f171f;
    --card-2: #151f29;
    --ink: #e7eef5;
    --ink-2: #a6b5c4;
    --faint: #74869a;
    --line: #1e2a35;
    --line-2: #17212b;
    --line-3: #32414f;

    --pri: #63c2e6;
    --pri-2: #4fd0c4;
    --pri-soft: rgba(99, 194, 230, .13);
    --pri-ink: #8fd6f0;

    --cyan: #4fd0c4;
    --cyan-soft: rgba(79, 208, 196, .13);
    --amber: #f0b45c;
    --amber-soft: rgba(240, 180, 92, .13);
    --ok: #5bd7a0;
    --ok-soft: rgba(91, 215, 160, .13);
    --red: #f28d8d;
    --red-soft: rgba(242, 141, 141, .13);
    --violet: #b49bf0;
    --violet-soft: rgba(180, 155, 240, .13);

    --shadow-sm: 0 1px 2px rgba(0, 0, 0, .5), 0 6px 16px rgba(0, 0, 0, .3);
    --shadow: 0 2px 6px rgba(0, 0, 0, .55), 0 20px 46px rgba(0, 0, 0, .38);
}

.mab-wrap { max-width: 1340px; margin: 0 auto; padding: 0 28px 70px; }
.mab-wrap * { box-sizing: border-box; }
.mab-wrap p { margin: 0; }
.mab-wrap b, .mab-wrap strong { color: var(--ink); font-weight: 750; }
.mab-wrap code, .mab-wrap pre { font-family: var(--num); }

/* ---------------- 首屏 ---------------- */
.mab-hero {
    padding: 28px 0 20px;
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 26px;
    align-items: start;
}
.mab-kicker {
    display: inline-flex; align-items: center; gap: 10px;
    background: var(--card); border: 1px solid var(--line-3);
    border-radius: 999px; padding: 7px 16px;
    box-shadow: var(--shadow-sm);
    font: 700 11.5px/1 var(--num); letter-spacing: .16em;
    text-transform: uppercase; color: var(--pri-ink);
}
.mab-kicker i {
    width: 24px; height: 24px; border-radius: 7px;
    background: linear-gradient(135deg, var(--pri), var(--cyan));
    display: inline-block;
}
.mab-hero h1 {
    margin: 15px 0 0;
    font-size: clamp(26px, 3.9vw, 39px);
    line-height: 1.24; font-weight: 800; letter-spacing: -.015em;
}
.mab-hero h1 em { font-style: normal; color: var(--pri-ink); }
.mab-lead { margin-top: 13px; font-size: 16px; line-height: 1.95; color: var(--ink-2); max-width: 640px; }
.mab-lead b { color: var(--pri-ink); }

/* ---------------- 流水线预览 ---------------- */
.mab-pipe {
    background: var(--card);
    border: 1px solid var(--line);
    border-radius: var(--r);
    box-shadow: var(--shadow);
    padding: 20px 22px 22px;
}
.mab-pipe > header { display: flex; align-items: center; gap: 10px; margin-bottom: 14px; flex-wrap: wrap; }
.mab-pipe > header h2 { margin: 0; font-size: 15.5px; font-weight: 800; }
.mab-pipe > header .en {
    margin-left: auto;
    font: 700 10.5px/1 var(--num); letter-spacing: .18em;
    color: var(--faint); text-transform: uppercase;
}
.mab-flow {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
    gap: 8px;
    align-items: stretch;
}
.mab-node {
    background: var(--card-2);
    border: 1px solid var(--line);
    border-radius: var(--r-sm);
    padding: 11px 12px;
    position: relative;
}
.mab-node .k {
    font: 800 10.5px/1 var(--num); letter-spacing: .1em;
    color: var(--faint);
}
.mab-node .v {
    margin-top: 6px;
    font: 700 14px/1.4 var(--num);
    color: var(--ink);
    word-break: break-all;
}
.mab-node .v em { font-style: normal; color: var(--pri-ink); }
.mab-node.hi { background: var(--pri-soft); border-color: var(--pri); }
.mab-node.hi .k { color: var(--pri-ink); }

/* ---------------- 规则配置 ---------------- */
.mab-rules {
    margin-top: 20px;
    background: var(--card);
    border: 1px solid var(--line);
    border-radius: var(--r);
    box-shadow: var(--shadow-sm);
    overflow: hidden;
}
.mab-rules > header {
    display: flex; align-items: center; gap: 10px;
    padding: 14px 20px;
    background: var(--card-2);
    border-bottom: 1px solid var(--line-2);
    flex-wrap: wrap;
}
.mab-rules > header h2 { margin: 0; font-size: 15px; font-weight: 800; }
.mab-rules > header .en {
    margin-left: auto;
    font: 700 10.5px/1 var(--num); letter-spacing: .18em;
    color: var(--faint); text-transform: uppercase;
}
.mab-rules .body { padding: 16px 20px 18px; }
.mab-fields { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 12px; }
.mab-f label { display: block; font-size: 12.5px; font-weight: 750; color: var(--ink-2); margin-bottom: 5px; }
.mab-f input, .mab-f select, .mab-f textarea {
    width: 100%;
    border: 1.5px solid var(--line-3);
    border-radius: var(--r-sm);
    background: var(--card-2); color: var(--ink);
    font: 600 14px/1.6 var(--num);
    padding: 9px 12px; outline: none;
    transition: .15s;
}
.mab-f textarea { resize: vertical; min-height: 150px; line-height: 1.75; font-size: 13px; }
.mab-f input:focus, .mab-f select:focus, .mab-f textarea:focus {
    border-color: var(--pri); background: var(--card);
    box-shadow: 0 0 0 3px var(--pri-soft);
}
.mab-f textarea::placeholder { color: var(--faint); }
.mab-f.wide { grid-column: 1 / -1; }

/* ---------------- 按钮 ---------------- */
.mab-btn {
    border: 1.5px solid var(--line-3);
    background: var(--card-2); color: var(--ink-2);
    border-radius: var(--r-sm);
    padding: 10px 17px;
    font: 700 13.5px/1.4 inherit;
    cursor: pointer; transition: .16s;
    display: inline-flex; align-items: center; gap: 7px;
}
.mab-btn:hover { border-color: var(--pri); color: var(--pri-ink); }
.mab-btn:focus-visible { outline: 3px solid var(--pri-soft); outline-offset: 2px; }
.mab-btn.pri {
    background: linear-gradient(135deg, var(--pri), var(--cyan));
    border-color: transparent; color: #fff;
    box-shadow: 0 8px 18px rgba(14, 139, 168, .26);
}
.mab-btn.pri:hover { color: #fff; filter: brightness(1.07); }
:root[data-theme="dark"] .mab-btn.pri { color: #080d12; }
:root[data-theme="dark"] .mab-btn.pri:hover { color: #080d12; }
.mab-btn.sm { padding: 6px 12px; font-size: 12.5px; border-radius: 8px; }
.mab-btn.block { width: 100%; justify-content: center; }
.mab-btn:disabled { opacity: .45; cursor: not-allowed; }
.mab-acts { display: flex; flex-wrap: wrap; gap: 9px; margin-top: 14px; }

/* ---------------- 统计条 ---------------- */
.mab-stats {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
    margin-bottom: 16px;
}
.mab-stat {
    background: var(--card-2);
    border: 1px solid var(--line);
    border-radius: var(--r-sm);
    padding: 12px 14px;
    border-left: 3px solid var(--pri);
}
.mab-stat.dup { border-left-color: var(--red); }
.mab-stat.dir { border-left-color: var(--amber); }
.mab-stat.ok { border-left-color: var(--ok); }
.mab-stat .k { font-size: 11.5px; font-weight: 750; color: var(--faint); }
.mab-stat .v {
    font: 800 clamp(20px, 2.4vw, 26px)/1.2 var(--num);
    color: var(--ink); font-variant-numeric: tabular-nums; margin-top: 2px;
}
.mab-stat .v small { font-size: .5em; color: var(--faint); font-weight: 700; }

/* ---------------- 结果对照表 ---------------- */
.mab-result {
    background: var(--card);
    border: 1px solid var(--line);
    border-radius: var(--r);
    box-shadow: var(--shadow-sm);
    overflow: hidden;
}
.mab-result > header {
    display: flex; align-items: center; gap: 10px;
    padding: 15px 20px;
    background: var(--card-2);
    border-bottom: 1px solid var(--line-2);
    flex-wrap: wrap;
}
.mab-result > header h2 { margin: 0; font-size: 15.5px; font-weight: 800; }
.mab-result > header .en {
    margin-left: auto;
    font: 700 10.5px/1 var(--num); letter-spacing: .18em;
    color: var(--faint); text-transform: uppercase;
}
.mab-result > header .note { font-size: 12.5px; color: var(--faint); }
.mab-result .body { padding: 18px 20px 20px; }
.mab-twrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.mab-table { width: 100%; border-collapse: collapse; font-size: 13px; min-width: 700px; }
.mab-table th {
    text-align: left; font-size: 11.5px; font-weight: 800;
    letter-spacing: .04em; color: var(--faint);
    padding: 0 12px 9px; border-bottom: 1px solid var(--line); white-space: nowrap;
}
.mab-table td {
    padding: 9px 12px; border-bottom: 1px solid var(--line-2);
    color: var(--ink-2); line-height: 1.7;
    font-family: var(--num); font-size: 12.5px;
    white-space: nowrap;
}
.mab-table td:first-child { color: var(--faint); }
.mab-table td.new { color: var(--ink); font-weight: 700; }
.mab-table tr:last-child td { border-bottom: 0; }
.mab-flag {
    display: inline-block; border-radius: 999px; padding: 3px 9px;
    font: 700 11px/1.6 inherit;
}
.mab-flag.ok { background: var(--ok-soft); color: var(--ok); }
.mab-flag.dup { background: var(--red-soft); color: var(--red); }
.mab-flag.nodate { background: var(--amber-soft); color: var(--amber); }
.mab-empty {
    text-align: center; padding: 34px 14px; color: var(--faint);
    font-size: 13.5px; border: 1px dashed var(--line-3); border-radius: var(--r-sm);
}
.mab-empty .ic { font-size: 30px; display: block; margin-bottom: 7px; }

/* ---------------- 目录树 ---------------- */
.mab-tree {
    display: flex; flex-direction: column; gap: 4px;
    font-family: var(--num); font-size: 13px;
}
.mab-tree .row {
    display: flex; align-items: center; gap: 9px;
    padding: 7px 11px;
    border-radius: 8px;
    background: var(--card-2);
    border: 1px solid var(--line);
    color: var(--ink-2);
}
.mab-tree .row .ic { color: var(--amber); }
.mab-tree .row .n {
    margin-left: auto;
    font-weight: 700; color: var(--ink);
}
.mab-tree .row .cnt {
    font-size: 11.5px; color: var(--faint);
    background: var(--card);
    border: 1px solid var(--line);
    border-radius: 999px; padding: 3px 8px;
}
.mab-out {
    margin-top: 14px;
    background: var(--card-2); border: 1px solid var(--line);
    border-radius: var(--r-sm); padding: 14px 16px;
    font-size: 13px; line-height: 1.85; color: var(--ink-2);
    white-space: pre-wrap; word-break: break-word;
    max-height: 360px; overflow: auto; font-family: var(--num);
}
.mab-note {
    margin-top: 14px; font-size: 13px; line-height: 1.8;
    background: var(--amber-soft); color: var(--amber);
    border-left: 3px solid var(--amber);
    border-radius: var(--r-sm); padding: 11px 14px;
}
.mab-note.info { background: var(--pri-soft); color: var(--pri-ink); border-left-color: var(--pri); }
.mab-foot { margin-top: 26px; font-size: 12.5px; color: var(--faint); text-align: center; line-height: 1.9; }

/* ---------------- 响应式 ---------------- */
@media (max-width: 1000px) {
    .mab-hero { grid-template-columns: 1fr; }
    .mab-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 700px) {
    .mab-wrap { padding: 0 16px 52px; }
    .mab-result > header .en, .mab-rules > header .en { display: none; }
}
