:root,:root[data-theme=dark]{--bg: #1b1f27;--bg-panel: #22272f;--bg-input: #171a20;--bg-hover: #2b323c;--border: #333a45;--text: #d7dde5;--text-dim: #8a93a0;--accent: #3f9eff;--accent-contrast: #ffffff;--danger: #e5534b;--ok: #3fb950;--warn: #d29922;--match-even: rgba(63, 158, 255, .28);--match-odd: rgba(63, 185, 80, .28);--group-underline: rgba(255, 200, 60, .85);--hover-hl: rgba(255, 255, 255, .18);--rx-literal: #d7dde5;--rx-escape: #56b6c2;--rx-class: #c678dd;--rx-group: #e5c07b;--rx-quant: #61afef;--rx-anchor: #e06c75;--rx-backref: #98c379;--rx-comment: #7f848e;--shadow: 0 8px 30px rgba(0, 0, 0, .45)}:root[data-theme=light]{--bg: #f4f6f8;--bg-panel: #ffffff;--bg-input: #eef1f4;--bg-hover: #e4e9ee;--border: #d3dae1;--text: #24292f;--text-dim: #667380;--accent: #0969da;--accent-contrast: #ffffff;--danger: #cf222e;--ok: #1a7f37;--warn: #9a6700;--match-even: rgba(9, 105, 218, .2);--match-odd: rgba(26, 127, 55, .22);--group-underline: rgba(154, 103, 0, .9);--hover-hl: rgba(0, 0, 0, .12);--rx-literal: #24292f;--rx-escape: #0550ae;--rx-class: #8250df;--rx-group: #953800;--rx-quant: #0969da;--rx-anchor: #cf222e;--rx-backref: #1a7f37;--rx-comment: #6e7781;--shadow: 0 8px 30px rgba(31, 35, 40, .15)}body.vscode-dark,body.vscode-light,body.vscode-high-contrast{--bg: var(--vscode-editor-background, #1b1f27);--bg-panel: var(--vscode-sideBar-background, #22272f);--bg-input: var(--vscode-input-background, #171a20);--text: var(--vscode-editor-foreground, #d7dde5);--text-dim: var(--vscode-descriptionForeground, #8a93a0);--border: var(--vscode-panel-border, #333a45);--accent: var(--vscode-button-background, #3f9eff);--accent-contrast: var(--vscode-button-foreground, #fff)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:13px}code,pre,.mono-input,.cm-editor{font-family:SF Mono,Monaco,Menlo,Consolas,Courier New,monospace}.app{display:flex;height:100%;overflow:hidden}.app-loading{display:grid;place-items:center;height:100%;color:var(--text-dim);font-size:16px}.sidebar{width:64px;background:var(--bg-panel);border-right:1px solid var(--border);display:flex;flex-direction:column;align-items:stretch;padding:8px 6px;gap:4px;flex-shrink:0}.sidebar-logo{display:flex;align-items:center;justify-content:center;gap:6px;padding:8px 0 14px;text-decoration:none;cursor:default}.sidebar-logo-mark{flex-shrink:0;display:block}.sidebar-item{background:none;border:none;border-radius:6px;color:var(--text-dim);padding:8px 2px;display:flex;flex-direction:column;align-items:center;gap:3px;cursor:pointer;font-size:9.5px}.sidebar-item:hover{background:var(--bg-hover);color:var(--text)}.sidebar-item.active{color:var(--accent);background:var(--bg-hover)}.sidebar-item-label{line-height:1.1;text-align:center}.sidebar-spacer{flex:1}.app-main{flex:1;overflow:hidden;display:flex}.editor-page{display:flex;flex:1;min-width:0}.editor-left{flex:1.2;min-width:0;display:flex;flex-direction:column;padding:12px 14px;gap:8px;overflow-y:auto}.editor-right{flex:1;min-width:320px;max-width:480px;border-left:1px solid var(--border);overflow-y:auto;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.flavor-select{background:var(--bg-input);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:5px 8px;font-size:12.5px}.mode-tabs{display:flex;background:var(--bg-input);border:1px solid var(--border);border-radius:6px;overflow:hidden}.mode-tab{background:none;border:none;color:var(--text-dim);padding:6px 12px;cursor:pointer;font-size:12.5px}.mode-tab:hover{color:var(--text)}.mode-tab.active{background:var(--accent);color:var(--accent-contrast)}.topbar-spacer{flex:1;display:flex;align-items:center}.running-dot{width:8px;height:8px;border-radius:50%;background:var(--accent);animation:pulse 1s ease-in-out infinite}@keyframes pulse{50%{opacity:.25}}.btn{border:1px solid var(--border);background:var(--bg-input);color:var(--text);border-radius:6px;padding:6px 14px;cursor:pointer;font-size:12.5px}.btn:hover{background:var(--bg-hover)}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast)}.btn.primary:hover{filter:brightness(1.1)}.btn.danger{color:var(--danger)}.btn.small{padding:3px 9px;font-size:11.5px}.btn:disabled{opacity:.5;cursor:default}.icon-btn{background:none;border:none;color:var(--text-dim);cursor:pointer;padding:3px 6px;border-radius:4px;font-size:13px}.icon-btn:hover{color:var(--text);background:var(--bg-hover)}.tools-menu{position:relative}.tools-dropdown{position:absolute;right:0;top:calc(100% + 4px);background:var(--bg-panel);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow);display:flex;flex-direction:column;min-width:190px;z-index:60;overflow:hidden}.tools-dropdown button{background:none;border:none;color:var(--text);text-align:left;padding:9px 14px;cursor:pointer;font-size:12.5px}.tools-dropdown button:hover{background:var(--bg-hover)}.pattern-block{display:flex;flex-direction:column;gap:2px}.pattern-row{display:flex;align-items:flex-start;background:var(--bg-input);border:1px solid var(--border);border-radius:8px;padding:4px 8px}.pattern-row:focus-within{border-color:var(--accent)}.pattern-delim{color:var(--text-dim);font-family:SF Mono,Monaco,monospace;font-size:15px;padding:6px 2px}.pattern-editor{flex:1;min-width:0}.pattern-editor .cm-editor{background:transparent}.pattern-editor .cm-content{padding:6px 4px;font-size:14px}.flags-widget{position:relative}.flags-button{background:none;border:none;color:var(--accent);font-family:SF Mono,Monaco,monospace;font-size:13.5px;cursor:pointer;padding:7px 4px}.flags-dropdown{position:absolute;right:0;top:calc(100% + 6px);background:var(--bg-panel);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow);padding:8px;min-width:340px;z-index:70}.flags-title{font-weight:600;padding:2px 6px 8px}.flag-item{display:grid;grid-template-columns:auto 22px 90px 1fr;gap:8px;align-items:center;padding:5px 6px;border-radius:5px;cursor:pointer}.flag-item:hover{background:var(--bg-hover)}.flag-item code{color:var(--accent);font-weight:700}.flag-name{color:var(--text)}.flag-desc{color:var(--text-dim);font-size:11.5px}.pattern-hint{min-height:0;color:var(--text-dim);font-size:11.5px;padding:0 4px}.pattern-error,.pattern-warning{border-radius:6px;padding:6px 10px;font-size:12px;font-family:SF Mono,Monaco,monospace}.pattern-error{background:color-mix(in srgb,var(--danger) 14%,transparent);color:var(--danger)}.pattern-warning{background:color-mix(in srgb,var(--warn) 14%,transparent);color:var(--warn)}.rx-literal{color:var(--rx-literal)}.rx-escape{color:var(--rx-escape)}.rx-class{color:var(--rx-class)}.rx-group-paren{color:var(--rx-group);font-weight:700}.rx-quantifier{color:var(--rx-quant);font-weight:700}.rx-anchor{color:var(--rx-anchor);font-weight:600}.rx-alternation{color:var(--rx-anchor);font-weight:700}.rx-backref{color:var(--rx-backref)}.rx-comment{color:var(--rx-comment);font-style:italic}.rx-error{text-decoration:underline wavy var(--danger)}.panel-label{color:var(--text-dim);font-size:11px;text-transform:uppercase;letter-spacing:.6px;margin-top:4px}.test-editor{flex:1;min-height:140px;border:1px solid var(--border);border-radius:8px;overflow:hidden;background:var(--bg-input)}.test-editor .cm-editor{height:100%;background:transparent}.test-editor .cm-content{padding:8px;font-size:13px}.cm-editor.cm-focused{outline:none}.cm-editor .cm-gutters{background:transparent;border-right:1px solid var(--border);color:var(--text-dim)}.cm-match-even{background:var(--match-even);border-radius:2px}.cm-match-odd{background:var(--match-odd);border-radius:2px}.cm-group-hl{border-bottom:1.5px solid var(--group-underline)}.cm-hover-hl{background:var(--hover-hl);outline:1px solid var(--accent);border-radius:2px}.cm-empty-match{display:inline-block;width:2px;height:1em;background:var(--accent);vertical-align:text-bottom}.cm-ws{color:var(--text-dim);opacity:.6}.cm-placeholder{color:var(--text-dim)!important}.cm-cursor{border-left-color:var(--text)!important}.cm-selectionBackground{background:color-mix(in srgb,var(--accent) 30%,transparent)!important}.sub-block{display:flex;flex-direction:column;gap:3px}.list-controls{flex-direction:row;gap:14px}.list-controls>div{display:flex;flex-direction:column;gap:3px}.list-controls>div:first-child{flex:1}.mono-input{background:var(--bg-input);border:1px solid var(--border);border-radius:6px;color:var(--text);padding:8px 10px;font-size:13px}.mono-input:focus{outline:none;border-color:var(--accent)}.output-pane{background:var(--bg-input);border:1px solid var(--border);border-radius:8px;padding:10px;margin:0;min-height:60px;max-height:220px;overflow:auto;white-space:pre-wrap;word-break:break-word;font-size:13px}.tests-panel{display:flex;flex-direction:column;gap:10px;overflow-y:auto}.tests-header{display:flex;align-items:center;gap:12px}.tests-summary{font-weight:600}.tests-summary.pass{color:var(--ok)}.tests-summary.fail{color:var(--danger)}.test-case{border:1px solid var(--border);border-left-width:3px;border-radius:8px;padding:8px 10px;display:flex;flex-direction:column;gap:6px;background:var(--bg-panel)}.test-case.pass{border-left-color:var(--ok)}.test-case.fail{border-left-color:var(--danger)}.test-case-row{display:flex;align-items:center;gap:8px}.test-case-row select,.test-group-input,.test-expected-input{background:var(--bg-input);border:1px solid var(--border);border-radius:5px;color:var(--text);padding:4px 8px;font-size:12px}.test-group-input{width:110px}.test-expected-input{flex:1}.test-badge{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font-size:12px;background:var(--bg-hover);color:var(--text-dim);flex-shrink:0}.test-badge.pass{background:var(--ok);color:#fff}.test-badge.fail{background:var(--danger);color:#fff}.test-input{background:var(--bg-input);border:1px solid var(--border);border-radius:6px;color:var(--text);font-family:SF Mono,Monaco,monospace;font-size:12.5px;padding:6px 8px;resize:vertical}.test-message{font-size:12px}.test-message.pass{color:var(--ok)}.test-message.fail{color:var(--danger)}.side-panel{border-bottom:1px solid var(--border);display:flex;flex-direction:column;min-height:0}.side-panel:not(.collapsed){flex:1}.side-panel-header{padding:9px 12px;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.6px;color:var(--text-dim);cursor:pointer;-webkit-user-select:none;user-select:none;display:flex;gap:6px;align-items:center;background:var(--bg-panel);position:sticky;top:0;z-index:5}.side-panel-header:hover{color:var(--text)}.chevron{display:inline-block;transition:transform .12s}.chevron.open{transform:rotate(90deg)}.side-panel-body{padding:4px 12px 12px;overflow-y:auto;min-height:60px}.empty-note{color:var(--text-dim);padding:10px 4px;font-size:12.5px}.empty-note.big{padding:40px;text-align:center;font-size:14px}.explain-header{padding-bottom:6px}.explain-pattern{color:var(--text-dim);word-break:break-all;font-size:12px}.explain-errors{margin-bottom:6px}.explain-error-item{color:var(--warn);font-size:12px}.explain-list{list-style:none;margin:0;padding:0}.explain-list.nested{padding-left:14px;border-left:1px solid var(--border);margin-left:5px}.explain-item{padding:2px 0}.explain-line{display:flex;gap:8px;align-items:baseline;padding:2px 4px;border-radius:4px}.explain-line:hover{background:var(--bg-hover)}.explain-token{color:var(--accent);white-space:pre;word-break:break-all;flex-shrink:0;max-width:45%;overflow:hidden;text-overflow:ellipsis}.explain-text{color:var(--text);font-size:12.5px}.kind-error>.explain-line .explain-text{color:var(--danger)}.matchinfo-stats{display:flex;align-items:center;justify-content:space-between;color:var(--text-dim);font-size:12px;padding:4px 0 8px}.matchinfo-truncated{color:var(--warn);font-size:12px;padding-bottom:6px}.matchinfo-list{display:flex;flex-direction:column;gap:8px}.match-entry{border:1px solid var(--border);border-radius:8px;padding:7px 9px;background:var(--bg-panel)}.match-entry:hover{border-color:var(--accent)}.match-entry-head{display:flex;justify-content:space-between;align-items:center}.match-title{font-weight:600;font-size:12px}.match-range{color:var(--text-dim);font-weight:400;margin-left:8px;font-family:SF Mono,Monaco,monospace;font-size:11px}.match-value{display:block;background:var(--match-even);border-radius:4px;padding:3px 6px;margin:4px 0;word-break:break-all;white-space:pre-wrap;font-size:12.5px}.group-entry{display:flex;align-items:baseline;gap:8px;padding:2px 0 2px 12px;font-size:12px}.group-label{color:var(--text-dim);flex-shrink:0}.group-value{background:var(--bg-hover);border-radius:3px;padding:1px 5px;word-break:break-all;white-space:pre-wrap}.group-missing{color:var(--text-dim);font-style:italic}.quickref{display:flex;flex-direction:column;gap:8px}.quickref-search{background:var(--bg-input);border:1px solid var(--border);border-radius:6px;color:var(--text);padding:6px 10px}.quickref-search:focus{outline:none;border-color:var(--accent)}.quickref-body{display:flex;gap:10px;min-height:0}.quickref-cats{display:flex;flex-direction:column;gap:2px;flex-shrink:0}.quickref-cat{background:none;border:none;color:var(--text-dim);text-align:left;padding:4px 8px;border-radius:5px;cursor:pointer;font-size:11.5px;white-space:nowrap}.quickref-cat:hover{background:var(--bg-hover);color:var(--text)}.quickref-cat.active{color:var(--accent);background:var(--bg-hover)}.quickref-entries{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0;max-height:300px;overflow-y:auto}.quickref-entry{display:flex;gap:10px;align-items:baseline;background:none;border:none;border-radius:5px;padding:4px 8px;cursor:pointer;text-align:left;color:var(--text)}.quickref-entry:hover{background:var(--bg-hover)}.quickref-entry.foreign{opacity:.45}.quickref-token{color:var(--accent);flex-shrink:0;min-width:64px;font-size:12px}.quickref-name{font-size:12px;color:var(--text-dim)}.quickref-flavor{margin-left:auto;font-size:10px;color:var(--warn);flex-shrink:0}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:grid;place-items:center;z-index:100}.dialog{background:var(--bg-panel);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow);width:min(560px,92vw);max-height:88vh;display:flex;flex-direction:column}.dialog.wide{width:min(860px,94vw)}.dialog-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border)}.dialog-header h2{margin:0;font-size:15px}.dialog-body{padding:14px 16px;overflow-y:auto;display:flex;flex-direction:column;gap:10px}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;padding-top:6px}.form-row{display:flex;align-items:center;gap:10px}.form-row label{color:var(--text-dim)}.form-row select,.form-row input{background:var(--bg-input);border:1px solid var(--border);border-radius:6px;color:var(--text);padding:6px 10px}.form-col{display:flex;flex-direction:column;gap:6px}.form-col label{color:var(--text-dim);font-size:12px;margin-top:4px}.form-col input,.form-col textarea{background:var(--bg-input);border:1px solid var(--border);border-radius:6px;color:var(--text);padding:8px 10px;font-size:13px;resize:vertical}.form-col input:focus,.form-col textarea:focus{outline:none;border-color:var(--accent)}.code-pane{background:var(--bg-input);border:1px solid var(--border);border-radius:8px;padding:12px;margin:0;overflow:auto;font-size:12.5px;line-height:1.5;max-height:46vh;white-space:pre}.code-pane.small{max-height:30vh;font-size:11.5px}.codegen-tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--border);padding-bottom:8px}.codegen-warnings{color:var(--warn);font-size:12px;display:flex;flex-direction:column;gap:2px}.bench-table{border-collapse:collapse;width:100%}.bench-table td{padding:6px 10px;border-bottom:1px solid var(--border)}.bench-table td:first-child{color:var(--text-dim)}.bench-table td:last-child{font-family:SF Mono,Monaco,monospace;text-align:right}.library-page{flex:1;padding:16px 20px;overflow-y:auto;display:flex;flex-direction:column;gap:14px}.library-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.library-toolbar h1{margin:0 10px 0 0;font-size:18px}.library-toolbar select{background:var(--bg-input);border:1px solid var(--border);border-radius:6px;color:var(--text);padding:6px 8px}.library-search{background:var(--bg-input);border:1px solid var(--border);border-radius:6px;color:var(--text);padding:7px 12px;min-width:220px}.library-search:focus{outline:none;border-color:var(--accent)}.library-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}.library-card{border:1px solid var(--border);border-radius:10px;background:var(--bg-panel);padding:12px 14px;display:flex;flex-direction:column;gap:6px}.library-card:hover{border-color:var(--accent)}.library-card-head{display:flex;align-items:baseline;gap:8px}.library-title{font-weight:600;font-size:14px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.library-flavor{font-size:10.5px;color:var(--accent);border:1px solid var(--accent);border-radius:4px;padding:1px 6px;flex-shrink:0}.library-version{font-size:10.5px;color:var(--text-dim)}.library-desc{color:var(--text-dim);font-size:12px}.library-meta{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.tag{background:var(--bg-hover);border-radius:10px;padding:1px 9px;font-size:11px;color:var(--text-dim);cursor:pointer}.tag:hover{color:var(--accent)}.library-date{margin-left:auto;font-size:11px;color:var(--text-dim)}.library-actions{display:flex;gap:6px;padding-top:4px}.settings-page{flex:1;padding:16px 24px;overflow-y:auto;max-width:640px}.settings-page h1{font-size:18px;margin:0 0 12px}.settings-page h2{font-size:13px;text-transform:uppercase;letter-spacing:.6px;color:var(--text-dim);margin:18px 0 10px}.form-grid{display:grid;grid-template-columns:200px 1fr;gap:10px 16px;align-items:center}.form-grid label{color:var(--text);font-size:13px}.form-grid input[type=number],.form-grid select{background:var(--bg-input);border:1px solid var(--border);border-radius:6px;color:var(--text);padding:7px 10px;max-width:240px}.form-grid input[type=checkbox]{justify-self:start;width:16px;height:16px}.toasts{position:fixed;bottom:18px;right:18px;display:flex;flex-direction:column;gap:8px;z-index:200}.toast{background:var(--bg-panel);border:1px solid var(--border);border-left:3px solid var(--accent);color:var(--text);border-radius:8px;padding:10px 16px;box-shadow:var(--shadow);font-size:12.5px;animation:slide-in .18s ease-out}.toast.error{border-left-color:var(--danger)}@keyframes slide-in{0%{transform:translate(20px);opacity:0}}@media(max-width:900px){.editor-page{flex-direction:column;overflow-y:auto}.editor-right{max-width:none;border-left:none;border-top:1px solid var(--border)}}.test-editor-block{flex:1;display:flex;flex-direction:column;min-height:160px}.tab-bar{display:flex;align-items:center;gap:2px;padding-bottom:4px}.tab-bar.single{justify-content:flex-end}.tab{display:flex;align-items:center;gap:6px;padding:3px 8px 3px 12px;border:1px solid var(--border);border-radius:6px 6px 0 0;border-bottom:none;color:var(--text-dim);font-size:12px;cursor:pointer;background:var(--bg-panel);-webkit-user-select:none;user-select:none}.tab.active{color:var(--text);background:var(--bg-input);border-color:var(--accent)}.tab-close{background:none;border:none;color:var(--text-dim);cursor:pointer;font-size:10px;padding:0 2px}.tab-close:hover{color:var(--danger)}.tab-add{background:none;border:1px dashed var(--border);border-radius:6px;color:var(--text-dim);cursor:pointer;padding:2px 9px;font-size:13px}.tab-add:hover{color:var(--accent);border-color:var(--accent)}.dbg-pattern,.dbg-text{background:var(--bg-input);border:1px solid var(--border);border-radius:8px;padding:9px 12px;font-family:SF Mono,Monaco,Menlo,monospace;font-size:13.5px;white-space:pre-wrap;word-break:break-all}.dbg-tok{border-radius:3px;padding:1px}.dbg-try{background:color-mix(in srgb,var(--accent) 30%,transparent);outline:1px solid var(--accent)}.dbg-match{background:color-mix(in srgb,var(--ok) 35%,transparent);outline:1px solid var(--ok)}.dbg-fail{background:color-mix(in srgb,var(--danger) 30%,transparent);outline:1px solid var(--danger)}.dbg-backtrack{background:color-mix(in srgb,var(--warn) 32%,transparent);outline:1px solid var(--warn)}.dbg-shift,.dbg-done{background:var(--bg-hover)}.dbg-cursor{display:inline-block;width:2px;height:1.1em;background:var(--accent);vertical-align:text-bottom;animation:pulse 1s ease-in-out infinite}.dbg-controls{display:flex;align-items:center;gap:6px}.dbg-slider{flex:1;accent-color:var(--accent)}.dbg-count{font-family:SF Mono,Monaco,monospace;font-size:12px;color:var(--text-dim);min-width:84px;text-align:right}.dbg-status{display:flex;gap:10px;font-size:12.5px}.dbg-found{color:var(--ok);font-weight:600}.dbg-notfound{color:var(--danger);font-weight:600}.dbg-steps{border:1px solid var(--border);border-radius:8px;overflow:hidden;font-size:12px}.dbg-step{display:flex;align-items:center;gap:8px;padding:4px 10px;cursor:pointer;border-bottom:1px solid var(--border)}.dbg-step:last-child{border-bottom:none}.dbg-step:hover{background:var(--bg-hover)}.dbg-step.active{background:color-mix(in srgb,var(--accent) 16%,transparent)}.dbg-step-idx{color:var(--text-dim);min-width:34px;text-align:right;font-family:SF Mono,Monaco,monospace}.dbg-badge{min-width:72px;text-align:center;border-radius:4px;font-size:10.5px;font-weight:700;text-transform:uppercase;padding:1px 4px}.dbg-step-tok{color:var(--accent);max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:pre}.dbg-step-pos{color:var(--text-dim);font-family:SF Mono,Monaco,monospace}.dbg-step-note{color:var(--text-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.railroad-wrap{overflow:auto;padding:12px;background:var(--bg-input);border:1px solid var(--border);border-radius:8px}.railroad .rr-line{stroke:var(--text-dim);stroke-width:1.5}.railroad .rr-dot{fill:var(--accent)}.railroad .rr-text{fill:var(--text)}.railroad .rr-label{fill:var(--text-dim);font-size:10px}.railroad .rr-literal{fill:color-mix(in srgb,var(--accent) 18%,var(--bg-panel));stroke:var(--accent)}.railroad .rr-class{fill:color-mix(in srgb,var(--rx-class) 18%,var(--bg-panel));stroke:var(--rx-class)}.railroad .rr-anchor{fill:color-mix(in srgb,var(--rx-anchor) 16%,var(--bg-panel));stroke:var(--rx-anchor)}.railroad .rr-backref{fill:color-mix(in srgb,var(--rx-backref) 18%,var(--bg-panel));stroke:var(--rx-backref)}.railroad .rr-group{fill:none;stroke:var(--rx-group);stroke-dasharray:4 3}.railroad .rr-look{fill:none;stroke:var(--rx-class);stroke-dasharray:2 3}.railroad .rr-error{fill:color-mix(in srgb,var(--danger) 20%,var(--bg-panel));stroke:var(--danger)}.quiz-page{flex:1;display:flex;overflow:hidden}.quiz-list{width:240px;border-right:1px solid var(--border);padding:16px 10px;overflow-y:auto;display:flex;flex-direction:column;gap:3px;flex-shrink:0}.quiz-list h1{font-size:16px;margin:0 6px 2px}.quiz-progress{color:var(--text-dim);font-size:12px;margin:0 6px 10px}.quiz-item{display:flex;align-items:center;gap:8px;background:none;border:none;border-radius:6px;color:var(--text);padding:7px 8px;text-align:left;cursor:pointer;font-size:13px}.quiz-item:hover{background:var(--bg-hover)}.quiz-item.active{background:var(--bg-hover);color:var(--accent)}.quiz-item.solved .quiz-item-num{background:var(--ok);color:#fff}.quiz-item-num{width:20px;height:20px;border-radius:50%;background:var(--bg-hover);color:var(--text-dim);display:grid;place-items:center;font-size:11px;flex-shrink:0}.quiz-task{flex:1;padding:20px 26px;overflow-y:auto;max-width:720px}.quiz-task h2{margin:0 0 6px}.quiz-desc{color:var(--text)}.quiz-note{color:var(--text-dim);font-size:12px}.quiz-input-row{margin:10px 0}.quiz-answer{flex:1;background:none;border:none;color:var(--text);font-family:SF Mono,Monaco,monospace;font-size:14px;padding:7px 4px;outline:none}.quiz-actions{display:flex;align-items:center;gap:10px}.quiz-solved{color:var(--ok);font-weight:700}.quiz-hint{margin-top:12px;background:color-mix(in srgb,var(--warn) 12%,transparent);border-radius:8px;padding:10px 14px;font-size:13px}.quiz-results{margin-top:14px;display:flex;flex-direction:column;gap:6px}.quiz-case{display:flex;align-items:center;gap:10px;border:1px solid var(--border);border-radius:7px;padding:6px 10px;font-size:12.5px}.quiz-case.pass{border-left:3px solid var(--ok)}.quiz-case.fail{border-left:3px solid var(--danger)}.quiz-case code{background:var(--bg-hover);border-radius:4px;padding:1px 6px}.quiz-case-exp{color:var(--text-dim)}.account-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.account-row input{background:var(--bg-input);border:1px solid var(--border);border-radius:6px;color:var(--text);padding:7px 10px}.vote-btn{background:none;border:1px solid var(--border);border-radius:5px;color:var(--text-dim);cursor:pointer;font-size:11px;padding:1px 8px;flex-shrink:0}.vote-btn:hover{border-color:var(--accent);color:var(--accent)}.vote-btn.voted{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast)}.library-private{font-size:10.5px;color:var(--warn);border:1px solid var(--warn);border-radius:4px;padding:1px 6px;flex-shrink:0}.library-owner{font-size:11px;color:var(--text-dim);flex-shrink:0}.save-public{display:flex;align-items:center;gap:8px;margin-top:6px;color:var(--text);font-size:12.5px}.cm-tooltip.cm-tooltip-autocomplete{background:var(--bg-panel);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow)}.cm-tooltip-autocomplete ul li{color:var(--text);font-family:SF Mono,Monaco,monospace;font-size:12px}.cm-tooltip-autocomplete ul li[aria-selected]{background:var(--accent);color:var(--accent-contrast)}.cm-completionDetail{color:var(--text-dim);font-style:normal;margin-left:10px}.cm-tooltip.cm-completionInfo{background:var(--bg-panel);border:1px solid var(--border);color:var(--text);border-radius:8px;max-width:300px}.btn.live-active{background:color-mix(in srgb,var(--danger) 18%,var(--bg-input));border-color:var(--danger);color:var(--danger);font-weight:600}.live-watch-badge{color:var(--danger);font-weight:600;font-size:12px;display:inline-flex;align-items:center;gap:4px;animation:pulse 1.6s ease-in-out infinite}.dbg-captures{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12px}.dbg-captures-label{color:var(--text-dim);text-transform:uppercase;font-size:10.5px;letter-spacing:.5px}.dbg-capture{display:inline-flex;align-items:baseline;gap:6px;border:1px solid var(--border);border-radius:6px;padding:2px 8px;background:var(--bg-panel)}.dbg-capture-name{color:var(--rx-group);font-weight:600}.dbg-capture code{background:var(--bg-hover);border-radius:3px;padding:0 5px;word-break:break-all}.comments-block{border-top:1px solid var(--border);margin-top:8px;padding-top:8px;display:flex;flex-direction:column;gap:6px}.comment{display:flex;align-items:baseline;gap:8px;font-size:12.5px}.comment-author{color:var(--accent);font-weight:600;flex-shrink:0}.comment-body{flex:1;word-break:break-word}.comment-date{color:var(--text-dim);font-size:11px;flex-shrink:0}.comment-form{display:flex;gap:6px}.comment-form input{flex:1;background:var(--bg-input);border:1px solid var(--border);border-radius:6px;color:var(--text);padding:6px 10px;font-size:12.5px}.library-team{font-size:10.5px;color:var(--rx-group);border:1px solid var(--rx-group);border-radius:4px;padding:1px 6px;flex-shrink:0}.team-card{border:1px solid var(--border);border-radius:10px;padding:12px 14px;margin-top:10px;display:flex;flex-direction:column;gap:8px;max-width:520px}.team-head{display:flex;align-items:center;gap:10px}.team-name{font-weight:700;flex:1}.team-members{display:flex;gap:6px;flex-wrap:wrap}.tag-remove{background:none;border:none;color:var(--text-dim);cursor:pointer;font-size:9px;padding:0 0 0 4px}.tag-remove:hover{color:var(--danger)}.library-version.clickable{background:none;border:none;cursor:pointer;padding:0}.library-version.clickable:hover{color:var(--accent)}.versions-block{border-top:1px solid var(--border);margin-top:8px;padding-top:8px;display:flex;flex-direction:column;gap:4px}.version-row{display:flex;align-items:center;gap:8px}.version-label{font-family:SF Mono,Monaco,monospace;font-size:12px;min-width:90px}.version-latest{color:var(--ok);font-family:inherit}
