Files
lnbox/src/App.tsx
kkfluous fc47801968
Some checks failed
ci/woodpecker/manual/woodpecker Pipeline failed
feat: improve page readability, add thumbnail switcher, CI/CD config
- Improve spacing and typography on product intro and scenarios pages
- Add thumbnail click switching for architecture hardware showcase
- Fix thumbnail click target and z-index overlap issues
- Add .woodpecker.yml, Dockerfile, and docker-compose.yml for CI/CD
- Set Vite base path to /lnbox/ for sub-path deployment
2026-06-05 16:14:55 +08:00

1599 lines
110 KiB
TypeScript
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.
import React, { useState } from 'react';
import { motion, AnimatePresence } from 'motion/react';
import {
Activity, ShieldCheck, Zap, Server, ChevronRight,
Database, Cpu, Cloud, Truck, Factory, Building, Target,
Leaf, AlertTriangle, Wind, Thermometer, Gauge, Navigation,
Settings, Battery, Link2, Share2, Search, LineChart, BarChart,
Radio, HardDrive, Network, MapPin, CheckCircle2, Factory as FactoryIcon, ShieldAlert, Workflow,
Maximize2, Eye, Sliders, Flame, Compass, RefreshCw
} from 'lucide-react';
// --- Import assets ---
import oneossBoxImage from './assets/images/oneoss_box_1779852084134.png';
import oneossSideFacet from './assets/images/oneoss_side_facet_1779862455874.png';
import oneossTopFacet from './assets/images/oneos_top_facet_1779864912925.png';
import scenarioFleetImage from './assets/images/scenario_fleet_1779863559233.png';
import scenarioStationImage from './assets/images/scenario_station_1779863574991.png';
import scenarioDatacenterImage from './assets/images/scenario_datacenter_1779863590420.png';
// --- Reusable Compact Architecture Component ---
const CompactArchCard = ({ title, children, className = "", headerClass = "bg-[#121212]" }: { title?: React.ReactNode, children: React.ReactNode, className?: string, headerClass?: string }) => (
<div className={`bg-[#0D0D0D]/90 border border-neutral-800/80 rounded shadow-lg flex flex-col overflow-hidden relative transition-all duration-300 hover:border-[#00F2FF]/40 ${className}`}>
<div className="absolute top-0 left-0 right-0 h-[1px] bg-gradient-to-r from-transparent via-[#00F2FF]/20 to-transparent"></div>
{title && (
<div className={`${headerClass} px-3 py-1.5 border-b border-neutral-800/60 text-[10px] font-extrabold tracking-wider uppercase text-neutral-300 flex items-center justify-between`}>
{title}
</div>
)}
<div className="p-3 flex flex-col gap-2 flex-1 relative z-10 font-sans">
{children}
</div>
</div>
);
const CompactArchList = ({ items }: { items: { icon?: any, text: string, textEn?: string }[] }) => (
<ul className="flex flex-col gap-1.5 text-[10px] text-neutral-400">
{items.map((item, i) => {
const Icon = item.icon;
return (
<li key={i} className="flex items-start gap-1.5 leading-tight">
{Icon ? (
<Icon size={11} className="text-[#00F2FF] shrink-0 mt-[2px]" />
) : (
<div className="w-[3px] h-[3px] bg-[#00F2FF] rounded-full shadow-[0_0_4px_#00F2FF] shrink-0 mt-[6px]"></div>
)}
<div className="flex flex-col">
<span className="text-neutral-200">{item.text}</span>
{item.textEn && <span className="text-[8px] font-mono text-neutral-600 uppercase tracking-tight">{item.textEn}</span>}
</div>
</li>
);
})}
</ul>
);
type StylePreset = 'cyan' | 'amber' | 'crimson';
interface PerspectiveFacet {
id: string;
nameCn: string;
nameEn: string;
image: string;
descriptionCn: string;
descriptionEn: string;
specs: { label: string; value: string }[];
}
export default function App() {
const [activeTab, setActiveTab] = useState<'product_intro' | 'entity_diagram' | 'architecture' | 'scenarios'>('product_intro');
// Custom futuristic theme/preset selector state
const [styleTheme, setStyleTheme] = useState<StylePreset>('cyan');
// Interactive Perspective Switcher State
const [activeFacet, setActiveFacet] = useState<string>('top');
// Interactive Carbon Database Tab State
const [dbTab, setDbTab] = useState<'factors' | 'methodologies'>('factors');
// Architecture central hardware facet switcher
const [archFacet, setArchFacet] = useState<'top' | 'side' | 'iso'>('top');
const archFacetImages: Record<'top' | 'side' | 'iso', string> = {
top: oneossTopFacet,
side: oneossSideFacet,
iso: oneossBoxImage,
};
const themes = {
cyan: {
accent: '#00F2FF',
glow: 'shadow-[0_0_20px_rgba(0,242,255,0.25)]',
border: 'border-[#00F2FF]/30',
textAccent: 'text-[#00F2FF]',
bgAccent: 'bg-[#00F2FF]',
borderAccent: 'border-[#00F2FF]',
gradient: 'from-[#00F2FF] to-[#0066FF]',
radialGlow: 'bg-[#00F2FF]/5',
nameCn: '极光霓虹',
nameEn: 'Aurora Cyan'
},
amber: {
accent: '#FBBF24',
glow: 'shadow-[0_0_20px_rgba(251,191,36,0.25)]',
border: 'border-[#FBBF24]/30',
textAccent: 'text-[#FBBF24]',
bgAccent: 'bg-[#FBBF24]',
borderAccent: 'border-[#FBBF24]',
gradient: 'from-[#FBBF24] to-[#D97706]',
radialGlow: 'bg-[#FBBF24]/5',
nameCn: '航天鎏金',
nameEn: 'Aerospace Amber'
},
crimson: {
accent: '#EF4444',
glow: 'shadow-[0_0_20px_rgba(239,68,68,0.25)]',
border: 'border-[#EF4444]/30',
textAccent: 'text-[#EF4444]',
bgAccent: 'bg-[#EF4444]',
borderAccent: 'border-[#EF4444]',
gradient: 'from-[#EF4444] to-[#991B1B]',
radialGlow: 'bg-[#EF4444]/5',
nameCn: '聚变红核',
nameEn: 'Fusion Crimson'
}
};
const activeTheme = themes[styleTheme];
const facets: PerspectiveFacet[] = [
{
id: 'iso',
nameCn: '立体主视图',
nameEn: 'Isometric View',
image: oneossBoxImage,
descriptionCn: '全铝阳极氧化磨砂太空灰机壳,线条凝练锐利,边缘搭载可变色长条形高精度脉冲 LED 光斑状态指示器,彰显现代工业极简美学。',
descriptionEn: 'Anodized sandblasted space-gray aluminum casing with razor-sharp geometric contours, presenting active pulsating high-frequency pulse status LEDs.',
specs: [
{ label: 'Chassis Material', value: 'Anodized Aluminum' },
{ label: 'Ingress Rating', value: 'IP67 Waterproof' },
{ label: 'Operating Temp', value: '-40°C to +85°C' }
]
},
{
id: 'side',
nameCn: '连接器切面',
nameEn: 'Connector Detail',
image: oneossSideFacet,
descriptionCn: '机身侧部配置重工业级 M12 耐高负载密封金属插座,保障信号链路与大电流供应在多端复杂极端环境下的无损传输。',
descriptionEn: 'High-load heavy industrial M12 sealed metal connectors designed to safeguard physical connectivity under extreme multi-node environments.',
specs: [
{ label: 'Interface Type', value: 'M12 Industrial A-Coded' },
{ label: 'Contact Finish', value: 'Gold-Plated/Copper Alloy' },
{ label: 'Coupling Method', value: 'Threaded Locking Joint' }
]
},
{
id: 'top',
nameCn: '顶板盖透视图',
nameEn: 'Holographic Deck',
image: oneossTopFacet,
descriptionCn: '半透明暗色钢化玻璃盖板板底饰有沉金电路纹章,结合内部微弱背光结构,完美融合未来感科技韵味。',
descriptionEn: 'High-strength semi-translucent dark tempered glass with complex circuit tracing architecture embedded under subtle microchips array.',
specs: [
{ label: 'Panel Type', value: 'Corning Gorilla Glass v5' },
{ label: 'Thermal Shielding', value: 'Aerogel Thermal Layer' },
{ label: 'Chassis Pressure', value: 'Internal Relief Valves' }
]
}
];
const selectedFacet = facets.find(f => f.id === activeFacet) || facets[0];
return (
<div className="min-h-screen flex flex-col font-sans selection:bg-neutral-800 selection:text-white bg-[#030303] text-[#E5E5E5] overflow-hidden">
{/* 1. Header Navigation */}
<header className="h-20 flex items-center justify-between px-6 md:px-12 border-b border-neutral-900 bg-[#060606] z-30 sticky top-0 flex-shrink-0">
<div className="flex items-center gap-4">
<div className="relative group">
<div className={`w-9 h-9 rounded-sm bg-gradient-to-br ${activeTheme.gradient} flex items-center justify-center transition-all ${activeTheme.glow}`}>
<div className="w-4 h-4 bg-[#030303] rounded-full" />
</div>
</div>
<div className="flex flex-col">
<span className="font-sans font-black tracking-[0.25em] text-sm text-white uppercase flex items-center gap-2 animate-fade-in">
ONEOS
<span className="text-[8.5px] font-mono tracking-wider px-1.5 py-0.5 rounded border border-[#00F2FF]/20 bg-[#00F2FF]/5 text-[#00F2FF] font-bold flex items-center gap-1 select-none">
<span className="w-1 h-1 rounded-full bg-[#00F2FF] animate-pulse inline-block" />
LNBOX
</span>
</span>
<span className="text-[7.5px] text-neutral-500 tracking-[0.12em] uppercase font-mono">AI COMPLIANT CARBON FACTOR & SINK MATRIX</span>
</div>
</div>
{/* Tab & Language Header Selector */}
<div className="flex items-center gap-2 md:gap-8">
<div className="flex items-center rounded-sm bg-neutral-950 p-[3px] border border-neutral-900">
<button
onClick={() => setActiveTab('product_intro')}
className={`px-3 py-1.5 rounded-sm text-[11px] font-bold tracking-wider uppercase transition-all duration-300 ${activeTab === 'product_intro' ? 'bg-[#111111] text-white border border-neutral-800 shadow-inner' : 'text-neutral-500 hover:text-neutral-200'}`}
>
<span className="text-[8px] ml-0.5 opacity-50 font-mono hidden sm:inline">INTRO</span>
</button>
{/* 实体介绍图 Tab is temporarily hidden per user request */}
{/* <button
onClick={() => setActiveTab('entity_diagram')}
className={`px-3 py-1.5 rounded-sm text-[11px] font-bold tracking-wider uppercase transition-all duration-300 ${activeTab === 'entity_diagram' ? 'bg-[#111111] text-white border border-neutral-800 shadow-inner' : 'text-neutral-500 hover:text-neutral-200'}`}
>
实体介绍图 <span className="text-[8px] ml-0.5 opacity-50 font-mono hidden sm:inline">DETAILS</span>
</button> */}
<button
onClick={() => setActiveTab('architecture')}
className={`px-3 py-1.5 rounded-sm text-[11px] font-bold tracking-wider uppercase transition-all duration-300 ${activeTab === 'architecture' ? 'bg-[#111111] text-white border border-neutral-800 shadow-inner' : 'text-neutral-500 hover:text-neutral-200'}`}
>
<span className="text-[8px] ml-0.5 opacity-50 font-mono hidden sm:inline">ARCH</span>
</button>
<button
onClick={() => setActiveTab('scenarios')}
className={`px-3 py-1.5 rounded-sm text-[11px] font-bold tracking-wider uppercase transition-all duration-300 ${activeTab === 'scenarios' ? 'bg-[#111111] text-white border border-neutral-800 shadow-inner' : 'text-neutral-500 hover:text-neutral-200'}`}
>
<span className="text-[8px] ml-0.5 opacity-50 font-mono hidden sm:inline">SCENARIOS</span>
</button>
</div>
<div className="h-6 w-px bg-neutral-900 hidden md:block"></div>
{/* Theme Preset Selector */}
<div className="hidden md:flex items-center gap-2">
<span className="text-[9px] font-mono text-neutral-500 uppercase tracking-widest mr-1">Style Matrix:</span>
{(['cyan', 'amber', 'crimson'] as StylePreset[]).map((themeName) => {
const t = themes[themeName];
return (
<button
key={themeName}
onClick={() => setStyleTheme(themeName)}
className={`w-6 h-6 rounded-full border flex items-center justify-center transition-all ${styleTheme === themeName ? 'border-white scale-110' : 'border-neutral-900 hover:border-neutral-700'}`}
title={`${t.nameCn} / ${t.nameEn}`}
>
<span className={`w-3 h-3 rounded-full ${t.bgAccent}`} />
</button>
);
})}
</div>
</div>
</header>
{/* 2. Main Workspace */}
<main className="flex-1 w-full bg-[#080808] overflow-y-auto relative h-full">
{/* Futuristic Ambient Grid Overlay */}
<div className="fixed inset-0 z-0 pointer-events-none opacity-25">
<div className="absolute inset-0 bg-[radial-gradient(#1A1A1A_1px,transparent_1px)] [background-size:24px_24px]" />
<div className={`absolute top-[10%] right-[15%] w-[650px] h-[650px] ${activeTheme.radialGlow} blur-[180px] rounded-full`} />
<div className="absolute bottom-[5%] left-[5%] w-[550px] h-[550px] bg-blue-950/10 blur-[150px] rounded-full" />
</div>
<AnimatePresence mode="wait">
{/* =========================================================================
TAB: PRODUCT INTRO ("产品介绍")
========================================================================= */}
{activeTab === 'product_intro' && (
<motion.div
key="product_intro"
initial={{ opacity: 0, y: 10 }}
animate={{ opacity: 1, y: 0 }}
exit={{ opacity: 0, y: -10 }}
transition={{ duration: 0.4 }}
className="grid grid-cols-1 xl:grid-cols-12 w-full max-w-[1920px] mx-auto min-h-full divide-y xl:divide-y-0 xl:divide-x divide-neutral-900 relative z-10"
>
{/* LEFT INTRODUCTORY PANEL (Bilingual, Rich Copy) */}
<div className="col-span-1 xl:col-span-6 flex flex-col justify-start gap-8 p-6 md:p-12 lg:p-16 bg-[#090909]/90 relative">
{/* Style Palette Mobile Hotbar */}
<div className="flex md:hidden items-center justify-between p-3 rounded bg-neutral-950/60 border border-neutral-900 mb-6">
<span className="text-[10px] font-mono text-neutral-400"></span>
<div className="flex gap-2">
{(['cyan', 'amber', 'crimson'] as StylePreset[]).map((themeName) => {
const t = themes[themeName];
return (
<button
key={themeName}
onClick={() => setStyleTheme(themeName)}
className={`w-5 h-5 rounded-full border flex items-center justify-center transition-all ${styleTheme === themeName ? 'border-white scale-110' : 'border-neutral-900'}`}
>
<span className={`w-2.5 h-2.5 rounded-full ${t.bgAccent}`} />
</button>
);
})}
</div>
</div>
<div className="flex flex-col gap-8">
{/* Small tag */}
<div className="flex items-center gap-2">
<span className={`w-2 h-2 rounded-full ${activeTheme.bgAccent} shadow-[0_0_8px_${activeTheme.accent}] animate-pulse`} />
<span className="font-mono text-[10px] tracking-[0.25em] text-[#00F2FF] uppercase font-bold">
ONEOS INDUSTRIAL V2.0 TERMINAL PROTOCOL
</span>
</div>
{/* Title Matrix */}
<div className="space-y-3">
<h1 className="text-4xl md:text-5xl lg:text-6.5xl font-extrabold tracking-tight text-white leading-[1.15] font-sans">
AI Carbon Factor & <br />
<span className="font-light tracking-tight text-neutral-400">
Hydrogen Safety Box
</span>
</h1>
<div className="flex items-center gap-3">
<h2 className="text-xl md:text-3xl font-bold tracking-tight">
<span className={`font-semibold ${activeTheme.textAccent}`}>LNBox </span>
<span className="text-white font-medium">AI </span>
</h2>
</div>
</div>
{/* Copy Block in Chinese & English */}
<div className="space-y-4 max-w-xl text-neutral-400 text-sm leading-loose border-l-2 border-[#00F2FF]/40 pl-6 py-2">
<p className="font-sans font-light text-neutral-300">
LNBox OneOS AI 线 AI
</p>
</div>
{/* Feature Pillars Highlights (Bilingual) */}
<div className="grid grid-cols-1 md:grid-cols-2 gap-5 border-t border-neutral-900 pt-8">
<div className="p-5 rounded bg-neutral-950/40 border border-neutral-900 relative overflow-hidden group hover:border-neutral-800 transition-all">
<div className="absolute top-0 left-0 w-1 h-full bg-cyan-500/20" />
<div className="flex items-center gap-3 mb-3">
<div className="p-2 rounded bg-cyan-950/30 text-cyan-400">
<Cpu size={16} />
</div>
<span className="text-[13px] font-bold tracking-[0.08em] text-neutral-200">AI </span>
</div>
<p className="text-[12px] text-neutral-400 leading-relaxed mb-2">线</p>
<span className="text-[9px] font-mono text-neutral-500 block uppercase tracking-wider">AI CARBON FACTOR INFERENCE ENGINE</span>
</div>
<div className="p-5 rounded bg-neutral-950/40 border border-neutral-900 relative overflow-hidden group hover:border-neutral-800 transition-all">
<div className="absolute top-0 left-0 w-1 h-full bg-emerald-500/20" />
<div className="flex items-center gap-3 mb-3">
<div className="p-2 rounded bg-emerald-950/30 text-emerald-400">
<Leaf size={16} />
</div>
<span className="text-[13px] font-bold tracking-[0.08em] text-neutral-200"></span>
</div>
<p className="text-[12px] text-neutral-400 leading-relaxed mb-2">绿</p>
<span className="text-[9px] font-mono text-neutral-500 block uppercase tracking-wider">CARBON SINK ASSET RECOGNITION</span>
</div>
<div className="p-5 rounded bg-neutral-950/40 border border-neutral-900 relative overflow-hidden group hover:border-neutral-800 transition-all">
<div className="absolute top-0 left-0 w-1 h-full bg-amber-500/20" />
<div className="flex items-center gap-3 mb-3">
<div className="p-2 rounded bg-amber-950/30 text-amber-400">
<Zap size={16} />
</div>
<span className="text-[13px] font-bold tracking-[0.08em] text-neutral-200"> AI </span>
</div>
<p className="text-[12px] text-neutral-400 leading-relaxed mb-2">线</p>
<span className="text-[9px] font-mono text-neutral-500 block uppercase tracking-wider">AUTONOMOUS ENERGY AI DISPATCH</span>
</div>
<div className="p-5 rounded bg-neutral-950/40 border border-neutral-900 relative overflow-hidden group hover:border-neutral-800 transition-all">
<div className="absolute top-0 left-0 w-1 h-full bg-[#00F2FF]/20" />
<div className="flex items-center gap-3 mb-3">
<div className="p-2 rounded bg-[#00F2FF]/10 text-[#00F2FF]">
<ShieldCheck size={16} />
</div>
<span className="text-[13px] font-bold tracking-[0.08em] text-neutral-200"></span>
</div>
<p className="text-[12px] text-neutral-400 leading-relaxed mb-2"></p>
<span className="text-[9px] font-mono text-neutral-500 block uppercase tracking-wider">HYDROGEN SAFETY TELEMETRY NODE</span>
</div>
</div>
</div>
</div>
{/* RIGHT DISPLAY PANEL (Pure Hardware Display with Holographic Scanning Top Plat Cover) */}
<div className="col-span-1 xl:col-span-6 flex flex-col justify-center items-center p-6 md:p-12 lg:p-16 bg-[#050505] relative overflow-hidden">
<div className="absolute top-6 right-6 flex items-center gap-2 px-3 py-1.5 bg-neutral-950 border border-neutral-900 rounded font-mono text-[9px] text-[#00F2FF]">
<span className="w-1.5 h-1.5 rounded-full bg-[#00F2FF] animate-ping" />
HEURISTIC ANALYTICS: ACTIVE SCANNING
</div>
<div className="w-full max-w-lg flex flex-col items-center">
<div className="text-center mb-8">
<span className="text-[10px] font-mono tracking-[0.3em] uppercase text-neutral-500">Holographic Deck Perspective</span>
<h3 className="text-xl font-bold tracking-widest text-[#FFF] uppercase mt-2">OneOS </h3>
</div>
<div className="relative w-full aspect-square max-h-[360px] md:max-h-[420px] group border border-neutral-800 bg-[#0E0E0E]/95 shadow-[0_0_50px_rgba(0,0,0,0.85)] rounded-2xl flex items-center justify-center overflow-hidden p-8">
{/* Glowing background gradient reflecting thematic colors */}
<div className={`absolute -inset-2 bg-gradient-to-tr ${activeTheme.gradient} opacity-15 blur-2xl rounded-xl transition-all duration-700`} />
{/* Brand Identifier */}
<div className="absolute top-6 left-6 flex flex-col gap-1 text-left z-20">
<div className="font-sans font-black text-4xl tracking-wider text-[#00F2FF] leading-none drop-shadow-[0_0_10px_rgba(0,242,255,0.4)]">LN</div>
<div className="font-sans font-black text-xs tracking-[0.3em] text-white">ONEOS</div>
</div>
{/* Rotating Radar / Target scanner rings behind the main top cover plate */}
<div className="absolute inset-0 flex items-center justify-center opacity-30 pointer-events-none z-0">
<motion.div
animate={{ rotate: 360 }}
transition={{ duration: 30, repeat: Infinity, ease: 'linear' }}
className="w-[85%] h-[85%] rounded-full border border-dashed border-[#00F2FF]/40 flex items-center justify-center"
/>
<motion.div
animate={{ rotate: -360 }}
transition={{ duration: 20, repeat: Infinity, ease: 'linear' }}
className="absolute w-[60%] h-[60%] rounded-full border border-dotted border-[#00F2FF]/20"
/>
</div>
{/* Laser Sweeping Scanner Line */}
<motion.div
className="absolute left-0 right-0 h-[2.5px] bg-gradient-to-r from-transparent via-[#00F2FF] to-transparent shadow-[0_0_15px_#00F2FF] pointer-events-none z-10 opacity-80"
style={{
boxShadow: `0 0 15px ${activeTheme.accent}, 0 0 5px ${activeTheme.accent}`
}}
animate={{ top: ['4%', '96%', '4%'] }}
transition={{ repeat: Infinity, duration: 4.5, ease: "easeInOut" }}
/>
{/* Highly interactive cover view image with floating, tilt-breathing and hover scale */}
<motion.img
src={oneossTopFacet}
alt="OneOS Top Plate Facet View"
animate={{
y: [-6, 6, -6],
rotate: [-1, 1, -1]
}}
whileHover={{
scale: 1.05,
filter: "brightness(1.15) contrast(1.05)",
}}
transition={{
y: { repeat: Infinity, repeatType: "reverse", duration: 6, ease: "easeInOut" },
rotate: { repeat: Infinity, repeatType: "reverse", duration: 7, ease: "easeInOut" },
scale: { duration: 0.4 },
filter: { duration: 0.3 }
}}
className="w-full h-full object-contain max-h-[220px] md:max-h-[280px] transition-all relative z-10 select-none cursor-pointer filter brightness-[1.05]"
referrerPolicy="no-referrer"
/>
{/* Status annotations overlaid inside card corner borders */}
<div className="absolute top-6 right-6 font-mono text-[8px] text-neutral-500 text-right z-10 flex flex-col gap-0.5 select-none">
<div className="text-[#00F2FF]">RADAR_SYS: LOCKED</div>
<div>FACET_REFR: 0X4FA3</div>
</div>
<div className="absolute bottom-6 left-6 font-mono text-[8px] text-neutral-500 z-10 select-none">
<div>SPECS: GLASS v5 PORT PANEL</div>
<div>SHIELDING: NANO-AEROGEL</div>
</div>
<div className="absolute bottom-6 right-6 font-mono text-[9px] text-neutral-500 text-right space-y-0.5 z-10">
<div>MODEL_NO: LNBOX-TOP-V2</div>
<div className="text-emerald-400 font-bold">DECK_HOLOGRAPHIC: ACTIVE</div>
</div>
</div>
</div>
</div>
</motion.div>
)}
{/* =========================================================================
TAB: ENTITY DIAGRAM ("实体介绍图")
========================================================================= */}
{activeTab === 'entity_diagram' && (
<motion.div
key="entity_diagram"
initial={{ opacity: 0, y: 10 }}
animate={{ opacity: 1, y: 0 }}
exit={{ opacity: 0, y: -10 }}
transition={{ duration: 0.4 }}
className="grid grid-cols-1 xl:grid-cols-12 w-full max-w-[1920px] mx-auto min-h-full divide-y xl:divide-y-0 xl:divide-x divide-neutral-900 relative z-10"
>
{/* LEFT INTRODUCTORY PANEL (Technical Specifications) */}
<div className="col-span-1 xl:col-span-5 flex flex-col justify-start gap-6 p-6 md:p-12 lg:p-16 bg-[#090909]/95 relative">
<div className="flex flex-col gap-4">
<div className="flex items-center gap-2">
<span className="w-1.5 h-1.5 rounded-full bg-[#00F2FF] shadow-[0_0_6px_#00F2FF]" />
<span className="font-mono text-[9px] tracking-widest text-[#00F2FF] uppercase font-bold">PHYSICAL HARDWARE ASSEMBLY SPECS</span>
</div>
<h2 className="text-2xl md:text-3xl font-extrabold text-white tracking-tight"></h2>
<p className="text-xs text-neutral-400 leading-relaxed font-sans mt-1">
LNBox joint
</p>
</div>
<div className="border-t border-neutral-900 pt-6 space-y-4">
<span className="text-[10px] font-mono text-neutral-500 uppercase tracking-widest block font-bold"> / HARDWARE ATTRIBUTES</span>
<div className="grid grid-cols-1 gap-3">
{[
{ key: '整机尺寸 / Dimensions', value: '185mm x 140mm x 55mm' },
{ key: '防尘防水级别 / Ingress Rating', value: 'IP67 Heavy Waterproof Seal' },
{ key: '宽温工作环境 / Operating Temp', value: '-40°C to +85°C Aerospace Standard' },
{ key: '连接插座规格 / Interface Connectors', value: 'M12 Heavy Industrial Thread Locking' },
{ key: '外壳制作工艺 / Chassis Engineering', value: 'Anodized Space-Gray Aluminum sandblasing' },
{ key: '内置热物理屏蔽 / Thermal Protection', value: 'Nano-Aerogel Ultra-thin Thermal Shielding' },
].map((item, idx) => (
<div key={idx} className="p-3 rounded border border-neutral-900 bg-neutral-950/30 flex justify-between items-center text-xs">
<span className="text-neutral-400 font-medium">{item.key}</span>
<span className="font-mono text-[#00F2FF] text-[11px] font-bold">{item.value}</span>
</div>
))}
</div>
</div>
</div>
{/* RIGHT VIEWPOINT SWITCHER */}
<div className="col-span-1 xl:col-span-7 flex flex-col justify-between p-6 md:p-12 lg:p-16 bg-[#050505] relative overflow-hidden">
<div className="absolute top-6 right-6 flex items-center gap-2 px-3 py-1 bg-neutral-950 border border-neutral-900 rounded font-mono text-[9px] text-neutral-400">
<span className={`w-1.5 h-1.5 rounded-full ${activeTheme.bgAccent}`} />
DECKS MATRIX ACTIVE: {selectedFacet.nameEn}
</div>
<div className="flex flex-col justify-start items-center pt-2 pb-2">
<div className="text-center mb-4">
<div className="text-[10px] font-mono tracking-[0.3em] uppercase text-neutral-500">Live Render Viewpoint</div>
<div className="text-xl font-bold tracking-widest text-[#FFF] uppercase mt-1 flex items-center justify-center gap-2">
<span>{selectedFacet.nameCn}</span>
<span className="text-neutral-500">/</span>
<span className={`text-xs ${activeTheme.textAccent} font-mono font-medium`}>{selectedFacet.nameEn}</span>
</div>
</div>
<div className="relative w-full max-w-lg mt-1 group flex flex-col justify-center h-[210px] md:h-[260px]">
<div className={`absolute -inset-2 bg-gradient-to-tr ${activeTheme.gradient} opacity-10 blur-xl rounded-xl transition-all duration-700`} />
<div className="relative border border-neutral-800/80 bg-[#0E0E0E]/95 shadow-[0_0_50px_rgba(0,0,0,0.8)] p-6 rounded flex items-center justify-center h-full overflow-hidden">
<div className="absolute top-6 left-6 z-20 select-none flex flex-col gap-1 text-left">
<div className="font-sans font-black text-3xl md:text-4xl tracking-wider text-[#00F2FF] leading-none drop-shadow-[0_0_10px_rgba(0,242,255,0.5)]">
LN
</div>
<div className="font-sans font-black text-xs md:text-sm tracking-[0.3em] text-white/90 leading-none">
ONEOS
</div>
</div>
<AnimatePresence mode="wait">
<motion.img
key={selectedFacet.id}
src={selectedFacet.image}
alt={selectedFacet.nameCn}
initial={{ opacity: 0, scale: 0.94 }}
animate={{
opacity: 1,
scale: 1,
y: [-3, 3, -3]
}}
exit={{ opacity: 0, scale: 0.94 }}
transition={{
opacity: { duration: 0.3 },
scale: { duration: 0.3 },
y: { repeat: Infinity, repeatType: "reverse", duration: 5, ease: "easeInOut" }
}}
className="w-full h-full object-contain max-h-[150px] md:max-h-[190px] object-center opacity-95 brightness-[1.05]"
referrerPolicy="no-referrer"
/>
</AnimatePresence>
<div className="absolute top-4 right-4 font-mono text-[7px] text-neutral-600 flex flex-col text-right">
<span>OCTANE_RENDER_V6_HD</span>
<span>GRID_LOCK_ALGN [OK]</span>
</div>
</div>
</div>
{/* Micro specs descriptors */}
<div className="w-full max-w-lg mt-4 grid grid-cols-3 gap-2 shrink-0">
{selectedFacet.specs.map((item, idx) => (
<div key={idx} className="bg-[#090909] p-2 border border-neutral-900 flex flex-col rounded">
<span className="text-[7.5px] font-mono text-neutral-500 uppercase tracking-wider">{item.label}</span>
<span className="text-[10px] font-bold text-neutral-200 mt-0.5 truncate">{item.value}</span>
</div>
))}
</div>
</div>
{/* Micro Thumbnail Selector at the bottom */}
<div className="border-t border-neutral-900/40 pt-4 mt-2 shrink-0">
<div className="grid grid-cols-3 gap-3 max-w-lg mx-auto">
{facets.map((facet) => {
const isSelected = activeFacet === facet.id;
return (
<button
key={facet.id}
onClick={() => setActiveFacet(facet.id)}
className={`group flex flex-col items-center p-1.5 border rounded bg-[#070707] transition-all duration-300 ${isSelected ? `border-white ring-1 ring-white/10 ${activeTheme.glow}` : 'border-neutral-900 hover:border-neutral-700/60'}`}
>
<div className="w-full aspect-[4/3] rounded bg-[#0A0A0A] border border-neutral-900 overflow-hidden flex items-center justify-center p-1 mb-1.5">
<img
src={facet.image}
alt={facet.nameCn}
className={`max-h-full max-w-full object-contain filter duration-350 ${isSelected ? 'brightness-[1.1] opacity-100 scale-105' : 'brightness-90 opacity-70 scale-100 group-hover:scale-105'}`}
referrerPolicy="no-referrer"
/>
</div>
<span className={`text-[10px] font-bold tracking-tight leading-tight ${isSelected ? activeTheme.textAccent : 'text-neutral-400'}`}>
{facet.nameCn}
</span>
<span className="text-[7.5px] font-mono text-neutral-500 uppercase tracking-wide mt-0.5">
{facet.nameEn}
</span>
</button>
);
})}
</div>
</div>
</div>
</motion.div>
)}
{/* =========================================================================
TAB: CORE LOGICAL ARCHITECTURE FLOW (Bilingual & Exactly Matching Attached Diagram)
========================================================================= */}
{activeTab === 'architecture' && (
<motion.div
key="architecture"
initial={{ opacity: 0, y: 10 }}
animate={{ opacity: 1, y: 0 }}
exit={{ opacity: 0, y: -10 }}
transition={{ duration: 0.4 }}
className="w-full h-full xl:max-h-[calc(100vh-140px)] flex flex-col items-center justify-start gap-4 p-3 md:p-5 lg:p-6 z-10 relative overflow-y-auto"
>
{/* Architecture Title block with both ENG and CN */}
<div className="text-center mb-1 max-w-2xl px-4 flex-shrink-0">
<div className="inline-flex items-center gap-2 px-2 py-0.5 bg-[#121212]/80 border border-neutral-800 text-[9px] uppercase tracking-widest text-[#00F2FF] rounded font-mono mb-1">
Logical Data Flow and System Infrastructure
</div>
<h2 className="text-xl md:text-2xl font-light tracking-tight text-white mb-0.5">
OneOS AI - <span className="font-extrabold text-[#00F2FF] tracking-wide"></span>
</h2>
<p className="text-[9px] font-mono text-neutral-500 uppercase tracking-widest">
BI-LINGUAL SCHEMATIC FLOW CHART 100% FULL-SCREEN COCKPIT
</p>
</div>
{/* Exact column layout with custom bidirectional connectors */}
<div className="w-full max-w-[1780px] mx-auto flex flex-col xl:flex-row gap-2.5 items-stretch relative flex-1 xl:min-h-[580px] min-w-0">
{/* COLUMN 1: 数据采集层 (Data Capture Layer, ~18% width) */}
<div className="flex flex-col gap-2 p-2 bg-neutral-950/50 rounded border border-neutral-900/40 relative w-full xl:w-[18%] shrink-0">
<div className="p-1 bg-[#0F0F0F] border border-neutral-900 rounded text-center shrink-0">
<div className="text-[10px] font-bold tracking-[0.1em] text-[#00F2FF] uppercase"></div>
<div className="text-[7.5px] font-mono text-neutral-500 uppercase">Data Capture Matrix</div>
</div>
<CompactArchCard title={<div className="flex items-center gap-1.5"><Settings size={11} className="text-[#00F2FF]"/><span>/</span></div>} className="flex-[1.3_1.3_0%]">
<CompactArchList items={[
{ text: 'OBD/VCU', textEn: 'Vehicle Controller' },
{ text: '电池系统', textEn: 'BMS monitoring' },
{ text: '氢系统传感器', textEn: 'Hydrogen sensors' },
{ text: '压力传感器', textEn: 'Pressure metrics' },
{ text: '温度传感器', textEn: 'Temperature status' },
{ text: '其他传感器', textEn: 'Auxiliary metrics' },
]} />
</CompactArchCard>
<CompactArchCard title={<div className="flex items-center gap-1.5"><Cloud size={11} className="text-[#00F2FF]"/><span></span></div>} className="flex-1">
<CompactArchList items={[
{ text: '气体浓度', textEn: 'H2 Gas Sniffer' },
{ text: '环境温湿度', textEn: 'Cabinet temperature' },
{ text: '定位信息', textEn: 'GNSS coordinates' },
]} />
</CompactArchCard>
</div>
{/* FLOW CONNECTOR 1: Left to Center (Capture <-> AI Core) */}
<div className="flex xl:flex-col items-center justify-center shrink-0 py-1 xl:py-0 px-2 select-none">
<div className="flex flex-row xl:flex-col items-center gap-1.5 text-[#00F2FF] animate-pulse">
{/* Left/Top arrowhead */}
<svg width="12" height="12" viewBox="0 0 12 12" fill="none" className="rotate-0 xl:-rotate-90">
<path d="M9 2L3 6L9 10" stroke="#00F2FF" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" />
</svg>
{/* Glowing vertical path */}
<div className="w-8 xl:w-[2px] h-[3px] xl:h-28 bg-gradient-to-r xl:bg-gradient-to-b from-[#00F2FF] via-[#00F2FF]/60 to-[#00F2FF] shadow-[0_0_12px_rgba(0,242,255,0.8)]" />
{/* Right/Bottom arrowhead */}
<svg width="12" height="12" viewBox="0 0 12 12" fill="none" className="rotate-0 xl:-rotate-90">
<path d="M3 2L9 6L3 10" stroke="#00F2FF" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" />
</svg>
</div>
</div>
{/* COLUMN 2: ONEOS AI 氢能盒子 (Intelligent Core Box Node, Flex-1) */}
<div className="flex-1 flex flex-col gap-2 p-2.5 border border-neutral-800 bg-[#040404]/90 rounded shadow-2xl relative min-w-[320px] xl:min-h-[560px]">
{/* Glowing halo behind box node */}
<div className={`absolute inset-0 bg-gradient-to-b ${activeTheme.radialGlow} to-transparent rounded z-0 pointer-events-none opacity-20`} />
<div className="p-1 bg-[#000] border border-neutral-900 rounded text-center z-10 shrink-0">
<div className={`text-[11px] font-extrabold tracking-[0.15em] ${activeTheme.textAccent} uppercase`}>
OneOS AI
</div>
<div className="text-[7px] font-mono text-neutral-500 uppercase">LNbox Core Hardware Hub</div>
</div>
{/* 3-Column Internal Layout: Modules - Central Hardware - Modules */}
<div className="grid grid-cols-1 lg:grid-cols-3 gap-2 items-stretch flex-1 z-10 min-h-0 min-w-0 py-1">
{/* Left Sub-column: Safety & Carbon */}
<div className="flex flex-col gap-2 h-full justify-between overflow-hidden">
<CompactArchCard title={<div className="flex items-center gap-1.5 text-red-400 font-extrabold"><ShieldAlert size={11} /><span></span></div>} className="flex-1">
<CompactArchList items={[
{ text: '泄漏监测', textEn: 'Liquid H2 gas leakage' },
{ text: '压力监测', textEn: 'Chassis pressure variables' },
{ text: '温度监测', textEn: 'Thermal safety telemetry' },
{ text: '风险预警', textEn: 'Instant warning algorithms' },
{ text: '自动/远程干预 (预留)', textEn: 'Pre-emptive emergency isolation' },
]} />
</CompactArchCard>
<CompactArchCard title={<div className="flex items-center gap-1.5 text-[#00F2FF] font-extrabold"><Leaf size={11} /><span></span></div>} className="flex-1">
<CompactArchList items={[
{ text: '碳数据采集', textEn: 'Realtime carbon footprint ingesting' },
{ text: '碳因子计算', textEn: 'Bilingual translation analytics' },
{ text: '碳资产关联', textEn: 'Clean credits assignment' },
{ text: '碳数据上链 (预留)', textEn: 'Secure blockchain accounting' },
]} />
</CompactArchCard>
</div>
{/* Central Sub-column: Interactive Hardware Showcase */}
<div className="flex flex-col border border-neutral-800/80 rounded bg-[#070707] p-2 justify-between gap-2 relative z-10 group">
{/* Interactive circuit-like subtle glow */}
<div className="absolute inset-x-0 top-0 h-[1px] bg-gradient-to-r from-transparent via-[#00F2FF]/40 to-transparent"></div>
<div className="relative w-full flex-1 border border-neutral-900 rounded bg-[#0A0A0A] p-2 flex flex-col items-center justify-center overflow-hidden min-h-[140px]">
<motion.img
key={archFacet}
src={archFacetImages[archFacet]}
alt="OneOS AI Hardware"
initial={{ opacity: 0 }}
animate={{ opacity: 1 }}
transition={{ duration: 0.25 }}
className="w-full h-full max-h-[110px] object-contain opacity-95 brightness-[1.1]"
referrerPolicy="no-referrer"
/>
{/* Custom status overlays */}
<div className="absolute top-1.5 left-2 px-1.5 py-0.5 rounded bg-black/80 border border-neutral-800 text-[8px] font-mono font-extrabold text-[#00F2FF] shadow-[0_0_8px_rgba(0,186,255,0.4)]">
LN
</div>
<div className="absolute bottom-1.5 right-2 px-1.5 py-0.5 rounded bg-neutral-900/90 border border-neutral-800 text-[8px] font-mono font-black text-white tracking-widest leading-none">
ONEOS
</div>
</div>
{/* Small operational thumbnails */}
<div className="grid grid-cols-3 gap-1 shrink-0 relative z-20">
{([
{ id: 'top' as const, img: oneossTopFacet, label: 'Top' },
{ id: 'side' as const, img: oneossSideFacet, label: 'Side' },
{ id: 'iso' as const, img: oneossBoxImage, label: 'ISO' },
]).map((facet) => (
<button
key={facet.id}
onClick={() => setArchFacet(facet.id)}
className={`border rounded bg-[#101010] p-1 flex items-center justify-center h-[38px] transition-all cursor-pointer relative ${archFacet === facet.id ? 'border-[#00F2FF] ring-1 ring-[#00F2FF]/20' : 'border-neutral-800 hover:border-[#00F2FF]/50'}`}
>
<img src={facet.img} alt={facet.label} className="max-h-full max-w-full object-contain pointer-events-none" referrerPolicy="no-referrer" />
</button>
))}
</div>
</div>
{/* Right Sub-column: AI Analyzers & Device Management */}
<div className="flex flex-col gap-2 h-full justify-between overflow-hidden">
<CompactArchCard title={<div className="flex items-center gap-1.5 text-amber-400 font-extrabold"><Cpu size={11} /><span>AI分析决策模块</span></div>} className="flex-1">
<CompactArchList items={[
{ text: '数据分析', textEn: 'High freq operational analysis' },
{ text: '风险预测', textEn: 'Predictive security forecasting' },
{ text: '故障诊断', textEn: 'Automated modular diagnostics' },
{ text: '能耗优化', textEn: 'Energy efficient constraints' },
{ text: '智能决策', textEn: 'Autonomous hardware decisions' },
]} />
</CompactArchCard>
<CompactArchCard title={<div className="flex items-center gap-1.5 text-neutral-200 font-extrabold"><Sliders size={11} /><span></span></div>} className="flex-1">
<CompactArchList items={[
{ text: '设备状态监控', textEn: 'Node integrity health checks' },
{ text: '远程升级', textEn: 'Over-The-Air OTA flash' },
{ text: '故障告警', textEn: 'Telemetry fault alerting' },
{ text: '运行日志管理', textEn: 'Secure operational metrics logs' },
]} />
</CompactArchCard>
</div>
</div>
{/* Vertical flow connector pointing up from Data Security to Central Hardware */}
<div className="flex lg:grid lg:grid-cols-3 shrink-0 h-4 lg:h-5 justify-center items-center relative select-none z-10 -my-1 pointer-events-none">
<div className="hidden lg:block"></div> {/* Left empty */}
<div className="flex flex-col items-center justify-center text-[#00F2FF] animate-pulse">
{/* Arrowhead pointing UP */}
<svg width="10" height="7" viewBox="0 0 10 7" fill="none" className="rotate-180 mb-[2px]">
<path d="M5 0L10 7H0L5 0Z" fill="#00F2FF" />
</svg>
{/* Vertical line with glow */}
<div className="w-[1.5px] h-3 lg:h-4 bg-gradient-to-t from-[#00F2FF]/10 via-[#00F2FF]/80 to-[#00F2FF] shadow-[0_0_8px_rgba(0,242,255,0.8)]" />
</div>
<div className="hidden lg:block"></div> {/* Right empty */}
</div>
{/* Stretching bottom card: 数据安全模块 */}
<div className="border border-neutral-900 bg-neutral-950/80 rounded p-2 z-10 shrink-0">
<div className="text-[8px] font-mono font-bold uppercase tracking-widest text-[#00F2FF]/70 text-center mb-1 bg-black/40 py-0.5 rounded border border-neutral-900">
(Data Security Framework)
</div>
<div className="grid grid-cols-4 gap-2">
<div className="bg-[#090909] border border-neutral-900/60 p-1 rounded flex flex-col items-center justify-center text-center">
<ShieldCheck size={11} className="text-[#00F2FF] mb-0.5" />
<span className="text-[9px] font-extrabold text-neutral-200"></span>
<span className="text-[6.5px] font-mono text-neutral-500 leading-none mt-0.5">AES/ECC</span>
</div>
<div className="bg-[#090909] border border-neutral-900/60 p-1 rounded flex flex-col items-center justify-center text-center">
<Settings size={11} className="text-[#00F2FF] mb-0.5" />
<span className="text-[9px] font-extrabold text-neutral-200"></span>
<span className="text-[6.5px] font-mono text-neutral-500 leading-none mt-0.5">RBAC Mode</span>
</div>
<div className="bg-[#090909] border border-neutral-900/60 p-1 rounded flex flex-col items-center justify-center text-center">
<Database size={11} className="text-[#00F2FF] mb-0.5" />
<span className="text-[9px] font-extrabold text-neutral-200"></span>
<span className="text-[6.5px] font-mono text-neutral-500 leading-none mt-0.5">Enclave Vault</span>
</div>
<div className="bg-[#090909] border border-neutral-900/60 p-1 rounded flex flex-col items-center justify-center text-center">
<Link2 size={11} className="text-[#00F2FF] mb-0.5" />
<span className="text-[9px] font-extrabold text-neutral-200"></span>
<span className="text-[6.5px] font-mono text-neutral-500 leading-none mt-0.5">TLS Tunneling</span>
</div>
</div>
</div>
</div>
{/* FLOW CONNECTOR 2: Center to Cloud (AI Core <-> Cloud AIoT) */}
<div className="flex xl:flex-col items-center justify-center shrink-0 py-1 xl:py-0 px-2 select-none">
<div className="flex flex-row xl:flex-col items-center gap-1.5 text-[#00F2FF] animate-pulse">
<svg width="12" height="12" viewBox="0 0 12 12" fill="none" className="rotate-0 xl:-rotate-90">
<path d="M9 2L3 6L9 10" stroke="#00F2FF" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" />
</svg>
<div className="w-8 xl:w-[2px] h-[3px] xl:h-28 bg-gradient-to-r xl:bg-gradient-to-b from-[#00F2FF] via-[#00F2FF]/60 to-[#00F2FF] shadow-[0_0_12px_rgba(0,242,255,0.8)]" />
<svg width="12" height="12" viewBox="0 0 12 12" fill="none" className="rotate-0 xl:-rotate-90">
<path d="M3 2L9 6L3 10" stroke="#00F2FF" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" />
</svg>
</div>
</div>
{/* COLUMN 3: OneOS 云平台 (OneOS AIoT Cloud Platform, ~18% width) */}
<div className="flex flex-col gap-2 p-2 bg-neutral-950/50 rounded border border-neutral-900/40 relative w-full xl:w-[18%] shrink-0">
<div className="p-1 bg-[#0F0F0F] border border-neutral-900 rounded text-center shrink-0">
<div className="text-[10px] font-bold tracking-[0.1em] text-[#00F2FF] uppercase">OneOS </div>
<div className="text-[7.5px] font-mono text-neutral-500 uppercase">Core AIoT Cloud</div>
</div>
<CompactArchCard title={<div className="flex items-center gap-1.5"><Cloud size={11} className="text-[#00F2FF]"/><span>OneOS AIoT </span></div>} className="flex-1">
{/* Futuristic Large Cloud core visualization panel */}
<div className="h-[120px] lg:h-[155px] w-full border border-cyan-500/20 bg-gradient-to-b from-[#080E16] to-[#040609] rounded-lg relative flex flex-col items-center justify-center mb-2.5 p-3 overflow-hidden group shadow-[inset_0_1px_12px_rgba(0,242,255,0.08)] shrink-0">
{/* Abstract grid matrix */}
<div className="absolute inset-0 opacity-[0.06] bg-[linear-gradient(to_right,#00F2FF_1px,transparent_1px),linear-gradient(to_bottom,#00F2FF_1px,transparent_1px)] bg-[size:10px_10px]" />
{/* Pulsing orbital rings */}
<div className="absolute w-20 h-20 rounded-full border border-[#00F2FF]/5 animate-[spin_12s_linear_infinite]" />
<div className="absolute w-24 h-24 rounded-full border border-dashed border-[#00F2FF]/5 animate-[spin_24s_linear_infinite]" />
{/* Main cloud glowing structure */}
<div className="relative flex items-center justify-center text-[#00F2FF] p-3 bg-[#0c1a24]/45 border border-cyan-400/20 rounded-xl shadow-[0_0_15px_rgba(0,242,255,0.1)] mb-1.5 hover:scale-105 transition-transform duration-300">
<Cloud size={28} className="animate-pulse duration-1000" />
<div className="absolute inset-0 bg-[#00F2FF] opacity-15 blur-md rounded-full" />
<div className="absolute -top-1 -right-1 w-1.5 h-1.5 rounded-full bg-cyan-400 animate-ping" />
</div>
{/* Description & name */}
<span className="text-[9px] font-extrabold text-cyan-400 tracking-widest font-mono uppercase">OneOS Cloud Hub</span>
<span className="text-[7px] font-mono text-neutral-500 tracking-wider text-center max-w-[85%] mt-0.5 uppercase">Omni AIoT Control Core</span>
{/* Flowing particle stream */}
<div className="flex gap-1.5 mt-2 items-center justify-center">
<div className="w-[3px] h-[3px] rounded-full bg-cyan-400 animate-bounce" />
<div className="w-4 h-[1px] bg-gradient-to-r from-cyan-500/20 via-cyan-400 to-cyan-500/20" />
<div className="w-[3px] h-[3px] rounded-full bg-cyan-400 animate-bounce delay-150" />
</div>
</div>
<CompactArchList items={[
{ text: '数据存储与计算', textEn: 'Storage & Distributed computing' },
{ text: 'AI模型训练与优化', textEn: 'Neural model continuous training' },
{ text: '可视化监控大屏', textEn: 'Omni-channel control boards' },
{ text: '运营管理系统', textEn: 'Integrated management suite' },
{ text: '开放API服务', textEn: 'Standard programmatic endpoint' },
]} />
</CompactArchCard>
</div>
{/* FLOW CONNECTOR 3: Cloud to Applications (Cloud AIoT <-> Scenario Scopes) */}
<div className="flex xl:flex-col items-center justify-center shrink-0 py-1 xl:py-0 px-2 select-none">
<div className="flex flex-row xl:flex-col items-center gap-1.5 text-[#00F2FF] animate-pulse">
<svg width="12" height="12" viewBox="0 0 12 12" fill="none" className="rotate-0 xl:-rotate-90">
<path d="M9 2L3 6L9 10" stroke="#00F2FF" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" />
</svg>
<div className="w-8 xl:w-[2px] h-[3px] xl:h-28 bg-gradient-to-r xl:bg-gradient-to-b from-[#00F2FF] via-[#00F2FF]/60 to-[#00F2FF] shadow-[0_0_12px_rgba(0,242,255,0.8)]" />
<svg width="12" height="12" viewBox="0 0 12 12" fill="none" className="rotate-0 xl:-rotate-90">
<path d="M3 2L9 6L3 10" stroke="#00F2FF" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" />
</svg>
</div>
</div>
{/* COLUMN 4: 应用场景 (Operational Scenarios Layer, ~18% width) */}
<div className="flex flex-col gap-2 p-2 bg-neutral-950/50 rounded border border-neutral-900/40 relative w-full xl:w-[18%] shrink-0">
<div className="p-1 bg-[#0F0F0F] border border-neutral-900 rounded text-center shrink-0">
<div className="text-[10px] font-bold tracking-[0.15em] text-white uppercase"></div>
<div className="text-[7.5px] font-mono text-neutral-500 uppercase">Operational Scenarios</div>
</div>
{/* Scenario 1: Fleet Operations */}
<div className="bg-[#090909]/90 border border-neutral-800/80 rounded p-1.5 flex flex-col hover:border-[#00F2FF]/45 transition-all flex-1 justify-between min-h-0 overflow-hidden group">
<div className="flex items-center gap-1 pb-1 border-b border-neutral-900 shrink-0">
<div className="w-[15px] h-[15px] bg-cyan-950/45 border border-cyan-900/45 rounded flex items-center justify-center text-cyan-400">
<Truck size={9} />
</div>
<span className="text-[10px] font-extrabold text-neutral-200"></span>
<span className="text-[7px] font-mono text-neutral-500 ml-auto uppercase hidden lg:block">Fleet</span>
</div>
<div className="flex flex-row items-center gap-1.5 flex-1 min-h-0 py-1">
<div className="w-13 h-9 lg:w-[60px] lg:h-[42px] rounded border border-neutral-800 shrink-0 overflow-hidden relative shadow-md">
<img src={scenarioFleetImage} alt="Fleet" className="w-full h-full object-cover opacity-90 brightness-[1.05] group-hover:scale-105 transition-transform duration-300" referrerPolicy="no-referrer" />
<div className="absolute inset-0 bg-gradient-to-t from-black/50 to-transparent pointer-events-none" />
</div>
<div className="flex-1 flex flex-col justify-center gap-0.5 text-[9px] leading-tight pl-0.5 overflow-hidden">
<div className="flex items-center gap-1 truncate">
<div className="w-[3px] h-[3px] rounded-full bg-[#00F2FF] shadow-[0_0_3px_#00F2FF] shrink-0" />
<span className="text-neutral-200 font-sans"> </span>
</div>
<div className="flex items-center gap-1 truncate">
<div className="w-[3px] h-[3px] rounded-full bg-[#00F2FF]/30 shrink-0" />
<span className="text-neutral-400 font-sans"> </span>
</div>
</div>
</div>
</div>
{/* Scenario 2: Refueling Station Operations */}
<div className="bg-[#090909]/90 border border-neutral-800/80 rounded p-1.5 flex flex-col hover:border-amber-400/45 transition-all flex-1 justify-between min-h-0 overflow-hidden group">
<div className="flex items-center gap-1 pb-1 border-b border-neutral-900 shrink-0">
<div className="w-[15px] h-[15px] bg-amber-950/45 border border-amber-900/45 rounded flex items-center justify-center text-amber-400">
<FactoryIcon size={9} />
</div>
<span className="text-[10px] font-extrabold text-neutral-200"></span>
<span className="text-[7px] font-mono text-neutral-500 ml-auto uppercase hidden lg:block">Station</span>
</div>
<div className="flex flex-row items-center gap-1.5 flex-1 min-h-0 py-1">
<div className="w-13 h-9 lg:w-[60px] lg:h-[42px] rounded border border-neutral-800 shrink-0 overflow-hidden relative shadow-md">
<img src={scenarioStationImage} alt="Station" className="w-full h-full object-cover opacity-90 brightness-[1.05] group-hover:scale-105 transition-transform duration-300" referrerPolicy="no-referrer" />
<div className="absolute inset-0 bg-gradient-to-t from-black/50 to-transparent pointer-events-none" />
</div>
<div className="flex-1 flex flex-col justify-center gap-0.5 text-[9px] leading-tight pl-0.5 overflow-hidden">
<div className="flex items-center gap-1 truncate">
<div className="w-[3px] h-[3px] rounded-full bg-amber-400 shadow-[0_0_3px_#fbbf24] shrink-0" />
<span className="text-neutral-200 font-sans"> </span>
</div>
<div className="flex items-center gap-1 truncate">
<div className="w-[3px] h-[3px] rounded-full bg-amber-400/30 shrink-0" />
<span className="text-neutral-400 font-sans"> </span>
</div>
</div>
</div>
</div>
{/* Scenario 3: Energy & Data Center Computes */}
<div className="bg-[#090909]/90 border border-neutral-800/80 rounded p-1.5 flex flex-col hover:border-red-400/45 transition-all flex-1 justify-between min-h-0 overflow-hidden group">
<div className="flex items-center gap-1 pb-1 border-b border-neutral-900 shrink-0">
<div className="w-[15px] h-[15px] bg-red-950/45 border border-red-900/45 rounded flex items-center justify-center text-red-500">
<Server size={9} />
</div>
<span className="text-[10px] font-extrabold text-neutral-200">/</span>
<span className="text-[7px] font-mono text-neutral-500 ml-auto uppercase hidden lg:block">Center</span>
</div>
<div className="flex flex-row items-center gap-1.5 flex-1 min-h-0 py-1">
<div className="w-13 h-9 lg:w-[60px] lg:h-[42px] rounded border border-neutral-800 shrink-0 overflow-hidden relative shadow-md">
<img src={scenarioDatacenterImage} alt="Data Center" className="w-full h-full object-cover opacity-90 brightness-[1.05] group-hover:scale-105 transition-transform duration-300" referrerPolicy="no-referrer" />
<div className="absolute inset-0 bg-gradient-to-t from-black/50 to-transparent pointer-events-none" />
</div>
<div className="flex-1 flex flex-col justify-center gap-0.5 text-[9px] leading-tight pl-0.5 overflow-hidden">
<div className="flex items-center gap-1 truncate">
<div className="w-[3px] h-[3px] rounded-full bg-red-400 shadow-[0_0_3px_#f87171] shrink-0" />
<span className="text-neutral-200 font-sans"> </span>
</div>
<div className="flex items-center gap-1 truncate">
<div className="w-[3px] h-[3px] rounded-full bg-red-400/30 shrink-0" />
<span className="text-neutral-400 font-sans"> </span>
</div>
</div>
</div>
</div>
</div>
</div>
{/* Bottom value matrix (价值输出层 中英双语) */}
<div className="w-full bg-[#070707] border border-neutral-800/80 border-l-4 border-l-[#00F2FF] rounded shrink-0 relative overflow-hidden py-3 px-6 mt-4 flex items-center justify-between">
<div className="absolute inset-0 bg-gradient-to-r from-transparent via-[#00F2FF]/5 to-transparent pointer-events-none" />
<div className="hidden xl:block shrink-0 font-extrabold text-[#E5E5E5] tracking-widest text-[11px] uppercase mr-6">
<br />
<span className="text-[8px] font-mono text-neutral-500 font-light block">VALUE MATRIX SYSTEM</span>
</div>
<div className="flex-1 grid grid-cols-2 md:grid-cols-5 gap-4 divide-y md:divide-y-0 md:divide-x divide-neutral-900">
{[
{ title: '强化安全减灾', sub: '极速预警防爆泄漏风险', icon: ShieldCheck, subEn: 'RISK CONTROL' },
{ title: '显著降本增益', sub: '优化气耗能耗控制开支', icon: Search, subEn: 'COST MINIMIZE' },
{ title: '多端业务提效', sub: '云端统筹各端负载配置', icon: Activity, subEn: 'EFFICIENT ROUTING' },
{ title: '绿氢数据资产', sub: '实时认证双碳属性归集', icon: Leaf, subEn: 'CARBON CERTIFIED' },
{ title: 'AI边算一体化', sub: '全面释放物联数据潜能', icon: LineChart, subEn: 'DATA ASSET INFERENCE' },
].map((val, i) => {
const Icon = val.icon;
return (
<div key={i} className="flex items-center gap-2 px-1 xl:px-4 w-full pt-2 md:pt-0">
<div className="text-[#00F2FF] bg-[#00F2FF]/10 p-1.5 rounded shrink-0 border border-[#00F2FF]/20 shadow-[0_0_10px_rgba(0,242,255,0.05)]">
<Icon size={13} />
</div>
<div className="flex flex-col items-start min-w-0">
<span className="text-[11px] font-semibold text-white tracking-wider truncate max-w-[130px]">{val.title}</span>
<span className="text-[9px] text-neutral-400 truncate max-w-[130px]">{val.sub}</span>
<span className="text-[8px] font-mono text-neutral-600 uppercase tracking-widest font-bold">{val.subEn}</span>
</div>
</div>
);
})}
</div>
</div>
</motion.div>
)}
{/* =========================================================================
TAB: REAL-WORLD TELEMETRY SCENARIOS ("真实数据场景")
========================================================================= */}
{activeTab === 'scenarios' && (
<motion.div
key="scenarios"
initial={{ opacity: 0, y: 10 }}
animate={{ opacity: 1, y: 0 }}
exit={{ opacity: 0, y: -10 }}
transition={{ duration: 0.4 }}
className="w-full h-full xl:max-h-[calc(100vh-140px)] flex flex-col items-center justify-start gap-4 p-3 md:p-5 lg:p-6 z-10 relative overflow-y-auto"
>
{/* Title Section */}
<div className="text-center mb-3 max-w-3xl px-4 flex-shrink-0">
<div className="inline-flex items-center gap-2 px-3 py-1 bg-[#121212]/80 border border-neutral-800 text-[10px] uppercase tracking-widest text-[#00F2FF] rounded font-mono mb-2">
<span className="w-1.5 h-1.5 rounded-full bg-emerald-500 animate-ping mr-1"></span>
Real-time Industrial Telemetry & Carbon Sink Assurance Metrics
</div>
<h2 className="text-xl md:text-2xl font-light tracking-tight text-white mb-1.5">
: <span className="font-extrabold text-[#00F2FF] tracking-wide"></span>
</h2>
<p className="text-[10px] font-mono text-neutral-500 uppercase tracking-widest">
LNBOX TELEMETRY LOGS ONEOS AI INFERENCE COCKPIT
</p>
</div>
{/* 3-Column Scenario Cards Grid */}
<div className="w-full max-w-[1780px] mx-auto grid grid-cols-1 xl:grid-cols-3 gap-6 items-stretch shrink-0">
{/* Scenario 01 */}
<div className="bg-[#090909]/95 border border-neutral-800/80 rounded-xl flex flex-col justify-between hover:border-[#00F2FF]/40 transition-all group shadow-2xl relative">
<div>
{/* Visual card header image */}
<div className="w-full h-[150px] relative overflow-hidden bg-neutral-900 border-b border-neutral-900 rounded-t-xl">
<img
src={scenarioFleetImage}
alt="Fleet Delivery Scenario"
className="w-full h-full object-cover opacity-85 group-hover:scale-105 transition-transform duration-500"
referrerPolicy="no-referrer"
/>
<div className="absolute inset-0 bg-gradient-to-t from-black via-black/30 to-transparent pointer-events-none" />
<div className="absolute bottom-3 left-4 flex flex-col">
<span className="text-[10px] font-mono text-[#00F2FF] uppercase tracking-widest font-bold">SCENARIO 01 / COLD-CHAIN</span>
<span className="text-sm font-extrabold text-white mt-0.5"></span>
</div>
</div>
{/* Card Content */}
<div className="p-5 space-y-4">
<div className="space-y-2">
<div className="flex items-center gap-2 text-[12px] font-bold text-neutral-300">
<Cpu size={13} className="text-[#00F2FF]" />
<span>LNBox </span>
</div>
<p className="text-xs text-neutral-400 bg-neutral-950 p-3 rounded border border-neutral-900 leading-relaxed">
<span className="text-white font-mono font-medium">85.3 km</span>
<span className="text-white font-mono font-medium">8.0 kg</span>
<span className="text-white font-mono font-medium">28.5 MPa</span>
<span className="text-white font-mono font-medium">4.2°C</span>
</p>
</div>
<div className="space-y-2">
<div className="flex items-center gap-2 text-[12px] font-bold text-[#00F2FF]">
<Workflow size={13} />
<span>OneOS </span>
</div>
<p className="text-xs text-neutral-400 bg-neutral-950 p-3 rounded border border-neutral-900 leading-relaxed">
<span className="text-emerald-400 font-mono font-bold">3.0927 kgCO2/kg </span>
<span className="text-emerald-400 font-mono font-bold">24.74 kgCO2e</span>
OneOS 绿
</p>
</div>
</div>
</div>
{/* Indicators Table */}
<div className="p-4 bg-neutral-950/80 border-t border-neutral-900 grid grid-cols-2 gap-2.5 shrink-0 rounded-b-xl">
{[
{
labelCn: '氢消耗碳因子',
labelEn: 'H2 CARBON FACTOR',
value: '3.0927 kgCO2/kg',
formula: 'E_factor = 3.0927',
tooltip: '对应方法学发布的绿氢替代汽柴油碳排放规则,代表消耗每公斤氢气所能减免替代的传统燃油车温室气体克排因子值,支持多区域规则动态映射扩展。'
},
{
labelCn: '二氧化碳减排量',
labelEn: 'CO2 REDUCTION',
value: '24.74 kgCO2e',
formula: 'CO2_reduced = H2_consumed (8.0 kg) × 3.0927',
tooltip: '由OneOS可信核算消耗氢气 8.0 kg 理论替代燃油卡车的温室气体排放,计算基于权威减排测算方法学并支持后期多维度核算规则的通用扩展。'
},
{
labelCn: '百公里物理排放',
labelEn: 'EMISSION/100KM',
value: '6.1854 kg',
formula: 'E_100km = 2.0 kg/100km × 3.0927',
tooltip: '碳因子库中 4.5吨轻型货车百公里二氧化碳物理参考排放。计算公式氢耗标准2.0 kg/100km× 碳因子,支持依据车辆型号差异进行高精度动态配置。'
},
{
labelCn: '核证确权状态',
labelEn: 'TRACE STATUS',
value: '核定完成 / 预备上链',
formula: 'Chain_State = "Ready_For_Ledger"',
tooltip: '当前已由OneOS平台引擎完成设备端高可信原始核算、哈希闭环与存证落底配有标准化区块链对外接口支持对公信减排平台的无缝扩展对接。'
},
].map((m, i) => (
<div key={i} className="relative group/indicator bg-neutral-900/60 p-2.5 rounded border border-neutral-900/40 flex flex-col justify-center text-left cursor-help hover:bg-neutral-900/90 hover:border-[#00F2FF]/40 transition-all duration-200">
<span className="text-[11px] font-bold text-neutral-300 tracking-wide flex items-center gap-1 select-none">
{m.labelCn}
<span className="text-[8px] text-neutral-500 font-mono"></span>
</span>
<span className="text-[8px] font-mono text-neutral-500 uppercase tracking-wider mt-0.5">{m.labelEn}</span>
<span className="text-xs font-mono font-extrabold text-[#00F2FF] mt-1">{m.value}</span>
{/* Interactive Tooltip Card */}
<div className="absolute bottom-[105%] left-1/2 -translate-x-1/2 w-64 p-3 bg-neutral-950 border border-neutral-800 rounded-lg shadow-2xl opacity-0 pointer-events-none group-hover/indicator:opacity-100 group-hover/indicator:pointer-events-auto transition-all duration-300 z-50 text-[10px] text-neutral-300 space-y-2 leading-normal">
<div className="flex items-center justify-between border-b border-neutral-800 pb-1.5 font-sans font-bold text-white text-[11px]">
<span>{m.labelCn} · </span>
<span className="text-[8px] font-mono text-neutral-500">{m.labelEn}</span>
</div>
<div>
<span className="text-[9px] font-mono font-bold text-emerald-400 block pb-0.5">/</span>
<code className="block bg-neutral-950 p-1.5 rounded font-mono text-[9px] text-[#00F2FF] break-all border border-neutral-900">{m.formula}</code>
</div>
<div>
<span className="text-[9px] font-sans font-bold text-neutral-400 block pb-0.5"></span>
<p className="text-neutral-400 text-[10px] leading-relaxed font-sans">{m.tooltip}</p>
</div>
{/* Triangle Arrow */}
<div className="absolute top-full left-1/2 -translate-x-1/2 -mt-[1px] w-0 h-0 border-x-4 border-x-transparent border-t-4 border-t-neutral-950" />
<div className="absolute top-full left-1/2 -translate-x-1/2 w-0 h-0 border-x-[5px] border-x-transparent border-t-[5px] border-t-neutral-800 -z-10" />
</div>
</div>
))}
</div>
</div>
{/* Scenario 02 */}
<div className="bg-[#090909]/95 border border-neutral-800/80 rounded-xl flex flex-col justify-between hover:border-amber-400/40 transition-all group shadow-2xl relative">
<div>
{/* Visual card header image */}
<div className="w-full h-[150px] relative overflow-hidden bg-neutral-900 border-b border-neutral-900 rounded-t-xl">
<img
src={scenarioStationImage}
alt="Station Refueling Dispatch Scenario"
className="w-full h-full object-cover opacity-85 group-hover:scale-105 transition-transform duration-500"
referrerPolicy="no-referrer"
/>
<div className="absolute inset-0 bg-gradient-to-t from-black via-black/30 to-transparent pointer-events-none" />
<div className="absolute bottom-3 left-4 flex flex-col">
<span className="text-[10px] font-mono text-amber-400 uppercase tracking-widest font-bold">SCENARIO 02 / HYDROGEN DISPATCH</span>
<span className="text-sm font-extrabold text-white mt-0.5"></span>
</div>
</div>
{/* Card Content */}
<div className="p-5 space-y-4">
<div className="space-y-2">
<div className="flex items-center gap-2 text-[12px] font-bold text-neutral-300">
<Cpu size={13} className="text-[#00F2FF]" />
<span>LNBox </span>
</div>
<p className="text-xs text-neutral-400 bg-neutral-950 p-3 rounded border border-neutral-900 leading-relaxed">
SOC量
<span className="text-white font-mono font-medium">2.4 MPa</span>
<span className="text-white font-mono font-medium">168 km</span>
</p>
</div>
<div className="space-y-2">
<div className="flex items-center gap-2 text-[12px] font-bold text-amber-400">
<Workflow size={13} />
<span>OneOS AI </span>
</div>
<p className="text-xs text-neutral-400 bg-neutral-950 p-3 rounded border border-neutral-900 leading-relaxed text-left">
<span className="text-amber-400 font-mono font-bold">S2 </span>
<span className="text-amber-400 font-mono font-bold">13km/20</span>
<span className="text-amber-400 font-mono font-bold">P2 ()</span>
线
</p>
</div>
</div>
</div>
{/* Indicators Table */}
<div className="p-4 bg-neutral-950/80 border-t border-neutral-900 grid grid-cols-2 gap-2.5 shrink-0 rounded-b-xl">
{[
{
labelCn: '当前剩余续航',
labelEn: 'RANGE REMAIN',
value: '168 km',
formula: 'R_remain = 残余氢量(kg) × 额定整车氢效比例',
tooltip: '利用储氢瓶残压传感器采集的可用低气压如当前2.4 MPa计算折损率并得出可用氢燃料质量乘以车载电池综合动力效率给出保守的剩余安全续航公里数。'
},
{
labelCn: '预计到达时效',
labelEn: 'STATION EST.',
value: '13km / 20 min',
formula: 'ETA = f(高精度图层拓扑, 城区车辆时速因子)',
tooltip: '将实时GPS坐标和地图路径分析绑定。计算公式预计到达时间 = 高德物理路径至S2加氢站距离 (13 km) / 结合实时城区拥堵和红绿灯预测的平均速度测定为20分钟。'
},
{
labelCn: '调度建议站点',
labelEn: 'STATION ADVICE',
value: 'Station S2',
formula: 'S_score = f(预计等候时间, 加氢价格, 里程氢耗)',
tooltip: '云端多指标评估打分。对比本网络内的加氢站负荷S2站当前队列少等候约6分钟加氢机负荷利用率好、运氢损耗低加权算出综合推荐指数最高。'
},
{
labelCn: '动态调度等级',
labelEn: 'DISPATCH PRI',
value: 'P2 High / 高',
formula: 'Priority = (R_remain < 150 km且气压极低 ? P2 : P4)',
tooltip: '安全等级触发阀值器。由于氢气瓶残压极低、在保供城配干线段可能发生抛锚,云端算法自动将任务补能调优级提升至 P2 (高级),以自动调度资源保障车辆补能。'
},
].map((m, i) => (
<div key={i} className="relative group/indicator bg-neutral-900/60 p-2.5 rounded border border-neutral-900/40 flex flex-col justify-center text-left cursor-help hover:bg-neutral-900/90 hover:border-amber-400/40 transition-all duration-200">
<span className="text-[11px] font-bold text-neutral-300 tracking-wide flex items-center gap-1 select-none">
{m.labelCn}
<span className="text-[8px] text-neutral-500 font-mono"></span>
</span>
<span className="text-[8px] font-mono text-neutral-500 uppercase tracking-wider mt-0.5">{m.labelEn}</span>
<span className="text-xs font-mono font-extrabold text-amber-400 mt-1">{m.value}</span>
{/* Interactive Tooltip Card */}
<div className="absolute bottom-[105%] left-1/2 -translate-x-1/2 w-64 p-3 bg-neutral-950 border border-neutral-800 rounded-lg shadow-2xl opacity-0 pointer-events-none group-hover/indicator:opacity-100 group-hover/indicator:pointer-events-auto transition-all duration-300 z-50 text-[10px] text-neutral-300 space-y-2 leading-normal">
<div className="flex items-center justify-between border-b border-neutral-800 pb-1.5 font-sans font-bold text-white text-[11px]">
<span>{m.labelCn} · </span>
<span className="text-[8px] font-mono text-neutral-500">{m.labelEn}</span>
</div>
<div>
<span className="text-[9px] font-mono font-bold text-emerald-400 block pb-0.5">/</span>
<code className="block bg-neutral-950 p-1.5 rounded font-mono text-[9px] text-amber-400 break-all border border-neutral-900">{m.formula}</code>
</div>
<div>
<span className="text-[9px] font-sans font-bold text-neutral-400 block pb-0.5"></span>
<p className="text-neutral-400 text-[10px] leading-relaxed font-sans">{m.tooltip}</p>
</div>
{/* Triangle Arrow */}
<div className="absolute top-full left-1/2 -translate-x-1/2 -mt-[1px] w-0 h-0 border-x-4 border-x-transparent border-t-4 border-t-neutral-950" />
<div className="absolute top-full left-1/2 -translate-x-1/2 w-0 h-0 border-x-[5px] border-x-transparent border-t-[5px] border-t-neutral-800 -z-10" />
</div>
</div>
))}
</div>
</div>
{/* Scenario 03 */}
<div className="bg-[#090909]/95 border border-neutral-800/80 rounded-xl flex flex-col justify-between hover:border-red-400/40 transition-all group shadow-2xl relative">
<div>
{/* Visual card header image */}
<div className="w-full h-[150px] relative overflow-hidden bg-neutral-900 border-b border-neutral-900 rounded-t-xl">
<img
src={scenarioDatacenterImage}
alt="Carbon Ledger Scenario"
className="w-full h-full object-cover opacity-85 group-hover:scale-105 transition-transform duration-500"
referrerPolicy="no-referrer"
/>
<div className="absolute inset-0 bg-gradient-to-t from-black via-black/30 to-transparent pointer-events-none" />
<div className="absolute bottom-3 left-4 flex flex-col">
<span className="text-[10px] font-mono text-red-400 tracking-widest font-bold">SCENARIO 03 / ESG TRUST</span>
<span className="text-sm font-extrabold text-white mt-0.5"></span>
</div>
</div>
{/* Card Content */}
<div className="p-5 space-y-4">
<div className="space-y-2">
<div className="flex items-center gap-2 text-[12px] font-bold text-neutral-300">
<Cpu size={13} className="text-[#00F2FF]" />
<span>LNBox </span>
</div>
<p className="text-xs text-neutral-400 bg-neutral-950 p-3 rounded border border-neutral-900 leading-relaxed">
Box ID ID
</p>
</div>
<div className="space-y-2">
<div className="flex items-center gap-2 text-[12px] font-bold text-red-400">
<Workflow size={13} />
<span>OneOS AI </span>
</div>
<p className="text-xs text-neutral-400 bg-neutral-950 p-3 rounded border border-neutral-900 leading-relaxed">
绿 <span className="text-red-400 font-mono font-bold">Ledger-0602-001</span>
ESG
</p>
</div>
</div>
</div>
{/* Indicators Table */}
<div className="p-4 bg-neutral-950/80 border-t border-neutral-900 grid grid-cols-2 gap-2.5 shrink-0 rounded-b-xl">
{[
{
labelCn: 'ESG信披凭证',
labelEn: 'ESG REPORT',
value: 'Ledger-001',
formula: 'Serial_No = ID_Ledger(0602-001)',
tooltip: '根据国际ISSB及TCFD框架自动对应、生成的ESG碳权信披台账审计流水号对应并锁定了当前可信行驶里程对应的减碳额可直接由上市公司一键导出绿氢碳汇专报落款同步备案。'
},
{
labelCn: '可信存证护盾',
labelEn: 'PROOF SHIELD',
value: 'Ready',
formula: 'HSM_State = Sec_Level(FIPS_140_2)',
tooltip: '安全存证守护状态。LNBox 硬件网关内置硬件安全包采用FIPS美国联邦信息安全标准级别的加密校验。Ready 代表设备完好、未检测到任何物理破坏及GPS欺骗模拟数据绝对纯真。'
},
{
labelCn: '大模型核算模型',
labelEn: 'FACTOR MODEL',
value: 'AI-Model-H2',
formula: 'E_h2 = Graph_Neural_Inference_Core',
tooltip: 'OneOS 绿氢智能碳账户专属计算大模型算法AI-Model-H2能根据车载冷链箱温、车辆荷载、车载极化曲线衰耗模型和实时环境气温对基准损耗做出多环拟合极大地提高了碳核证的权威严谨性。'
},
{
labelCn: '绿氢核证状态',
labelEn: 'TRACE STATUS',
value: '核定完成 / 预备存证',
formula: 'Audit_Status = Core_Certified',
tooltip: 'OneOS 平台对车端里程、能耗数据完成了高可信原始核算与智能签名闭环符合国际ESG公信框架支持零改动弹性平移至多方碳普惠联盟。'
},
].map((m, i) => (
<div key={i} className="relative group/indicator bg-neutral-900/60 p-2.5 rounded border border-neutral-900/40 flex flex-col justify-center text-left cursor-help hover:bg-neutral-900/90 hover:border-red-400/40 transition-all duration-200">
<span className="text-[11px] font-bold text-neutral-300 tracking-wide flex items-center gap-1 select-none">
{m.labelCn}
<span className="text-[8px] text-neutral-500 font-mono"></span>
</span>
<span className="text-[8px] font-mono text-neutral-500 uppercase tracking-wider mt-0.5">{m.labelEn}</span>
<span className="text-xs font-mono font-extrabold text-red-400 mt-1">{m.value}</span>
{/* Interactive Tooltip Card */}
<div className="absolute bottom-[105%] left-1/2 -translate-x-1/2 w-64 p-3 bg-neutral-950 border border-neutral-800 rounded-lg shadow-2xl opacity-0 pointer-events-none group-hover/indicator:opacity-100 group-hover/indicator:pointer-events-auto transition-all duration-300 z-50 text-[10px] text-neutral-300 space-y-2 leading-normal">
<div className="flex items-center justify-between border-b border-neutral-800 pb-1.5 font-sans font-bold text-white text-[11px]">
<span>{m.labelCn} · </span>
<span className="text-[8px] font-mono text-neutral-500">{m.labelEn}</span>
</div>
<div>
<span className="text-[9px] font-mono font-bold text-emerald-400 block pb-0.5">/</span>
<code className="block bg-neutral-950 p-1.5 rounded font-mono text-[9px] text-red-400 break-all border border-neutral-900">{m.formula}</code>
</div>
<div>
<span className="text-[9px] font-sans font-bold text-neutral-400 block pb-0.5"></span>
<p className="text-neutral-400 text-[10px] leading-relaxed font-sans">{m.tooltip}</p>
</div>
{/* Triangle Arrow */}
<div className="absolute top-full left-1/2 -translate-x-1/2 -mt-[1px] w-0 h-0 border-x-4 border-x-transparent border-t-4 border-t-neutral-950" />
<div className="absolute top-full left-1/2 -translate-x-1/2 w-0 h-0 border-x-[5px] border-x-transparent border-t-[5px] border-t-neutral-800 -z-10" />
</div>
</div>
))}
</div>
</div>
</div>
{/* Linear Flowchart Diagram */}
<div className="w-full max-w-[1780px] bg-[#070707] border border-neutral-800 rounded-xl relative overflow-hidden py-6 px-6 shrink-0 mt-5 shadow-inner">
<div className="absolute top-0 left-0 w-full h-[1px] bg-gradient-to-r from-transparent via-[#00F2FF]/20 to-transparent" />
<div className="text-center md:text-left mb-6">
<span className="text-[9px] font-mono tracking-[0.2em] text-[#00F2FF] uppercase font-bold">End-to-End Pipeline</span>
<h3 className="text-sm font-bold text-white tracking-wider mt-1">绿</h3>
</div>
<div className="grid grid-cols-1 md:grid-cols-5 gap-4 items-stretch relative">
{[
{ step: '01', title: '车端物理数据采集', desc: 'LNBox 实时高可信采集车辆里程、轨迹、瓶温、瓶压、路线。' },
{ step: '02', title: '可信网关边缘处理', desc: '边缘层防篡改锁定,加入可信哈希并双安全通道上云。' },
{ step: '03', title: 'AI大模型融合核算', desc: '结合能耗曲线,排除环境异常,精准对齐国际车型因子。' },
{ step: '04', title: '碳资产认证与存证', desc: '核算双碳替代量并生成可信存证自动录入ESG系统。' },
{ step: '05', title: '数据智能闭环决策', desc: '输出车辆余氢续航预测、加氢站低成本补能路线推荐,完成闭环。' }
].map((step, idx) => (
<div key={idx} className="flex flex-col justify-between p-3.5 bg-neutral-950 rounded border border-neutral-900/60 relative group hover:border-[#00F2FF]/30 transition-all">
<div>
<div className="flex items-center justify-between border-b border-neutral-900 pb-2">
<span className="text-[11px] font-mono text-[#00F2FF] font-bold">STEP {step.step}</span>
<span className="text-[8px] font-mono text-neutral-600 font-bold uppercase">SECURED</span>
</div>
<h4 className="text-[12px] font-bold text-neutral-200 mt-2.5">{step.title}</h4>
<p className="text-[11px] text-neutral-500 mt-1.5 leading-relaxed">{step.desc}</p>
</div>
{/* Connection Chevron for Desktop (don't show on last item) */}
{idx < 4 && (
<div className="hidden md:flex absolute top-1/2 -right-3 transform -translate-y-1/2 z-20 text-[#00F2FF] animate-pulse">
<ChevronRight size={14} />
</div>
)}
</div>
))}
</div>
</div>
{/* Carbon Factors & Methodology Database */}
<div className="w-full max-w-[1780px] bg-[#070707] border border-neutral-800 rounded-xl relative overflow-hidden p-6 shrink-0 mt-5 shadow-2xl text-left">
<div className="absolute top-0 left-0 w-full h-[1px] bg-gradient-to-r from-transparent via-[#00F2FF]/30 to-transparent" />
{/* Header of the console */}
<div className="flex flex-col lg:flex-row items-start lg:items-center justify-between gap-4 border-b border-neutral-900 pb-5 mb-5">
<div className="space-y-1">
<div className="flex items-center gap-2">
<span className="w-1.5 h-1.5 rounded-full bg-emerald-400 animate-pulse" />
<span className="text-[10px] font-mono tracking-[0.2em] text-emerald-400 uppercase font-bold">LOCAL ACCOUNTING MATRIX</span>
</div>
<h3 className="text-sm font-extrabold text-white tracking-wider">OneOS </h3>
<p className="text-[11px] text-neutral-500 font-sans leading-relaxed">
</p>
</div>
{/* Selector Buttons */}
<div className="flex gap-2 bg-neutral-950 p-[3px] border border-neutral-900 rounded select-none">
<button
onClick={() => setDbTab('factors')}
className={`px-3 py-1.5 rounded text-[11px] font-bold tracking-wider transition-all duration-200 ${dbTab === 'factors' ? 'bg-[#111] text-[#00F2FF] border border-neutral-800/60 shadow' : 'text-neutral-500 hover:text-neutral-300'}`}
>
</button>
<button
onClick={() => setDbTab('methodologies')}
className={`px-3 py-1.5 rounded text-[11px] font-bold tracking-wider transition-all duration-200 ${dbTab === 'methodologies' ? 'bg-[#111] text-[#00F2FF] border border-neutral-800/60 shadow' : 'text-neutral-500 hover:text-neutral-300'}`}
>
</button>
</div>
</div>
{dbTab === 'factors' ? (
<div className="space-y-4">
{/* Database Table Info Banner */}
<div className="bg-[#0b0c0d] border border-neutral-800 rounded p-3.5 text-[11px] text-neutral-300 flex items-start gap-3 leading-relaxed font-sans">
<span className="text-[#00F2FF] text-xs mt-0.5"></span>
<div>
<strong className="text-neutral-200 font-bold block pb-1"></strong>
广
</div>
</div>
{/* Factor Table */}
<div className="overflow-x-auto border border-neutral-900 rounded-lg bg-neutral-950/40">
<table className="w-full text-left border-collapse text-[12px] font-sans">
<thead>
<tr className="border-b border-neutral-900 bg-neutral-950/80 text-neutral-400 font-bold">
<th className="p-3">/</th>
<th className="p-3"></th>
<th className="p-3"></th>
<th className="p-3"></th>
<th className="p-3"></th>
<th className="p-3 text-right">/</th>
<th className="p-3 text-right"></th>
</tr>
</thead>
<tbody className="divide-y divide-neutral-900/60 font-mono text-neutral-300">
{[
{ city: '浙江省嘉兴市', type: '公路货运', fuel: '柴油 (基准替换车)', model: '4.5吨轻型货车', formula: '可信里程(Km) × 0.3000', em: '30.00 kgCO2/100km', status: '参考对比基准' },
{ city: '浙江省嘉兴市', type: '公路货运', fuel: '柴油 (基准替换车)', model: '18吨中型货车', formula: '可信里程(Km) × 0.7000', em: '70.00 kgCO2/100km', status: '参考对比基准' },
{ city: '浙江省嘉兴市', type: '公路货运', fuel: '柴油 (基准替换车)', model: '49吨重卡牵引', formula: '可信里程(Km) × 1.0000', em: '100.00 kgCO2/100km', status: '参考对比基准' },
{ city: '浙江省嘉兴市', type: '氢能城配 (车端)', fuel: '氢气 (OneOS 场景)', model: '4.5吨轻型冷链车', formula: '消耗氢气量(kg) × 3.0927', em: '6.1854 kgCO2/100km', status: '本地已核证 (待上链)' },
{ city: '浙江省嘉兴市', type: '氢能货运 (车端)', fuel: '氢气 (OneOS 场景)', model: '18吨厢式货车', formula: '消耗氢气量(kg) × 3.0927', em: '17.0098 kgCO2/100km', status: '本地已核证 (待上链)' },
{ city: '浙江省嘉兴市', type: '氢能重卡 (车端)', fuel: '氢气 (OneOS 场景)', model: '49吨牵引车辆', formula: '消耗氢气量(kg) × 3.0927', em: '30.9270 kgCO2/100km', status: '本地已核证 (待上链)' },
{ city: '北京市', type: '公路货运', fuel: '柴油 (基准替换车)', model: '4.5吨货车', formula: '可信里程(Km) × 0.3240', em: '32.40 kgCO2/100km', status: '参考对比基准' },
{ city: '北京市', type: '氢能储配 (车端)', fuel: '氢气 (OneOS 场景)', model: '4.5吨轻型冷链车', formula: '消耗氢气量(kg) × 3.0927', em: '6.6610 kgCO2/100km', status: '本地已核证 (待上链)' },
].map((row, i) => (
<tr key={i} className="hover:bg-neutral-900/40 transition-colors">
<td className="p-3 font-sans font-medium text-neutral-300">{row.city}</td>
<td className="p-3 font-sans text-neutral-400">{row.type}</td>
<td className={`p-3 font-sans text-[12px] font-bold ${row.fuel.includes('氢气') ? 'text-emerald-400' : 'text-amber-500/80'}`}>{row.fuel}</td>
<td className="p-3 text-neutral-300 font-sans">{row.model}</td>
<td className="p-3 text-neutral-400 text-[11px] break-all max-w-[280px]">
<code className="bg-neutral-950/80 px-1.5 py-1 rounded text-neutral-200 border border-neutral-900/50">{row.formula}</code>
</td>
<td className="p-3 text-right font-bold text-[#00F2FF]">{row.em}</td>
<td className="p-3 text-right font-sans">
<span className={`px-2 py-1 rounded text-[9px] font-bold ${row.status.includes('核证') ? 'bg-emerald-950/30 text-emerald-400 border border-emerald-900/30' : 'bg-neutral-900 text-neutral-500'}`}>
{row.status}
</span>
</td>
</tr>
))}
</tbody>
</table>
</div>
</div>
) : (
<div className="space-y-4">
{/* Database Table Info Banner */}
<div className="bg-[#0b0c0d] border border-neutral-800 rounded p-3.5 text-[11px] text-neutral-400 flex items-start gap-3 leading-relaxed font-sans">
<span className="text-[#00F2FF] text-xs mt-0.5"></span>
<div>
<strong className="text-white font-bold block pb-1"></strong>
OneOS
</div>
</div>
{/* Methodology Table */}
<div className="overflow-x-auto border border-neutral-900 rounded-lg bg-neutral-950/40 font-mono">
<table className="w-full text-left border-collapse text-[12px] font-sans">
<thead>
<tr className="border-b border-neutral-900 bg-neutral-950/80 text-neutral-400 font-bold font-sans">
<th className="p-3"></th>
<th className="p-3">/</th>
<th className="p-3">/</th>
<th className="p-3"></th>
<th className="p-3">/</th>
<th className="p-3 text-right">OneOS </th>
</tr>
</thead>
<tbody className="divide-y divide-neutral-900/60 font-mono text-neutral-300">
{[
{ region: '浙江省嘉兴市', name: '《氢燃料电池货车碳减排项目方法学》(JXPHCER-03-004-V01)', org: '嘉兴市生态环境局', date: '2025-05-19', scope: '4.5吨轻冷链, 18吨厢式中货卡, 49吨牵引卡车', calc: '绿氢替代碳系数核减算法' },
{ region: '北京市', name: '《北京市碳普惠方法学 氢燃料电池汽车(试行)》', org: '北京市生态环境局', date: '2025-07-03', scope: '货运车辆, 重型物流卡车, 4.5T厢式冷链车', calc: '北京温室二氧化碳基准减法' },
{ region: '广东省广州市', name: '《广州市氢燃料电池汽车行驶碳普惠方法学(2024试行版)》', org: '广州市生态环境局', date: '2024-11-20', scope: '冷链城配载客载货车, 环卫作业车辆', calc: '广州绿色行驶替代系数核定' },
].map((row, i) => (
<tr key={i} className="hover:bg-neutral-900/40 transition-colors">
<td className="p-3 font-sans font-medium text-neutral-300">{row.region}</td>
<td className="p-3 font-sans text-neutral-200 font-bold leading-normal max-w-[280px] text-[11px]">{row.name}</td>
<td className="p-3 font-sans text-neutral-400">{row.org}</td>
<td className="p-3 text-neutral-400">{row.date}</td>
<td className="p-3 text-neutral-400 font-sans">{row.scope}</td>
<td className="p-3 text-right font-bold text-emerald-400 font-sans">{row.calc}</td>
</tr>
))}
</tbody>
</table>
</div>
</div>
)}
</div>
</motion.div>
)}
</AnimatePresence>
</main>
{/* 3. Global Dashboard Footer Accent */}
<footer className="w-full bg-[#050505] border-t border-neutral-900 relative flex-shrink-0 z-30">
<div className="absolute top-0 left-0 right-0 h-0.5 overflow-hidden">
<div className="absolute inset-0 bg-[#00F2FF] opacity-10 animate-pulse" />
<div className={`absolute left-0 top-0 h-full w-[45%] bg-gradient-to-r ${activeTheme.gradient} shadow-[0_0_15px_${activeTheme.accent}]`} />
</div>
<div className="py-5 px-6 md:px-12 flex flex-col md:flex-row items-center justify-between gap-4">
<span className="text-[10px] tracking-[0.25em] text-neutral-600 font-mono uppercase text-center md:text-left">
© 2026 OneOSS. ALL INDUSTRIAL TELEMETRY AND FACTOR ASSURANCE SYSTEMS REGISTERED.
</span>
<div className="flex items-center gap-6 text-[9px] font-mono text-neutral-500 uppercase tracking-[0.15em]">
<span>Secured Node ID: OOSS-LNBOX-999-ACTIVE</span>
<span className="hidden md:inline"></span>
<span>Link Strength: 100% SECURE</span>
</div>
</div>
</footer>
</div>
);
}