#restore-web-files[hidden]{display:none}
.brand-mark:has(img){background:none}
.header-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap}
.language-picker{display:flex;align-items:center}
.language-picker svg{width:20px;height:20px;flex:0 0 auto;fill:none;stroke:currentcolor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.language-picker select{max-width:160px}
.contact-footer{display:flex;align-items:center;flex-wrap:wrap;padding-top:12px;border-top:1px solid var(--rule)}
.contact-footer a{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;text-decoration:none;border-radius:10px}
.contact-footer button:focus-visible,.contact-footer a:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.contact-social{width:44px}
.contact-footer .contact-icon{flex:0 0 auto}
.contact-footer .contact-brand{fill:#fff;stroke:none}
.contact-instagram{background:linear-gradient(35deg, #f9a33b, #e44869 48%, #8145c3)}
.contact-mail{background:linear-gradient(35deg, #f04468, #8950c7);fill:#fff;stroke:none}
.contact-email-group{display:inline-flex;align-items:center;gap:2px}
.contact-footer .contact-address{background:transparent;border:0px;padding:0px 4px;border-radius:8px;font-weight:400;user-select:text}
.contact-footer .contact-address:hover{transform:none;box-shadow:none}
.history-cache-actions{margin-top:20px;padding-top:12px;border-top:1px solid var(--rule)}
.imports{flex-wrap:wrap;justify-content:flex-end}
.sort-controls,.fields label{min-width:0px}
.fields select{max-width:100%}
.permission-copy strong{font-weight:700}
@media (max-width:760px){header{flex-wrap:wrap}
.header-actions{margin-left:auto}
.imports{justify-content:flex-start}
}
.permission-copy{display:grid;gap:1em;overflow-wrap:anywhere}
.permission-copy p{margin:0px}
.permission-copy p.hint{margin-top:4px}
.permission-explainer{position:relative}
.permission-info{display:inline-grid;place-items:center;width:24px;height:24px;min-height:24px;margin-inline-start:3px;padding:0px;vertical-align:middle;background:transparent;color:var(--accent)}
.permission-info svg{width:19px;height:19px}
.permission-info:hover:not(:disabled){transform:none;background:var(--tint);box-shadow:none}
.permission-tip{display:none;position:absolute;z-index:1;inset-block-start:100%;inset-inline-start:0px;width:min(100%, 360px);padding:10px 12px;border-radius:12px;background:var(--paper);color:var(--ink);box-shadow:var(--lift);border:1px solid var(--tint);font-size:13px;line-height:1.6}
.permission-explainer:has(.permission-info:hover, .permission-info:focus-visible, .permission-info[aria-expanded="true"], .permission-tip:hover) .permission-tip{display:block}
:root{color-scheme:light;--app-font:system-ui,sans-serif}
*{box-sizing:border-box}
body{margin:0px;color:var(--ink);font:14px/1.55 var(--app-font)}
select,input,button{font:inherit;color:inherit}
select,button{cursor:pointer}
summary,input,button{border:0px}
button{padding:0px 16px;display:inline-flex;align-items:center;justify-content:center;background:var(--field);white-space:nowrap}
input:not([type="checkbox"]),select{padding:0px 12px;max-width:100%;caret-color:var(--accent)}
@supports (appearance:base-select) and selector(::picker(select)){::picker(select){appearance:base-select}
select{appearance:base-select}
select{align-items:center;gap:8px}
select::picker-icon{color:var(--accent);transition:transform 0.2s ease-in-out}
select:open::picker-icon{transform:rotate(180deg)}
::picker(select){margin-block:6px;padding:5px;border:0px;background:var(--paper);color:var(--ink);box-shadow:var(--lift)}
option{min-height:44px;padding:8px 10px;gap:8px}
option:checked{background:var(--tint);color:var(--accent)}
option:focus-visible,option:hover{background:var(--field)}
option::checkmark{order:1;margin-inline-start:auto;color:var(--accent)}
option:disabled{color:var(--muted)}
}
input[type="checkbox"]{margin:0px;accent-color:var(--accent)}
svg{fill:none;stroke:currentcolor;stroke-linecap:round;stroke-linejoin:round;flex:0 0 auto}
.shell{margin:auto}
header{display:flex;align-items:center;justify-content:space-between;gap:16px}
.brand{display:flex;align-items:center;gap:14px}
.icon-disc,.brand-mark{display:grid;place-items:center;background:var(--tint);color:var(--accent);border-radius:50%;flex:0 0 auto}
.brand-mark svg{width:25px;height:25px}
.brand-mark img{width:100%;height:100%;display:block}
.icon-disc{width:34px;height:34px}
.icon-disc svg{width:16px;height:16px}
p,h2,h1{margin:0px}
h1{line-height:1.35}
small,.muted,.sub{color:var(--muted)}
.sub{margin-top:4px;font-size:13px}
.workspace{display:grid}
.card{min-width:0px}
.preset{display:grid}
.label,label{font-weight:600}
.preset-trigger{width:100%;justify-content:space-between;font-weight:400}
.preset-trigger svg{width:16px;transform:rotate(90deg);transition:transform 0.2s ease-in-out}
.preset-trigger[aria-expanded="true"] svg{transform:rotate(-90deg)}
.preset-list button{display:flex;width:100%;justify-content:flex-start;white-space:normal;overflow-wrap:anywhere;text-align:left;background:transparent;color:var(--ink);font-weight:400}
.preset-list button[aria-pressed="true"]{transform:none;box-shadow:none}
.preset-list button:hover:not(:disabled){background:var(--tint);transform:none;box-shadow:none}
.rule-head{display:flex;justify-content:space-between;gap:10px;margin-bottom:7px}
.rule-list{display:grid}
.rule{width:100%;justify-content:flex-start;padding:7px 10px;min-height:56px;gap:9px;background:#f7f7fb;text-align:left;white-space:normal}
.rule-entry{display:flex;align-items:center;gap:2px;padding:0px 6px 0px 0px;border-radius:16px}
.rule-edit{flex:1 1 0%;min-width:0px;justify-content:flex-start;background:transparent;text-align:left;white-space:normal}
.rule-eye{flex:0 0 auto;background:transparent}
.rule-entry button:hover:not(:disabled){transform:none;box-shadow:none}
.rule-entry.inactive .rule-copy,.rule-entry.inactive .rule-eye{color:var(--muted)}
.rule .grip{touch-action:none}
.rule-list.sorting{cursor:grabbing;user-select:none}
.rule-list.sorting .rule{transform:none;box-shadow:none;transition:none}
.rule.drag-ghost{position:fixed;z-index:5;pointer-events:none;cursor:grabbing;background:#fff;transition:none}
.rule-slot{outline:#a59ac8 dashed 1px;outline-offset:-1px}
.rule-menu{position:fixed;inset:auto;margin:0px;border:0px;background:var(--paper)}
.rule-menu:not(:popover-open){display:none}
.preset-list{padding:5px;border-radius:16px;max-height:min(300px, 45vh);overflow:auto}
.preset-menu{padding:5px}
.preset-menu button{color:var(--ink)}
.preset-menu button:hover:not(:disabled){background:var(--tint);transform:none;box-shadow:none}
.preset-menu button[data-preset-action="delete"]{color:var(--warn)}
.rule-copy{display:grid;flex:1 1 0%}
.rule-copy small{overflow-wrap:anywhere}
.grip{color:#77718d;cursor:grab}
.chevron svg,.grip svg{width:14px;height:14px}
.add{width:100%}
.separator-tools{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}
.separator{display:flex;align-items:center;gap:8px}
.separator input[type="text"]{padding-inline:5px;text-align:center}
.separator-limit{color:var(--warn);font-size:11px;margin-top:4px}
.separator-limit:empty{display:none}
#add-preset{padding-inline:12px}
.form-message{color:var(--warn);font-size:12px}
.toolbar{display:flex;flex-wrap:wrap}
.preview-head{display:flex;justify-content:space-between;flex-wrap:wrap}
.preview-card{position:relative}
.preview-card.drop-ready::after{content:"松手添加文件";position:absolute;inset:0px;z-index:4;display:grid;place-items:center;border-radius:inherit;outline:#8d81b1 dashed 2px;outline-offset:-6px;color:var(--accent);font-weight:600;pointer-events:none}
.import-status{margin-top:6px}
.imports{display:flex;align-items:center}
.toolbar{padding-bottom:9px}
.sort-controls{display:flex;align-items:center;min-height:44px}
.check{display:flex;align-items:center;gap:8px;min-height:44px}
.order{display:flex;align-items:center}
.sort-controls{flex-wrap:wrap}
.sort-controls > .check{margin-inline-start:6px}
.direction{padding:0px}
.direction svg{transition:transform 0.2s ease-in-out}
.direction[aria-pressed="true"]{background:var(--tint)}
.direction[aria-pressed="true"] svg{transform:rotate(180deg)}
.check{cursor:pointer}
.formats{display:flex;align-items:center;flex-wrap:wrap}
.formats[hidden],.merge-control[hidden]{display:none}
.formats .label{font-size:12px}
.chips{display:flex;gap:2px 12px;flex-wrap:wrap}
.chip{min-height:24px;display:flex;align-items:center;gap:5px;font:600 12px var(--app-font);cursor:pointer}
.chip input{width:15px;height:15px}
.preview-columns{display:grid;grid-template-columns:var(--preview-columns);align-items:center;padding-inline-end:var(--preview-rail);color:var(--muted);font-weight:600}
.preview-columns[hidden]{display:none}
.table{width:100%;border-collapse:separate;border-spacing:0px;table-layout:fixed;text-align:left}
.preview-scroll{overflow-y:auto;scrollbar-gutter:stable;overscroll-behavior-y:contain;position:relative}
.preview-scroll:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:16px}
.preview-scroll::-webkit-scrollbar{width:var(--preview-rail)}
.preview-scroll::-webkit-scrollbar-track{border-radius:12px}
td{padding:0px;border-bottom:1px solid var(--rule);overflow-wrap:anywhere}
.table tbody tr:last-child td{border:0px}
.file-pair{display:grid;grid-template-columns:var(--preview-columns);align-items:center}
.file-pair > div{min-width:0px}
.type-heading td{border-bottom:0px}
.type-label{display:flex;align-items:center;justify-content:flex-start;width:100%;padding-inline:10px;background:transparent;text-align:left}
.type-label[aria-pressed="true"],.type-label[aria-pressed="mixed"]{color:var(--accent)}
.selection-box{position:absolute;pointer-events:none;z-index:2;border:1px solid #8276ae;border-radius:4px}
.preview-scroll.selecting{user-select:none;cursor:crosshair}
.file{font-variant-numeric:tabular-nums;white-space:break-spaces}
.target{color:#463f75}
.location{display:block}
.preview-link{color:inherit;text-decoration:none;text-underline-offset:3px;cursor:pointer}
.preview-link:focus-visible,.preview-link:hover{color:var(--accent);text-decoration:underline}
.preview-link:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}
.merge-exclusion{display:inline-flex;align-items:center;gap:4px;min-height:24px;margin-inline-start:8px;color:var(--muted);font-size:11px;font-weight:400;white-space:nowrap;cursor:pointer}
.merge-exclusion input{width:13px;height:13px}
.tag{display:inline-block;margin:2px 0px 2px 6px;padding:3px 8px;font-size:11px}
.warn{color:var(--warn);background:#fcf0e5}
.preview-card:has(.empty:not([hidden])){display:flex;flex-direction:column}
.empty:not([hidden]){display:grid;place-content:center;justify-items:center;text-align:center}
.empty .icon-disc{margin:0px auto 10px}
.footer-actions{display:flex}
.footer-actions .primary{margin-inline-start:auto}
.footer-status{display:flex;flex-wrap:wrap}
.trash{flex:0 0 auto;padding:0px}
.trash[hidden]{display:none}
.start-icon{width:16px;height:16px}
.selected-count{color:var(--accent);font-size:13px}
.verdict{display:inline-flex;align-items:center;gap:5px}
dialog{position:fixed;inset:0px;margin:auto;padding:24px;border:0px;width:min(480px, -32px + 100vw);max-height:calc(-32px + 100vh);color:var(--ink);background:#fff;color-scheme:light}
.dialog-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}
.dialog-head h2{min-width:0px;overflow-wrap:anywhere}
.dialog-head button{padding:0px}
.fields{display:grid;gap:14px;margin:18px 0px}
.fields label:not(.check){display:grid;gap:6px}
.serial-digits{display:grid;grid-template-columns:repeat(2, minmax(0px, 1fr));align-items:end;gap:12px}
.serial-options{display:grid;gap:2px}
.serial-options .check{min-height:30px}
.actions{display:flex;justify-content:flex-end;gap:8px;margin-top:22px;flex-wrap:wrap}
.hint{color:var(--muted);font-size:12px;margin-top:6px}
.example{background:var(--field);border-radius:16px;padding:12px 14px;display:grid;gap:4px;overflow-wrap:anywhere}
.example span{color:var(--muted);font-size:12px}
.example output{color:var(--accent)}
.fields [hidden]{display:none !important}
.rule-choices{display:grid}
.details{display:grid;grid-template-columns:auto minmax(0px, 1fr);gap:10px 16px;margin:18px 0px 0px}
.details dt{color:var(--muted)}
.details dd{margin:0px;overflow-wrap:anywhere}
.operation-error{white-space:pre-wrap;overflow-wrap:anywhere}
.rename-results{max-height:260px;overflow-y:auto;padding-inline-start:22px;overflow-wrap:anywhere}
.rename-results li{padding:5px 0px;white-space:break-spaces}
.history-button[hidden]{display:none}
.history-list{display:grid;gap:8px}
.history-path{display:block;color:var(--muted);font-size:11px}
.folder-files{margin:12px 0px 0px;padding-inline-start:22px}
.folder-files li{padding:4px 0px}
.sr-only{position:absolute;width:1px;height:1px;padding:0px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
@media (max-width:760px){.imports{flex-wrap:wrap}
.file-pair > div{padding-inline:7px}
}
@media (max-width:440px){.brand-mark svg{width:22px;height:22px}
.brand,header{gap:8px}
.sub{font-size:11px}
.tag{padding:3px 5px}
}
:root{--page:#122978;--paper:#fff;--ink:#24324b;--muted:#65748b;--accent:#365be8;--tint:#eaf0ff;--field:#f1f3f7;--rule:#e1e6ef;--ok:#25704d;--warn:#a45b16;--danger:#c53939;--shadow:0 4px 20px rgb(8 22 70 / 7%);--lift:0 6px 24px rgb(22 35 60 / 12%);--radius-panel:24px;--radius-card:12px;--radius-control:10px;--radius-tag:6px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-6:24px;--space-8:32px;--text-title:24px;--text-panel:18px;--text-body:14px;--text-small:12px}
html{scrollbar-gutter:auto;scrollbar-width:none}
html::-webkit-scrollbar{width:0px;height:0px}
body{isolation:isolate;background:#122978;font-size:var(--text-body)}
.page-background{position:fixed;inset:0;z-index:0;overflow:hidden;pointer-events:none;background:#122978}
.page-background canvas{display:block;width:100%;height:100%}
.shell{position:relative;z-index:1;max-width:1440px;padding:28px var(--space-8) 20px}
header{padding:0px;background:transparent;box-shadow:none;margin-bottom:24px}
header .sub,header h1{color:#fff;text-shadow:none}
h1{font-size:var(--text-title);font-weight:650;letter-spacing:-0.02em}
h2{font-size:var(--text-panel);font-weight:650;letter-spacing:0px}
.header-actions select,.header-actions button{background:transparent;color:#fff;box-shadow:none}
.header-actions button:hover:not(:disabled){background:rgba(255, 255, 255, 0.12);box-shadow:none}
.header-actions select:focus-visible,.header-actions button:focus-visible{outline-color:#fff}
.header-actions select::picker-icon{color:#fff}
.header-actions select option{color:var(--ink)}
.language-picker{color:#fff;gap:4px;padding:0px 8px;border-radius:var(--radius-control);transition:background 0.15s}
.language-picker:focus-within,.language-picker:hover{background:rgba(255, 255, 255, 0.12)}
.language-picker:has(select:focus-visible){outline:#fff solid 2px;outline-offset:3px}
.header-actions .language-picker select{padding-inline:0px 4px;background:transparent;border-color:transparent;box-shadow:none}
.header-actions .language-picker select:focus-visible{outline:none}
.brand > div,.brand{min-width:0px}
.brand .sub{overflow-wrap:anywhere;font-size:12px;color:#e4eaff}
.brand-mark{width:48px;height:48px}
.workspace{grid-template-columns:352px minmax(0px, 1fr);gap:var(--space-6);align-items:stretch}
.card{background:var(--paper);border-radius:var(--radius-panel);box-shadow:var(--shadow);padding:var(--space-6)}
summary,select,input,button{border-radius:var(--radius-control);transition:background 0.15s, color 0.15s, border-color 0.15s, box-shadow 0.15s}
button{min-height:36px;font-weight:550;padding-inline:12px;gap:6px}
button:hover:not(:disabled){transform:none;box-shadow:none;background:#e7ebf2}
button:active:not(:disabled){transform:none;box-shadow:none;background:#dce2ec}
button:disabled{opacity:1;cursor:not-allowed;background:#e9edf3;color:#758197;box-shadow:none}
[tabindex]:focus-visible,summary:focus-visible,select:focus-visible,input:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:3px;box-shadow:none}
#dialog-title:focus{outline:none}
select,input:not([type="checkbox"]){min-height:38px;background:var(--field);border:1px solid transparent;padding-inline:10px}
select:hover,input:not([type="checkbox"]):hover{border-color:#c4ccda}
input:user-invalid{border-color:var(--danger)}
input[type="checkbox"]{width:16px;height:16px;cursor:pointer}
svg{stroke-width:1.75;width:18px;height:18px}
.footer-actions #run,.primary{background:var(--accent);color:#fff;box-shadow:none}
.footer-actions #run:hover:not(:disabled),.primary:hover:not(:disabled){background:#284bd0;color:#fff}
.primary:active:not(:disabled){background:#2042bb}
.soft{background:var(--field);color:var(--ink)}
.plain{background:transparent;color:var(--muted)}
.danger{color:var(--danger)}
::selection{background:#cbd9ff;color:#24324b}
.rules-card{display:flex;flex-direction:column;min-width:0px;align-self:start}
.preset{margin:16px 0px 20px;padding-bottom:16px;border-bottom:1px solid var(--rule);gap:8px}
.section-label{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px;font-weight:600;color:var(--muted)}
#add-preset{min-height:28px;padding:0px 4px;font-size:12px;font-weight:500}
#add-preset svg{width:14px;height:14px}
.preset-trigger{background:var(--field);font-size:14px;min-height:40px}
.preset-trigger svg{color:var(--muted)}
.rule-head{margin:0px 0px 12px;align-items:center}
.rule-head strong{font-size:12px;color:var(--muted);font-weight:600}
.rule-head span{font-size:12px;color:var(--muted)}
.rules-scroll{height:auto;max-height:none;flex:0 0 auto;overflow:visible;padding:3px;margin:-3px}
.rule-list{gap:var(--space-2)}
.rule.rule-entry{display:block;padding:0px;background:#f4f6fa;border:1px solid transparent;border-radius:var(--radius-card);min-height:0px}
.rule-entry:hover{border-color:#d6dce7}
.rule-entry.expanded{border-color:#c3d0fb;background:#fff}
.rule-row{display:flex;align-items:center;gap:2px;min-width:0px;padding:var(--space-1)}
.rule-grip{min-height:36px;width:20px;flex:0 0 auto;padding:0px;background:transparent;color:#748197;cursor:grab;touch-action:none}
.rule-grip svg{width:14px;height:14px}
.rule-edit{padding:4px 2px;gap:8px;min-height:52px;font-weight:550;border-radius:8px}
.rule-edit .icon-disc{background:transparent;color:#52647e;width:24px;height:28px}
.rule-copy{gap:3px;min-width:0px;font-size:14px}
.rule-copy small{color:var(--muted);font-size:12px;line-height:1.4;font-weight:400;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:100%}
.rule-text-field{flex:1 1 0%;min-width:0;display:flex;align-items:center;gap:8px;min-height:52px;padding:4px 2px}
.rule-text-field .icon-disc{width:24px;height:28px;background:transparent;color:#52647e}
.rule-text-field .rule-text-input{display:block;flex:1;min-width:0;width:100%;height:28px;min-height:28px;max-height:44px;padding:3px 8px;resize:none;overflow-y:hidden;overflow-wrap:anywhere;border:1px solid var(--rule);border-radius:var(--radius-control);background:var(--paper);color:var(--ink);font:400 14px/18px var(--app-font);caret-color:var(--accent)}
.rule-text-input:hover{border-color:#c4ccda}
.rule-text-input:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.rule-entry.inactive .rule-text-input{color:var(--muted);background:var(--field)}
.rule-edit .expand-icon{width:14px;height:14px;color:var(--muted);margin-inline:2px;transition:transform 0.15s}
.expanded .expand-icon{transform:rotate(90deg)}
.rule-entry button:hover:not(:disabled){background:#e7ecf5}
.rule-eye{width:30px;min-height:32px;position:relative;color:var(--muted);padding:0px}
.rule-switch{display:block;width:26px;height:16px;border-radius:9px;background:#8b97a9;position:relative}
.rule-switch::after{content:"";position:absolute;width:12px;height:12px;border-radius:50%;background:#fff;left:2px;top:2px;transition:transform 0.15s}
[aria-checked="true"] .rule-switch{background:var(--accent)}
[aria-checked="true"] .rule-switch::after{transform:translateX(10px)}
.rule-delete{width:28px;min-height:32px;flex:0 0 auto;padding:0px;background:transparent;color:var(--muted)}
.rule-entry .rule-delete:hover{color:var(--danger);background:#fff0ef}
.rule-delete svg{width:16px;height:16px}
.rule-entry.inactive{background:#f7f8fa;border-style:dashed;border-color:#dce1e9}
.rule-entry.inactive .rule-edit{color:#65748b}
.rule-entry.inactive .icon-disc{color:#7e899a}
.rule-editor{position:fixed;inset:auto;margin:0px;padding:16px;border:1px solid var(--rule);border-radius:12px;background:var(--paper);color:var(--ink);box-shadow:var(--lift);overflow:auto;max-width:calc(-24px + 100vw);text-align:start;font-weight:400;white-space:normal}
.rule-editor::backdrop{background:transparent}
.editor-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:14px}
.editor-heading button{width:28px;min-height:28px;padding:0px}
.rule-editor .fields{gap:var(--space-3);margin:var(--space-4) 0}
.rule-editor label:not(.check){font-size:12px;font-weight:550}
.rule-editor .fields .check{font-size:12px;font-weight:400;white-space:normal;min-height:32px}
.rule-editor .serial-digits{gap:8px}
.rule-editor .hint{line-height:1.6}
.rule-editor .actions{margin-top:12px;justify-content:space-between}
#rule-form .actions button{width:auto;min-height:32px;font-size:12px}
#rule-form .actions .primary{margin-inline-start:auto}
.rule-editor .example{padding:10px;background:var(--field);border-radius:8px}
.rule-editor .example output{font-size:12px;white-space:break-spaces}
.preset-suggestion{margin-top:20px;padding:16px 0px 0px;border-top:1px solid var(--rule)}
.preset-suggestion p{margin-top:4px;font-size:13px;color:var(--muted)}
#back-history{margin-inline-end:auto}
.rule-slot{background:var(--tint);outline-color:var(--accent);border-radius:var(--radius-card)}
.rule.drag-ghost{box-shadow:var(--lift);border-color:#c3d0fb}
.add{background:transparent;border:1px dashed #b8c4d8;color:var(--ink);margin-top:12px;min-height:38px}
#add-rule svg{stroke-width:2;width:16px;height:16px}
.separator-tools{margin-top:16px;padding-top:16px;border-top:1px solid var(--rule)}
.separator{font-size:12px;font-weight:550}
.separator input[type="text"]{width:56px;min-height:34px;font-size:14px;white-space:pre}
.separator-note{margin-top:8px;font-size:12px}
.naming-example{margin-top:16px;padding-top:16px;border-top:1px solid var(--rule);display:grid;gap:6px}
.naming-example > span{font-size:12px;font-weight:600;color:var(--muted)}
.naming-example output{font-size:13px;overflow-wrap:anywhere;white-space:break-spaces;line-height:1.6;color:var(--ink)}
.naming-example small{font-size:12px;font-weight:400}
.rule-menu{border-radius:10px;padding:5px;color:var(--ink);box-shadow:var(--lift)}
.preset-menu button,.rule-actions-menu button{display:flex;width:100%;justify-content:flex-start;background:transparent;min-height:36px;font-size:13px}
.rule-actions-menu .danger{color:var(--danger)}
.preset-list button{border-radius:6px;font-size:13px;min-height:36px}
.preset-list button[aria-pressed="true"]{color:var(--accent);background:var(--tint)}
::picker(select){border-radius:10px}
option{border-radius:6px}
.preview-card{display:flex;flex-direction:column;--preview-rail:12px;--preview-columns:minmax(0,1fr) minmax(0,1fr) 104px;min-height:650px}
.preview-head{gap:16px;align-items:flex-start}
.preview-head .sub{font-size:12px;margin-top:6px;max-width:44ch;line-height:1.6}
.imports{gap:8px}
.imports button{font-size:13px;min-height:36px}
#add-files{background:var(--tint);color:#294bc8}
#add-files:hover{background:#dce5ff}
#add-folder{background:#fff;border:1px solid var(--rule)}
.toolbar{margin-top:24px;padding:12px 0px;gap:8px 16px;border-top:1px solid var(--rule);justify-content:flex-start;align-items:center}
.sort-controls{gap:6px;flex:0 0 auto}
.order{font-size:12px;font-weight:550;gap:8px;min-height:36px}
.order select{min-height:34px;min-width:112px;font-size:13px}
.direction{width:32px;min-height:34px;color:var(--muted);background:var(--field)}
.direction svg{stroke-width:2;width:16px;height:16px}
.classification-control{padding-inline-start:16px;border-inline-start:1px solid var(--rule)}
.toolbar .check{min-height:34px;font-size:12px;font-weight:500;gap:6px}
.formats{padding:0px 0px 12px;margin:0px;gap:8px 12px;background:transparent;color:var(--muted);border-radius:0px}
.chip{color:var(--ink);font-weight:400}
.preview-columns{background:#f4f6fa;border-radius:8px;font-size:12px;min-height:36px}
.preview-columns > span{padding-inline:10px}
.preview-scroll{flex:1 1 0%;min-height:240px;max-height:clamp(280px, 52vh, 600px);padding-bottom:24px;scrollbar-width:auto;scrollbar-color:#b7c2d5 transparent}
.preview-scroll[hidden]{display:none}
.preview-scroll::-webkit-scrollbar-track{background:transparent}
.preview-scroll::-webkit-scrollbar-thumb{background:#b7c2d5;border:3px solid #fff;border-radius:8px}
.preview-scroll::-webkit-scrollbar-thumb:hover{background:#8695ad}
.file-pair{border-radius:6px;min-height:60px}
.file-pair > div{padding:12px 10px}
.file{font-weight:500;font-size:13px;color:var(--muted)}
.file.target{color:var(--ink);font-weight:600}
.location{font-size:11px;color:var(--muted);margin-top:4px}
.grouped .file-pair > div{padding-block:6px}
.grouped{border-bottom:1px solid var(--rule)}
.file-pair.selected{background:var(--tint)}
.file-pair.has-problem{background:#fff5f4}
.file-pair.has-problem.selected{background:#ffe9e6}
.file-status{font-size:12px;color:var(--ok);display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.file-status svg{width:14px;height:14px}
.file-status.unchanged,.file-status.info{color:var(--muted)}
.file-status.warning{color:var(--warn)}
.file-status.error{color:var(--danger)}
.type-heading td{color:var(--muted);font-weight:550;font-size:12px}
.type-label{min-height:38px}
.file-pair.problem-target{outline:2px solid var(--danger);outline-offset:-2px}
.preview-card.drop-ready::after{background:rgba(234, 240, 255, 0.95);outline-color:var(--accent)}
.selection-box{border-color:var(--accent);background:rgba(54, 91, 232, 0.12)}
.empty:not([hidden]){min-height:300px;padding:24px;flex:1 1 0%;border:1px dashed #cbd3e0;border-radius:12px;margin-top:12px;align-content:center}
.empty .icon-disc{width:48px;height:48px;border-radius:12px;background:var(--field);color:#65748b;margin-bottom:16px}
.empty .icon-disc svg{width:24px;height:24px}
.empty strong{font-size:15px;font-weight:550}
.empty .hint{font-size:12px;max-width:32ch;line-height:1.7;margin-top:8px}
.execution-bar{margin-top:auto;padding-top:16px;border-top:1px solid var(--rule);display:grid;grid-template-columns:minmax(0px, 1fr) auto;align-items:start;gap:8px 16px}
.footer-status{padding:0px;gap:6px var(--space-3);align-items:flex-start;color:var(--muted);background:transparent;box-shadow:none;font-size:var(--text-small)}
.footer-status strong{font-weight:550;color:var(--ink)}
.status-copy{display:grid;justify-items:start;gap:2px;min-width:0px}
.status-counts{display:flex;align-items:baseline;gap:8px;line-height:18px;min-width:0px;flex-wrap:wrap}
.footer-status .selected-count{color:var(--muted);font-size:12px}
.verdict{min-height:18px;line-height:18px;padding:0px;font-size:12px;color:var(--ok);font-weight:400;justify-content:flex-start}
.verdict svg{width:14px;height:14px}
.verdict:disabled{background:transparent;color:var(--ok);cursor:default}
.verdict:empty{display:none}
.verdict.problem{color:var(--danger)}
.verdict.warning{color:var(--warn)}
.footer-actions{gap:12px;min-width:0px;align-items:flex-start;justify-content:flex-end}
.footer-actions .primary{min-height:40px;padding-inline:18px;font-size:14px;flex:0 0 auto}
.footer-actions #run:disabled{background:#e9edf3;color:#758197;box-shadow:none}
.run-hint{grid-column:1 / -1;font-size:12px;color:var(--muted);line-height:1.5;margin-inline-start:0px;text-align:start}
.run-hint:empty{display:none}
.trash{min-height:36px;width:36px;color:var(--danger);background:#fff0ef}
.contact-footer{margin-top:28px;padding:0px;border:0px;background:transparent;box-shadow:none;gap:8px 12px;justify-content:center}
.contact-copy-status,.contact-footer .contact-address,.contact-footer a{color:#e2e9ff;font-size:12px}
.contact-footer .contact-social{width:36px;min-height:36px}
.contact-footer .contact-icon{width:28px;height:28px;padding:5px;border-radius:7px}
.contact-footer .contact-xiaohongshu{padding:2px;background:#ff2442;fill:#fff}
.contact-footer .contact-instagram{background:linear-gradient(35deg, #f9a33b, #e44869 48%, #8145c3);fill:#fff}
.contact-footer .contact-mail{background:linear-gradient(35deg, #f04468, #8950c7);fill:#fff;stroke:none}
.contact-footer .contact-address{min-height:36px}
.contact-copy-status:empty{display:none}
.contact-footer .contact-address:hover,.contact-footer a:hover{background:rgba(255, 255, 255, 0.12);color:#fff}
.contact-footer button:focus-visible,.contact-footer a:focus-visible{outline-color:#fff}
.rule-notice{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);z-index:10;background:#24324b;color:#fff;padding:8px 12px 8px 16px;border-radius:12px;display:flex;align-items:center;gap:16px;box-shadow:var(--lift);max-width:calc(-32px + 100vw);font-size:13px}
.rule-notice[hidden],#undo-rule[hidden]{display:none}
.rule-notice button{color:#fff;background:rgba(255, 255, 255, 0.12);min-height:32px}
.rule-notice .notice-close{background:transparent;width:28px;padding:0px;flex:0 0 auto}
dialog{box-shadow:rgba(6, 18, 56, 0.24) 0px 18px 64px;border-radius:var(--radius-panel)}
dialog::backdrop{background:rgba(8, 18, 45, 0.4)}
.dialog-head button{width:32px;min-height:32px;background:transparent}
.rule-choices{gap:4px}
.rule-choices .rule{background:transparent;border-radius:10px;padding:12px;min-height:64px}
.rule-choices .rule:hover{background:var(--field)}
.rule-choices .icon-disc{border-radius:8px;background:var(--field);color:#52647e}
.rule-choices .rule-copy small{white-space:normal}
.tag{border-radius:var(--radius-tag)}
.rename-loading{display:grid;justify-items:center;gap:20px;padding:24px 0px 12px;text-align:center}
.bouncing-dots{display:inline-flex;align-items:center;gap:12%;width:56px;height:22px;color:var(--accent)}
.bouncing-dots > span[aria-hidden]{display:inline-block;aspect-ratio:1 / 1;flex:1 1 0%;border-radius:50%;background:currentcolor;animation:loading-ui-bouncing-dots var(--duration,1.4s) ease-in-out infinite}
.bouncing-dots > span:nth-child(2){animation-delay:var(--delay,.2s)}
.bouncing-dots > span:nth-child(3){animation-delay:calc(var(--delay,.2s) * 2)}
@keyframes loading-ui-bouncing-dots{0%, 100%{transform:scale(0.8);opacity:0.5}
  50%{transform:scale(1.2);opacity:1}
}
@media (min-width:1440px){.preview-card{min-height:700px}
}
@media (max-width:1100px){.workspace{grid-template-columns:320px minmax(0px, 1fr);gap:20px}
.shell{padding:24px}
.card{padding:20px}
.preview-card{--preview-columns:minmax(0,1fr) minmax(0,1fr) 90px}
.preview-head{flex-direction:column;gap:12px}
.imports{justify-content:flex-start}
.toolbar{margin-top:20px}
.classification-control{padding-inline-start:0px;border:0px}
.file-pair > div{padding-inline:8px}
}
@media (max-width:850px){.workspace{grid-template-columns:300px minmax(0px, 1fr);gap:16px}
.shell{padding:20px}
.card{padding:16px}
.toolbar{gap:4px 12px}
.run-hint{max-width:20ch}
.footer-actions .primary{padding-inline:12px}
.preview-card{--preview-columns:minmax(0,1fr) minmax(0,1fr) 80px}
.file-status{font-size:11px}
}
@media (max-width:760px){.workspace{grid-template-columns:1fr}
.shell{padding:16px}
.rules-card{width:100%}
.preview-card{min-height:620px}
.preview-head{flex-direction:row}
.preview-scroll{max-height:480px}
.rule-copy small{max-width:none}
.classification-control{padding-inline-start:12px;border-inline-start:1px solid var(--rule)}
.brand-mark{width:40px;height:40px}
h1{font-size:22px}
.header-actions{gap:4px}
.header-actions button{font-size:12px}
}
@media (max-width:480px){.preview-head{flex-direction:column}
.shell{padding:12px}
.card{border-radius:20px}
.preview-card{--preview-columns:minmax(0,1fr) minmax(0,1fr) 72px}
.file{font-size:12px}
.file-pair > div{padding-inline:5px}
.preview-columns > span{padding-inline:5px;font-size:11px}
.footer-actions{flex-wrap:wrap}
.run-hint{max-width:22ch}
.preview-head .sub{max-width:none}
.classification-control{border:0px;padding:0px}
.rule-notice{gap:8px}
.brand .sub{font-size:11px}
}
@media (prefers-reduced-motion:reduce){.bouncing-dots > span[aria-hidden]{animation:auto ease 0s 1 normal none running none}
}
