Files
my-page/src/pages/corp/AiRobotPage.vue
2026-08-13 21:13:18 +08:00

1026 lines
28 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<script setup>
import { ref } from 'vue'
import { corpProfiles } from '../../data/corpProfiles'
const c = corpProfiles.ai
/* 参数铭牌 */
const plateIdx = ref(-1)
const plate = ref(null)
function openPlate(i) {
plateIdx.value = i
plate.value = c.cases[i]
}
function closePlate() {
plateIdx.value = -1
plate.value = null
}
const specs = [
{ k: '重复定位精度', v: '±0.02mm' },
{ k: '最大负载', v: '35kg' },
{ k: '工作半径', v: '1.8m' },
{ k: '关节自由度', v: '6 轴' },
{ k: '循环节拍', v: '0.38s' },
{ k: '防护等级', v: 'IP67' },
]
const scenes = [
{ name: '精密装配', desc: '3C 产线螺丝锁附与部件贴合' },
{ name: '智能分拣', desc: '视觉引导抓取,混料分拣不出错' },
{ name: '焊接打磨', desc: '轨迹自学习,焊缝一致性 99.4%' },
{ name: '实验室自动化', desc: '移液、离心、检测全流程无人' },
]
</script>
<template>
<div class="ar">
<nav class="ar-nav">
<b class="ar-logo">🦾 深思·机器人</b>
<div class="ar-menu">
<a href="#arm">整机参数</a>
<a href="#scenes">场景</a>
</div>
<router-link to="/corp" class="ar-back">返回合集</router-link>
</nav>
<header class="ar-hero">
<div class="ar-hero-txt">
<p class="ar-kicker">DEEPTHINK ROBOTICS · DT-ARM 6</p>
<h1>给产线装上<br /><span>不知疲倦的手</span></h1>
<p class="ar-sub">搭载深思视觉大模型的六轴协作机械臂,装配、分拣、焊接一臂多用,两小时完成产线换型。</p>
<div class="ar-hero-btns">
<a href="#scenes" class="ar-btn-main">查看场景方案</a>
<a href="#arm" class="ar-btn-sub">下载规格书</a>
</div>
</div>
<div class="ar-arm" aria-hidden="true">
<svg class="ar-rig" viewBox="0 0 380 332">
<defs>
<linearGradient id="ar-metal" x1="0" y1="0" x2="1" y2="0">
<stop offset="0" stop-color="#55585f" />
<stop offset="0.5" stop-color="#3a3d44" />
<stop offset="1" stop-color="#2a2c33" />
</linearGradient>
<pattern id="ar-hz" width="14" height="8" patternUnits="userSpaceOnUse" patternTransform="skewX(-30)">
<rect width="7" height="8" fill="#ffb020" />
<rect x="7" width="7" height="8" fill="#22242a" />
</pattern>
</defs>
<!-- 地面 -->
<line x1="8" y1="292" x2="372" y2="292" stroke="#3a3d44" stroke-width="2" />
<line x1="30" y1="302" x2="120" y2="302" stroke="#2e3037" stroke-width="2" />
<!-- 传送带与纸箱 -->
<g>
<rect x="248" y="256" width="124" height="16" rx="8" fill="#26282e" stroke="#4b4e55" />
<circle cx="262" cy="264" r="5" fill="#16171b" stroke="#55585f" />
<circle cx="296" cy="264" r="5" fill="#16171b" stroke="#55585f" />
<circle cx="330" cy="264" r="5" fill="#16171b" stroke="#55585f" />
<circle cx="358" cy="264" r="5" fill="#16171b" stroke="#55585f" />
<g class="ar-box">
<rect x="288" y="224" width="32" height="32" rx="3" fill="#7a5230" stroke="#54371e" stroke-width="1.5" />
<line x1="304" y1="224" x2="304" y2="256" stroke="#54371e" stroke-width="1.5" />
<rect x="296" y="224" width="16" height="7" fill="#c8a06a" opacity="0.7" />
</g>
</g>
<!-- 基座 -->
<rect x="94" y="250" width="112" height="42" rx="6" fill="#26282e" stroke="#4b4e55" />
<rect x="102" y="274" width="96" height="10" fill="url(#ar-hz)" opacity="0.85" rx="2" />
<text x="150" y="266" text-anchor="middle" font-family="Consolas, monospace" font-size="9" fill="#8b8d92">DT-ARM 6</text>
<!-- 六轴臂:三级嵌套关节 -->
<g class="ar-j1">
<rect x="137" y="166" width="26" height="92" rx="12" fill="url(#ar-metal)" stroke="#55585f" stroke-width="1.5" />
<circle cx="150" cy="252" r="17" fill="#2e3037" stroke="#ffb020" stroke-width="2.5" />
<circle cx="150" cy="252" r="6" fill="#16171b" stroke="#55585f" />
<g class="ar-j2">
<rect x="141" y="94" width="18" height="88" rx="9" fill="url(#ar-metal)" stroke="#55585f" stroke-width="1.5" />
<circle cx="150" cy="176" r="12" fill="#2e3037" stroke="#ffb020" stroke-width="2.5" />
<circle cx="150" cy="176" r="4" fill="#16171b" />
<g class="ar-j3">
<circle cx="150" cy="100" r="9" fill="#2e3037" stroke="#ffb020" stroke-width="2.5" />
<rect x="145" y="62" width="10" height="34" rx="4" fill="#4b4e55" stroke="#55585f" />
<!-- 夹爪 -->
<path d="M138 62 Q134 48 142 42" fill="none" stroke="#a7a9ad" stroke-width="4.5" stroke-linecap="round" />
<path d="M162 62 Q166 48 158 42" fill="none" stroke="#a7a9ad" stroke-width="4.5" stroke-linecap="round" />
<rect x="140" y="56" width="20" height="9" rx="3" fill="#34363c" stroke="#55585f" />
<circle class="ar-led" cx="150" cy="60" r="2.6" fill="#58e0a0" />
</g>
</g>
</g>
<!-- 状态标签 -->
<g font-family="Consolas, monospace" font-size="9" fill="#8b8d92">
<rect x="238" y="96" width="112" height="44" rx="4" fill="rgba(34,36,42,0.9)" stroke="#34363c" />
<text x="248" y="113">STATUS <tspan fill="#58e0a0">RUNNING</tspan></text>
<text x="248" y="129">CYCLE <tspan fill="#ffb020">0.38s</tspan></text>
<line x1="238" y1="118" x2="196" y2="130" stroke="#4b4e55" stroke-dasharray="3 3" />
</g>
<!-- 图纸标注 -->
<g font-family="Consolas, monospace" font-size="8.5" fill="#75787f" stroke="#565962" stroke-width="1">
<line x1="150" y1="310" x2="330" y2="310" stroke-dasharray="4 3" />
<line x1="150" y1="304" x2="150" y2="316" />
<line x1="330" y1="304" x2="330" y2="316" />
<path d="M158 307l-8 3 8 3" fill="none" />
<path d="M322 307l8 3-8 3" fill="none" />
<text x="240" y="326" text-anchor="middle" stroke="none">R 1800</text>
<line x1="56" y1="252" x2="56" y2="56" stroke-dasharray="4 3" />
<line x1="50" y1="252" x2="62" y2="252" />
<line x1="50" y1="56" x2="62" y2="56" />
<text x="44" y="158" text-anchor="middle" stroke="none" transform="rotate(-90 44 158)">H 1120</text>
<path d="M18 36h10M23 31v10" />
<path d="M352 196h10M357 191v10" />
</g>
</svg>
</div>
</header>
<!-- 参数 -->
<section id="arm" class="ar-sec">
<h2 class="ar-h2">// DT-ARM 6 整机参数</h2>
<div class="ar-plate">
<i class="ar-screw tl" aria-hidden="true"></i>
<i class="ar-screw tr" aria-hidden="true"></i>
<i class="ar-screw bl" aria-hidden="true"></i>
<i class="ar-screw br" aria-hidden="true"></i>
<div class="ar-plate-head">
<span>RATING PLATE · 整机铭牌</span>
<span>SN 2026-DT6-0812</span>
</div>
<div class="ar-specs">
<div v-for="(s, i) in specs" :key="s.k" class="ar-spec" :style="{ '--d': i * 0.05 + 's' }">
<span class="ar-spec-no">P{{ i + 1 }}</span>
<b>{{ s.v }}</b>
<span class="ar-spec-k">{{ s.k }}</span>
</div>
</div>
</div>
</section>
<!-- 场景 -->
<section id="scenes" class="ar-sec">
<h2 class="ar-h2">// 场景方案</h2>
<div class="ar-scenes">
<div v-for="(s, i) in scenes" :key="s.name" class="ar-scene" :style="{ '--d': i * 0.07 + 's' }">
<i class="ar-screw tl" aria-hidden="true"></i>
<i class="ar-screw tr" aria-hidden="true"></i>
<div class="ar-scene-head">
<span class="ar-scene-code">SCN-0{{ i + 1 }}</span>
<span class="ar-scene-ic" aria-hidden="true">
<svg v-if="i === 0" viewBox="0 0 24 24"><path d="M12 3.4 19.2 7.6v8.8L12 20.6 4.8 16.4V7.6z" /><circle cx="12" cy="12" r="3" /></svg>
<svg v-else-if="i === 1" viewBox="0 0 24 24"><path d="M4 8l8-4.2L20 8v8l-8 4.2L4 16z" /><path d="M4 8l8 4 8-4M12 12v8.2" /></svg>
<svg v-else-if="i === 2" viewBox="0 0 24 24"><path d="M13.4 2.8 6 13.2h4.8L9.6 21l7.6-10.4h-4.8z" /></svg>
<svg v-else viewBox="0 0 24 24"><path d="M9.6 3h4.8M11 3v5.2L5.6 17a2.2 2.2 0 0 0 1.9 3.3h9a2.2 2.2 0 0 0 1.9-3.3L13 8.2V3" /><path d="M7.6 14.6h8.8" /></svg>
</span>
</div>
<b>{{ s.name }}</b>
<p>{{ s.desc }}</p>
<i class="ar-scene-stripe" aria-hidden="true"></i>
</div>
</div>
</section>
<!-- 产品案例 -->
<section class="ar-sec">
<h2 class="ar-h2">// 与深思大模型协同</h2>
<div class="ar-cases">
<article v-for="(p, i) in c.cases" :key="p.name" class="ar-case" :style="{ '--d': i * 0.06 + 's' }" @click="openPlate(i)">
<div class="ar-case-head">
<span>COOP-FILE 0{{ i + 1 }} · {{ p.tag }}</span>
<i class="ar-case-led" aria-hidden="true"></i>
</div>
<div class="ar-case-row">
<img :src="p.image" :alt="p.name" loading="lazy" />
<div>
<h3>{{ p.name }}</h3>
<p>{{ p.desc }}</p>
<i class="ar-case-more">READ NAMEPLATE ▸</i>
</div>
</div>
</article>
</div>
</section>
<!-- 参数铭牌 -->
<Transition name="ar-bolt">
<div v-if="plate" class="ar-mask" @click.self="closePlate">
<article class="ar-plate">
<i class="ar-rivet tl" aria-hidden="true"></i>
<i class="ar-rivet tr" aria-hidden="true"></i>
<i class="ar-rivet bl" aria-hidden="true"></i>
<i class="ar-rivet br" aria-hidden="true"></i>
<button class="ar-plate-x" aria-label="关闭" @click="closePlate">✕</button>
<header class="ar-plate-head">
<p class="ar-plate-kicker">DEEPTHINK ROBOTICS · NAMEPLATE</p>
<h3>{{ plate.name }}</h3>
<span class="ar-plate-model">MODEL DT-{{ 100 + plateIdx * 11 }} · {{ plate.tag }}</span>
</header>
<div class="ar-plate-img">
<img :src="plate.image" :alt="plate.name" />
<span class="ar-plate-warn" aria-hidden="true">⚠ 运行区域 · 请勿倚靠</span>
</div>
<section class="ar-plate-block">
<b>// DESIGN LOG 研发志</b>
<p>{{ plate.story }}</p>
</section>
<section class="ar-plate-block">
<b>// RATED SPECS 额定参数</b>
<ul>
<li v-for="h in plate.highlights" :key="h">{{ h }}</li>
</ul>
</section>
<div class="ar-plate-cols">
<section class="ar-plate-block">
<b>// SERVICE RECORD 服役记录</b>
<p v-for="t in plate.timeline" :key="t.at" class="ar-plate-tl"><i>{{ t.at }}</i>{{ t.event }}</p>
</section>
<section class="ar-plate-block">
<b>// GAUGES 表盘</b>
<div class="ar-plate-mx">
<div v-for="m in plate.metrics" :key="m.label"><b>{{ m.value }}</b><span>{{ m.label }}</span></div>
</div>
</section>
</div>
<footer class="ar-plate-foot">SN 2026-{{ String(plateIdx + 1).padStart(4, '0') }} · MADE BY DEEPTHINK · 铭牌为风格演示</footer>
</article>
</div>
</Transition>
<div class="ar-stats">
<div v-for="s in c.stats" :key="s.label"><b>{{ s.value }}</b><span>{{ s.label }}</span></div>
</div>
<footer class="ar-footer">
<b>深思机器人 · {{ c.nameEn }} ROBOTICS</b>
<p>{{ c.contacts.phone }} · {{ c.contacts.email }} · {{ c.contacts.addr }}</p>
<p class="ar-links">
<router-link to="/corp">返回企业官网合集</router-link> ·
<router-link to="/">个人页面合集</router-link>
</p>
<p class="ar-copy">© {{ c.founded }}–2026 · 风格演示页,产品与参数均为虚构</p>
</footer>
</div>
</template>
<style scoped>
.ar {
min-height: 100vh;
background:
repeating-linear-gradient(45deg, transparent 0 34px, rgba(255, 176, 32, 0.05) 34px 36px),
#1c1e22;
color: #e8e9eb;
font-family: 'PingFang SC', 'Microsoft YaHei', sans-serif;
overflow-x: clip;
}
.ar-nav {
position: sticky;
top: 0;
z-index: 40;
display: flex;
align-items: center;
gap: 22px;
padding: 13px clamp(16px, 5vw, 48px);
background: rgba(24, 26, 30, 0.95);
backdrop-filter: blur(6px);
border-bottom: 2px solid #ffb020;
}
.ar-logo {
font-size: 16.5px;
font-weight: 800;
color: #ffb020;
}
.ar-menu {
display: flex;
gap: 20px;
}
.ar-menu a {
color: #a7a9ad;
text-decoration: none;
font-size: 13px;
}
.ar-menu a:hover {
color: #ffb020;
}
.ar-back {
margin-left: auto;
color: #1c1e22;
background: #ffb020;
text-decoration: none;
font-size: 12.5px;
font-weight: 800;
padding: 7px 16px;
border-radius: 4px;
}
.ar-back:hover {
background: #ffc95c;
}
.ar-hero {
max-width: 1080px;
margin: 0 auto;
display: grid;
grid-template-columns: 1.2fr 0.8fr;
gap: 24px;
align-items: center;
padding: clamp(50px, 8vw, 90px) clamp(16px, 4vw, 26px) 56px;
}
.ar-kicker {
margin: 0 0 14px;
font-family: Consolas, monospace;
font-size: 12px;
letter-spacing: 0.24em;
color: #8b8d92;
animation: ar-rise 0.55s ease both;
}
.ar-hero h1 {
margin: 0 0 18px;
font-size: clamp(32px, 5.8vw, 56px);
font-weight: 900;
line-height: 1.2;
animation: ar-rise 0.6s ease 0.06s both;
}
.ar-hero h1 span {
color: #ffb020;
}
.ar-sub {
margin: 0 0 26px;
max-width: 520px;
font-size: 14px;
line-height: 2;
color: #a7a9ad;
animation: ar-rise 0.6s ease 0.12s both;
}
.ar-hero-btns {
display: flex;
gap: 12px;
flex-wrap: wrap;
animation: ar-rise 0.6s ease 0.18s both;
}
@keyframes ar-rise {
from { opacity: 0; transform: translateY(12px); }
to { opacity: 1; transform: translateY(0); }
}
.ar-btn-main {
background: #ffb020;
color: #1c1e22;
text-decoration: none;
font-size: 14px;
font-weight: 800;
padding: 12px 28px;
border-radius: 4px;
box-shadow: 0 3px 0 #b87708;
transition: background 0.15s ease, transform 0.12s ease, box-shadow 0.12s ease;
}
.ar-btn-main:hover {
background: #ffc95c;
}
.ar-btn-main:active {
transform: translateY(2px);
box-shadow: 0 1px 0 #b87708;
}
.ar-btn-sub {
border: 1px solid #4b4e55;
color: #e8e9eb;
text-decoration: none;
font-size: 14px;
padding: 12px 28px;
border-radius: 4px;
transition: border-color 0.15s ease, color 0.15s ease, transform 0.12s ease;
}
.ar-btn-sub:hover {
border-color: #ffb020;
color: #ffb020;
}
.ar-btn-sub:active {
transform: translateY(1px);
}
.ar-arm {
position: relative;
display: flex;
align-items: flex-end;
justify-content: center;
}
.ar-rig {
width: 100%;
max-width: 400px;
height: auto;
}
.ar-j1 {
transform-origin: 150px 252px;
animation: ar-j1 7s ease-in-out infinite;
}
.ar-j2 {
transform-origin: 150px 176px;
animation: ar-j2 7s ease-in-out infinite;
}
.ar-j3 {
transform-origin: 150px 100px;
animation: ar-j3 7s ease-in-out infinite;
}
@keyframes ar-j1 {
0%, 100% { transform: rotate(-5deg); }
50% { transform: rotate(6deg); }
}
@keyframes ar-j2 {
0%, 100% { transform: rotate(9deg); }
50% { transform: rotate(-11deg); }
}
@keyframes ar-j3 {
0%, 100% { transform: rotate(-13deg); }
50% { transform: rotate(15deg); }
}
.ar-box {
animation: ar-belt 7s linear infinite;
}
@keyframes ar-belt {
0% { transform: translateX(64px); opacity: 0; }
8% { opacity: 1; }
46%, 54% { transform: translateX(0); }
92% { opacity: 1; }
100% { transform: translateX(-52px); opacity: 0; }
}
.ar-led {
animation: ar-led 1.4s step-end infinite;
}
@keyframes ar-led {
50% { fill: #1d5c40; }
}
.ar-sec {
max-width: 1080px;
margin: 0 auto 54px;
padding: 0 clamp(16px, 4vw, 26px);
}
.ar-h2 {
display: flex;
align-items: center;
gap: 14px;
font-family: Consolas, monospace;
font-size: 17px;
letter-spacing: 0.1em;
color: #ffb020;
margin: 0 0 20px;
}
.ar-h2::after {
content: '';
flex: 1;
height: 1px;
background: repeating-linear-gradient(90deg, #3c3f46 0 10px, transparent 10px 18px);
}
.ar-plate {
position: relative;
background:
repeating-linear-gradient(0deg, rgba(255, 255, 255, 0.018) 0 1px, transparent 1px 3px),
linear-gradient(180deg, #292b31, #232529);
border: 2px solid #3c3f46;
border-radius: 8px;
padding: 14px;
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05);
}
.ar-plate-head {
display: flex;
justify-content: space-between;
gap: 10px;
flex-wrap: wrap;
padding: 2px 8px 12px;
font-family: Consolas, monospace;
font-size: 10.5px;
letter-spacing: 0.16em;
color: #8b8d92;
}
.ar-screw {
position: absolute;
width: 9px;
height: 9px;
border-radius: 50%;
background: radial-gradient(circle at 35% 32%, #767a83, #2c2e34 72%);
box-shadow: inset 0 -1px 1px rgba(0, 0, 0, 0.65), 0 0 0 1px rgba(0, 0, 0, 0.35);
z-index: 1;
}
.ar-screw::after {
content: '';
position: absolute;
left: 1.5px;
right: 1.5px;
top: 3.6px;
height: 1.3px;
background: #14151a;
transform: rotate(45deg);
}
.ar-screw.tl { top: 6px; left: 6px; }
.ar-screw.tr { top: 6px; right: 6px; }
.ar-screw.bl { bottom: 6px; left: 6px; }
.ar-screw.br { bottom: 6px; right: 6px; }
.ar-specs {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
gap: 1px;
background: #3c3f46;
border: 1px solid #3c3f46;
border-radius: 4px;
overflow: hidden;
}
.ar-spec {
position: relative;
background: #1f2126;
padding: 18px 16px 16px;
animation: ar-rise 0.55s ease both;
animation-delay: var(--d, 0s);
}
.ar-spec-no {
position: absolute;
top: 8px;
right: 10px;
font-family: Consolas, monospace;
font-size: 9.5px;
letter-spacing: 0.1em;
color: #55585f;
}
.ar-spec b {
display: block;
font-family: Consolas, monospace;
font-variant-numeric: tabular-nums;
font-size: clamp(19px, 3vw, 25px);
color: #ffb020;
}
.ar-spec-k {
font-size: 12px;
color: #8b8d92;
}
.ar-scenes {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
gap: 14px;
}
.ar-scene {
position: relative;
overflow: hidden;
background:
repeating-linear-gradient(0deg, rgba(255, 255, 255, 0.018) 0 1px, transparent 1px 3px),
linear-gradient(180deg, #2a2c33, #22242a);
border: 1px solid #3c3f46;
border-radius: 6px;
padding: 16px 16px 26px;
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05);
animation: ar-rise 0.55s ease both;
animation-delay: var(--d, 0s);
transition: transform 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
}
.ar-scene:hover {
transform: translateY(-3px);
border-color: rgba(255, 176, 32, 0.7);
box-shadow: 0 12px 28px rgba(0, 0, 0, 0.42), inset 0 1px 0 rgba(255, 255, 255, 0.05);
}
.ar-scene-head {
display: flex;
align-items: center;
justify-content: space-between;
margin: 4px 6px 14px;
}
.ar-scene-code {
font-family: Consolas, monospace;
font-size: 10.5px;
letter-spacing: 0.14em;
color: #8b8d92;
border: 1px solid #3c3f46;
background: rgba(0, 0, 0, 0.28);
padding: 2px 8px;
border-radius: 3px;
}
.ar-scene-ic {
width: 38px;
height: 38px;
display: grid;
place-items: center;
border: 1px solid #4b4e55;
border-radius: 5px;
color: #ffb020;
background: rgba(0, 0, 0, 0.2);
}
.ar-scene-ic svg {
width: 20px;
height: 20px;
fill: none;
stroke: currentColor;
stroke-width: 1.6;
stroke-linecap: round;
stroke-linejoin: round;
}
.ar-scene b {
display: block;
margin: 0 6px 6px;
font-size: 15px;
}
.ar-scene p {
margin: 0 6px;
font-size: 12.5px;
line-height: 1.8;
color: #a7a9ad;
}
.ar-scene-stripe {
position: absolute;
left: 0;
right: 0;
bottom: 0;
height: 7px;
background: repeating-linear-gradient(-45deg, #ffb020 0 10px, #23252b 10px 20px);
opacity: 0.5;
transition: opacity 0.2s ease;
}
.ar-scene:hover .ar-scene-stripe {
opacity: 0.95;
animation: ar-stripe 1.1s linear infinite;
}
@keyframes ar-stripe {
to { background-position: 28.28px 0; }
}
.ar-cases {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 14px;
}
.ar-case {
background: #22242a;
border: 1px solid #34363c;
border-radius: 6px;
overflow: hidden;
animation: ar-rise 0.55s ease both;
animation-delay: var(--d, 0s);
transition: transform 0.2s ease, border-color 0.2s ease;
}
.ar-case:hover {
transform: translateY(-3px);
border-color: rgba(255, 176, 32, 0.7);
}
.ar-case-head {
display: flex;
align-items: center;
justify-content: space-between;
gap: 10px;
padding: 7px 12px;
background: #1b1d22;
border-bottom: 1px solid #34363c;
font-family: Consolas, monospace;
font-size: 10.5px;
letter-spacing: 0.12em;
color: #8b8d92;
}
.ar-case-led {
width: 8px;
height: 8px;
border-radius: 50%;
background: #58e0a0;
box-shadow: 0 0 8px rgba(88, 224, 160, 0.7);
animation: ar-blink 2s step-end infinite;
}
.ar-case:hover .ar-case-led {
animation-duration: 0.7s;
}
@keyframes ar-blink {
50% { opacity: 0.25; }
}
.ar-case-row {
display: grid;
grid-template-columns: 118px 1fr;
}
.ar-case-row img {
width: 100%;
height: 100%;
min-height: 100px;
object-fit: cover;
display: block;
filter: grayscale(0.4) sepia(0.14);
transition: filter 0.3s ease;
}
.ar-case:hover .ar-case-row img {
filter: grayscale(0.1) sepia(0.05);
}
.ar-case-row > div {
padding: 12px 14px 14px;
}
.ar-case h3 {
margin: 0 0 6px;
font-size: 15px;
}
.ar-case p {
margin: 0;
font-size: 12.5px;
line-height: 1.8;
color: #a7a9ad;
}
.ar-stats {
max-width: 1080px;
margin: 0 auto 54px;
padding: 30px clamp(16px, 4vw, 26px);
background:
repeating-linear-gradient(-45deg, rgba(255, 176, 32, 0.3) 0 10px, transparent 10px 20px) top / 100% 5px no-repeat,
repeating-linear-gradient(-45deg, rgba(255, 176, 32, 0.3) 0 10px, transparent 10px 20px) bottom / 100% 5px no-repeat;
display: grid;
grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
gap: 14px;
text-align: center;
}
.ar-stats b {
display: block;
font-family: Consolas, monospace;
font-variant-numeric: tabular-nums;
font-size: clamp(24px, 4vw, 32px);
color: #ffb020;
}
.ar-stats span {
font-size: 12px;
color: #8b8d92;
}
.ar-footer {
text-align: center;
padding: 8px 20px 44px;
}
.ar-footer b {
font-size: 14.5px;
}
.ar-footer p {
margin: 8px 0 0;
font-size: 12.5px;
color: #a7a9ad;
}
.ar-links a {
color: #ffb020;
text-decoration: none;
}
.ar-links a:hover {
text-decoration: underline;
}
.ar-copy {
font-size: 11px !important;
color: #63666d !important;
}
@media (max-width: 760px) {
.ar-hero {
grid-template-columns: 1fr;
}
.ar-arm {
display: none;
}
}
@media (max-width: 460px) {
.ar-case-row {
grid-template-columns: 96px 1fr;
}
}
/* ---- 参数铭牌 ---- */
.ar-case {
cursor: pointer;
}
.ar-case-more {
display: inline-block;
margin-top: 8px;
font-style: normal;
font-family: Consolas, monospace;
font-size: 10px;
letter-spacing: 0.16em;
color: #ffb020;
opacity: 0;
transition: opacity 0.2s ease;
}
.ar-case:hover .ar-case-more {
opacity: 1;
}
.ar-mask {
position: fixed;
inset: 0;
z-index: 520;
display: grid;
place-items: center;
padding: 20px;
background: rgba(10, 11, 13, 0.82);
backdrop-filter: blur(4px);
}
.ar-plate {
position: relative;
width: min(600px, 94vw);
max-height: 88vh;
overflow-y: auto;
background:
repeating-linear-gradient(45deg, transparent 0 22px, rgba(255, 176, 32, 0.04) 22px 24px),
linear-gradient(170deg, #26282e, #1b1d21);
border: 2px solid #3a3d44;
border-radius: 10px;
color: #e8e9eb;
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08), 0 30px 76px rgba(0, 0, 0, 0.7);
}
.ar-rivet {
position: absolute;
width: 14px;
height: 14px;
border-radius: 50%;
background: radial-gradient(circle at 34% 30%, #6a6e77, #2c2e33 70%);
box-shadow: inset 0 -1.5px 3px rgba(0, 0, 0, 0.6), 0 1px 1px rgba(255, 255, 255, 0.1);
z-index: 2;
}
.ar-rivet.tl { left: 10px; top: 10px; }
.ar-rivet.tr { right: 10px; top: 10px; }
.ar-rivet.bl { left: 10px; bottom: 10px; }
.ar-rivet.br { right: 10px; bottom: 10px; }
.ar-plate-x {
position: absolute;
right: 30px;
top: 16px;
z-index: 3;
width: 32px;
height: 32px;
border: 1.5px solid #4a4d55;
border-radius: 6px;
background: #26282e;
color: #ffb020;
font-size: 13px;
cursor: pointer;
transition: border-color 0.18s ease;
}
.ar-plate-x:hover {
border-color: #ffb020;
}
.ar-plate-head {
padding: 24px 32px 12px;
border-bottom: 2px solid #3a3d44;
}
.ar-plate-kicker {
margin: 0 0 8px;
font-family: Consolas, monospace;
font-size: 10px;
letter-spacing: 0.26em;
color: #8d9099;
}
.ar-plate-head h3 {
margin: 0 0 6px;
font-size: clamp(21px, 2.8vw, 26px);
font-weight: 900;
letter-spacing: 0.04em;
}
.ar-plate-model {
display: inline-block;
font-family: Consolas, monospace;
font-size: 11px;
letter-spacing: 0.14em;
color: #ffb020;
border: 1px solid rgba(255, 176, 32, 0.45);
padding: 3px 12px;
}
.ar-plate-img {
position: relative;
margin: 16px 32px 0;
border: 2px solid #3a3d44;
overflow: hidden;
}
.ar-plate-img img {
display: block;
width: 100%;
aspect-ratio: 16 / 7;
object-fit: cover;
filter: saturate(0.8) contrast(1.05);
}
.ar-plate-warn {
position: absolute;
left: 0;
bottom: 0;
right: 0;
background: repeating-linear-gradient(-45deg, rgba(255, 176, 32, 0.9) 0 14px, #1b1d21 14px 28px);
color: #1b1d21;
font-size: 10px;
font-weight: 900;
letter-spacing: 0.14em;
text-align: center;
padding: 3px 0;
text-shadow: 0 0 4px rgba(255, 232, 178, 0.9);
}
.ar-plate-block {
padding: 16px 32px 0;
}
.ar-plate-block > b {
display: block;
margin-bottom: 8px;
font-family: Consolas, monospace;
font-size: 10.5px;
letter-spacing: 0.16em;
color: #ffb020;
}
.ar-plate-block p {
margin: 0;
font-size: 12.5px;
line-height: 1.95;
color: #b8bac0;
}
.ar-plate-block ul {
margin: 0;
padding: 0;
list-style: none;
border: 1px solid #3a3d44;
}
.ar-plate-block ul li {
position: relative;
padding: 8px 12px 8px 30px;
font-size: 12.5px;
color: #d5d7db;
}
.ar-plate-block ul li + li {
border-top: 1px solid #2c2e33;
}
.ar-plate-block ul li::before {
content: '▣';
position: absolute;
left: 12px;
color: #ffb020;
font-size: 10px;
}
.ar-plate-cols {
display: grid;
grid-template-columns: 1.25fr 1fr;
gap: 4px;
padding-bottom: 12px;
}
.ar-plate-tl {
display: flex;
gap: 10px;
margin: 0 0 7px !important;
font-size: 12px !important;
}
.ar-plate-tl i {
flex: 0 0 62px;
font-style: normal;
font-family: Consolas, monospace;
font-size: 10.5px;
color: #8d9099;
font-variant-numeric: tabular-nums;
}
.ar-plate-mx {
display: grid;
gap: 8px;
}
.ar-plate-mx > div {
background: #1b1d21;
border: 1px solid #3a3d44;
border-left: 3px solid #ffb020;
padding: 8px 12px;
display: flex;
align-items: baseline;
justify-content: space-between;
gap: 8px;
}
.ar-plate-mx b {
font-family: Consolas, monospace;
font-size: 15px;
font-weight: 700;
color: #ffb020;
text-shadow: 0 0 12px rgba(255, 176, 32, 0.4);
}
.ar-plate-mx span {
font-size: 10.5px;
color: #8d9099;
}
.ar-plate-foot {
padding: 12px 32px 20px;
border-top: 2px solid #3a3d44;
font-family: Consolas, monospace;
font-size: 9.5px;
letter-spacing: 0.18em;
color: #8d9099;
text-align: center;
}
.ar-bolt-enter-active,
.ar-bolt-leave-active {
transition: opacity 0.24s ease;
}
.ar-bolt-enter-active .ar-plate {
transition: transform 0.3s cubic-bezier(0.2, 1.2, 0.4, 1);
}
.ar-bolt-leave-active .ar-plate {
transition: transform 0.2s ease;
}
.ar-bolt-enter-from,
.ar-bolt-leave-to {
opacity: 0;
}
.ar-bolt-enter-from .ar-plate {
transform: translateY(-24px) scale(1.03);
}
.ar-bolt-leave-to .ar-plate {
transform: scale(0.97);
}
@media (max-width: 560px) {
.ar-plate-cols {
grid-template-columns: 1fr;
}
}
</style>