:root{font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.4;font-weight:400;color:#213547;background-color:#f5f5f5;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:#f5f5f5}#root{height:100vh}a{color:inherit;text-decoration:none}.app{display:flex;flex-direction:column;height:100vh;width:100%}.app-brand{display:flex;align-items:center;justify-content:flex-end;gap:.5rem;font-weight:600;font-size:1.05rem;margin-left:auto}.app-logo{width:26px;height:26px;border-radius:6px}.app-body{flex:1;display:flex;min-height:0}:root{--sidebar-width: 320px;--sidebar-min-width: 220px;--sidebar-max-width: 520px}.persist-error{background:#ffe8e8;border:1px solid #f5bcbc;color:#a02020;padding:.5rem;border-radius:6px;font-size:.85rem}.sidebar{width:var(--sidebar-width);padding:1rem;overflow-y:auto;border-right:1px solid #e0e0e0;background:#fafafa;display:flex;flex-direction:column;gap:1.2rem}.sidebar-resizer{width:6px;cursor:col-resize;background:transparent;position:relative;z-index:5}.sidebar-resizer:after{content:"";position:absolute;top:0;bottom:0;left:2px;width:2px;background:#d0d0d0}.sidebar section h2{margin:0 0 .5rem;font-size:1rem}.projects-section select{width:100%;margin-bottom:.5rem}.project-actions{display:flex;gap:.5rem}.project-actions button{flex:1;border-radius:6px;padding:.35rem .5rem;border:1px solid #ccc;background:#fff;cursor:pointer}.upload-area{border:2px dashed #bbb;border-radius:8px;padding:1rem;text-align:center;color:#555;cursor:pointer;display:flex;flex-direction:column;gap:.5rem}.upload-area input[type=file]{display:none}.upload-area.dragover{border-color:#646cff;color:#646cff}.upload-area--secondary{margin-top:.6rem;border-color:#ddd;background:#fff}.upload-area--secondary span{font-size:.9rem;color:#666}.error-panel{border:1px solid #f5bcbc;background:#fff5f5;border-radius:8px;padding:.6rem}.error-panel__header{display:flex;justify-content:space-between;align-items:center;font-size:.85rem;font-weight:600;color:#a02020;margin-bottom:.4rem}.error-panel__clear{border:none;background:none;color:#a02020;cursor:pointer;font-size:.8rem}.error-list{list-style:none;padding:0;margin:0}.error-item{display:flex;align-items:flex-start;justify-content:space-between;gap:.5rem;padding:.25rem 0;border-bottom:1px solid #f2d9d9;font-size:.8rem;color:#a02020}.error-item:last-child{border-bottom:none}.error-item__message{flex:1;text-align:left;border:none;background:none;color:inherit;cursor:pointer;padding:0;font:inherit}.error-item__message:hover{text-decoration:underline}.error-item__dismiss{border:none;background:none;color:inherit;cursor:pointer;font-weight:700;line-height:1}.error-item__dismiss:hover{color:#7a1515}.error-detail{max-height:40vh;overflow:auto;background:#111;color:#eee;padding:.75rem;border-radius:4px;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:.85rem;white-space:pre-wrap}.controls select,.controls input,.controls button{width:100%;margin-bottom:.5rem}.controls button{border-radius:6px;padding:.5rem .75rem;border:1px solid #ccc;background:#fff;cursor:pointer}.controls button:disabled{opacity:.5;cursor:not-allowed}.tables-section{border:1px solid #e0e0e0;border-radius:8px;padding:.6rem;background:#fff}.table-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.4rem}.table-item{display:flex;flex-direction:column;gap:.4rem;padding:.2rem .4rem;border-radius:6px;min-width:0}.table-item__header{display:flex;align-items:center;justify-content:space-between;gap:.4rem;min-width:0}.table-item__toggle{border:none;background:transparent;cursor:pointer;font-size:1rem;line-height:1;padding:0 .3rem;flex-shrink:0}.table-item.active{background:#eef0ff}.table-item__name{flex:1;min-width:0;text-align:left;border:none;background:transparent;cursor:pointer;padding:.2rem;display:flex;align-items:center;justify-content:space-between;gap:.5rem;overflow:hidden}.table-item__label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.table-item__count,.table-item__root{flex-shrink:0}.table-item__actions{display:flex;align-items:center;gap:.25rem;flex-shrink:0}.table-item__docroot.active{color:#2b6cb0}.table-item__docroot,.table-item__rename,.table-item__reset,.table-item__delete{border:none;background:none;cursor:pointer;font-size:.85rem;padding:.2rem}.table-item__rename:hover,.table-item__reset:hover,.table-item__delete:hover{color:#333}.table-column{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.table-column__actions{display:flex;gap:.25rem}.table-column__rename,.table-column__reset,.table-column__delete{border:none;background:none;cursor:pointer;font-size:.75rem;padding:.15rem}.table-column__rename:hover,.table-column__reset:hover,.table-column__delete:hover{color:#333}.table-column__delete{color:#b3261e}.table-item__count{font-size:.8rem;color:#666}.table-item__root{font-size:.7rem;background:#646cff;color:#fff;padding:.1rem .35rem;border-radius:999px}.table-item__delete{border:none;background:transparent;color:#b00020;font-size:1.2rem;cursor:pointer;padding:0 .2rem}.table-item__delete:hover{color:#fff;background:#b00020;border-radius:4px}.table-columns{list-style:none;margin:0;padding:.2rem .4rem .4rem;display:grid;grid-template-columns:1fr;gap:.25rem;font-size:.85rem}.table-columns li label{display:flex;align-items:center;gap:.5rem}.table-columns input[type=checkbox]{accent-color:#646cff}.relationships-section{border:1px solid #e0e0e0;border-radius:8px;padding:.6rem;background:#fff}.relationship-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.4rem}.relationship-item{display:flex;align-items:flex-start;justify-content:space-between;gap:.5rem;padding:.2rem .4rem;border-radius:6px;border:1px solid transparent;min-width:0}.relationship-item.empty{color:#777;font-size:.85rem;border:none}.relationship-item>span{display:block;flex:1;min-width:0;overflow:hidden;white-space:normal;overflow-wrap:anywhere;word-break:break-word}.relationship-item__delete{border:none;background:transparent;color:#b00020;font-size:1.1rem;cursor:pointer;padding:0 .2rem;flex-shrink:0}.relationship-item__delete:hover{color:#fff;background:#b00020;border-radius:4px}.stats{display:flex;justify-content:space-between;font-size:.85rem;color:#555;margin-top:.5rem}.preview-section .preview{background:#111;color:#0f0;padding:.6rem;border-radius:6px;font-size:.8rem;max-height:240px;overflow:auto}.preview--modal{background:#1e1e1e;color:#d4d4d4;padding:.5rem .75rem;border-radius:6px;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:.85rem;white-space:pre;overflow:auto;max-height:100%}.canvas{flex:1;height:100%}.react-flow__handle{width:10px;height:10px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:.5rem;height:32px;padding:0 .5rem;background:#d4d0c8;color:#000;z-index:1500;border-bottom:1px solid #b0b0b0;font-size:.95rem}.app-title{margin-left:0;font-size:.9rem;color:#333}.menu-bar{display:flex;align-items:center;gap:.25rem;flex:0 0 auto}.project-title{flex:1;text-align:center;font-weight:600;font-size:.95rem;color:#333;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.menu{position:relative}.menu-button{background:transparent;border:1px solid transparent;color:inherit;font:inherit;cursor:pointer;padding:4px 8px;border-radius:0}.menu-button:hover,.menu-button:focus{background:#fff;border-color:gray}.menu-dropdown{position:absolute;top:100%;left:0;background:#f0f0f0;color:#000;border:1px solid #808080;border-radius:0;box-shadow:none;display:flex;flex-direction:column;min-width:180px;z-index:3000}.menu-dropdown button{background:transparent;border:none;padding:4px 12px;text-align:left;cursor:pointer;font:inherit;font-size:.95rem}.menu-dropdown button:hover{background:silver}.drag-overlay{position:fixed;inset:0;background:#00000059;display:flex;align-items:center;justify-content:center;color:#fff;z-index:4000;pointer-events:none}.drag-overlay__content{background:#0009;padding:2rem 3rem;border-radius:8px;border:1px solid rgba(255,255,255,.3);text-align:center;font-size:1.25rem;font-weight:600}.context-menu{position:fixed;z-index:1000;background:#fff;border:1px solid #ccc;border-radius:8px;padding:.6rem;box-shadow:0 4px 12px #00000026;display:flex;flex-direction:column;gap:.5rem;max-width:260px}.context-menu--wide{max-width:320px}.context-menu h4{margin:0;font-size:.95rem}.context-menu h5{margin:0;font-size:.85rem;color:#555}.context-menu__edge-label{font-size:.8rem;color:#666;word-break:break-all}.context-menu label{display:flex;flex-direction:column;gap:.25rem;font-size:.85rem}.context-menu select,.context-menu>input,.context-menu>button,.context-menu label>input,.context-menu label>select{font-size:.85rem}.context-menu__columns-section{display:flex;flex-direction:column;gap:.25rem}.context-menu__column-actions{display:flex;gap:.25rem}.context-menu__column-actions button{font-size:.75rem;padding:.15rem .4rem}.context-menu__column-list{list-style:none;margin:0;padding:0;max-height:180px;overflow-y:auto;border:1px solid #e5e5e5;border-radius:4px;padding:.25rem}.context-menu__column-list li label{flex-direction:row;align-items:center;gap:.35rem;font-size:.8rem;cursor:pointer;padding:.1rem 0}.context-menu__column-list li label input[type=checkbox]{margin:0}.preview-modal{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:2000}.preview-modal__content{width:80vw;height:80vh;max-width:1200px;max-height:900px;background:#fff;border-radius:8px;box-shadow:0 4px 16px #0003;display:flex;flex-direction:column}.modal__content--wide{width:80vw;max-width:960px}.sql-schema-help{margin-bottom:.75rem;font-size:.9rem}.sql-schema-help summary{cursor:pointer;font-weight:600}.sql-schema-help ol{padding-left:1.25rem;margin:.5rem 0}.sql-schema-query{background:#111;color:#eee;padding:.75rem;border-radius:6px;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:.8rem;overflow:auto;max-height:240px;white-space:pre}.sql-schema-input{width:100%;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:.85rem;padding:.5rem;border:1px solid #ccc;border-radius:6px;resize:vertical}.create-table__label{display:flex;flex-direction:column;gap:.25rem;font-weight:600;font-size:.9rem;margin-bottom:.75rem}.create-table__name-input{padding:.4rem .5rem;border:1px solid #ccc;border-radius:6px;font-size:.9rem}.create-table__columns-fieldset,.create-table__rows-fieldset{border:1px solid #e0e0e0;border-radius:6px;padding:.75rem;margin-bottom:.75rem}.create-table__columns-fieldset legend,.create-table__rows-fieldset legend{font-weight:600;font-size:.85rem;padding:0 .25rem}.create-table__columns-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.35rem}.create-table__column-row{display:flex;gap:.35rem;align-items:center}.create-table__column-row input{flex:1;padding:.3rem .5rem;border:1px solid #ccc;border-radius:4px;font-size:.85rem}.create-table__remove-col{background:none;border:none;color:#c00;cursor:pointer;font-size:1.1rem;padding:0 .3rem;line-height:1}.create-table__remove-col:disabled{visibility:hidden}.create-table__add-col,.create-table__add-row{margin-top:.5rem;background:none;border:1px dashed #aaa;border-radius:4px;padding:.3rem .75rem;cursor:pointer;font-size:.8rem;color:#555}.create-table__add-col:hover,.create-table__add-row:hover{border-color:#0078d4;color:#0078d4}.create-table__grid-wrapper{max-height:260px;overflow:auto;border:1px solid #e0e0e0;border-radius:4px}.create-table__grid{width:100%;border-collapse:collapse;font-size:.82rem}.create-table__grid th{background:#f5f5f5;padding:.3rem .5rem;text-align:left;font-weight:600;position:sticky;top:0;border-bottom:1px solid #ddd}.create-table__grid td{padding:.15rem .25rem;border-bottom:1px solid #eee}.create-table__grid td input{width:100%;border:1px solid transparent;border-radius:3px;padding:.2rem .35rem;font-size:.82rem}.create-table__grid td input:focus{border-color:#0078d4;outline:none}.create-table__grid-action{width:28px;text-align:center}.create-table__grid-action button{background:none;border:none;color:#c00;cursor:pointer;font-size:1rem}.modal__footer{display:flex;justify-content:flex-end;gap:.5rem}.preview-modal__content--wide{width:min(1000px,95vw)}.preview-modal__content--json{width:min(70vw,900px);max-width:900px;height:75vh}.preview-modal__body--json{background:#1e1e1e;color:#d4d4d4;padding:.5rem .75rem;display:flex;flex-direction:column;gap:.5rem}.preview-ru{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.25rem 1rem;font-size:.85rem;color:#9cdcfe}.preview-ru>div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.preview-modal__body--json .json-tree,.preview-modal__body--json .preview--modal{background:#1e1e1e;color:#d4d4d4}.table-preview__body{display:flex;flex-direction:column;gap:.6rem}.table-preview__meta{font-size:.85rem;color:#555;display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.table-preview__transform-badge{display:inline-flex;gap:.5rem;align-items:center}.table-preview__transform-badge>span{background:#fef3c7;color:#92400e;font-size:.75rem;font-weight:600;padding:.1rem .4rem;border-radius:999px}.table-preview__table td{max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.table-preview__table-wrapper{overflow:auto;max-height:70vh}.table-preview__table{border-collapse:collapse;width:100%;font-size:.85rem}.table-preview__table th,.table-preview__table td{border:1px solid #e0e0e0;padding:.35rem .5rem;text-align:left}.table-preview__table thead{position:sticky;top:0;background:#f5f5f5}.modal{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:2500}.modal__content{width:min(90vw,600px);max-height:80vh;background:#fff;border-radius:8px;box-shadow:0 4px 16px #0003;display:flex;flex-direction:column}.modal__header{padding:.75rem 1rem;border-bottom:1px solid #eee;display:flex;justify-content:space-between;align-items:center}.modal__body{padding:1rem;overflow:auto}.projects-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.projects-list__item{display:flex;justify-content:space-between;gap:1rem;padding:.5rem;border:1px solid #eee;border-radius:6px}.projects-list__name{font-weight:600}.projects-list__id{font-size:.75rem;color:#777;overflow:hidden;text-overflow:ellipsis}.projects-list__actions button{margin-left:.5rem}.help-body ul{margin:.5rem 0 0 1rem;padding:0}.preview-modal__header{padding:.75rem 1rem;border-bottom:1px solid #eee;display:flex;justify-content:space-between;align-items:center}.preview-modal__actions{display:flex;align-items:center;gap:.5rem}.preview-modal__actions>button{margin-left:.5rem}.preview-modal__actions>.preview-modal__mode{margin-left:0}.preview-modal__mode{display:flex;gap:.25rem}.preview-modal__mode button{border:1px solid #555;background:transparent;color:inherit;padding:.2rem .5rem;border-radius:4px;cursor:pointer;font-size:.85rem}.preview-modal__mode button.active{background:#555;color:#fff}.preview-modal__body{flex:1;overflow:auto;padding:.75rem 1rem}.json-tree{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:.85rem;line-height:1.45;color:#d4d4d4}.json-node{display:block;white-space:pre}.json-node__line{display:flex;align-items:flex-start;gap:.25rem}.json-node__caret{cursor:pointer;color:#c5c5c5;-webkit-user-select:none;user-select:none;width:1rem}.json-node__key{color:#9cdcfe}.json-node__sep{color:#c5c5c5}.json-node__braces{color:#c586c0}.json-node__children{width:100%}.json-node__value--string{color:#ce9178}.json-node__value--number{color:#b5cea8}.json-node__value--boolean,.json-node__value--null{color:#569cd6}.table-node{min-width:180px;background:#fff;border:1px solid #dcdcdc;border-radius:8px;box-shadow:0 1px 4px #0000001a;font-size:.85rem}.table-node__header{font-weight:600;padding:.4rem .6rem;background:#f5f5f5;border-bottom:1px solid #e5e5e5;display:flex;align-items:center;justify-content:space-between;gap:.5rem}.table-node__badges{display:flex;gap:.25rem;align-items:center;flex-shrink:0}.table-node--root{border:2px solid #4f46e5;box-shadow:0 0 0 3px #4f46e533}.table-node__badge{background:#4f46e5;color:#fff;font-size:.7rem;font-weight:600;padding:.1rem .4rem;border-radius:999px}.table-node__badge--doc{background:#2b6cb0}.table-node__badge--pivot{background:#d97706}.table-node__col-icon{font-size:.75rem;opacity:.7;flex-shrink:0;margin-left:auto;cursor:default}.table-node--docroot{border:2px solid #2b6cb0;box-shadow:0 0 0 3px #2b6cb033}.table-node__columns{padding:.4rem .2rem .6rem;max-height:260px;overflow-y:auto;overflow-x:hidden}.table-node__handle{width:14px;height:14px;border:2px solid #4f46e5;background:#fff}.table-node__handle--left{left:-10px}.table-node__handle--right{right:-10px}.table-node__column:hover .table-node__colname{text-decoration:underline}.table-node__column{position:relative;display:flex;align-items:center;gap:.5rem;padding:.2rem .6rem;border-radius:4px}.table-node__column:hover{background:#f0f4ff}.table-node__colname{flex:1;word-break:break-word}.table-node__handle{width:10px;height:10px;background:#646cff;border:1px solid #fff}.table-node__handle--left{left:-6px}.table-node__handle--right{right:-6px}
