pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#23241f;color:#f8f8f2}.hljs-tag,.hljs-subst{color:#f8f8f2}.hljs-strong,.hljs-emphasis{color:#a8a8a2}.hljs-bullet,.hljs-quote,.hljs-number,.hljs-regexp,.hljs-literal,.hljs-link{color:#ae81ff}.hljs-code,.hljs-title,.hljs-section,.hljs-selector-class{color:#a6e22e}.hljs-strong{font-weight:700}.hljs-emphasis{font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-name,.hljs-attr{color:#f92672}.hljs-symbol,.hljs-attribute{color:#66d9ef}.hljs-params,.hljs-title.class_,.hljs-class .hljs-title{color:#f8f8f2}.hljs-string,.hljs-type,.hljs-built_in,.hljs-selector-id,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-addition,.hljs-variable,.hljs-template-variable{color:#e6db74}.hljs-comment,.hljs-deletion,.hljs-meta{color:#75715e}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #272822;--surface: #1E1F1C;--surface-2: #3E3D32;--border: #49483E;--text: #F8F8F2;--text-muted:#75715E;--accent: #66D9EF;--accent-bg: rgba(102,217,239,.12);--hover: #3E3D32;--selected: #49483E;--error-bg: #3D1F26;--error-text:#F92672;--font-mono: "JetBrains Mono", "Fira Code", "Cascadia Code", Consolas, monospace;--font-ui: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:14px}html,body,#root{height:100%;background:var(--bg);color:var(--text);font-family:var(--font-ui);-webkit-font-smoothing:antialiased}button{background:none;border:none;cursor:pointer;font:inherit;color:inherit}ul,li{list-style:none}.app{display:flex;flex-direction:column;height:100vh;overflow:hidden}.app__header{display:flex;align-items:center;justify-content:space-between;padding:0 16px;height:44px;background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0}.app__logo{font-size:13px;font-weight:600;color:var(--accent);letter-spacing:.02em}.app__header-right{display:flex;align-items:center;gap:12px}.app__file-count{font-size:12px;color:var(--text-muted)}.app__upload-btn{font-size:12px;color:var(--accent);padding:4px 10px;border:1px solid var(--border);border-radius:6px;transition:background .15s}.app__upload-btn:hover{background:var(--hover)}.app__body{flex:1;overflow:hidden;display:flex}.app__center{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;padding:40px}.app__error{display:flex;align-items:center;gap:12px;padding:12px 16px;background:var(--error-bg);color:var(--error-text);border:1px solid rgba(249,38,114,.3);border-radius:8px;font-size:13px;max-width:480px;width:100%}.app__error-retry{margin-left:auto;color:var(--accent);font-size:12px;padding:3px 8px;border:1px solid var(--border);border-radius:5px}.app__loading-hint{font-size:13px;color:var(--text-muted)}.upload-zone-wrapper{display:flex;flex-direction:column;align-items:center;gap:16px;width:100%;max-width:480px}.upload-zone{width:100%;border:2px dashed var(--border);border-radius:12px;padding:48px 32px;text-align:center;cursor:pointer;transition:border-color .15s,background .15s;background:var(--surface)}.upload-zone:hover,.upload-zone--dragging{border-color:var(--accent);background:var(--accent-bg)}.upload-zone--has-file{cursor:default;padding:20px 32px;border-style:solid;border-color:var(--border)}.upload-zone__prompt{display:flex;flex-direction:column;align-items:center;gap:8px}.upload-zone__icon{font-size:32px;margin-bottom:4px}.upload-zone__title{font-size:15px;font-weight:500;color:var(--text)}.upload-zone__subtitle{font-size:13px;color:var(--text-muted)}.upload-zone__file-info{display:flex;align-items:center;gap:10px;font-size:14px}.upload-zone__file-icon{font-size:20px}.upload-zone__file-name{font-family:var(--font-mono);font-size:13px;color:var(--accent);flex:1;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.upload-zone__change{font-size:12px;color:var(--text-muted);padding:3px 8px;border:1px solid var(--border);border-radius:5px;white-space:nowrap}.upload-zone__change:hover{color:var(--text);background:var(--hover)}.process-btn{display:flex;align-items:center;gap:8px;padding:9px 24px;background:var(--accent);color:var(--bg);font-weight:600;font-size:14px;border-radius:8px;transition:opacity .15s;width:100%;justify-content:center}.process-btn:disabled{opacity:.35;cursor:not-allowed}.process-btn:not(:disabled):hover{opacity:.88}.spinner{display:inline-block;width:14px;height:14px;border:2px solid rgba(88,166,255,.2);border-top-color:var(--accent);border-radius:50%;animation:spin .65s linear infinite;flex-shrink:0}.spinner--sm{width:10px;height:10px;border-width:1.5px}@keyframes spin{to{transform:rotate(360deg)}}.app__explorer{flex:1;display:flex;flex-direction:column;overflow:hidden}.app__explorer-main{flex:1;display:flex;overflow:hidden}.app__console{flex-shrink:0;height:200px;display:flex;flex-direction:column;background:#090e18;border-top:1px solid var(--border);overflow:hidden}.app__console-header{display:flex;align-items:center;gap:8px;padding:6px 14px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);border-bottom:1px solid var(--border);flex-shrink:0}.app__console-lines{flex:1;overflow-y:auto;padding:8px 14px;display:flex;flex-direction:column;gap:3px;scrollbar-width:thin;scrollbar-color:var(--border) transparent}.app__console-line{font-family:var(--font-mono);font-size:12px;color:#7ea8c9;white-space:pre;line-height:1.5}.app__console-line:last-child{color:#58a6ff}.app__sidebar{width:240px;flex-shrink:0;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden}.app__sidebar-header{padding:8px 12px 6px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);border-bottom:1px solid var(--border);flex-shrink:0}.app__code{flex:1;overflow:hidden;display:flex;flex-direction:column}.app__no-file{flex:1;display:flex;align-items:center;justify-content:center;color:var(--text-muted);font-size:13px}.file-tree{overflow-y:auto;flex:1;padding:4px 0}.file-tree__item{display:flex;align-items:center;gap:6px;width:100%;padding:4px 8px;font-size:12.5px;border-radius:4px;text-align:left;white-space:nowrap;overflow:hidden;color:var(--text);transition:background .1s}.file-tree__item:hover{background:var(--hover)}.file-tree__item--selected{background:var(--selected)!important;color:var(--accent)}.file-tree__item--changed{color:#e3b341}.file-tree__item--selected.file-tree__item--changed{color:var(--accent)}.file-tree__changed-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:#e3b341;flex-shrink:0;margin-left:auto;align-self:center}.file-tree__chevron{font-size:10px;color:var(--text-muted);width:12px;flex-shrink:0}.file-tree__icon{font-size:13px;flex-shrink:0;width:16px;text-align:center}.file-tree__label{overflow:hidden;text-overflow:ellipsis}.code-panel{flex:1;display:flex;flex-direction:column;overflow:hidden;background:var(--bg)}.code-panel__header{display:flex;align-items:center;gap:12px;padding:6px 16px;background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0}.code-panel__path{font-family:var(--font-mono);font-size:12px;color:var(--accent);flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.code-panel__meta{font-size:11px;color:var(--text-muted);white-space:nowrap}.code-panel__copy{font-size:11px;color:var(--text-muted);padding:3px 8px;border:1px solid var(--border);border-radius:4px;transition:color .1s,background .1s;white-space:nowrap}.code-panel__copy:hover{color:var(--text);background:var(--hover)}.code-panel__scroll{flex:1;overflow:auto}.code-panel__table{width:100%;border-collapse:collapse;font-family:var(--font-mono);font-size:13px;line-height:1.6}.code-panel__row:hover .code-panel__lineno,.code-panel__row:hover .code-panel__line{background:var(--hover)}.code-panel__lineno{width:48px;min-width:48px;padding:1px 12px 0 16px;text-align:right;color:var(--text-muted);-webkit-user-select:none;user-select:none;font-size:12px;vertical-align:top;position:sticky;left:0;background:var(--bg)}.code-panel__line{padding:0 16px 0 8px;white-space:pre;vertical-align:top}.hljs{background:transparent!important}.app__demo-btn{font-size:12px;font-weight:600;color:var(--bg);background:var(--accent);padding:4px 12px;border-radius:6px;transition:opacity .15s}.app__demo-btn:hover{opacity:.85}.demo-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000a6;display:flex;align-items:center;justify-content:center;z-index:100;padding:20px}.demo-dialog{background:var(--surface);border:1px solid var(--border);border-radius:12px;width:100%;max-width:680px;max-height:85vh;display:flex;flex-direction:column;overflow:hidden;outline:none}.demo-dialog__header{padding:20px 24px 16px;border-bottom:1px solid var(--border);flex-shrink:0;position:relative}.demo-dialog__title{font-size:16px;font-weight:600;color:var(--text);margin-bottom:4px}.demo-dialog__subtitle{font-size:13px;color:var(--text-muted)}.demo-dialog__close{position:absolute;top:16px;right:16px;font-size:14px;color:var(--text-muted);padding:4px 8px;border-radius:4px;transition:color .1s,background .1s}.demo-dialog__close:hover{color:var(--text);background:var(--hover)}.demo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px;padding:20px 24px;overflow-y:auto}.demo-card{display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:16px;background:var(--surface-2);border:1px solid var(--border);border-radius:8px;text-align:left;width:100%;transition:border-color .15s,background .15s;cursor:pointer}.demo-card:hover{border-color:var(--accent);background:var(--accent-bg)}.demo-card__top{display:flex;align-items:center;justify-content:space-between;width:100%}.demo-card__badge{font-size:10px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;padding:2px 7px;border-radius:4px}.badge--chart{background:#66d9ef26;color:#66d9ef}.badge--grid{background:#ae81ff26;color:#ae81ff}.badge--board{background:#a6e22e26;color:#a6e22e}.badge--widget{background:#fd971f26;color:#fd971f}.demo-card__count{font-size:11px;color:var(--text-muted)}.demo-card__name{font-size:14px;font-weight:600;color:var(--text)}.demo-card__desc{font-size:12px;color:var(--text-muted);line-height:1.4;flex:1}.demo-card__cta{font-size:12px;color:var(--accent);margin-top:4px}.app__log-stream{display:flex;flex-direction:column;gap:10px;width:100%;max-width:480px}.app__log-header{display:flex;align-items:center;gap:10px;font-size:14px;font-weight:500;color:var(--text)}.app__log-lines{background:var(--surface);border:1px solid var(--accent);border-radius:8px;padding:14px 18px;display:flex;flex-direction:column;gap:5px;max-height:320px;overflow-y:auto;box-shadow:0 0 0 1px #66d9ef1a,0 4px 24px #0006}.app__log-line{font-family:var(--font-mono);font-size:12.5px;color:var(--text-muted);white-space:pre}.app__log-line:last-child{color:var(--accent)}.app__recent-btn{font-size:13px;color:var(--text);padding:5px 12px;border-radius:6px;border:1px solid var(--border);background:var(--surface-2);transition:color .15s,border-color .15s,background .15s}.app__recent-btn:hover{color:var(--text);border-color:var(--accent);background:var(--accent-bg)}.recent-list{list-style:none;padding:16px 20px;display:flex;flex-direction:column;gap:8px;overflow-y:auto}.recent-list>li{position:relative;display:flex;align-items:stretch}.recent-card{flex:1;display:flex;flex-direction:column;gap:4px;padding:12px 44px 12px 16px;background:var(--surface-2);border:1px solid var(--border);border-radius:8px;text-align:left;cursor:pointer;transition:border-color .15s,background .15s}.recent-card:hover{border-color:var(--accent);background:var(--accent-bg)}.recent-card__top{display:flex;align-items:center;justify-content:space-between;gap:8px}.recent-card__name{font-size:14px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.recent-card__count{font-size:11px;color:var(--text-muted);flex-shrink:0}.recent-card__date{font-size:12px;color:var(--text-muted)}.recent-card__delete{position:absolute;right:10px;top:50%;transform:translateY(-50%);font-size:12px;color:var(--text-muted);padding:4px 6px;border-radius:4px;opacity:0;transition:opacity .15s,color .15s,background .15s}.recent-list>li:hover .recent-card__delete{opacity:1}.recent-card__delete:hover{color:var(--error-text);background:#f926721f}.recent-empty{padding:40px 24px;text-align:center;color:var(--text-muted);font-size:13px}.recent-card__snapshots{color:var(--accent);opacity:.8}.vt{display:flex;align-items:center;gap:6px;padding:8px 14px;background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0;min-height:56px;overflow:hidden}.vt__track{display:flex;align-items:center;flex:1;overflow-x:auto;scrollbar-width:none;gap:0;padding:4px 0}.vt__track::-webkit-scrollbar{display:none}.vt__line{flex-shrink:0;height:2px;width:28px;background:var(--border);transition:background .2s}.vt__line--active{background:var(--accent);opacity:.5}.vt__step{display:flex;flex-direction:column;align-items:center;gap:3px;flex-shrink:0}.vt__dot{font-size:14px;width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:color .15s,background .15s,box-shadow .15s;color:var(--text-muted);line-height:1}.vt__dot:hover{color:var(--accent);background:var(--accent-bg)}.vt__dot--active{color:var(--accent);background:var(--accent-bg);box-shadow:0 0 0 2px var(--accent)}.vt__dot--past{color:var(--accent);opacity:.5}.vt__dot--future{color:var(--text-muted);opacity:.45}.vt__diff{font-size:9px;font-family:var(--font-mono);font-weight:600;color:var(--text-muted);background:var(--surface-2);border:1px solid var(--border);border-radius:9px;padding:1px 5px;line-height:1.4;white-space:nowrap}.vt__diff--active{color:var(--accent);border-color:var(--accent);background:var(--accent-bg)}.vt__label{font-size:10px;color:var(--text-muted);white-space:nowrap;max-width:90px;overflow:hidden;text-overflow:ellipsis;text-align:center}.vt__nav{flex-shrink:0;font-size:18px;color:var(--text-muted);width:28px;height:28px;border-radius:4px;display:flex;align-items:center;justify-content:center;transition:color .15s,background .15s;line-height:1}.vt__nav:not(:disabled):hover{color:var(--accent);background:var(--accent-bg)}.vt__nav:disabled{opacity:.25;cursor:default}.vt__counter{flex-shrink:0;font-size:11px;font-family:var(--font-mono);color:var(--text-muted);white-space:nowrap;min-width:36px;text-align:right}
