.pattern-wrap{display:flex;align-items:stretch;gap:0;background:var(--card-alt);border:2px solid var(--border);border-radius:10px;transition:border-color .2s;overflow:hidden}.pattern-wrap.is-focused{border-color:var(--primary)}.pattern-wrap.is-error{border-color:#f44336}.pat-slash{font-family:var(--font-mono, "Menlo", monospace);color:var(--sub);font-size:16px;padding:0 8px;display:flex;align-items:center;user-select:none}.pat-input-wrap{flex:1;position:relative;min-width:0}.pat-overlay,.pat-input{font-family:var(--font-mono, "Menlo", "Consolas", monospace);font-size:14px;line-height:1.6;padding:8px 2px;margin:0;border:none;background:transparent;white-space:pre-wrap;word-break:break-all;overflow-wrap:anywhere;box-sizing:border-box;width:100%}.pat-overlay{position:absolute;inset:0;pointer-events:none;color:var(--text);overflow:auto;scrollbar-width:none}.pat-overlay::-webkit-scrollbar{display:none}.pat-input{display:block;position:relative;min-height:38px;resize:none;outline:none;color:transparent;caret-color:var(--text);z-index:2}.pat-input::placeholder{color:var(--sub);opacity:.55}.pat-input::selection{background:#6c63ff4d}.rx-lit{color:var(--text)}.rx-meta{color:#c678dd;font-weight:600}.rx-anchor{color:#e06c75;font-weight:600}.rx-quant{color:#d19a66;font-weight:700}.rx-alt{color:#c678dd;font-weight:700}.rx-group{color:#61afef;font-weight:700}.rx-name{color:#98c379;font-style:italic}.rx-class{color:#56b6c2;font-weight:700}.rx-range{color:#56b6c2}.rx-classchar{color:var(--text)}.rx-esc{color:#98c379;font-weight:600}.rx-backref{color:#e5c07b;font-weight:600}.rx-err{background:#f4433633;border-bottom:2px solid #f44336;border-radius:2px}:is([data-theme=dark]) .rx-meta{color:#d178e0}:is([data-theme=dark]) .rx-anchor{color:#ff7b85}.flag-row{display:flex;gap:1px;padding:4px;border-left:1px solid var(--border);background:var(--card);align-items:stretch}.flag-btn{min-width:46px;border-radius:7px;border:none;background:transparent;padding:4px 6px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--sub);cursor:pointer;transition:all .15s}.flag-btn.on{background:var(--primary);color:#fff}.flag-btn:hover:not(.on){background:var(--primary-muted);color:var(--primary)}.pattern-status{margin-top:8px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}.status-badge{font-size:12px;font-weight:700;padding:3px 9px;border-radius:999px;background:var(--card-alt);color:var(--sub)}.status-ok{background:#4caf5024;color:#2e7d32}.status-err{background:#f4433624;color:#c62828}:is([data-theme=dark]) .status-ok{color:#81c784}:is([data-theme=dark]) .status-err{color:#ef9a9a}.status-detail{font-size:12px;color:var(--sub)}.pattern-err{margin-top:8px;padding:8px 12px;border-radius:8px;background:#f443361a;color:#c62828;font-size:13px;font-family:var(--font-mono, monospace)}:is([data-theme=dark]) .pattern-err{color:#ef9a9a}.ghost-btn{font-size:11px;padding:4px 9px;border-radius:7px;border:1px solid var(--border);background:var(--card);color:var(--sub);cursor:pointer;transition:all .15s;line-height:1.4}.ghost-btn:hover{border-color:var(--primary);color:var(--primary);background:var(--primary-muted)}.ghost-btn.on{border-color:var(--primary);color:#fff;background:var(--primary)}.ex-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:12px}.ex-label{font-size:11px;color:var(--sub)}.example-chip{font-size:11px;padding:4px 10px;border-radius:999px;border:1px solid var(--border);background:var(--card);color:var(--sub);cursor:pointer;transition:all .15s}.example-chip:hover{border-color:var(--primary);color:var(--primary);background:var(--primary-muted)}.tabs-bar{display:flex;gap:2px;padding:6px 6px 0;background:var(--card-alt);border-bottom:1px solid var(--border)}.tab{font-size:12px;font-weight:600;padding:7px 16px;border-radius:6px 6px 0 0;border:none;background:transparent;color:var(--sub);cursor:pointer;transition:all .15s}.tab.on{background:var(--card);color:var(--text);box-shadow:0 -1px 2px #0000000f}.tab:hover:not(.on){color:var(--primary)}.pane-head{display:flex;align-items:center;gap:8px;padding:10px 14px 8px;border-bottom:1px solid var(--border)}.pane-label{font-size:11px;font-weight:700;color:var(--sub);letter-spacing:1px;text-transform:uppercase;white-space:nowrap;flex-shrink:0}.pane-meta{font-size:11px;color:var(--sub)}.rp-split{display:grid;grid-template-columns:1fr;gap:12px}@media(min-width:1024px){.rp-split{grid-template-columns:1.6fr 1fr;align-items:start;--rp-h: clamp(360px, calc(100vh - 120px) , 1100px)}#testCard{height:var(--rp-h);display:flex;flex-direction:column}#testCard .test-input-area{flex:1 1 auto;min-height:0}#testCard .cm-host{height:100%;min-height:0;resize:none}.rp-split>.rp-right{height:var(--rp-h);display:grid;grid-template-rows:1fr;flex-direction:initial}.rp-right>div:first-child{min-height:0;display:flex;flex-direction:column}.rp-right>div:first-child .pane{flex:1 1 auto;min-height:0;display:flex;flex-direction:column}.rp-right>div:first-child .match-list,.rp-right>div:first-child .explain-list,.rp-right>div:first-child .replace-result,.rp-right>div:first-child .stats-body,.rp-right>div:first-child .tests-list{flex:1 1 auto;min-height:0;max-height:none}.rp-right>div:first-child .stats-body{flex:2 1 0}.rp-right>div:first-child .gb-body-wrap{flex:1 1 0;min-height:0;max-height:none}.rp-right>div:last-child .ref-body{max-height:clamp(200px,38vh,440px);overflow-y:auto;overflow-x:hidden}.rp-right>div:last-child .ref-list{grid-template-columns:repeat(2,1fr)}}.rp-split>div{min-width:0}.rp-right{display:flex;flex-direction:column;gap:12px;min-width:0}.test-input-area{position:relative}.cm-host{height:320px;min-height:200px;resize:vertical;overflow:hidden}.cm-host .cm-editor{height:100%}[data-theme=dark] .cm-host .rx-hit:not(.rx-hit-active){background-color:#6c63ff6b}.replace-grid{padding:0}.replace-with{width:100%;box-sizing:border-box;min-height:80px;padding:10px 14px;border:none;border-bottom:1px solid var(--border);background:var(--card-alt);font-family:var(--font-mono, monospace);font-size:13px;line-height:1.55;color:var(--text);outline:none;resize:vertical}.replace-result{margin:0;padding:10px 14px;max-height:380px;overflow:auto;font-family:var(--font-mono, monospace);font-size:13px;line-height:1.65;color:var(--text);white-space:pre-wrap;word-break:break-word;background:var(--card)}.replace-result ins{background:#6c63ff2e;color:var(--text);text-decoration:none;border-bottom:2px solid var(--primary);border-radius:2px}:is([data-theme=dark]) .replace-result ins{background:#6c63ff66}.explain-list{padding:10px 0;max-height:520px;overflow:auto}.explain-empty{padding:30px 16px;color:var(--sub);font-size:13px;text-align:center;font-style:italic}.ex-row-line{display:flex;align-items:flex-start;gap:12px;padding:5px 14px;border-bottom:1px dashed rgba(128,128,128,.1);line-height:1.5}.ex-row-line:hover{background:var(--primary-muted)}.ex-indent{display:inline-block;flex-shrink:0;color:var(--sub);font-family:var(--font-mono, monospace);white-space:pre}.ex-src{flex-shrink:0;font-family:var(--font-mono, monospace);font-size:13px;background:var(--card-alt);color:var(--primary);padding:1px 6px;border-radius:4px;max-width:280px;word-break:break-all}.ex-src:empty{display:none}.ex-text{font-size:13px;color:var(--text);flex:1}.match-list{max-height:480px;overflow:auto;padding:2px 0}.match-row{padding:3px 0;border-bottom:1px solid var(--border);cursor:pointer;transition:background .1s}.match-row:hover{background:var(--primary-muted)}.match-row:last-child{border-bottom:none}.match-row.active{background:#ff98001a}.m-line{display:flex;align-items:baseline;gap:8px;padding:1px 14px;line-height:1.55}.m-idx{flex-shrink:0;min-width:26px;height:16px;border-radius:4px;background:var(--primary);color:#fff;font-size:10px;font-weight:700;text-align:center;line-height:16px;align-self:center}.m-val{flex:1;min-width:0;font-family:var(--font-mono, monospace);font-size:12px;color:var(--primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.m-pos{flex-shrink:0;font-family:var(--font-mono, monospace);font-size:11px;color:var(--sub);white-space:nowrap}.m-grp{padding-left:30px}.g-tag{flex-shrink:0;min-width:26px;height:16px;border-radius:4px;background:#4caf502e;color:#2e7d32;font-size:10px;font-weight:700;text-align:center;line-height:16px;align-self:center;padding:0 4px;box-sizing:border-box}:is([data-theme=dark]) .g-tag{color:#81c784}.g-name{font-family:var(--font-mono, monospace);width:auto}.g-val{flex:1;min-width:0;font-family:var(--font-mono, monospace);font-size:12px;color:#2e7d32;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:is([data-theme=dark]) .g-val{color:#81c784}.g-pos{flex-shrink:0;font-family:var(--font-mono, monospace);font-size:11px;color:var(--sub);white-space:nowrap}.m-ctx{font-size:11px;color:var(--sub);font-family:var(--font-mono, monospace);padding:1px 14px 2px 30px;white-space:pre-wrap;word-break:break-all}.m-ctx mark{background:#6c63ff38;color:var(--text);border-radius:2px;padding:0 1px}:is([data-theme=dark]) .m-ctx mark{background:#6c63ff66}.ref-header{display:flex;align-items:center;gap:8px;padding:12px 16px;cursor:pointer;user-select:none;transition:background .15s}.ref-header:hover{background:var(--card-alt)}.ref-title{font-size:14px;font-weight:700;color:var(--text)}.ref-hint{font-size:11px;color:var(--sub)}.ref-arrow{color:var(--sub);font-size:13px;transition:transform .2s}.ref-arrow.open{transform:rotate(180deg)}.ref-body{padding:0 16px 16px}.ref-chips{position:sticky;top:0;z-index:1;display:flex;flex-wrap:wrap;gap:6px;padding:10px 0 8px;background:var(--card)}.ref-chip{font-size:11px;padding:3px 10px;border-radius:999px;border:1px solid var(--border);background:var(--card);color:var(--sub);cursor:pointer;transition:all .15s;white-space:nowrap}.ref-chip:hover{border-color:var(--primary);color:var(--primary)}.ref-chip.on{border-color:var(--primary);background:var(--primary);color:#fff}.ref-list{display:grid;grid-template-columns:repeat(3,1fr);gap:6px 16px}@media(max-width:640px){.ref-list{grid-template-columns:repeat(2,1fr)}}.ref-item[hidden]{display:none}.ref-item{padding:4px 8px;border-radius:6px;cursor:pointer;display:grid;grid-template-columns:92px 1fr;align-items:baseline;gap:10px;transition:background .15s}.ref-item:hover{background:var(--primary-muted)}.ref-token{font-family:var(--font-mono, monospace);font-size:12px;color:var(--primary);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ref-desc{font-family:var(--font);font-size:11px;color:var(--sub);line-height:1.4}@media(max-width:640px){.ref-item{grid-template-columns:70px 1fr;gap:8px}}.matches-head{background:var(--card-alt);flex-wrap:wrap;row-gap:8px}.matches-head .pane-meta{white-space:nowrap}.match-more{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:12px 14px;border-top:1px solid var(--border)}.match-more-hint{font-size:11px;color:var(--sub)}#testCard.drop-over{outline:2px dashed var(--primary);outline-offset:-4px}.file-bar{display:flex;align-items:center;gap:12px;padding:16px 14px;flex-wrap:wrap}.file-bar-name{font-family:var(--font-mono, monospace);font-size:13px;font-weight:600;color:var(--text);word-break:break-all}.file-prog{flex:1;min-width:120px;height:8px;border-radius:999px;background:var(--card-alt);overflow:hidden}.file-prog-fill{height:100%;width:0%;background:var(--primary);border-radius:999px;transition:width .15s linear}.file-bar-stat{font-size:11px;color:var(--sub);font-family:var(--font-mono, monospace)}@media(max-width:640px){.pat-input,.pat-overlay{font-size:13px;padding:10px 4px}.flag-btn{min-width:40px}.pat-slash{font-size:14px;padding:0 5px}.cm-host{height:260px}.cm-host .cm-content{font-size:12px}.pat-input-wrap{min-height:42px}}.status-sep{color:var(--border);margin:0 2px}.rp-modal{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:16px}.rp-modal-backdrop{position:absolute;inset:0;background:#00000080;backdrop-filter:blur(2px)}.rp-modal-card{position:relative;background:var(--card);border-radius:12px;box-shadow:0 8px 32px #0003;max-width:760px;width:100%;max-height:86vh;display:flex;flex-direction:column;overflow:hidden}.rp-modal-head{display:flex;align-items:center;gap:8px;padding:12px 16px;border-bottom:1px solid var(--border);font-size:14px;font-weight:700;color:var(--text)}.rp-modal-x{border:none;background:transparent;color:var(--sub);font-size:22px;cursor:pointer;line-height:1;padding:0 4px}.rp-modal-x:hover{color:var(--text)}.rp-modal-body{overflow:auto;padding:16px;flex:1}.format-pre{font-family:var(--font-mono, monospace);font-size:12.5px;line-height:1.7;background:var(--card-alt);padding:12px 14px;border-radius:8px;color:var(--text);white-space:pre;overflow-x:auto;margin:0}.format-comment{color:var(--sub);font-style:italic}.bench-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px 20px;margin-bottom:14px}.bench-row{display:flex;justify-content:space-between;align-items:baseline;padding:8px 12px;background:var(--card-alt);border-radius:7px}.bench-label{font-size:11px;color:var(--sub);text-transform:uppercase;letter-spacing:.5px}.bench-value{font-family:var(--font-mono, monospace);font-size:14px;font-weight:700;color:var(--text)}.bench-note{font-size:12px;color:var(--sub);line-height:1.6;padding-top:6px;border-top:1px dashed var(--border)}.share-url{width:100%;box-sizing:border-box;font-family:var(--font-mono, monospace);font-size:12px;padding:10px 12px;border:1px solid var(--border);border-radius:7px;background:var(--card-alt);color:var(--text);resize:none;height:96px;margin-bottom:10px}.share-stat{font-size:12px;color:var(--sub);margin-bottom:8px}.share-warn{color:#e65100;font-size:12px;padding:8px 10px;background:#ff98001a;border-radius:6px;margin-bottom:10px}:is([data-theme=dark]) .share-warn{color:#ffb74d}.tabs-bar{flex-wrap:wrap}.stats-select{font-size:12px;padding:3px 8px;border-radius:7px;border:1px solid var(--border);background:var(--card);color:var(--text);cursor:pointer;max-width:220px}.stats-body{padding:0 14px 14px;max-height:480px;overflow:auto}.stats-body>:first-child{margin-top:14px}.stats-hint{font-size:12px;line-height:1.6;color:#e65100;background:#ff98001a;border-radius:8px;padding:8px 12px;margin-bottom:14px}:is([data-theme=dark]) .stats-hint{color:#ffb74d}.help{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;margin-left:4px;border-radius:50%;background:var(--card-alt);border:1px solid var(--border);color:var(--sub);font-size:9px;font-weight:700;line-height:1;cursor:help;vertical-align:middle;user-select:none}.help:hover{border-color:var(--primary);color:var(--primary)}.rp-tip{position:fixed;z-index:200;max-width:260px;background:var(--card);color:var(--text);border:1px solid var(--border);font-size:12px;line-height:1.55;padding:8px 10px;border-radius:8px;box-shadow:0 6px 24px #0000002e;pointer-events:none}.stats-sec-title{font-size:11px;font-weight:700;color:var(--sub);letter-spacing:.5px;margin:0 0 8px}.stats-sec-title:not(:first-child){margin-top:18px}.stats-num-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.stat-cell{background:var(--card-alt);border-radius:8px;padding:8px 10px}.stat-k{font-size:10px;color:var(--sub);text-transform:uppercase;letter-spacing:.5px;margin-bottom:2px}.stat-v{font-family:var(--font-mono, monospace);font-size:15px;font-weight:700;color:var(--text);word-break:break-all}.freq-row{display:flex;align-items:center;gap:8px;padding:3px 0}.freq-val{flex-shrink:0;width:150px;font-family:var(--font-mono, monospace);font-size:12px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.freq-bar-wrap{flex:1;min-width:0;height:14px;background:var(--card-alt);border-radius:4px;overflow:hidden}.freq-bar{height:100%;background:var(--primary);border-radius:4px;min-width:2px}.freq-cnt{flex-shrink:0;width:110px;text-align:right;font-family:var(--font-mono, monospace);font-size:11px;color:var(--sub);white-space:nowrap}@media(max-width:640px){.stats-num-grid{grid-template-columns:repeat(2,1fr)}.freq-val{width:96px}.freq-cnt{width:88px}}.tests-list{padding:10px;max-height:480px;overflow:auto;display:flex;flex-direction:column;gap:6px}.tests-empty{padding:26px 16px;color:var(--sub);font-size:13px;text-align:center;font-style:italic;line-height:1.6}.test-row{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:8px;background:var(--card-alt);border-left:3px solid transparent}.test-row.pass{border-left-color:#4caf50}.test-row.fail{border-left-color:#f44336}.test-type{flex-shrink:0;font-size:11px;padding:4px 6px;border-radius:6px;border:1px solid var(--border);background:var(--card);color:var(--text);cursor:pointer}.test-text{flex:1;min-width:0;font-family:var(--font-mono, monospace);font-size:12px;padding:5px 8px;border:1px solid var(--border);border-radius:6px;background:var(--card);color:var(--text);outline:none}.test-text:focus{border-color:var(--primary)}.test-stat{flex-shrink:0;display:flex;align-items:center;gap:4px;max-width:200px}.test-stat-icon{font-size:13px;line-height:1}.test-detail{font-size:11px;color:var(--sub);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.test-row.pass .test-detail{color:#2e7d32}:is([data-theme=dark]) .test-row.pass .test-detail{color:#81c784}.test-del{flex-shrink:0;border:none;background:transparent;color:var(--sub);cursor:pointer;font-size:16px;line-height:1;padding:0 4px}.test-del:hover{color:#f44336}@media(max-width:640px){.test-stat{max-width:90px}.test-detail{display:none}}.match-nav{display:flex;align-items:center;gap:2px}.nav-btn{padding:3px 7px}.nav-counter{font-family:var(--font-mono, monospace);font-size:11px;color:var(--sub);min-width:62px;text-align:center;white-space:nowrap}.stats-gb-bar{background:var(--card-alt);flex-wrap:wrap}.gb-body-wrap{padding:0 14px 12px;max-height:360px;overflow:auto}.gb-body-wrap:empty{display:none}.gb-body-wrap>:first-child{margin-top:12px}.gb{margin-top:0}.gb-head{position:sticky;top:0;z-index:2;background:var(--card);padding:6px 0 2px}.gb-title{font-size:11px;font-weight:700;color:var(--sub);letter-spacing:.5px;padding:4px 0 6px;line-height:1.45}.gb-scroll-hint{font-weight:600;color:var(--primary);white-space:nowrap}.gb-hrow,.gb-row{display:grid;grid-template-columns:minmax(96px,1.6fr) repeat(9,minmax(56px,1fr));gap:0 8px;align-items:baseline;padding:4px 14px 4px 8px;min-width:704px}.gb-hrow{font-size:10px;font-weight:700;color:var(--sub);text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid var(--border)}.gb-hrow>span{text-align:right}.gb-hrow>span:first-child{text-align:left}.gb-row{border-bottom:1px solid var(--border);font-family:var(--font-mono, monospace);font-size:12px}.gb-row>span{text-align:right;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gb-row>span.gb-key{text-align:left;color:var(--primary)}.gb-row:hover{background:var(--primary-muted)}.lib-save{display:flex;gap:8px;margin-bottom:8px}.lib-input{flex:1;font-size:13px;padding:7px 10px;border:1px solid var(--border);border-radius:7px;background:var(--card-alt);color:var(--text);outline:none}.lib-input:focus{border-color:var(--primary)}.lib-cur{font-size:12px;color:var(--sub)}.lib-cur code,.lib-pat{font-family:var(--font-mono, monospace);font-size:12px;color:var(--primary);background:var(--card-alt);padding:1px 6px;border-radius:4px}.lib-row{display:flex;align-items:center;gap:8px;padding:7px 0;border-bottom:1px dashed var(--border)}.lib-name{font-weight:600;font-size:13px;color:var(--text);flex-shrink:0;max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lib-pat{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:360px}.lib-empty{font-size:12px;color:var(--sub);font-style:italic;padding:8px 0}
