*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:system-ui,sans-serif;font-size:14px;background:#f5f5f5;color:#111}.app-layout{display:flex;flex-direction:column;height:100vh}.top-bar{display:flex;align-items:center;justify-content:space-between;padding:0 16px;height:44px;background:#1d4ed8;color:#fff;flex-shrink:0}.top-bar h1{font-size:16px;font-weight:600;letter-spacing:.05em}.top-bar .top-bar-right{display:flex;align-items:center;gap:12px;font-size:13px}.top-bar button{background:none;border:1px solid rgba(255,255,255,.3);color:#fff;padding:4px 10px;border-radius:4px;cursor:pointer;font-size:13px}.top-bar button:hover{background:#ffffff1a}.main-area{display:flex;flex:1;overflow:hidden}.sidebar{width:220px;flex-shrink:0;background:#fff;border-right:1px solid #e0e0e0;display:flex;flex-direction:column;overflow:hidden}.sidebar-header{padding:12px 12px 8px;font-weight:600;font-size:12px;color:#666;text-transform:uppercase;letter-spacing:.05em}.sidebar-list{flex:1;overflow-y:auto}.sidebar-item{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;cursor:pointer;border-radius:0;transition:background .1s}.sidebar-item:hover{background:#f0f0f0}.sidebar-item.active{background:#dbeafe;font-weight:600}.sidebar-item-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-gear{background:none;border:none;cursor:pointer;color:#888;font-size:16px;padding:2px 4px;border-radius:3px}.sidebar-gear:hover{color:#333;background:#ddd}.sidebar-footer{padding:10px 12px;border-top:1px solid #e0e0e0}.btn-add-table{width:100%;padding:7px;background:#1d4ed8;color:#fff;border:none;border-radius:5px;cursor:pointer;font-size:13px}.btn-add-table:hover{background:#1e40af}.content-area{flex:1;display:flex;flex-direction:column;overflow:hidden;background:#fff}.content-header{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-bottom:1px solid #e0e0e0}.content-header h2{font-size:15px;font-weight:600}.btn-add-row{padding:6px 14px;background:#1d4ed8;color:#fff;border:none;border-radius:5px;cursor:pointer;font-size:13px}.btn-add-row:hover{background:#1e40af}.content-empty{flex:1;display:flex;align-items:center;justify-content:center;color:#999}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:#f5f5f5}.login-card{background:#fff;padding:40px;border-radius:10px;box-shadow:0 2px 16px #0000001a;width:340px}.login-card h1{font-size:22px;margin-bottom:24px;color:#1d4ed8}.form-group{margin-bottom:16px}.form-group label{display:block;font-size:13px;font-weight:500;margin-bottom:5px}.form-group input{width:100%;padding:8px 10px;border:1px solid #ccc;border-radius:5px;font-size:14px;outline:none}.form-group input:focus{border-color:#1d4ed8}.btn-primary{width:100%;padding:9px;background:#1d4ed8;color:#fff;border:none;border-radius:5px;font-size:14px;cursor:pointer;margin-top:4px}.btn-primary:hover{background:#1e40af}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.login-error{color:#c0392b;font-size:13px;margin-bottom:12px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:100}.modal{background:#fff;border-radius:10px;box-shadow:0 4px 32px #0000002e;padding:28px;min-width:400px;max-width:600px;max-height:85vh;overflow-y:auto}.modal h2{font-size:17px;margin-bottom:20px}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.btn-secondary{padding:7px 16px;background:#f0f0f0;border:1px solid #ccc;border-radius:5px;cursor:pointer;font-size:13px}.btn-secondary:hover{background:#e0e0e0}.btn-danger{padding:7px 16px;background:#e74c3c;color:#fff;border:none;border-radius:5px;cursor:pointer;font-size:13px}.btn-danger:hover{background:#c0392b}.rdg{flex:1;block-size:100%}.col-sys{color:#bbb!important;background:#fafafa!important;font-style:italic}.grid-wrap{flex:1;overflow:hidden;display:flex;flex-direction:column}.img-thumb{height:36px;width:36px;object-fit:cover;border-radius:3px;cursor:pointer}.img-upload-btn{font-size:12px;padding:3px 8px;border:1px solid #ccc;border-radius:3px;cursor:pointer;background:#f9f9f9}.cell-url a{color:#1a73e8;text-decoration:none}.cell-url a:hover{text-decoration:underline}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000d9;display:flex;align-items:center;justify-content:center;z-index:200;cursor:zoom-out}.lightbox img{max-width:90vw;max-height:90vh;border-radius:6px;object-fit:contain}.col-list{margin-bottom:16px}.col-row{display:flex;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid #eee}.col-row:last-child{border-bottom:none}.col-name{flex:1;font-weight:500}.col-type-badge{font-size:11px;background:#e8eaf6;color:#3949ab;padding:2px 7px;border-radius:10px}.template-hash-box{font-size:11px;font-family:monospace;background:#f5f5f5;padding:8px;border-radius:4px;word-break:break-all;margin:10px 0;border:1px solid #e0e0e0}.add-col-form{display:flex;flex-direction:column;gap:10px}.add-col-form select,.add-col-form input{padding:7px 9px;border:1px solid #ccc;border-radius:5px;font-size:13px;width:100%}.add-col-form select:focus,.add-col-form input:focus{outline:none;border-color:#1d4ed8}.lists-section{margin-top:20px}.list-item{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid #eee}.list-item:last-child{border-bottom:none}.list-values{font-size:12px;color:#666;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@layer rdg{@layer Defaults,FocusSink,CheckboxInput,CheckboxIcon,CheckboxLabel,Cell,HeaderCell,SummaryCell,EditCell,Row,HeaderRow,SummaryRow,GroupedRow,Root;}@layer rdg.MeasuringCell{.rdg-7-0-0-beta-58-fa71d63e{contain:strict;grid-row:1;visibility:hidden}}@layer rdg.Cell{.rdg-7-0-0-beta-58-85c48527{position:relative;padding-block:0;padding-inline:8px;border-inline-end:var(--rdg-border-width) solid var(--rdg-border-color);border-block-end:var(--rdg-border-width) solid var(--rdg-border-color);grid-row-start:var(--rdg-grid-row-start);align-content:center;background-color:inherit;white-space:nowrap;overflow:clip;text-overflow:ellipsis;outline:none}.rdg-7-0-0-beta-58-85c48527[aria-selected=true]{outline:var(--rdg-selection-width) solid var(--rdg-selection-color);outline-offset:calc(var(--rdg-selection-width) * -1)}}@layer rdg.Cell{.rdg-7-0-0-beta-58-17a9a6d4{position:sticky;z-index:1}.rdg-7-0-0-beta-58-17a9a6d4:nth-last-child(1 of.rdg-7-0-0-beta-58-17a9a6d4){box-shadow:var(--rdg-cell-frozen-box-shadow)}}@layer rdg.DragHandle{.rdg-7-0-0-beta-58-bfba19bc{--rdg-drag-handle-size: 8px;z-index:0;cursor:move;inline-size:var(--rdg-drag-handle-size);block-size:var(--rdg-drag-handle-size);background-color:var(--rdg-selection-color);place-self:end}.rdg-7-0-0-beta-58-bfba19bc:hover{--rdg-drag-handle-size: 16px;border:2px solid var(--rdg-selection-color);background-color:var(--rdg-background-color)}}@layer rdg.DragHandle{.rdg-7-0-0-beta-58-7abddb3e{z-index:1;position:sticky}}@layer rdg.CheckboxInput{.rdg-7-0-0-beta-58-3b807ead{display:block;margin:auto;inline-size:20px;block-size:20px}.rdg-7-0-0-beta-58-3b807ead:focus-visible{outline:2px solid var(--rdg-checkbox-focus-color);outline-offset:-3px}.rdg-7-0-0-beta-58-3b807ead:enabled{cursor:pointer}}@layer rdg.GroupCellContent{.rdg-7-0-0-beta-58-07919382{outline:none}}@layer rdg.GroupCellCaret{.rdg-7-0-0-beta-58-02a50147{margin-inline-start:4px;stroke:currentColor;stroke-width:1.5px;fill:transparent;vertical-align:middle}.rdg-7-0-0-beta-58-02a50147>path{transition:d .1s}}@layer rdg.SortableHeaderCell{.rdg-7-0-0-beta-58-56a248e4{display:flex}}@layer rdg.SortableHeaderCellName{.rdg-7-0-0-beta-58-7fad8c83{flex-grow:1;overflow:clip;text-overflow:ellipsis}}@layer rdg.Cell{.rdg-7-0-0-beta-58-35ccb4c8{background-color:#ccf}}@layer rdg.EditCell{.rdg-7-0-0-beta-58-46f9ea88{padding:0}}@layer rdg.HeaderRow{.rdg-7-0-0-beta-58-0dbd5994{display:contents;background-color:var(--rdg-header-background-color);font-weight:700}.rdg-7-0-0-beta-58-0dbd5994>.rdg-7-0-0-beta-58-85c48527{z-index:2;position:sticky}.rdg-7-0-0-beta-58-0dbd5994>.rdg-7-0-0-beta-58-17a9a6d4{z-index:3}}@layer rdg.HeaderCell{.rdg-7-0-0-beta-58-2a7e240d{cursor:pointer}}@layer rdg.HeaderCell{.rdg-7-0-0-beta-58-1893dc0f{touch-action:none}}@layer rdg.HeaderCell{.rdg-7-0-0-beta-58-4e60db91{cursor:col-resize;position:absolute;inset-block-start:0;inset-inline-end:0;inset-block-end:0;inline-size:10px}}@layer rdg.HeaderCell{.rdg-7-0-0-beta-58-3e1a4ad4{background-color:var(--rdg-header-draggable-background-color)}}@layer rdg.HeaderCell{.rdg-7-0-0-beta-58-51abd8b8{background-color:var(--rdg-header-draggable-background-color)}}@layer rdg.HeaderCell{.rdg-7-0-0-beta-58-c8d7aa64{border-radius:4px;width:fit-content;outline:2px solid hsl(207,100%,50%);outline-offset:-2px}}@layer rdg.Row{.rdg-7-0-0-beta-58-3c083f1b{display:contents;background-color:var(--rdg-background-color)}.rdg-7-0-0-beta-58-3c083f1b:hover{background-color:var(--rdg-row-hover-background-color)}.rdg-7-0-0-beta-58-3c083f1b[aria-selected=true]{background-color:var(--rdg-row-selected-background-color)}.rdg-7-0-0-beta-58-3c083f1b[aria-selected=true]:hover{background-color:var(--rdg-row-selected-hover-background-color)}}@layer rdg.FocusSink{.rdg-7-0-0-beta-58-3fe773c3{outline:2px solid var(--rdg-selection-color);outline-offset:-2px}}@layer rdg.FocusSink{.rdg-7-0-0-beta-58-97ce3fde:before{content:"";display:inline-block;block-size:100%;position:sticky;inset-inline-start:0;border-inline-start:2px solid var(--rdg-selection-color)}}@layer rdg.SortIcon{.rdg-7-0-0-beta-58-3d5115f3{fill:currentColor}.rdg-7-0-0-beta-58-3d5115f3>path{transition:d .1s}}@layer rdg.Defaults{.rdg-7-0-0-beta-58-ccd2e5d9 *,.rdg-7-0-0-beta-58-ccd2e5d9 *:before,.rdg-7-0-0-beta-58-ccd2e5d9 *:after{box-sizing:inherit}}@layer rdg.Root{.rdg-7-0-0-beta-58-ccd2e5d9{--rdg-selection-width: 2px;--rdg-selection-color: hsl(207, 75%, 66%);--rdg-font-size: 14px;--rdg-cell-frozen-box-shadow: 2px 0 5px -2px rgba(136, 136, 136, .3);--rdg-border-width: 1px;--rdg-summary-border-width: calc(var(--rdg-border-width) * 2);--rdg-color: light-dark(#000, #ddd);--rdg-border-color: light-dark(#ddd, #444);--rdg-summary-border-color: light-dark(#aaa, #555);--rdg-background-color: light-dark(hsl(0deg 0% 100%), hsl(0deg 0% 13%));--rdg-header-background-color: light-dark(hsl(0deg 0% 97.5%), hsl(0deg 0% 10.5%));--rdg-header-draggable-background-color: light-dark(hsl(0deg 0% 90.5%), hsl(0deg 0% 17.5%));--rdg-row-hover-background-color: light-dark(hsl(0deg 0% 96%), hsl(0deg 0% 9%));--rdg-row-selected-background-color: light-dark(hsl(207deg 76% 92%), hsl(207deg 76% 42%));--rdg-row-selected-hover-background-color: light-dark(hsl(207deg 76% 88%), hsl(207deg 76% 38%));--rdg-checkbox-focus-color: hsl(207deg 100% 69%);color-scheme:var(--rdg-color-scheme, light dark);display:grid;accent-color:light-dark(hsl(207deg 100% 29%),hsl(207deg 100% 79%));contain:content;content-visibility:auto;block-size:350px;border:1px solid var(--rdg-border-color);box-sizing:border-box;overflow:auto;background-color:var(--rdg-background-color);color:var(--rdg-color);font-size:var(--rdg-font-size)}.rdg-7-0-0-beta-58-ccd2e5d9.rdg-dark{--rdg-color-scheme: dark}.rdg-7-0-0-beta-58-ccd2e5d9.rdg-light{--rdg-color-scheme: light}.rdg-7-0-0-beta-58-ccd2e5d9:dir(rtl){--rdg-cell-frozen-box-shadow: -2px 0 5px -2px rgba(136, 136, 136, .3)}.rdg-7-0-0-beta-58-ccd2e5d9:before{content:"";grid-column:1/-1;grid-row:1/-1}.rdg-7-0-0-beta-58-ccd2e5d9>:nth-last-child(1 of.rdg-top-summary-row)>.rdg-7-0-0-beta-58-85c48527{border-block-end:var(--rdg-summary-border-width) solid var(--rdg-summary-border-color)}.rdg-7-0-0-beta-58-ccd2e5d9>:nth-child(1 of.rdg-bottom-summary-row)>.rdg-7-0-0-beta-58-85c48527{border-block-start:var(--rdg-summary-border-width) solid var(--rdg-summary-border-color)}}@layer rdg.Root{.rdg-7-0-0-beta-58-e9b0e1c9{-webkit-user-select:none;user-select:none}.rdg-7-0-0-beta-58-e9b0e1c9 .rdg-7-0-0-beta-58-3c083f1b{cursor:move}}@layer rdg.FocusSink{.rdg-7-0-0-beta-58-dbb8b3c5{grid-column:1/-1;pointer-events:none;z-index:1}}@layer rdg.FocusSink{.rdg-7-0-0-beta-58-e9f55541{z-index:3}}@layer rdg.SummaryRow{.rdg-7-0-0-beta-58-0b90c82c>.rdg-7-0-0-beta-58-85c48527{position:sticky}}@layer rdg.SummaryRow{.rdg-7-0-0-beta-58-d0520eab>.rdg-7-0-0-beta-58-85c48527{z-index:2}.rdg-7-0-0-beta-58-d0520eab>.rdg-7-0-0-beta-58-17a9a6d4{z-index:3}}@layer rdg.SummaryCell{.rdg-7-0-0-beta-58-d907aa87{inset-block-start:var(--rdg-summary-row-top);inset-block-end:var(--rdg-summary-row-bottom)}}@layer rdg.GroupedRow{.rdg-7-0-0-beta-58-e74a2be3:not([aria-selected=true]){background-color:var(--rdg-header-background-color)}.rdg-7-0-0-beta-58-e74a2be3>.rdg-7-0-0-beta-58-85c48527:not(:last-child,.rdg-7-0-0-beta-58-17a9a6d4),.rdg-7-0-0-beta-58-e74a2be3>:nth-last-child(n+2 of.rdg-7-0-0-beta-58-17a9a6d4){border-inline-end:none}}@layer rdg.TextEditor{.rdg-7-0-0-beta-58-2f8db206{-webkit-appearance:none;-moz-appearance:none;appearance:none;box-sizing:border-box;inline-size:100%;block-size:100%;padding-block:0;padding-inline:6px;border:2px solid #ccc;vertical-align:top;color:var(--rdg-color);background-color:var(--rdg-background-color);font-family:inherit;font-size:var(--rdg-font-size)}.rdg-7-0-0-beta-58-2f8db206:focus{border-color:var(--rdg-selection-color);outline:none}.rdg-7-0-0-beta-58-2f8db206::placeholder{color:#999;opacity:1}}
