/* Canshuo capability constellation. All rules stay inside this section. */
.cap-map{background:linear-gradient(180deg,#fff 0%,#fafaf7 65%,#fff 100%);scroll-margin-top:84px;overflow:hidden}
.cap-map .cap-map__heading{max-width:860px;margin:0 auto;text-align:center}
.cap-map .cap-map__heading .eyebrow{justify-content:center;font-size:10px;letter-spacing:.16em}
.cap-map .cap-map__heading h2{margin-top:24px;color:#2e3439;font-size:clamp(36px,4.1vw,58px);font-weight:680;line-height:1.32;letter-spacing:.01em}
.cap-map .cap-map__intro{max-width:610px;margin:24px auto 0;color:var(--muted);font-size:16px;line-height:1.85}
.cap-map .cap-map__constellation{position:relative;isolation:isolate;width:100%;height:clamp(520px,48vw,700px);margin-top:36px}
.cap-map .cap-map__halo{position:absolute;z-index:-1;left:49%;top:47%;width:70%;height:90%;transform:translate(-50%,-50%);border-radius:50%;background:radial-gradient(ellipse,rgba(205,160,92,.1),rgba(231,239,236,.15) 40%,transparent 70%);pointer-events:none}
.cap-map .cap-map__threads{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.cap-map .cap-map__threads .cap-map__connection{fill:none;stroke:#b5b3a5;stroke-width:.9;vector-effect:non-scaling-stroke;opacity:.65;animation:cap-thread-breathe 9s ease-in-out var(--line-delay,0s) infinite}
/* A single short dash travels from the outer endpoint to the covered hub.
   Normalized paths give all ten routes one emission every three seconds, independently phased. */
.cap-map .cap-map__threads .cap-map__pulse{fill:none;stroke:#cda05c;stroke-width:3.2;stroke-linecap:round;stroke-dasharray:.65 99.35;stroke-dashoffset:100;vector-effect:non-scaling-stroke;opacity:0;filter:drop-shadow(0 0 1.5px rgba(255,218,132,.95)) drop-shadow(0 0 3.5px rgba(205,160,92,.65));pointer-events:none;animation:cap-energy-inward 3s linear calc(var(--pulse-delay,0s) * 3) infinite}
@keyframes cap-energy-inward{0%{stroke-dashoffset:100;opacity:0}16%{opacity:1}74%{opacity:1}94%,100%{opacity:0}100%{stroke-dashoffset:0}}
.cap-map .cap-map__mobile-lines{display:none}
.cap-map .cap-map__hub{position:absolute;z-index:2;left:49%;top:47%;display:flex;flex-direction:column;align-items:center;justify-content:center;width:174px;height:174px;transform:translate(-50%,-50%);border:1px solid rgba(205,160,92,.55);border-radius:50%;background:radial-gradient(ellipse at 29% 16%,rgba(166,181,170,.3),transparent 49%),radial-gradient(ellipse at 74% 91%,rgba(205,160,92,.1),transparent 55%),linear-gradient(145deg,#43504e 0%,#2e3439 53%,#242c30 100%);box-shadow:inset 0 2px 3px rgba(255,255,255,.22),inset -7px -10px 20px rgba(13,23,27,.28),inset 0 0 0 1px rgba(255,255,255,.05),0 17px 34px rgba(46,52,57,.14),0 0 36px rgba(205,160,92,.09);color:#fff}
.cap-map .cap-map__hub:before{position:absolute;inset:-12px;border:1px solid rgba(205,160,92,.2);box-shadow:0 0 20px rgba(205,160,92,.05);border-radius:50%;content:"";animation:cap-hub-breathe 9s ease-in-out infinite;pointer-events:none}
.cap-map .cap-map__hub span{padding-left:.08em;font-size:43px;font-weight:650;letter-spacing:.08em;line-height:1.4}
.cap-map .cap-map__hub small{margin-top:6px;color:#d2b785;font-size:11px;letter-spacing:.16em}
.cap-map .cap-map__orbit{margin:0;padding:0;list-style:none}
.cap-map .cap-map__satellite{position:absolute;z-index:1;left:var(--x);top:var(--y);display:grid;place-items:center;width:var(--size);height:var(--size);margin-left:calc(var(--size) / -2);margin-top:calc(var(--size) / -2);border:1px solid rgba(255,255,255,.86);border-radius:50%;background:radial-gradient(ellipse at 26% 14%,rgba(255,255,255,.92),rgba(255,255,255,.24) 44%,transparent 68%),radial-gradient(ellipse at 76% 94%,rgba(255,255,255,.62),transparent 57%),linear-gradient(145deg,rgba(246,249,246,.64),rgba(229,237,231,.42));-webkit-backdrop-filter:blur(6px) saturate(.85);backdrop-filter:blur(6px) saturate(.85);box-shadow:inset 0 1px 2px rgba(255,255,255,.96),inset -1px -3px 8px rgba(74,94,83,.045),0 0 0 1px rgba(84,106,96,.11),0 7px 19px rgba(46,52,57,.035);color:#35433e;animation:cap-node-drift var(--duration) ease-in-out var(--delay) infinite}
.cap-map .cap-map__satellite span{font-size:17px;font-weight:600;line-height:1.4;white-space:nowrap}
.cap-map .cap-map__satellite--primary{border-color:rgba(255,255,255,.9);background:radial-gradient(ellipse at 26% 14%,rgba(255,255,255,.95),rgba(255,255,255,.3) 44%,transparent 68%),radial-gradient(ellipse at 76% 94%,rgba(255,251,237,.66),transparent 57%),linear-gradient(145deg,rgba(250,246,236,.67),rgba(237,222,193,.38))}
.cap-map .cap-map__satellite--primary span{font-size:23px;color:#2e3439}

.cap-map .cap-map__note{display:flex;align-items:center;justify-content:center;gap:10px;margin-top:8px;color:var(--muted);font-size:12px;line-height:1.8;text-align:center}
.cap-map .cap-map__note>span{flex-shrink:0;width:5px;height:5px;border-radius:50%;background:#cda05c}
@keyframes cap-node-drift{0%,100%{transform:translate(0,0)}50%{transform:translate(var(--drift-x),var(--drift-y))}}
@keyframes cap-hub-breathe{0%,100%{transform:scale(1);opacity:.5}50%{transform:scale(1.035);opacity:.9}}
@keyframes cap-thread-breathe{0%,100%{opacity:.4}50%{opacity:.7}}
@media(hover:hover){.cap-map .cap-map__satellite:hover{border-color:rgba(255,255,255,.98);box-shadow:inset 0 1px 2px #fff,inset -1px -3px 8px rgba(74,94,83,.045),0 0 0 1px rgba(205,160,92,.3),0 9px 23px rgba(205,160,92,.07)}}
@media(max-width:980px) and (min-width:621px){.cap-map .cap-map__constellation{height:540px}.cap-map .cap-map__satellite{width:calc(var(--size) * .78);height:calc(var(--size) * .78);margin-left:calc(var(--size) * -.39);margin-top:calc(var(--size) * -.39)}.cap-map .cap-map__satellite span{font-size:14px}.cap-map .cap-map__satellite--primary span{font-size:19px}.cap-map .cap-map__hub{width:138px;height:138px}.cap-map .cap-map__hub span{font-size:35px}}
@media(max-width:620px){.cap-map{scroll-margin-top:70px}.cap-map .cap-map__heading h2{font-size:clamp(29px,8vw,38px);line-height:1.4;letter-spacing:0;margin-top:20px}.cap-map .cap-map__heading .eyebrow{font-size:9px;letter-spacing:.09em}.cap-map .cap-map__intro{max-width:360px;margin-top:20px;font-size:14px;line-height:1.9}.cap-map .cap-map__constellation{height:600px;max-width:440px;margin:30px auto 0}.cap-map .cap-map__desktop-lines{display:none}.cap-map .cap-map__mobile-lines{display:inline}.cap-map .cap-map__halo{left:50%;top:49%;width:100%;height:70%}.cap-map .cap-map__hub{left:50%;top:49%;width:108px;height:108px}.cap-map .cap-map__hub span{font-size:29px}.cap-map .cap-map__hub small{font-size:8px;margin-top:3px}.cap-map .cap-map__hub:before{inset:-8px}.cap-map .cap-map__satellite{left:var(--mx);top:var(--my);width:var(--msize);height:var(--msize);margin-left:calc(var(--msize) / -2);margin-top:calc(var(--msize) / -2)}.cap-map .cap-map__satellite span{font-size:13px}.cap-map .cap-map__satellite--primary span{font-size:18px}.cap-map .cap-map__note{max-width:320px;margin:18px auto 0;font-size:11px;align-items:baseline}}
@media(prefers-reduced-motion:reduce){.cap-map .cap-map__threads .cap-map__pulse{display:none!important}.cap-map .cap-map__satellite,.cap-map .cap-map__hub:before,.cap-map .cap-map__threads path{animation:none!important}.cap-map .cap-map__threads path{opacity:.6}}
