*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:Nunito,ui-rounded,Segoe UI,sans-serif;background:#131218;color:#f8f8f0;overflow:hidden;-webkit-font-smoothing:antialiased}#root{width:100vw;height:100vh}a{color:#81eeff}a:hover{color:#a3f3ff}:root{--bg: #131218;--bg-panel: #1d1a26;--bg-input: #131218;--fg: #f8f8f0;--fg-muted: #8077a8;--border: #282634;--accent: #ae81ff;--accent-bright: #81eeff;--accent-hover: #a3f3ff;--highlight: #634e89;--error: #cb6488;--error-bright: #ff81ad}.app{width:100%;height:100%;display:flex;flex-direction:column}.app-header{background:var(--bg-panel);border-bottom:2px solid var(--border);padding:0 1rem;height:3rem;display:flex;align-items:center;gap:1rem;flex-shrink:0}.logo{font-size:.9rem;font-weight:700;color:var(--fg);white-space:nowrap}.perf-toggle{all:unset;box-sizing:border-box;padding:.3rem .6rem;border:1px solid var(--border);border-radius:.3rem;color:var(--fg-muted);font-size:.72rem;font-weight:700;letter-spacing:.02em;cursor:pointer;white-space:nowrap}.perf-toggle:hover{border-color:var(--accent);color:var(--fg)}.perf-toggle.enabled{border-color:#2a8f67;color:#9af7cf;background:#2a8f672e}.app-content{flex:1;display:flex;overflow:hidden}.url-input-container{display:flex;flex-direction:column;flex:1;max-width:600px}.url-input-wrapper{display:flex;gap:.5rem}.url-input{all:unset;flex:1;background:var(--bg-input);border:1px solid var(--border);border-radius:.25rem;padding:.35rem .5rem;color:var(--fg);font-size:.8rem;font-family:inherit}.url-input:focus{outline:1px solid var(--accent)}.url-input::placeholder{color:var(--fg-muted)}.submit-button{background:var(--accent-bright);color:var(--bg);border:none;border-radius:.25rem;padding:.35rem .75rem;font-size:.8rem;font-weight:600;font-family:inherit;cursor:pointer}.submit-button:hover:not(:disabled){background:var(--accent-hover)}.submit-button:disabled{opacity:.4;cursor:not-allowed}.repo-info{font-size:.7rem;color:var(--fg-muted);margin-top:.25rem}.sidebar{width:260px;background:var(--bg-panel);border-right:2px solid var(--border);display:flex;flex-direction:column;overflow:hidden}.file-explorer{display:flex;flex-direction:column;border-bottom:2px solid var(--border);min-height:0;flex:1 1 50%}.file-explorer-header{display:flex;align-items:center;justify-content:space-between;padding:.5rem .75rem;background:var(--highlight);font-size:.75rem;font-weight:600}.file-explorer-header h3{font-size:.75rem;font-weight:600}.file-count{font-size:.7rem;color:var(--fg-muted)}.file-explorer-view-toggle{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.4rem .75rem;border-bottom:1px solid var(--border)}.view-toggle-label{display:flex;align-items:center;gap:.3rem;font-size:.7rem;font-weight:600;color:var(--fg-muted);transition:color .15s}.view-toggle-label.active{color:var(--fg)}.view-switch{position:relative;display:inline-flex;align-items:center;width:32px;height:18px;flex-shrink:0;cursor:pointer}.view-switch input{position:absolute;inset:0;margin:0;opacity:0;cursor:pointer}.view-switch-track{width:100%;height:100%;display:flex;align-items:center;padding:2px;background:var(--bg-input);border:1px solid var(--border);border-radius:999px;transition:background .15s,border-color .15s}.view-switch-thumb{width:12px;height:12px;border-radius:50%;background:var(--fg-muted);transition:transform .15s,background .15s}.view-switch input:checked~.view-switch-track{background:var(--accent-bright);border-color:var(--accent-bright)}.view-switch input:checked~.view-switch-track .view-switch-thumb{transform:translate(14px);background:var(--bg)}.view-switch input:focus-visible~.view-switch-track{outline:2px solid var(--accent-bright);outline-offset:2px}.file-list{overflow-y:auto;flex:1}.file-subtitle{font-size:.65rem;color:var(--fg-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:.05rem}.file-pinned-empty{padding:1rem .75rem;color:var(--fg-muted);font-size:.8rem;text-align:center}.file-item{display:flex;align-items:center;gap:.5rem;padding:.4rem .75rem;cursor:pointer;font-size:.8rem;border-left:2px solid transparent;transition:background .1s}.file-item:hover{background:var(--highlight)}.file-item.selected{background:#1e3a5f;border-left-color:var(--accent-bright)}.file-item.just-revealed{animation:reveal-flash 1.5s ease-out}@keyframes reveal-flash{0%,40%{background:var(--accent-bright)}to{background:transparent}}.context-menu{position:fixed;z-index:2000;min-width:160px;background:var(--bg-panel);border:1px solid var(--border);border-radius:.4rem;box-shadow:0 4px 16px #0006;padding:.25rem}.context-menu button{width:100%;display:flex;align-items:center;gap:.5rem;padding:.4rem .6rem;font-size:.78rem;color:var(--fg);background:none;border:none;border-radius:.3rem;text-align:left;cursor:pointer}.context-menu button:hover{background:var(--highlight)}.file-item.non-loadable{cursor:default;opacity:.45}.file-item.non-loadable:hover{background:none}.file-icon{flex-shrink:0;color:var(--fg-muted)}.file-tree-chevron{flex-shrink:0;display:flex;align-items:center;color:var(--fg-muted)}.folder-item .file-name{flex:1;font-weight:500}.file-info{flex:1;min-width:0}.file-name{font-size:.8rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file-meta{display:flex;gap:.4rem;margin-top:.1rem;font-size:.65rem;color:var(--fg-muted)}.component-tree{flex:1 1 50%;display:flex;flex-direction:column;min-height:0}.component-tree-header{display:flex;align-items:center;justify-content:space-between;padding:.5rem .75rem;background:var(--highlight);font-size:.75rem;font-weight:600}.component-tree-header h3{font-size:.75rem;font-weight:600}.component-count{font-size:.7rem;color:var(--fg-muted)}.component-list{overflow-y:auto;flex:1;position:relative}.component-list-inner{position:relative;width:100%}.component-item{position:absolute;left:0;right:0;height:34px;padding:.35rem .75rem;border-left:2px solid transparent;transition:background .1s;display:flex;align-items:center}.component-item:hover{background:var(--highlight)}.component-item.selected{background:#1e3a5f;border-left-color:var(--accent-bright)}.component-controls{display:flex;align-items:center;gap:.4rem}.visibility-toggle{all:unset;cursor:pointer;display:flex;align-items:center;padding:.15rem;border-radius:.2rem;color:var(--fg)}.visibility-toggle:hover{background:var(--border)}.visibility-toggle.hidden{opacity:.35}.component-name{flex:1;font-size:.8rem;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.main-content{flex:1;display:flex;position:relative;overflow:hidden}.empty-state{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:var(--fg-muted);font-size:.9rem}.model-viewer{width:100%;height:100%;background:var(--bg);position:relative}.model-loading-indicator{position:absolute;inset:0;z-index:200;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;background:#131218eb}.model-loading-indicator p{color:var(--fg-muted);font-size:.8rem}.model-loading-progress{width:220px}.model-loading-progress-track{width:100%;height:8px;border-radius:999px;overflow:hidden;background:#ffffff1a;border:1px solid var(--border)}.model-loading-progress-fill{height:100%;width:0;border-radius:inherit;background:linear-gradient(90deg,var(--accent),var(--accent-bright));transition:width .18s ease-out}.model-loading-progress-fill.indeterminate{width:45%;animation:loading-bar-indeterminate 1.1s ease-in-out infinite}.model-loading-progress-label{margin-top:.35rem;text-align:right;font-size:.68rem;color:var(--fg-muted)}@keyframes loading-bar-indeterminate{0%{transform:translate(-120%)}to{transform:translate(260%)}}.kicad-viewer{width:100%;height:100%;position:relative}.kicad-viewer-mount{width:100%;height:100%;display:flex}.kicad-viewer-mount>*{flex:1;min-width:0;min-height:0}.kicad-viewer-loading,.kicad-viewer-error{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;color:var(--fg-muted);font-size:.85rem;background:var(--bg);z-index:1;pointer-events:none}.easyeda-viewer-loading,.easyeda-viewer-error{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;color:var(--fg-muted);font-size:.85rem}.gerber-viewer-loading,.gerber-viewer-error{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;color:var(--fg-muted);font-size:.85rem;background:var(--bg)}.gerber-viewer-error p{color:var(--error-bright)}.gerber-viewer{width:100%;height:100%;display:flex;flex-direction:column;background:#11161f}.gerber-toolbar{height:40px;border-bottom:1px solid #283246;background:#161d29;display:flex;align-items:center;justify-content:space-between;padding:0 .65rem;gap:.55rem;flex-shrink:0}.gerber-toolbar-meta{min-width:0;display:flex;align-items:baseline;gap:.5rem}.gerber-toolbar-title{color:#dce7ff;font-size:.8rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:min(52vw,540px)}.gerber-toolbar-detail{color:#7f8ea8;font-size:.72rem;white-space:nowrap}.gerber-toolbar-actions{display:flex;align-items:center;gap:.35rem}.gerber-toolbar-actions button{all:unset;box-sizing:border-box;border:1px solid #2c3a52;border-radius:.3rem;background:#1b2535;color:#b8c7e6;font-size:.72rem;line-height:1;padding:.35rem .52rem;cursor:pointer}.gerber-toolbar-actions button:hover{border-color:#5f82bc;color:#e8f2ff}.gerber-workspace{flex:1;min-height:0;display:flex}.gerber-layer-panel{width:248px;border-right:1px solid #2a3448;background:#141b27;padding:.55rem;overflow:auto;display:flex;flex-direction:column;gap:.38rem}.gerber-layer-chip{all:unset;box-sizing:border-box;width:100%;border:1px solid #27344b;border-radius:.42rem;padding:.38rem .48rem;display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:.45rem;cursor:pointer;background:#192436}.gerber-layer-chip.is-hidden{opacity:.52;background:#101724}.gerber-layer-chip.is-visible{border-color:#4f6e9e}.gerber-layer-chip:hover{border-color:#6e93ca}.gerber-layer-swatch{width:.55rem;height:.55rem;border-radius:999px;margin-top:.18rem;border:1px solid #203146;grid-row:1 / span 2}.gerber-layer-label{font-size:.74rem;color:#d6e1f8;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gerber-layer-file{font-size:.66rem;color:#7b8aa6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gerber-canvas-wrap{flex:1;min-width:0;position:relative;background:#0f141d;display:flex;align-items:center;justify-content:center;padding:.8rem;overflow:auto}.gerber-canvas-grid{position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(rgba(83,101,130,.16) 1px,transparent 1px),linear-gradient(90deg,rgba(83,101,130,.16) 1px,transparent 1px);background-size:24px 24px}.gerber-canvas{position:relative;width:min(96%,1100px);height:min(96%,900px);min-width:380px;min-height:280px;border:1px solid #2f3c54;border-radius:.45rem;background:#0f1724;box-shadow:inset 0 0 0 1px #ffffff08;overflow:hidden}.gerber-layer-svg{position:absolute;inset:0;mix-blend-mode:screen;opacity:.88}.gerber-layer-svg.is-mask{opacity:.45}.gerber-layer-svg.tone-silkscreen,.gerber-layer-svg.tone-outline{mix-blend-mode:normal}.gerber-empty-selection{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#94a7c8;font-size:.82rem}.gerber-layer-chip.tone-copper .gerber-layer-swatch{background:#f39c12}.gerber-layer-chip.tone-mask .gerber-layer-swatch{background:#2ecc71}.gerber-layer-chip.tone-silkscreen .gerber-layer-swatch{background:#f2f2f2}.gerber-layer-chip.tone-paste .gerber-layer-swatch{background:#a6c8ff}.gerber-layer-chip.tone-drill .gerber-layer-swatch{background:#66d9ef}.gerber-layer-chip.tone-outline .gerber-layer-swatch{background:#ffd166}.gerber-layer-chip.tone-default .gerber-layer-swatch{background:#9aa6c1}@media(max-width:920px){.gerber-workspace{flex-direction:column}.gerber-layer-panel{width:100%;max-height:34vh;border-right:none;border-bottom:1px solid #2a3448}.gerber-canvas{min-width:280px;min-height:240px}}.easyeda-viewer{width:100%;height:100%;display:flex;flex-direction:column;gap:.8rem;padding:1rem;background:var(--bg);color:var(--fg)}.easyeda-viewer.easyeda-archive{overflow:auto}.easyeda-viewer.easyeda-visual{overflow:hidden}.easyeda-viewer.easyeda-pcb-fullscreen{padding:0;gap:0;overflow:hidden;position:relative}.easyeda-viewer.easyeda-pcb-fullscreen .easyeda-pro-summary{position:absolute;top:.5rem;right:.5rem;z-index:11;max-width:min(420px,38vw);padding:.55rem .75rem;background:#0f1016e0;border:1px solid var(--border);border-radius:.35rem;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);font-size:.8rem}.easyeda-pro-sheets{display:flex;flex-wrap:wrap;gap:.3rem;margin:.4rem 0}.easyeda-pro-sheet-btn{font-size:.72rem;padding:.25rem .55rem;background:#ffffff0d;color:var(--fg);border:1px solid var(--border);border-radius:.3rem;cursor:pointer;transition:background .12s ease,border-color .12s ease}.easyeda-pro-sheet-btn:hover{background:#ffffff1f}.easyeda-pro-sheet-btn.active{background:var(--accent, #5fc16e);color:#0f1016;border-color:var(--accent, #5fc16e)}.easyeda-viewer.easyeda-pcb-fullscreen .easyeda-canvas-shell{width:100%;height:100%;min-height:0;gap:0}.easyeda-viewer.easyeda-pcb-fullscreen .easyeda-canvas-toolbar{position:absolute;top:.5rem;left:.5rem;z-index:10;background:#0f1016d9;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid var(--border);border-radius:.35rem;padding:.3rem .45rem}.easyeda-viewer.easyeda-pcb-fullscreen .easyeda-canvas-viewport{border:none;border-radius:0}.easyeda-summary h3{font-size:1rem;margin-bottom:.35rem}.easyeda-summary p{font-size:.82rem;color:var(--fg-muted);margin-bottom:.25rem}.easyeda-muted{font-size:.75rem!important;color:var(--fg-muted)!important}.easyeda-canvas-shell{flex:1;min-height:260px;display:flex;flex-direction:column;gap:.55rem;position:relative}.easyeda-canvas-toolbar{display:flex;align-items:center;gap:.45rem;flex-wrap:wrap}.easyeda-canvas-toolbar button{all:unset;box-sizing:border-box;border:1px solid var(--border);border-radius:.3rem;background:var(--bg-panel);color:var(--fg);font-size:.72rem;line-height:1;padding:.34rem .55rem;cursor:pointer}.easyeda-canvas-toolbar button:hover{border-color:var(--accent);color:var(--accent-bright)}.easyeda-canvas-meta{margin-left:auto;color:var(--fg-muted);font-size:.72rem}.easyeda-canvas-viewport{flex:1;min-height:0;border:1px solid var(--border);border-radius:.35rem;overflow:hidden;background:#0f1016}.easyeda-canvas{width:100%;height:100%;touch-action:none;cursor:grab}.easyeda-canvas.panning{cursor:grabbing}.easyeda-json-details{border:1px solid var(--border);border-radius:.35rem;overflow:hidden;background:var(--bg-panel)}.easyeda-json-details summary{cursor:pointer;padding:.5rem .7rem;font-size:.75rem;color:var(--fg-muted);border-bottom:1px solid var(--border)}.easyeda-json-preview{margin-top:.75rem;border:1px solid var(--border);border-radius:.35rem;padding:.75rem;background:var(--bg-panel);color:var(--fg);font-size:.75rem;line-height:1.5;white-space:pre-wrap;word-break:break-word;max-height:240px;overflow:auto}.easyeda-json-details .easyeda-json-preview{margin:0;border:none;border-radius:0;max-height:280px}.easyeda-entry-list{margin-top:.85rem;border:1px solid var(--border);border-radius:.35rem;overflow:hidden}.easyeda-entry-row{display:grid;grid-template-columns:1fr auto auto;gap:.75rem;align-items:center;padding:.45rem .65rem;font-size:.75rem;border-bottom:1px solid var(--border)}.easyeda-entry-row:last-child{border-bottom:none}.easyeda-entry-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.easyeda-entry-kind,.easyeda-entry-size{color:var(--fg-muted);white-space:nowrap}.markdown-viewer{width:100%;height:100%;display:flex;flex-direction:column;background:var(--bg)}.markdown-viewer-loading,.markdown-viewer-error{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;color:var(--fg-muted);font-size:.85rem;background:var(--bg)}.markdown-viewer-error p{color:var(--error-bright)}.markdown-viewer-toolbar{height:40px;border-bottom:1px solid var(--border);background:var(--bg-panel);display:flex;align-items:center;padding:0 .75rem;flex-shrink:0}.markdown-viewer-title{color:var(--fg);font-size:.8rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.markdown-body{flex:1;overflow-y:auto;padding:1.5rem 2rem;max-width:860px;color:var(--fg);font-size:.9rem;line-height:1.6}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4{color:var(--fg);margin:1.4em 0 .6em;line-height:1.3}.markdown-body h1{font-size:1.6rem;border-bottom:1px solid var(--border);padding-bottom:.3em}.markdown-body h2{font-size:1.3rem;border-bottom:1px solid var(--border);padding-bottom:.3em}.markdown-body h3{font-size:1.1rem}.markdown-body p,.markdown-body ul,.markdown-body ol,.markdown-body blockquote{margin:.6em 0}.markdown-body a{color:var(--accent-bright)}.markdown-body code{background:var(--bg-panel);border:1px solid var(--border);border-radius:.3rem;padding:.1em .4em;font-size:.85em}.markdown-body pre{background:var(--bg-panel);border:1px solid var(--border);border-radius:.5rem;padding:.9em 1em;overflow-x:auto}.markdown-body pre code{background:none;border:none;padding:0}.markdown-body img{max-width:100%;height:auto}.markdown-body blockquote{border-left:3px solid var(--accent);padding-left:1em;color:var(--fg-muted)}.markdown-body table{border-collapse:collapse;margin:.6em 0}.markdown-body th,.markdown-body td{border:1px solid var(--border);padding:.4em .7em}.pdf-viewer{width:100%;height:100%;background:var(--bg)}.pdf-viewer-loading,.pdf-viewer-error{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;color:var(--fg-muted);font-size:.85rem;background:var(--bg)}.pdf-viewer-error p{color:var(--error-bright)}.pdf-viewer-frame{width:100%;height:100%;border:none}.code-viewer{width:100%;height:100%;display:flex;flex-direction:column;background:var(--bg)}.code-viewer-loading,.code-viewer-error{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;color:var(--fg-muted);font-size:.85rem;background:var(--bg)}.code-viewer-error p{color:var(--error-bright)}.code-viewer-toolbar{height:40px;border-bottom:1px solid var(--border);background:var(--bg-panel);display:flex;align-items:center;justify-content:space-between;padding:0 .75rem;gap:.55rem;flex-shrink:0}.code-viewer-title{color:var(--fg);font-size:.8rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.code-viewer-detail{color:var(--fg-muted);font-size:.72rem;white-space:nowrap}.code-viewer-body{flex:1;display:flex;overflow:auto;font-family:Cascadia Code,Consolas,SF Mono,Menlo,monospace;font-size:.8rem;line-height:1.5}.code-gutter,.code-content{margin:0;white-space:pre}.code-gutter{flex-shrink:0;padding:.85rem .75rem;text-align:right;color:var(--fg-muted);background:var(--bg-panel);-webkit-user-select:none;user-select:none}.code-content{flex:1;padding:.85rem 1rem;color:var(--fg);min-width:max-content}.hljs-comment,.hljs-quote{color:var(--fg-muted);font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-tag,.hljs-built_in{color:var(--accent)}.hljs-string,.hljs-doctag,.hljs-template-tag{color:#9ece6a}.hljs-number,.hljs-literal,.hljs-symbol{color:var(--accent-bright)}.hljs-title,.hljs-title.function_,.hljs-title.class_,.hljs-section{color:#ffd166}.hljs-attr,.hljs-attribute,.hljs-property,.hljs-variable,.hljs-params{color:var(--accent-bright)}.hljs-meta,.hljs-type{color:var(--accent)}.hljs-deletion{color:var(--error-bright)}.hljs-addition{color:#9ece6a}.image-viewer{width:100%;height:100%;display:flex;flex-direction:column;background:var(--bg)}.image-viewer-loading,.image-viewer-error{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;color:var(--fg-muted);font-size:.85rem;background:var(--bg)}.image-viewer-error p{color:var(--error-bright)}.image-viewer-toolbar{height:40px;border-bottom:1px solid var(--border);background:var(--bg-panel);display:flex;align-items:center;padding:0 .75rem;flex-shrink:0}.image-viewer-title{color:var(--fg);font-size:.8rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.image-viewer-body{flex:1;overflow:auto;display:flex;align-items:center;justify-content:center;padding:1rem}.image-viewer-body img{max-width:100%;max-height:100%;object-fit:contain}.csv-viewer{width:100%;height:100%;display:flex;flex-direction:column;background:var(--bg)}.csv-viewer-loading,.csv-viewer-error{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;color:var(--fg-muted);font-size:.85rem;background:var(--bg)}.csv-viewer-error p{color:var(--error-bright)}.csv-viewer-toolbar{height:40px;border-bottom:1px solid var(--border);background:var(--bg-panel);display:flex;align-items:center;justify-content:space-between;padding:0 .75rem;gap:.55rem;flex-shrink:0}.csv-viewer-title{color:var(--fg);font-size:.8rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.csv-viewer-detail{color:var(--fg-muted);font-size:.72rem;white-space:nowrap}.csv-viewer-body{flex:1;overflow:auto}.csv-table{border-collapse:collapse;font-size:.8rem;white-space:nowrap}.csv-table th,.csv-table td{padding:.4rem .7rem;border-bottom:1px solid var(--border);border-right:1px solid var(--border);text-align:left}.csv-table th{position:sticky;top:0;background:var(--bg-panel);color:var(--fg);font-weight:600;z-index:1}.csv-table tbody tr:nth-child(2n){background:#ffffff08}.csv-table tbody tr:hover{background:var(--highlight)}.csv-table td a{color:var(--accent-bright);text-decoration:none}.csv-table td a:hover{text-decoration:underline}.material-editor{border-top:2px solid var(--border);padding:.5rem;background:var(--bg-panel);flex-shrink:0}.material-toggle{all:unset;width:100%;box-sizing:border-box;display:flex;align-items:center;gap:.4rem;padding:.4rem .5rem;font-size:.8rem;font-family:inherit;color:var(--fg);cursor:pointer;border-radius:.25rem}.material-toggle:hover{background:var(--highlight)}.material-controls{display:flex;flex-direction:column;gap:.6rem;margin-top:.5rem;padding:0 .25rem;max-height:34vh;overflow:auto}.material-empty-hint{font-size:.74rem;color:var(--fg-muted);line-height:1.4}.material-section{display:flex;flex-direction:column;gap:.3rem}.material-section label{font-size:.7rem;color:var(--fg-muted);font-weight:600}.material-section input[type=color]{width:100%;height:28px;border:1px solid var(--border);border-radius:.25rem;background:var(--bg-input);cursor:pointer;padding:2px}.material-section input[type=range]{width:100%;height:3px;background:var(--highlight);border-radius:2px;outline:none;-webkit-appearance:none;appearance:none}.material-section input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:12px;height:12px;background:var(--accent);border-radius:50%;cursor:pointer}.material-section input[type=range]::-moz-range-thumb{width:12px;height:12px;background:var(--accent);border:none;border-radius:50%;cursor:pointer}.checkbox-label{display:flex!important;flex-direction:row!important;align-items:center;gap:.4rem;cursor:pointer;font-size:.8rem!important;color:var(--fg)!important;font-weight:400!important}.checkbox-label input[type=checkbox]{width:14px;height:14px;cursor:pointer;accent-color:var(--accent)}.loading-overlay{position:fixed;inset:0;background:#131218d9;display:flex;align-items:center;justify-content:center;z-index:1000}.loading-spinner{text-align:center}.spinner{width:32px;height:32px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;margin:0 auto .75rem}@keyframes spin{to{transform:rotate(360deg)}}.loading-spinner p{font-size:.85rem;color:var(--fg-muted)}.loading-bar{width:220px;margin-bottom:.75rem}.loading-bar-track{width:100%;height:6px;border-radius:999px;overflow:hidden;background:#ffffff1a;border:1px solid var(--border)}.loading-bar-fill{height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--accent),var(--accent-bright))}.loading-bar-fill.indeterminate{width:45%;animation:loading-bar-indeterminate 1.1s ease-in-out infinite}.error-message{background:var(--bg-panel);border:1px solid var(--border);border-radius:.5rem;padding:1.5rem;text-align:center;max-width:360px}.error-icon{font-size:2rem;margin-bottom:.5rem}.error-message p{font-size:.85rem;color:var(--error-bright)}.landing{width:100%;height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(10deg,#111928,#1d162a)}.landing-inner{display:flex;flex-direction:column;align-items:center;text-align:center;max-width:520px;padding:2rem}.landing-inner h1{font-size:3rem;font-weight:300;margin-bottom:1rem}.landing-inner>p{font-size:1.1rem;line-height:1.6;margin-bottom:1.5rem;color:var(--fg)}.landing-inner strong{background:linear-gradient(90deg,#b187ff,#ff80ac);-webkit-background-clip:text;background-clip:text;color:transparent}.landing-inner input{all:unset;box-sizing:border-box;display:block;width:100%;font-size:1.1rem;font-family:inherit;text-align:center;padding:.5rem;border-radius:.25rem;background:linear-gradient(90deg,#8864cb,#cb6488);color:var(--fg);margin-bottom:1rem}.landing-inner input::placeholder{color:#f8f8f099}.landing-inner input:focus{outline:1px solid var(--accent)}.landing-inner input:disabled{opacity:.5}.landing-status{color:var(--fg-muted);font-size:.9rem;margin-bottom:.5rem}.landing-error{color:var(--error-bright);font-size:.9rem;margin-bottom:.5rem}.landing-note{color:var(--fg-muted);font-size:.85rem;line-height:1.6}.landing-credits{margin-top:2rem;color:var(--fg-muted);font-size:.75rem;opacity:.6}.landing-credits-link{color:inherit;text-decoration:underline;text-underline-offset:2px}.landing-credits-link:hover{color:var(--accent);opacity:1}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:#ae81ff66}::-webkit-scrollbar-thumb:hover{background:var(--accent)}@media(max-width:768px){.sidebar{width:200px}.app-header{flex-wrap:wrap;height:auto;padding:.5rem;gap:.5rem}.perf-toggle{width:100%;text-align:center}}.ship-diff-trigger{display:inline-flex;align-items:center;gap:.35rem}.ship-diff-overlay{position:fixed;inset:0;z-index:1000;background:#0000008c;display:flex;align-items:center;justify-content:center;padding:2rem 1rem}.ship-diff-panel{background:var(--bg-panel);border:1px solid var(--border);border-radius:.6rem;width:min(880px,100%);max-height:100%;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 20px 60px #00000080}.ship-diff-header{display:flex;align-items:center;justify-content:space-between;padding:.85rem 1rem;border-bottom:1px solid var(--border);flex-shrink:0}.ship-diff-title{display:flex;align-items:center;gap:.5rem;font-weight:700;color:var(--fg)}.ship-diff-title svg{color:var(--accent)}.ship-diff-repo{font-weight:400;font-size:.8rem;color:var(--fg-muted);font-family:ui-monospace,monospace}.ship-diff-close{all:unset;cursor:pointer;color:var(--fg-muted);display:flex;padding:.2rem;border-radius:.3rem}.ship-diff-close:hover{color:var(--fg);background:var(--highlight)}.ship-diff-selectors{display:flex;align-items:flex-end;gap:.75rem;padding:.85rem 1rem;border-bottom:1px solid var(--border);flex-shrink:0}.ship-diff-selectors label{display:flex;flex-direction:column;gap:.3rem;flex:1;min-width:0;font-size:.7rem;color:var(--fg-muted);text-transform:uppercase;letter-spacing:.04em}.ship-diff-selectors select{background:var(--bg-input);color:var(--fg);border:1px solid var(--border);border-radius:.35rem;padding:.4rem .5rem;font-size:.8rem;font-family:ui-monospace,monospace;max-width:100%}.ship-diff-selectors select:focus{outline:none;border-color:var(--accent)}.ship-diff-arrow{color:var(--accent);font-size:1.1rem;padding-bottom:.4rem}.ship-diff-status{display:flex;align-items:center;gap:.5rem;padding:2rem 1rem;justify-content:center;color:var(--fg-muted);font-size:.85rem}.ship-diff-status.error{color:var(--error-bright)}.ship-diff-status.warn{color:#e5c07b;padding:.6rem 1rem;justify-content:flex-start}.spin{animation:ship-spin .9s linear infinite}@keyframes ship-spin{to{transform:rotate(360deg)}}.ship-diff-body{overflow-y:auto;padding:.5rem 0 .75rem}.ship-diff-summary{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;padding:.5rem 1rem}.ship-summary-commits{display:inline-flex;align-items:center;gap:.3rem;font-size:.8rem;font-weight:700;color:var(--fg)}.ship-badge{font-size:.72rem;font-weight:700;padding:.15rem .45rem;border-radius:.8rem;border:1px solid transparent}.ship-badge.added{color:#7ee787;background:#7ee7871f;border-color:#7ee7874d}.ship-badge.modified{color:var(--accent-bright);background:#81eeff1a;border-color:#81eeff4d}.ship-badge.removed{color:var(--error-bright);background:#ff81ad1a;border-color:#ff81ad4d}.ship-badge.renamed{color:#e5c07b;background:#e5c07b1a;border-color:#e5c07b4d}.ship-summary-churn{margin-left:auto;display:inline-flex;gap:.5rem;font-family:ui-monospace,monospace;font-size:.8rem;font-weight:700}.ship-summary-churn .add,.ship-file-stat .add,.ship-patch-line.add{color:#7ee787}.ship-summary-churn .del,.ship-file-stat .del,.ship-patch-line.del{color:var(--error-bright)}.ship-diff-latest{padding:.4rem 1rem .6rem;font-size:.8rem;color:var(--fg-muted);border-bottom:1px solid var(--border)}.ship-diff-latest strong{color:var(--fg);font-weight:600}.ship-diff-meta{display:block;font-size:.72rem;margin-top:.15rem}.ship-file-list{padding:.5rem .75rem;display:flex;flex-direction:column;gap:.25rem}.ship-file{border:1px solid var(--border);border-radius:.35rem;overflow:hidden}.ship-file-header{all:unset;box-sizing:border-box;width:100%;display:flex;align-items:center;gap:.4rem;padding:.4rem .5rem;cursor:pointer;font-size:.8rem;color:var(--fg)}.ship-file-header:disabled{cursor:default}.ship-file-header:not(:disabled):hover{background:var(--highlight)}.ship-file-chevron{display:inline-flex;color:var(--fg-muted);width:13px}.ship-file.added .ship-file-icon{color:#7ee787}.ship-file.modified .ship-file-icon{color:var(--accent-bright)}.ship-file.removed .ship-file-icon{color:var(--error-bright)}.ship-file.renamed .ship-file-icon{color:#e5c07b}.ship-file-name{font-family:ui-monospace,monospace;font-size:.76rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.ship-file-oldname{color:var(--fg-muted);text-decoration:line-through}.ship-file-stat{display:inline-flex;gap:.4rem;font-family:ui-monospace,monospace;font-size:.72rem;font-weight:700;flex-shrink:0}.ship-patch{margin:0;padding:.4rem 0;background:var(--bg-input);border-top:1px solid var(--border);overflow-x:auto;font-family:ui-monospace,monospace;font-size:.72rem;line-height:1.5}.ship-patch-line{padding:0 .75rem;white-space:pre}.ship-patch-line.add{background:#7ee78714}.ship-patch-line.del{background:#ff81ad14}.ship-patch-line.hunk{color:var(--accent);background:#ae81ff14}.ship-patch-line.ctx{color:var(--fg-muted)}
