.ph-visual{--ph-ink:#171514;--ph-line:rgba(23,21,20,0.1);--ph-orange:#ff5a1f;--ph-orange-soft:#fff3ed;--ph-amber:#ffb000;--ph-teal:#14b8a6;--ph-violet:#6c3bf4;--ph-blue:#3158f5;--ph-card:#ffffff;--ph-graphic:#ece5de;--ph-muted:#9a948c;width:100%;height:100%;display:flex;align-items:center;justify-content:center}.ph-svg{width:100%;height:auto;max-width:540px;overflow:visible}.ph-ring{fill:none;stroke:rgba(23,21,20,.06);stroke-width:1;stroke-dasharray:2 7}.ph-conn{fill:none;stroke:var(--ph-line);stroke-width:1.4;stroke-dasharray:3 4}.ph-hub{fill:var(--ph-orange)}.ph-signal{fill:none;stroke:var(--ph-orange);stroke-width:2;stroke-linecap:round;stroke-dasharray:7 100;stroke-dashoffset:100;opacity:0}.ph-pill rect{fill:var(--ph-card);stroke:var(--ph-line);stroke-width:1;filter:drop-shadow(0 8px 18px rgba(23,21,20,.08))}.ph-pill-label{fill:var(--ph-ink);font-family:var(--font-sans,inherit);font-size:12px;font-weight:700;letter-spacing:-.01em}.ph-dot-orange{fill:var(--ph-orange)}.ph-dot-amber{fill:var(--ph-amber)}.ph-dot-teal{fill:var(--ph-teal)}.ph-dot-violet{fill:var(--ph-violet)}.ph-dot-blue{fill:var(--ph-blue)}.ph-ghost{opacity:.55;filter:drop-shadow(0 14px 30px rgba(23,21,20,.06))}.ph-card-bg,.ph-ghost{fill:var(--ph-card);stroke:var(--ph-line);stroke-width:1}.ph-card-bg{filter:drop-shadow(0 24px 50px rgba(23,21,20,.16))}.ph-label{fill:var(--ph-muted);font-family:var(--font-sans,inherit);font-size:8px;font-weight:800;letter-spacing:.16em}.ph-avatar{fill:var(--ph-orange-soft);stroke:var(--ph-orange);stroke-width:2}.ph-avatar-core{fill:var(--ph-orange)}.ph-bar{fill:var(--ph-graphic)}.ph-bar--name{fill:rgba(23,21,20,.2)}.ph-bar--lead{fill:var(--ph-orange)}.ph-divider{stroke:var(--ph-line);stroke-width:1}.ph-ring-track{fill:none;stroke:rgba(23,21,20,.08);stroke-width:7}.ph-ring-fill{fill:none;stroke:var(--ph-teal);stroke-width:7;stroke-linecap:round;stroke-dasharray:175.9;stroke-dashoffset:38.7}.ph-score{fill:var(--ph-ink);font-size:23px;letter-spacing:-.05em}.ph-score,.ph-score-label{font-family:var(--font-display,inherit);font-weight:800}.ph-score-label{fill:var(--ph-orange);font-size:8px;letter-spacing:.14em}.ph-band{fill:var(--ph-ink);font-family:var(--font-display,inherit);font-size:14px;font-weight:800;letter-spacing:-.02em}.ph-band-sub{fill:var(--ph-muted);font-family:var(--font-sans,inherit);font-size:10px;font-weight:600}.ph-seal circle{fill:var(--ph-orange);filter:drop-shadow(0 10px 18px rgba(255,90,31,.4))}.ph-seal path{fill:none;stroke:#fff;stroke-width:2.8;stroke-linecap:round;stroke-linejoin:round}.ph-visual--first-signal .ph-ring-fill{stroke:var(--ph-orange)}.ph-score-halo{fill:var(--ph-orange);opacity:.14}.ph-band-sub--signal{fill:var(--ph-orange);font-weight:700}.ph-visual--first-signal .ph-dims .ph-bar:not(.ph-bar--lead),.ph-visual--first-signal .ph-dims circle:not(.ph-dot-orange){opacity:.4}@media (prefers-reduced-motion:no-preference){.ph-card{transform-box:fill-box;transform-origin:center;animation:ph-float 6.5s ease-in-out infinite}.ph-ring-fill{animation:ph-ring 7s ease-out infinite}.ph-score-halo{animation:ph-halo 3.6s ease-in-out infinite}.ph-score-halo,.ph-seal{transform-box:fill-box;transform-origin:center}.ph-seal{animation:ph-seal-pop 7s ease-in-out infinite}.ph-signal{animation:ph-travel 3.6s ease-in-out infinite}.ph-signal:first-of-type{animation-delay:0s}.ph-signal:nth-of-type(2){animation-delay:.5s}.ph-signal:nth-of-type(3){animation-delay:1s}.ph-signal:nth-of-type(4){animation-delay:1.5s}.ph-pill{transform-box:fill-box;transform-origin:center;animation:ph-pill-pulse 3.6s ease-in-out infinite}.ph-dests>g:first-of-type .ph-pill{animation-delay:.6s}.ph-dests>g:nth-of-type(2) .ph-pill{animation-delay:1.1s}.ph-dests>g:nth-of-type(3) .ph-pill{animation-delay:1.6s}.ph-dests>g:nth-of-type(4) .ph-pill{animation-delay:2.1s}}@keyframes ph-float{0%,to{transform:translateY(0)}50%{transform:translateY(-7px)}}@keyframes ph-halo{0%,to{transform:scale(1);opacity:.14}50%{transform:scale(1.12);opacity:.22}}@keyframes ph-ring{0%{stroke-dashoffset:175.9}38%,to{stroke-dashoffset:38.7}}@keyframes ph-seal-pop{0%,16%{transform:scale(.7);opacity:0}32%,to{transform:scale(1);opacity:1}}@keyframes ph-travel{0%{stroke-dashoffset:100;opacity:0}15%{opacity:.95}70%{opacity:.95}85%,to{stroke-dashoffset:0;opacity:0}}@keyframes ph-pill-pulse{0%,58%,to{transform:scale(1)}72%{transform:scale(1.06)}}