asdf
This commit is contained in:
1 parent
6b49f859e7
commit
bf27642bf6
8 files changed
+184
-151
No files matched your search
Binary file not shown.
|
Before Width: | Height: | Size: 328 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 219 KiB |
@@ -1,7 +1,7 @@
|
||||
---
|
||||
import { Picture } from 'astro:assets';
|
||||
import MethodDiagram from './MethodDiagram.astro';
|
||||
import engineer from '../../assets/images/engineer-glass.jpg';
|
||||
import monitoringRoom from '../../assets/images/monitoring-room-glass.jpg';
|
||||
import { localePath, t, type Lang } from '../../i18n/ui';
|
||||
interface Props { lang: Lang }
|
||||
const { lang } = Astro.props;
|
||||
@@ -9,7 +9,7 @@ const ui = t(lang);
|
||||
---
|
||||
<section class="night method" id="capabilities" aria-labelledby="method-title">
|
||||
<Picture
|
||||
src={engineer}
|
||||
src={monitoringRoom}
|
||||
alt={ui.method.imageAlt}
|
||||
formats={['avif']}
|
||||
fallbackFormat="webp"
|
||||
|
||||
@@ -100,7 +100,7 @@ const ridges = Array.from({ length: rows }, (_, r) => {
|
||||
{s.status.rows.map((r) => (
|
||||
<div class="readout__cell">
|
||||
<dt>{r.key}</dt>
|
||||
<dd>{'live' in r && r.live && <span class="readout__live" aria-hidden="true" />}{r.value}</dd>
|
||||
<dd>{r.value}</dd>
|
||||
</div>
|
||||
))}
|
||||
</dl>
|
||||
@@ -236,24 +236,6 @@ const ridges = Array.from({ length: rows }, (_, r) => {
|
||||
}
|
||||
.readout__cell + .readout__cell { border-top: var(--hairline) solid var(--line-on-night); }
|
||||
.readout__cell--head, .readout dt { color: var(--ink-muted); }
|
||||
.readout dd { display: flex; align-items: center; gap: var(--space-2); }
|
||||
.readout__live { position: relative; width: 0.5rem; height: 0.5rem; border-radius: 50%; background: var(--signal); flex: none; }
|
||||
/* The live phase pulses: a ring in the signal tone grows out of the dot and fades. */
|
||||
.readout__live::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
border-radius: 50%;
|
||||
background: var(--signal);
|
||||
animation: readout-pulse calc(6 * var(--dur-slow)) var(--ease) infinite;
|
||||
}
|
||||
@keyframes readout-pulse {
|
||||
from { transform: scale(1); opacity: 0.7; }
|
||||
70%, to { transform: scale(3); opacity: 0; }
|
||||
}
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.readout__live::after { animation: none; opacity: 0; }
|
||||
}
|
||||
|
||||
@media (max-width: 30rem) {
|
||||
.signup { padding: var(--space-5); }
|
||||
|
||||
+4
-4
@@ -60,7 +60,7 @@ const en = {
|
||||
method: {
|
||||
lines: ['Four stages.', 'One method.'],
|
||||
body: 'Threat analysis, engineering, verification and monitoring, applied to your software as one continuous method rather than four separate projects. It runs alongside your development, modular and integrable.',
|
||||
imageAlt: 'A security engineer seen through glass, the reflections of monitoring screens layered across her face.',
|
||||
imageAlt: 'An empty monitoring room seen through glass, walls of screens and indicator lights blurred behind the panes.',
|
||||
cta: 'Explore CipherVerifier',
|
||||
diagramTitle: 'The CipherCell method',
|
||||
diagramDesc: 'A closed loop of four stages: threat analysis, engineering, verification and monitoring. Each stage carries its own instruments: threat model, attack paths and CI/CD integration; zero trust, key management and secure APIs; independent review, hardening and testing; intrusion detection, security logging and resilience checks. Monitoring feeds back into threat analysis.',
|
||||
@@ -252,7 +252,7 @@ const en = {
|
||||
status: {
|
||||
label: 'System status',
|
||||
rows: [
|
||||
{ key: 'Phase', value: 'Closed demonstrator', live: true },
|
||||
{ key: 'Phase', value: 'Closed demonstrator' },
|
||||
{ key: 'Next', value: 'Alpha release' },
|
||||
{ key: 'Focus', value: 'Software security' },
|
||||
],
|
||||
@@ -401,7 +401,7 @@ const de: typeof en = {
|
||||
method: {
|
||||
lines: ['Vier Stufen.', 'Eine Methode.'],
|
||||
body: 'Bedrohungsanalyse, Engineering, Verifikation und Monitoring, auf Ihre Software angewandt als eine durchgehende Methode statt vier getrennter Projekte. Sie läuft neben Ihrer Entwicklung, modular und integrierbar.',
|
||||
imageAlt: 'Eine Sicherheitsingenieurin hinter Glas, die Spiegelungen von Monitoring-Bildschirmen liegen über ihrem Gesicht.',
|
||||
imageAlt: 'Ein leerer Monitoring-Raum hinter Glas, Bildschirmwände und Statuslichter verschwimmen hinter den Scheiben.',
|
||||
cta: 'CipherVerifier ansehen',
|
||||
diagramTitle: 'Die CipherCell-Methode',
|
||||
diagramDesc: 'Ein geschlossener Kreislauf aus vier Stufen: Bedrohungsanalyse, Engineering, Verifikation und Monitoring. Jede Stufe hat ihre Instrumente: Bedrohungsmodell, Angriffspfade und CI/CD-Integration; Zero Trust, Schlüsselmanagement und sichere APIs; unabhängige Prüfung, Härtung und Tests; Angriffserkennung, Security-Logging und Resilienzprüfung. Das Monitoring fließt zurück in die Bedrohungsanalyse.',
|
||||
@@ -593,7 +593,7 @@ const de: typeof en = {
|
||||
status: {
|
||||
label: 'Systemstatus',
|
||||
rows: [
|
||||
{ key: 'Phase', value: 'Geschlossener Demonstrator', live: true },
|
||||
{ key: 'Phase', value: 'Geschlossener Demonstrator' },
|
||||
{ key: 'Als Nächstes', value: 'Alpha-Release' },
|
||||
{ key: 'Fokus', value: 'Software sicherheit' },
|
||||
],
|
||||
|
||||
@@ -19,7 +19,7 @@ const ui = t(lang);
|
||||
<Hero lang={lang} />
|
||||
<Manifesto lang={lang} />
|
||||
<Method lang={lang} />
|
||||
<Stages lang={lang} />
|
||||
<!-- <Stages lang={lang} /> -->
|
||||
<Sectors lang={lang} />
|
||||
<Partners lang={lang} />
|
||||
<Quote lang={lang} />
|
||||
|
||||
Reference in new issue
Block a user