.graph-shell{position:relative;height:calc(100dvh - 11rem);min-height:26rem;border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);overflow:hidden}.graph-shell.is-mobile{height:calc(100dvh - 9rem)}.graph-canvas-wrap{position:absolute;inset:0;touch-action:none}.graph-canvas-wrap canvas{cursor:default}.graph-zoom-controls{position:absolute;right:12px;bottom:12px;display:flex;flex-direction:column;gap:6px;z-index:5}.graph-zoom-controls button{width:44px;height:44px;display:grid;place-items:center;font-size:1.1rem;font-weight:700;line-height:1;color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:var(--radius-md);box-shadow:var(--shadow-card);cursor:pointer}.graph-zoom-controls button:last-child{font-size:.72rem}.graph-zoom-controls button:hover{background:var(--color-surface-raised);border-color:var(--color-accent-border);color:var(--color-accent-deep)}.home-graph{position:relative;height:100%}.home-graph .graph-canvas-wrap{touch-action:pan-y}.home-graph-error{position:absolute;inset:0;display:grid;place-content:center;margin:0;color:var(--color-text-muted);font-size:var(--text-sm)}.player-graph{position:relative;height:clamp(20rem,44vw,28rem);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);overflow:hidden}.player-graph-loading{background:var(--color-surface-raised)}@media(prefers-reduced-motion:no-preference){.player-graph-loading{animation:graph-loading-pulse 1.6s ease-in-out infinite alternate}}@keyframes graph-loading-pulse{to{opacity:.68}}.player-graph .graph-canvas-wrap{touch-action:pan-y}.graph-tooltip{position:absolute;top:0;left:0;opacity:0;pointer-events:none;background:var(--color-surface-raised);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);color:var(--color-text);font-size:var(--text-xs);font-weight:600;padding:.2em .6em;white-space:nowrap;transition:opacity .1s ease;z-index:6}.graph-toolbar{position:absolute;top:var(--space-3);left:var(--space-3);right:var(--space-3);display:flex;align-items:flex-start;gap:var(--space-3);flex-wrap:wrap;z-index:5;pointer-events:none;padding-right:7rem}.graph-shell.has-side .graph-toolbar{padding-right:calc(min(22rem,40%) + var(--space-4))}.graph-toolbar>*{pointer-events:auto}.graph-toolbar .filter-bar{background:color-mix(in srgb,var(--color-surface) 94%,transparent);backdrop-filter:blur(8px);border:1px solid var(--color-border-strong);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3)}.graph-toolbar .filter-toggle{color:var(--color-text-muted)}.graph-toolbar .btn.is-active{background:var(--color-accent);color:#fff}.btn-icon{width:1.05em;height:1.05em;flex:none;vertical-align:-.15em;margin-right:.4em}.graph-share-btn{white-space:nowrap}.graph-share-btn.is-copied{background:var(--color-accent);color:#fff}.graph-share-float{position:absolute;top:var(--space-3);right:var(--space-3);z-index:8}.graph-share-float .graph-share-btn{background:color-mix(in srgb,var(--color-surface) 94%,transparent);backdrop-filter:blur(8px);box-shadow:var(--shadow-pop)}.graph-status{position:absolute;left:var(--space-3);bottom:var(--space-3);display:inline-flex;align-items:center;gap:var(--space-2);background:var(--color-surface-raised);border:1px solid var(--color-torch-dim);border-radius:var(--radius-full);color:var(--color-text);font-size:var(--text-sm);font-weight:600;padding:var(--space-1) var(--space-3);z-index:5}.graph-shell.is-mobile .graph-status{bottom:calc(var(--space-3) + 3.6rem)}.graph-status button{border:none;background:none;color:var(--color-text-muted);font-size:1.1em;line-height:1;cursor:pointer;padding:0 var(--space-1)}.graph-legend{position:absolute;left:var(--space-3);bottom:var(--space-3);display:inline-flex;flex-direction:column;align-items:flex-start;gap:var(--space-1);background:var(--color-surface-raised);border:1px solid var(--color-torch-dim);border-radius:var(--radius-md);color:var(--color-text);font-size:var(--text-sm);font-weight:600;padding:var(--space-2) var(--space-3);z-index:5}.graph-shell.is-mobile .graph-legend{bottom:calc(var(--space-3) + 3.6rem)}.graph-legend-item{display:inline-flex;align-items:center;gap:var(--space-2)}.graph-legend-swatch{flex:none}.graph-legend-swatch--winner{width:.9rem;height:.9rem;border-radius:var(--radius-full);border:2px solid var(--color-gold-bright);background:var(--color-surface)}.graph-legend-swatch--crossshow{width:1.5rem;height:0;border-top:2px dashed currentColor}.graph-loading{position:absolute;inset:0;display:grid;place-content:center;margin:0;color:var(--color-text-muted);font-size:var(--text-sm);pointer-events:none;z-index:4}.graph-error{color:var(--color-danger)}.search-picker{position:relative;min-width:16rem}.search-picker input{width:100%;background:var(--color-surface-raised);border:1px solid var(--color-border-strong);border-radius:var(--radius-full);color:var(--color-text);font:inherit;font-size:var(--text-sm);padding:var(--space-2) var(--space-4);min-height:2.5rem;text-overflow:ellipsis}.search-picker input::placeholder{color:var(--color-text-faint)}.search-picker-results{position:absolute;top:calc(100% + var(--space-1));left:0;right:0;list-style:none;margin:0;padding:var(--space-1);background:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:var(--radius-md);box-shadow:var(--shadow-pop);max-height:18rem;overflow-y:auto;z-index:20}.search-picker-results button{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-3);width:100%;border:none;background:none;color:var(--color-text);font:inherit;font-size:var(--text-sm);text-align:left;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);cursor:pointer;min-height:2.5rem}.search-picker-results button.is-active{background:var(--color-surface-raised)}.search-picker-meta{color:var(--color-text-faint);font-size:var(--text-xs);white-space:nowrap}.bottom-sheet .search-picker-results{position:static;box-shadow:none;margin-top:var(--space-2)}.filter-bar{display:flex;align-items:center;gap:var(--space-4);flex-wrap:wrap}.filter-group{border:none;margin:0;padding:0}.filter-group legend{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.filter-segments{display:inline-flex;background:var(--color-surface-raised);border:1px solid var(--color-border-strong);border-radius:var(--radius-full);padding:2px}.filter-segments button{border:none;background:none;color:var(--color-text-muted);font:inherit;font-size:var(--text-xs);font-weight:700;padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);cursor:pointer;min-height:2rem;white-space:nowrap}.filter-segments button.is-active{background:var(--color-text);color:#fff}.filter-toggle{display:inline-flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--color-text-muted);cursor:pointer;min-height:2.5rem}.filter-toggle input{accent-color:var(--color-torch);width:1.1rem;height:1.1rem}.bottom-sheet .filter-bar{flex-direction:column;align-items:flex-start}.graph-side{position:absolute;top:5rem;right:var(--space-3);width:min(22rem,40%);max-height:calc(100% - 6.5rem);overflow-y:auto;display:grid;gap:var(--space-3);z-index:5}.graph-side:has(.search-picker-results){overflow:visible}.graph-side-section{background:color-mix(in srgb,var(--color-surface) 94%,transparent);backdrop-filter:blur(6px);border:1px solid var(--color-border-strong);border-radius:var(--radius-md);padding:var(--space-4);box-shadow:var(--shadow-card)}.path-finder-hint{color:var(--color-text-muted);font-size:var(--text-xs);margin-bottom:var(--space-3)}.path-finder-pickers{display:flex;flex-direction:column;gap:var(--space-2)}.path-finder-pickers .search-picker{min-width:0}.path-finder-arrow{color:var(--color-text-faint);text-align:center;line-height:.6}.path-finder-empty{color:var(--color-text-muted);font-size:var(--text-sm);margin-top:var(--space-3)}.path-finder-summary{margin:var(--space-3) 0 var(--space-2);font-size:var(--text-sm)}.path-chain{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-1)}.path-chain-hop{display:flex;align-items:center;gap:var(--space-2)}.path-chain-why{color:var(--color-text-muted);font-size:var(--text-2xs)}.path-chain-link{position:relative;display:block;width:2px;height:1.1rem;flex:none;background:var(--color-accent);margin:1px 0 5px var(--space-4)}.path-chain-link:after{content:"";position:absolute;left:50%;bottom:-4px;width:6px;height:6px;border-right:2px solid var(--color-accent);border-bottom:2px solid var(--color-accent);transform:translate(-50%) rotate(45deg)}.path-chain-node{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3);background:var(--color-surface-raised);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3)}.path-chain-focus{border:none;background:none;color:var(--color-text);font:inherit;font-size:var(--text-sm);font-weight:600;text-align:left;cursor:pointer;padding:0}.path-chain-focus:hover{color:var(--color-torch-bright)}.path-chain-profile{font-size:var(--text-xs);white-space:nowrap}.path-finder-actions{display:flex;gap:var(--space-2);flex-wrap:wrap;margin-top:var(--space-3)}.btn-plain{border:none;background:none;color:var(--color-text-faint);font:inherit;font-size:var(--text-sm);cursor:pointer;padding:var(--space-2) var(--space-3);min-height:2.5rem}.btn-plain:hover{color:var(--color-text)}.node-panel-head{display:flex;align-items:flex-start;gap:var(--space-3)}.node-panel-head>div{flex:1;min-width:0}.node-portrait{width:4.5rem;height:4.5rem;border-radius:var(--radius-md);object-fit:cover;object-position:top;flex-shrink:0}.node-portrait-fallback{display:grid;place-items:center;background:var(--color-surface-raised);color:var(--color-text-faint);border:1px solid var(--color-border-strong);font-family:var(--font-display);font-size:var(--text-lg);font-weight:700}.node-panel-name{font-size:var(--text-lg);margin:0 0 var(--space-1)}.node-panel-badges{display:flex;gap:var(--space-2);flex-wrap:wrap;margin:0}.node-panel-close{border:none;background:none;color:var(--color-text-faint);font-size:1.4rem;line-height:1;cursor:pointer;padding:var(--space-1) var(--space-2);margin:calc(-1 * var(--space-1)) calc(-1 * var(--space-1)) 0 0}.node-panel-close:hover{color:var(--color-text)}.node-panel-meta{display:flex;flex-wrap:wrap;gap:0 var(--space-2);color:var(--color-text-muted);font-size:var(--text-sm);margin:var(--space-3) 0}.node-panel-meta>.part+.part{padding-left:var(--space-2);border-left:1px solid var(--color-border)}.node-panel-connections h3{font-size:var(--text-xs);letter-spacing:0;color:var(--color-text-faint);margin:0 0 var(--space-2)}.node-panel-connections ul{list-style:none;margin:0 0 var(--space-3);padding:0;display:grid;gap:var(--space-1)}.node-panel-connections li{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:0 var(--space-3);min-width:0}.node-connection{border:none;background:none;color:var(--color-torch);font:inherit;font-size:var(--text-sm);text-align:left;cursor:pointer;padding:var(--space-1) 0;min-width:0;overflow-wrap:anywhere}.node-connection:hover{color:var(--color-torch-bright);text-decoration:underline}.node-connection-meta{display:flex;flex-wrap:wrap;gap:0 var(--space-2);color:var(--color-text-faint);font-size:var(--text-xs);min-width:0;overflow-wrap:anywhere}.node-connection-meta>.part+.part{padding-left:var(--space-2);border-left:1px solid var(--color-border)}.node-panel-ctas{display:flex;gap:var(--space-2);flex-wrap:wrap}.embedded-graph-panel{position:absolute;top:var(--space-3);right:var(--space-3);z-index:7;width:min(22rem,calc(100% - 2 * var(--space-3)));max-height:calc(100% - 2 * var(--space-3));overflow-y:auto;padding:var(--space-4);border:1px solid var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--shadow-pop)}.embedded-node-context{margin:var(--space-3) 0 0;color:var(--color-text-muted);font-size:var(--text-sm)}.embedded-node-panel .node-panel-meta{margin-top:var(--space-2)}@media(max-width:36rem){.embedded-graph-panel{top:auto;bottom:var(--space-3);left:var(--space-3);width:auto;max-height:calc(100% - 2 * var(--space-3))}}.bottom-bar{position:absolute;left:var(--space-3);right:var(--space-3);bottom:var(--space-3);display:flex;gap:var(--space-1);background:color-mix(in srgb,var(--color-surface) 94%,transparent);backdrop-filter:blur(8px);border:1px solid var(--color-border-strong);border-radius:var(--radius-full);padding:var(--space-1);z-index:8;box-shadow:var(--shadow-pop)}.bottom-bar button{flex:1;display:flex;align-items:center;justify-content:center;gap:var(--space-2);border:none;background:none;color:var(--color-text-muted);font:inherit;font-size:var(--text-sm);font-weight:700;min-height:2.75rem;border-radius:var(--radius-full);cursor:pointer}.bottom-bar button.is-active{background:var(--color-accent);color:#fff}.bottom-bar-icon{display:inline-flex;width:1.15em;height:1.15em}.bottom-bar-icon svg{width:100%;height:100%}.bottom-sheet{position:absolute;left:0;right:0;bottom:0;max-height:70%;display:flex;flex-direction:column;background:var(--color-surface);border-top:1px solid var(--color-border-strong);border-radius:var(--radius-lg) var(--radius-lg) 0 0;box-shadow:var(--shadow-pop);z-index:9;animation:sheet-in .18s ease-out}@keyframes sheet-in{0%{transform:translateY(30%);opacity:.5}to{transform:translateY(0);opacity:1}}.bottom-sheet-grip{width:2.5rem;height:.28rem;border-radius:var(--radius-full);background:var(--color-border-strong);margin:var(--space-2) auto 0}.bottom-sheet-head{display:flex;align-items:center;justify-content:space-between;padding:var(--space-1) var(--space-4)}.bottom-sheet-title{font-size:var(--text-base);margin:0}.bottom-sheet-close{border:none;background:none;color:var(--color-text-faint);font-size:1.5rem;line-height:1;cursor:pointer;padding:var(--space-2);min-width:2.75rem;min-height:2.75rem}.bottom-sheet-body{padding:0 var(--space-4) calc(var(--space-4) + env(safe-area-inset-bottom,0px));overflow-y:auto;-webkit-overflow-scrolling:touch}.home-graph-rest{position:absolute;inset:0;pointer-events:none}@media(prefers-reduced-motion:no-preference){.graph-zoom-controls,.graph-toolbar{animation:chrome-settle var(--motion-settle) var(--ease-out) .42s both}.graph-legend{animation:chrome-settle var(--motion-settle) var(--ease-out) .12s both}@keyframes chrome-settle{0%{opacity:var(--motion-floor);transform:translateY(6px)}}.graph-shell[data-settling]:after{content:"";position:absolute;inset:0;z-index:4;pointer-events:none;background:var(--color-surface);opacity:0;animation:graph-settle .7s var(--ease-out)}@keyframes graph-settle{0%{opacity:0}35%{opacity:.35}to{opacity:0}}.node-panel{animation:graph-panel-in .2s var(--ease-out) 80ms both}@keyframes graph-panel-in{0%{opacity:var(--motion-floor);transform:translate(8px)}}.path-chain li{animation:hop-in .3s var(--ease-out) both;animation-delay:calc(var(--i, 0) * .11s)}@keyframes hop-in{0%{opacity:var(--motion-floor);transform:translateY(10px)}}.path-chain-link{transform-origin:top;animation:link-draw .2s var(--ease-out) both;animation-delay:calc(var(--i, 0) * .11s + 60ms)}@keyframes link-draw{0%{transform:scaleY(0)}}.path-chain-link:after{animation:link-head .14s var(--ease-out) both;animation-delay:calc(var(--i, 0) * .11s + .16s)}@keyframes link-head{0%{transform:translate(-50%) rotate(45deg) scale(0)}to{transform:translate(-50%) rotate(45deg)}}}.home-graph-still{display:block;width:100%;height:100%;touch-action:pan-y}
