:root{--bg: #06060f;--surf: #0a0a1a;--panel: #0d0d20;--brd: rgba(0, 229, 204, .12);--text: #c8c8e0;--muted: #484860;--accent: #3a7fff;--neon: #00e5cc;--pink: #ff2d78;--purple: #8b5cf6;--cold: #e05252;--cool: #e07a2a;--warm: #b0c030;--hot: #20d060;--neon-rgb: 0, 229, 204;--accent-rgb: 58, 127, 255;--glass: rgba(10, 10, 26, .85);--glass-heavy: rgba(13, 13, 32, .95);--glass-mid: rgba(13, 13, 32, .65);--shadow: rgba(0, 0, 0, .4);--shadow-heavy: rgba(0, 0, 0, .5);--cell-border: #10101e;--cell-border-light: #161622;--toggle-active-bg: #1a2a4a;--toggle-active-text: #9cf;--badge-contract-bg: #0d1a30;--badge-contract-brd: #1a3060;--badge-interface-bg: #1a0d28;--badge-interface-brd: #301850;--badge-library-bg: #0d1a0d;--badge-library-brd: #1a3a1a;--badge-deploy-bg: #0d1a18;--badge-deploy-brd: #1a3a30;--vis-ext-bg: #0d1a30;--vis-pub-bg: #0d1a0d;--vis-int-bg: #1a1800;--vis-priv-bg: #1a0d1a;--cap-crit-bg: #2a0808;--cap-crit-brd: #5a1010;--cap-warn-bg: #2a1500;--cap-warn-brd: #4a2500;--cap-info-bg: #0d1520;--cap-info-brd: #1a2840;--mod-badge-bg: #1a1520;--scope-tint: 91, 184, 166;--scope-thumb: #5bb8a6;--scope-highlight: #7ad4c0;--github-btn-bg: #24292e;--github-btn-brd: #444d56;--github-btn-hover-bg: #2f363d;--github-btn-hover-brd: #586069;--spotlight-bg: rgba(6, 6, 15, .75);--chart-legend-text: #606080;--chart-legend-bg: rgba(8, 8, 18, .85);--chart-legend-border: #2a2a40;--warn-banner-bg: rgba(255, 183, 77, .12);--warn-banner-brd: rgba(255, 183, 77, .4);--warn-banner-text: #ffb74d}[data-theme=light]{--bg: #f2f0ed;--surf: #e8e6e2;--panel: #dddbd8;--brd: rgba(0, 153, 122, .15);--text: #1a1a2a;--muted: #6b6b80;--accent: #2563eb;--neon: #00997a;--pink: #d6204a;--purple: #7c3aed;--cold: #c62828;--cool: #c25e10;--warm: #8a9a20;--hot: #188040;--neon-rgb: 0, 153, 122;--accent-rgb: 37, 99, 235;--glass: rgba(255, 255, 255, .75);--glass-heavy: rgba(255, 255, 255, .92);--glass-mid: rgba(255, 255, 255, .65);--shadow: rgba(0, 0, 0, .08);--shadow-heavy: rgba(0, 0, 0, .12);--cell-border: #d0d0d8;--cell-border-light: #d8d8e0;--toggle-active-bg: #dbeafe;--toggle-active-text: #2563eb;--badge-contract-bg: #dbeafe;--badge-contract-brd: #93bbfd;--badge-interface-bg: #ede9fe;--badge-interface-brd: #c4b5fd;--badge-library-bg: #dcfce7;--badge-library-brd: #86efac;--badge-deploy-bg: #d1fae5;--badge-deploy-brd: #6ee7b7;--vis-ext-bg: #dbeafe;--vis-pub-bg: #dcfce7;--vis-int-bg: #fef9c3;--vis-priv-bg: #fae8ff;--cap-crit-bg: #fee2e2;--cap-crit-brd: #fca5a5;--cap-warn-bg: #ffedd5;--cap-warn-brd: #fdba74;--cap-info-bg: #dbeafe;--cap-info-brd: #93c5fd;--mod-badge-bg: #ede9fe;--scope-tint: 0, 153, 122;--scope-thumb: #00997a;--scope-highlight: #00b894;--github-btn-bg: #24292e;--github-btn-brd: #444d56;--github-btn-hover-bg: #2f363d;--github-btn-hover-brd: #586069;--spotlight-bg: rgba(0, 0, 0, .45);--chart-legend-text: #606070;--chart-legend-bg: rgba(255, 255, 255, .9);--chart-legend-border: #c8c8d0;--warn-banner-bg: rgba(194, 94, 16, .1);--warn-banner-brd: rgba(194, 94, 16, .4);--warn-banner-text: #9a3412}*{box-sizing:border-box;margin:0;padding:0}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:rgba(var(--neon-rgb),.15);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:rgba(var(--neon-rgb),.3)}*{scrollbar-width:thin;scrollbar-color:rgba(var(--neon-rgb),.15) transparent}body{font-family:JetBrains Mono,Fira Code,SF Mono,monospace;background:var(--bg);color:var(--text);height:100vh;display:flex;flex-direction:column;overflow:hidden;font-size:13px}#app{position:relative;display:flex;flex-direction:column;height:100vh;overflow:hidden}#app:before{content:"";position:fixed;top:0;left:0;width:200%;height:200%;background-image:linear-gradient(rgba(var(--neon-rgb),.03) 1px,transparent 1px),linear-gradient(90deg,rgba(var(--neon-rgb),.03) 1px,transparent 1px);background-size:60px 60px;transform:perspective(500px) rotateX(30deg);animation:gridDrift 30s linear infinite;pointer-events:none;z-index:0;opacity:.5}@keyframes gridDrift{to{transform:perspective(500px) rotateX(30deg) translateY(-60px)}}#pcv{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:999}.landing{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:24px;position:relative;z-index:1}.landing-card{width:100%;max-width:520px;background:var(--glass);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid var(--brd);border-radius:16px;padding:32px}.landing-logo{font-size:1.8rem;font-weight:700;color:var(--neon);text-shadow:0 0 20px var(--neon);text-align:center;margin-bottom:4px;letter-spacing:.12em}.landing-sub{text-align:center;color:var(--muted);font-size:.75rem;margin-bottom:24px}.tab-switch{display:flex;gap:4px;margin-bottom:16px;background:var(--panel);border-radius:10px;padding:3px}.tab-switch button{flex:1;padding:6px 12px;border:none;border-radius:8px;background:transparent;color:var(--muted);font-family:inherit;font-size:.75rem;cursor:pointer;transition:all .2s}.tab-switch button.active{background:var(--accent);color:#fff}.input-group{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}.input-field{width:100%;padding:10px 14px;background:var(--panel);border:1px solid var(--brd);border-radius:10px;color:var(--text);font-family:inherit;font-size:.8rem;outline:none;transition:border-color .2s}.input-field:focus{border-color:var(--accent)}.input-field::placeholder{color:var(--muted)}.input-field:disabled{opacity:.5;cursor:not-allowed}.btn-primary{width:100%;padding:10px;background:var(--accent);border:none;border-radius:10px;color:#fff;font-family:inherit;font-size:.8rem;font-weight:600;cursor:pointer;transition:opacity .2s}.btn-primary:hover{opacity:.9}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.drop-zone{border:2px dashed var(--brd);border-radius:12px;padding:32px;text-align:center;cursor:pointer;transition:all .3s;margin-bottom:16px}.drop-zone:hover,.drop-zone.dragging{border-color:var(--neon);background:rgba(var(--neon-rgb),.04)}.drop-zone-icon{font-size:2rem;margin-bottom:8px}.drop-zone-text{color:var(--muted);font-size:.75rem}.auth-section{text-align:center;margin-bottom:16px}.btn-github{display:inline-flex;align-items:center;gap:8px;padding:8px 20px;background:var(--github-btn-bg);border:1px solid var(--github-btn-brd);border-radius:10px;color:#fff;font-family:inherit;font-size:.78rem;font-weight:600;cursor:pointer;transition:background .2s,border-color .2s}.btn-github:hover{background:var(--github-btn-hover-bg);border-color:var(--github-btn-hover-brd)}.btn-github-icon{flex-shrink:0}.auth-status{display:inline-flex;align-items:center;gap:8px;font-size:.75rem}.auth-avatar{width:24px;height:24px;border-radius:50%}.auth-name{color:var(--text)}.auth-logout{color:var(--muted);font-size:.68rem;text-decoration:underline;cursor:pointer}.auth-logout:hover{color:var(--text)}.auth-loading{color:var(--muted);font-size:.72rem}.auth-hint{margin-top:8px;font-size:.62rem;color:var(--muted)}.example-link{text-align:center;margin-top:10px;font-size:.7rem;color:var(--muted)}.example-link a{color:var(--neon);text-decoration:none}.example-link a:hover{text-decoration:underline}.error-msg{padding:8px 12px;background:#e052521a;border:1px solid rgba(224,82,82,.3);border-radius:8px;color:var(--cold);font-size:.72rem;text-align:center;margin-bottom:12px}.recent-list{margin-top:16px;border-top:1px solid var(--brd);padding-top:12px}.recent-title{font-size:.65rem;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:8px}.recent-item{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:6px;cursor:pointer;font-size:.72rem;transition:background .2s}.recent-item:hover{background:rgba(var(--neon-rgb),.06)}.recent-name{color:var(--text);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.recent-meta{color:var(--muted);font-size:.65rem}.progress-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100vh;position:relative;z-index:1}.progress-orb{width:100px;height:100px;border-radius:50%;background:linear-gradient(135deg,var(--accent),var(--neon));margin-bottom:32px;animation:orbPulse 2s ease-in-out infinite;position:relative}.progress-orb:after{content:"";position:absolute;inset:0;border-radius:50%;background:inherit;filter:blur(30px);opacity:.4}@keyframes orbPulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.05);opacity:.8}}.progress-bar-wrap{width:320px;margin-bottom:16px}.progress-bar-bg{height:4px;background:var(--panel);border-radius:2px;overflow:hidden}.progress-bar-fill{height:100%;background:linear-gradient(90deg,var(--accent),var(--neon));border-radius:2px;transition:width .4s ease-out}.progress-msg{font-size:.8rem;color:var(--text);margin-bottom:4px}.progress-detail{font-size:.7rem;color:var(--muted)}.progress-pct{font-size:2rem;font-weight:700;color:var(--text);margin-top:16px}header{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:5px 14px;background:var(--glass);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--brd);flex-shrink:0;min-height:46px;position:relative;z-index:2}.logo{font-size:.8rem;color:var(--neon);letter-spacing:.08em;font-weight:700;text-shadow:0 0 10px var(--neon);white-space:nowrap;cursor:pointer}.proj-name{font-weight:600;font-size:.9rem;color:var(--text);white-space:nowrap}.stat-chip{padding:2px 8px;border-radius:10px;border:1px solid var(--brd);background:var(--glass-mid);font-size:.72rem;color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}.stat-chip b{color:var(--text)}.gh-link{margin-left:auto;color:var(--muted);font-size:.7rem;text-decoration:none;transition:color .2s}.gh-link:hover{color:var(--neon)}.share-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid var(--brd);border-radius:8px;background:transparent;color:var(--muted);font-size:.85rem;cursor:pointer;transition:color .2s,border-color .2s;font-family:inherit;line-height:1}.share-btn:hover{color:var(--neon);border-color:rgba(var(--neon-rgb),.3)}.share-btn-wrap{position:relative}.share-dropdown{position:absolute;top:calc(100% + 4px);right:0;width:280px;background:var(--glass-heavy);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--brd);border-radius:10px;padding:8px;z-index:100;box-shadow:0 8px 32px var(--shadow-heavy);display:flex;flex-direction:column;gap:6px}.share-notes{max-height:160px;overflow-y:auto;display:flex;flex-direction:column;gap:4px}.share-note{display:flex;flex-direction:column;gap:1px;padding:4px 6px;background:rgba(var(--neon-rgb),.04);border-radius:6px}.share-note-author{font-size:.68rem;font-weight:700;color:var(--text)}.share-note-text{font-size:.68rem;color:var(--muted);word-break:break-word;white-space:pre-wrap}.share-input{width:100%;padding:6px 8px;background:var(--panel);border:1px solid var(--brd);border-radius:6px;color:var(--text);font-family:inherit;font-size:.72rem;outline:none;resize:none;transition:border-color .2s}.share-input:focus{border-color:var(--accent)}.share-input::placeholder{color:var(--muted)}.share-login-prompt{display:flex;flex-direction:column;align-items:center;gap:6px;padding:8px;color:var(--muted);font-size:.72rem}.share-login-btn{display:inline-flex;align-items:center;gap:6px;padding:5px 14px;background:var(--github-btn-bg);border:1px solid var(--github-btn-brd);border-radius:8px;color:#fff;font-family:inherit;font-size:.72rem;font-weight:600;cursor:pointer;transition:background .2s,border-color .2s}.share-login-btn:hover{background:var(--github-btn-hover-bg);border-color:var(--github-btn-hover-brd)}.header-login{padding:3px 12px;background:var(--github-btn-bg);border:1px solid var(--github-btn-brd);border-radius:8px;color:#fff;font-family:inherit;font-size:.68rem;font-weight:600;cursor:pointer;transition:background .2s,border-color .2s}.header-login:hover{background:var(--github-btn-hover-bg);border-color:var(--github-btn-hover-brd)}.share-copy-btn{width:100%;padding:5px 0;background:var(--accent);border:none;border-radius:6px;color:#fff;font-family:inherit;font-size:.72rem;font-weight:600;cursor:pointer;transition:opacity .2s}.share-copy-btn:hover{opacity:.9}.note-toast{position:fixed;top:56px;left:50%;transform:translate(-50%);max-width:440px;width:max-content;padding:8px 16px;background:var(--glass-heavy);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid rgba(var(--neon-rgb),.25);border-radius:10px;box-shadow:0 8px 32px var(--shadow-heavy);font-size:.75rem;color:var(--muted);z-index:200;cursor:pointer;animation:toastIn .3s ease-out,toastOut .4s 3.6s ease-in forwards;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.note-toast b{color:var(--text);margin-right:4px}@keyframes toastIn{0%{opacity:0;transform:translate(-50%) translateY(-8px)}to{opacity:1;transform:translate(-50%) translateY(0)}}@keyframes toastOut{0%{opacity:1}to{opacity:0}}.notes-banner{background:var(--glass);border-bottom:1px solid var(--brd);padding:4px 14px;flex-shrink:0;position:relative;z-index:1}.notes-banner-row{display:flex;align-items:center;gap:8px}.notes-banner-summary{flex:1;font-size:.72rem;color:var(--muted);cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.notes-banner-summary b{color:var(--text)}.notes-banner-close{background:none;border:none;color:var(--muted);font-size:1rem;cursor:pointer;padding:0 4px;line-height:1}.notes-banner-close:hover{color:var(--text)}.notes-banner-list{display:flex;flex-direction:column;gap:4px;margin-top:6px;max-height:200px;overflow-y:auto}.notes-banner-note{display:flex;flex-direction:column;gap:1px;padding:4px 6px;background:rgba(var(--neon-rgb),.04);border-radius:6px}.report-btn-wrap{position:relative}.report-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid var(--brd);border-radius:8px;background:transparent;color:var(--muted);font-size:1rem;cursor:pointer;transition:color .2s,border-color .2s;font-family:inherit;line-height:1}.report-btn:hover{color:var(--neon);border-color:rgba(var(--neon-rgb),.3)}.report-dropdown{position:absolute;top:calc(100% + 4px);right:0;min-width:150px;background:var(--glass-heavy);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--brd);border-radius:10px;padding:4px;z-index:100;box-shadow:0 8px 32px var(--shadow-heavy)}.report-dropdown-item{display:block;width:100%;padding:6px 12px;border:none;border-radius:6px;background:transparent;color:var(--text);font-family:inherit;font-size:.72rem;text-align:left;cursor:pointer;transition:background .15s}.report-dropdown-item:hover{background:rgba(var(--neon-rgb),.08)}.header-auth{display:inline-flex;align-items:center;gap:6px;font-size:.7rem}.header-auth-name{color:var(--text)}.main-layout{display:flex;flex-direction:row;flex:1;min-height:0;overflow:hidden;position:relative;z-index:1}.center-area{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden;border-right:1px solid var(--brd)}.left-col{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column;overflow:hidden}.sidebar{flex:0 0 340px;width:340px;display:flex;flex-direction:column;overflow-y:auto;background:var(--glass);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.bottom-panel{flex:0 0 auto;max-height:40vh;display:flex;flex-direction:column;border-top:1px solid var(--brd);background:var(--glass);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.bottom-tabs{display:flex;gap:0;flex-shrink:0;background:var(--glass-heavy);border-bottom:1px solid var(--brd)}.bottom-tab{padding:5px 14px;border:none;border-bottom:2px solid transparent;background:transparent;color:var(--muted);font-size:.68rem;font-family:inherit;cursor:pointer;transition:all .15s;white-space:nowrap}.bottom-tab:hover{color:var(--text)}.bottom-tab.active{color:var(--neon);border-bottom-color:var(--neon)}.bottom-content{flex:1;overflow-y:auto;min-height:0}.bottom-content .panel{border-bottom:none;background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:none}.table-filter{width:100%;padding:4px 8px;background:var(--glass);border:1px solid var(--brd);border-radius:6px;color:var(--text);font-family:inherit;font-size:.68rem;outline:none;margin-bottom:6px;transition:border-color .2s}.table-filter:focus{border-color:var(--accent)}.table-filter::placeholder{color:var(--muted)}.view-toggle-bar{display:flex;gap:4px;padding:4px 10px;background:var(--glass);border-bottom:1px solid var(--brd);flex-shrink:0}.view-toggle-btn{padding:3px 10px;border-radius:8px;border:1px solid var(--brd);background:var(--glass-mid);color:var(--muted);font-size:.7rem;cursor:pointer;transition:all .15s;font-family:inherit}.view-toggle-btn.active{background:var(--toggle-active-bg);border-color:var(--accent);color:var(--toggle-active-text)}.view-toggle-btn:hover{border-color:rgba(var(--neon-rgb),.3);color:var(--text)}.chart-wrap{flex:1;min-height:0;position:relative;overflow:hidden}.chart-el{width:100%;height:100%}@keyframes datapulse{0%{box-shadow:inset 0 0 rgba(var(--neon-rgb),.25)}40%{box-shadow:inset 0 0 22px 4px rgba(var(--neon-rgb),.09)}to{box-shadow:inset 0 0 rgba(var(--neon-rgb),0)}}.chart-wrap.data-pulse{animation:datapulse 1.6s ease-out forwards}.chart-wrap:after{content:"";position:absolute;top:0;left:-100%;width:60%;height:100%;background:linear-gradient(90deg,transparent,rgba(var(--neon-rgb),.07),transparent);pointer-events:none;z-index:2}.chart-wrap.scanning:after{animation:scanline 1.4s cubic-bezier(.25,.1,.25,1) forwards}@keyframes scanline{to{left:120%}}.panel{padding:10px 12px;border-bottom:1px solid var(--brd);flex-shrink:0;background:var(--glass-mid);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 4px 24px var(--shadow);transition:border-color .3s,box-shadow .3s}.panel:hover{border-color:rgba(var(--neon-rgb),.2);box-shadow:0 4px 32px rgba(var(--neon-rgb),.06)}.panel h2{font-size:.7rem;color:var(--muted);text-transform:uppercase;letter-spacing:.07em;margin-bottom:8px;display:flex;align-items:center;gap:6px}.panel h2 .cnt{font-size:.65rem;background:var(--panel);border:1px solid var(--brd);border-radius:8px;padding:0 5px;color:var(--muted)}.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.stat-box{background:var(--glass-mid);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--brd);border-radius:10px;padding:6px 8px;transition:border-color .3s,box-shadow .3s}.stat-box:hover{border-color:rgba(var(--neon-rgb),.2);box-shadow:0 2px 16px rgba(var(--neon-rgb),.05)}.stat-box .label{font-size:.65rem;color:var(--muted);margin-bottom:3px}.stat-box .val{font-size:1.1rem;font-weight:700;color:var(--text);font-variant-numeric:tabular-nums}.stat-box .sub{font-size:.65rem;color:var(--muted)}.bar-row{display:flex;align-items:center;gap:6px;margin-bottom:4px;font-size:.72rem}.bar-name{width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text)}.bar-bg{flex:1;height:8px;background:var(--panel);border-radius:3px;overflow:hidden;position:relative}.bar-fill{height:100%;border-radius:3px;transition:width .5s;position:relative}.bar-fill:after{content:"";position:absolute;top:0;left:-100%;width:50%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.08),transparent);animation:shimmer 3s ease-in-out infinite}@keyframes shimmer{to{left:200%}}.bar-val{width:36px;text-align:right;color:var(--muted);font-size:.67rem;font-variant-numeric:tabular-nums}.contract-row{display:flex;align-items:center;gap:6px;padding:4px 0;border-bottom:1px solid var(--cell-border);font-size:.72rem}.contract-badge{padding:1px 5px;border-radius:4px;font-size:.6rem;font-weight:700;text-transform:uppercase}.badge-contract{background:var(--badge-contract-bg);color:var(--accent);border:1px solid var(--badge-contract-brd)}.badge-interface{background:var(--badge-interface-bg);color:var(--purple);border:1px solid var(--badge-interface-brd)}.badge-library{background:var(--badge-library-bg);color:var(--hot);border:1px solid var(--badge-library-brd)}.badge-deploy{background:var(--badge-deploy-bg);color:var(--neon);border:1px solid var(--badge-deploy-brd)}.contract-name{flex:1;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.contract-caps{display:flex;gap:1px;flex-shrink:0}.cap-micro{padding:0 3px;border-radius:3px;font-size:.5rem;font-weight:700;border:1px solid}.contract-stats{color:var(--muted);font-size:.65rem;white-space:nowrap}.fn-table{width:100%;border-collapse:collapse;font-size:.7rem}.fn-table th{color:var(--muted);text-align:left;padding:2px 5px;cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;font-size:.65rem;font-weight:600}.fn-table th:hover{color:var(--text)}.fn-table td{padding:2px 5px;border-bottom:1px solid var(--cell-border-light);white-space:nowrap;overflow:hidden;max-width:130px;text-overflow:ellipsis}.fn-table tr:hover td{background:rgba(var(--neon-rgb),.04)}.vis-badge{display:inline-block;padding:0 4px;border-radius:3px;font-size:.6rem;font-weight:700}.vis-external{background:var(--vis-ext-bg);color:#4a9fff}.vis-public{background:var(--vis-pub-bg);color:#30a030}.vis-internal{background:var(--vis-int-bg);color:#a0a030}.vis-private{background:var(--vis-priv-bg);color:#a050a0}.mod-badge{display:inline-block;padding:0 3px;border-radius:3px;font-size:.55rem;background:var(--mod-badge-bg);color:var(--neon);border:1px solid rgba(var(--neon-rgb),.15);margin-right:2px;max-width:60px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}.cap-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:8px;font-size:.68rem;margin:2px;border:1px solid}.cap-critical{background:var(--cap-crit-bg);border-color:var(--cap-crit-brd);color:var(--pink)}.cap-warning{background:var(--cap-warn-bg);border-color:var(--cap-warn-brd);color:var(--cool)}.cap-info{background:var(--cap-info-bg);border-color:var(--cap-info-brd);color:var(--accent)}.erc-row{display:flex;align-items:center;gap:8px;margin-bottom:6px;font-size:.72rem}.erc-name{width:60px;color:var(--text);font-weight:600}.erc-bar-bg{flex:1;height:10px;background:var(--panel);border-radius:4px;overflow:hidden}.erc-bar-fill{height:100%;border-radius:4px;transition:width .5s}.erc-pct{width:36px;text-align:right;color:var(--muted);font-size:.68rem}.imp-row{margin-bottom:5px;font-size:.7rem}.imp-file{color:var(--neon)}.imp-path{color:var(--muted);font-size:.65rem;margin-left:8px}.imp-unresolved{color:var(--cool);font-size:.65rem;font-style:italic}.lang-row{display:flex;align-items:center;gap:6px;margin-bottom:4px;font-size:.7rem}.lang-name{width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text);font-size:.68rem}.lang-bg{flex:1;height:8px;background:var(--panel);border-radius:3px;overflow:hidden;position:relative}.lang-fill{height:100%;border-radius:3px;transition:width .5s;position:relative}.lang-fill:after{content:"";position:absolute;top:0;left:-100%;width:50%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.08),transparent);animation:shimmer 3s ease-in-out infinite}.lang-val{width:36px;text-align:right;color:var(--muted);font-size:.68rem}.fe-panel{padding-bottom:6px}.fe-panel h2{margin-bottom:4px}.fe-collapse-arrow{font-size:.65rem;color:var(--muted);margin-right:2px}.fe-tree{max-height:260px;overflow-y:auto;overflow-x:hidden}.fe-row{display:flex;align-items:center;gap:4px;padding:1px 4px;border-radius:4px;cursor:default;min-height:20px}.fe-row:hover{background:rgba(var(--neon-rgb),.04)}.fe-root-row{padding-left:4px}.fe-cb{appearance:none;-webkit-appearance:none;width:12px;height:12px;border:1px solid var(--muted);border-radius:3px;background:transparent;cursor:pointer;flex-shrink:0;position:relative}.fe-cb:checked{background:var(--accent);border-color:var(--accent)}.fe-cb:checked:after{content:"";position:absolute;left:3px;top:1px;width:3px;height:6px;border:solid #fff;border-width:0 1.5px 1.5px 0;transform:rotate(45deg)}.fe-cb:indeterminate{background:var(--accent);border-color:var(--accent);opacity:.7}.fe-cb:indeterminate:after{content:"";position:absolute;left:2px;top:4.5px;width:6px;height:1.5px;background:#fff}.fe-arrow{font-size:.65rem;color:var(--muted);cursor:pointer;width:10px;text-align:center;flex-shrink:0;-webkit-user-select:none;user-select:none}.fe-icon{font-size:.45rem;color:var(--accent);width:10px;text-align:center;flex-shrink:0;opacity:.6}.fe-name{font-size:.68rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fe-folder{color:var(--text);cursor:pointer}.fe-file{color:var(--muted)}.scope-ctrl-row{display:flex;align-items:center;gap:6px;font-size:.68rem;margin-bottom:6px}.scope-ctrl-label{width:62px;flex-shrink:0;color:var(--muted);font-size:.62rem}.scope-slider{flex:1;height:4px;-webkit-appearance:none;appearance:none;background:var(--panel);border-radius:2px;outline:none}.scope-slider::-webkit-slider-thumb{-webkit-appearance:none;width:12px;height:12px;border-radius:50%;background:var(--scope-thumb);cursor:pointer;border:none}.scope-slider::-moz-range-thumb{width:12px;height:12px;border-radius:50%;background:var(--scope-thumb);cursor:pointer;border:none}.scope-ctrl-val{color:var(--text);font-weight:700;font-variant-numeric:tabular-nums;width:28px;text-align:right;font-size:.68rem}.scope-ctrl-unit{color:var(--muted);font-size:.58rem}.scope-mult-btns{display:flex;gap:2px;flex:1}.scope-mult-btn{flex:1;padding:2px 0;border:1px solid var(--brd);border-radius:4px;background:transparent;color:var(--muted);font-family:inherit;font-size:.58rem;cursor:pointer;transition:all .15s}.scope-mult-btn:hover{border-color:rgba(var(--scope-tint),.4);color:var(--text)}.scope-mult-btn.active{background:rgba(var(--scope-tint),.12);border-color:rgba(var(--scope-tint),.5);color:var(--scope-highlight)}.scope-needed{display:flex;align-items:baseline;gap:6px;margin-bottom:8px;padding:5px 8px;background:rgba(var(--scope-tint),.06);border:1px solid rgba(var(--scope-tint),.15);border-radius:8px}.scope-needed-val{font-size:1.1rem;font-weight:700;color:var(--scope-highlight);font-variant-numeric:tabular-nums}.scope-needed-unit{font-size:.65rem;color:var(--text)}.scope-needed-detail{font-size:.58rem;color:var(--muted);margin-left:auto}.scope-configs{display:flex;flex-direction:column;gap:3px}.scope-cfg{display:flex;align-items:center;gap:6px;padding:3px 6px;border-radius:6px;border:1px solid transparent;font-size:.68rem;transition:all .2s}.scope-cfg-label{width:58px;flex-shrink:0;color:var(--muted);font-size:.65rem}.scope-cfg-bar{flex:1;height:6px;background:var(--panel);border-radius:3px;overflow:hidden}.scope-cfg-fill{height:100%;border-radius:3px;background:rgba(var(--scope-tint),.15);transition:width .4s}.scope-cfg-cap{width:48px;text-align:right;color:var(--muted);font-size:.6rem;font-variant-numeric:tabular-nums;flex-shrink:0}.scope-sufficient .scope-cfg-fill{background:rgba(var(--scope-tint),.5)}.scope-sufficient .scope-cfg-label{color:var(--text)}.scope-insufficient .scope-cfg-fill{background:rgba(var(--scope-tint),.15)}.scope-recommended{border-color:rgba(var(--scope-tint),.3);background:rgba(var(--scope-tint),.06)}.scope-recommended .scope-cfg-fill{background:rgba(var(--scope-tint),.65)}.scope-recommended .scope-cfg-label{color:var(--scope-highlight);font-weight:700}.scope-recommended .scope-cfg-cap{color:var(--scope-highlight)}.empty-msg{color:var(--muted);font-size:.7rem;padding:4px 0}.text-muted{color:var(--muted)}.tour-overlay{position:fixed;inset:0;z-index:10000;pointer-events:none}.tour-backdrop-click{position:fixed;inset:0;pointer-events:auto;z-index:10000}.tour-spotlight{position:absolute;border-radius:8px;box-shadow:0 0 0 9999px var(--spotlight-bg);transition:all .35s cubic-bezier(.4,0,.2,1);pointer-events:none;z-index:10001}.tour-tooltip{position:absolute;width:300px;background:var(--glass-heavy);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--brd);border-radius:12px;padding:14px 16px;box-shadow:0 8px 32px var(--shadow-heavy),0 0 20px rgba(var(--neon-rgb),.08);pointer-events:auto;z-index:10002;transition:all .35s cubic-bezier(.4,0,.2,1)}.tour-tooltip-title{font-size:.82rem;font-weight:700;color:var(--neon);text-shadow:0 0 10px rgba(var(--neon-rgb),.4);margin-bottom:6px}.tour-tooltip-desc{font-size:.72rem;color:var(--text);line-height:1.5;margin-bottom:12px}.tour-tooltip-footer{display:flex;align-items:center;gap:8px}.tour-step-counter{font-size:.62rem;color:var(--muted);margin-right:auto;font-variant-numeric:tabular-nums}.tour-skip-btn{padding:4px 12px;border:1px solid var(--brd);border-radius:6px;background:transparent;color:var(--muted);font-family:inherit;font-size:.68rem;cursor:pointer;transition:color .2s,border-color .2s}.tour-skip-btn:hover{color:var(--text);border-color:rgba(var(--neon-rgb),.3)}.tour-next-btn{padding:4px 14px;border:none;border-radius:6px;background:var(--accent);color:#fff;font-family:inherit;font-size:.68rem;font-weight:600;cursor:pointer;transition:opacity .2s}.tour-next-btn:hover{opacity:.9}.tour-help-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid var(--brd);border-radius:8px;background:transparent;color:var(--muted);font-size:.85rem;font-weight:700;cursor:pointer;transition:color .2s,border-color .2s;font-family:inherit;line-height:1}.tour-help-btn:hover{color:var(--neon);border-color:rgba(var(--neon-rgb),.3)}.theme-toggle-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid var(--brd);border-radius:8px;background:transparent;color:var(--muted);cursor:pointer;transition:color .2s,border-color .2s;font-family:inherit;line-height:1;padding:0}.theme-toggle-btn:hover{color:var(--neon);border-color:rgba(var(--neon-rgb),.3)}.auth-prompt-banner{background:var(--warn-banner-bg);border:1px solid var(--warn-banner-brd);border-radius:8px;padding:12px 16px;margin-bottom:12px;color:var(--warn-banner-text);font-size:14px;text-align:center}[data-theme=light] #app:before{background-image:linear-gradient(rgba(var(--neon-rgb),.08) 1px,transparent 1px),linear-gradient(90deg,rgba(var(--neon-rgb),.08) 1px,transparent 1px);opacity:.35}
