fix: tighten CTA footer spacing and product detail scaling

This commit is contained in:
Salih Hasicic 2026-04-23 12:29:12 +02:00
parent 3f2c51eb1f
commit 9d3180287a
5 changed files with 112 additions and 48 deletions

View File

@ -1,4 +1,4 @@
import { Routes, Route } from "react-router";
import { Routes, Route, useLocation } from "react-router";
import LandingPage from "./pages/LandingPage";
import ProductDetailPage from "./components/ProductDetailPage";
import AboutPage from "./pages/AboutPage";
@ -14,6 +14,10 @@ import ShopDrawer from "./components/ShopDrawer";
import CartToast from "./components/CartToast";
function App() {
const location = useLocation();
const shouldFlushFooter =
location.pathname === "/" || location.pathname.startsWith("/duft/");
return (
<>
<ScrollToTop />
@ -31,7 +35,7 @@ function App() {
<ShopDrawer />
<CartToast />
<Footer />
<Footer flushTop={shouldFlushFooter} />
<SupportChatbot />
</>
);

View File

@ -5,6 +5,10 @@
border-top: 1px solid rgba(255, 255, 255, 0.08);
}
.site-footer--flush {
margin-top: 0;
}
.site-footer__inner {
max-width: 1600px;
margin: 0 auto;
@ -77,4 +81,4 @@
grid-template-columns: 1fr;
padding: 24px 16px 28px;
}
}
}

View File

