932cf60c5c
The sm:/lg: ratio collapse in About.tsx from the breakpoint migration was wrong: the Tablet-specific wider text share wasn't just compensating for the grid arriving too early, it's what the inner quote/bio row and the photo's -ml-48 overlap actually need room for. Restores the two-tier ratio (wider text, no overlap at sm:; real ratio + overlap only at lg:), just anchored to sm: instead of the old md:. Also centers the Hero CTA button below sm: (Mobile) per feedback.
114 lines
5.4 KiB
TypeScript
114 lines
5.4 KiB
TypeScript
import Image from "next/image";
|
||
import { Reveal } from "./Reveal";
|
||
|
||
export function About() {
|
||
return (
|
||
<section id="ueber-bjoern" className="bg-bg-dark flex flex-col sm:flex-row sm:items-stretch w-full">
|
||
|
||
{/* Text content — relative + z-10 so it renders above the overlapping
|
||
photo at lg+. Comes first in DOM at every breakpoint (no reorder
|
||
here — unlike Hero, there's no conversion CTA at stake).
|
||
sm:flex-[1.4_0_0] lg:flex-[1_0_0] — at Tablet the text column
|
||
gets the wider 1.4:1 share (moved down from the old md:, not
|
||
collapsed away as a first pass here tried): this isn't just
|
||
compensation for the grid arriving before the fluid floor had
|
||
room, it's also what the *inner* quote/divider/bio row (still
|
||
lg:-only, see below) and the photo's own -ml-48 overlap actually
|
||
need — collapsing straight to the 1:1.4 Desktop ratio at sm:
|
||
left the text column too narrow and the photo overlapping too
|
||
aggressively at real Tablet widths (reported 2026-07-29).
|
||
Reverts to the real ratio from lg: up, where the overlap trick
|
||
needs the image to have more room. */}
|
||
<Reveal className="flex flex-col gap-4 justify-center px-[var(--layout-padding-x)] py-8 sm:flex-[1.4_0_0] lg:flex-[1_0_0] min-w-0 relative z-10">
|
||
|
||
{/* Large serif statement — width-constrained as per design */}
|
||
<p
|
||
className="font-semibold text-bg-white text-h-section leading-normal w-[17.625rem]"
|
||
style={{ fontFamily: "var(--font-lora)" }}
|
||
>
|
||
Ich glaube nicht, dass Menschen mehr Disziplin brauchen.
|
||
</p>
|
||
|
||
{/* Quote row: script quote / divider / author bio — side-by-side
|
||
only from lg: (1024px), a deliberate exception to the site's
|
||
sm: (640px) structural consolidation: quote + divider + the
|
||
whitespace-nowrap bio ("Gründer von einfach-produktiv.")
|
||
together need more room than the sm:-anchored text column has
|
||
through the whole 640-1023px range, independent of the outer
|
||
text/image ratio above. Stacked with a horizontal divider
|
||
through that whole range instead, side-by-side (vertical
|
||
divider) only once there's real room at lg:. */}
|
||
<div className="flex flex-col lg:flex-row lg:items-start lg:justify-between gap-6 lg:gap-0 w-full">
|
||
|
||
{/* Caveat script text with signature positioned below */}
|
||
<div className="relative flex-1" style={{ minHeight: "8rem" }}>
|
||
<div
|
||
className="font-normal text-brand text-[2.25rem]"
|
||
style={{ fontFamily: "var(--font-caveat)", lineHeight: "2rem" }}
|
||
>
|
||
<p>Ich glaube,</p>
|
||
<p>sie brauchen </p>
|
||
<p>weniger Reibung.</p>
|
||
</div>
|
||
{/* Signature underline — hand-drawn organic stroke, sits just below the three Caveat lines (3 × 32px = 96px) */}
|
||
<div
|
||
className="absolute pointer-events-none"
|
||
style={{ top: "6.44rem", left: "1.5rem", width: "9.375rem", height: "1.375rem" }}
|
||
>
|
||
<svg viewBox="0 0 150 22" fill="none" className="w-full h-full text-brand" aria-hidden="true">
|
||
{/* Thin, near-constant-width ease-out sweep, traced from the actual
|
||
Figma signature-image raster (node 4175:150, page-home) — a single
|
||
smooth concave rise, no waviness/taper, ending ~88% across. */}
|
||
<path
|
||
d="M3,10 C20,8.3 35,6.7 50,5.4 C70,3.7 85,2.2 100,1.1 C112,0.5 122,0.3 131,0.1"
|
||
stroke="currentColor"
|
||
strokeWidth="1.3"
|
||
strokeLinecap="round"
|
||
/>
|
||
</svg>
|
||
</div>
|
||
</div>
|
||
|
||
{/* Divider — horizontal full-width line below lg:, vertical
|
||
gold line beside the author bio from lg: */}
|
||
<div className="bg-brand w-full h-px lg:w-[2px] lg:h-24 lg:mx-6 shrink-0" />
|
||
|
||
<div
|
||
className="text-bg-white font-normal whitespace-nowrap lg:shrink-0"
|
||
style={{ fontSize: "1rem", lineHeight: "1.5rem" }}
|
||
>
|
||
<p>Björn.</p>
|
||
<p>Führungskraft.</p>
|
||
<p>Familienmensch.</p>
|
||
<p>Gründer von einfach-produktiv.</p>
|
||
</div>
|
||
|
||
</div>
|
||
</Reveal>
|
||
|
||
{/* Author photo — plain side-by-side (no overlap) at Tablet, sharing
|
||
the narrower 1:1.4 flex-basis with the text column above;
|
||
overlaps the text column via -ml-48 only from lg+, where the
|
||
text column has reverted to its narrower share and there's real
|
||
room for the photo to bleed under it. Plain full-width photo
|
||
below the text on true Mobile. */}
|
||
<Reveal
|
||
className="relative overflow-hidden w-full sm:flex-[1_0_0] lg:flex-[1.4_0_0] lg:-ml-48"
|
||
style={{ minHeight: "14rem" }}
|
||
delay={0.15}
|
||
>
|
||
<Image
|
||
alt="Björn"
|
||
src="/about-author.jpg"
|
||
fill
|
||
sizes="(min-width: 1024px) 58vw, (min-width: 640px) 42vw, 100vw"
|
||
className="object-cover object-center pointer-events-none"
|
||
/>
|
||
{/* Left gradient: wide enough to cover the text-column overlap — lg+ only, matching the overlap itself */}
|
||
<div className="hidden lg:block absolute inset-y-0 left-0 w-72 bg-gradient-to-r from-bg-dark to-transparent pointer-events-none" />
|
||
</Reveal>
|
||
|
||
</section>
|
||
);
|
||
}
|