This commit is contained in:
Felix Klement committed 2026-10-09 09:28:44 +02:00
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

+2 -2
View File
@@ -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"
+1 -19
View File
@@ -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
View File
@@ -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' },
],
+1 -1
View File
@@ -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} />