@ -1,9 +1,9 @@
import { Link } from "react-router";
import "./Footer.css";
function Footer() {
function Footer({ flushTop = false }) {
return (
<footer className="site-footer">
<footer className={`site-footer${flushTop ? " site-footer--flush" : ""}`}>
<div className="site-footer__inner">
<div className="site-footer__brand">
<Link to="/" className="site-footer__logo">
@ -37,4 +37,4 @@ function Footer() {
);
}
export default Footer;
export default Footer;

View File

@ -3,7 +3,7 @@
.detail-page {
min-height: 100vh;
color: #1f1f1f;
padding: 26px 38px 38px;
padding: 26px 38px 0;
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));
@ -13,7 +13,10 @@
background: #f5f5f5;
border: 1px solid #d9d9d9;
border-radius: 0px;
padding: 0 38px 38px;
width: 100%;
max-width: 1680px;
margin: 0 auto;
padding: 0 38px 0;
}
/* --- Product Detail Page Wrapper End --- */
@ -40,13 +43,13 @@
}
.detail-topbar-label {
font-size: 10px;
font-size: 11px;
letter-spacing: 0.22em;
color: #777;
}
.detail-topbar-name {
font-size: 12px;
font-size: 13px;
letter-spacing: 0.16em;
color: #1f1f1f;
}
@ -62,7 +65,7 @@
background: none;
border: none;
padding: 0;
font-size: 13px;
font-size: 14px;
cursor: pointer;
color: #1f1f1f;
letter-spacing: 0.01em;
@ -86,8 +89,8 @@
.detail-layout {
display: grid;
grid-template-columns: 1.02fr 1fr;
gap: 28px;
grid-template-columns: minmax(420px, 760px) minmax(0, 1fr);
gap: 34px;
align-items: start;
}
@ -98,6 +101,9 @@
.detail-gallery {
display: flex;
flex-direction: column;
width: 100%;
max-width: 760px;
justify-self: center;
}
.detail-main-image {
@ -171,13 +177,13 @@
.detail-meta-grid span {
display: block;
margin-bottom: 8px;
font-size: 10px;
font-size: 11px;
letter-spacing: 0.22em;
color: #666;
}
.detail-meta-grid p {
font-size: 14px;
font-size: 15px;
line-height: 1.55;
margin: 0;
}
@ -204,7 +210,7 @@
}
.detail-structure h3 {
font-size: 12px;
font-size: 13px;
letter-spacing: 0.24em;
font-weight: 500;
margin: 0;
@ -245,7 +251,7 @@
.structure-phase {
display: block;
margin-bottom: 0;
font-size: 10px;
font-size: 11px;
letter-spacing: 0.18em;
color: #555;
}
@ -277,7 +283,7 @@
min-width: 0;
min-height: 42px;
padding: 10px 12px;
font-size: 13px;
font-size: 14px;
line-height: 1.25;
text-align: center;
box-sizing: border-box;
@ -319,14 +325,14 @@
}
.structure-info-label {
font-size: 10px;
font-size: 11px;
letter-spacing: 0.24em;
color: #666;
}
.structure-info-box p {
margin: 0;
font-size: 14px;
font-size: 15px;
line-height: 1.7;
color: #3f3f3f;
}
@ -343,7 +349,7 @@
display: flex;
align-items: center;
gap: 10px;
font-size: 12px;
font-size: 13px;
letter-spacing: 0.08em;
color: #666;
}
@ -380,7 +386,7 @@
.mood-label {
display: block;
margin-bottom: 10px;
font-size: 10px;
font-size: 11px;
letter-spacing: 0.2em;
color: #555;
}
@ -474,6 +480,7 @@
flex-direction: column;
gap: 28px;
padding-top: 4px;
min-width: 0;
}
.detail-heading {
@ -492,7 +499,7 @@
.detail-kicker {
display: inline-block;
font-size: 10px;
font-size: 11px;
letter-spacing: 0.24em;
color: #777;
}
@ -507,7 +514,7 @@
}
.detail-heading p {
max-width: 520px;
max-width: 640px;
font-size: 18px;
line-height: 1.45;
color: #5f5f5f;
@ -523,7 +530,7 @@
.label-title {
display: block;
margin-bottom: 0;
font-size: 10px;
font-size: 11px;
letter-spacing: 0.24em;
color: #666;
}
@ -552,7 +559,7 @@
.detail-copy-label {
display: block;
margin-bottom: 10px;
font-size: 10px;
font-size: 11px;
letter-spacing: 0.24em;
color: #666;
}
@ -561,7 +568,7 @@
white-space: pre-line;
line-height: 1.6;
margin: 0;
font-size: 15px;
font-size: 16px;
color: #1f1f1f;
}
@ -595,7 +602,7 @@
padding: 0 10px;
border: 1px solid #ff6a00;
color: #ff6a00;
font-size: 11px;
font-size: 12px;
letter-spacing: 0.16em;
}
@ -618,14 +625,14 @@
}
.delivery-item-label {
font-size: 10px;
font-size: 11px;
letter-spacing: 0.2em;
color: #666;
}
.delivery-item p {
margin: 0;
font-size: 15px;
font-size: 16px;
line-height: 1.45;
color: #1f1f1f;
}
@ -683,21 +690,21 @@
}
.comment-card-title {
font-size: 11px;
font-size: 12px;
letter-spacing: 0.18em;
color: #666;
}
.comment-card p {
margin: 0;
font-size: 15px;
font-size: 16px;
line-height: 1.55;
color: #1f1f1f;
flex: 1;
}
.comment-card-author {
font-size: 12px;
font-size: 13px;
letter-spacing: 0.08em;
color: #777;
}
@ -728,7 +735,7 @@
.review-section-text {
margin: 0;
font-size: 15px;
font-size: 16px;
line-height: 1.55;
color: #5f5f5f;
}
@ -756,13 +763,13 @@
}
.review-stars {
font-size: 14px;
font-size: 15px;
letter-spacing: 0.18em;
color: #ff6a00;
}
.review-count {
font-size: 11px;
font-size: 12px;
letter-spacing: 0.08em;
color: #666;
}
@ -788,7 +795,7 @@
border: 1px solid #d9d9d9;
background: transparent;
padding: 12px 14px;
font-size: 12px;
font-size: 13px;
letter-spacing: 0.08em;
color: #1f1f1f;
cursor: pointer;
@ -854,7 +861,7 @@
}
.review-detail-label {
font-size: 10px;
font-size: 11px;
letter-spacing: 0.18em;
color: #666;
}
@ -874,7 +881,7 @@
}
.review-detail-value {
font-size: 12px;
font-size: 13px;
color: #1f1f1f;
text-align: right;
}
@ -910,7 +917,7 @@
border: 1px solid #d2d2d2;
border-radius: 0px;
background: transparent;
font-size: 13px;
font-size: 14px;
user-select: none;
}
@ -946,7 +953,7 @@
.size-title {
display: block;
margin-bottom: 10px;
font-size: 12px;
font-size: 13px;
letter-spacing: 0.02em;
color: #1f1f1f;
}
@ -960,7 +967,7 @@
}
.size-card small {
font-size: 11px;
font-size: 12px;
color: #6a6a6a;
}
@ -982,16 +989,16 @@
.discovery-note-text strong {
display: block;
margin-bottom: 6px;
font-size: 13px;
font-size: 14px;
font-weight: 500;
}
.discovery-note-text p {
font-size: 12px;
font-size: 13px;
line-height: 1.45;
color: #d0d0d0;
margin: 0;
max-width: 420px;
max-width: 520px;
}
.discovery-note-text .discount-preview {
@ -1088,7 +1095,7 @@
.detail-bottom-cta p {
margin-top: 18px;
font-size: 15px;
font-size: 16px;
line-height: 1.5;
color: #fff;
}
@ -1128,6 +1135,15 @@
.detail-structure-layout {
grid-template-columns: 1fr;
}
.detail-layout {
grid-template-columns: minmax(380px, 680px) minmax(0, 1fr);
gap: 28px;
}
.detail-gallery {
max-width: 680px;
}
}
@media (max-width: 1100px) {
@ -1135,6 +1151,10 @@
grid-template-columns: 1fr;
}
.detail-gallery {
width: min(100%, 720px);
}
.detail-info {
gap: 24px;
}
@ -1149,6 +1169,18 @@
}
@media (max-width: 700px) {
.detail-page {
padding: 18px 14px 0;
}
.detail-shell {
padding: 0 16px 0;
}
.detail-layout {
gap: 24px;
}
.detail-columns,
.detail-meta-grid,
.size-grid,
@ -1197,6 +1229,18 @@
font-size: 16px;
}
.detail-bottom-cta {
padding: 32px 20px;
}
.detail-bottom-cta h2 {
font-size: 34px;
}
.detail-bottom-cta p {
font-size: 15px;
}
.discovery-note {
flex-direction: column;
align-items: flex-start;
@ -1238,9 +1282,21 @@
}
@media (max-width: 480px) {
.detail-page {
padding: 12px 10px 0;
}
.detail-shell {
padding: 0 12px 0;
}
.structure-tags-grid {
grid-template-columns: 1fr;
}
.detail-bottom-cta {
padding: 28px 16px;
}
}
/* --- Responsive End --- */

View File

@ -385,7 +385,7 @@
gap: 28px;
align-items: center;
background: #ff6a00;
margin: 20px;
margin: 20px 20px 0;
border-radius: 0;
padding: 40px 38px;
}
@ -516,7 +516,7 @@
}
.discovery-section {
margin: 12px;
margin: 12px 12px 0;
padding: 28px 20px;
}
}