Files
sonith-website/css/style.css
T
techadmin 4b95cd1c58 fix: Cluster größer + Hover-Ring an Außenknoten (v1.6.1)
- Hint-Text „Knoten klicken — direkt zur Leistung" entfernt
- Cluster ~25 % vergroessert (viewBox 880x690 statt 700x550, alle
  Koordinaten und Radien proportional skaliert; node-Radien 30/18 statt
  24/14, ring r 55 statt 44)
- Neuer .hover-ring pro Aussenknoten: initial unsichtbar, wird beim Hover
  oder Tastatur-Focus sichtbar und pulsiert exakt wie der Center-Ring
  (scale 1.0 → 1.35, stroke-opacity 0.7 → 0.15, 1.6s ease-in-out)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 00:24:34 +02:00

352 lines
8.6 KiB
CSS

/* ============================================================
sonith.de — Custom Styles
CI-konform: Logo-Gelb #DEDC1E, Petrol #067391, CI-Grau #848687/#C8C9CA
Hintergrund: petrol-getoentes Dunkel #0a1f28 / #102b38
============================================================ */
/* Smooth scrolling offset for fixed nav */
html {
scroll-padding-top: 5rem;
}
/* ---- Navbar ---- */
#navbar {
background: rgba(10, 31, 40, 0.8);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
}
#navbar.scrolled {
background: rgba(10, 31, 40, 0.95);
box-shadow: 0 1px 0 rgba(6, 115, 145, 0.2);
}
/* Header schrumpft beim Scrollen: gross & einladend oben, kompakt waehrend des Lesens */
.nav-row {
height: 6rem;
transition: height 0.3s ease;
}
.nav-logo {
height: 3.5rem;
transition: height 0.3s ease;
}
@media (min-width: 1024px) {
.nav-row { height: 7rem; }
.nav-logo { height: 4.5rem; }
}
#navbar.scrolled .nav-row { height: 4rem; }
#navbar.scrolled .nav-logo { height: 2.25rem; }
@media (min-width: 1024px) {
#navbar.scrolled .nav-row { height: 5rem; }
#navbar.scrolled .nav-logo { height: 2.5rem; }
}
/* Active nav link */
.nav-link.active {
color: #DEDC1E;
}
/* ---- Fade-in Animation ---- */
.fade-in {
opacity: 0;
transform: translateY(24px);
transition: opacity 0.6s ease-out, transform 0.6s ease-out;
}
.fade-in.visible {
opacity: 1;
transform: translateY(0);
}
/* Staggered children */
.fade-in:nth-child(2) { transition-delay: 0.1s; }
.fade-in:nth-child(3) { transition-delay: 0.2s; }
.fade-in:nth-child(4) { transition-delay: 0.3s; }
/* ---- Service Cards ---- */
.service-card {
opacity: 0;
transform: translateY(24px);
transition: opacity 0.5s ease-out, transform 0.5s ease-out,
border-color 0.3s, box-shadow 0.3s;
}
.service-card.visible {
opacity: 1;
transform: translateY(0);
}
.service-card:nth-child(1) { transition-delay: 0.0s; }
.service-card:nth-child(2) { transition-delay: 0.08s; }
.service-card:nth-child(3) { transition-delay: 0.16s; }
.service-card:nth-child(4) { transition-delay: 0.24s; }
.service-card:nth-child(5) { transition-delay: 0.32s; }
.service-card:nth-child(6) { transition-delay: 0.40s; }
.service-card:hover {
box-shadow: 0 0 24px rgba(222, 220, 30, 0.08),
0 0 48px rgba(6, 115, 145, 0.06);
}
/* ---- Hero-Grid (Goldener Schnitt) ---- */
.hero-grid {
display: grid;
grid-template-columns: 1fr;
gap: 3rem;
align-items: center;
}
@media (min-width: 1024px) {
.hero-grid {
grid-template-columns: 1.618fr 1fr; /* Goldener Schnitt: Content : Cluster */
gap: 4rem;
}
}
/* Cluster-Wrapper: auf Mobile ausgeblendet (Knoten sind Touch-empfindlich,
das gehoert in eine ruhige Desktop-Praesentation; Mobile-User nutzen das Menue). */
.cluster-wrapper { display: none; }
@media (min-width: 1024px) {
.cluster-wrapper { display: block; }
}
/* ---- Hero-Cluster: Sonith-Logo-Stern als interaktiver Service-Picker ----
Greift das exakte Logo-Motiv auf — zentraler Knoten mit pulsierendem Ring +
5 strahlenfoermige Linien zu Aussenknoten in der originalen Logo-Anordnung
(asymmetrisch nach rechts verlaengert). Jeder Knoten ist Anker-Link. */
.hero-cluster {
overflow: visible;
filter: drop-shadow(0 0 60px rgba(6, 115, 145, 0.18));
}
.logo-cluster line {
stroke: #067391;
stroke-width: 2;
stroke-linecap: round;
stroke-opacity: 0.55;
fill: none;
stroke-dasharray: 6 10;
animation: line-flow 8s linear infinite;
}
@keyframes line-flow {
to { stroke-dashoffset: -48; }
}
.cluster-ring {
fill: none;
stroke: #DEDC1E;
stroke-width: 1.8;
stroke-opacity: 0.6;
transform-box: fill-box;
transform-origin: center;
animation: ring-pulse 4s ease-in-out infinite;
}
@keyframes ring-pulse {
0%, 100% { transform: scale(1); stroke-opacity: 0.6; }
50% { transform: scale(1.22); stroke-opacity: 0.18; }
}
/* Knoten — gefuellte Kreise mit Glow + asynchroner Pulse */
.node {
fill: #DEDC1E;
filter: drop-shadow(0 0 6px rgba(222, 220, 30, 0.55));
transform-box: fill-box;
transform-origin: center;
animation: node-pulse 3.6s ease-in-out infinite;
transition: transform 0.25s ease, filter 0.25s ease;
}
.node-center {
animation-duration: 3.0s;
filter: drop-shadow(0 0 14px rgba(222, 220, 30, 0.75));
}
@keyframes node-pulse {
0%, 100% { transform: scale(1); opacity: 0.7; }
50% { transform: scale(1.18); opacity: 1; }
}
/* Hover-Ring um Aussenknoten — analog zum Center-Ring, aber nur waehrend Hover/Focus.
Initial unsichtbar; beim Hover wird er sichtbar und pulsiert. */
.hover-ring {
fill: none;
stroke: #DEDC1E;
stroke-width: 1.8;
stroke-opacity: 0;
transform-box: fill-box;
transform-origin: center;
transition: stroke-opacity 0.2s ease;
pointer-events: none;
}
.cluster-link:hover .hover-ring,
.cluster-link:focus-visible .hover-ring {
stroke-opacity: 0.7;
animation: hover-ring-pulse 1.6s ease-in-out infinite;
}
@keyframes hover-ring-pulse {
0%, 100% { transform: scale(1); stroke-opacity: 0.7; }
50% { transform: scale(1.35); stroke-opacity: 0.15; }
}
/* Klickflaeche: unsichtbarer groesserer Kreis (bessere Mausziel-Groesse) */
.node-hit {
fill: transparent;
cursor: pointer;
pointer-events: all;
}
/* Hover-Verstaerkung: der zugehoerige sichtbare Knoten reagiert kraeftig */
.cluster-link { cursor: pointer; }
.cluster-link:hover .node,
.cluster-link:focus-visible .node {
transform: scale(1.7);
filter: drop-shadow(0 0 16px rgba(222, 220, 30, 1))
drop-shadow(0 0 30px rgba(222, 220, 30, 0.6));
animation-play-state: paused;
}
.cluster-link:hover .node-center,
.cluster-link:focus-visible .node-center {
transform: scale(1.35);
filter: drop-shadow(0 0 24px rgba(222, 220, 30, 1))
drop-shadow(0 0 50px rgba(222, 220, 30, 0.7));
}
.cluster-link:focus-visible {
outline: none;
}
.cluster-link:focus-visible .node {
stroke: #DEDC1E;
stroke-width: 2;
}
@media (prefers-reduced-motion: reduce) {
.logo-cluster line,
.cluster-ring,
.hover-ring,
.node { animation: none !important; }
}
/* ---- Floating Orbs (Hero) ---- */
.orb {
filter: blur(64px);
pointer-events: none;
will-change: transform;
}
.orb-petrol {
background: radial-gradient(circle, #067391 0%, transparent 70%);
animation: drift 14s ease-in-out infinite;
}
.orb-petrol-2 {
background: radial-gradient(circle, #045066 0%, transparent 70%);
animation: drift 18s ease-in-out infinite reverse;
}
.orb-sonith {
background: radial-gradient(circle, #DEDC1E 0%, transparent 70%);
animation: drift 20s ease-in-out infinite;
animation-delay: -6s;
}
@keyframes drift {
0%, 100% { transform: translate(0, 0) scale(1); }
33% { transform: translate(40px, -30px) scale(1.08); }
66% { transform: translate(-30px, 25px) scale(0.95); }
}
/* Auf reduzierten Bewegungswunsch achten (a11y) */
@media (prefers-reduced-motion: reduce) {
.orb { animation: none !important; }
}
/* ---- USP Cards (mit subtiler Pulse-Aura auf Icon-Kreisen) ---- */
.usp-card {
transition: transform 0.3s ease;
}
.usp-card:hover {
transform: translateY(-4px);
}
.usp-card > div:first-child {
position: relative;
}
.usp-card > div:first-child::before {
content: "";
position: absolute;
inset: -6px;
border-radius: 9999px;
background: radial-gradient(circle, rgba(222, 220, 30, 0.18) 0%, transparent 70%);
opacity: 0;
transition: opacity 0.4s ease;
z-index: -1;
}
.usp-card:hover > div:first-child::before {
opacity: 1;
animation: pulse-soft 2.4s ease-in-out infinite;
}
@keyframes pulse-soft {
0%, 100% { transform: scale(1); opacity: 0.6; }
50% { transform: scale(1.18); opacity: 1; }
}
/* ---- Team Cards ---- */
.team-card {
transition: transform 0.3s ease;
}
.team-card:hover {
transform: translateY(-4px);
}
/* ---- Contact Cards ---- */
.contact-card {
transition: all 0.3s ease;
}
.contact-card:hover {
transform: translateY(-2px);
}
/* ---- Selection Color ---- */
::selection {
background: rgba(222, 220, 30, 0.3);
color: #fff;
}
/* ---- Scrollbar (CI-Petrol-Toene) ---- */
::-webkit-scrollbar {
width: 8px;
}
::-webkit-scrollbar-track {
background: #0a1f28;
}
::-webkit-scrollbar-thumb {
background: #1a3d4d;
border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
background: #045066;
}
/* ---- Focus Styles ---- */
a:focus-visible,
button:focus-visible {
outline: 2px solid #DEDC1E;
outline-offset: 2px;
border-radius: 4px;
}