*,:before,:after{box-sizing:border-box}html,body,#root{color:#e4e6eb;background:#0e1014;height:100%;margin:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}code{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace}.app-shell{color:#e4e6eb;background:#0e1014;flex-direction:column;height:100vh;min-height:600px;font-family:Segoe UI,system-ui,-apple-system,sans-serif;display:flex;overflow:hidden}.topbar{background:#12151b;border-bottom:1px solid #252a33;flex-shrink:0;justify-content:space-between;align-items:center;gap:1.5rem;padding:.75rem 1.25rem;display:flex}.topbar-titles h1{letter-spacing:.02em;margin:0;font-size:1.15rem;font-weight:650}.topbar-titles p{color:#8b919c;max-width:40rem;margin:.2rem 0 0;font-size:.78rem}.topbar-actions{flex-shrink:0;align-items:center;gap:.85rem;display:flex}.stat{color:#6e7582;font-variant-numeric:tabular-nums;font-size:.75rem}.btn-rebuild{appearance:none;color:#e8ecf0;cursor:pointer;background:linear-gradient(#2a3140,#1e2430);border:1px solid #3d4654;border-radius:6px;padding:.45rem .95rem;font-size:.82rem;font-weight:600}.btn-rebuild:hover{background:linear-gradient(#343c4e,#252b38);border-color:#5a6578}.workspace{flex:1;min-height:0;display:flex}.kb-panel{background:#12151b;border-right:1px solid #252a33;flex-direction:column;flex-shrink:0;width:320px;min-height:0;display:flex}.kb-panel-head{border-bottom:1px solid #1e232c;padding:.85rem .9rem .5rem}.kb-panel-head h2{margin:0;font-size:.95rem}.kb-sub{color:#6e7582;margin:.15rem 0 .55rem;font-size:.72rem}.kb-search{box-sizing:border-box;color:#e4e6eb;background:#0e1014;border:1px solid #2a303c;border-radius:5px;width:100%;padding:.4rem .55rem;font-size:.8rem}.kb-search:focus{border-color:#4a5568;outline:1px solid #4a5568}.kb-tools{border-bottom:1px solid #1e232c;flex-direction:column;gap:.4rem;padding:.55rem .9rem;display:flex}.kb-check{color:#a0a6b0;cursor:pointer;align-items:flex-start;gap:.45rem;font-size:.72rem;display:flex}.kb-check code{color:#c4a882;font-size:.68rem}.kb-bulk{gap:.65rem;display:flex}.kb-linkbtn{appearance:none;color:#7d9ec4;cursor:pointer;text-underline-offset:2px;background:0 0;border:none;padding:0;font-size:.72rem;text-decoration:underline}.kb-linkbtn:hover{color:#a8c4e0}.kb-list{flex:0 auto;max-height:42%;margin:0;padding:.35rem 0;list-style:none;overflow-y:auto}.kb-item{align-items:center;gap:.25rem;padding:.1rem .5rem .1rem .65rem;display:flex}.kb-item-sel{background:#1a2230}.kb-item-check{align-items:center;display:flex}.kb-item-btn{appearance:none;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:4px;flex:1;align-items:center;gap:.45rem;padding:.28rem .35rem;display:flex}.kb-item-btn:hover{background:#1a1f28}.kb-swatch{border:1px solid;border-radius:2px;flex-shrink:0;width:10px;height:10px;display:inline-block}.kb-item-name{flex:1;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.8rem}.kb-item-tag{opacity:.85;margin-left:.35rem;font-size:.68rem}.kb-detail{background:#0e1014;border-top:1px solid #1e232c;flex:1;min-height:0;padding:.75rem .9rem 1rem;overflow-y:auto}.kb-detail h3{flex-wrap:wrap;align-items:center;gap:.4rem;margin:0 0 .55rem;font-size:.88rem;display:flex}.kb-fields{border-collapse:collapse;width:100%;margin-bottom:.75rem;font-size:.72rem}.kb-fields th{text-align:left;color:#6e7582;border-bottom:1px solid #252a33;padding:.2rem .25rem;font-weight:500}.kb-fields td{vertical-align:top;border-bottom:1px solid #1a1e26;padding:.22rem .25rem;font-family:ui-monospace,Menlo,Consolas,monospace}.kb-ref{color:#7dba9a;white-space:nowrap}.badge{vertical-align:middle;letter-spacing:.04em;border-radius:3px;margin-right:.3rem;padding:.05rem .28rem;font-size:.58rem;font-weight:700;display:inline-block}.badge.pk{color:#c8d97a;background:#3d4a1e}.badge.fk{color:#7db8d9;background:#1e3a4a}.kb-refs{grid-template-columns:1fr 1fr;gap:.65rem;font-size:.72rem;display:grid}.kb-refs ul{margin:.25rem 0 0;padding:0;list-style:none}.kb-refs button{appearance:none;color:#7d9ec4;font:inherit;cursor:pointer;text-align:left;background:0 0;border:none;padding:.15rem 0;font-family:ui-monospace,Menlo,Consolas,monospace}.kb-refs button:hover{color:#b0cce8}.muted{color:#5a606c;margin:.2rem 0 0}.canvas-wrap{background:#0a0c10;flex:1;min-width:0;min-height:0;position:relative}.canvas-empty{color:#6e7582;text-align:center;place-items:center;height:100%;padding:2rem;font-size:.9rem;display:grid}.erd-svg{touch-action:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;display:block}.erd-bg{fill:#0a0c10}.erd-edge{fill:none;stroke:#6a707c;stroke-width:1.1px;opacity:.75}.erd-edge-dim{opacity:.12;stroke:#3a404c}.erd-edge-on{opacity:.9}.erd-card-dim{opacity:.22}.erd-card-on{opacity:1}.erd-card-sel rect:first-of-type{filter:drop-shadow(0 0 6px #e8ecf040)}.erd-card-title{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:12px;font-weight:650}.erd-card-tag{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:9px}.erd-field{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:10px}.erd-hint{pointer-events:none;font-family:system-ui,sans-serif;font-size:10px}@media (width<=900px){.workspace{flex-direction:column}.kb-panel{border-bottom:1px solid #252a33;border-right:none;width:100%;max-height:40vh}}.btn-group{flex-wrap:wrap;align-items:center;gap:.35rem;display:flex}.btn-ghost,.btn-primary,.btn-danger{appearance:none;cursor:pointer;border-radius:5px;padding:.35rem .65rem;font-size:.75rem;font-weight:600}.btn-ghost{color:#c8ccd4;background:#1a1f28;border:1px solid #3d4654}.btn-ghost:hover{color:#e8ecf0;background:#242b36;border-color:#5a6578}.btn-primary{color:#d4e8dc;background:linear-gradient(#2a4a3a,#1e3328);border:1px solid #3d5a4a}.btn-primary:hover:not(:disabled){border-color:#5a8a6a}.btn-primary:disabled{opacity:.45;cursor:not-allowed}.btn-danger{color:#e0a0a8;background:#2a181c;border:1px solid #5a3038}.btn-danger:hover{background:#3a2028;border-color:#8a4850}.status-bar{border-bottom:1px solid #252a33;flex-shrink:0;padding:.35rem 1.25rem;font-size:.75rem}.status-ok{color:#7dba9a;background:#143328}.status-warn{color:#c4a882;background:#3a2814}.status-info{color:#7d9ec4;background:#1a2230}.topbar-actions{flex-wrap:wrap;justify-content:flex-end}.kb-pack{color:#a0a6b0;border-bottom:1px solid #1e232c;padding:.4rem .9rem .55rem;font-size:.72rem}.kb-pack summary{cursor:pointer;color:#8b919c;-webkit-user-select:none;user-select:none;font-weight:600}.kb-pack-fields{flex-direction:column;gap:.35rem;margin-top:.45rem;display:flex}.kb-pack-fields label,.kb-edit-grid label{color:#6e7582;flex-direction:column;gap:.15rem;font-size:.68rem;display:flex}.kb-pack-fields input,.kb-pack-fields textarea,.kb-edit-grid input,.kb-edit-grid select,.kb-field-row input,.kb-field-row select,.modal-textarea{color:#e4e6eb;background:#0e1014;border:1px solid #2a303c;border-radius:4px;padding:.3rem .4rem;font-family:inherit;font-size:.75rem}.kb-pack-fields input:focus,.kb-pack-fields textarea:focus,.kb-edit-grid input:focus,.kb-edit-grid select:focus,.kb-field-row input:focus,.kb-field-row select:focus,.modal-textarea:focus{border-color:#4a5568;outline:1px solid #4a5568}.kb-pack-desc textarea{resize:vertical;min-height:2.4rem}.kb-bulk{flex-wrap:wrap}.kb-linkbtn.danger{color:#c48890}.kb-linkbtn.danger:hover{color:#e0a8b0}.kb-panel{width:360px}.kb-edit-grid{grid-template-columns:1fr 1fr;gap:.4rem;margin-bottom:.65rem;display:grid}.kb-edit-grid label:first-child{grid-column:1/-1}.kb-fields-head{justify-content:space-between;align-items:center;margin-bottom:.35rem;font-size:.72rem;display:flex}.kb-field-editor{flex-direction:column;gap:.3rem;max-height:220px;margin-bottom:.55rem;display:flex;overflow-y:auto}.kb-field-row{grid-template-columns:1fr 72px auto auto minmax(72px,1fr) 22px;align-items:center;gap:.25rem;display:grid}.kb-field-name{min-width:0;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.7rem!important}.kb-field-type{font-size:.68rem!important}.kb-flag{color:#8b919c;white-space:nowrap;align-items:center;gap:.15rem;font-size:.62rem;display:flex}.kb-field-ref{min-width:0;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.68rem!important}.kb-field-ref-spacer{min-width:0}.kb-iconbtn{appearance:none;color:#8a7078;cursor:pointer;background:0 0;border:none;padding:0;font-size:1rem;line-height:1}.kb-iconbtn:hover{color:#e0a0a8}.kb-edit-actions{gap:.45rem;margin-bottom:.75rem;display:flex}.form-error-inline{color:#e0a0a8;margin:0 0 .45rem;font-size:.72rem}.form-errors{color:#e0a0a8;background:#2a181c;border:1px solid #5a3038;border-radius:4px;margin:.4rem 0 0;padding:.4rem .55rem;font-size:.72rem;list-style:none}.form-errors li+li{margin-top:.2rem}.modal-backdrop{z-index:40;background:#06080cb8;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.modal{background:#12151b;border:1px solid #2a303c;border-radius:8px;width:min(560px,100%);padding:1rem 1.1rem 1.1rem;box-shadow:0 12px 40px #00000073}.modal h3{margin:0 0 .35rem;font-size:.95rem}.modal-sub{color:#8b919c;margin:0 0 .65rem;font-size:.75rem}.modal-textarea{resize:vertical;width:100%;min-height:200px;font-family:ui-monospace,Menlo,Consolas,monospace;line-height:1.35}.modal-actions{justify-content:flex-end;gap:.5rem;margin-top:.65rem;display:flex}.modal-form{flex-direction:column;display:flex}@media (width<=900px){.kb-panel{width:100%}.kb-field-row{grid-template-columns:1fr 1fr}}
