.service-visual { margin:0; width:100%; min-width:0; }

.service-visual figcaption { color:var(--muted); font-size:.875rem; line-height:1.85; margin-top:24px; text-align:center; }

.service-visual figcaption>span { color:#9eb1ca; }

.geo-network { position:relative; height:400px; }

.network-lines { position:absolute; inset:0; width:100%; height:100%; color:#6e9dcc60; pointer-events:none; }

.network-lines path { stroke-width:1; vector-effect:non-scaling-stroke; transition:stroke .25s,stroke-width .25s; }

.network-lines path.is-active { stroke:#c3e3ff; stroke-width:1.5; }

/* 中心不是容器，只是一层光晕：把汇聚的线条吃掉，留下纯文字。 */
.network-core { position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); width:150px; height:150px; border:0; border-radius:50%; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:2px; background:radial-gradient(closest-side,#07090c 42%,#0a121d 60%,#07090c00 100%); }

.network-core strong { font-size:2.75rem; font-weight:500; letter-spacing:-.02em; line-height:1.3; }

.network-core span { font-size:.8125rem; letter-spacing:.16em; color:#93a9c4; }

/* 节点同理：没有边框与底色，只有编号、名称和一颗定位星。 */
.network-node { --node-inset:14px; position:absolute; width:26%; min-height:64px; padding:0; border:0; border-radius:0; background:none; display:flex; flex-direction:column; justify-content:center; gap:2px; color:#c2d4e8; font-size:.9375rem; line-height:1.55; text-decoration:none; text-wrap:balance; transition:color .25s; }

.network-node::after { content:''; position:absolute; top:50%; width:5px; height:5px; margin-top:-2.5px; border-radius:50%; background:#8bb9ea; box-shadow:0 0 12px 3px #457ee640; transition:background .25s,box-shadow .25s; }

.network-node span { display:block; color:#7d92aa; font-size:.6875rem; letter-spacing:.16em; font-variant-numeric:tabular-nums; transition:color .25s; }

.network-node:nth-of-type(odd) { left:0; text-align:right; align-items:flex-end; padding-right:var(--node-inset); }

.network-node:nth-of-type(odd)::after { right:-2.5px; }

.network-node:nth-of-type(even) { right:0; text-align:left; align-items:flex-start; padding-left:var(--node-inset); }

.network-node:nth-of-type(even)::after { left:-2.5px; }

.network-node[data-node="0"],.network-node[data-node="1"] { top:0; }

.network-node[data-node="2"],.network-node[data-node="3"] { top:50%; transform:translateY(-50%); }

.network-node[data-node="4"],.network-node[data-node="5"] { bottom:0; }

.network-node:hover,.network-node:focus-visible { color:#fff; }

.network-node:hover span,.network-node:focus-visible span { color:#a6caff; }

.network-node:hover::after,.network-node:focus-visible::after { background:#e8f3ff; box-shadow:0 0 16px 5px #457ee680; }

.geo-visual.is-seen .network-lines path { stroke-dasharray:1; animation:signal-write 1s cubic-bezier(.16,1,.3,1) both; animation-delay:var(--signal-delay,0s); }

@keyframes signal-write { from{stroke-dashoffset:1;opacity:.25} to{stroke-dashoffset:0;opacity:1} }

.product-switch { display:none; grid-template-columns:repeat(4,1fr); gap:2px; border-bottom:1px solid var(--line); margin-bottom:12px; }

.visuals-ready .product-switch { display:grid; }

.product-switch button { font:inherit; font-size:.8125rem; color:#acbed5; padding:12px 4px; min-height:48px; border:0; border-bottom:2px solid transparent; background:transparent; cursor:pointer; }

.product-switch button[aria-pressed="true"] { color:#eef5ff; border-bottom-color:#a6caff; }

.product-switch button:hover { background:#a6caff0a; color:#fff; }

.product-stage { position:relative; min-height:320px; display:grid; place-items:center; padding:34px 16px; isolation:isolate; overflow:hidden; }

.product-orbit { position:absolute; width:92%; height:70%; border:1px solid #83abdc22; border-radius:50%; transform:rotate(-24deg); pointer-events:none; z-index:-1; }

.product-orbit::after { content:''; position:absolute; inset:24px -12px; border:1px solid #83abdc19; border-radius:50%; transform:rotate(40deg); }

.structure-map { display:grid; width:100%; max-width:390px; min-height:235px; gap:12px; padding:18px; border:1px solid #8ab7e77a; border-radius:10px; background:#09111beb; grid-template-columns:1fr 1fr; grid-template-rows:28px minmax(78px,auto) minmax(45px,auto); transform:perspective(900px) rotateY(-9deg) rotateX(5deg); transition:width .5s ease; }

.structure-top { grid-column:1/-1; display:flex; justify-content:space-between; align-items:start; gap:12px; font-size:.8125rem; color:#e1edfb; }

.structure-kind { color:#a1b5ce; font-size:.6875rem; white-space:nowrap; }

.structure-primary,.structure-secondary,.structure-tertiary { display:grid; place-items:center; padding:12px; font-size:.875rem; text-align:center; border:1px solid #87b8ef3b; background:#a6caff06; color:#c4daef; }

.structure-primary { grid-column:1/-1; color:#e7f1ff; border-color:#8cb4e365; background:#86baff10; }

[data-shape="brand-site"] .structure-primary { min-height:118px; font-size:1.25rem; letter-spacing:.15em; }

[data-shape="mini-program"] .structure-map { width:210px; grid-template-columns:1fr; grid-template-rows:28px 70px 46px 46px; border-radius:22px; transform:perspective(900px) rotateY(-8deg); }

[data-shape="mini-program"] .structure-primary { grid-column:1; }

[data-shape="management"] .structure-map { grid-template-columns:.7fr 1.3fr; grid-template-rows:28px 80px 65px; }

[data-shape="management"] .structure-primary { grid-column:1; grid-row:2/4; }

[data-shape="management"] .structure-secondary,[data-shape="management"] .structure-tertiary { grid-column:2; }

.product-description { display:block; min-height:3.7em; }

.product-detail { display:inline-flex; align-items:center; min-height:44px; text-decoration:underline; text-decoration-color:#85a6cd77; }

.service-list article:target h3 { color:#c1e1ff; }

.service-list article:target { scroll-margin-top:40px; }

@media(max-width:1100px) {
  .geo-hero { grid-template-columns:1fr; gap:52px; padding-top:42px; }
  .geo-intro { max-width:650px; }
  .service-visual { max-width:510px; justify-self:center; }
}

@media(max-width:480px) {
  .geo-network { height:350px; }
  .network-node { --node-inset:8px; font-size:.78125rem; }
  .network-core { width:116px; height:116px; }
  .network-core strong { font-size:1.5625rem; }.network-core span { font-size:.625rem; letter-spacing:.1em; }
  .product-stage { padding:25px 0; min-height:320px; }
  .structure-map { padding:14px; gap:9px; transform:none; }
  .structure-top { font-size:.75rem; }.structure-kind { font-size:.625rem; }
  .structure-primary,.structure-secondary,.structure-tertiary { font-size:.8125rem; padding:10px 6px; }
  .product-switch { grid-template-columns:repeat(2,1fr); }
  .product-description { min-height:3.7em; }
}

@media(prefers-reduced-motion:reduce) { .geo-visual.is-seen .network-lines path { animation:none; stroke-dashoffset:0; } .structure-map { transition:none; } }
