.ob-hud{--ob-glass-bg: rgba(10, 14, 28, .72);--ob-border: rgba(120, 160, 255, .16);--ob-border-strong: rgba(120, 160, 255, .3);--ob-cyan: #4cc9f0;--ob-magenta: #f72585;--ob-amber: #ffb703;--ob-red: #ef476f;--ob-text: #dfe7ff;--ob-muted: rgba(178, 195, 235, .62);--ob-faint: rgba(178, 195, 235, .4);--ob-mono: ui-monospace, "Cascadia Code", Consolas, "SF Mono", Menlo, monospace;position:fixed;inset:0;z-index:10;pointer-events:none;color:var(--ob-text);font-size:13px;line-height:1.45}.ob-glass{background:var(--ob-glass-bg);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid var(--ob-border);border-radius:14px;box-shadow:0 14px 44px #00000073;pointer-events:auto}@keyframes ob-rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.ob-anim{animation:ob-rise .16s ease-out both}.ob-heading{text-transform:uppercase;letter-spacing:.18em;font-size:11px;font-weight:600;color:#aac0f0c7}.ob-mono{font-family:var(--ob-mono)}.ob-hud *::-webkit-scrollbar{width:8px;height:8px}.ob-hud *::-webkit-scrollbar-track{background:transparent}.ob-hud *::-webkit-scrollbar-thumb{background:#78a0ff38;border-radius:8px}.ob-hud *::-webkit-scrollbar-thumb:hover{background:#78a0ff5c}.ob-scroll{scrollbar-width:thin;scrollbar-color:rgba(120,160,255,.25) transparent}.ob-btn{background:#4cc9f014;border:1px solid rgba(76,201,240,.25);color:var(--ob-text);border-radius:8px;padding:4px 10px;font:inherit;font-size:12px;cursor:pointer;transition:background .12s ease,border-color .12s ease}.ob-btn:hover{background:#4cc9f02e;border-color:#4cc9f080}.ob-btn-primary{background:#4cc9f02e;border-color:#4cc9f073;color:#eaffff;font-weight:600;letter-spacing:.04em}.ob-btn-primary:hover{background:#4cc9f04d;box-shadow:0 0 16px #4cc9f040}.ob-close{background:none;border:none;color:var(--ob-muted);font-size:18px;line-height:1;padding:2px 6px;cursor:pointer;border-radius:6px;transition:color .12s ease}.ob-close:hover{color:var(--ob-magenta)}.ob-link{background:none;border:none;color:var(--ob-cyan);font:inherit;font-size:11px;letter-spacing:.06em;cursor:pointer;padding:0;text-decoration:underline dotted;text-underline-offset:3px}.ob-link:hover{color:#9be4ff}.ob-dot{flex:none;width:8px;height:8px;border-radius:50%;display:inline-block}.ob-chip{display:inline-flex;align-items:center;gap:4px;padding:1px 7px;border-radius:999px;font-size:10px;font-family:var(--ob-mono);letter-spacing:.05em;border:1px solid var(--ob-border);color:var(--ob-muted);white-space:nowrap}.ob-chip-pk{color:#ffd60a;border-color:#ffd60a66;background:#ffd60a12}.ob-chip-fk{color:var(--ob-cyan);border-color:#4cc9f066;background:#4cc9f012;cursor:pointer}.ob-chip-fk:hover{background:#4cc9f033}.ob-chip-uq{color:#c77dff;border-color:#c77dff66;background:#c77dff12}.ob-chip-enum{color:#80ffdb;border-color:#80ffdb59;background:#80ffdb0f;cursor:pointer}.ob-chip-enum:hover{background:#80ffdb29}.ob-chip-warn{color:var(--ob-amber);border-color:#ffb70366;background:#ffb70314;max-width:220px;overflow:hidden;text-overflow:ellipsis;display:inline-block;line-height:1.6}.ob-domain-chip{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--ob-muted);letter-spacing:.04em}.ob-brand{position:absolute;top:18px;left:20px;-webkit-user-select:none;user-select:none}.ob-brand-title{font-size:22px;font-weight:200;letter-spacing:.42em;background:linear-gradient(90deg,var(--ob-cyan),var(--ob-magenta));-webkit-background-clip:text;background-clip:text;color:transparent}.ob-brand-sub{margin-top:2px;font-size:11px;text-transform:uppercase;letter-spacing:.18em;color:var(--ob-muted)}.ob-brand-stats{margin-top:8px;font-family:var(--ob-mono);font-size:11px;color:var(--ob-faint)}.ob-brand-keys{margin-top:7px;display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;font-size:11px;color:var(--ob-faint);letter-spacing:.04em}.ob-keyhint{display:inline-flex;align-items:center;gap:5px;background:none;border:none;padding:0;font:inherit;color:var(--ob-muted);cursor:pointer;transition:color .12s ease}.ob-keyhint:hover{color:var(--ob-cyan)}.ob-brand-keys kbd{font-family:var(--ob-mono);font-size:10px;color:var(--ob-text);padding:1px 5px;border:1px solid var(--ob-border-strong);border-bottom-width:2px;border-radius:4px;background:#78a0ff14}.ob-keyhint:hover kbd{border-color:var(--ob-cyan)}.ob-inspector{position:absolute;top:100px;left:20px;width:330px;max-height:calc(100vh - 250px);display:flex;flex-direction:column;overflow:hidden}.ob-inspector-head{display:flex;align-items:flex-start;gap:8px;padding:13px 14px 10px 16px;border-bottom:1px solid var(--ob-border)}.ob-inspector-title{flex:1;min-width:0}.ob-inspector-title h2{font-family:var(--ob-mono);font-size:15px;font-weight:600;color:#eaffff;overflow-wrap:anywhere}.ob-inspector-body{overflow-y:auto;padding:12px 16px 16px;scrollbar-width:thin;scrollbar-color:rgba(120,160,255,.25) transparent}.ob-desc-fr{font-size:12px;margin-bottom:4px}.ob-desc-en{font-size:12px;color:var(--ob-muted)}.ob-pk-row{display:flex;align-items:center;gap:8px;margin-top:10px;font-family:var(--ob-mono);font-size:11px;color:var(--ob-muted)}.ob-section-heading{margin:16px 0 6px;display:block}.ob-col-list,.ob-index-list,.ob-rel-list{list-style:none}.ob-col{padding:5px 0;border-bottom:1px solid rgba(120,160,255,.07)}.ob-col:last-child{border-bottom:none}.ob-col-line{display:flex;flex-wrap:wrap;align-items:center;gap:5px}.ob-col-name{font-family:var(--ob-mono);font-size:12px;color:var(--ob-text);overflow-wrap:anywhere}.ob-col-type{font-family:var(--ob-mono);font-size:10px;color:var(--ob-faint);margin-left:auto;padding-left:8px;flex:none}.ob-nn-dot{width:6px;height:6px;border-radius:50%;background:var(--ob-magenta);opacity:.85;flex:none;cursor:help}.ob-enum-values{list-style:none;margin:6px 0 2px 10px;padding-left:8px;border-left:1px solid rgba(128,255,219,.25);font-family:var(--ob-mono);font-size:11px;color:#80ffdb;display:flex;flex-wrap:wrap;gap:4px 10px}.ob-index{padding:4px 0;font-size:11px}.ob-index-name{font-family:var(--ob-mono);color:var(--ob-text);overflow-wrap:anywhere}.ob-index-cols{color:var(--ob-faint);font-family:var(--ob-mono);font-size:10px}.ob-rel{display:flex;align-items:baseline;gap:6px;width:100%;background:none;border:none;color:var(--ob-text);font:inherit;font-size:12px;text-align:left;padding:4px 6px;border-radius:6px;cursor:pointer}.ob-rel:hover{background:#4cc9f01a}.ob-rel-name{font-family:var(--ob-mono);color:var(--ob-cyan);font-size:11px}.ob-rel-arrow{color:var(--ob-faint)}.ob-rel-table{font-family:var(--ob-mono);font-size:11px;overflow-wrap:anywhere}.ob-rel-count{margin-left:auto;color:var(--ob-faint);font-family:var(--ob-mono);font-size:10px;flex:none}.ob-legend{position:absolute;top:18px;right:20px;width:218px;max-height:calc(100vh - 160px);display:flex;flex-direction:column;padding:12px 10px 8px;transition:opacity .16s ease,transform .16s ease}.ob-hud.ob-has-trace .ob-legend{opacity:0;transform:translate(16px);pointer-events:none}.ob-legend-title{padding:0 6px 8px}.ob-legend-list{list-style:none;overflow-y:auto;scrollbar-width:thin;scrollbar-color:rgba(120,160,255,.25) transparent}.ob-domain{display:flex;align-items:center;gap:8px;width:100%;background:none;border:none;color:var(--ob-text);font:inherit;font-size:12px;text-align:left;padding:3px 6px;border-radius:6px;cursor:pointer;transition:opacity .12s ease}.ob-domain:hover{background:#78a0ff14}.ob-domain-hidden{opacity:.4;text-decoration:line-through}.ob-domain-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ob-domain-count{margin-left:auto;font-family:var(--ob-mono);font-size:10px;color:var(--ob-faint)}.ob-legend-foot{display:flex;align-items:center;justify-content:flex-end;gap:6px;padding:8px 6px 2px;border-top:1px solid rgba(120,160,255,.1);margin-top:8px}.ob-legend-foot .ob-link{margin-right:auto}.ob-help-toggle{width:22px;height:22px;border-radius:50%;border:1px solid var(--ob-border-strong);background:#4cc9f00f;color:var(--ob-muted);font-size:12px;line-height:1;cursor:pointer;transition:color .12s ease,border-color .12s ease}.ob-help-toggle:hover,.ob-help-toggle.ob-on{color:var(--ob-cyan);border-color:var(--ob-cyan)}.ob-quality{margin-top:8px;padding:10px 8px 4px;border-top:1px solid rgba(120,160,255,.1)}.ob-quality-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.ob-quality-auto{font-family:var(--ob-mono);font-size:10px;letter-spacing:.06em;padding:2px 8px;border-radius:999px;border:1px solid var(--ob-border-strong);background:#4cc9f00f;color:var(--ob-muted);cursor:pointer}.ob-quality-auto.ob-on{color:var(--ob-cyan);border-color:var(--ob-cyan);background:#4cc9f024}.ob-quality-tiers{display:flex;gap:6px}.ob-quality-tier{flex:1;padding:6px 0;border-radius:8px;border:1px solid var(--ob-border);background:#4cc9f00d;color:var(--ob-text);font-size:12px;cursor:pointer;transition:background .12s ease,border-color .12s ease}.ob-quality-tier:hover{border-color:var(--ob-border-strong)}.ob-quality-tier.ob-on{border-color:var(--ob-cyan);background:#4cc9f033;color:#eaffff;font-weight:600}.ob-quality-hint{margin-top:8px;font-size:10px;line-height:1.5;color:var(--ob-faint)}.ob-console-dock{position:absolute;bottom:18px;left:0;right:0;display:flex;justify-content:center;pointer-events:none}.ob-console-pill{pointer-events:auto;border-radius:999px;padding:9px 20px;font-family:var(--ob-mono);font-size:12px;letter-spacing:.06em;color:var(--ob-text);cursor:pointer;transition:box-shadow .16s ease}.ob-console-pill:hover{box-shadow:0 14px 44px #00000073,0 0 18px #4cc9f040}.ob-console-card{width:560px;max-width:calc(100vw - 48px);padding:12px}.ob-console-card-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}.ob-console-card-head .ob-close{margin-left:auto}.ob-console-input{width:100%;background:#040712b3;border:1px solid var(--ob-border);border-radius:8px;color:#d6f4ff;font-family:var(--ob-mono);font-size:12px;line-height:1.55;padding:10px 12px;resize:vertical;min-height:88px;max-height:220px;outline:none;scrollbar-width:thin}.ob-console-input:focus{border-color:#4cc9f073}.ob-console-input::placeholder{color:var(--ob-faint)}.ob-console-row{display:flex;align-items:center;gap:8px;margin-top:8px}.ob-console-hint{margin-left:auto;font-size:10px;color:var(--ob-faint);letter-spacing:.05em}.ob-select{background:#040712b3;border:1px solid var(--ob-border);color:var(--ob-text);border-radius:8px;padding:5px 8px;font:inherit;font-size:12px;cursor:pointer;outline:none}.ob-select:hover{border-color:var(--ob-border-strong)}.ob-select option{background:#0a0e1c;color:var(--ob-text)}.ob-console-error{margin-top:8px;color:var(--ob-red);font-family:var(--ob-mono);font-size:11px;white-space:pre-wrap;overflow-wrap:anywhere}.ob-console-mini{display:flex;align-items:center;gap:10px;padding:8px 10px 8px 16px;border-radius:999px;max-width:calc(100vw - 48px)}.ob-console-mini-label{font-family:var(--ob-mono);font-size:12px;color:var(--ob-cyan);white-space:nowrap}.ob-trace{position:absolute;top:18px;right:20px;width:330px;max-height:calc(100vh - 150px);display:flex;flex-direction:column;overflow:hidden}.ob-trace-head{display:flex;align-items:center;gap:8px;padding:12px 12px 10px 16px;border-bottom:1px solid var(--ob-border)}.ob-trace-head .ob-close{margin-left:auto}.ob-source-badge{font-family:var(--ob-mono);font-size:9px;letter-spacing:.12em;padding:1px 7px;border-radius:999px;border:1px solid rgba(247,37,133,.45);color:var(--ob-magenta);background:#f7258514}.ob-transport{display:flex;align-items:center;gap:6px;padding:8px 16px;border-bottom:1px solid var(--ob-border)}.ob-transport-btn{width:30px;height:26px;display:inline-flex;align-items:center;justify-content:center;background:#4cc9f014;border:1px solid rgba(76,201,240,.25);border-radius:7px;color:var(--ob-text);font-size:12px;line-height:1;cursor:pointer;transition:background .12s ease}.ob-transport-btn:hover{background:#4cc9f033}.ob-speed-btn{width:auto;min-width:38px;padding:0 8px;font-family:var(--ob-mono);font-size:11px}.ob-transport-pos{margin-left:auto;font-family:var(--ob-mono);font-size:11px;color:var(--ob-faint)}.ob-step-list{list-style:none;overflow-y:auto;padding:6px 0;scrollbar-width:thin;scrollbar-color:rgba(120,160,255,.25) transparent}.ob-step{display:flex;align-items:flex-start;gap:8px;width:100%;background:none;border:none;border-left:2px solid transparent;color:var(--ob-text);font:inherit;text-align:left;padding:7px 12px;cursor:pointer;transition:background .12s ease,opacity .12s ease}.ob-step:hover{background:#78a0ff12}.ob-step-done{opacity:.42}.ob-step-current{border-left-color:var(--ob-cyan);background:#4cc9f01a}.ob-step-current .ob-step-detail{color:#eaffff}.ob-step-idx{font-family:var(--ob-mono);font-size:10px;color:var(--ob-faint);min-width:16px;padding-top:2px;flex:none}.ob-step-type{font-family:var(--ob-mono);font-size:9px;letter-spacing:.1em;color:var(--ob-cyan);border:1px solid rgba(76,201,240,.3);border-radius:5px;padding:1px 0;width:50px;text-align:center;flex:none;margin-top:1px}.ob-step-detail{font-size:12px;color:var(--ob-muted);display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}.ob-backdrop{position:absolute;inset:0;background:#03050e8c;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);pointer-events:auto;display:flex;justify-content:center;z-index:40}.ob-backdrop-center{align-items:center}.ob-search-modal{margin-top:12vh;width:540px;max-width:calc(100vw - 48px);align-self:flex-start;display:flex;flex-direction:column;overflow:hidden;background:#070a15f2;backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px);border-color:var(--ob-border-strong)}.ob-search-input{width:100%;background:transparent;border:none;border-bottom:1px solid var(--ob-border);outline:none;color:#eaffff;font-family:var(--ob-mono);font-size:15px;padding:14px 16px}.ob-search-input::placeholder{color:var(--ob-faint)}.ob-search-results{list-style:none;max-height:min(420px,56vh);overflow-y:auto;padding:6px;scrollbar-width:thin;scrollbar-color:rgba(120,160,255,.25) transparent}.ob-search-row{display:flex;align-items:center;gap:10px;width:100%;background:none;border:none;border-radius:8px;color:var(--ob-text);font:inherit;text-align:left;padding:8px 10px;cursor:pointer}.ob-search-row.ob-active{background:#4cc9f01f;outline:1px solid rgba(76,201,240,.25)}.ob-search-kind{font-family:var(--ob-mono);font-size:9px;letter-spacing:.1em;color:var(--ob-faint);border:1px solid var(--ob-border);border-radius:5px;padding:1px 5px;flex:none}.ob-search-label{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ob-search-meta{margin-left:auto;font-size:11px;color:var(--ob-faint);flex:none}.ob-search-empty{padding:18px 16px;font-size:12px;color:var(--ob-faint);text-align:center}.ob-search-foot{padding:8px 16px;border-top:1px solid rgba(120,160,255,.1);font-size:10px;letter-spacing:.08em;color:var(--ob-faint)}.ob-help{width:520px;max-width:calc(100vw - 48px);max-height:calc(100vh - 80px);overflow-y:auto;padding:20px 24px 22px;scrollbar-width:thin;background:#070a15f2;backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px);border-color:var(--ob-border-strong)}.ob-help-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.ob-help-list{list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:8px 18px;margin-bottom:18px}.ob-help-list li{display:flex;align-items:baseline;gap:8px;font-size:12px;color:var(--ob-muted)}.ob-kbd{font-family:var(--ob-mono);font-size:11px;color:var(--ob-text);padding:1px 6px;border:1px solid var(--ob-border-strong);border-bottom-width:2px;border-radius:5px;background:#78a0ff14;white-space:nowrap;flex:none}.ob-help-legend{list-style:none;margin-top:8px;display:flex;flex-direction:column;gap:6px;font-size:12px;color:var(--ob-muted)}.ob-help-legend strong{color:var(--ob-cyan);font-weight:600}@media(max-height:760px){.ob-inspector{top:92px;max-height:calc(100vh - 230px)}.ob-search-modal{margin-top:7vh}}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{background:#04060f;color:#dfe7ff;font-family:ui-sans-serif,system-ui,Segoe UI,Roboto,sans-serif;overflow:hidden;-webkit-font-smoothing:antialiased}canvas{display:block}.ob-loading{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;letter-spacing:.4em;text-transform:uppercase}.ob-loading h1{font-size:28px;font-weight:200;background:linear-gradient(90deg,#4cc9f0,#f72585);-webkit-background-clip:text;background-clip:text;color:transparent}.ob-loading p{font-size:12px;opacity:.6}.ob-error p{color:#ef476f;letter-spacing:normal;max-width:480px;text-align:center}
