/* Zettai Systems — animated visuals (orbit + mesh band) */ .orbit-section { overflow: hidden; } .orbit-layout { display: grid; gap: 2.5rem; align-items: center; } @media (min-width: 992px) { .orbit-layout { grid-template-columns: 1fr 1fr; gap: 3rem; } } .orbit-stage { position: relative; width: min(100%, 420px); aspect-ratio: 1; margin-inline: auto; border-radius: 28px; background: radial-gradient(circle at 50% 50%, rgba(0, 84, 152, 0.2), transparent 55%), linear-gradient(160deg, #0c1628 0%, #15243a 55%, #101b2e 100%); border: 1px solid rgba(255, 255, 255, 0.08); box-shadow: var(--shadow-lg); overflow: hidden; } .orbit-ring { position: absolute; inset: 18%; border-radius: 50%; border: 1.5px dashed rgba(192, 208, 220, 0.35); animation: zsOrbitSpin 48s linear infinite; } .orbit-ring::before { content: ""; position: absolute; inset: 14%; border-radius: 50%; border: 1px solid rgba(0, 84, 152, 0.25); } .orbit-hub { position: absolute; top: 50%; left: 50%; z-index: 3; width: 88px; height: 88px; margin: -44px 0 0 -44px; border-radius: 50%; display: grid; place-items: center; background: linear-gradient(145deg, #14283c, #0a1520); box-shadow: 0 0 0 10px rgba(8, 32, 72, 0.45), 0 12px 30px rgba(0, 0, 0, 0.4); animation: zsHubPulse 3.6s ease-in-out infinite; } .orbit-hub img { width: 42px; height: auto; } .orbit-nodes { position: absolute; inset: 0; } .orbit-node { position: absolute; top: 50%; left: 50%; width: 54px; height: 54px; margin: -27px 0 0 -27px; border-radius: 50%; display: grid; place-items: center; background: rgba(255, 255, 255, 0.08); border: 1px solid rgba(255, 255, 255, 0.14); color: #fff; backdrop-filter: blur(6px); z-index: 2; } .orbit-node i { font-size: 1.15rem; } .orbit-node span { position: absolute; top: calc(100% + 6px); left: 50%; transform: translateX(-50%); white-space: nowrap; font-size: 0.68rem; font-family: var(--font-display); font-weight: 700; color: rgba(255, 255, 255, 0.8); } .orbit-nodes .orbit-node:nth-child(1) { animation: zsNode1 48s linear infinite; } .orbit-nodes .orbit-node:nth-child(2) { animation: zsNode2 48s linear infinite; } .orbit-nodes .orbit-node:nth-child(3) { animation: zsNode3 48s linear infinite; } .orbit-nodes .orbit-node:nth-child(4) { animation: zsNode4 48s linear infinite; } .orbit-nodes .orbit-node:nth-child(5) { animation: zsNode5 48s linear infinite; } .orbit-nodes .orbit-node:nth-child(6) { animation: zsNode6 48s linear infinite; } @keyframes zsNode1 { from { transform: rotate(0deg) translateY(-132px) rotate(0deg); } to { transform: rotate(360deg) translateY(-132px) rotate(-360deg); } } @keyframes zsNode2 { from { transform: rotate(60deg) translateY(-132px) rotate(-60deg); } to { transform: rotate(420deg) translateY(-132px) rotate(-420deg); } } @keyframes zsNode3 { from { transform: rotate(120deg) translateY(-132px) rotate(-120deg); } to { transform: rotate(480deg) translateY(-132px) rotate(-480deg); } } @keyframes zsNode4 { from { transform: rotate(180deg) translateY(-132px) rotate(-180deg); } to { transform: rotate(540deg) translateY(-132px) rotate(-540deg); } } @keyframes zsNode5 { from { transform: rotate(240deg) translateY(-132px) rotate(-240deg); } to { transform: rotate(600deg) translateY(-132px) rotate(-600deg); } } @keyframes zsNode6 { from { transform: rotate(300deg) translateY(-132px) rotate(-300deg); } to { transform: rotate(660deg) translateY(-132px) rotate(-660deg); } } .orbit-chip { position: absolute; z-index: 4; display: flex; align-items: center; gap: 0.55rem; padding: 0.65rem 0.9rem; border-radius: 14px; background: var(--surface-color); border: 1px solid var(--border-color); box-shadow: var(--shadow-md); font-family: var(--font-display); font-size: 0.82rem; font-weight: 700; color: var(--text-color); animation: floatPanel 5.5s ease-in-out infinite; } .orbit-chip i { color: var(--primary-color); font-size: 1.1rem; } .orbit-chip.chip-a { top: 12%; right: 6%; } .orbit-chip.chip-b { bottom: 12%; left: 6%; animation-delay: -2.5s; } .orbit-chip.chip-b i { color: var(--secondary-color); } .orbit-chip small { display: block; font-weight: 500; font-size: 0.72rem; color: var(--muted-text-color); } @keyframes zsOrbitSpin { to { transform: rotate(360deg); } } @keyframes zsHubPulse { 0%, 100% { box-shadow: 0 0 0 10px rgba(0, 84, 152, 0.18), 0 12px 30px rgba(0, 0, 0, 0.35); } 50% { box-shadow: 0 0 0 16px rgba(192, 208, 220, 0.16), 0 12px 30px rgba(0, 0, 0, 0.35); } } /* Mesh band */ .mesh-band { position: relative; overflow: hidden; padding: clamp(3.5rem, 7vw, 5.5rem) 0; color: #fff; background: linear-gradient(120deg, #071526 0%, #0c2a4d 45%, #12305a 100%); box-shadow: inset 0 1px 0 rgba(126, 182, 255, 0.16); } [data-theme="dark"] .mesh-band { background: linear-gradient(120deg, #06111f 0%, #123a66 48%, #0d2848 100%); box-shadow: inset 0 1px 0 rgba(126, 182, 255, 0.22); } .mesh-band-canvas { position: absolute; inset: 0; pointer-events: none; opacity: 0.55; } .mesh-band-canvas svg { width: 100%; height: 100%; display: block; } .mesh-wave { fill: none; stroke: rgba(0, 84, 152, 0.45); stroke-width: 1.5; animation: zsMeshDrift 14s ease-in-out infinite alternate; } .mesh-wave.w2 { stroke: rgba(192, 208, 220, 0.4); animation-duration: 18s; animation-delay: -4s; } .mesh-wave.w3 { stroke: rgba(255, 255, 255, 0.12); animation-duration: 22s; animation-delay: -7s; } @keyframes zsMeshDrift { from { transform: translateX(0) translateY(0); } to { transform: translateX(-3%) translateY(2%); } } .mesh-band .container-zs { position: relative; z-index: 1; } .mesh-layout { display: grid; gap: 2rem; align-items: center; } @media (min-width: 992px) { .mesh-layout { grid-template-columns: 0.95fr 1.05fr; gap: 3rem; } } .radar-frame { position: relative; border-radius: 20px; padding: 1.25rem; background: rgba(255, 255, 255, 0.04); border: 1px solid rgba(255, 255, 255, 0.14); backdrop-filter: blur(8px); } .radar-legend { display: flex; flex-wrap: wrap; gap: 0.85rem; margin-bottom: 0.85rem; font-size: 0.78rem; font-family: var(--font-display); color: rgba(255, 255, 255, 0.75); } .radar-legend span { display: inline-flex; align-items: center; gap: 0.4rem; } .radar-legend i { width: 10px; height: 10px; border-radius: 3px; display: inline-block; } .radar-legend .l1 { background: rgba(0, 84, 152, 0.85); } .radar-legend .l2 { background: rgba(192, 208, 220, 0.85); } .radar-legend .l3 { background: rgba(255, 255, 255, 0.35); } .radar-svg { width: 100%; height: auto; display: block; } .radar-poly { animation: zsRadarBreathe 5s ease-in-out infinite; } .radar-poly.p2 { animation-delay: -1.5s; } @keyframes zsRadarBreathe { 0%, 100% { opacity: 0.5; } 50% { opacity: 0.9; } } .mesh-copy .eyebrow { color: #7eb6ff; } .mesh-copy .eyebrow::before { background: linear-gradient(90deg, #005498, #c0d0dc); } .mesh-copy h2 { color: #fff; font-size: clamp(1.8rem, 3.5vw, 2.6rem); margin: 0 0 1rem; } .mesh-copy h2 em { font-style: normal; background: linear-gradient(90deg, #4ba3dc, #c0d0dc); -webkit-background-clip: text; background-clip: text; color: transparent; } .mesh-copy p { color: rgba(255, 255, 255, 0.8); max-width: 34rem; margin: 0 0 1.5rem; } @media (prefers-reduced-motion: reduce) { .orbit-ring, .orbit-nodes .orbit-node, .orbit-hub, .orbit-chip, .mesh-wave, .radar-poly { animation: none !important; } } @media (max-width: 575.98px) { .orbit-nodes .orbit-node:nth-child(1) { animation-name: zsNode1m; } .orbit-nodes .orbit-node:nth-child(2) { animation-name: zsNode2m; } .orbit-nodes .orbit-node:nth-child(3) { animation-name: zsNode3m; } .orbit-nodes .orbit-node:nth-child(4) { animation-name: zsNode4m; } .orbit-nodes .orbit-node:nth-child(5) { animation-name: zsNode5m; } .orbit-nodes .orbit-node:nth-child(6) { animation-name: zsNode6m; } @keyframes zsNode1m { from { transform: rotate(0deg) translateY(-108px) rotate(0deg); } to { transform: rotate(360deg) translateY(-108px) rotate(-360deg); } } @keyframes zsNode2m { from { transform: rotate(60deg) translateY(-108px) rotate(-60deg); } to { transform: rotate(420deg) translateY(-108px) rotate(-420deg); } } @keyframes zsNode3m { from { transform: rotate(120deg) translateY(-108px) rotate(-120deg); } to { transform: rotate(480deg) translateY(-108px) rotate(-480deg); } } @keyframes zsNode4m { from { transform: rotate(180deg) translateY(-108px) rotate(-180deg); } to { transform: rotate(540deg) translateY(-108px) rotate(-540deg); } } @keyframes zsNode5m { from { transform: rotate(240deg) translateY(-108px) rotate(-240deg); } to { transform: rotate(600deg) translateY(-108px) rotate(-600deg); } } @keyframes zsNode6m { from { transform: rotate(300deg) translateY(-108px) rotate(-300deg); } to { transform: rotate(660deg) translateY(-108px) rotate(-660deg); } } .orbit-chip { font-size: 0.72rem; padding: 0.5rem 0.7rem; } }