:root{--bg: #0d1117;--bg-toolbar: #161b22;--bg-sidebar: #0d1117;--bg-editor: #0d1117;--bg-right: #0d1117;--bg-raised: #1c2128;--bg-code: #0a0e14;--bg-code-deep: #08090d;--border: #21262d;--border-strong: #30363d;--text: #e6edf3;--text-muted: #7d8590;--accent: #79a8ff;--accent-warm: #ffa657;--ok: #3fb950;--err: #f85149;--warn: #d29922;--ok-bg-soft: rgba(63,185,80,.12);--ok-bg-medium: rgba(63,185,80,.18);--ok-bg-strong: rgba(63,185,80,.55);--ok-border: rgba(63,185,80,.35);--err-bg-soft: rgba(248,81,73,.1);--err-bg-medium: rgba(248,81,73,.16);--err-border: rgba(248,81,73,.35);--accent-bg-soft: rgba(121,168,255,.1);--accent-bg-medium: rgba(121,168,255,.18);--accent-border: rgba(121,168,255,.4);--hover-soft: var(--hover-soft);--hover-medium: var(--hover-medium);--hover-strong: var(--hover-strong);--hover-inset: var(--hover-inset);--font-mono: "SFMono-Regular", "Consolas", "Liberation Mono", ui-monospace, Menlo, monospace;font-family:Space Grotesk,system-ui,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{background:var(--bg);color:var(--text)}button{font:inherit;border:none;background:none;cursor:pointer;color:inherit}ul{list-style:none}.ide{display:flex;flex-direction:column;height:100vh;overflow:hidden}.toolbar{display:flex;align-items:center;height:40px;padding:0 12px;background:var(--bg-toolbar);border-bottom:1px solid var(--border);flex-shrink:0;gap:4px;z-index:20}.toolbar-brand{display:inline-flex;align-items:center;gap:8px;padding:0 6px 0 2px;text-decoration:none;color:var(--text);white-space:nowrap;border-radius:6px;transition:background .12s}.toolbar-brand:hover{background:var(--hover-soft)}.toolbar-brand-mark{width:18px;height:18px;color:var(--accent);flex-shrink:0}.toolbar-brand-text{font-family:Space Grotesk,system-ui,sans-serif;font-size:.95rem;font-weight:600;letter-spacing:-.01em;line-height:1}.toolbar-brand-rego{color:var(--text)}.toolbar-brand-dot{color:var(--accent);margin:0 -.02em}.toolbar-brand-run{color:var(--text-muted);font-weight:500}.toolbar-divider{width:1px;height:18px;background:var(--border-strong);margin:0 6px;flex-shrink:0}.toolbar-menus{display:flex;align-items:center;gap:2px}.menu-btn{height:28px;padding:0 10px;border-radius:5px;font-size:.82rem;color:var(--text-muted);transition:background .1s,color .1s;white-space:nowrap}.menu-btn:hover:not(:disabled){background:var(--hover-strong);color:var(--text)}.menu-btn:disabled{opacity:.4;cursor:default}.menu-btn-active{background:var(--hover-strong);color:var(--text)}.menu-btn-link{display:inline-flex;align-items:center;text-decoration:none}.menu-btn-icon{display:inline-flex;align-items:center;justify-content:center;min-width:28px;padding:0 8px;text-align:center}.github-mark{width:14px;height:14px;color:currentColor}.menu-section-label{padding:6px 12px 4px;font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted)}.menu-item-submenu-wrap{position:relative}.menu-item-submenu{display:flex;align-items:center;justify-content:space-between;gap:8px}.menu-item-active{background:var(--hover-strong)}.submenu-arrow{font-size:.7rem;color:var(--text-muted)}.menu-submenu{top:-4px;left:calc(100% + 4px);min-width:220px}.chevron{font-size:.65rem;opacity:.7}.menu-group{position:relative}.menu-dropdown{position:absolute;top:calc(100% + 4px);left:0;min-width:170px;background:var(--bg-raised);border:1px solid var(--border-strong);border-radius:8px;padding:4px;z-index:100;box-shadow:0 8px 32px #00000080}.menu-item{display:block;width:100%;text-align:left;padding:7px 12px;border-radius:5px;font-size:.82rem;color:var(--text);transition:background 80ms}.menu-item:hover{background:var(--hover-strong)}.menu-item-example{display:flex;flex-direction:column;gap:2px;padding:7px 12px}.menu-item-name{font-size:.82rem;color:var(--text);font-weight:500}.menu-item-desc{font-size:.72rem;color:var(--text-muted);opacity:.75}.menu-sep{height:1px;background:var(--border);margin:4px 0}.toolbar-spacer{flex:1}.toolbar-right{display:flex;align-items:center;gap:10px}.share-popover{position:absolute;top:calc(100% + 4px);left:0;display:flex;flex-direction:column;gap:6px;width:360px;padding:10px 12px 12px;background:var(--bg-raised);border:1px solid var(--border-strong);border-radius:8px;z-index:100;box-shadow:0 8px 32px #00000080}.share-popover-label{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted)}.share-popover-input{width:100%;padding:7px 10px;background:var(--bg);border:1px solid var(--border-strong);border-radius:5px;color:var(--text);font-family:var(--font-mono);font-size:.78rem}.share-popover-input:focus{outline:1px solid var(--accent)}.share-popover-copy{align-self:flex-end;height:28px;padding:0 14px;border-radius:5px;background:var(--accent);color:#0d1117;font-weight:600;font-size:.78rem;transition:opacity .12s}.share-popover-copy:hover{opacity:.87}.share-popover-loading,.share-popover-error{font-size:.8rem;color:var(--text-muted);padding:4px 0}.share-popover-error{color:var(--err)}.dirty-dot{font-size:.6rem;color:var(--accent-warm);line-height:1}.run-btn{height:30px;padding:0 14px;border-radius:6px;background:var(--ok);color:#0d1117;font-weight:700;font-size:.82rem;letter-spacing:.02em;transition:opacity .12s,transform 80ms}.run-btn:hover:not(:disabled){opacity:.87;transform:translateY(-1px)}.run-btn:active:not(:disabled){transform:translateY(0)}.run-btn:disabled{opacity:.35;cursor:default}.ide-body{display:flex;flex:1;min-height:0;overflow:hidden}.sidebar{flex-shrink:0;display:flex;flex-direction:column;background:var(--bg-sidebar);overflow-y:auto;padding-top:8px}.sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:2px 8px 4px 14px}.sidebar-heading{font-size:.67rem;font-weight:700;letter-spacing:.15em;color:var(--text-muted);text-transform:uppercase}.sidebar-add-btn{width:20px;height:20px;display:flex;align-items:center;justify-content:center;font-size:1rem;line-height:1;color:var(--text-muted);border-radius:3px;transition:background 80ms,color 80ms}.sidebar-add-btn:hover{background:var(--hover-strong);color:var(--text)}.explorer-empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:28px 16px 16px}.explorer-empty-msg{font-size:.8rem;color:var(--text-muted);opacity:.7}.explorer-empty-btn{font-size:.78rem;color:var(--accent);border:1px solid var(--accent);border-radius:4px;padding:4px 10px;transition:background 80ms}.explorer-empty-btn:hover{background:#79a8ff1f}.sidebar-group-label{padding:8px 14px 4px;font-size:.71rem;font-weight:600;color:var(--text-muted);letter-spacing:.04em;opacity:.75}.file-tree{display:flex;flex-direction:column}.file-item-row{display:flex;align-items:center;border-left:2px solid transparent}.file-item-row:hover{background:#ffffff0d}.file-item-row-active{background:#79a8ff1a;border-left-color:var(--accent)}.file-item{display:flex;align-items:center;gap:7px;flex:1;padding:5px 6px 5px 14px;font-size:.85rem;color:var(--text-muted);text-align:left;transition:color 80ms;min-width:0}.file-item-row:hover .file-item,.file-item-row-active .file-item{color:var(--text)}.file-action-btn{flex-shrink:0;width:20px;height:20px;display:flex;align-items:center;justify-content:center;font-size:.9rem;line-height:1;color:var(--text-muted);opacity:0;border-radius:3px;transition:opacity 80ms,background 80ms,color 80ms}.file-item-row:hover .file-action-btn,.file-item-row-active .file-action-btn{opacity:.7}.file-action-btn:hover{opacity:1;background:#ffffff1a;color:var(--text)}.file-delete-btn{margin-right:4px}.file-delete-btn:hover{background:#ff505026;color:#f87171}.file-menu-wrap{position:relative;flex-shrink:0}.file-menu{position:absolute;top:24px;right:0;min-width:160px;padding:4px;background:var(--bg-raised);border:1px solid var(--border-strong);border-radius:6px;box-shadow:0 8px 24px #00000073;z-index:80;display:flex;flex-direction:column;gap:1px}.file-menu-item{text-align:left;padding:6px 10px;border-radius:4px;font-size:.8rem;color:var(--text);background:transparent;transition:background 80ms,color 80ms}.file-menu-item:hover{background:var(--hover-strong)}.file-menu-item-danger{color:#f87171}.file-menu-item-danger:hover{background:#f871711f}.file-menu-sep{height:1px;background:var(--border);margin:4px 2px}.new-file-row{padding:4px 8px 4px 18px}.new-file-input{width:100%;background:var(--bg-editor);border:1px solid var(--accent);border-radius:3px;color:var(--text);font-family:var(--font-mono);font-size:.82rem;padding:3px 7px;outline:none;box-sizing:border-box}.new-file-input-invalid{border-color:#f87171}.file-item-active{background:#79a8ff1a;color:var(--text);border-left-color:var(--accent);padding-left:20px}.file-icon{font-size:.72rem;opacity:.55;font-family:monospace;min-width:14px;flex-shrink:0}.file-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.resize-handle{width:4px;flex-shrink:0;cursor:col-resize;background:var(--border);transition:background .12s;position:relative;z-index:10}.resize-handle:after{content:"";position:absolute;inset:0 -4px}.resize-handle:hover{background:var(--accent)}.editor-area{flex:1;display:flex;flex-direction:column;min-width:0;background:var(--bg-editor)}.editor-tabbar{display:flex;align-items:stretch;background:var(--bg-toolbar);border-bottom:1px solid var(--border);height:36px;flex-shrink:0;overflow-x:auto;scrollbar-width:thin}.editor-tabbar::-webkit-scrollbar{height:4px}.editor-tabbar::-webkit-scrollbar-thumb{background:var(--hover-strong);border-radius:2px}.editor-tab{position:relative;display:inline-flex;align-items:center;gap:6px;padding:0 8px 0 14px;font-size:.82rem;color:var(--text-muted);border-right:1px solid var(--border);border-bottom:2px solid transparent;white-space:nowrap;cursor:pointer;user-select:none;transition:background .1s,color .1s;max-width:220px}.editor-tab:hover{color:var(--text);background:#ffffff08}.editor-tab-label{overflow:hidden;text-overflow:ellipsis}.editor-tab-active{color:var(--text);background:var(--bg-editor);border-bottom-color:var(--accent)}.editor-tab-active:hover{background:var(--bg-editor)}.editor-tab-close{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;margin-left:2px;border-radius:4px;background:transparent;color:var(--text-muted);font-size:.7rem;line-height:1;opacity:0;transition:opacity .1s,background .1s,color .1s}.editor-tab:hover .editor-tab-close,.editor-tab-active .editor-tab-close,.editor-tab-close:focus-visible{opacity:1}.editor-tab-close:hover{background:#ffffff1a;color:var(--text)}.tab-dirty-dot{font-size:.55rem;color:var(--accent-warm);line-height:1}.editor-content{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column}.editor-content .cm-editor,.right-content .cm-editor{height:100%;flex:1}.editor-content>div,.right-content>div{height:100%;display:flex;flex-direction:column}.editor-statusbar{display:flex;align-items:center;gap:0;height:24px;padding:0 14px;background:var(--bg-toolbar);border-top:1px solid var(--border);font-size:.75rem;color:var(--text-muted);flex-shrink:0}.statusbar-sep{display:inline-block;width:1px;height:12px;background:var(--border-strong);margin:0 10px}.statusbar-ok{color:var(--ok)}.statusbar-warn{color:var(--warn)}.right-panel{flex-shrink:0;display:flex;flex-direction:column;min-height:0;background:var(--bg-right)}.right-tabbar{display:flex;align-items:stretch;background:var(--bg-toolbar);border-bottom:1px solid var(--border);height:38px;flex-shrink:0;padding:0 4px;gap:2px}.right-tab{position:relative;flex:1;font-size:.72rem;font-weight:700;letter-spacing:.12em;color:var(--text-muted);transition:color .12s,background .12s;border-radius:5px;margin:4px 0}.right-tab:hover{color:var(--text);background:var(--hover-soft)}.right-tab-active{color:var(--text);background:#79a8ff1a}.right-tab-active:after{content:"";position:absolute;left:18%;right:18%;bottom:-4px;height:2px;background:var(--accent);border-radius:2px 2px 0 0}.right-content{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column}.editor-empty{flex:1;display:flex;align-items:center;justify-content:center;padding:24px;color:var(--text-muted);user-select:none}.editor-empty-content{display:flex;flex-direction:column;align-items:center;gap:12px;max-width:420px;text-align:center}.editor-empty-title{font-family:var(--font-serif);font-size:2rem;color:var(--text);opacity:.85;line-height:1}.editor-empty-subtitle{font-size:.82rem;color:var(--text-muted);opacity:.7}.editor-empty-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;align-items:center;margin-top:4px}.editor-empty-or{font-size:.75rem;color:var(--text-muted);opacity:.6;width:100%;text-align:center}.editor-empty-btn-primary{background:var(--accent);color:#0d1117;font-size:.82rem;font-weight:600;border-radius:4px;padding:6px 14px;transition:opacity 80ms}.editor-empty-btn-primary:hover{opacity:.85}.editor-empty-example-btn{font-size:.78rem;color:var(--text-muted);border:1px solid var(--border);border-radius:4px;padding:4px 10px;transition:background 80ms,color 80ms}.editor-empty-example-btn:hover{background:var(--hover-medium);color:var(--text)}.panel-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:24px;text-align:center;color:var(--text-muted);user-select:none}.panel-empty-title{font-size:.9rem;font-weight:600;color:var(--text);opacity:.7}.panel-empty-hint{font-size:.78rem;opacity:.6;max-width:200px}.panel-empty-hint code{font-family:var(--font-mono);font-size:.76rem;background:#ffffff12;border-radius:3px;padding:1px 5px}.panel-empty-btn{font-size:.78rem;color:var(--accent);border:1px solid var(--accent);border-radius:4px;padding:4px 10px;margin-top:4px;transition:background 80ms}.panel-empty-btn:hover{background:#79a8ff1f}.output-panel{flex:1;overflow-y:auto;padding:18px 16px}.output-verdict{display:inline-flex;align-items:center;gap:7px;padding:5px 12px 5px 11px;border-radius:999px;font-size:.72rem;font-weight:700;letter-spacing:.14em;margin-bottom:14px;background:#3fb9501f;color:var(--ok);border:1px solid rgba(63,185,80,.3)}.output-verdict:before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;box-shadow:0 0 6px currentColor}.output-verdict-allow{background:#3fb95024;color:var(--ok);border-color:#3fb95059}.output-verdict-deny,.output-verdict-error{background:#f851491f;color:var(--err);border-color:#f8514959}.output-verdict-idle{background:#ffffff0d;color:var(--text-muted);border-color:var(--border-strong)}.output-verdict-idle:before{box-shadow:none;opacity:.5}.output-head{margin-bottom:16px}.output-headline{font-size:1.15rem;font-weight:600;margin:4px 0;letter-spacing:-.01em;line-height:1.3}.output-summary{font-size:.84rem;color:var(--text-muted);line-height:1.55}.output-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:6px 14px;margin:16px 0 4px;padding:10px 12px;background:#ffffff06;border:1px solid var(--border);border-radius:6px}.output-fact{display:flex;align-items:baseline;justify-content:space-between;gap:10px;font-size:.78rem;min-width:0}.output-fact dt{color:var(--text-muted);font-size:.68rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap}.output-fact dd{font-family:var(--font-mono);color:var(--text);font-size:.78rem;text-align:right;word-break:break-all;min-width:0}.output-section{margin-top:18px}.output-section-label{font-size:.67rem;font-weight:700;letter-spacing:.14em;color:var(--text-muted);margin-bottom:8px;text-transform:uppercase}.output-section-label-warn{color:var(--warn)}.output-section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.output-section-header .output-section-label{margin-bottom:0}.coverage-toggle{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 10px;border-radius:12px;background:var(--hover-soft);border:1px solid var(--border-strong);color:var(--text-muted);font-size:.72rem;letter-spacing:.02em;transition:background .12s,color .12s,border-color .12s}.coverage-toggle:hover{background:var(--hover-strong);color:var(--text)}.coverage-toggle-dot{width:8px;height:8px;border-radius:50%;background:var(--text-muted);transition:background .12s,box-shadow .12s}.coverage-toggle-on{color:var(--text);border-color:#3fb9508c;background:#3fb9501a}.coverage-toggle-on .coverage-toggle-dot{background:var(--ok);box-shadow:0 0 6px #3fb950b3}.coverage-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:10px}.coverage-row{font-size:.78rem}.coverage-row-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.coverage-path{font-family:var(--font-mono);color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.coverage-pct{font-variant-numeric:tabular-nums;color:var(--text-muted)}.coverage-bar{position:relative;height:4px;margin:4px 0;background:var(--hover-medium);border-radius:2px;overflow:hidden}.coverage-bar-fill{display:block;height:100%;background:linear-gradient(90deg,#3fb950d9,#3fb9508c)}.coverage-counts{font-family:var(--font-mono);font-size:.72rem;color:var(--text-muted)}.output-trace-list{padding-left:14px;list-style:disc}.output-trace-list li{font-size:.8rem;font-family:var(--font-mono);color:var(--text-muted);line-height:1.85;word-break:break-word}.output-diagnostics li{color:var(--err)}.editor-loading{flex:1;display:flex;align-items:center;justify-content:center;color:var(--text-muted);font-size:.82rem;letter-spacing:.06em}.dir-row{display:flex;align-items:center;gap:4px;padding:4px 6px 4px 8px;font-size:.82rem;color:var(--text-muted);cursor:pointer;user-select:none}.dir-row:hover{background:var(--hover-soft);color:var(--text)}.dir-chevron{display:inline-block;width:12px;font-size:.7rem;opacity:.7;flex-shrink:0}.dir-name{flex:1;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dir-add-btn{width:18px;height:18px;display:flex;align-items:center;justify-content:center;font-size:.9rem;line-height:1;color:var(--text-muted);border-radius:3px;opacity:0;transition:opacity 80ms,background 80ms,color 80ms}.dir-row:hover .dir-add-btn{opacity:1}.dir-add-btn:hover{background:var(--hover-strong);color:var(--text)}.sidebar-warning{margin:12px 10px;padding:10px 12px;border-radius:6px;background:#f8514914;border:1px solid rgba(248,81,73,.3);font-size:.75rem;color:var(--err)}.sidebar-warning-title{font-weight:600;margin-bottom:4px;letter-spacing:.04em;text-transform:uppercase;font-size:.65rem}.sidebar-warning-item{line-height:1.5;color:#f1bcb9;word-break:break-word}.sidebar-warning-item strong{color:var(--err)}.entrypoint-picker{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 4px 0 10px;border:1px solid var(--border-strong);border-radius:6px;background:#ffffff06;transition:border-color .12s,background .12s}.entrypoint-picker:hover{border-color:#79a8ff66;background:var(--hover-soft)}.entrypoint-picker:focus-within{border-color:var(--accent);background:#79a8ff0f}.entrypoint-label{font-size:.62rem;font-weight:700;letter-spacing:.14em;color:var(--text-muted);text-transform:uppercase}.entrypoint-picker select{background:transparent;color:var(--text);border:none;font-family:var(--font-mono);font-size:.78rem;outline:none;cursor:pointer;max-width:220px;padding-right:4px}.entrypoint-picker select option{background:var(--bg-raised);color:var(--text)}.runtime-label{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:11px;background:var(--hover-soft);font-family:var(--font-mono);font-size:.72rem;font-variant-numeric:tabular-nums;color:var(--text-muted)}.run-btn-secondary{background:#79a8ff26;color:var(--accent);border:1px solid rgba(121,168,255,.4);font-weight:600}.run-btn-secondary:hover:not(:disabled){background:#79a8ff40;opacity:1}.right-tab{display:inline-flex;align-items:center;justify-content:center;gap:6px}.tab-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:16px;padding:0 5px;font-size:.65rem;font-weight:700;background:#79a8ff2e;color:var(--accent);border-radius:8px;letter-spacing:0}.input-tab{flex:1;display:flex;flex-direction:column;min-height:0}.input-tab-header{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:12px 14px 10px;border-bottom:1px solid var(--border);flex-shrink:0}.input-tab-title{font-size:.75rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted)}.input-tab-meta{display:inline-flex;align-items:center;gap:8px;min-width:0}.input-tab-path{font-family:var(--font-mono);font-size:.74rem;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.input-tab-lang{display:inline-flex;align-items:center;height:18px;padding:0 7px;border-radius:9px;background:#79a8ff1f;color:var(--accent);font-size:.62rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.input-tab-editor{flex:1;min-height:0;overflow:hidden}.data-tab{flex:1;display:flex;flex-direction:column;min-height:0;overflow-y:auto;padding:12px 14px 18px}.data-tab-header{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:8px}.data-tab-title{font-size:.75rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted)}.data-tab-meta{font-size:.72rem;color:var(--text-muted);opacity:.7}.data-source-list{display:flex;flex-direction:column;gap:3px;margin-bottom:4px}.data-source-item button{width:100%;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 10px;border-radius:5px;font-size:.78rem;color:var(--text-muted);text-align:left;border:1px solid transparent;transition:background .1s,color .1s,border-color .1s}.data-source-item button:hover{background:#ffffff0d;color:var(--text)}.data-source-item-active button{background:#79a8ff1a;color:var(--text)}.data-source-path{font-family:var(--font-mono);font-size:.76rem}.data-source-mount{font-family:var(--font-mono);font-size:.7rem;color:var(--accent);opacity:.85;white-space:nowrap}.data-editor-wrap{display:flex;flex-direction:column;margin-bottom:14px;min-height:180px;flex:1}.data-editor-label{font-size:.7rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);margin-bottom:6px}.data-editor-wrap>div:not(.data-editor-label){flex:1;min-height:0;border:1px solid var(--border);border-radius:4px;overflow:hidden}.data-preview-wrap{display:flex;flex-direction:column;margin-top:14px}.data-preview-wrap-primary{margin-top:4px;margin-bottom:16px}.data-preview{background:var(--bg-code);border:1px solid var(--border);border-radius:6px;padding:12px 14px;font-family:var(--font-mono);font-size:.78rem;color:var(--text);line-height:1.55;max-height:240px;overflow:auto;white-space:pre}.data-preview-primary{max-height:clamp(320px,55vh,640px);min-height:260px;border-color:var(--border-strong);background:var(--bg-code-deep)}.data-sources-section{margin-top:4px}.data-section-label{font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:var(--text-muted);margin-bottom:6px}.data-editor-warn{color:var(--err);font-weight:600}.output-raw{background:var(--bg-code);border:1px solid var(--border);border-radius:6px;padding:12px 14px;font-family:var(--font-mono);font-size:.78rem;line-height:1.55;color:var(--text);max-height:240px;overflow:auto;white-space:pre}.output-raw-primary{max-height:clamp(280px,50vh,600px);min-height:220px;font-size:.82rem;border-color:var(--border-strong);background:var(--bg-code-deep);box-shadow:0 1px 0 var(--hover-inset) inset}.output-section-primary{margin-bottom:14px}.copy-btn{display:inline-flex;align-items:center;height:22px;padding:0 10px;border-radius:11px;background:var(--hover-soft);border:1px solid var(--border-strong);color:var(--text-muted);font-size:.7rem;font-weight:600;letter-spacing:.04em;transition:background .12s,color .12s,border-color .12s}.copy-btn:hover{background:var(--hover-strong);color:var(--text);border-color:#79a8ff66}.output-collapse{margin:12px 0;border:1px solid var(--border);border-radius:6px;background:var(--hover-inset)}.output-collapse[open]{background:#ffffff08}.output-collapse-summary{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;cursor:pointer;list-style:none;font-size:.72rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);user-select:none}.output-collapse-summary::-webkit-details-marker{display:none}.output-collapse-summary:before{content:"▸";display:inline-block;margin-right:8px;font-size:.75rem;transition:transform .12s}.output-collapse[open]>.output-collapse-summary:before{transform:rotate(90deg)}.output-collapse-summary:hover{color:var(--text)}.output-collapse-count{font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:0;color:var(--text-muted)}.output-collapse>ul{padding:0 14px 12px 30px}.query-section{margin-top:18px}.test-list{display:flex;flex-direction:column;gap:5px;margin-top:6px}.test-row{display:grid;grid-template-columns:20px 1fr;align-items:center;gap:8px 10px;padding:8px 11px;border-radius:6px;border:1px solid var(--border);background:#ffffff05;transition:background .12s,border-color .12s,transform .12s}.test-row:hover{background:var(--hover-soft);transform:translate(1px)}.test-row-pass{border-left:3px solid rgba(63,185,80,.55);padding-left:9px}.test-row-fail{border-left:3px solid rgba(248,81,73,.6);padding-left:9px}.test-row-error{border-left:3px solid rgba(248,81,73,.85);padding-left:9px;background:#f851490d}.test-status{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;font-size:.72rem;font-weight:700;line-height:1}.test-status-pass{color:var(--ok);background:#3fb95029}.test-status-fail{color:var(--err);background:#f8514929}.test-status-error{color:var(--err);background:#f8514938}.test-id{min-width:0}.test-rule{font-family:var(--font-mono);font-size:.8rem;color:var(--text);word-break:break-word}.test-pkg{font-family:var(--font-mono);font-size:.7rem;color:var(--text-muted);opacity:.7}.test-msg{grid-column:1 / -1;font-family:var(--font-mono);font-size:.74rem;color:var(--err);background:#f851490f;border-radius:3px;padding:6px 8px;word-break:break-word;line-height:1.5}.test-empty{padding:12px;color:var(--text-muted);font-size:.82rem;text-align:center}.file-issue-badge{display:inline-flex;align-items:center;justify-content:center;min-width:16px;height:14px;padding:0 4px;margin-left:6px;font-size:.62rem;font-weight:700;font-family:var(--font-mono);background:#f851492e;color:var(--err);border-radius:7px;flex-shrink:0}.file-issue-badge-data{background:#d299222e;color:var(--warn)}.lint-summary{display:inline-flex;align-items:center;height:22px;padding:0 8px;font-size:.72rem;font-weight:600;color:var(--warn);background:#d299221f;border:1px solid rgba(210,153,34,.3);border-radius:11px}.shortcuts-overlay{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:#0000008c;z-index:1000;padding:24px}.shortcuts-card{background:var(--bg-toolbar);border:1px solid var(--border-strong);border-radius:8px;min-width:360px;max-width:480px;width:100%;padding:20px 24px;color:var(--text);box-shadow:0 8px 32px #00000080}.shortcuts-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.shortcuts-header h2{margin:0;font-size:1rem;font-weight:600}.shortcuts-close{background:transparent;border:none;color:var(--text-muted);font-size:1.1rem;cursor:pointer;padding:4px 8px;border-radius:4px}.shortcuts-close:hover{background:var(--hover-strong);color:var(--text)}.shortcuts-list{list-style:none;margin:0;padding:0;font-size:.85rem}.shortcuts-list li{display:flex;align-items:baseline;gap:14px;padding:6px 0}.shortcuts-list kbd{font-family:var(--font-mono);font-size:.75rem;background:var(--hover-medium);border:1px solid var(--border-strong);border-radius:4px;padding:2px 6px;min-width:80px;text-align:center;color:var(--text)}.sidebar-collapsed{overflow:hidden;padding:0;border-right:1px solid transparent}.sidebar-collapsed>*{display:none}.toast{position:fixed;top:52px;left:50%;transform:translate(-50%);z-index:200;padding:8px 16px;background:var(--bg-raised);color:var(--text);border:1px solid var(--border-strong);border-radius:6px;box-shadow:0 8px 24px #00000080;font-size:.82rem;animation:toast-in .18s ease-out}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,-8px)}to{opacity:1;transform:translate(-50%)}}.query-row{display:flex;gap:8px;margin-bottom:8px}.query-input{flex:1;background:var(--bg-editor);border:1px solid var(--border-strong);border-radius:4px;padding:6px 10px;font-family:var(--font-mono);font-size:.8rem;color:var(--text);outline:none;min-width:0}.query-input:focus{border-color:var(--accent)}.query-run-btn{padding:0 12px;font-size:.78rem;font-weight:600;color:var(--accent);background:#79a8ff1a;border:1px solid rgba(121,168,255,.4);border-radius:4px;transition:background 80ms}.query-run-btn:hover:not(:disabled){background:#79a8ff33}.query-run-btn:disabled{opacity:.4;cursor:default}.output-raw-error{border-color:#f8514966;color:#f1bcb9}.error-boundary{display:flex;align-items:center;justify-content:center;height:100vh;padding:24px;background:var(--bg)}.error-boundary-card{max-width:560px;padding:24px 28px;border-radius:8px;background:#f851490f;border:1px solid rgba(248,81,73,.3);color:var(--text)}.error-boundary-card h2{margin:0 0 12px;color:var(--err)}.error-boundary-msg{font-family:var(--font-mono);font-size:.85rem;white-space:pre-wrap;word-break:break-word;margin:0 0 16px;color:#f1bcb9}.error-boundary-actions{display:flex;gap:8px;margin-bottom:12px}.error-boundary-hint{margin:0;font-size:.8rem;opacity:.75}.docs-overlay{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:#0009;z-index:1000;padding:24px}.docs-card{display:flex;flex-direction:column;background:var(--bg-toolbar);border:1px solid var(--border-strong);border-radius:10px;width:100%;max-width:960px;max-height:90vh;color:var(--text);box-shadow:0 12px 48px #0009;overflow:hidden}.docs-header{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-bottom:1px solid var(--border);flex-shrink:0}.docs-header h2{margin:0;font-size:1.05rem;font-weight:600}.docs-close{background:transparent;border:none;color:var(--text-muted);font-size:1.1rem;cursor:pointer;padding:4px 10px;border-radius:4px}.docs-close:hover{background:var(--hover-strong);color:var(--text)}.docs-body{display:flex;flex:1;min-height:0}.docs-toc{flex-shrink:0;width:200px;border-right:1px solid var(--border);padding:16px 8px 16px 16px;overflow-y:auto;display:flex;flex-direction:column;gap:2px;font-size:.82rem}.docs-toc a{display:block;padding:5px 10px;border-radius:4px;color:var(--text-muted);text-decoration:none;transition:background .1s,color .1s}.docs-toc a:hover{background:var(--hover-medium);color:var(--text)}.docs-content{flex:1;padding:18px 28px 28px;overflow-y:auto;font-size:.9rem;line-height:1.55}.docs-content section+section{margin-top:22px}.docs-content h3{margin:0 0 8px;font-size:1rem;font-weight:600;color:var(--text);scroll-margin-top:12px}.docs-content p{margin:0 0 8px;color:var(--text)}.docs-content ul{list-style:disc;padding-left:22px;margin:4px 0 8px;color:var(--text)}.docs-content li{margin:3px 0}.docs-content a{color:var(--accent);text-decoration:none;border-bottom:1px dotted rgba(121,168,255,.4)}.docs-content a:hover{border-bottom-color:var(--accent)}.docs-content code{font-family:var(--font-mono);font-size:.82em;background:var(--hover-medium);border:1px solid var(--border);border-radius:3px;padding:1px 5px}.docs-content kbd{font-family:var(--font-mono);font-size:.78em;background:var(--hover-medium);border:1px solid var(--border-strong);border-radius:4px;padding:1px 6px;color:var(--text)}@media (max-width: 640px){.sidebar,.resize-handle{display:none}.right-panel{width:100%!important}.ide-body{flex-direction:column}}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/space-grotesk-vietnamese-400-normal-B7xT_GF5.woff2) format("woff2"),url(/assets/space-grotesk-vietnamese-400-normal-BIWiOVfw.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/space-grotesk-latin-ext-400-normal-CfP_5XZW.woff2) format("woff2"),url(/assets/space-grotesk-latin-ext-400-normal-DRPE3kg4.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/space-grotesk-latin-400-normal-CJ-V5oYT.woff2) format("woff2"),url(/assets/space-grotesk-latin-400-normal-BnQMeOim.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/space-grotesk-vietnamese-500-normal-BmEvtly_.woff2) format("woff2"),url(/assets/space-grotesk-vietnamese-500-normal-BTqKIpxg.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/space-grotesk-latin-ext-500-normal-DUe3BAxM.woff2) format("woff2"),url(/assets/space-grotesk-latin-ext-500-normal-3dgZTiw9.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/space-grotesk-latin-500-normal-lFbtlQH6.woff2) format("woff2"),url(/assets/space-grotesk-latin-500-normal-CNSSEhBt.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/space-grotesk-vietnamese-700-normal-DMty7AZE.woff2) format("woff2"),url(/assets/space-grotesk-vietnamese-700-normal-Duxec5Rn.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/space-grotesk-latin-ext-700-normal-BQnZhY3m.woff2) format("woff2"),url(/assets/space-grotesk-latin-ext-700-normal-HVCqSBdx.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/space-grotesk-latin-700-normal-RjhwGPKo.woff2) format("woff2"),url(/assets/space-grotesk-latin-700-normal-CwsQ-cCU.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"Instrument Serif";font-style:normal;font-display:swap;font-weight:400;src:url(/assets/instrument-serif-latin-ext-400-normal-C2je3j2s.woff2) format("woff2"),url(/assets/instrument-serif-latin-ext-400-normal-CFCUzsTy.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Instrument Serif";font-style:normal;font-display:swap;font-weight:400;src:url(/assets/instrument-serif-latin-400-normal-DnYpCC2O.woff2) format("woff2"),url(/assets/instrument-serif-latin-400-normal-BVbkICAY.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
