diff --git a/src/app/home/home.component.html b/src/app/home/home.component.html index e566ffe..ec0ab23 100644 --- a/src/app/home/home.component.html +++ b/src/app/home/home.component.html @@ -150,8 +150,8 @@ [ngSrc]="project.icon" [attr.srcset]="project.iconSrcset ?? null" [attr.sizes]="project.iconSizes ?? null" - width="216" - height="216" + [width]="project.iconWidth ?? 216" + [height]="project.iconHeight ?? 216" disableOptimizedSrcset [alt]="project.title + ' icon'" /> diff --git a/src/app/imprint/imprint.component.html b/src/app/imprint/imprint.component.html index 17f1ae5..dff79d2 100644 --- a/src/app/imprint/imprint.component.html +++ b/src/app/imprint/imprint.component.html @@ -1,83 +1,161 @@
-
diff --git a/src/app/imprint/imprint.component.ts b/src/app/imprint/imprint.component.ts index 86fbf10..3c50715 100644 --- a/src/app/imprint/imprint.component.ts +++ b/src/app/imprint/imprint.component.ts @@ -20,6 +20,8 @@ export class ImprintComponent implements OnInit { private readonly sanitizer = inject(DomSanitizer); protected readonly global: Global = global; + protected readonly displayStreet: string = this.normalizeText(global.address.street); + protected readonly displayCity: string = this.normalizeText(global.address.city); protected contactSafeMail!: SafeUrl; protected abuseSafeMail!: SafeUrl; @@ -30,4 +32,14 @@ export class ImprintComponent implements OnInit { this.contactSafeMail = this.sanitizer.bypassSecurityTrustUrl(`mailto:${global.contactMail}`); this.abuseSafeMail = this.sanitizer.bypassSecurityTrustUrl(`mailto:${this.global.abuseMail}`); } + + private normalizeText(value: string): string { + return value + .replaceAll('ß', 'ß') + .replaceAll('ö', 'ö') + .replaceAll('Ä', 'Ä') + .replaceAll('ä', 'ä') + .replaceAll('Ü', 'Ü') + .replaceAll('ü', 'ü'); + } } diff --git a/src/assets/unoptimized/logos/me.png b/src/assets/unoptimized/logos/me.png deleted file mode 100644 index 8b7a224..0000000 Binary files a/src/assets/unoptimized/logos/me.png and /dev/null differ diff --git a/src/global.ts b/src/global.ts index 8a505ab..1d52dbd 100644 --- a/src/global.ts +++ b/src/global.ts @@ -6,6 +6,8 @@ export interface PortfolioProject { icon?: string; iconSrcset?: string; iconSizes?: string; + iconWidth?: number; + iconHeight?: number; CircleIcon?: boolean; } @@ -163,6 +165,8 @@ export const global: Global = { iconSrcset: 'assets/optimized/logos/synhost-64.webp 64w, assets/optimized/logos/synhost-128.webp 128w, assets/optimized/logos/synhost.webp 216w', iconSizes: '(max-width: 700px) 64px, 108px', + iconWidth: 108, + iconHeight: 64, CircleIcon: false, }, { @@ -199,6 +203,8 @@ export const global: Global = { iconSrcset: 'assets/optimized/portrait/me-64.webp 64w, assets/optimized/portrait/me-128.webp 128w, assets/optimized/portrait/me.webp 216w', iconSizes: '(max-width: 700px) 64px, 108px', + iconWidth: 320, + iconHeight: 385, CircleIcon: true, }, { diff --git a/src/index.html b/src/index.html index 5ec09b5..bf3eb6b 100644 --- a/src/index.html +++ b/src/index.html @@ -15,54 +15,14 @@ + diff --git a/src/styles.scss b/src/styles.scss index efa4955..d09ddd2 100644 --- a/src/styles.scss +++ b/src/styles.scss @@ -191,9 +191,7 @@ hr { .legal-intro, .project-description, .story-copy p, -.detail-panel p, -.legal-copy p, -.legal-card p { +.detail-panel p { color: var(--text-muted); line-height: 1.75; } @@ -473,8 +471,7 @@ hr { .story-section, .contact-strip, -.legal-hero, -.legal-copy { +.legal-hero { margin-top: var(--space-5); padding: clamp(1.5rem, 3vw, 2.5rem); } @@ -513,14 +510,12 @@ hr { } .story-copy p:first-child, -.detail-panel p:first-child, -.legal-copy p:first-child { +.detail-panel p:first-child { margin-top: 0; } .story-copy p:last-child, -.detail-panel p:last-child, -.legal-copy p:last-child { +.detail-panel p:last-child { margin-bottom: 0; } @@ -791,7 +786,7 @@ hr { .project-icon { width: clamp(84px, 12vw, 108px); min-width: clamp(84px, 12vw, 108px); - height: clamp(84px, 12vw, 108px); + height: auto; object-fit: contain; object-position: center; box-shadow: none; @@ -806,19 +801,8 @@ hr { gap: var(--space-5); } -.imprint-page a { - color: #5ca8ff; - text-decoration: underline; - text-decoration-thickness: 1.5px; - text-underline-offset: 2px; -} - -.imprint-page a:hover { - color: #8bc2ff; -} - .legal-hero .back-link { - margin-bottom: var(--space-5); + margin-bottom: 0; } .legal-hero h1 { @@ -833,54 +817,30 @@ hr { line-height: 1.8; } -.legal-grid { - display: grid; - grid-template-columns: repeat(2, minmax(0, 1fr)); - gap: var(--space-4); -} - -.legal-card { - padding: clamp(1.4rem, 3vw, 2rem); +.legal-section { + margin-top: var(--space-5); } .legal-provider-name { - margin: 0 0 0.6rem; - font-size: clamp(1.35rem, 1.8vw, 1.7rem); - font-weight: 650; - letter-spacing: -0.02em; + margin: 0; + font-size: 1.1rem; + font-weight: 700; + letter-spacing: 0; color: var(--text-primary); } -.legal-card p { - margin: 0 0 0.45rem; - line-height: 1.5; -} - -.legal-row:last-child { - margin-bottom: 0; -} - -.legal-copy p { - margin: 0 0 var(--space-3); -} - -.legal-copy { +.legal-contact-box { display: grid; - gap: var(--space-4); - padding: clamp(1.7rem, 3vw, 2.6rem); + gap: 0.5rem; + width: 100%; + justify-items: start; + text-align: left; } -.legal-block { - padding: var(--space-4); - border: 1px solid var(--border-soft); - border-radius: var(--radius-md); - background: rgba(255, 255, 255, 0.03); -} - -.legal-block h2 { - margin: 0 0 var(--space-3); - font-size: clamp(1.4rem, 2.5vw, 2rem); - letter-spacing: -0.03em; +.legal-contact-box p { + margin: 0; + color: var(--text-muted); + line-height: 1.6; } .site-footer { @@ -922,7 +882,6 @@ hr { @media (max-width: 900px) { .hero-section, .story-grid, - .legal-grid, .project-entry, .project-entry-reverse { grid-template-columns: 1fr; @@ -1017,7 +976,7 @@ hr { .project-icon { width: 64px; min-width: 64px; - height: 64px; + height: auto; align-self: start; }