:root{--header-height: 60px;color:#25211d;background:#fbfaf7;font-family:Malgun Gothic,AppleGothic,system-ui,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:320px;height:100vh;overflow:hidden}button{font:inherit}.app-shell{display:flex;flex-direction:column;height:100vh;background:#fbfaf7}.header{z-index:10;display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:var(--header-height);padding:0 20px;color:#f6f3eb;background:#2c251e;box-shadow:0 2px 10px #00000026}.header h1{margin:0;font-size:18px;font-weight:700;text-align:center}.nav-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:36px;border:0;border-radius:4px;padding:8px 14px;color:#fff;background:#8c2d19;font-size:13px;font-weight:700;cursor:pointer}.nav-btn:hover{background:#b03a20}.panel-command{min-width:140px;background:#6f2b1d}.panel-command.active{background:#a63a24;box-shadow:inset 0 0 0 1px #ffffff38}.panel-command kbd{display:grid;place-items:center;min-width:20px;height:20px;border:1px solid rgba(255,255,255,.36);border-radius:3px;color:#fffaf2;background:#00000029;font-family:inherit;font-size:10px;line-height:1}.main-container{--left-sidebar-width: 320px;--right-sidebar-width: 380px;--center-left-reserve: 0px;position:relative;display:flex;flex:1;min-height:0;overflow:hidden}.main-container.left-open{--center-left-reserve: var(--left-sidebar-width)}.sidebar{position:absolute;top:0;bottom:0;z-index:6;height:100%;overflow-y:auto;transition:transform .25s ease,box-shadow .25s ease}.sidebar.left{left:0;width:var(--left-sidebar-width);padding:14px 12px 18px;background:#f5f2eb;border-right:1px solid #dcd7ca;box-shadow:4px 0 16px #00000014}.sidebar.left.collapsed{transform:translate(-100%)}.sidebar.right{right:0;z-index:7;width:var(--right-sidebar-width);padding:22px;background:#fff;border-left:2px solid #e6dfd3;box-shadow:-4px 0 15px #0000000d}.sidebar.right.collapsed{transform:translate(100%)}.canvas-container{position:relative;flex:1;width:100%;min-width:0;height:100%;background:#faf8f5;cursor:grab;touch-action:none}.canvas-container:active{cursor:grabbing}canvas{display:block;width:100%;height:100%}.center-screen{position:absolute;top:0;right:var(--right-sidebar-width);bottom:0;z-index:5;width:min(900px,calc(100% - var(--right-sidebar-width) - var(--center-left-reserve) - 24px));min-width:420px;overflow-y:auto;border-left:1px solid #d8cbbb;border-right:1px solid #ece3d8;padding:26px;color:#2c251e;background:#fffdf8fa;box-shadow:-12px 0 30px #2c251e29;opacity:0;pointer-events:none;transform:translate(calc(100% + var(--right-sidebar-width)));transition:transform .28s ease,opacity .2s ease}.center-screen.open{opacity:1;pointer-events:auto;transform:translate(0)}.center-screen-header{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding-bottom:18px;border-bottom:1px solid #e1d8ca}.center-screen-header h2{margin:0 0 8px;font-size:28px;line-height:1.2}.center-screen-header p{max-width:56ch;margin:0;color:#5d5349;font-size:14px;line-height:1.7}.icon-close{display:grid;flex:0 0 auto;place-items:center;width:36px;height:36px;border:1px solid #d8cbbb;border-radius:4px;color:#4a3e36;background:#fffaf2;font-size:24px;line-height:1;cursor:pointer}.icon-close:hover{background:#f3ede4}.detail-action{display:flex;align-items:center;justify-content:center;gap:7px;width:100%;min-height:40px;margin-top:18px;border:0;border-radius:4px;padding:10px 12px;color:#fff;background:#2c251e;font-size:13px;font-weight:700;cursor:pointer}.detail-action:hover{background:#4a3e36}.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:22px 0}.fact-tile{display:grid;gap:5px;min-height:78px;border:1px solid #ded4c6;border-radius:6px;padding:13px;background:#fff}.fact-tile span{color:#746a60;font-size:12px;font-weight:700}.fact-tile strong{color:#2c251e;font-size:15px;line-height:1.35}.detail-body{display:grid;gap:16px}.detail-section{border-top:1px solid #e3dacd;padding-top:15px}.detail-section h3{margin-bottom:8px;font-size:16px}.detail-section p{margin:0;color:#5b5148;font-size:14px;line-height:1.75}.related-list{display:flex;flex-wrap:wrap;gap:8px}.related-list span{border:1px solid #d3c6b6;border-radius:4px;padding:7px 9px;color:#534438;background:#fffdf8;font-size:12px;font-weight:700}.tag-list{display:flex;flex-wrap:wrap;gap:6px;margin:12px 0}.tag-list span{border:1px solid #d9cbbc;border-radius:4px;padding:5px 7px;color:#5a493d;background:#fffaf2;font-size:12px;font-weight:700}h2,h3{margin-top:0;color:#2c251e}.helper-text{color:#62594f;font-size:13px;line-height:1.65}.divider{height:1px;margin:16px 0;background:#d7d0c2}.meta-tag{display:inline-block;margin-bottom:10px;border-radius:4px;padding:4px 8px;color:#fff;background:#8c2d19;font-size:11px;font-weight:700}.meta-tag.book{background:#6b4eb8}.meta-tag.dataset{background:#285b82}.meta-tag.neutral{background:#746a60}.original-text{display:inline-block;margin:5px 0;border-left:4px solid #8c2d19;border-radius:4px;padding:6px 12px;color:#4a3e3d;background:#fdf5f3;font-family:Times New Roman,serif;font-size:22px;font-weight:700}.schema-list{display:flex;flex-wrap:wrap;gap:6px}.schema-list span{border:1px solid #d1c4b0;border-radius:4px;padding:5px 7px;color:#534438;background:#fffdf8;font-size:12px;font-weight:700}.graph-stat{display:grid;gap:4px;margin:12px 0;border:1px solid #d8cbbb;border-radius:6px;padding:10px;background:#fffdf8}.graph-stat strong{color:#2c251e;font-size:13px}.graph-stat span{color:#62594f;font-size:12px;line-height:1.45}.lod-list{display:grid;gap:8px;margin:10px 0 16px}.lod-item{display:grid;gap:3px;border:1px solid #d8cbbb;border-radius:6px;padding:9px;background:#fffdf8}.lod-item strong{color:#2c251e;font-size:12px}.lod-item span{color:#6c6258;font-size:11px}.layer-toggle-list{display:grid;gap:6px;margin:0}.layer-toggle{display:flex;align-items:center;gap:8px;min-height:34px;border:1px solid #ded6ca;border-radius:4px;padding:7px 8px;color:#4a3e3d;background:#fffdf8;font-size:12px;font-weight:700;cursor:pointer}.layer-toggle span{flex:1;min-width:0}.layer-toggle input{width:15px;height:15px;margin:0 0 0 auto;accent-color:#8c2d19}.sidebar-heading{display:flex;align-items:center;gap:10px;min-height:42px;padding:4px 5px 12px;border-bottom:1px solid #d7d0c2}.sidebar-heading>svg{color:#8c2d19}.sidebar-heading div{display:grid;gap:2px}.sidebar-heading h2{margin:0;font-size:17px}.sidebar-heading span{color:#786e64;font-size:10px;font-weight:700}.sidebar-section-label{margin:16px 5px 7px;color:#766b61;font-size:11px;font-weight:800}.sidebar-accordion{border-bottom:1px solid #ddd5ca}.timeline-sidebar-accordion{margin-top:8px;border:1px solid #cfc3b4;border-radius:5px;background:#fffdf8}.sidebar-accordion-trigger{display:grid;grid-template-columns:20px minmax(0,1fr) auto 18px;align-items:center;gap:7px;width:100%;min-height:42px;border:0;padding:8px 6px;color:#3f3731;background:transparent;text-align:left;cursor:pointer}.timeline-sidebar-accordion .sidebar-accordion-trigger{padding:8px 9px;color:#fffaf2;background:#3d352f}.sidebar-accordion-trigger>span{min-width:0;overflow-wrap:anywhere;font-size:13px;font-weight:800}.sidebar-accordion-trigger>small{min-width:26px;border-radius:3px;padding:3px 5px;color:#655b52;background:#e9e2d8;font-size:10px;font-weight:800;text-align:center}.timeline-sidebar-accordion .sidebar-accordion-trigger>small{color:#fffaf2;background:#ffffff24}.sidebar-accordion-content{padding:5px 0 9px 27px}.timeline-sidebar-accordion .sidebar-accordion-content{padding:8px}.data-catalog-groups{border-top:1px solid #ddd5ca}.dataset-menu-list{display:grid;gap:3px}.dataset-menu-button{display:grid;grid-template-columns:20px minmax(0,1fr) 18px;align-items:center;gap:7px;width:100%;min-height:42px;border:1px solid transparent;border-radius:4px;padding:6px 7px;color:#4a4037;background:transparent;text-align:left;cursor:pointer}.dataset-menu-button:hover{border-color:#d5c9ba;background:#fffdf8}.dataset-menu-button.active{border-color:#b98f7d;color:#702b1d;background:#fff6f2}.dataset-menu-button:disabled{cursor:wait;opacity:.55}.dataset-menu-button>span{display:grid;min-width:0;gap:2px}.dataset-menu-button strong{overflow-wrap:anywhere;font-size:12px}.dataset-menu-button small{color:#82766c;font-size:10px}.sidebar-data-status{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;margin-top:14px;border:1px solid #d7cec1;border-radius:5px;overflow:hidden;background:#d7cec1}.sidebar-data-status>span{display:grid;gap:2px;min-width:0;padding:8px 4px;background:#fffdf8;text-align:center}.sidebar-data-status strong{color:#3f3731;font-size:12px}.sidebar-data-status small{color:#7d7269;font-size:9px;line-height:1.2}.dataset-summary-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;margin:15px 0 12px;border:1px solid #d9d0c4;border-radius:4px;overflow:hidden;background:#d9d0c4}.dataset-summary-stats span{padding:9px;color:#665c53;background:#faf8f3;font-size:11px;text-align:center}.dataset-summary-stats strong{color:#2c251e;font-size:15px}.dataset-table-wrap{width:100%;overflow:auto;border:1px solid #d9d0c4;border-radius:4px;background:#fff}.dataset-table{width:100%;min-width:680px;border-collapse:collapse;table-layout:auto}.dataset-table th,.dataset-table td{border-right:1px solid #e6ded4;border-bottom:1px solid #e6ded4;padding:9px 10px;color:#4b423a;font-size:12px;line-height:1.45;text-align:left;vertical-align:top;overflow-wrap:anywhere}.dataset-table th{position:sticky;top:0;z-index:1;color:#332c27;background:#eee8de;font-size:11px;white-space:nowrap}.dataset-table th:last-child,.dataset-table td:last-child{border-right:0}.dataset-table tr:last-child td{border-bottom:0}.dataset-table-wrap.compact{max-height:230px}.dataset-table-wrap.compact .dataset-table{min-width:0;table-layout:fixed}.dataset-table-wrap.compact th,.dataset-table-wrap.compact td{padding:7px 8px;font-size:11px}.dataset-empty{border:1px dashed #d4cabd;border-radius:4px;padding:18px;color:#796e64;background:#faf8f3;font-size:12px;text-align:center}.dataset-detail-view{display:grid;gap:22px}.dataset-node-map{display:flex;flex-wrap:wrap;gap:6px;border-top:1px solid #ded5c9;border-bottom:1px solid #ded5c9;padding:12px 0}.dataset-node-token,.dataset-root-node{display:grid;gap:2px;border:1px solid #d2c7b9;border-radius:4px;padding:6px 8px;background:#fffdf8}.dataset-root-node{place-items:center;color:#fff;background:#3d352f;font-size:12px;font-weight:800}.dataset-node-token small{color:#877b71;font-size:9px}.dataset-node-token strong{color:#3e352e;font-size:12px}.dataset-table-section,.dataset-relations-section{display:grid;gap:10px}.dataset-section-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;color:#574c42}.dataset-section-heading>div{display:flex;align-items:baseline;gap:8px}.dataset-section-heading span{font-size:14px;font-weight:800}.dataset-section-heading strong{color:#81756b;font-size:11px}.relation-flow-list{border-top:1px solid #dfd6ca}.relation-flow-row{display:grid;grid-template-columns:minmax(90px,1fr) auto minmax(90px,1fr) minmax(80px,.8fr);align-items:center;gap:8px;min-height:40px;border-bottom:1px solid #e6ded4;padding:7px 2px}.relation-flow-row strong{color:#3d352f;font-size:12px}.relation-flow-row>span{border-radius:3px;padding:4px 6px;color:#fff;background:#285b82;font-size:10px;font-weight:800;text-align:center}.relation-flow-row small{color:#7e736a;font-size:10px;text-align:right}@media(max-width:980px){.center-screen{right:0;z-index:8;width:100%;min-width:0;transform:translate(100%)}}@media(max-width:760px){.main-container{--left-sidebar-width: 280px;--right-sidebar-width: min(340px, 86vw)}.header{gap:8px;padding:0 10px}.header h1{font-size:14px}.nav-btn{padding:7px 9px;font-size:12px}.panel-command{min-width:62px;gap:5px}.panel-command-label{display:none}.sidebar.left{left:0}.sidebar.right{right:0}.center-screen{right:0;z-index:8;width:100%;min-width:0;padding:18px;transform:translate(100%)}.center-screen-header{gap:12px}.center-screen-header h2{font-size:23px}.detail-grid{grid-template-columns:1fr}.relation-flow-row{grid-template-columns:minmax(80px,1fr) auto minmax(80px,1fr)}.relation-flow-row small{grid-column:1 / -1;text-align:left}.dataset-section-heading>div{display:grid;gap:2px}}
