add product site ui refresh
This commit is contained in:
parent
5ca7152011
commit
088d01b256
1
parfum-shop/public/icon-arrow-left.svg
Normal file
1
parfum-shop/public/icon-arrow-left.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="#eaeaea" viewBox="0 0 256 256"><path d="M224,128a8,8,0,0,1-8,8H59.31l58.35,58.34a8,8,0,0,1-11.32,11.32l-72-72a8,8,0,0,1,0-11.32l72-72a8,8,0,0,1,11.32,11.32L59.31,120H216A8,8,0,0,1,224,128Z"></path></svg>
|
||||
|
After Width: | Height: | Size: 273 B |
1
parfum-shop/public/icon-chat.svg
Normal file
1
parfum-shop/public/icon-chat.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="#eaeaea" viewBox="0 0 256 256"><path d="M216,48H40A16,16,0,0,0,24,64V224a15.84,15.84,0,0,0,9.25,14.5A16.05,16.05,0,0,0,40,240a15.89,15.89,0,0,0,10.25-3.78l.09-.07L83,208H216a16,16,0,0,0,16-16V64A16,16,0,0,0,216,48ZM40,224h0ZM216,192H80a8,8,0,0,0-5.23,1.95L40,224V64H216Z"></path></svg>
|
||||
|
After Width: | Height: | Size: 355 B |
1
parfum-shop/public/icon-x.svg
Normal file
1
parfum-shop/public/icon-x.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="#eaeaea" viewBox="0 0 256 256"><path d="M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z"></path></svg>
|
||||
|
After Width: | Height: | Size: 309 B |
@ -24,17 +24,56 @@ main {
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.shell {
|
||||
width: var(--container-wide);
|
||||
margin: 0 auto;
|
||||
padding: 0 0 clamp(2.2rem, 6vw, 5rem);
|
||||
background: transparent;
|
||||
border: 0;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.page,
|
||||
.detail-page,
|
||||
.discovery-page,
|
||||
.about-page,
|
||||
.support-page,
|
||||
.small-page {
|
||||
.small-page,
|
||||
.impressum-page,
|
||||
.datenschutz-page {
|
||||
isolation: isolate;
|
||||
}
|
||||
|
||||
.detail-page .navbar--light,
|
||||
.discovery-page .navbar--light,
|
||||
.about-page .navbar--light,
|
||||
.support-page .navbar--light,
|
||||
.small-page .navbar--light,
|
||||
.impressum-page .navbar--light,
|
||||
.datenschutz-page .navbar--light {
|
||||
position: fixed;
|
||||
top: clamp(0.75rem, 2.1vw, 1.4rem);
|
||||
right: 0;
|
||||
left: 0;
|
||||
z-index: 998;
|
||||
margin-bottom: 0;
|
||||
padding-top: 0;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.detail-page .navbar--light .nav-pill,
|
||||
.discovery-page .navbar--light .nav-pill,
|
||||
.about-page .navbar--light .nav-pill,
|
||||
.support-page .navbar--light .nav-pill,
|
||||
.small-page .navbar--light .nav-pill,
|
||||
.impressum-page .navbar--light .nav-pill,
|
||||
.datenschutz-page .navbar--light .nav-pill {
|
||||
pointer-events: auto;
|
||||
}
|
||||
|
||||
.navbar--light .nav-pill,
|
||||
.navbar--light .nav-link,
|
||||
.shell,
|
||||
[class*="-page"],
|
||||
[class*="-shell"],
|
||||
[class*="-card"],
|
||||
|
||||
@ -5,25 +5,6 @@
|
||||
background: var(--theme-bg);
|
||||
}
|
||||
|
||||
.detail-page .navbar--light {
|
||||
position: fixed;
|
||||
top: clamp(0.75rem, 2.1vw, 1.4rem);
|
||||
right: 0;
|
||||
left: 0;
|
||||
z-index: 998;
|
||||
margin-bottom: 0;
|
||||
padding-top: 0;
|
||||
}
|
||||
|
||||
.detail-shell {
|
||||
width: var(--container-wide);
|
||||
margin: 0 auto;
|
||||
padding: 0 0 clamp(2.2rem, 6vw, 5rem);
|
||||
background: transparent;
|
||||
border: 0;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.detail-topbar {
|
||||
position: fixed;
|
||||
top: clamp(0.75rem, 2.1vw, 1.4rem);
|
||||
@ -63,7 +44,13 @@
|
||||
}
|
||||
|
||||
.back-link-arrow {
|
||||
line-height: 1;
|
||||
display: inline-block;
|
||||
width: 1rem;
|
||||
height: 1rem;
|
||||
flex: 0 0 auto;
|
||||
background: currentColor;
|
||||
-webkit-mask: url("/icon-arrow-left.svg") center / contain no-repeat;
|
||||
mask: url("/icon-arrow-left.svg") center / contain no-repeat;
|
||||
}
|
||||
|
||||
.detail-topbar-meta {
|
||||
@ -105,7 +92,7 @@
|
||||
grid-template-columns: repeat(12, minmax(0, 1fr));
|
||||
gap: var(--gap-md);
|
||||
align-items: center;
|
||||
min-height: 100svh;
|
||||
min-height: clamp(680px, 100svh, 940px);
|
||||
padding-block: 0;
|
||||
border-bottom: 0;
|
||||
isolation: isolate;
|
||||
@ -116,13 +103,18 @@
|
||||
grid-column: 1 / -1;
|
||||
grid-row: 1;
|
||||
display: grid;
|
||||
place-items: center;
|
||||
grid-template-columns: repeat(12, minmax(0, 1fr));
|
||||
align-items: center;
|
||||
min-height: inherit;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.product-hero-visual {
|
||||
position: relative;
|
||||
grid-column: 4 / 10;
|
||||
grid-row: 1;
|
||||
justify-self: center;
|
||||
align-self: center;
|
||||
display: grid;
|
||||
place-items: center;
|
||||
width: 100%;
|
||||
@ -140,7 +132,7 @@
|
||||
position: absolute;
|
||||
top: clamp(6.5rem, 11vw, 9rem);
|
||||
left: 0;
|
||||
z-index: 2;
|
||||
z-index: 5;
|
||||
width: min(26vw, 390px);
|
||||
}
|
||||
|
||||
@ -167,7 +159,7 @@
|
||||
.product-hero-image {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
width: min(36vw, 600px);
|
||||
width: min(100%, 600px);
|
||||
max-height: min(62svh, 700px);
|
||||
height: auto;
|
||||
object-fit: contain;
|
||||
@ -198,7 +190,7 @@
|
||||
min-height: 44px;
|
||||
padding: 0;
|
||||
border: 1px solid var(--theme-border);
|
||||
background: var(--theme-paper);
|
||||
background: transparent;
|
||||
overflow: hidden;
|
||||
cursor: pointer;
|
||||
transition:
|
||||
@ -222,25 +214,26 @@
|
||||
.thumb-btn img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
object-fit: contain;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.hero-fact-grid {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 50%;
|
||||
top: auto;
|
||||
bottom: clamp(4rem, 9svh, 7rem);
|
||||
z-index: 3;
|
||||
width: min(22vw, 310px);
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
gap: var(--gap-md);
|
||||
margin-top: 0;
|
||||
transform: translateY(-42%);
|
||||
transform: none;
|
||||
}
|
||||
|
||||
.hero-fact-grid div,
|
||||
.character-facts div,
|
||||
.character-facts > div,
|
||||
.meta-card,
|
||||
.delivery-grid div {
|
||||
padding-top: 1rem;
|
||||
@ -514,6 +507,14 @@
|
||||
line-height: 1.62;
|
||||
}
|
||||
|
||||
.story-copy .character-facts p {
|
||||
max-width: none;
|
||||
margin: 0;
|
||||
color: var(--theme-text);
|
||||
font-size: var(--text-base);
|
||||
line-height: 1.55;
|
||||
}
|
||||
|
||||
.story-visual-panel {
|
||||
min-height: clamp(360px, 42vw, 620px);
|
||||
display: flex;
|
||||
@ -529,21 +530,21 @@
|
||||
|
||||
.character-facts {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||
gap: var(--gap-sm);
|
||||
margin-top: clamp(1.4rem, 3vw, 2.4rem);
|
||||
max-width: 58rem;
|
||||
}
|
||||
|
||||
.character-facts div:last-child {
|
||||
grid-column: 1 / -1;
|
||||
.character-facts > div {
|
||||
min-height: 132px;
|
||||
}
|
||||
|
||||
.story-visual-panel > div {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.story-visual-panel span:first-child {
|
||||
.story-visual-panel > div > span:first-child {
|
||||
display: block;
|
||||
margin-bottom: var(--gap-sm);
|
||||
color: var(--theme-text-muted);
|
||||
@ -567,6 +568,8 @@
|
||||
background: rgba(255, 255, 255, 0.035);
|
||||
color: var(--theme-text);
|
||||
font-size: var(--text-sm);
|
||||
letter-spacing: 0;
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
.product-structure-section,
|
||||
@ -922,10 +925,8 @@
|
||||
}
|
||||
|
||||
.recommendation-heading {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: end;
|
||||
gap: var(--gap-lg);
|
||||
display: block;
|
||||
max-width: 74rem;
|
||||
}
|
||||
|
||||
.recommendation-grid {
|
||||
@ -992,7 +993,6 @@
|
||||
}
|
||||
|
||||
@media (max-width: 1180px) {
|
||||
.product-hero,
|
||||
.product-story-grid,
|
||||
.product-meta-section,
|
||||
.detail-bottom-cta {
|
||||
@ -1000,33 +1000,44 @@
|
||||
}
|
||||
|
||||
.product-hero {
|
||||
min-height: auto;
|
||||
grid-template-columns: minmax(0, 1fr) minmax(18rem, 0.72fr);
|
||||
align-items: center;
|
||||
min-height: 100svh;
|
||||
padding-top: clamp(5.6rem, 9vw, 7.4rem);
|
||||
padding-bottom: clamp(1rem, 2vw, 1.6rem);
|
||||
}
|
||||
|
||||
.product-media-column,
|
||||
.product-purchase-panel {
|
||||
.product-media-column {
|
||||
grid-column: 1;
|
||||
grid-row: auto;
|
||||
grid-row: 1;
|
||||
}
|
||||
|
||||
.product-media-column {
|
||||
min-height: 0;
|
||||
display: block;
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
grid-template-rows: auto minmax(0, 1fr) auto auto;
|
||||
gap: clamp(0.65rem, 1.4vw, 1rem);
|
||||
align-self: stretch;
|
||||
place-items: stretch;
|
||||
}
|
||||
|
||||
.product-hero-copy {
|
||||
position: static;
|
||||
width: min(100%, 720px);
|
||||
margin-bottom: var(--gap-md);
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.product-hero-visual {
|
||||
min-height: clamp(520px, 66vw, 760px);
|
||||
grid-column: auto;
|
||||
grid-row: auto;
|
||||
min-height: 0;
|
||||
height: min(42svh, 420px);
|
||||
}
|
||||
|
||||
.product-hero-image {
|
||||
width: min(66vw, 640px);
|
||||
max-height: none;
|
||||
width: min(74%, 430px);
|
||||
max-height: 100%;
|
||||
}
|
||||
|
||||
.product-thumbs,
|
||||
@ -1041,16 +1052,46 @@
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.thumb-btn {
|
||||
width: clamp(3.6rem, 6vw, 4.8rem);
|
||||
height: clamp(3.6rem, 6vw, 4.8rem);
|
||||
}
|
||||
|
||||
.hero-fact-grid {
|
||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||
gap: var(--gap-xs);
|
||||
}
|
||||
|
||||
.hero-fact-grid div {
|
||||
padding-top: 0.75rem;
|
||||
}
|
||||
|
||||
.hero-fact-grid span {
|
||||
margin-bottom: 0.4rem;
|
||||
font-size: 0.72rem;
|
||||
letter-spacing: 0.16em;
|
||||
}
|
||||
|
||||
.hero-fact-grid p {
|
||||
font-size: var(--text-sm);
|
||||
line-height: 1.38;
|
||||
}
|
||||
|
||||
.product-purchase-panel {
|
||||
position: static;
|
||||
justify-self: center;
|
||||
width: min(100%, 720px);
|
||||
grid-column: 2;
|
||||
grid-row: 1;
|
||||
position: relative;
|
||||
justify-self: stretch;
|
||||
align-self: center;
|
||||
width: 100%;
|
||||
max-height: none;
|
||||
overflow: visible;
|
||||
gap: var(--gap-xs);
|
||||
}
|
||||
|
||||
.product-hero-copy h1 {
|
||||
max-width: 12ch;
|
||||
font-size: clamp(2.4rem, 5.5vw, 4.6rem);
|
||||
}
|
||||
|
||||
.structure-timeline,
|
||||
@ -1064,13 +1105,8 @@
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.detail-shell {
|
||||
width: var(--container-wide);
|
||||
padding-inline: 0;
|
||||
}
|
||||
|
||||
.detail-topbar {
|
||||
top: clamp(4.65rem, 15vw, 5.5rem);
|
||||
top: clamp(4.35rem, 14vw, 5.05rem);
|
||||
z-index: 999;
|
||||
right: clamp(0.75rem, 4vw, 1rem);
|
||||
left: clamp(0.75rem, 4vw, 1rem);
|
||||
@ -1083,20 +1119,30 @@
|
||||
}
|
||||
|
||||
.product-hero {
|
||||
padding-top: clamp(7.6rem, 25vw, 9rem);
|
||||
grid-template-columns: 1fr;
|
||||
align-content: start;
|
||||
gap: clamp(0.5rem, 1.8vw, 0.8rem);
|
||||
min-height: 100svh;
|
||||
padding-top: clamp(6.7rem, 20vw, 7.25rem);
|
||||
padding-bottom: clamp(0.75rem, 2.4vw, 1rem);
|
||||
}
|
||||
|
||||
.product-media-column,
|
||||
.product-purchase-panel {
|
||||
grid-column: 1;
|
||||
grid-row: auto;
|
||||
}
|
||||
|
||||
.product-hero-visual {
|
||||
min-height: clamp(390px, 102vw, 620px);
|
||||
height: min(29svh, 250px);
|
||||
min-height: 198px;
|
||||
}
|
||||
|
||||
.product-hero-image {
|
||||
width: min(88%, 560px);
|
||||
width: min(74%, 292px);
|
||||
}
|
||||
|
||||
.hero-fact-grid,
|
||||
.character-facts,
|
||||
.size-grid,
|
||||
.meta-grid,
|
||||
.delivery-grid,
|
||||
.comment-spotlight-grid,
|
||||
@ -1105,6 +1151,99 @@
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.hero-fact-grid {
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
}
|
||||
|
||||
.hero-fact-grid div:last-child {
|
||||
grid-column: 1 / -1;
|
||||
}
|
||||
|
||||
.size-grid {
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
}
|
||||
|
||||
.product-hero-copy span {
|
||||
margin-bottom: 0.35rem;
|
||||
font-size: 0.68rem;
|
||||
letter-spacing: 0.16em;
|
||||
}
|
||||
|
||||
.product-hero-copy h1 {
|
||||
font-size: clamp(2rem, 10.4vw, 3rem);
|
||||
line-height: 0.9;
|
||||
}
|
||||
|
||||
.thumb-btn {
|
||||
width: clamp(2.8rem, 11vw, 3.25rem);
|
||||
height: clamp(2.8rem, 11vw, 3.25rem);
|
||||
}
|
||||
|
||||
.product-thumbs {
|
||||
margin-top: -0.6rem;
|
||||
}
|
||||
|
||||
.hero-fact-grid {
|
||||
gap: 0.45rem;
|
||||
}
|
||||
|
||||
.hero-fact-grid div {
|
||||
min-width: 0;
|
||||
padding-top: 0.45rem;
|
||||
}
|
||||
|
||||
.hero-fact-grid span {
|
||||
margin-bottom: 0.25rem;
|
||||
font-size: 0.58rem;
|
||||
letter-spacing: 0.09em;
|
||||
}
|
||||
|
||||
.hero-fact-grid p {
|
||||
font-size: 0.72rem;
|
||||
line-height: 1.22;
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
|
||||
.product-purchase-panel {
|
||||
min-width: 0;
|
||||
gap: 0.48rem;
|
||||
}
|
||||
|
||||
.purchase-price-row {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.purchase-price-row strong {
|
||||
font-size: clamp(1.1rem, 5vw, 1.35rem);
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.size-card {
|
||||
min-height: 62px;
|
||||
padding: 0.55rem 0.6rem;
|
||||
}
|
||||
|
||||
.size-title {
|
||||
margin-bottom: 0.25rem;
|
||||
font-size: 0.76rem;
|
||||
}
|
||||
|
||||
.size-card strong {
|
||||
margin-bottom: 0;
|
||||
font-size: 0.95rem;
|
||||
}
|
||||
|
||||
.size-card small,
|
||||
.purchase-discovery-note {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.buy-button,
|
||||
.restock-button {
|
||||
min-height: 38px;
|
||||
font-size: 0.72rem;
|
||||
}
|
||||
|
||||
.purchase-discovery-note,
|
||||
.reviews-heading,
|
||||
.recommendation-heading {
|
||||
@ -1122,17 +1261,11 @@
|
||||
width: min(100%, 24rem);
|
||||
}
|
||||
|
||||
.purchase-discovery-note a,
|
||||
.buy-button,
|
||||
.restock-button {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.purchase-price-row {
|
||||
align-items: flex-start;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.review-score-block {
|
||||
justify-items: start;
|
||||
}
|
||||
@ -1148,13 +1281,21 @@
|
||||
|
||||
@media (max-width: 480px) {
|
||||
.product-hero-copy h1 {
|
||||
font-size: clamp(2.6rem, 15vw, 4rem);
|
||||
font-size: clamp(1.95rem, 10.2vw, 2.85rem);
|
||||
}
|
||||
|
||||
.hero-fact-grid {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.product-thumbs {
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.restock-button {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.review-detail-row {
|
||||
grid-template-columns: 1fr;
|
||||
align-items: start;
|
||||
|
||||
@ -530,10 +530,10 @@ function ProductDetailContent({ perfumeSlug }) {
|
||||
<div className={`detail-page ${isTransitionArriving ? "is-transition-arriving" : ""}`}>
|
||||
<SharedNavbar variant="light" />
|
||||
|
||||
<main className="detail-shell">
|
||||
<main className="shell">
|
||||
<div className="detail-topbar" data-product-transition-reveal>
|
||||
<button className="back-link" type="button" onClick={() => navigate("/")}>
|
||||
<span className="back-link-arrow">←</span>
|
||||
<span className="back-link-arrow" aria-hidden="true" />
|
||||
<span>Zurück zur Startseite</span>
|
||||
</button>
|
||||
|
||||
|
||||
@ -11,11 +11,7 @@
|
||||
.product-transition__wash {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background:
|
||||
radial-gradient(circle at 50% 50%, rgba(var(--theme-accent-rgb) / 0.16), transparent 32rem),
|
||||
rgba(12, 12, 12, 0.78);
|
||||
backdrop-filter: blur(14px) saturate(0.9);
|
||||
-webkit-backdrop-filter: blur(14px) saturate(0.9);
|
||||
background: var(--theme-bg);
|
||||
}
|
||||
|
||||
.product-transition__image {
|
||||
@ -23,6 +19,7 @@
|
||||
top: 0;
|
||||
left: 0;
|
||||
display: block;
|
||||
max-width: none;
|
||||
object-fit: contain;
|
||||
transform-origin: 0 0;
|
||||
will-change: transform, opacity;
|
||||
|
||||
@ -50,12 +50,21 @@ const getStageRect = (sourceRect) => {
|
||||
};
|
||||
};
|
||||
|
||||
const getTransformForRect = (rect, sourceRect) => ({
|
||||
x: rect.left,
|
||||
y: rect.top,
|
||||
scaleX: rect.width / sourceRect.width,
|
||||
scaleY: rect.height / sourceRect.height,
|
||||
});
|
||||
const getTransformForRect = (rect, sourceRect) => {
|
||||
const scale = Math.min(
|
||||
rect.width / sourceRect.width,
|
||||
rect.height / sourceRect.height
|
||||
);
|
||||
const width = sourceRect.width * scale;
|
||||
const height = sourceRect.height * scale;
|
||||
|
||||
return {
|
||||
x: rect.left + (rect.width - width) / 2,
|
||||
y: rect.top + (rect.height - height) / 2,
|
||||
scaleX: scale,
|
||||
scaleY: scale,
|
||||
};
|
||||
};
|
||||
|
||||
export function ProductTransitionProvider({ children }) {
|
||||
const navigate = useNavigate();
|
||||
@ -171,9 +180,9 @@ export function ProductTransitionProvider({ children }) {
|
||||
.to(
|
||||
routeContent,
|
||||
{
|
||||
autoAlpha: 0.16,
|
||||
filter: "blur(10px)",
|
||||
scale: 0.985,
|
||||
autoAlpha: 0,
|
||||
filter: "none",
|
||||
scale: 1,
|
||||
duration: 0.62,
|
||||
ease: "power3.out",
|
||||
},
|
||||
@ -277,7 +286,7 @@ export function ProductTransitionProvider({ children }) {
|
||||
duration: 0.82,
|
||||
stagger: 0.07,
|
||||
ease: "power4.out",
|
||||
clearProps: "transform,opacity,visibility",
|
||||
clearProps: "transform",
|
||||
},
|
||||
">-0.05"
|
||||
);
|
||||
|
||||
@ -278,12 +278,48 @@
|
||||
/* --- Design System Refinement Start --- */
|
||||
|
||||
.chatbot-trigger {
|
||||
min-height: 48px;
|
||||
right: var(--page-x);
|
||||
bottom: var(--page-x);
|
||||
right: max(0.9rem, env(safe-area-inset-right));
|
||||
bottom: max(0.9rem, env(safe-area-inset-bottom));
|
||||
width: 52px;
|
||||
height: 52px;
|
||||
min-height: 52px;
|
||||
min-width: 52px;
|
||||
padding: 0;
|
||||
display: inline-grid;
|
||||
place-items: center;
|
||||
font-size: 0;
|
||||
box-shadow: var(--theme-shadow-soft);
|
||||
}
|
||||
|
||||
.chatbot-trigger.is-open {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.chatbot-trigger-icon,
|
||||
.chatbot-close-icon {
|
||||
display: block;
|
||||
width: 1.45rem;
|
||||
height: 1.45rem;
|
||||
background: currentColor;
|
||||
-webkit-mask-position: center;
|
||||
mask-position: center;
|
||||
-webkit-mask-repeat: no-repeat;
|
||||
mask-repeat: no-repeat;
|
||||
-webkit-mask-size: contain;
|
||||
mask-size: contain;
|
||||
}
|
||||
|
||||
.chatbot-trigger-icon {
|
||||
-webkit-mask-image: url("/icon-chat.svg");
|
||||
mask-image: url("/icon-chat.svg");
|
||||
}
|
||||
|
||||
.chatbot-trigger.is-open .chatbot-trigger-icon,
|
||||
.chatbot-close-icon {
|
||||
-webkit-mask-image: url("/icon-x.svg");
|
||||
mask-image: url("/icon-x.svg");
|
||||
}
|
||||
|
||||
.chatbot-trigger:hover,
|
||||
.chatbot-trigger:focus-visible {
|
||||
transform: translateY(-2px);
|
||||
@ -338,8 +374,8 @@
|
||||
|
||||
@media (max-width: 700px) {
|
||||
.chatbot-trigger {
|
||||
right: var(--page-x);
|
||||
bottom: var(--page-x);
|
||||
right: max(0.75rem, env(safe-area-inset-right));
|
||||
bottom: max(0.75rem, env(safe-area-inset-bottom));
|
||||
}
|
||||
|
||||
.chatbot-window {
|
||||
|
||||
@ -216,7 +216,7 @@ function SupportChatbot() {
|
||||
onClick={() => setIsOpen((prev) => !prev)}
|
||||
aria-label={isOpen ? "Chat schliessen" : "Support Chat öffnen"}
|
||||
>
|
||||
{isOpen ? "×" : "Support"}
|
||||
<span className="chatbot-trigger-icon" aria-hidden="true" />
|
||||
</button>
|
||||
|
||||
{isOpen && (
|
||||
@ -232,7 +232,7 @@ function SupportChatbot() {
|
||||
onClick={() => setIsOpen(false)}
|
||||
aria-label="Chat schliessen"
|
||||
>
|
||||
×
|
||||
<span className="chatbot-close-icon" aria-hidden="true" />
|
||||
</button>
|
||||
</div>
|
||||
|
||||
|
||||
@ -1,543 +1,121 @@
|
||||
.about-page {
|
||||
min-height: 100vh;
|
||||
padding: 0 0 var(--section-y-sm);
|
||||
color: var(--theme-text);
|
||||
padding: 26px 38px 38px;
|
||||
background:
|
||||
linear-gradient(to right, rgba(0, 0, 0, 0.45), rgba(0, 0, 0, 0.1)),
|
||||
linear-gradient(to bottom, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.45));
|
||||
}
|
||||
|
||||
.about-shell {
|
||||
background: var(--theme-surface);
|
||||
border: 1px solid var(--theme-border);
|
||||
padding: 38px;
|
||||
radial-gradient(circle at 86% 8%, rgba(var(--theme-accent-rgb) / 0.13), transparent 28rem),
|
||||
linear-gradient(180deg, var(--theme-bg), color-mix(in srgb, var(--theme-bg) 88%, #000 12%));
|
||||
}
|
||||
|
||||
.about-kicker,
|
||||
.about-label,
|
||||
.about-panel-label,
|
||||
.about-origin-box span,
|
||||
.about-panel-meta span {
|
||||
display: block;
|
||||
font-size: 10px;
|
||||
letter-spacing: 0.22em;
|
||||
color: var(--theme-text-muted);
|
||||
}
|
||||
|
||||
.about-hero {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1.35fr) minmax(280px, 0.8fr);
|
||||
gap: 28px;
|
||||
align-items: end;
|
||||
padding-bottom: 36px;
|
||||
border-bottom: 1px solid var(--theme-border);
|
||||
}
|
||||
|
||||
.about-hero-copy h1 {
|
||||
margin: 14px 0 18px;
|
||||
font-size: 68px;
|
||||
line-height: 0.92;
|
||||
font-weight: 300;
|
||||
letter-spacing: 0;
|
||||
color: var(--theme-text);
|
||||
}
|
||||
|
||||
.about-intro {
|
||||
max-width: 720px;
|
||||
margin: 0;
|
||||
font-size: 18px;
|
||||
line-height: 1.65;
|
||||
color: var(--theme-text-muted);
|
||||
}
|
||||
|
||||
.about-hero-panel {
|
||||
padding: 24px;
|
||||
background: linear-gradient(
|
||||
180deg,
|
||||
rgba(255, 106, 0, 0.08),
|
||||
rgba(255, 106, 0, 0.03)
|
||||
);
|
||||
border: 1px solid rgba(255, 106, 0, 0.18);
|
||||
}
|
||||
|
||||
.about-hero-panel p {
|
||||
margin: 10px 0 0;
|
||||
font-size: 16px;
|
||||
line-height: 1.6;
|
||||
color: var(--theme-text);
|
||||
}
|
||||
|
||||
.about-panel-meta {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
gap: 16px;
|
||||
margin-top: 24px;
|
||||
padding-top: 20px;
|
||||
border-top: 1px solid rgba(255, 106, 0, 0.14);
|
||||
}
|
||||
|
||||
.about-panel-meta p,
|
||||
.about-origin-box p {
|
||||
margin: 8px 0 0;
|
||||
font-size: 14px;
|
||||
line-height: 1.55;
|
||||
color: var(--theme-text);
|
||||
}
|
||||
|
||||
.about-section {
|
||||
padding-top: 38px;
|
||||
}
|
||||
|
||||
.about-section--split {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(260px, 0.7fr) minmax(0, 1.3fr);
|
||||
gap: 28px;
|
||||
align-items: start;
|
||||
}
|
||||
|
||||
.about-section-heading h2,
|
||||
.about-origin-copy h2,
|
||||
.about-bottom-copy h2 {
|
||||
margin: 10px 0 0;
|
||||
font-size: 42px;
|
||||
line-height: 0.98;
|
||||
font-weight: 300;
|
||||
letter-spacing: 0;
|
||||
color: var(--theme-text);
|
||||
}
|
||||
|
||||
.about-section-copy {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 18px;
|
||||
}
|
||||
|
||||
.about-section-copy p,
|
||||
.about-origin-copy p,
|
||||
.about-bottom-copy p {
|
||||
margin: 0;
|
||||
font-size: 16px;
|
||||
line-height: 1.7;
|
||||
color: var(--theme-text-muted);
|
||||
}
|
||||
|
||||
.about-quote-block {
|
||||
margin-top: 38px;
|
||||
padding: 32px 36px;
|
||||
background: #1f1f1f;
|
||||
border-left: 3px solid #ff6a00;
|
||||
}
|
||||
|
||||
.about-quote-block p {
|
||||
margin: 0;
|
||||
font-size: 28px;
|
||||
line-height: 1.3;
|
||||
font-weight: 300;
|
||||
letter-spacing: 0;
|
||||
color: #fff;
|
||||
max-width: 900px;
|
||||
}
|
||||
|
||||
.about-grid-section {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: 18px;
|
||||
margin-top: 38px;
|
||||
}
|
||||
|
||||
.about-card {
|
||||
padding: 24px;
|
||||
background: var(--theme-bg);
|
||||
border: 1px solid var(--theme-border);
|
||||
min-height: 260px;
|
||||
}
|
||||
|
||||
.about-card h3 {
|
||||
margin: 14px 0 12px;
|
||||
font-size: 24px;
|
||||
line-height: 1.05;
|
||||
font-weight: 400;
|
||||
color: var(--theme-text);
|
||||
}
|
||||
|
||||
.about-card p {
|
||||
margin: 0;
|
||||
font-size: 15px;
|
||||
line-height: 1.65;
|
||||
color: var(--theme-text-muted);
|
||||
}
|
||||
|
||||
.about-origin-section {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1.2fr) minmax(280px, 0.8fr);
|
||||
gap: 28px;
|
||||
margin-top: 38px;
|
||||
padding-top: 38px;
|
||||
border-top: 1px solid var(--theme-border);
|
||||
}
|
||||
|
||||
.about-origin-box {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 18px;
|
||||
background: var(--theme-bg);
|
||||
border: 1px solid var(--theme-border);
|
||||
padding: 24px;
|
||||
}
|
||||
|
||||
.about-origin-box > div {
|
||||
padding-bottom: 16px;
|
||||
border-bottom: 1px solid var(--theme-border);
|
||||
}
|
||||
|
||||
.about-origin-box > div:last-child {
|
||||
border-bottom: none;
|
||||
padding-bottom: 0;
|
||||
}
|
||||
|
||||
.about-bottom-cta {
|
||||
margin-top: 38px;
|
||||
padding: 38px;
|
||||
background: #ff6a00;
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1.2fr) auto;
|
||||
gap: 24px;
|
||||
align-items: end;
|
||||
}
|
||||
|
||||
.about-bottom-copy .about-label,
|
||||
.about-bottom-copy h2,
|
||||
.about-bottom-copy p {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.about-bottom-copy .about-label {
|
||||
opacity: 0.85;
|
||||
}
|
||||
|
||||
.about-bottom-copy p {
|
||||
margin-top: 16px;
|
||||
max-width: 700px;
|
||||
}
|
||||
|
||||
.about-bottom-actions {
|
||||
display: flex;
|
||||
gap: 12px;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.about-btn {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
text-decoration: none;
|
||||
padding: 12px 18px;
|
||||
font-size: 14px;
|
||||
border-radius: 999px;
|
||||
transition: transform 0.2s ease, opacity 0.2s ease, box-shadow 0.2s ease;
|
||||
}
|
||||
|
||||
.about-btn:hover {
|
||||
transform: translateY(-1px);
|
||||
}
|
||||
|
||||
.about-btn--primary {
|
||||
background: var(--theme-paper);
|
||||
color: #ff6a00;
|
||||
}
|
||||
|
||||
.about-btn--secondary {
|
||||
background: rgba(255, 255, 255, 0.14);
|
||||
color: #fff;
|
||||
backdrop-filter: blur(8px);
|
||||
}
|
||||
|
||||
.about-proof-strip {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
gap: 14px;
|
||||
margin-top: 38px;
|
||||
}
|
||||
|
||||
.about-proof-item {
|
||||
padding: 18px;
|
||||
border: 1px solid var(--theme-border);
|
||||
background: var(--theme-surface-soft);
|
||||
}
|
||||
|
||||
.about-proof-item p {
|
||||
margin: 10px 0 0;
|
||||
font-size: 14px;
|
||||
line-height: 1.55;
|
||||
color: var(--theme-text-muted);
|
||||
}
|
||||
|
||||
.about-process-section {
|
||||
margin-top: 38px;
|
||||
padding-top: 38px;
|
||||
border-top: 1px solid var(--theme-border);
|
||||
}
|
||||
|
||||
.about-credentials-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 18px;
|
||||
margin-top: 38px;
|
||||
}
|
||||
|
||||
.about-credential-card {
|
||||
padding: 24px;
|
||||
background: linear-gradient(
|
||||
180deg,
|
||||
rgba(255, 106, 0, 0.06),
|
||||
rgba(255, 106, 0, 0.02)
|
||||
);
|
||||
border: 1px solid rgba(255, 106, 0, 0.16);
|
||||
min-height: 220px;
|
||||
}
|
||||
|
||||
.about-credential-card h3 {
|
||||
margin: 14px 0 12px;
|
||||
font-size: 24px;
|
||||
line-height: 1.08;
|
||||
font-weight: 400;
|
||||
color: var(--theme-text);
|
||||
}
|
||||
|
||||
.about-credential-card p {
|
||||
margin: 0;
|
||||
font-size: 15px;
|
||||
line-height: 1.65;
|
||||
color: var(--theme-text-muted);
|
||||
}
|
||||
|
||||
.about-method-section {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1fr) minmax(320px, 0.95fr);
|
||||
gap: 28px;
|
||||
margin-top: 38px;
|
||||
padding: 28px;
|
||||
background: var(--theme-bg);
|
||||
border: 1px solid var(--theme-border);
|
||||
}
|
||||
|
||||
.about-method-copy h2 {
|
||||
margin: 10px 0 16px;
|
||||
font-size: 40px;
|
||||
line-height: 0.98;
|
||||
font-weight: 300;
|
||||
letter-spacing: 0;
|
||||
color: var(--theme-text);
|
||||
}
|
||||
|
||||
.about-method-copy p {
|
||||
margin: 0;
|
||||
font-size: 16px;
|
||||
line-height: 1.7;
|
||||
color: var(--theme-text-muted);
|
||||
}
|
||||
|
||||
.about-method-points {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
.about-method-points > div {
|
||||
padding-bottom: 14px;
|
||||
border-bottom: 1px solid var(--theme-border);
|
||||
}
|
||||
|
||||
.about-method-points > div:last-child {
|
||||
border-bottom: none;
|
||||
padding-bottom: 0;
|
||||
}
|
||||
|
||||
.about-panel-meta span,
|
||||
.about-method-points span {
|
||||
display: block;
|
||||
font-size: 10px;
|
||||
letter-spacing: 0.22em;
|
||||
color: var(--theme-text-muted);
|
||||
}
|
||||
|
||||
.about-method-points p {
|
||||
margin: 8px 0 0;
|
||||
font-size: 14px;
|
||||
line-height: 1.55;
|
||||
color: var(--theme-text);
|
||||
}
|
||||
|
||||
.about-trust-note {
|
||||
margin-top: 38px;
|
||||
padding: 22px;
|
||||
border: 1px solid rgba(255, 106, 0, 0.18);
|
||||
background: linear-gradient(
|
||||
180deg,
|
||||
rgba(255, 106, 0, 0.08),
|
||||
rgba(255, 106, 0, 0.03)
|
||||
);
|
||||
}
|
||||
|
||||
.about-trust-note p {
|
||||
margin: 10px 0 0;
|
||||
font-size: 15px;
|
||||
line-height: 1.65;
|
||||
color: var(--theme-text);
|
||||
}
|
||||
|
||||
@media (max-width: 1100px) {
|
||||
.about-hero,
|
||||
.about-section--split,
|
||||
.about-origin-section,
|
||||
.about-bottom-cta,
|
||||
.about-method-section {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.about-hero-copy h1 {
|
||||
font-size: 52px;
|
||||
}
|
||||
|
||||
.about-grid-section,
|
||||
.about-proof-strip,
|
||||
.about-credentials-grid {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.about-method-copy h2 {
|
||||
font-size: 32px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 700px) {
|
||||
.about-page {
|
||||
padding: 18px;
|
||||
}
|
||||
|
||||
.about-shell {
|
||||
padding: 24px 18px;
|
||||
}
|
||||
|
||||
.about-hero-copy h1 {
|
||||
font-size: 38px;
|
||||
}
|
||||
|
||||
.about-section-heading h2,
|
||||
.about-origin-copy h2,
|
||||
.about-bottom-copy h2,
|
||||
.about-method-copy h2 {
|
||||
font-size: 30px;
|
||||
}
|
||||
|
||||
.about-intro,
|
||||
.about-section-copy p,
|
||||
.about-origin-copy p,
|
||||
.about-bottom-copy p,
|
||||
.about-method-copy p,
|
||||
.about-credential-card p,
|
||||
.about-proof-item p,
|
||||
.about-trust-note p {
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
.about-quote-block {
|
||||
padding: 24px 20px;
|
||||
}
|
||||
|
||||
.about-quote-block p {
|
||||
font-size: 22px;
|
||||
}
|
||||
|
||||
.about-method-section,
|
||||
.about-bottom-cta {
|
||||
padding: 26px 20px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* --- Design System Refinement Start --- */
|
||||
|
||||
.about-page {
|
||||
padding: clamp(1rem, 3vw, 2.4rem) var(--page-x) clamp(2rem, 5vw, 4rem);
|
||||
background:
|
||||
radial-gradient(circle at 88% 9%, rgba(var(--theme-accent-rgb) / 0.12), transparent 28rem),
|
||||
linear-gradient(135deg, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.08)),
|
||||
var(--theme-bg);
|
||||
}
|
||||
|
||||
.about-shell {
|
||||
width: var(--container-wide);
|
||||
margin: 0 auto;
|
||||
padding: clamp(1.25rem, 3vw, 2.8rem);
|
||||
border-radius: var(--radius-lg);
|
||||
box-shadow: var(--theme-shadow);
|
||||
}
|
||||
|
||||
.about-kicker,
|
||||
.about-label,
|
||||
.about-panel-label,
|
||||
.about-origin-box span,
|
||||
.about-panel-meta span {
|
||||
font-size: var(--text-xs);
|
||||
letter-spacing: 0.22em;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.about-hero {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1.45fr) minmax(18rem, 0.72fr);
|
||||
gap: var(--gap-lg);
|
||||
padding-bottom: var(--section-y-xs);
|
||||
align-items: end;
|
||||
padding: clamp(2rem, 5vw, 5rem) 0 var(--section-y-sm);
|
||||
border-bottom: 1px solid var(--theme-border);
|
||||
}
|
||||
|
||||
.about-hero-copy {
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.about-hero-copy h1 {
|
||||
max-width: 11.4ch;
|
||||
margin: clamp(0.85rem, 2vw, 1.2rem) 0 clamp(1rem, 2vw, 1.35rem);
|
||||
color: var(--theme-text);
|
||||
font-size: clamp(3rem, 7.4vw, 8.8rem);
|
||||
line-height: 0.9;
|
||||
font-weight: 300;
|
||||
letter-spacing: 0;
|
||||
text-transform: uppercase;
|
||||
text-wrap: balance;
|
||||
}
|
||||
|
||||
.about-intro {
|
||||
max-width: var(--text-measure);
|
||||
margin: 0;
|
||||
color: var(--theme-text-muted);
|
||||
font-size: var(--text-lg);
|
||||
}
|
||||
|
||||
.about-hero-panel,
|
||||
.about-card,
|
||||
.about-origin-box,
|
||||
.about-bottom-cta,
|
||||
.about-proof-item,
|
||||
.about-credential-card,
|
||||
.about-method-section,
|
||||
.about-trust-note,
|
||||
.about-quote-block {
|
||||
border-radius: var(--radius-lg);
|
||||
line-height: 1.65;
|
||||
}
|
||||
|
||||
.about-hero-panel {
|
||||
padding: clamp(1.25rem, 3vw, 2rem);
|
||||
border: 1px solid rgba(var(--theme-accent-rgb) / 0.2);
|
||||
background:
|
||||
linear-gradient(135deg, rgba(var(--theme-accent-rgb) / 0.1), transparent 62%),
|
||||
var(--theme-surface-soft);
|
||||
}
|
||||
|
||||
.about-hero-panel p {
|
||||
margin: 0.75rem 0 0;
|
||||
color: var(--theme-text);
|
||||
font-size: var(--text-base);
|
||||
line-height: 1.62;
|
||||
}
|
||||
|
||||
.about-panel-meta {
|
||||
display: grid;
|
||||
gap: var(--gap-sm);
|
||||
margin-top: clamp(1.2rem, 2.6vw, 2rem);
|
||||
padding-top: var(--gap-sm);
|
||||
border-top: 1px solid rgba(var(--theme-accent-rgb) / 0.2);
|
||||
}
|
||||
|
||||
.about-panel-meta p,
|
||||
.about-origin-box p,
|
||||
.about-method-points p {
|
||||
margin: 0.45rem 0 0;
|
||||
color: var(--theme-text);
|
||||
font-size: var(--text-sm);
|
||||
line-height: 1.55;
|
||||
}
|
||||
|
||||
.about-section {
|
||||
padding-top: var(--section-y-xs);
|
||||
padding-top: var(--section-y-sm);
|
||||
}
|
||||
|
||||
.about-section--split,
|
||||
.about-origin-section,
|
||||
.about-method-section {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(16rem, 0.72fr) minmax(0, 1.28fr);
|
||||
gap: var(--gap-lg);
|
||||
align-items: start;
|
||||
}
|
||||
|
||||
.about-section-heading h2,
|
||||
.about-origin-copy h2,
|
||||
.about-bottom-copy h2,
|
||||
.about-method-copy h2 {
|
||||
margin: 0.75rem 0 0;
|
||||
color: var(--theme-text);
|
||||
font-size: clamp(2.15rem, 5.2vw, 6rem);
|
||||
line-height: 0.94;
|
||||
font-weight: 300;
|
||||
letter-spacing: 0;
|
||||
text-transform: uppercase;
|
||||
text-wrap: balance;
|
||||
}
|
||||
|
||||
.about-section-copy,
|
||||
.about-method-points {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: var(--gap-sm);
|
||||
}
|
||||
|
||||
@ -549,31 +127,54 @@
|
||||
.about-card p,
|
||||
.about-proof-item p,
|
||||
.about-trust-note p {
|
||||
margin: 0;
|
||||
color: var(--theme-text-muted);
|
||||
font-size: var(--text-base);
|
||||
line-height: 1.7;
|
||||
}
|
||||
|
||||
.about-section-copy p + p,
|
||||
.about-origin-copy p + p {
|
||||
margin-top: var(--gap-sm);
|
||||
}
|
||||
|
||||
.about-proof-strip,
|
||||
.about-grid-section,
|
||||
.about-credentials-grid {
|
||||
display: grid;
|
||||
gap: var(--gap-sm);
|
||||
margin-top: var(--section-y-xs);
|
||||
margin-top: var(--section-y-sm);
|
||||
}
|
||||
|
||||
.about-proof-strip {
|
||||
grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr));
|
||||
grid-template-columns: repeat(4, minmax(0, 1fr));
|
||||
}
|
||||
|
||||
.about-grid-section {
|
||||
grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr));
|
||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||
}
|
||||
|
||||
.about-credentials-grid {
|
||||
grid-template-columns: repeat(auto-fit, minmax(min(100%, 22rem), 1fr));
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
}
|
||||
|
||||
.about-card,
|
||||
.about-proof-item,
|
||||
.about-credential-card,
|
||||
.about-origin-box,
|
||||
.about-method-section,
|
||||
.about-trust-note {
|
||||
border: 1px solid var(--theme-border);
|
||||
background:
|
||||
linear-gradient(180deg, rgba(255, 255, 255, 0.035), rgba(255, 255, 255, 0.008)),
|
||||
var(--theme-surface-soft);
|
||||
}
|
||||
|
||||
.about-card,
|
||||
.about-proof-item,
|
||||
.about-credential-card {
|
||||
min-height: 100%;
|
||||
padding: clamp(1.1rem, 2.4vw, 1.8rem);
|
||||
transition:
|
||||
transform var(--duration-med) var(--ease-out),
|
||||
border-color var(--duration-med) var(--ease-out),
|
||||
@ -590,79 +191,184 @@
|
||||
|
||||
.about-card h3,
|
||||
.about-credential-card h3 {
|
||||
margin: 0.9rem 0 0.75rem;
|
||||
color: var(--theme-text);
|
||||
font-size: var(--text-xl);
|
||||
line-height: 1.08;
|
||||
font-weight: 400;
|
||||
letter-spacing: 0;
|
||||
}
|
||||
|
||||
.about-proof-item {
|
||||
min-height: 9rem;
|
||||
}
|
||||
|
||||
.about-proof-item p {
|
||||
margin-top: 0.7rem;
|
||||
}
|
||||
|
||||
.about-quote-block {
|
||||
margin-top: var(--section-y-xs);
|
||||
margin-top: var(--section-y-sm);
|
||||
padding: clamp(1.4rem, 4vw, 3rem);
|
||||
overflow: hidden;
|
||||
border-left: 3px solid var(--theme-accent);
|
||||
background:
|
||||
radial-gradient(circle at 100% 0%, rgba(var(--theme-accent-rgb) / 0.18), transparent 18rem),
|
||||
#171717;
|
||||
}
|
||||
|
||||
.about-quote-block p {
|
||||
max-width: 58rem;
|
||||
margin: 0;
|
||||
color: #fff;
|
||||
font-size: clamp(1.7rem, 4vw, 4.2rem);
|
||||
line-height: 1.08;
|
||||
font-weight: 300;
|
||||
letter-spacing: 0;
|
||||
}
|
||||
|
||||
.about-origin-section,
|
||||
.about-process-section,
|
||||
.about-faq-section {
|
||||
margin-top: var(--section-y-xs);
|
||||
padding-top: var(--section-y-xs);
|
||||
.about-origin-section {
|
||||
margin-top: var(--section-y-sm);
|
||||
padding-top: var(--section-y-sm);
|
||||
border-top: 1px solid var(--theme-border);
|
||||
}
|
||||
|
||||
.about-method-section {
|
||||
margin-top: var(--section-y-sm);
|
||||
padding: clamp(1.25rem, 3vw, 2.4rem);
|
||||
}
|
||||
|
||||
.about-method-points > div,
|
||||
.about-origin-box > div {
|
||||
padding-top: 1rem;
|
||||
border-top: 1px solid var(--theme-border);
|
||||
}
|
||||
|
||||
.about-origin-box {
|
||||
display: grid;
|
||||
gap: var(--gap-sm);
|
||||
padding: clamp(1.1rem, 2.4vw, 1.8rem);
|
||||
}
|
||||
|
||||
.about-trust-note {
|
||||
margin-top: var(--section-y-sm);
|
||||
padding: clamp(1.1rem, 2.4vw, 1.8rem);
|
||||
border-color: rgba(var(--theme-accent-rgb) / 0.24);
|
||||
background:
|
||||
linear-gradient(135deg, rgba(var(--theme-accent-rgb) / 0.11), transparent 60%),
|
||||
var(--theme-surface-soft);
|
||||
}
|
||||
|
||||
.about-trust-note p {
|
||||
max-width: 72rem;
|
||||
margin-top: 0.75rem;
|
||||
color: var(--theme-text);
|
||||
}
|
||||
|
||||
.about-bottom-cta {
|
||||
margin-top: var(--section-y-xs);
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1fr) auto;
|
||||
gap: var(--gap-lg);
|
||||
align-items: end;
|
||||
margin-top: var(--section-y-sm);
|
||||
padding: clamp(1.5rem, 4vw, 3.5rem);
|
||||
overflow: hidden;
|
||||
background:
|
||||
radial-gradient(circle at 92% 0%, rgba(255, 255, 255, 0.22), transparent 20rem),
|
||||
var(--theme-accent);
|
||||
}
|
||||
|
||||
.about-bottom-copy .about-label,
|
||||
.about-bottom-copy h2,
|
||||
.about-bottom-copy p {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.about-bottom-copy p {
|
||||
max-width: 48rem;
|
||||
margin-top: 1rem;
|
||||
}
|
||||
|
||||
.about-bottom-actions {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: var(--gap-xs);
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
.about-btn {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
min-height: 48px;
|
||||
padding: 0 1.1rem;
|
||||
border: 1px solid transparent;
|
||||
border-radius: 999px;
|
||||
color: inherit;
|
||||
font-size: var(--text-sm);
|
||||
text-decoration: none;
|
||||
transition:
|
||||
transform var(--duration-med) var(--ease-out),
|
||||
box-shadow var(--duration-med) var(--ease-out),
|
||||
background-color var(--duration-med) var(--ease-out);
|
||||
}
|
||||
|
||||
.about-btn:hover,
|
||||
.about-btn:focus-visible {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: var(--theme-shadow-soft);
|
||||
}
|
||||
|
||||
@media (max-width: 1100px) {
|
||||
.about-btn--primary {
|
||||
background: #fff;
|
||||
color: var(--theme-accent);
|
||||
}
|
||||
|
||||
.about-btn--secondary {
|
||||
border-color: rgba(255, 255, 255, 0.22);
|
||||
background: rgba(255, 255, 255, 0.14);
|
||||
color: #fff;
|
||||
backdrop-filter: blur(8px);
|
||||
}
|
||||
|
||||
@media (max-width: 1180px) {
|
||||
.about-hero,
|
||||
.about-section--split,
|
||||
.about-origin-section,
|
||||
.about-bottom-cta,
|
||||
.about-method-section {
|
||||
.about-method-section,
|
||||
.about-bottom-cta {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.about-proof-strip,
|
||||
.about-grid-section,
|
||||
.about-credentials-grid {
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 700px) {
|
||||
.about-page {
|
||||
padding-inline: var(--page-x);
|
||||
}
|
||||
|
||||
.about-shell {
|
||||
width: var(--container-wide);
|
||||
padding-inline: clamp(0.9rem, 4vw, 1.1rem);
|
||||
@media (max-width: 760px) {
|
||||
.about-hero {
|
||||
padding-top: clamp(1.4rem, 5vw, 2rem);
|
||||
}
|
||||
|
||||
.about-hero-copy h1 {
|
||||
font-size: clamp(2.55rem, 13vw, 4.4rem);
|
||||
}
|
||||
|
||||
.about-proof-strip,
|
||||
.about-grid-section,
|
||||
.about-credentials-grid {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.about-bottom-actions {
|
||||
display: grid;
|
||||
justify-content: stretch;
|
||||
}
|
||||
|
||||
.about-btn {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
/* --- Design System Refinement End --- */
|
||||
|
||||
|
||||
@ -7,7 +7,7 @@ function AboutPage() {
|
||||
<div className="about-page">
|
||||
<SharedNavbar variant="light" />
|
||||
|
||||
<main className="about-shell">
|
||||
<main className="shell">
|
||||
<section className="about-hero" data-reveal-group>
|
||||
<div className="about-hero-copy">
|
||||
<span className="about-kicker" data-reveal="fade">
|
||||
|
||||
@ -1,210 +1,108 @@
|
||||
.datenschutz-page {
|
||||
min-height: 100vh;
|
||||
padding: 0 0 var(--section-y-sm);
|
||||
color: var(--theme-text);
|
||||
padding: 26px 38px 38px;
|
||||
background:
|
||||
linear-gradient(to right, rgba(0, 0, 0, 0.45), rgba(0, 0, 0, 0.1)),
|
||||
linear-gradient(to bottom, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.45));
|
||||
}
|
||||
|
||||
.datenschutz-shell {
|
||||
background: var(--theme-surface);
|
||||
border: 1px solid var(--theme-border);
|
||||
padding: 38px;
|
||||
radial-gradient(circle at 86% 8%, rgba(var(--theme-accent-rgb) / 0.12), transparent 28rem),
|
||||
linear-gradient(180deg, var(--theme-bg), color-mix(in srgb, var(--theme-bg) 88%, #000 12%));
|
||||
}
|
||||
|
||||
.datenschutz-kicker,
|
||||
.datenschutz-label {
|
||||
display: block;
|
||||
font-size: 10px;
|
||||
letter-spacing: 0.22em;
|
||||
color: var(--theme-text-muted);
|
||||
font-size: var(--text-xs);
|
||||
letter-spacing: 0.22em;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.datenschutz-hero {
|
||||
padding-bottom: 32px;
|
||||
padding: clamp(2rem, 5vw, 5rem) 0 var(--section-y-sm);
|
||||
border-bottom: 1px solid var(--theme-border);
|
||||
}
|
||||
|
||||
.datenschutz-hero h1 {
|
||||
margin: 14px 0 16px;
|
||||
font-size: 64px;
|
||||
line-height: 0.92;
|
||||
font-weight: 300;
|
||||
letter-spacing: 0;
|
||||
margin: clamp(0.85rem, 2vw, 1.2rem) 0 clamp(1rem, 2vw, 1.35rem);
|
||||
color: var(--theme-text);
|
||||
}
|
||||
|
||||
.datenschutz-intro {
|
||||
max-width: 820px;
|
||||
margin: 0;
|
||||
font-size: 17px;
|
||||
line-height: 1.7;
|
||||
color: var(--theme-text-muted);
|
||||
}
|
||||
|
||||
.datenschutz-section {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(260px, 0.7fr) minmax(0, 1.3fr);
|
||||
gap: 28px;
|
||||
align-items: start;
|
||||
margin-top: 38px;
|
||||
padding-top: 38px;
|
||||
border-top: 1px solid var(--theme-border);
|
||||
}
|
||||
|
||||
.datenschutz-section-heading h2 {
|
||||
margin: 10px 0 0;
|
||||
font-size: 38px;
|
||||
line-height: 0.98;
|
||||
font-weight: 300;
|
||||
letter-spacing: 0;
|
||||
color: var(--theme-text);
|
||||
}
|
||||
|
||||
.datenschutz-section-copy p {
|
||||
margin: 0 0 16px;
|
||||
font-size: 16px;
|
||||
line-height: 1.75;
|
||||
color: var(--theme-text-muted);
|
||||
}
|
||||
|
||||
.datenschutz-list {
|
||||
margin: 0;
|
||||
padding-left: 18px;
|
||||
display: grid;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.datenschutz-list li {
|
||||
font-size: 16px;
|
||||
line-height: 1.7;
|
||||
color: var(--theme-text-muted);
|
||||
}
|
||||
|
||||
.datenschutz-note-box {
|
||||
padding: 22px;
|
||||
border: 1px solid rgba(255, 106, 0, 0.18);
|
||||
background: linear-gradient(
|
||||
180deg,
|
||||
rgba(255, 106, 0, 0.08),
|
||||
rgba(255, 106, 0, 0.03)
|
||||
);
|
||||
}
|
||||
|
||||
.datenschutz-note-box p {
|
||||
margin: 0;
|
||||
font-size: 15px;
|
||||
line-height: 1.65;
|
||||
color: var(--theme-text);
|
||||
}
|
||||
|
||||
@media (max-width: 1100px) {
|
||||
.datenschutz-section {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.datenschutz-hero h1 {
|
||||
font-size: 48px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 700px) {
|
||||
.datenschutz-page {
|
||||
padding: 18px;
|
||||
}
|
||||
|
||||
.datenschutz-shell {
|
||||
padding: 24px 18px;
|
||||
}
|
||||
|
||||
.datenschutz-hero h1 {
|
||||
font-size: 36px;
|
||||
}
|
||||
|
||||
.datenschutz-section-heading h2 {
|
||||
font-size: 28px;
|
||||
}
|
||||
|
||||
.datenschutz-intro,
|
||||
.datenschutz-section-copy p,
|
||||
.datenschutz-list li {
|
||||
font-size: 15px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* --- Design System Refinement Start --- */
|
||||
|
||||
.datenschutz-page {
|
||||
padding: clamp(1rem, 3vw, 2.4rem) var(--page-x) clamp(2rem, 5vw, 4rem);
|
||||
background:
|
||||
radial-gradient(circle at 88% 9%, rgba(var(--theme-accent-rgb) / 0.12), transparent 28rem),
|
||||
linear-gradient(135deg, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.08)),
|
||||
var(--theme-bg);
|
||||
}
|
||||
|
||||
.datenschutz-shell {
|
||||
width: var(--container-narrow);
|
||||
margin: 0 auto;
|
||||
padding: clamp(1.25rem, 3vw, 2.8rem);
|
||||
border-radius: var(--radius-lg);
|
||||
box-shadow: var(--theme-shadow);
|
||||
}
|
||||
|
||||
.datenschutz-kicker,
|
||||
.datenschutz-label {
|
||||
font-size: var(--text-xs);
|
||||
}
|
||||
|
||||
.datenschutz-hero {
|
||||
padding-bottom: var(--section-y-xs);
|
||||
}
|
||||
|
||||
.datenschutz-hero h1 {
|
||||
font-size: clamp(3rem, 8vw, 7.2rem);
|
||||
line-height: 0.9;
|
||||
font-weight: 300;
|
||||
letter-spacing: 0;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.datenschutz-intro {
|
||||
max-width: var(--text-measure);
|
||||
margin: 0;
|
||||
color: var(--theme-text-muted);
|
||||
font-size: var(--text-lg);
|
||||
line-height: 1.7;
|
||||
}
|
||||
|
||||
.datenschutz-section {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(14rem, 0.72fr) minmax(0, 1.28fr);
|
||||
gap: var(--gap-lg);
|
||||
margin-top: var(--section-y-xs);
|
||||
padding-top: var(--section-y-xs);
|
||||
align-items: start;
|
||||
margin-top: var(--section-y-sm);
|
||||
padding-top: var(--section-y-sm);
|
||||
border-top: 1px solid var(--theme-border);
|
||||
}
|
||||
|
||||
.datenschutz-section-heading h2 {
|
||||
margin: 0.75rem 0 0;
|
||||
color: var(--theme-text);
|
||||
font-size: clamp(2rem, 4.2vw, 4.5rem);
|
||||
line-height: 0.96;
|
||||
font-weight: 300;
|
||||
letter-spacing: 0;
|
||||
text-transform: uppercase;
|
||||
text-wrap: balance;
|
||||
}
|
||||
|
||||
.datenschutz-section-copy p,
|
||||
.datenschutz-list li,
|
||||
.datenschutz-note-box p {
|
||||
.datenschutz-section-copy p {
|
||||
margin: 0 0 1rem;
|
||||
color: var(--theme-text-muted);
|
||||
font-size: var(--text-base);
|
||||
line-height: 1.75;
|
||||
}
|
||||
|
||||
.datenschutz-list {
|
||||
display: grid;
|
||||
gap: 0.75rem;
|
||||
margin: 0;
|
||||
padding-left: 1.1rem;
|
||||
}
|
||||
|
||||
.datenschutz-list li {
|
||||
color: var(--theme-text-muted);
|
||||
font-size: var(--text-base);
|
||||
line-height: 1.7;
|
||||
}
|
||||
|
||||
.datenschutz-note-box {
|
||||
border-radius: var(--radius-lg);
|
||||
padding: clamp(1.1rem, 2.4vw, 1.8rem);
|
||||
border: 1px solid rgba(var(--theme-accent-rgb) / 0.24);
|
||||
background:
|
||||
linear-gradient(135deg, rgba(var(--theme-accent-rgb) / 0.11), transparent 60%),
|
||||
var(--theme-surface-soft);
|
||||
}
|
||||
|
||||
.datenschutz-note-box p {
|
||||
margin: 0;
|
||||
color: var(--theme-text);
|
||||
font-size: var(--text-base);
|
||||
line-height: 1.65;
|
||||
}
|
||||
|
||||
@media (max-width: 900px) {
|
||||
.datenschutz-section {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 700px) {
|
||||
.datenschutz-page {
|
||||
padding-inline: var(--page-x);
|
||||
}
|
||||
|
||||
.datenschutz-shell {
|
||||
width: var(--container-wide);
|
||||
padding-inline: clamp(0.9rem, 4vw, 1.1rem);
|
||||
.datenschutz-hero {
|
||||
padding-top: clamp(1.4rem, 5vw, 2rem);
|
||||
}
|
||||
}
|
||||
|
||||
/* --- Design System Refinement End --- */
|
||||
|
||||
|
||||
@ -6,7 +6,7 @@ function DatenschutzPage() {
|
||||
<div className="datenschutz-page">
|
||||
<SharedNavbar variant="light" />
|
||||
|
||||
<main className="datenschutz-shell">
|
||||
<main className="shell">
|
||||
<section className="datenschutz-hero" data-reveal-group>
|
||||
<span className="datenschutz-kicker" data-reveal="fade">RECHTLICHE ANGABEN</span>
|
||||
<h1 data-reveal="lines">DATENSCHUTZ</h1>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -4,15 +4,271 @@ import SharedNavbar from "../components/SharedNavbar";
|
||||
import { useShop } from "../shop/useShop";
|
||||
import "./DiscoverySetPage.css";
|
||||
|
||||
const moodImages = [
|
||||
"/DISCOVERYSET.png",
|
||||
"/DISCOVERYSET.png",
|
||||
"/DISCOVERYSET.png",
|
||||
"/DISCOVERYSET.png",
|
||||
"/DISCOVERYSET.png",
|
||||
"/DISCOVERYSET.png",
|
||||
const DISCOVERY_SET_IMAGE = "/DISCOVERYSET.png";
|
||||
|
||||
const discoveryPanelFacts = [
|
||||
{ label: "Umfang", value: "6 × 2ml" },
|
||||
{ label: "Gutschrift", value: "CHF 48 werden beim späteren Full-Size-Kauf berücksichtigt." },
|
||||
];
|
||||
|
||||
const discoveryBenefits = [
|
||||
{
|
||||
title: "6 × 2ml Samples aller Signature-Düfte",
|
||||
text: "Kalter Beton, Schwarzes Benzin, Verbranntes Chrom, Blasse Seide, Weisse Asche und Nasser Marmor.",
|
||||
},
|
||||
{
|
||||
title: "CHF 48 Gutschein automatisch im Set",
|
||||
text: "Nur das erste Discovery Set erstellt den einmaligen Rabatt. Er wird bei einem späteren Full-Size-Kauf automatisch angerechnet.",
|
||||
},
|
||||
{
|
||||
title: "Jedes Sample = ca. 20 Anwendungen",
|
||||
text: "Genug, um jeden Duft mehrere Tage im Alltag und in unterschiedlichen Situationen zu testen.",
|
||||
},
|
||||
{
|
||||
title: "Hochwertige Mini-Flacons",
|
||||
text: "Sorgfältig zusammengestellt, reduziert gestaltet und als Teil des atmos Konzepts gedacht.",
|
||||
},
|
||||
];
|
||||
|
||||
const discoverySteps = [
|
||||
{
|
||||
number: "01",
|
||||
title: "Bestellen",
|
||||
text: "Discovery Set für CHF 48 bestellen. Nur dein erstes Set erzeugt automatisch einen einmaligen Rabatt.",
|
||||
},
|
||||
{
|
||||
number: "02",
|
||||
title: "Testen",
|
||||
text: "Jeden Duft mindestens einige Tage tragen. Im Alltag, zu verschiedenen Anlässen und auf der eigenen Haut.",
|
||||
},
|
||||
{
|
||||
number: "03",
|
||||
title: "Entscheiden",
|
||||
text: "Full-Size bestellen. CHF 48 werden automatisch angerechnet, sofern der Rabatt noch nicht genutzt wurde.",
|
||||
},
|
||||
];
|
||||
|
||||
const discoveryComparison = [
|
||||
{
|
||||
icon: "×",
|
||||
title: "Traditioneller Weg",
|
||||
text: "CHF 180+ für eine Full Size ausgeben, ohne zu wissen, ob sie wirklich passt. Risiko: Fehlkauf, Überforderung oder ein Duft, der im Regal bleibt.",
|
||||
},
|
||||
{
|
||||
icon: "✓",
|
||||
title: "Discovery Set Weg",
|
||||
text: "CHF 48 investieren, alle Düfte testen, bewusst entscheiden. Die erste Investition wird einmalig angerechnet – der Einstieg bleibt kontrolliert, nachvollziehbar und fair.",
|
||||
highlight: true,
|
||||
},
|
||||
];
|
||||
|
||||
function DiscoveryOrderPanel({ onBuy }) {
|
||||
return (
|
||||
<aside className="discovery-order-panel">
|
||||
<div className="discovery-price-row">
|
||||
<span>Preis</span>
|
||||
<strong>CHF 48.–</strong>
|
||||
</div>
|
||||
|
||||
<div className="discovery-panel-facts">
|
||||
{discoveryPanelFacts.map((item) => (
|
||||
<div key={item.label}>
|
||||
<span>{item.label}</span>
|
||||
<p>{item.value}</p>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
|
||||
<div className="discovery-panel-actions">
|
||||
<button type="button" className="discovery-primary-btn" onClick={onBuy}>
|
||||
DISCOVERY SET BESTELLEN – CHF 48.–
|
||||
</button>
|
||||
<p>Nur das erste Set erstellt einen einmaligen CHF 48 Full-Size-Rabatt</p>
|
||||
</div>
|
||||
</aside>
|
||||
);
|
||||
}
|
||||
|
||||
function DiscoveryHero({ onBuy }) {
|
||||
return (
|
||||
<section className="discovery-hero">
|
||||
<div className="discovery-hero-stage">
|
||||
<div className="discovery-hero-copy">
|
||||
<span className="discovery-kicker">DISCOVERY SET</span>
|
||||
<h1>
|
||||
DER SICHERSTE EINSTIEG
|
||||
<br />
|
||||
IN DIE WELT DER NISCHEN-
|
||||
<br />
|
||||
DÜFTE
|
||||
</h1>
|
||||
|
||||
<p className="discovery-intro">
|
||||
6 Düfte × 2ml. Jeden Duft eine Woche tragen. Verstehen, was
|
||||
wirklich funktioniert. Ohne Risiko.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<figure className="discovery-hero-visual">
|
||||
<img
|
||||
src={DISCOVERY_SET_IMAGE}
|
||||
alt="Atmos Discovery Set"
|
||||
loading="eager"
|
||||
decoding="async"
|
||||
/>
|
||||
</figure>
|
||||
|
||||
</div>
|
||||
|
||||
<DiscoveryOrderPanel onBuy={onBuy} />
|
||||
</section>
|
||||
);
|
||||
}
|
||||
|
||||
function DiscoveryStorySection() {
|
||||
return (
|
||||
<section className="discovery-story-grid" data-reveal-group>
|
||||
<div className="discovery-story-copy">
|
||||
<span className="discovery-label" data-reveal="fade">
|
||||
WARUM DISCOVERY SET
|
||||
</span>
|
||||
<h2 data-reveal="lines">DER KLÜGERE EINSTIEG IN NISCHENDÜFTE.</h2>
|
||||
<p data-reveal="fade">
|
||||
Nischen-Parfums sind keine Impulskäufe. Sie brauchen Zeit, um zu
|
||||
verstehen, wie sie auf deiner Haut funktionieren, wie sie sich im
|
||||
Alltag entwickeln und ob sie wirklich zu dir passen.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div className="discovery-benefit-panel" data-reveal="fade">
|
||||
{discoveryBenefits.map((benefit) => (
|
||||
<article className="discovery-benefit" key={benefit.title}>
|
||||
<span className="discovery-benefit-icon" aria-hidden="true">
|
||||
✓
|
||||
</span>
|
||||
<div>
|
||||
<strong>{benefit.title}</strong>
|
||||
<p>{benefit.text}</p>
|
||||
</div>
|
||||
</article>
|
||||
))}
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
|
||||
function DiscoveryProcessSection() {
|
||||
return (
|
||||
<section className="discovery-process-section" data-reveal-group>
|
||||
<div className="discovery-section-intro">
|
||||
<span className="discovery-label" data-reveal="fade">
|
||||
ABLAUF
|
||||
</span>
|
||||
<h2 data-reveal="lines">So funktioniert's</h2>
|
||||
</div>
|
||||
|
||||
<div className="discovery-steps-grid">
|
||||
{discoverySteps.map((step) => (
|
||||
<article className="discovery-step-card" key={step.number} data-reveal="fade">
|
||||
<span className="discovery-step-number">{step.number}</span>
|
||||
<h3>{step.title}</h3>
|
||||
<p>{step.text}</p>
|
||||
</article>
|
||||
))}
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
|
||||
function DiscoveryIncludedSection() {
|
||||
return (
|
||||
<section className="discovery-included" data-reveal-group>
|
||||
<div className="discovery-section-heading">
|
||||
<span className="discovery-label" data-reveal="fade">
|
||||
IM SET ENTHALTEN
|
||||
</span>
|
||||
<h2 data-reveal="lines">ALLE 6 SIGNATURE-DÜFTE ZUM TESTEN.</h2>
|
||||
</div>
|
||||
|
||||
<div className="discovery-products-grid">
|
||||
{perfumes.map((perfume) => (
|
||||
<article className="discovery-product-card" key={perfume.id} data-reveal="fade">
|
||||
<span className="discovery-product-index">{perfume.id}</span>
|
||||
|
||||
<div className="discovery-product-image">
|
||||
<img
|
||||
src={perfume.image}
|
||||
alt={perfume.name}
|
||||
loading="lazy"
|
||||
decoding="async"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="discovery-product-copy">
|
||||
<h3>{perfume.name}</h3>
|
||||
<p>{perfume.text}</p>
|
||||
|
||||
<div className="discovery-product-tags">
|
||||
{perfume.materialTags.slice(0, 3).map((tag) => (
|
||||
<span key={tag}>{tag}</span>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
))}
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
|
||||
function DiscoveryComparisonSection() {
|
||||
return (
|
||||
<section className="discovery-comparison-section" data-reveal-group>
|
||||
<div className="discovery-comparison-grid">
|
||||
{discoveryComparison.map((item) => (
|
||||
<article
|
||||
className={`discovery-comparison-card${
|
||||
item.highlight ? " discovery-comparison-card--highlight" : ""
|
||||
}`}
|
||||
key={item.title}
|
||||
data-reveal="fade"
|
||||
>
|
||||
<div className="discovery-comparison-head">
|
||||
<span className="discovery-comparison-icon" aria-hidden="true">
|
||||
{item.icon}
|
||||
</span>
|
||||
<h3>{item.title}</h3>
|
||||
</div>
|
||||
<p>{item.text}</p>
|
||||
</article>
|
||||
))}
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
|
||||
function DiscoveryFinalCta({ onBuy }) {
|
||||
return (
|
||||
<section className="discovery-final-cta" data-reveal-group>
|
||||
<div>
|
||||
<span className="discovery-label" data-reveal="fade">
|
||||
DISCOVERY SET
|
||||
</span>
|
||||
<h2 data-reveal="lines">DER SICHERSTE EINSTIEG.</h2>
|
||||
<p data-reveal="fade">
|
||||
Kostenloser Versand · 2–3 Werktage · Einmalige Anrechnung bei Full-Size
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div className="discovery-final-actions" data-reveal="fade">
|
||||
<button type="button" className="discovery-primary-btn" onClick={onBuy}>
|
||||
DISCOVERY SET BESTELLEN – CHF 48.–
|
||||
</button>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
|
||||
function DiscoverySetPage() {
|
||||
const navigate = useNavigate();
|
||||
const { addToCart } = useShop();
|
||||
@ -23,219 +279,20 @@ function DiscoverySetPage() {
|
||||
<div className="discovery-page">
|
||||
<SharedNavbar variant="light" active="testen" />
|
||||
|
||||
<main className="discovery-shell">
|
||||
<main className="shell">
|
||||
<div className="discovery-topbar">
|
||||
<button className="discovery-back-link" type="button" onClick={() => navigate("/")}>
|
||||
<span className="discovery-back-arrow">←</span>
|
||||
<span className="discovery-back-arrow" aria-hidden="true" />
|
||||
<span>Zurück zur Startseite</span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<section className="discovery-hero" data-reveal-group>
|
||||
<div className="discovery-hero-copy">
|
||||
<span className="discovery-kicker" data-reveal="fade">
|
||||
DISCOVERY SET
|
||||
</span>
|
||||
<h1 data-reveal="lines">
|
||||
DER SICHERSTE EINSTIEG
|
||||
<br />
|
||||
IN DIE WELT DER NISCHEN-
|
||||
<br />
|
||||
DÜFTE
|
||||
</h1>
|
||||
|
||||
<p className="discovery-intro" data-reveal="fade">
|
||||
6 Düfte × 2ml. Jeden Duft eine Woche tragen. Verstehen, was
|
||||
wirklich funktioniert. Ohne Risiko.
|
||||
</p>
|
||||
|
||||
<div className="discovery-benefits" data-reveal="fade">
|
||||
<div className="discovery-benefit">
|
||||
<span className="discovery-benefit-icon">✓</span>
|
||||
<div>
|
||||
<strong>6 × 2ml Samples aller Signature-Düfte</strong>
|
||||
<p>
|
||||
Kalter Beton, Schwarzes Benzin, Verbranntes Chrom, Blasse
|
||||
Seide, Weisse Asche und Nasser Marmor.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="discovery-benefit">
|
||||
<span className="discovery-benefit-icon">✓</span>
|
||||
<div>
|
||||
<strong>CHF 48 Gutschein automatisch im Set</strong>
|
||||
<p>
|
||||
Nur das erste Discovery Set erstellt den einmaligen Rabatt.
|
||||
Er wird bei einem späteren Full-Size-Kauf automatisch angerechnet.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="discovery-benefit">
|
||||
<span className="discovery-benefit-icon">✓</span>
|
||||
<div>
|
||||
<strong>Jedes Sample = ca. 20 Anwendungen</strong>
|
||||
<p>
|
||||
Genug, um jeden Duft mehrere Tage im Alltag und in
|
||||
unterschiedlichen Situationen zu testen.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="discovery-benefit">
|
||||
<span className="discovery-benefit-icon">✓</span>
|
||||
<div>
|
||||
<strong>Hochwertige Mini-Flacons</strong>
|
||||
<p>
|
||||
Sorgfältig zusammengestellt, reduziert gestaltet und als
|
||||
Teil des atmos Konzepts gedacht.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="discovery-hero-actions" data-reveal="fade">
|
||||
<button type="button" className="discovery-primary-btn" onClick={buyDiscoverySet}>
|
||||
DISCOVERY SET BESTELLEN – CHF 48.–
|
||||
</button>
|
||||
<p>Nur das erste Set erstellt einen einmaligen CHF 48 Full-Size-Rabatt</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="discovery-mood-grid">
|
||||
{moodImages.map((image, index) => (
|
||||
<div className="discovery-mood-tile" key={index}>
|
||||
<img
|
||||
src={image}
|
||||
alt={`Discovery Mood ${index + 1}`}
|
||||
loading={index === 0 ? "eager" : "lazy"}
|
||||
decoding="async"
|
||||
/>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section className="discovery-included" data-reveal-group>
|
||||
<div className="discovery-section-heading">
|
||||
<span className="discovery-label" data-reveal="fade">
|
||||
IM SET ENTHALTEN
|
||||
</span>
|
||||
<h2 data-reveal="lines">ALLE 6 SIGNATURE-DÜFTE ZUM TESTEN.</h2>
|
||||
</div>
|
||||
|
||||
<div className="discovery-products-grid">
|
||||
{perfumes.map((perfume) => (
|
||||
<article className="discovery-product-card" key={perfume.id}>
|
||||
<div className="discovery-product-image">
|
||||
<img
|
||||
src={perfume.image}
|
||||
alt={perfume.name}
|
||||
loading="lazy"
|
||||
decoding="async"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="discovery-product-copy">
|
||||
<h3>{perfume.name}</h3>
|
||||
<p>{perfume.text}</p>
|
||||
|
||||
<div className="discovery-product-tags">
|
||||
{perfume.materialTags.slice(0, 3).map((tag) => (
|
||||
<span key={tag}>{tag}</span>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
))}
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section className="discovery-steps-section">
|
||||
<div className="discovery-steps-shell" data-reveal-group>
|
||||
<h2 data-reveal="lines">So funktioniert's</h2>
|
||||
|
||||
<div className="discovery-steps-grid">
|
||||
<article className="discovery-step-card" data-reveal="fade">
|
||||
<div className="discovery-step-number">1</div>
|
||||
<h3>Bestellen</h3>
|
||||
<p>
|
||||
Discovery Set für CHF 48 bestellen. Nur dein erstes Set erzeugt
|
||||
automatisch einen einmaligen Rabatt.
|
||||
</p>
|
||||
</article>
|
||||
|
||||
<article className="discovery-step-card" data-reveal="fade">
|
||||
<div className="discovery-step-number">2</div>
|
||||
<h3>Testen</h3>
|
||||
<p>
|
||||
Jeden Duft mindestens einige Tage tragen. Im Alltag, zu
|
||||
verschiedenen Anlässen und auf der eigenen Haut.
|
||||
</p>
|
||||
</article>
|
||||
|
||||
<article className="discovery-step-card" data-reveal="fade">
|
||||
<div className="discovery-step-number">3</div>
|
||||
<h3>Entscheiden</h3>
|
||||
<p>
|
||||
Full-Size bestellen. CHF 48 werden automatisch angerechnet,
|
||||
sofern der Rabatt noch nicht genutzt wurde.
|
||||
</p>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section className="discovery-comparison-section" data-reveal-group>
|
||||
<div className="discovery-section-heading discovery-section-heading--center">
|
||||
<span className="discovery-label" data-reveal="fade">
|
||||
WARUM DISCOVERY SET
|
||||
</span>
|
||||
<h2 data-reveal="lines">DER KLÜGERE EINSTIEG IN NISCHENDÜFTE.</h2>
|
||||
<p data-reveal="fade">
|
||||
Nischen-Parfums sind keine Impulskäufe. Sie brauchen Zeit, um zu
|
||||
verstehen, wie sie auf deiner Haut funktionieren, wie sie sich im
|
||||
Alltag entwickeln und ob sie wirklich zu dir passen.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div className="discovery-comparison-grid">
|
||||
<div className="discovery-comparison-card" data-reveal="fade">
|
||||
<div className="discovery-comparison-head">
|
||||
<span className="discovery-comparison-icon">×</span>
|
||||
<h3>Traditioneller Weg</h3>
|
||||
</div>
|
||||
<p>
|
||||
CHF 180+ für eine Full Size ausgeben, ohne zu wissen, ob sie
|
||||
wirklich passt. Risiko: Fehlkauf, Überforderung oder ein Duft,
|
||||
der im Regal bleibt.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div
|
||||
className="discovery-comparison-card discovery-comparison-card--highlight"
|
||||
data-reveal="fade"
|
||||
>
|
||||
<div className="discovery-comparison-head">
|
||||
<span className="discovery-comparison-icon">✓</span>
|
||||
<h3>Discovery Set Weg</h3>
|
||||
</div>
|
||||
<p>
|
||||
CHF 48 investieren, alle Düfte testen, bewusst entscheiden. Die
|
||||
erste Investition wird einmalig angerechnet – der Einstieg bleibt
|
||||
kontrolliert, nachvollziehbar und fair.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="discovery-bottom-cta" data-reveal="fade">
|
||||
<button type="button" className="discovery-primary-btn" onClick={buyDiscoverySet}>
|
||||
DISCOVERY SET BESTELLEN – CHF 48.–
|
||||
</button>
|
||||
<p>Kostenloser Versand · 2–3 Werktage · Einmalige Anrechnung bei Full-Size</p>
|
||||
</div>
|
||||
</section>
|
||||
<DiscoveryHero onBuy={buyDiscoverySet} />
|
||||
<DiscoveryStorySection />
|
||||
<DiscoveryIncludedSection />
|
||||
<DiscoveryProcessSection />
|
||||
<DiscoveryComparisonSection />
|
||||
<DiscoveryFinalCta onBuy={buyDiscoverySet} />
|
||||
</main>
|
||||
</div>
|
||||
);
|
||||
|
||||
@ -1,206 +1,62 @@
|
||||
.impressum-page {
|
||||
min-height: 100vh;
|
||||
padding: 0 0 var(--section-y-sm);
|
||||
color: var(--theme-text);
|
||||
padding: 26px 38px 38px;
|
||||
background:
|
||||
linear-gradient(to right, rgba(0, 0, 0, 0.45), rgba(0, 0, 0, 0.1)),
|
||||
linear-gradient(to bottom, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.45));
|
||||
}
|
||||
|
||||
.impressum-shell {
|
||||
background: var(--theme-surface);
|
||||
border: 1px solid var(--theme-border);
|
||||
padding: 38px;
|
||||
radial-gradient(circle at 86% 8%, rgba(var(--theme-accent-rgb) / 0.12), transparent 28rem),
|
||||
linear-gradient(180deg, var(--theme-bg), color-mix(in srgb, var(--theme-bg) 88%, #000 12%));
|
||||
}
|
||||
|
||||
.impressum-kicker,
|
||||
.impressum-label {
|
||||
display: block;
|
||||
font-size: 10px;
|
||||
letter-spacing: 0.22em;
|
||||
color: var(--theme-text-muted);
|
||||
font-size: var(--text-xs);
|
||||
letter-spacing: 0.22em;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.impressum-hero {
|
||||
padding-bottom: 32px;
|
||||
padding: clamp(2rem, 5vw, 5rem) 0 var(--section-y-sm);
|
||||
border-bottom: 1px solid var(--theme-border);
|
||||
}
|
||||
|
||||
.impressum-hero h1 {
|
||||
margin: 14px 0 16px;
|
||||
font-size: 64px;
|
||||
line-height: 0.92;
|
||||
font-weight: 300;
|
||||
letter-spacing: 0;
|
||||
margin: clamp(0.85rem, 2vw, 1.2rem) 0 clamp(1rem, 2vw, 1.35rem);
|
||||
color: var(--theme-text);
|
||||
}
|
||||
|
||||
.impressum-intro {
|
||||
max-width: 760px;
|
||||
margin: 0;
|
||||
font-size: 17px;
|
||||
line-height: 1.65;
|
||||
color: var(--theme-text-muted);
|
||||
}
|
||||
|
||||
.impressum-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 18px;
|
||||
margin-top: 38px;
|
||||
}
|
||||
|
||||
.impressum-card {
|
||||
padding: 24px;
|
||||
background: var(--theme-bg);
|
||||
border: 1px solid var(--theme-border);
|
||||
min-height: 210px;
|
||||
}
|
||||
|
||||
.impressum-card h2 {
|
||||
margin: 14px 0 12px;
|
||||
font-size: 26px;
|
||||
line-height: 1.05;
|
||||
font-weight: 400;
|
||||
color: var(--theme-text);
|
||||
}
|
||||
|
||||
.impressum-card p {
|
||||
margin: 0;
|
||||
font-size: 15px;
|
||||
line-height: 1.7;
|
||||
color: var(--theme-text-muted);
|
||||
}
|
||||
|
||||
.impressum-section {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(260px, 0.7fr) minmax(0, 1.3fr);
|
||||
gap: 28px;
|
||||
align-items: start;
|
||||
margin-top: 38px;
|
||||
padding-top: 38px;
|
||||
border-top: 1px solid var(--theme-border);
|
||||
}
|
||||
|
||||
.impressum-section-heading h2 {
|
||||
margin: 10px 0 0;
|
||||
font-size: 38px;
|
||||
line-height: 0.98;
|
||||
font-weight: 300;
|
||||
letter-spacing: 0;
|
||||
color: var(--theme-text);
|
||||
}
|
||||
|
||||
.impressum-section-copy p {
|
||||
margin: 0 0 16px;
|
||||
font-size: 16px;
|
||||
line-height: 1.75;
|
||||
color: var(--theme-text-muted);
|
||||
}
|
||||
|
||||
.impressum-note-box {
|
||||
padding: 22px;
|
||||
border: 1px solid rgba(255, 106, 0, 0.18);
|
||||
background: linear-gradient(
|
||||
180deg,
|
||||
rgba(255, 106, 0, 0.08),
|
||||
rgba(255, 106, 0, 0.03)
|
||||
);
|
||||
}
|
||||
|
||||
.impressum-note-box p {
|
||||
margin: 0;
|
||||
font-size: 15px;
|
||||
line-height: 1.65;
|
||||
color: var(--theme-text);
|
||||
}
|
||||
|
||||
@media (max-width: 1100px) {
|
||||
.impressum-grid,
|
||||
.impressum-section {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.impressum-hero h1 {
|
||||
font-size: 48px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 700px) {
|
||||
.impressum-page {
|
||||
padding: 18px;
|
||||
}
|
||||
|
||||
.impressum-shell {
|
||||
padding: 24px 18px;
|
||||
}
|
||||
|
||||
.impressum-hero h1 {
|
||||
font-size: 36px;
|
||||
}
|
||||
|
||||
.impressum-section-heading h2 {
|
||||
font-size: 28px;
|
||||
}
|
||||
|
||||
.impressum-intro,
|
||||
.impressum-card p,
|
||||
.impressum-section-copy p {
|
||||
font-size: 15px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* --- Design System Refinement Start --- */
|
||||
|
||||
.impressum-page {
|
||||
padding: clamp(1rem, 3vw, 2.4rem) var(--page-x) clamp(2rem, 5vw, 4rem);
|
||||
background:
|
||||
radial-gradient(circle at 88% 9%, rgba(var(--theme-accent-rgb) / 0.12), transparent 28rem),
|
||||
linear-gradient(135deg, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.08)),
|
||||
var(--theme-bg);
|
||||
}
|
||||
|
||||
.impressum-shell {
|
||||
width: var(--container-narrow);
|
||||
margin: 0 auto;
|
||||
padding: clamp(1.25rem, 3vw, 2.8rem);
|
||||
border-radius: var(--radius-lg);
|
||||
box-shadow: var(--theme-shadow);
|
||||
}
|
||||
|
||||
.impressum-kicker,
|
||||
.impressum-label {
|
||||
font-size: var(--text-xs);
|
||||
}
|
||||
|
||||
.impressum-hero {
|
||||
padding-bottom: var(--section-y-xs);
|
||||
}
|
||||
|
||||
.impressum-hero h1 {
|
||||
font-size: clamp(3rem, 8vw, 7.2rem);
|
||||
line-height: 0.9;
|
||||
font-weight: 300;
|
||||
letter-spacing: 0;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.impressum-intro {
|
||||
max-width: var(--text-measure);
|
||||
margin: 0;
|
||||
color: var(--theme-text-muted);
|
||||
font-size: var(--text-lg);
|
||||
line-height: 1.65;
|
||||
}
|
||||
|
||||
.impressum-grid {
|
||||
grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr));
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
gap: var(--gap-sm);
|
||||
margin-top: var(--section-y-xs);
|
||||
margin-top: var(--section-y-sm);
|
||||
}
|
||||
|
||||
.impressum-card,
|
||||
.impressum-note-box {
|
||||
border-radius: var(--radius-lg);
|
||||
border: 1px solid var(--theme-border);
|
||||
background:
|
||||
linear-gradient(180deg, rgba(255, 255, 255, 0.035), rgba(255, 255, 255, 0.008)),
|
||||
var(--theme-surface-soft);
|
||||
}
|
||||
|
||||
.impressum-card {
|
||||
min-height: 210px;
|
||||
padding: clamp(1.1rem, 2.4vw, 1.8rem);
|
||||
transition:
|
||||
transform var(--duration-med) var(--ease-out),
|
||||
border-color var(--duration-med) var(--ease-out),
|
||||
@ -213,42 +69,74 @@
|
||||
box-shadow: var(--theme-shadow-soft);
|
||||
}
|
||||
|
||||
.impressum-card h2,
|
||||
.impressum-section-heading h2 {
|
||||
.impressum-card h2 {
|
||||
margin: 0.9rem 0 0.75rem;
|
||||
color: var(--theme-text);
|
||||
font-size: var(--text-xl);
|
||||
line-height: 1.08;
|
||||
font-weight: 400;
|
||||
letter-spacing: 0;
|
||||
}
|
||||
|
||||
.impressum-card h2 {
|
||||
font-size: var(--text-xl);
|
||||
.impressum-card p {
|
||||
margin: 0;
|
||||
color: var(--theme-text-muted);
|
||||
font-size: var(--text-base);
|
||||
line-height: 1.7;
|
||||
}
|
||||
|
||||
.impressum-section {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(14rem, 0.72fr) minmax(0, 1.28fr);
|
||||
gap: var(--gap-lg);
|
||||
margin-top: var(--section-y-xs);
|
||||
padding-top: var(--section-y-xs);
|
||||
align-items: start;
|
||||
margin-top: var(--section-y-sm);
|
||||
padding-top: var(--section-y-sm);
|
||||
border-top: 1px solid var(--theme-border);
|
||||
}
|
||||
|
||||
.impressum-section-heading h2 {
|
||||
margin: 0.75rem 0 0;
|
||||
color: var(--theme-text);
|
||||
font-size: clamp(2rem, 4.2vw, 4.5rem);
|
||||
line-height: 0.96;
|
||||
font-weight: 300;
|
||||
letter-spacing: 0;
|
||||
text-transform: uppercase;
|
||||
text-wrap: balance;
|
||||
}
|
||||
|
||||
.impressum-card p,
|
||||
.impressum-section-copy p,
|
||||
.impressum-note-box p {
|
||||
.impressum-section-copy p {
|
||||
margin: 0 0 1rem;
|
||||
color: var(--theme-text-muted);
|
||||
font-size: var(--text-base);
|
||||
line-height: 1.75;
|
||||
}
|
||||
|
||||
.impressum-note-box {
|
||||
padding: clamp(1.1rem, 2.4vw, 1.8rem);
|
||||
border-color: rgba(var(--theme-accent-rgb) / 0.24);
|
||||
background:
|
||||
linear-gradient(135deg, rgba(var(--theme-accent-rgb) / 0.11), transparent 60%),
|
||||
var(--theme-surface-soft);
|
||||
}
|
||||
|
||||
.impressum-note-box p {
|
||||
margin: 0;
|
||||
color: var(--theme-text);
|
||||
font-size: var(--text-base);
|
||||
line-height: 1.65;
|
||||
}
|
||||
|
||||
@media (max-width: 900px) {
|
||||
.impressum-grid,
|
||||
.impressum-section {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 700px) {
|
||||
.impressum-page {
|
||||
padding-inline: var(--page-x);
|
||||
}
|
||||
|
||||
.impressum-shell {
|
||||
width: var(--container-wide);
|
||||
padding-inline: clamp(0.9rem, 4vw, 1.1rem);
|
||||
.impressum-hero {
|
||||
padding-top: clamp(1.4rem, 5vw, 2rem);
|
||||
}
|
||||
}
|
||||
|
||||
/* --- Design System Refinement End --- */
|
||||
|
||||
|
||||
@ -6,7 +6,7 @@ function ImpressumPage() {
|
||||
<div className="impressum-page">
|
||||
<SharedNavbar variant="light" />
|
||||
|
||||
<main className="impressum-shell">
|
||||
<main className="shell">
|
||||
<section className="impressum-hero" data-reveal-group>
|
||||
<span className="impressum-kicker" data-reveal="fade">
|
||||
RECHTLICHE ANGABEN
|
||||
|
||||
@ -447,9 +447,22 @@
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
min-width: 2rem;
|
||||
width: 2rem;
|
||||
height: 2rem;
|
||||
color: var(--theme-accent);
|
||||
font-size: clamp(1.5rem, 2.5vw, 2rem);
|
||||
line-height: 1;
|
||||
font-size: 0;
|
||||
line-height: 0;
|
||||
}
|
||||
|
||||
.arrow::before {
|
||||
content: "";
|
||||
display: block;
|
||||
width: clamp(1.35rem, 2.2vw, 1.75rem);
|
||||
height: clamp(1.35rem, 2.2vw, 1.75rem);
|
||||
background: currentColor;
|
||||
transform: rotate(180deg);
|
||||
-webkit-mask: url("/icon-arrow-left.svg") center / contain no-repeat;
|
||||
mask: url("/icon-arrow-left.svg") center / contain no-repeat;
|
||||
}
|
||||
|
||||
.product-id,
|
||||
|
||||
@ -450,7 +450,7 @@ function LandingPage() {
|
||||
|
||||
<div className="product-bottom">
|
||||
<p>{item.text}</p>
|
||||
<span className="arrow">→</span>
|
||||
<span className="arrow" aria-hidden="true" />
|
||||
</div>
|
||||
</Link>
|
||||
))}
|
||||
|
||||
@ -1,193 +1,90 @@
|
||||
.small-page {
|
||||
min-height: 100vh;
|
||||
padding: 26px 38px 38px;
|
||||
background: var(--theme-bg);
|
||||
padding: 0 0 var(--section-y-sm);
|
||||
color: var(--theme-text);
|
||||
}
|
||||
|
||||
.small-shell {
|
||||
background: var(--theme-surface);
|
||||
border: 1px solid var(--theme-border);
|
||||
padding: 38px;
|
||||
}
|
||||
|
||||
.small-hero {
|
||||
max-width: 780px;
|
||||
padding-bottom: 34px;
|
||||
border-bottom: 1px solid var(--theme-border);
|
||||
margin-bottom: 28px;
|
||||
}
|
||||
|
||||
.small-kicker {
|
||||
display: block;
|
||||
margin-bottom: 12px;
|
||||
color: var(--theme-text-muted);
|
||||
font-size: 10px;
|
||||
letter-spacing: 0.22em;
|
||||
}
|
||||
|
||||
.small-hero h1,
|
||||
.small-panel h2 {
|
||||
margin: 0 0 14px;
|
||||
letter-spacing: 0;
|
||||
}
|
||||
|
||||
.small-hero h1 {
|
||||
font-size: clamp(42px, 8vw, 92px);
|
||||
line-height: 0.92;
|
||||
}
|
||||
|
||||
.small-hero p,
|
||||
.small-panel p,
|
||||
.release-card p {
|
||||
margin: 0;
|
||||
color: var(--theme-text-muted);
|
||||
line-height: 1.55;
|
||||
}
|
||||
|
||||
.small-panel,
|
||||
.release-card,
|
||||
.small-error {
|
||||
background: var(--theme-surface-soft);
|
||||
border: 1px solid var(--theme-border);
|
||||
padding: 22px;
|
||||
}
|
||||
|
||||
.small-panel button,
|
||||
.release-card button {
|
||||
min-height: 44px;
|
||||
margin-top: 18px;
|
||||
border: 1px solid #1f1f1f;
|
||||
border-radius: 0;
|
||||
background: #1f1f1f;
|
||||
color: #fff;
|
||||
padding: 0 18px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.small-requirements {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
gap: 12px;
|
||||
margin-top: 18px;
|
||||
}
|
||||
|
||||
.small-requirement {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
gap: 12px;
|
||||
padding: 14px;
|
||||
background: var(--theme-surface-soft);
|
||||
border: 1px solid var(--theme-border);
|
||||
}
|
||||
|
||||
.small-requirement span,
|
||||
.release-card span {
|
||||
color: var(--theme-text-muted);
|
||||
font-size: 10px;
|
||||
letter-spacing: 0.18em;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.small-requirement strong.met {
|
||||
color: #ff6a00;
|
||||
}
|
||||
|
||||
.release-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||
gap: 16px;
|
||||
margin-top: 22px;
|
||||
}
|
||||
|
||||
.release-card h3 {
|
||||
margin: 10px 0 12px;
|
||||
}
|
||||
|
||||
.small-error {
|
||||
margin: 16px 0 0;
|
||||
border-color: #ff6a00;
|
||||
}
|
||||
|
||||
@media (max-width: 760px) {
|
||||
.small-page {
|
||||
padding: 18px;
|
||||
}
|
||||
|
||||
.small-shell {
|
||||
padding: 24px 18px;
|
||||
}
|
||||
|
||||
.small-requirements,
|
||||
.release-grid {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* --- Design System Refinement Start --- */
|
||||
|
||||
.small-page {
|
||||
padding: clamp(1rem, 3vw, 2.4rem) var(--page-x) clamp(2rem, 5vw, 4rem);
|
||||
background:
|
||||
radial-gradient(circle at 84% 7%, rgba(var(--theme-accent-rgb) / 0.12), transparent 28rem),
|
||||
var(--theme-bg);
|
||||
}
|
||||
|
||||
.small-shell {
|
||||
width: var(--container-wide);
|
||||
margin: 0 auto;
|
||||
padding: clamp(1.25rem, 3vw, 2.8rem);
|
||||
border-radius: var(--radius-lg);
|
||||
box-shadow: var(--theme-shadow);
|
||||
radial-gradient(circle at 84% 8%, rgba(var(--theme-accent-rgb) / 0.13), transparent 28rem),
|
||||
linear-gradient(180deg, var(--theme-bg), color-mix(in srgb, var(--theme-bg) 88%, #000 12%));
|
||||
}
|
||||
|
||||
.small-hero {
|
||||
max-width: min(100%, 58rem);
|
||||
padding-bottom: var(--section-y-xs);
|
||||
margin-bottom: var(--gap-lg);
|
||||
max-width: 64rem;
|
||||
padding: clamp(2rem, 5vw, 5rem) 0 var(--section-y-sm);
|
||||
border-bottom: 1px solid var(--theme-border);
|
||||
}
|
||||
|
||||
.small-kicker,
|
||||
.small-requirement span,
|
||||
.release-card span {
|
||||
display: block;
|
||||
margin-bottom: 0.75rem;
|
||||
color: var(--theme-text-muted);
|
||||
font-size: var(--text-xs);
|
||||
letter-spacing: 0.22em;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.small-hero h1,
|
||||
.small-panel h2 {
|
||||
margin: 0 0 clamp(0.85rem, 2vw, 1.2rem);
|
||||
color: var(--theme-text);
|
||||
font-weight: 300;
|
||||
letter-spacing: 0;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.small-hero h1 {
|
||||
font-size: clamp(3rem, 9vw, 9rem);
|
||||
font-size: clamp(3rem, 8.6vw, 9rem);
|
||||
line-height: 0.88;
|
||||
text-wrap: balance;
|
||||
}
|
||||
|
||||
.small-panel h2 {
|
||||
font-size: clamp(2.2rem, 5vw, 5.4rem);
|
||||
line-height: 0.94;
|
||||
}
|
||||
|
||||
.small-hero p,
|
||||
.small-panel p,
|
||||
.release-card p {
|
||||
max-width: var(--text-measure);
|
||||
margin: 0;
|
||||
color: var(--theme-text-muted);
|
||||
font-size: var(--text-base);
|
||||
line-height: 1.65;
|
||||
}
|
||||
|
||||
.small-panel,
|
||||
.release-card,
|
||||
.small-error,
|
||||
.small-requirement {
|
||||
border-radius: var(--radius-lg);
|
||||
.small-error {
|
||||
border: 1px solid var(--theme-border);
|
||||
background:
|
||||
linear-gradient(180deg, rgba(255, 255, 255, 0.035), rgba(255, 255, 255, 0.008)),
|
||||
var(--theme-surface-soft);
|
||||
}
|
||||
|
||||
.small-panel,
|
||||
.release-card {
|
||||
padding: clamp(1.2rem, 3vw, 2rem);
|
||||
.small-panel {
|
||||
max-width: 68rem;
|
||||
margin-top: var(--section-y-sm);
|
||||
padding: clamp(1.25rem, 3vw, 2.2rem);
|
||||
}
|
||||
|
||||
.small-panel button,
|
||||
.release-card button {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
min-height: 48px;
|
||||
margin-top: 1.2rem;
|
||||
padding: 0 1.1rem;
|
||||
border: 1px solid #111;
|
||||
border-radius: 999px;
|
||||
background: #111;
|
||||
color: #fff;
|
||||
cursor: pointer;
|
||||
font-size: var(--text-sm);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.1em;
|
||||
transition:
|
||||
transform var(--duration-med) var(--ease-out),
|
||||
box-shadow var(--duration-med) var(--ease-out),
|
||||
@ -203,21 +100,60 @@
|
||||
}
|
||||
|
||||
.small-requirements {
|
||||
grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr));
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, minmax(0, 1fr));
|
||||
gap: var(--gap-sm);
|
||||
margin-top: clamp(1.4rem, 3vw, 2.4rem);
|
||||
}
|
||||
|
||||
.small-requirement {
|
||||
min-height: 4.5rem;
|
||||
min-height: 7rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
gap: var(--gap-xs);
|
||||
padding: clamp(1rem, 2vw, 1.4rem);
|
||||
border: 1px solid var(--theme-border);
|
||||
background: var(--theme-paper);
|
||||
}
|
||||
|
||||
.small-requirement span {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.small-requirement strong {
|
||||
color: var(--theme-text);
|
||||
font-size: var(--text-base);
|
||||
font-weight: 400;
|
||||
line-height: 1.3;
|
||||
}
|
||||
|
||||
.small-requirement strong.met {
|
||||
color: var(--theme-accent);
|
||||
}
|
||||
|
||||
.small-error {
|
||||
max-width: 68rem;
|
||||
margin: var(--gap-sm) 0 0;
|
||||
padding: clamp(1rem, 2vw, 1.4rem);
|
||||
border-color: rgba(var(--theme-accent-rgb) / 0.45);
|
||||
color: var(--theme-text);
|
||||
}
|
||||
|
||||
.release-grid {
|
||||
grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr));
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||
gap: var(--gap-sm);
|
||||
margin-top: var(--gap-lg);
|
||||
margin-top: var(--section-y-sm);
|
||||
}
|
||||
|
||||
.release-card {
|
||||
min-height: 280px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
gap: var(--gap-sm);
|
||||
padding: clamp(1.1rem, 2.4vw, 1.8rem);
|
||||
transition:
|
||||
transform var(--duration-med) var(--ease-out),
|
||||
border-color var(--duration-med) var(--ease-out),
|
||||
@ -230,23 +166,42 @@
|
||||
box-shadow: var(--theme-shadow-soft);
|
||||
}
|
||||
|
||||
.release-card span {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.release-card h3 {
|
||||
margin: 0;
|
||||
color: var(--theme-text);
|
||||
font-size: var(--text-xl);
|
||||
line-height: 1.08;
|
||||
font-weight: 400;
|
||||
letter-spacing: 0;
|
||||
}
|
||||
|
||||
@media (max-width: 760px) {
|
||||
.small-page {
|
||||
padding-inline: var(--page-x);
|
||||
}
|
||||
|
||||
.small-shell {
|
||||
width: var(--container-wide);
|
||||
padding-inline: clamp(0.9rem, 4vw, 1.1rem);
|
||||
@media (max-width: 1180px) {
|
||||
.small-requirements,
|
||||
.release-grid {
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
}
|
||||
}
|
||||
|
||||
/* --- Design System Refinement End --- */
|
||||
@media (max-width: 760px) {
|
||||
.small-hero {
|
||||
padding-top: clamp(1.4rem, 5vw, 2rem);
|
||||
}
|
||||
|
||||
.small-hero h1 {
|
||||
font-size: clamp(2.55rem, 13vw, 4.4rem);
|
||||
}
|
||||
|
||||
.small-requirements,
|
||||
.release-grid {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.small-panel button,
|
||||
.release-card button {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
@ -62,7 +62,7 @@ function SmallBatchPage() {
|
||||
<div className="small-page">
|
||||
<SharedNavbar variant="light" />
|
||||
|
||||
<main className="small-shell">
|
||||
<main className="shell">
|
||||
<section className="small-hero" data-reveal-group>
|
||||
<span className="small-kicker" data-reveal="fade">
|
||||
SMALL BATCH / ARCHIVE / PROTOTYPE
|
||||
|
||||
@ -1,16 +1,10 @@
|
||||
.support-page {
|
||||
min-height: 100vh;
|
||||
padding: 0 0 var(--section-y-sm);
|
||||
color: var(--theme-text);
|
||||
padding: 26px 38px 38px;
|
||||
background:
|
||||
linear-gradient(to right, rgba(0, 0, 0, 0.45), rgba(0, 0, 0, 0.1)),
|
||||
linear-gradient(to bottom, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.45));
|
||||
}
|
||||
|
||||
.support-shell {
|
||||
background: var(--theme-surface);
|
||||
border: 1px solid var(--theme-border);
|
||||
padding: 38px;
|
||||
radial-gradient(circle at 86% 8%, rgba(var(--theme-accent-rgb) / 0.13), transparent 28rem),
|
||||
linear-gradient(180deg, var(--theme-bg), color-mix(in srgb, var(--theme-bg) 88%, #000 12%));
|
||||
}
|
||||
|
||||
.support-kicker,
|
||||
@ -18,435 +12,119 @@
|
||||
.support-panel-label,
|
||||
.support-panel-meta span {
|
||||
display: block;
|
||||
font-size: 10px;
|
||||
letter-spacing: 0.22em;
|
||||
color: var(--theme-text-muted);
|
||||
font-size: var(--text-xs);
|
||||
letter-spacing: 0.22em;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.support-hero {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1.35fr) minmax(280px, 0.8fr);
|
||||
gap: 28px;
|
||||
grid-template-columns: minmax(0, 1.45fr) minmax(18rem, 0.72fr);
|
||||
gap: var(--gap-lg);
|
||||
align-items: end;
|
||||
padding-bottom: 36px;
|
||||
padding: clamp(2rem, 5vw, 5rem) 0 var(--section-y-sm);
|
||||
border-bottom: 1px solid var(--theme-border);
|
||||
}
|
||||
|
||||
.support-hero-copy h1 {
|
||||
margin: 14px 0 18px;
|
||||
font-size: 68px;
|
||||
line-height: 0.92;
|
||||
font-weight: 300;
|
||||
letter-spacing: 0;
|
||||
color: var(--theme-text);
|
||||
}
|
||||
|
||||
.support-intro {
|
||||
max-width: 720px;
|
||||
margin: 0;
|
||||
font-size: 18px;
|
||||
line-height: 1.65;
|
||||
color: var(--theme-text-muted);
|
||||
}
|
||||
|
||||
.support-hero-panel {
|
||||
padding: 24px;
|
||||
background: linear-gradient(
|
||||
180deg,
|
||||
rgba(255, 106, 0, 0.08),
|
||||
rgba(255, 106, 0, 0.03)
|
||||
);
|
||||
border: 1px solid rgba(255, 106, 0, 0.18);
|
||||
}
|
||||
|
||||
.support-hero-panel p {
|
||||
margin: 10px 0 0;
|
||||
font-size: 16px;
|
||||
line-height: 1.6;
|
||||
color: var(--theme-text);
|
||||
}
|
||||
|
||||
.support-panel-meta {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
gap: 16px;
|
||||
margin-top: 24px;
|
||||
padding-top: 20px;
|
||||
border-top: 1px solid rgba(255, 106, 0, 0.14);
|
||||
}
|
||||
|
||||
.support-panel-meta p {
|
||||
margin: 8px 0 0;
|
||||
font-size: 14px;
|
||||
line-height: 1.55;
|
||||
color: var(--theme-text);
|
||||
}
|
||||
|
||||
.support-quick-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: 18px;
|
||||
margin-top: 38px;
|
||||
}
|
||||
|
||||
.support-quick-card {
|
||||
padding: 24px;
|
||||
background: var(--theme-bg);
|
||||
border: 1px solid var(--theme-border);
|
||||
min-height: 240px;
|
||||
}
|
||||
|
||||
.support-quick-card h3 {
|
||||
margin: 14px 0 12px;
|
||||
font-size: 24px;
|
||||
line-height: 1.08;
|
||||
font-weight: 400;
|
||||
color: var(--theme-text);
|
||||
}
|
||||
|
||||
.support-quick-card p {
|
||||
margin: 0;
|
||||
font-size: 15px;
|
||||
line-height: 1.65;
|
||||
color: var(--theme-text-muted);
|
||||
}
|
||||
|
||||
.support-section {
|
||||
padding-top: 38px;
|
||||
}
|
||||
|
||||
.support-section--split {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(260px, 0.7fr) minmax(0, 1.3fr);
|
||||
gap: 28px;
|
||||
align-items: start;
|
||||
}
|
||||
|
||||
.support-section-heading h2,
|
||||
.support-bottom-copy h2 {
|
||||
margin: 10px 0 0;
|
||||
font-size: 42px;
|
||||
line-height: 0.98;
|
||||
font-weight: 300;
|
||||
letter-spacing: 0;
|
||||
color: var(--theme-text);
|
||||
}
|
||||
|
||||
.support-section-copy {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 18px;
|
||||
}
|
||||
|
||||
.support-section-copy p,
|
||||
.support-bottom-copy p {
|
||||
margin: 0;
|
||||
font-size: 16px;
|
||||
line-height: 1.7;
|
||||
color: var(--theme-text-muted);
|
||||
}
|
||||
|
||||
.support-info-grid {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1fr) minmax(320px, 0.9fr);
|
||||
gap: 18px;
|
||||
margin-top: 38px;
|
||||
}
|
||||
|
||||
.support-info-box {
|
||||
padding: 24px;
|
||||
border: 1px solid var(--theme-border);
|
||||
background: var(--theme-surface-soft);
|
||||
}
|
||||
|
||||
.support-info-box h3 {
|
||||
margin: 14px 0 12px;
|
||||
font-size: 28px;
|
||||
line-height: 1.02;
|
||||
font-weight: 400;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.support-info-box p {
|
||||
margin: 0;
|
||||
font-size: 15px;
|
||||
line-height: 1.65;
|
||||
color: var(--theme-text-muted);
|
||||
}
|
||||
|
||||
.support-info-box--dark {
|
||||
background: #1f1f1f;
|
||||
border-color: var(--theme-text);
|
||||
}
|
||||
|
||||
.support-info-box--dark .support-label,
|
||||
.support-info-box--dark p {
|
||||
color: rgba(255, 255, 255, 0.78);
|
||||
}
|
||||
|
||||
.support-list {
|
||||
margin: 14px 0 0;
|
||||
padding-left: 18px;
|
||||
display: grid;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.support-list li {
|
||||
font-size: 15px;
|
||||
line-height: 1.6;
|
||||
color: var(--theme-text);
|
||||
}
|
||||
|
||||
.support-mail-btn {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-top: 18px;
|
||||
text-decoration: none;
|
||||
padding: 12px 18px;
|
||||
border-radius: 999px;
|
||||
background: #ff6a00;
|
||||
color: #fff;
|
||||
font-size: 14px;
|
||||
transition: transform 0.2s ease, opacity 0.2s ease, box-shadow 0.2s ease;
|
||||
}
|
||||
|
||||
.support-mail-btn:hover {
|
||||
transform: translateY(-1px);
|
||||
}
|
||||
|
||||
.support-faq-section {
|
||||
margin-top: 38px;
|
||||
padding-top: 38px;
|
||||
border-top: 1px solid var(--theme-border);
|
||||
}
|
||||
|
||||
.support-faq-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 18px;
|
||||
margin-top: 28px;
|
||||
}
|
||||
|
||||
.support-faq-card {
|
||||
padding: 24px;
|
||||
border: 1px solid var(--theme-border);
|
||||
background: var(--theme-bg);
|
||||
min-height: 210px;
|
||||
}
|
||||
|
||||
.support-faq-card h3 {
|
||||
margin: 0 0 12px;
|
||||
font-size: 22px;
|
||||
line-height: 1.08;
|
||||
font-weight: 400;
|
||||
color: var(--theme-text);
|
||||
}
|
||||
|
||||
.support-faq-card p {
|
||||
margin: 0;
|
||||
font-size: 15px;
|
||||
line-height: 1.65;
|
||||
color: var(--theme-text-muted);
|
||||
}
|
||||
|
||||
.support-bottom-cta {
|
||||
margin-top: 38px;
|
||||
padding: 38px;
|
||||
background: #ff6a00;
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1.2fr) auto;
|
||||
gap: 24px;
|
||||
align-items: end;
|
||||
}
|
||||
|
||||
.support-bottom-copy .support-label,
|
||||
.support-bottom-copy h2,
|
||||
.support-bottom-copy p {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.support-bottom-copy .support-label {
|
||||
opacity: 0.85;
|
||||
}
|
||||
|
||||
.support-bottom-copy p {
|
||||
margin-top: 16px;
|
||||
max-width: 700px;
|
||||
}
|
||||
|
||||
.support-bottom-actions {
|
||||
display: flex;
|
||||
gap: 12px;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.support-btn {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
text-decoration: none;
|
||||
padding: 12px 18px;
|
||||
font-size: 14px;
|
||||
border-radius: 999px;
|
||||
transition: transform 0.2s ease, opacity 0.2s ease, box-shadow 0.2s ease;
|
||||
}
|
||||
|
||||
.support-btn:hover {
|
||||
transform: translateY(-1px);
|
||||
}
|
||||
|
||||
.support-btn--primary {
|
||||
background: var(--theme-paper);
|
||||
color: #ff6a00;
|
||||
}
|
||||
|
||||
.support-btn--secondary {
|
||||
background: rgba(255, 255, 255, 0.14);
|
||||
color: #fff;
|
||||
backdrop-filter: blur(8px);
|
||||
}
|
||||
|
||||
@media (max-width: 1100px) {
|
||||
.support-hero,
|
||||
.support-section--split,
|
||||
.support-info-grid,
|
||||
.support-bottom-cta {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.support-hero-copy h1 {
|
||||
font-size: 52px;
|
||||
}
|
||||
|
||||
.support-quick-grid,
|
||||
.support-faq-grid {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 700px) {
|
||||
.support-page {
|
||||
padding: 18px;
|
||||
}
|
||||
|
||||
.support-shell {
|
||||
padding: 24px 18px;
|
||||
}
|
||||
|
||||
.support-hero-copy h1 {
|
||||
font-size: 38px;
|
||||
}
|
||||
|
||||
.support-section-heading h2,
|
||||
.support-bottom-copy h2 {
|
||||
font-size: 30px;
|
||||
}
|
||||
|
||||
.support-intro,
|
||||
.support-section-copy p,
|
||||
.support-bottom-copy p,
|
||||
.support-quick-card p,
|
||||
.support-faq-card p {
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
.support-bottom-cta {
|
||||
padding: 26px 20px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* --- Design System Refinement Start --- */
|
||||
|
||||
.support-page {
|
||||
padding: clamp(1rem, 3vw, 2.4rem) var(--page-x) clamp(2rem, 5vw, 4rem);
|
||||
background:
|
||||
radial-gradient(circle at 88% 9%, rgba(var(--theme-accent-rgb) / 0.12), transparent 28rem),
|
||||
linear-gradient(135deg, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.08)),
|
||||
var(--theme-bg);
|
||||
}
|
||||
|
||||
.support-shell {
|
||||
width: var(--container-wide);
|
||||
margin: 0 auto;
|
||||
padding: clamp(1.25rem, 3vw, 2.8rem);
|
||||
border-radius: var(--radius-lg);
|
||||
box-shadow: var(--theme-shadow);
|
||||
}
|
||||
|
||||
.support-kicker,
|
||||
.support-label,
|
||||
.support-panel-label,
|
||||
.support-panel-meta span {
|
||||
font-size: var(--text-xs);
|
||||
}
|
||||
|
||||
.support-hero {
|
||||
grid-template-columns: minmax(0, 1.45fr) minmax(18rem, 0.72fr);
|
||||
gap: var(--gap-lg);
|
||||
padding-bottom: var(--section-y-xs);
|
||||
.support-hero-copy {
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.support-hero-copy h1 {
|
||||
max-width: 10.8ch;
|
||||
margin: clamp(0.85rem, 2vw, 1.2rem) 0 clamp(1rem, 2vw, 1.35rem);
|
||||
color: var(--theme-text);
|
||||
font-size: clamp(3rem, 7.4vw, 8.8rem);
|
||||
line-height: 0.9;
|
||||
font-weight: 300;
|
||||
letter-spacing: 0;
|
||||
text-transform: uppercase;
|
||||
text-wrap: balance;
|
||||
}
|
||||
|
||||
.support-intro {
|
||||
max-width: var(--text-measure);
|
||||
margin: 0;
|
||||
color: var(--theme-text-muted);
|
||||
font-size: var(--text-lg);
|
||||
}
|
||||
|
||||
.support-hero-panel,
|
||||
.support-quick-card,
|
||||
.support-info-box,
|
||||
.support-faq-card,
|
||||
.support-bottom-cta {
|
||||
border-radius: var(--radius-lg);
|
||||
line-height: 1.65;
|
||||
}
|
||||
|
||||
.support-hero-panel {
|
||||
padding: clamp(1.25rem, 3vw, 2rem);
|
||||
border: 1px solid rgba(var(--theme-accent-rgb) / 0.2);
|
||||
background:
|
||||
linear-gradient(135deg, rgba(var(--theme-accent-rgb) / 0.1), transparent 62%),
|
||||
var(--theme-surface-soft);
|
||||
}
|
||||
|
||||
.support-hero-panel p {
|
||||
margin: 0.75rem 0 0;
|
||||
color: var(--theme-text);
|
||||
font-size: var(--text-base);
|
||||
line-height: 1.62;
|
||||
}
|
||||
|
||||
.support-panel-meta {
|
||||
display: grid;
|
||||
gap: var(--gap-sm);
|
||||
margin-top: clamp(1.2rem, 2.6vw, 2rem);
|
||||
padding-top: var(--gap-sm);
|
||||
border-top: 1px solid rgba(var(--theme-accent-rgb) / 0.2);
|
||||
}
|
||||
|
||||
.support-panel-meta p {
|
||||
margin: 0.45rem 0 0;
|
||||
color: var(--theme-text);
|
||||
font-size: var(--text-sm);
|
||||
line-height: 1.55;
|
||||
}
|
||||
|
||||
.support-quick-grid,
|
||||
.support-info-grid,
|
||||
.support-faq-grid {
|
||||
display: grid;
|
||||
gap: var(--gap-sm);
|
||||
margin-top: var(--section-y-xs);
|
||||
}
|
||||
|
||||
.support-quick-grid {
|
||||
grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr));
|
||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||
margin-top: var(--section-y-sm);
|
||||
}
|
||||
|
||||
.support-faq-grid {
|
||||
grid-template-columns: repeat(auto-fit, minmax(min(100%, 24rem), 1fr));
|
||||
}
|
||||
|
||||
.support-section {
|
||||
padding-top: var(--section-y-xs);
|
||||
.support-section,
|
||||
.support-faq-section {
|
||||
padding-top: var(--section-y-sm);
|
||||
}
|
||||
|
||||
.support-section--split,
|
||||
.support-info-grid,
|
||||
.support-bottom-cta {
|
||||
.support-info-grid {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(16rem, 0.72fr) minmax(0, 1.28fr);
|
||||
gap: var(--gap-lg);
|
||||
align-items: start;
|
||||
}
|
||||
|
||||
.support-info-grid {
|
||||
margin-top: var(--section-y-sm);
|
||||
}
|
||||
|
||||
.support-section-heading h2,
|
||||
.support-bottom-copy h2 {
|
||||
margin: 0.75rem 0 0;
|
||||
color: var(--theme-text);
|
||||
font-size: clamp(2.15rem, 5.2vw, 6rem);
|
||||
line-height: 0.94;
|
||||
font-weight: 300;
|
||||
letter-spacing: 0;
|
||||
text-transform: uppercase;
|
||||
text-wrap: balance;
|
||||
}
|
||||
|
||||
.support-section-copy {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: var(--gap-sm);
|
||||
}
|
||||
|
||||
@ -456,12 +134,21 @@
|
||||
.support-faq-card p,
|
||||
.support-info-box p,
|
||||
.support-list li {
|
||||
margin: 0;
|
||||
color: var(--theme-text-muted);
|
||||
font-size: var(--text-base);
|
||||
line-height: 1.7;
|
||||
}
|
||||
|
||||
.support-quick-card,
|
||||
.support-faq-card,
|
||||
.support-info-box {
|
||||
min-height: 100%;
|
||||
padding: clamp(1.1rem, 2.4vw, 1.8rem);
|
||||
border: 1px solid var(--theme-border);
|
||||
background:
|
||||
linear-gradient(180deg, rgba(255, 255, 255, 0.035), rgba(255, 255, 255, 0.008)),
|
||||
var(--theme-surface-soft);
|
||||
transition:
|
||||
transform var(--duration-med) var(--ease-out),
|
||||
border-color var(--duration-med) var(--ease-out),
|
||||
@ -479,72 +166,170 @@
|
||||
.support-quick-card h3,
|
||||
.support-faq-card h3,
|
||||
.support-info-box h3 {
|
||||
margin: 0.9rem 0 0.75rem;
|
||||
color: var(--theme-text);
|
||||
font-size: var(--text-xl);
|
||||
line-height: 1.08;
|
||||
font-weight: 400;
|
||||
letter-spacing: 0;
|
||||
}
|
||||
|
||||
.support-info-box--dark {
|
||||
border-color: rgba(255, 255, 255, 0.16);
|
||||
background:
|
||||
radial-gradient(circle at 100% 0%, rgba(var(--theme-accent-rgb) / 0.18), transparent 18rem),
|
||||
#171717;
|
||||
}
|
||||
|
||||
.support-info-box--dark .support-label,
|
||||
.support-info-box--dark p {
|
||||
color: rgba(255, 255, 255, 0.78);
|
||||
}
|
||||
|
||||
.support-info-box--dark h3 {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.support-list {
|
||||
display: grid;
|
||||
gap: 0.75rem;
|
||||
margin: 1rem 0 0;
|
||||
padding-left: 1.1rem;
|
||||
}
|
||||
|
||||
.support-mail-btn {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
min-height: 48px;
|
||||
margin-top: 1.15rem;
|
||||
padding: 0 1.1rem;
|
||||
border-radius: 999px;
|
||||
background: var(--theme-accent);
|
||||
color: #fff;
|
||||
font-size: var(--text-sm);
|
||||
text-decoration: none;
|
||||
transition:
|
||||
transform var(--duration-med) var(--ease-out),
|
||||
box-shadow var(--duration-med) var(--ease-out);
|
||||
}
|
||||
|
||||
.support-mail-btn:hover,
|
||||
.support-mail-btn:focus-visible {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: var(--theme-shadow-soft);
|
||||
}
|
||||
|
||||
.support-faq-section {
|
||||
margin-top: var(--section-y-xs);
|
||||
padding-top: var(--section-y-xs);
|
||||
margin-top: var(--section-y-sm);
|
||||
border-top: 1px solid var(--theme-border);
|
||||
}
|
||||
|
||||
.support-faq-grid {
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
margin-top: clamp(1.6rem, 4vw, 3rem);
|
||||
}
|
||||
|
||||
.support-bottom-cta {
|
||||
margin-top: var(--section-y-xs);
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1fr) auto;
|
||||
gap: var(--gap-lg);
|
||||
align-items: end;
|
||||
margin-top: var(--section-y-sm);
|
||||
padding: clamp(1.5rem, 4vw, 3.5rem);
|
||||
overflow: hidden;
|
||||
background:
|
||||
radial-gradient(circle at 92% 0%, rgba(255, 255, 255, 0.22), transparent 20rem),
|
||||
var(--theme-accent);
|
||||
}
|
||||
|
||||
.support-btn,
|
||||
.support-mail-btn {
|
||||
.support-bottom-copy .support-label,
|
||||
.support-bottom-copy h2,
|
||||
.support-bottom-copy p {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.support-bottom-copy p {
|
||||
max-width: 48rem;
|
||||
margin-top: 1rem;
|
||||
}
|
||||
|
||||
.support-bottom-actions {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: var(--gap-xs);
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
.support-btn {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
min-height: 48px;
|
||||
padding: 0 1.1rem;
|
||||
border: 1px solid transparent;
|
||||
border-radius: 999px;
|
||||
color: inherit;
|
||||
font-size: var(--text-sm);
|
||||
text-decoration: none;
|
||||
transition:
|
||||
transform var(--duration-med) var(--ease-out),
|
||||
box-shadow var(--duration-med) var(--ease-out),
|
||||
background-color var(--duration-med) var(--ease-out);
|
||||
}
|
||||
|
||||
.support-btn:hover,
|
||||
.support-btn:focus-visible,
|
||||
.support-mail-btn:hover,
|
||||
.support-mail-btn:focus-visible {
|
||||
.support-btn:focus-visible {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: var(--theme-shadow-soft);
|
||||
}
|
||||
|
||||
@media (max-width: 1100px) {
|
||||
.support-btn--primary {
|
||||
background: #fff;
|
||||
color: var(--theme-accent);
|
||||
}
|
||||
|
||||
.support-btn--secondary {
|
||||
border-color: rgba(255, 255, 255, 0.22);
|
||||
background: rgba(255, 255, 255, 0.14);
|
||||
color: #fff;
|
||||
backdrop-filter: blur(8px);
|
||||
}
|
||||
|
||||
@media (max-width: 1180px) {
|
||||
.support-hero,
|
||||
.support-section--split,
|
||||
.support-info-grid,
|
||||
.support-bottom-cta {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.support-quick-grid,
|
||||
.support-faq-grid {
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 700px) {
|
||||
.support-page {
|
||||
padding-inline: var(--page-x);
|
||||
}
|
||||
|
||||
.support-shell {
|
||||
width: var(--container-wide);
|
||||
padding-inline: clamp(0.9rem, 4vw, 1.1rem);
|
||||
@media (max-width: 760px) {
|
||||
.support-hero {
|
||||
padding-top: clamp(1.4rem, 5vw, 2rem);
|
||||
}
|
||||
|
||||
.support-hero-copy h1 {
|
||||
font-size: clamp(2.55rem, 13vw, 4.4rem);
|
||||
}
|
||||
|
||||
.support-quick-grid,
|
||||
.support-faq-grid {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.support-bottom-actions {
|
||||
display: grid;
|
||||
justify-content: stretch;
|
||||
}
|
||||
|
||||
.support-btn {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
/* --- Design System Refinement End --- */
|
||||
|
||||
|
||||
@ -7,7 +7,7 @@ function SupportPage() {
|
||||
<div className="support-page">
|
||||
<SharedNavbar variant="light" />
|
||||
|
||||
<main className="support-shell">
|
||||
<main className="shell">
|
||||
<section className="support-hero" data-reveal-group>
|
||||
<div className="support-hero-copy">
|
||||
<span className="support-kicker" data-reveal="fade">
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user