*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;background:#f5f7fa;color:#333;overflow:hidden}.app-container{display:flex;flex-direction:column;height:100vh}.header{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:1rem 2rem;display:flex;justify-content:space-between;align-items:center;box-shadow:0 2px 8px #0000001a}.header h1{font-size:1.5rem;font-weight:600}.view-switcher{display:flex;gap:0;border-radius:6px;overflow:hidden;border:2px solid rgba(255,255,255,.3)}.view-btn{background:transparent;color:#fffc;border:none;padding:.4rem 1rem;font-size:.85rem;font-weight:500;cursor:pointer;transition:all .2s}.view-btn.active{background:#ffffff40;color:#fff}.view-btn:hover:not(.active){background:#ffffff1f;color:#fff}.file-input-container{position:relative}.file-input-label{background:#fff;color:#667eea;padding:.5rem 1.5rem;border-radius:6px;cursor:pointer;font-weight:500;transition:all .2s;display:inline-block}.file-input-label:hover{transform:translateY(-2px);box-shadow:0 4px 12px #00000026}#file-input{display:none}.main-content{display:flex;flex:1;overflow:hidden}.sidebar{width:320px;background:#fff;overflow-y:auto;box-shadow:0 0 20px #0000000d;z-index:10}.sidebar-left{border-right:1px solid #e1e8ed}.sidebar-right{border-left:1px solid #e1e8ed}.panel{padding:1.5rem;border-bottom:1px solid #e1e8ed}.panel h2{font-size:1.1rem;margin-bottom:1rem;color:#667eea}.panel h3{font-size:.9rem;margin-bottom:.5rem;color:#555;font-weight:600}.filter-group{margin-bottom:1.5rem}.checkbox-label{display:flex;align-items:center;margin-bottom:.5rem;cursor:pointer}.checkbox-label input{margin-right:.5rem;cursor:pointer}.libsignal-badge,.other-badge,.inner-badge,.precondition-badge,.postcondition-badge,.translation-badge,.spec-link-badge,.lang-badge-rust,.lang-badge-lean,.exec-badge,.proof-badge,.spec-badge{padding:.25rem .75rem;border-radius:4px;font-size:.85rem;font-weight:500}.libsignal-badge{background:#e3f2fd;color:#1976d2}.other-badge{background:#f1f8e9;color:#558b2f}.inner-badge{background:#e8eaf6;color:#3949ab}.precondition-badge{background:#fff3e0;color:#e65100}.postcondition-badge{background:#fce4ec;color:#c2185b}.translation-badge{background:#ede9fe;color:#7c3aed}.spec-link-badge{background:#ecfeff;color:#0891b2}.lang-badge-rust{background:#fef3c7;color:#92400e}.lang-badge-lean{background:#dbeafe;color:#1e40af}.exec-badge{background:#e3f2fd;color:#1565c0}.proof-badge{background:#f3e5f5;color:#7b1fa2}.spec-badge{background:#fff8e1;color:#f57c00}.preset-row{margin-bottom:.5rem}.preset-select{width:100%;padding:.4rem .5rem;border:1px solid #ddd;border-radius:4px;font-size:.85rem;background:#f8f9fa;cursor:pointer}.preset-select:hover{border-color:#aaa}.preset-select:focus{outline:none;border-color:#2196f3}.input-label{display:block;margin-bottom:.75rem}.input-label span{display:block;font-size:.85rem;color:#555;margin-bottom:.25rem}.search-input{width:100%;padding:.5rem;border:1px solid #ddd;border-radius:4px;font-size:.9rem;transition:border-color .2s}.search-input:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 2px #667eea26}select.search-input{appearance:auto;cursor:pointer;background:#fff}.slider-label{display:block;margin-bottom:.75rem}.slider-label span{display:block;margin-bottom:.25rem;font-size:.9rem}.slider-label small{display:block;color:#888;font-size:.75rem;margin-top:.25rem}.slider{width:100%;height:6px;border-radius:3px;background:#ddd;outline:none;-webkit-appearance:none}.slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:18px;height:18px;border-radius:50%;background:#667eea;cursor:pointer}.slider::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:#667eea;cursor:pointer}.button-group{display:flex;flex-direction:column;gap:.5rem}.btn{padding:.6rem 1rem;border:none;border-radius:6px;font-size:.9rem;font-weight:500;cursor:pointer;transition:all .2s}.btn-secondary{background:#f0f0f0;color:#333}.btn-secondary:hover{background:#e0e0e0;transform:translateY(-1px)}.btn-primary{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.btn-primary:hover{background:linear-gradient(135deg,#5a6fd6,#6a4190);transform:translateY(-1px);box-shadow:0 4px 12px #667eea4d}.stats-container{font-size:.9rem}.stat-item{display:flex;justify-content:space-between;align-items:center;padding:.5rem 0;border-bottom:1px solid #f0f0f0}.stat-item:last-child{border-bottom:none}.stat-label{font-weight:500;color:#666}.stat-value{font-weight:600;color:#333}.stat-detail{font-size:.8rem;color:#999;margin-left:.25rem}.legend-container{display:flex;flex-direction:column;gap:.5rem}.legend-item{display:flex;align-items:center;gap:.5rem;font-size:.9rem}.legend-dot{width:14px;height:14px;border-radius:50%;border:2px solid white;box-shadow:0 1px 3px #0003}.file-list-details{margin-top:.5rem}.file-list-details summary{cursor:pointer;padding:.5rem;background:#f5f5f5;border-radius:4px;font-size:.85rem;color:#555}.file-list-details summary:hover{background:#eee}.file-list-details[open] summary{border-radius:4px 4px 0 0}.file-list{max-height:200px;overflow-y:auto;border:1px solid #ddd;border-top:none;border-radius:0 0 4px 4px;background:#fff}.file-list-item{padding:.35rem .5rem;font-size:.8rem;cursor:pointer;display:flex;align-items:center;gap:.5rem;border-bottom:1px solid #f0f0f0}.file-list-item:last-child{border-bottom:none}.file-list-item:hover{background:#e8f4fd}.file-list-item.selected{background:#d4edfa;font-weight:500}.file-list-item .file-icon{color:#888;font-size:.75rem}.file-list-item .file-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-list-item .file-count{font-size:.7rem;color:#999;background:#f0f0f0;padding:.1rem .4rem;border-radius:10px;flex-shrink:0}.file-list-item .file-disambig{font-size:.7rem;color:#888;margin-left:.25rem;margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:120px}.file-list-item.has-duplicates .file-name{flex:0 0 auto;max-width:100px}.file-list-item.has-duplicates:hover{background:#fff3e0}.file-list-item.has-duplicates.selected{background:#ffe0b2}.input-with-dropdown{position:relative}.disambiguation-dropdown{position:absolute;top:100%;left:0;right:0;background:#fff;border:1px solid #ddd;border-radius:6px;box-shadow:0 4px 12px #00000026;z-index:1000;max-height:250px;overflow-y:auto;margin-top:4px}.disambiguation-dropdown .dropdown-header{padding:8px 12px;background:#f5f5f5;border-bottom:1px solid #ddd;font-size:.8rem;color:#666;font-weight:500}.disambiguation-dropdown .dropdown-item{padding:8px 12px;cursor:pointer;display:flex;align-items:center;gap:8px;font-size:.85rem;border-bottom:1px solid #f0f0f0}.disambiguation-dropdown .dropdown-item:last-child{border-bottom:none}.disambiguation-dropdown .dropdown-item:hover{background:#e8f4fd}.disambiguation-dropdown .dropdown-item.selected{background:#d4edfa}.disambiguation-dropdown .dropdown-item .file-path{color:#666;font-size:.75rem;margin-left:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:200px}.disambiguation-dropdown .dropdown-item .checkbox{width:16px;height:16px;flex-shrink:0}.disambiguation-dropdown .dropdown-actions{padding:8px 12px;border-top:1px solid #ddd;display:flex;gap:8px;background:#f5f5f5}.disambiguation-dropdown .dropdown-actions button{flex:1;padding:6px 12px;border:none;border-radius:4px;cursor:pointer;font-size:.8rem}.disambiguation-dropdown .dropdown-actions .btn-apply{background:#1976d2;color:#fff}.disambiguation-dropdown .dropdown-actions .btn-apply:hover{background:#1565c0}.disambiguation-dropdown .dropdown-actions .btn-cancel{background:#e0e0e0;color:#333}.disambiguation-dropdown .dropdown-actions .btn-cancel:hover{background:#d0d0d0}.disambiguation-dropdown .dropdown-actions .btn-all{background:#4caf50;color:#fff}.disambiguation-dropdown .dropdown-actions .btn-all:hover{background:#43a047}.graph-section{flex:1;display:flex;flex-direction:column;position:relative;background:#fff}.query-label{background:#f0f4ff;border-bottom:1px solid #d0d8e8;padding:.35rem 1rem;font-size:.8rem;color:#555;font-family:SF Mono,Fira Code,Cascadia Code,monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.query-label .query-type{color:#5b21b6;font-weight:600}.query-label .query-param{color:#1e40af}.query-label .query-dim{color:#999}.graph-container{flex:1;position:relative;overflow:hidden}.graph-instructions{background:#f8f9fa;padding:1rem 1.5rem;border-top:1px solid #e1e8ed;font-size:.85rem}.graph-instructions ul{list-style:none;display:flex;gap:1.5rem;flex-wrap:wrap}.graph-instructions li{color:#666}.node-info{font-size:.9rem}.node-detail{margin-bottom:1rem}.node-detail h3{font-size:1.1rem;margin-bottom:.5rem;color:#333}.node-detail strong{color:#666;display:block;margin-bottom:.25rem}.code-block{display:block;background:#f5f5f5;padding:.5rem;border-radius:4px;font-family:Monaco,Courier New,monospace;font-size:.8rem;overflow-x:auto;margin-top:.25rem;white-space:pre-wrap;word-break:break-all}.github-link{display:inline-flex;align-items:center;gap:.25rem;padding:.5rem .75rem;background:linear-gradient(135deg,#24292e,#3a3f44);color:#fff;text-decoration:none;border-radius:6px;font-size:.85rem;font-weight:500;transition:all .2s ease;box-shadow:0 2px 4px #0000001a}.github-link:hover{background:linear-gradient(135deg,#3a3f44,#4a5055);transform:translateY(-1px);box-shadow:0 4px 8px #00000026}.node-list{list-style:none;max-height:200px;overflow-y:auto;background:#f8f9fa;padding:.5rem;border-radius:4px;margin-top:.25rem}.node-list li{padding:.25rem 0;border-bottom:1px solid #e1e8ed}.node-list li:last-child{border-bottom:none}.node-badge{display:inline-block;padding:.25rem .75rem;border-radius:4px;font-size:.75rem;font-weight:600;margin-bottom:.5rem}.badge-libsignal{background:#e3f2fd;color:#1976d2}.badge-other{background:#f1f8e9;color:#558b2f}.badge-verified{background:#dcfce7;color:#15803d}.badge-failed{background:#fee2e2;color:#dc2626}.badge-unverified{background:#f3f4f6;color:#6b7280}.badge-unknown{background:#dbeafe;color:#2563eb}.similar-lemmas-list{list-style:none;padding:0;margin:.5rem 0 0}.similar-lemma-item{padding:.5rem;margin-bottom:.5rem;background:linear-gradient(135deg,#f8f9fa,#fff);border-radius:6px;border-left:3px solid #6c5ce7}.similar-lemma-name{font-weight:600;color:#2d3436;font-size:.9rem;display:block}.similar-lemma-score{display:inline-block;background:#6c5ce7;color:#fff;font-size:.7rem;padding:.1rem .4rem;border-radius:10px;margin-top:.25rem;font-weight:600}.similar-lemma-meta{font-size:.75rem;color:#636e72;margin-top:.25rem;font-family:Monaco,Courier New,monospace}.hidden-nodes-list{list-style:none;max-height:150px;overflow-y:auto;background:#fff3e0;padding:.5rem;border-radius:4px;margin:.5rem 0;border:1px solid #ffcc80}.hidden-node-item{padding:.3rem .5rem;margin-bottom:.25rem;background:#fff;border-radius:3px;font-size:.85rem;color:#e65100;border-left:3px solid #ff9800;transition:all .2s}.hidden-node-item:hover{background:#ffe0b2;transform:translate(2px)}.hidden-node-item:last-child{margin-bottom:0}.placeholder{color:#999;font-style:italic;text-align:center;padding:2rem 1rem}.footer{background:#f8f9fa;border-top:1px solid #e1e8ed;padding:.75rem 2rem;text-align:center;font-size:.85rem;color:#666}.footer a{color:#667eea;text-decoration:none}.footer a:hover{text-decoration:underline}.link{fill:none}.node{transition:all .2s}.node:hover{filter:brightness(1.2)}.label{pointer-events:none;-webkit-user-select:none;user-select:none}.sidebar::-webkit-scrollbar,.node-list::-webkit-scrollbar{width:6px}.sidebar::-webkit-scrollbar-track,.node-list::-webkit-scrollbar-track{background:#f1f1f1}.sidebar::-webkit-scrollbar-thumb,.node-list::-webkit-scrollbar-thumb{background:#888;border-radius:3px}.sidebar::-webkit-scrollbar-thumb:hover,.node-list::-webkit-scrollbar-thumb:hover{background:#555}.bp-legend{position:absolute;top:10px;right:10px;background:#fffffff2;border:1px solid #d0d0d0;border-radius:8px;padding:0;font-size:.78rem;box-shadow:0 2px 8px #0000001f;z-index:10;max-width:220px;-webkit-user-select:none;user-select:none}.bp-legend-header{display:flex;justify-content:space-between;align-items:center;padding:6px 10px;cursor:pointer;border-bottom:1px solid #e8e8e8;border-radius:8px 8px 0 0;background:#fafafa}.bp-legend-header:hover{background:#f0f0f0}.bp-legend-body{padding:6px 10px 8px}.bp-legend-section{margin-top:6px;margin-bottom:2px;color:#555;font-size:.72rem;text-transform:uppercase;letter-spacing:.03em}.bp-legend-section:first-child{margin-top:0}.bp-legend-item{display:flex;align-items:center;gap:6px;padding:1px 0;color:#444}.bp-legend-item svg{flex-shrink:0}.bp-swatch{display:inline-block;width:14px;height:14px;border-radius:3px;flex-shrink:0}.bp-legend-arrow{font-size:.65rem;color:#888}.bp-file-group{pointer-events:none}.bp-file-label{font-size:9px;font-family:system-ui,sans-serif;fill:#00000073;font-weight:600;pointer-events:none}.cm-legend{position:absolute;top:10px;right:10px;background:#fffffff2;border:1px solid #d0d0d0;border-radius:8px;font-size:.78rem;box-shadow:0 2px 8px #00000014;z-index:10;max-width:220px;-webkit-user-select:none;user-select:none}.cm-legend-header{display:flex;justify-content:space-between;align-items:center;padding:6px 10px;cursor:pointer;border-bottom:1px solid #e8e8e8;border-radius:8px 8px 0 0;background:#fafafa}.cm-legend-header:hover{background:#f0f0f0}.cm-legend-body{padding:6px 10px 8px}.cm-legend-section{margin-top:6px;margin-bottom:2px;color:#555;font-size:.72rem;text-transform:uppercase;letter-spacing:.03em}.cm-legend-item{display:flex;align-items:center;gap:6px;padding:1px 0;color:#444}.cm-legend-item svg{flex-shrink:0}.cm-legend-arrow{font-size:.65rem;color:#888}.cm-crate-group:hover .cm-crate-box{filter:brightness(.96)}.cm-edge{transition:stroke-opacity .15s}.cm-info{font-size:.85rem;line-height:1.5}.cm-info h3{font-size:1rem;margin-bottom:.3rem;color:#333}.cm-info h4{font-size:.82rem;margin-top:.6rem;margin-bottom:.15rem;color:#555}.cm-info ul{list-style:none;padding-left:0;margin:0}.cm-info ul li{padding:1px 0;font-size:.8rem;color:#444}.cm-info ul li:before{content:"•";color:#888;margin-right:.4em}.cm-hint{margin-top:.6rem;font-size:.75rem;color:#999}.right-sidebar-tabs{display:flex;border-bottom:2px solid #e5e7eb;margin-bottom:.5rem}.sidebar-tab{flex:1;padding:.5rem .75rem;background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;cursor:pointer;font-size:.85rem;font-weight:500;color:#6b7280;transition:color .15s,border-color .15s}.sidebar-tab:hover{color:#374151}.sidebar-tab.active{color:#667eea;border-bottom-color:#667eea}.ai-chat-container{display:flex;flex-direction:column;height:100%;min-height:0}.ai-static-onboarding{padding:.5rem;font-size:.85rem;line-height:1.5}.ai-onboarding-title{font-weight:600;font-size:.9rem;margin:0 0 .5rem;color:#374151}.ai-suggested-queries{display:flex;flex-direction:column;gap:.35rem;margin-top:.75rem}.ai-query-chip{display:inline-block;padding:.35rem .65rem;background:#f0f0ff;border:1px solid #d4d4f0;border-radius:.5rem;font-size:.8rem;cursor:pointer;transition:background .15s,border-color .15s;text-align:left;color:#4338ca}.ai-query-chip:hover{background:#e0e0ff;border-color:#667eea}.ai-query-chip .chip-label{font-weight:500}.ai-query-chip .chip-desc{display:block;font-size:.72rem;color:#6b7280;margin-top:.1rem}.ai-chat-messages{flex:1;overflow-y:auto;padding:.5rem;display:flex;flex-direction:column;gap:.5rem}.ai-msg{padding:.5rem .7rem;border-radius:.75rem;font-size:.82rem;line-height:1.45;max-width:95%;word-wrap:break-word}.ai-msg-user{background:#667eea;color:#fff;align-self:flex-end;border-bottom-right-radius:.2rem}.ai-msg-assistant{background:#f3f4f6;color:#1f2937;align-self:flex-start;border-bottom-left-radius:.2rem}.ai-msg-tool-action{font-size:.75rem;color:#6b7280;padding:.2rem .5rem;background:#fefce8;border-left:2px solid #eab308;border-radius:.25rem;align-self:flex-start}.ai-msg-error{font-size:.78rem;color:#dc2626;padding:.4rem .6rem;background:#fef2f2;border-radius:.5rem;align-self:flex-start}.ai-provider-setup{padding:.75rem;background:#f9fafb;border-radius:.5rem;margin-top:.5rem;font-size:.82rem}.ai-provider-setup p{margin:0 0 .5rem;color:#4b5563}.ai-key-input-row{display:flex;gap:.4rem}.ai-key-input{flex:1;padding:.35rem .5rem;border:1px solid #d1d5db;border-radius:.375rem;font-size:.8rem}.ai-key-save-btn{padding:.35rem .75rem;font-size:.8rem}.ai-persist-label{margin-top:.4rem;font-size:.75rem}.ai-chat-input-area{border-top:1px solid #e5e7eb;padding:.5rem}.ai-chat-input-row{display:flex;gap:.35rem}.ai-chat-input{flex:1;padding:.4rem .6rem;border:1px solid #d1d5db;border-radius:.5rem;font-size:.82rem;outline:none}.ai-chat-input:focus{border-color:#667eea;box-shadow:0 0 0 2px #667eea26}.ai-chat-send{padding:.4rem .75rem;font-size:.82rem}.ai-chat-actions{display:flex;align-items:center;gap:.5rem;margin-top:.3rem}.ai-chat-stop{padding:.2rem .6rem;font-size:.75rem}.ai-chat-status{font-size:.72rem;color:#9ca3af}.ai-settings-gear{background:none;border:none;font-size:1.1rem;cursor:pointer;color:#9ca3af;padding:.3rem .5rem;margin-left:auto;transition:color .15s}.ai-settings-gear:hover{color:#667eea}.ai-settings-overlay{position:fixed;inset:0;background:#0006;z-index:1000;display:flex;align-items:center;justify-content:center}.ai-settings-dialog{background:#fff;border-radius:.75rem;box-shadow:0 20px 60px #00000026;width:380px;max-width:90vw}.ai-settings-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid #e5e7eb}.ai-settings-header h3{margin:0;font-size:1rem;font-weight:600;color:#374151}.ai-settings-close-btn{background:none;border:none;font-size:1.5rem;cursor:pointer;color:#9ca3af;line-height:1;padding:0}.ai-settings-close-btn:hover{color:#374151}.ai-settings-body{padding:1rem 1.25rem}.ai-settings-section{margin-bottom:.85rem}.ai-settings-label{display:block;font-size:.8rem;font-weight:500;color:#4b5563;margin-bottom:.3rem}.ai-settings-select,.ai-settings-input{width:100%;padding:.4rem .6rem;border:1px solid #d1d5db;border-radius:.375rem;font-size:.82rem;box-sizing:border-box}.ai-settings-select:focus,.ai-settings-input:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 2px #667eea26}.ai-settings-actions{display:flex;gap:.5rem;margin-top:1rem}.ai-settings-actions .btn{flex:1}.ai-toast-container{position:fixed;top:60px;left:50%;transform:translate(-50%);z-index:999;display:flex;flex-direction:column;gap:.4rem;pointer-events:none}.ai-toast{background:#1f2937;color:#fff;padding:.5rem 1rem;border-radius:.5rem;font-size:.8rem;box-shadow:0 4px 12px #00000026;animation:ai-toast-in .25s ease-out,ai-toast-out .3s ease-in 2.5s forwards;pointer-events:auto}@keyframes ai-toast-in{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes ai-toast-out{0%{opacity:1}to{opacity:0}}.ai-cost-indicator{font-size:.7rem;color:#9ca3af;text-align:right;padding:.15rem .5rem}
