body,html{margin:0;height:100%;overflow:hidden;background:#0c0e12;color:#e6ebf2;font-family:IBM Plex Sans,Segoe UI,sans-serif}.App,.network-shell{position:relative;width:100vw;height:100vh;overflow:hidden}.network-canvas{width:100%!important;height:100%!important;display:block;touch-action:none}.network-loading{width:100vw;height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;background:#0c0e12;color:#e6ebf2}.network-loading__spinner{width:42px;height:42px;border-radius:50%;border:3px solid #1e293b;border-top-color:#22d3ee;animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.network-hud{position:absolute;inset:0;pointer-events:none;z-index:5}.network-brand{position:absolute;top:1.25rem;left:1.25rem;display:flex;flex-direction:column;gap:.2rem}.network-brand strong{font-size:1.15rem;letter-spacing:.02em;color:#f8fafc}.network-focus{position:absolute;top:1.25rem;left:0;right:0;width:min(52vw,520px);margin:0 auto;display:flex;flex-direction:column;align-items:center;gap:.2rem;text-align:center;pointer-events:none;opacity:0;visibility:hidden;transition:opacity .14s ease}.network-focus.is-visible{opacity:1;visibility:visible}.network-focus strong{font-size:1.15rem;letter-spacing:.02em;color:#f8fafc;line-height:1.2}.network-focus span{color:#94a3b8;font-size:.85rem;line-height:1.3}.network-legend{position:absolute;left:1.25rem;bottom:1.5rem;margin:0;padding:.55rem .8rem .7rem;border:1px solid rgba(154,171,189,.22);background:rgba(12,14,18,.82);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:12px;pointer-events:auto;z-index:6}.network-legend__hint{margin:0 0 .45rem;display:flex;flex-direction:column;align-items:center;gap:.05rem;font-size:.68rem;letter-spacing:.06em;text-transform:uppercase;color:#94a3b8;text-align:center}.network-legend__arrow{display:block;font-size:.85rem;line-height:1;color:#c5ced9;animation:legendBounce 1.1s ease-in-out infinite}@keyframes legendBounce{0%,to{transform:translateY(0)}50%{transform:translateY(3px)}}.network-legend ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.35rem}.network-legend li{display:flex;align-items:center;gap:.55rem;font-size:.78rem;color:#c5ced9;padding:.2rem .25rem;border-radius:6px;cursor:pointer;transition:background .15s ease,color .15s ease}.network-legend li.is-active,.network-legend li:hover{background:hsla(0,0%,100%,.06);color:#f1f5f9}.network-legend__swatch{width:1.35rem;height:1rem;flex-shrink:0;border-radius:3px;overflow:hidden;display:block;border:1px solid hsla(0,0%,100%,.12);background:transparent}.network-legend__swatch canvas{width:100%!important;height:100%!important;display:block}.network-brand span,.network-hint{color:#94a3b8;font-size:.85rem}.network-hint{position:absolute;left:50%;bottom:1.5rem;transform:translateX(-50%);margin:0;padding:.55rem .9rem;border:1px solid rgba(154,171,189,.28);background:rgba(16,19,26,.78);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:999px;white-space:nowrap;color:#b7c2d0}.node-label{padding:.28rem .55rem;border-radius:.4rem;background:rgba(16,19,26,.92);border:1px solid rgba(154,171,189,.35);color:#e8eef5;font-size:12px;font-weight:600;letter-spacing:.02em;white-space:nowrap;max-width:200px;overflow:hidden;text-overflow:ellipsis;text-align:center;box-shadow:0 0 12px rgba(0,0,0,.35);animation:labelIn .14s ease-out}.node-label.is-selected{border-color:#9aabbd;color:#e8eef5;box-shadow:0 0 14px rgba(154,171,189,.25)}.node-label.is-dimmed{opacity:.35}@keyframes labelIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.detail-panel{position:absolute;top:0;right:0;width:min(380px,92vw);height:100%;z-index:20;display:flex;flex-direction:column;background:linear-gradient(180deg,rgba(12,18,28,.96),rgba(8,12,20,.98));border-left:1px solid rgba(148,163,184,.25);box-shadow:-16px 0 40px rgba(0,0,0,.35);animation:slideIn .28s ease;pointer-events:auto}@keyframes slideIn{0%{transform:translateX(18px);opacity:0}to{transform:translateX(0);opacity:1}}.detail-panel__header{display:flex;justify-content:flex-end;padding:.85rem .85rem 0}.detail-panel__close{width:2rem;height:2rem;border:1px solid rgba(148,163,184,.35);border-radius:999px;background:transparent;color:#e2e8f0;font-size:1.25rem;line-height:1;cursor:pointer}.detail-panel__close:hover{border-color:#22d3ee;color:#22d3ee}.detail-panel__scroll{overflow-y:auto;padding:.5rem 1.25rem 1.75rem;display:flex;flex-direction:column;gap:1rem}.detail-panel__hero{text-align:center}.detail-panel__image{width:72px;height:72px;object-fit:cover;border-radius:14px;border:1px solid rgba(148,163,184,.4);margin-bottom:.75rem;background:#0f172a}.detail-panel__title{margin:0;font-size:1.35rem;color:#f8fafc}.detail-panel__subtitle{margin:.35rem 0 0;color:#94a3b8;font-size:.92rem;line-height:1.4}.detail-panel__layer{margin:0 0 .35rem;font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;color:#64748b}.detail-panel__metrics{display:grid;grid-template-columns:1fr 1fr;grid-gap:.5rem;gap:.5rem}.detail-panel__metric{border:1px solid rgba(51,65,85,.9);border-radius:10px;padding:.55rem .7rem;background:rgba(15,23,42,.7)}.detail-panel__metric span{display:block;font-size:.65rem;letter-spacing:.08em;text-transform:uppercase;color:#94a3b8;margin-bottom:.2rem}.detail-panel__metric strong{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:1rem;font-weight:600;color:#7dd3fc}.detail-panel__edges{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.4rem}.detail-panel__edges li{display:flex;align-items:center;justify-content:space-between;gap:.75rem;border:1px solid rgba(51,65,85,.9);border-radius:8px;padding:.4rem .55rem;background:rgba(2,6,23,.4)}.detail-panel__edges button{background:none;border:none;color:#e2e8f0;font:inherit;font-size:.82rem;text-align:left;cursor:pointer;padding:0}.detail-panel__edges button:hover{color:#7dd3fc}.detail-panel__edges span{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.78rem;color:#c4b5fd;flex-shrink:0}.detail-panel__section{padding:.9rem 1rem;border-radius:12px;background:rgba(15,23,42,.65);border:1px solid rgba(51,65,85,.8)}.detail-panel__section h3{margin:0 0 .45rem;font-size:.78rem;text-transform:uppercase;letter-spacing:.08em;color:#67e8f9}.detail-panel.tone-company .detail-panel__section h3{color:#93c5fd}.detail-panel.tone-project .detail-panel__section h3{color:#6ee7b7}.detail-panel.tone-tech .detail-panel__section h3{color:#fca5a5}.detail-panel__section p{margin:0;color:#cbd5e1;line-height:1.55;font-size:.92rem}.detail-panel__tags{display:flex;flex-wrap:wrap;gap:.4rem}.detail-panel__tag{padding:.25rem .55rem;border-radius:999px;background:rgba(34,211,238,.12);border:1px solid rgba(34,211,238,.28);color:#a5f3fc;font-size:.75rem}.detail-panel__links{display:flex;flex-direction:column;gap:.45rem}.detail-panel__links a{color:#67e8f9;text-decoration:none;font-weight:600}.detail-panel__links a:hover{text-decoration:underline}.detail-panel__nav{display:flex;flex-direction:column;gap:.4rem}.detail-panel__nav button{text-align:left;padding:.55rem .7rem;border-radius:8px;border:1px solid rgba(71,85,105,.9);background:rgba(2,6,23,.55);color:#e2e8f0;cursor:pointer;font:inherit}.detail-panel__nav button:hover{border-color:#22d3ee;color:#a5f3fc}@media (max-width:720px){.detail-panel{width:100%;height:min(58vh,520px);top:auto;bottom:0;border-left:none;border-top:1px solid rgba(148,163,184,.25);border-radius:16px 16px 0 0}.network-hint{bottom:auto;top:4.5rem;white-space:normal;max-width:90vw;text-align:center}}