:root{--bg: #070a0f;--bg-2: #0a0f16;--panel: #0c131c;--panel-2: #0f1826;--line: #17222f;--line-2: #1e2c3c;--text: #c6d4e3;--muted: #64798f;--dim: #3f5163;--neon: #00ff9c;--neon-dim: #0bbd78;--cyan: #35e0ff;--magenta: #ff4d8d;--amber: #ffcf4d;--red: #ff5c6c;--g0: #00ff9c;--g1: #35e0ff;--g2: #ff4d8d;--g3: #ffcf4d;--g4: #a988ff;--g5: #58e08a;--g6: #ff8a5c;--g7: #4dc4ff;--mono: "JetBrains Mono", "Fira Code", "Cascadia Code", ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--ed-size: 15px;--ed-lh: 1.65;--ed-pad: 16px 18px;--radius: 8px}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--bg);color:var(--text);font-family:var(--mono);font-size:15px;-webkit-font-smoothing:antialiased}body{background-image:linear-gradient(90deg,rgba(0,255,156,.018) 1px,transparent 1px),linear-gradient(rgba(0,255,156,.014) 1px,transparent 1px),radial-gradient(900px 500px at 100% -10%,rgba(0,255,156,.06),transparent 60%),radial-gradient(700px 500px at -10% 110%,rgba(53,224,255,.06),transparent 60%),linear-gradient(transparent 95%,#00ff9c05),linear-gradient(90deg,transparent 95%,rgba(0,255,156,.02) 100%);background-size:46px 46px,46px 46px,auto,auto,100% 26px,26px 100%}.scanlines{position:fixed;inset:0;z-index:9999;pointer-events:none;background:repeating-linear-gradient(to bottom,#0000 0 2px,#0000002e 3px);mix-blend-mode:multiply;opacity:.35}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:6px}::-webkit-scrollbar-thumb:hover{background:#2a3d52}.app{display:grid;grid-template-columns:minmax(0,1fr) minmax(400px,29vw);grid-template-rows:auto auto minmax(0,1fr) auto auto;grid-template-areas:"title  title" "guide  guide" "editor side" "output output" "status status";height:100vh;gap:12px;padding:12px}.titlebar{grid-area:title;display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:linear-gradient(180deg,var(--panel-2),var(--panel));border:1px solid var(--line-2);border-radius:var(--radius);box-shadow:inset 0 0 22px #00ff9c06,0 0 0 1px #00ff9c0a,0 8px 30px #00000080}.tb-left{display:flex;align-items:center;gap:14px;min-width:0}.dots{display:inline-flex;gap:6px}.dots i{width:11px;height:11px;border-radius:50%;display:block;opacity:.9}.d-r{background:#ff5f57}.d-y{background:#febc2e}.d-g{background:#28c840}.brand{font-size:22px;font-weight:700;letter-spacing:.5px;color:var(--text);text-shadow:0 0 18px rgba(0,255,156,.25)}.brand b{color:var(--neon)}.caret{color:var(--neon);animation:blink 1.1s steps(1) infinite;margin-left:1px}@keyframes blink{50%{opacity:0}}.tagline{color:var(--muted);font-size:13px;letter-spacing:.3px}@media (max-width: 900px){.tagline{display:none}}.tb-right{display:flex;align-items:center;gap:10px}.flags{display:inline-flex;gap:4px;padding:3px;background:var(--bg);border:1px solid var(--line);border-radius:7px}.flag{width:32px;height:30px;border:0;cursor:pointer;border-radius:5px;background:transparent;color:var(--muted);font-family:var(--mono);font-size:14px;font-weight:700}.flag:hover{color:var(--text);text-shadow:0 0 10px rgba(0,255,156,.45)}.flag.active{background:#00ff9c24;color:var(--neon);box-shadow:inset 0 0 0 1px #00ff9c66}.btn{font-family:var(--mono);font-size:13px;letter-spacing:.4px;padding:8px 12px;border-radius:6px;cursor:pointer;background:#00ff9c1a;color:var(--neon);border:1px solid rgba(0,255,156,.3);transition:all .12s ease}.btn:hover{background:#00ff9c2e;box-shadow:0 0 14px #00ff9c40}.btn.ghost{background:transparent;color:var(--muted);border-color:var(--line-2)}.btn.ghost:hover{color:var(--text);border-color:var(--neon-dim);box-shadow:inset 0 0 14px #00ff9c0a}.onboard{grid-area:guide;display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:42px;padding:9px 12px;background:linear-gradient(90deg,rgba(0,255,156,.08),transparent 42%),var(--panel);border:1px solid rgba(0,255,156,.22);border-radius:var(--radius);box-shadow:inset 0 0 18px #00ff9c09,0 0 18px #00ff9c09}.onboard.hidden{display:none}.onboard-main{display:flex;align-items:center;gap:12px;min-width:0}.onboard-kicker{flex:none;color:var(--neon);font-size:11px;letter-spacing:1.5px;text-transform:uppercase;text-shadow:0 0 10px rgba(0,255,156,.45)}.onboard-kicker:before{content:">";margin-right:7px;color:var(--cyan)}.onboard-tip{color:var(--text);font-size:13px;line-height:1.4;overflow:hidden;text-overflow:ellipsis}.onboard-actions{display:flex;align-items:center;gap:8px;flex:none}.mini-btn{font-family:var(--mono);font-size:12px;padding:6px 9px;border-radius:6px;border:1px solid rgba(53,224,255,.28);background:#35e0ff12;color:var(--cyan);cursor:pointer}.mini-btn:hover{color:var(--text);border-color:var(--neon-dim);box-shadow:inset 0 0 14px #00ff9c0b}.mini-btn.ghost{color:var(--muted);background:transparent;border-color:var(--line-2)}.editor-pane{grid-area:editor}.side{grid-area:side}.output-pane{grid-area:output}.editor-pane,.panel,.output-pane{background:var(--panel);border:1px solid var(--line-2);border-radius:var(--radius);box-shadow:inset 0 0 18px #00ff9c05}.editor-pane{display:flex;flex-direction:column;min-height:0;overflow:hidden}.pane-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,var(--panel-2),transparent)}.pane-head-right{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.hint{color:var(--dim);font-size:12px}.tabs,.out-tabs{display:inline-flex;gap:4px}.tab,.fmt{font-family:var(--mono);font-size:13px;letter-spacing:.6px;font-weight:600;padding:8px 12px;border-radius:6px;cursor:pointer;background:transparent;color:var(--muted);border:1px solid transparent}.tab:hover,.fmt:hover{color:var(--text);border-color:#00ff9c2e;box-shadow:inset 0 0 14px #00ff9c09}.tab.active{color:var(--neon);background:#00ff9c1a;border-color:#00ff9c4d}.fmt.active{color:var(--cyan);background:#35e0ff1a;border-color:#35e0ff4d}.flag.active,.tab.active,.fmt.active{text-shadow:0 0 12px currentColor}.chk{display:inline-flex;align-items:center;gap:7px;color:var(--muted);font-size:13px;cursor:pointer;user-select:none}.chk input{accent-color:var(--neon)}.chk input{width:16px;height:16px}.chk span{white-space:nowrap}.editor{position:relative;flex:1;min-height:0;overflow:hidden}.backdrop,#input{position:absolute;inset:0;margin:0;border:0;padding:var(--ed-pad);font-family:var(--mono);font-size:var(--ed-size);line-height:var(--ed-lh);white-space:pre;overflow:auto;tab-size:4;letter-spacing:0}.backdrop{z-index:1;pointer-events:none;overflow:hidden}.highlights{color:transparent}#input{z-index:2;background:transparent;color:var(--text);resize:none;outline:none;caret-color:var(--neon)}#input::selection{background:#35e0ff4d}.editor.testing #input{caret-color:transparent;color:var(--text)}mark{background:transparent;color:inherit;border-radius:3px}mark.tpl{background:#ffffff0b;box-shadow:inset 0 -1px #00ff9c40}mark.hit{background:#35e0ff14}mark.grp{border-radius:3px;box-shadow:inset 0 0 0 1px #ffffff14}.grp-0{background:#00ff9c47}.grp-1{background:#35e0ff47}.grp-2{background:#ff4d8d4d}.grp-3{background:#ffcf4d4d}.grp-4{background:#a988ff52}.grp-5{background:#58e08a47}.grp-6{background:#ff8a5c4d}.grp-7{background:#4dc4ff47}.side{display:flex;flex-direction:column;gap:10px;min-height:0;overflow:hidden}.panel{display:flex;flex-direction:column;min-height:0;overflow:hidden}.panel.grow{flex:1}#panelCaptures{max-height:40%}#panelExplain{max-height:26%}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 12px;border-bottom:1px solid var(--line);font-size:13px;letter-spacing:1px;text-transform:uppercase;color:var(--cyan);background:linear-gradient(180deg,var(--panel-2),transparent)}.panel:hover,.editor-pane:hover,.output-pane:hover{border-color:#00ff9c47}.panel-head span:first-child:before,.pane-head:before{content:"";width:5px;height:5px;display:inline-block;margin-right:7px;background:var(--neon);box-shadow:0 0 10px var(--neon);vertical-align:middle}.panel-body{padding:12px;overflow:auto;min-height:0}.badge{min-width:24px;text-align:center;padding:2px 8px;border-radius:20px;background:#00ff9c24;color:var(--neon);font-size:12px;letter-spacing:0}.empty{color:var(--dim);font-size:13px;text-align:center;padding:18px 8px;line-height:1.6}.empty b{color:var(--muted)}.cap{background:var(--bg-2);border:1px solid var(--line);border-radius:7px;padding:10px;margin-bottom:9px}.cap-top{display:flex;align-items:center;gap:8px}.swatch{width:12px;height:12px;border-radius:3px;flex:none;box-shadow:0 0 8px #0006}.cap-idx{color:var(--muted);font-size:13px;font-weight:700}.cap-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text);font-size:13px;background:var(--bg);padding:3px 7px;border-radius:4px}.cap-del{margin-left:auto;background:transparent;border:0;color:var(--dim);cursor:pointer;font-size:16px;padding:3px 5px}.cap-del:hover{color:var(--red)}.cap-row{display:flex;gap:6px;margin-top:7px}.mono{font-family:var(--mono)}.cap-name,.cap-matcher,.cap-suggest,.lib-search{background:var(--bg);border:1px solid var(--line-2);color:var(--text);border-radius:5px;padding:7px 9px;font-size:13px;outline:none}.cap-name{flex:1;min-width:0}.cap-name:focus,.cap-matcher:focus,.lib-search:focus{border-color:var(--neon-dim);box-shadow:0 0 0 2px #00ff9c1a}.cap-suggest{flex:none;max-width:150px;cursor:pointer}.cap-matcher{width:100%;margin-top:6px;color:var(--cyan)}.ex-row{display:flex;gap:10px;padding:3px 2px;border-bottom:1px dashed var(--line)}.ex-row:last-child{border-bottom:0}.ex-sym{color:var(--neon);font-size:13px;white-space:pre;flex:none;min-width:62px}.ex-desc{color:var(--muted);font-size:13px;line-height:1.5}.lib-search{max-width:140px;text-transform:none;letter-spacing:0}.lib-cat{margin-bottom:10px}.lib-cat-head{color:var(--dim);font-size:11px;letter-spacing:1.5px;text-transform:uppercase;margin:2px 2px 7px}.lib-item{display:flex;flex-direction:column;gap:2px;width:100%;text-align:left;background:var(--bg-2);border:1px solid var(--line);border-radius:6px;padding:8px 9px;margin-bottom:6px;cursor:pointer;transition:all .1s ease}.lib-item:hover{border-color:var(--neon-dim);background:#00ff9c0d;box-shadow:inset 0 0 16px #00ff9c09}.lib-label{color:var(--text);font-size:13px}.lib-re{color:var(--muted);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.output-pane{display:flex;align-items:stretch;gap:0;overflow:hidden}.out-tabs{padding:10px;border-right:1px solid var(--line);flex-direction:column;gap:4px}.out-tabs .fmt{text-align:left}.out-body{flex:1;min-width:0;padding:14px 16px;overflow:auto;display:flex;align-items:center}.out-regex{font-family:var(--mono);font-size:15px;color:var(--neon);white-space:pre-wrap;word-break:break-all;line-height:1.6}.out-regex .dim{color:var(--dim)}.out-actions{display:flex;flex-direction:column;align-items:flex-end;justify-content:center;gap:8px;padding:10px 12px;border-left:1px solid var(--line)}.out-status{font-size:12px;color:var(--dim);min-height:16px;text-align:right;max-width:240px}.out-status.ok{color:var(--neon)}.out-status.warn{color:var(--amber)}.out-status.err{color:var(--red)}.statusbar{grid-area:status;display:flex;align-items:center;gap:18px;padding:8px 12px;font-size:12px;letter-spacing:.4px;color:var(--muted);background:var(--panel);border:1px solid var(--line-2);border-radius:var(--radius)}.statusbar span{white-space:nowrap}.sb-spacer{flex:1}.sb-brand{color:var(--dim);letter-spacing:2px}.st-ok{color:var(--neon)}.st-err{color:var(--red)}#stMode{color:var(--cyan);font-weight:700}@media (max-width: 1100px){.app{grid-template-columns:1fr;grid-template-rows:auto auto minmax(380px,52vh) auto auto auto;grid-template-areas:"title" "guide" "editor" "side" "output" "status";height:auto;min-height:100vh}.side,#panelCaptures,#panelExplain{max-height:none}}@media (max-width: 640px){.titlebar,.pane-head,.statusbar{flex-wrap:wrap}.tb-right,.pane-head-right{width:100%;justify-content:flex-start}.onboard{align-items:flex-start;flex-direction:column}.onboard-actions{width:100%;justify-content:flex-end}.out-actions{align-items:stretch}.output-pane{flex-direction:column}.out-tabs{flex-direction:row;flex-wrap:wrap;border-right:0;border-bottom:1px solid var(--line)}}
