:root{color:#1f2937;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--text:#111827;--text-muted:#6b7280;--border:#d5d8de;--surface:#fff;--surface-alt:#f7f8fa;--shadow-soft:0 2px 8px #0f172a0f;--shadow-card:0 1px 4px #0f172a0d;--radius-sm:4px;--radius-md:6px;--radius-lg:8px;--motion-fast:.12s ease;--motion-base:.18s ease;--motion-slow:.26s ease;background:#f5f6f8;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;font-weight:400;line-height:1.4}*{box-sizing:border-box}html,body,#root{min-width:320px;min-height:100%;margin:0}body{background:#f5f6f8;min-height:100vh;font-size:14px}button,input,textarea,select{font:inherit}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important}}.upload-shell,.app-shell{min-height:100vh}.upload-shell{place-items:center;padding:48px 16px 32px;display:grid}.upload-panel{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);width:min(560px,100%);box-shadow:var(--shadow-soft);animation:surface-enter var(--motion-slow) both;gap:20px;padding:32px;display:grid}.upload-panel h1{letter-spacing:-.02em;color:var(--text);margin:0;font-size:22px;line-height:1.15}.upload-copy{color:var(--text-muted);margin:0;font-size:14px;line-height:1.55}.upload-actions{gap:10px;display:grid}.upload-option{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);cursor:pointer;transition:border-color var(--motion-fast), background-color var(--motion-fast);gap:4px;padding:14px 16px;display:grid;position:relative}.upload-option:hover{background:var(--surface-alt);border-color:#93a5bb}.upload-option:focus-within{outline-offset:2px;outline:2px solid #2563eb}.upload-option:has(input:disabled){cursor:wait;opacity:.6}.upload-option-tag{letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);font-size:11px;font-weight:600}.upload-option strong{color:var(--text);font-size:14px}.upload-option small{color:var(--text-muted);font-size:13px;line-height:1.45}.upload-option-cta{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-alt);color:var(--text);transition:background-color var(--motion-fast), border-color var(--motion-fast);justify-self:start;margin-top:6px;padding:5px 10px;font-size:12px;font-weight:600}.upload-option:hover .upload-option-cta{background:#edf1f7;border-color:#a8b5c8}.upload-option input{opacity:0;cursor:pointer;position:absolute;inset:0}.upload-action-note{color:var(--text-muted);margin:0;font-size:12px;line-height:1.4}.upload-info-collapsible{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-alt)}.upload-info-collapsible summary{cursor:pointer;-webkit-user-select:none;user-select:none;color:var(--text);padding:10px 14px;font-size:13px;font-weight:600}.upload-info-collapsible summary:hover{border-radius:var(--radius-md);background:#eef0f4}.upload-info-content{gap:14px;padding:0 14px 14px;display:grid}.upload-info-content h3{text-transform:uppercase;letter-spacing:.03em;color:var(--text-muted);margin:0;font-size:12px;font-weight:600}.upload-info-content p{color:var(--text-muted);margin:0;font-size:13px;line-height:1.5}.steps-list{color:var(--text);margin:4px 0 0;padding-left:18px;font-size:13px;line-height:1.5}.steps-list li+li{margin-top:2px}.upload-checklist{margin:8px 0 0;padding:0;font-size:13px;line-height:1.5;list-style:none}.upload-checklist li{color:var(--text-muted);padding-left:14px;position:relative}.upload-checklist li:before{content:"•";color:var(--text-muted);position:absolute;left:0}.upload-checklist li+li{margin-top:2px}.upload-footer{text-align:center;color:var(--text-muted);margin:0;font-size:12px}.upload-footer a{color:#0f4c81;font-weight:600}.upload-progress,.upload-error{margin:0}.upload-progress{color:var(--text);align-items:center;gap:8px;font-size:13px;display:inline-flex}.upload-progress:before{content:"";background:#2563eb;border-radius:999px;width:8px;height:8px;animation:.9s ease-out infinite status-pulse}.error-text{color:#b42318}.app-shell{padding:12px}.app-header{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-card);justify-content:space-between;align-items:center;gap:12px;padding:10px 14px;display:flex}.app-header h1{color:var(--text);margin:0;font-size:16px;line-height:1.3}.header-copy{display:none}.header-actions{align-items:center;gap:6px;display:flex}.header-actions button{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-alt);color:var(--text);cursor:pointer;transition:border-color var(--motion-fast), background-color var(--motion-fast);padding:6px 10px;font-size:13px}.header-actions button:hover{background:#edf1f7;border-color:#a8b5c8}.header-actions button:focus-visible{outline-offset:2px;outline:2px solid #2563eb}.analysis-layout{grid-template-columns:380px minmax(0,1fr);gap:12px;margin-top:12px;display:grid}.tree-pane,.detail-pane,.notes-panel{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-card)}.tree-pane{flex-direction:column;display:flex}.tree-toolbar{border-bottom:1px solid var(--border);padding:10px}.tree-search{border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;color:var(--text);transition:border-color var(--motion-fast), box-shadow var(--motion-fast);background:#fff;padding:7px 9px;font-size:13px}.tree-search:focus{border-color:#7aa7da;outline:none;box-shadow:0 0 0 3px #3b82f61a}.tree-list{flex:auto;max-height:calc(100vh - 150px);overflow:auto}.tree-group+.tree-group{border-top:1px solid var(--border)}.tree-table,.tree-item{width:100%;color:inherit;cursor:pointer;text-align:left;background:0 0;border:0;align-items:center;gap:8px;display:flex}.tree-table{transition:background-color var(--motion-fast);padding:7px 10px;font-size:13px;font-weight:600}.tree-table:hover,.tree-item:hover{background:var(--surface-alt)}.tree-chevron,.tree-count{color:var(--text-muted);font-size:11px}.tree-chevron{transition:transform var(--motion-base);transform-origin:50%;justify-content:center;align-items:center;display:inline-flex}.tree-table[aria-expanded=true] .tree-chevron{transform:rotate(0)}.tree-table[aria-expanded=false] .tree-chevron{transform:rotate(-90deg)}.tree-table-name,.tree-item-label{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.tree-items{margin:0;padding:0 0 4px;list-style:none}.tree-item{transition:background-color var(--motion-fast);padding:5px 10px 5px 22px;font-size:13px}.tree-item.selected{background:#e8eef6}.tree-item-unused{background:#fef3ea;box-shadow:inset 3px 0 #c05621}.tree-item-unused:hover{background:#fdebd6}.tree-item-unused.selected{background:#fde3c8}.tree-item-meta{align-items:center;gap:4px;margin-left:auto;display:inline-flex}.tree-item-flag,.tree-item-references,.detail-reference-total{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-alt);min-height:18px;color:var(--text-muted);white-space:nowrap;justify-content:center;align-items:center;padding:0 5px;font-size:11px;font-weight:600;display:inline-flex}.tree-item-flag{color:#9a3412;background:#fff1e2;border-color:#f0b27a}.tree-item-unused .tree-item-references,.tree-item-unused.selected .tree-item-references{color:#9a3412;background:#fff8f2;border-color:#f0b27a}.object-kind-marker{flex:none;align-items:center;gap:3px;display:inline-flex}.object-kind-icon{flex:none;width:14px;height:14px}.object-kind-letter{color:var(--text-muted);font-size:11px;font-weight:600;line-height:1}.hidden-tables{margin-top:8px;font-size:12px}.hidden-tables summary{cursor:pointer;color:var(--text-muted);-webkit-user-select:none;user-select:none}.hidden-table-list{color:var(--text-muted);margin:8px 0 0;padding-left:18px}.hidden-table-list li+li{margin-top:3px}.hidden-tables-bottom{border-top:1px solid var(--border);background:var(--surface-alt);border-radius:0 0 var(--radius-lg) var(--radius-lg);margin-top:auto;padding:10px}.detail-pane{padding:0 0 12px}.detail-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:flex-start;gap:12px;padding:12px 14px;display:flex}.detail-header h2{color:var(--text);margin:0;font-size:16px;line-height:1.25}.detail-header p{color:var(--text-muted);margin:2px 0 0;font-size:13px}.detail-header-meta{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px;display:flex}.detail-section{border-bottom:1px solid var(--border);padding:12px 14px}.detail-section-warning{background:#fef9ee;border-top:1px solid #e5c76b;border-bottom:1px solid #e5c76b}.detail-section h3{text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);margin:0 0 8px;font-size:11px;font-weight:600}.detail-section-warning h3,.detail-section-warning .detail-list{color:#7a4b00}.detail-list{margin:0;padding:0;list-style:none}.detail-list li+li{margin-top:6px}.grouped-detail-list li{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-alt);transition:border-color var(--motion-fast), background-color var(--motion-fast);padding:8px 10px}.grouped-detail-list li:hover{background:#eef1f6}.object-reference-button{width:100%;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;padding:8px 10px;display:block}.grouped-detail-list li:has(.object-reference-button){padding:0}.grouped-detail-list li:has(.object-reference-button):hover{background:#f0f4fb;border-color:#9bb9dd}.grouped-detail-list li:has(.object-reference-button):focus-within{background:#edf4ff;border-color:#2a5caa}.object-reference{color:var(--text);background:0 0;flex-wrap:wrap;align-items:baseline;gap:0;margin:0;padding:0;font-family:Consolas,Courier New,monospace;font-size:13px;display:inline-flex}.object-reference-table{color:#425466}.object-reference-name{color:#0f4c81;font-weight:600}.relationship-heading{flex-wrap:wrap;align-items:baseline;gap:6px;display:inline-flex}.relationship-operator{color:var(--text-muted);font-weight:600}.grouped-detail-list .detail-empty-text,.usage-list .detail-empty-text{background:0 0;border:0;padding:0;display:block}.grouped-detail-list li+li{margin-top:6px}.usage-list li{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-alt);transition:border-color var(--motion-fast), background-color var(--motion-fast);grid-template-columns:90px minmax(0,1fr);align-items:start;gap:4px 10px;padding:8px 10px;display:grid}.usage-list li:hover{background:#f0f3f8;border-color:#bfc9d8}.detail-empty-text{color:var(--text-muted)}.usage-list li+li{margin-top:6px}.usage-list li strong{grid-column:1;align-self:start;font-size:13px}.usage-list li span,.usage-list li small{grid-column:2}.usage-list small{color:var(--text-muted)}pre{background:var(--surface-alt);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);white-space:pre-wrap;word-break:break-word;margin:0;padding:10px;font-family:Consolas,Courier New,monospace;font-size:13px;line-height:1.45;overflow:auto}.empty-panel,.empty-detail,.notes-panel{padding:12px 14px}.empty-panel{color:var(--text-muted)}.empty-detail h2{color:var(--text);margin:0;font-size:16px}.empty-detail p{color:var(--text-muted)}.notes-panel{border-radius:var(--radius-lg);margin-top:12px}.notes-panel p{color:var(--text-muted)}.app-version-badge{z-index:50;border:1px solid var(--border);color:var(--text-muted);pointer-events:none;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#ffffffe0;border-radius:999px;padding:4px 8px;font-size:11px;font-weight:600;line-height:1;position:fixed;bottom:12px;right:12px;box-shadow:0 8px 18px #0f172a14}@keyframes surface-enter{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes status-pulse{0%{transform:scale(.95);box-shadow:0 0 #2563eb4d}70%{transform:scale(1);box-shadow:0 0 0 8px #2563eb00}to{transform:scale(.95);box-shadow:0 0 #2563eb00}}@media (width<=960px){.analysis-layout,.app-header{grid-template-columns:1fr;display:grid}.upload-panel{padding:20px}.header-actions{flex-wrap:wrap}.tree-list{max-height:none}.tree-item{flex-wrap:wrap}.tree-item-label{min-width:calc(100% - 24px)}.tree-item-meta{margin-left:16px}.app-version-badge{bottom:10px;right:10px}}
