Bunny-Agency-Italy/src/app/globals.css

1066 lines
33 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* ============================================================
Bunny Agency Italia — "Milanese Editoriale"
Wine · Gold · Cream · Deep-green. Bodoni Moda display / Mulish body.
Motif: high-contrast serif, gilded framed panels, gold dust.
============================================================ */
:root {
--wine: #7A1F2B;
--wine-deep: #4d121b;
--wine-2: #94303f;
--gold: #C9A227;
--gold-soft: #d9bd5a;
--gold-deep: #a6841a;
--cream: #F4EDE1;
--cream-2: #efe6d6;
--cream-hi: #FBF6EC;
--green: #1D4A3A;
--green-2: #2d6a52;
--ink: #1c1512;
--muted: #6a5a52;
--line: rgba(110, 18, 38, 0.16);
--line-gold: rgba(201, 162, 39, 0.42);
--card: #fffdf8;
--shadow-lg: 0 30px 70px rgba(74, 12, 25, 0.16);
--shadow-md: 0 16px 40px rgba(74, 12, 25, 0.12);
--shadow-sm: 0 8px 22px rgba(74, 12, 25, 0.09);
--maxw: 1240px;
--gap: clamp(1.5rem, 4vw, 4rem);
--font-display: Georgia, "Times New Roman", serif;
--font-body: system-ui, sans-serif;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body {
margin: 0;
background: var(--cream);
background-image:
radial-gradient(1200px 620px at 82% -8%, rgba(201, 162, 39, 0.10), transparent 60%),
radial-gradient(1000px 560px at -6% 8%, rgba(110, 18, 38, 0.07), transparent 55%);
background-attachment: fixed;
color: var(--ink);
font-family: var(--font-body);
font-size: 17px;
line-height: 1.72;
-webkit-font-smoothing: antialiased;
overflow-x: hidden;
}
a { color: inherit; }
img { max-width: 100%; }
::selection { background: var(--gold); color: var(--wine-deep); }
/* ---- backdrop layers ---- */
.gold-dust {
position: fixed;
inset: 0;
width: 100%;
height: 100%;
z-index: 0;
pointer-events: none;
opacity: 0.9;
}
.frame-vignette {
position: fixed;
inset: 0;
z-index: 0;
pointer-events: none;
box-shadow: inset 0 0 0 1px rgba(201, 162, 39, 0.22), inset 0 0 140px rgba(74, 12, 25, 0.10);
mix-blend-mode: multiply;
}
main, .site-header, .site-footer { position: relative; z-index: 1; }
/* ---- typography ---- */
.eyebrow, .brand-mark, .card-cta, .nav-cta, .mnav-cta {
font-family: var(--font-body);
}
h1, h2, h3 { font-family: var(--font-display); font-weight: 700; color: var(--wine-deep); }
h1 {
font-size: clamp(2.3rem, 4.8vw, 4.1rem);
line-height: 1.04;
letter-spacing: -0.015em;
margin: 0.4rem 0 1.1rem;
font-weight: 800;
text-wrap: balance;
}
h2 {
font-size: clamp(1.55rem, 2.9vw, 2.25rem);
line-height: 1.14;
letter-spacing: -0.008em;
margin: 0 0 0.9rem;
text-wrap: balance;
}
p { text-wrap: pretty; }
h3 { font-size: clamp(1.15rem, 2vw, 1.4rem); line-height: 1.2; margin: 0 0 0.4rem; }
p { margin: 0 0 1rem; }
strong { color: var(--wine-deep); }
.eyebrow {
display: inline-flex;
align-items: center;
gap: 0.6rem;
text-transform: uppercase;
letter-spacing: 0.22em;
font-size: 0.75rem;
font-weight: 800;
color: var(--wine-2);
margin: 0;
}
.eyebrow::before {
content: "";
inline-size: 2.2rem;
block-size: 2px;
background: linear-gradient(90deg, var(--gold), transparent);
}
/* ============================================================
HEADER
============================================================ */
.site-header {
position: sticky;
inset-block-start: 0;
z-index: 40;
background: rgba(251, 246, 236, 0.97);
border-block-end: 1px solid var(--line-gold);
box-shadow: 0 1px 0 rgba(201, 162, 39, 0.12), 0 10px 30px -18px rgba(74, 12, 25, 0.25);
}
.site-header-inner {
max-width: var(--maxw);
margin-inline: auto;
display: flex;
align-items: center;
justify-content: space-between;
gap: 1rem;
padding: 0.85rem clamp(1rem, 4vw, 3rem);
}
.brand {
display: inline-flex;
align-items: center;
gap: 0.7rem;
text-decoration: none;
color: var(--wine-deep);
}
.brand-mark {
display: grid;
place-items: center;
inline-size: 2.5rem;
block-size: 2.5rem;
border-radius: 0.55rem;
background: linear-gradient(150deg, var(--wine), var(--wine-deep));
color: var(--gold-soft);
font-family: var(--font-display);
font-weight: 800;
font-size: 1.05rem;
letter-spacing: 0.02em;
box-shadow: inset 0 0 0 1px var(--line-gold), var(--shadow-sm);
}
.brand-name {
font-family: var(--font-display);
font-weight: 700;
font-size: 1.12rem;
letter-spacing: 0.01em;
}
.site-nav { display: flex; align-items: center; gap: 0.4rem; }
.nav-link {
text-decoration: none;
font-weight: 700;
font-size: 0.92rem;
color: var(--ink);
padding: 0.5rem 0.8rem;
border-radius: 0.5rem;
position: relative;
transition: color 0.2s ease, background 0.2s ease;
}
.nav-link::after {
content: "";
position: absolute;
inset-inline: 0.8rem;
inset-block-end: 0.32rem;
block-size: 2px;
background: var(--gold);
transform: scaleX(0);
transform-origin: inline-start;
transition: transform 0.25s ease;
}
.nav-link:hover { color: var(--wine); }
.nav-link:hover::after { transform: scaleX(1); }
.nav-cta {
text-decoration: none;
font-weight: 800;
font-size: 0.9rem;
color: var(--cream-hi);
background: linear-gradient(150deg, var(--wine), var(--wine-deep));
padding: 0.6rem 1.15rem;
border-radius: 999px;
box-shadow: inset 0 0 0 1px var(--line-gold), var(--shadow-sm);
transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.nav-cta:hover { transform: translateY(-2px); box-shadow: inset 0 0 0 1px var(--gold), var(--shadow-md); }
/* mobile nav */
.mnav { display: none; }
.mnav-toggle {
display: inline-grid;
place-items: center;
inline-size: 2.75rem;
block-size: 2.75rem;
border: 1px solid var(--line-gold);
border-radius: 0.6rem;
background: var(--cream-hi);
cursor: pointer;
}
.mnav-bars { position: relative; inline-size: 20px; block-size: 14px; }
.mnav-bars i {
position: absolute;
inset-inline: 0;
block-size: 2px;
background: var(--wine);
border-radius: 2px;
transition: transform 0.25s ease, opacity 0.2s ease, top 0.25s ease;
}
.mnav-bars i:nth-child(1) { inset-block-start: 0; }
.mnav-bars i:nth-child(2) { inset-block-start: 6px; }
.mnav-bars i:nth-child(3) { inset-block-start: 12px; }
.mnav-bars.is-open i:nth-child(1) { inset-block-start: 6px; transform: rotate(45deg); }
.mnav-bars.is-open i:nth-child(2) { opacity: 0; }
.mnav-bars.is-open i:nth-child(3) { inset-block-start: 6px; transform: rotate(-45deg); }
.mnav-scrim {
position: fixed;
inset: 0;
z-index: 45;
border: 0;
background: rgba(28, 21, 18, 0.42);
backdrop-filter: blur(2px);
cursor: pointer;
}
.mnav-panel {
position: fixed;
inset-block-start: 0;
inset-inline-end: 0;
z-index: 50;
block-size: 100dvh;
inline-size: min(82vw, 340px);
background: var(--cream-hi);
border-inline-start: 1px solid var(--line-gold);
box-shadow: -30px 0 70px rgba(74, 12, 25, 0.2);
padding: 5rem 1.6rem 2rem;
transform: translateX(100%);
transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1);
overflow-y: auto;
overscroll-behavior: contain;
}
.mnav-panel.is-open { transform: translateX(0); }
.mnav-panel nav { display: flex; flex-direction: column; gap: 0.4rem; }
.mnav-panel nav a {
text-decoration: none;
font-family: var(--font-display);
font-weight: 700;
font-size: 1.35rem;
color: var(--wine-deep);
padding: 0.7rem 0.4rem;
border-block-end: 1px solid var(--line);
}
.mnav-panel nav a.mnav-cta {
margin-block-start: 1rem;
border: 0;
text-align: center;
font-family: var(--font-body);
font-size: 1rem;
color: var(--cream-hi);
background: linear-gradient(150deg, var(--wine), var(--wine-deep));
border-radius: 999px;
box-shadow: inset 0 0 0 1px var(--line-gold);
}
/* ============================================================
PAGE SHELL + BREADCRUMBS
============================================================ */
.page-shell {
max-width: var(--maxw);
margin-inline: auto;
padding: clamp(1.6rem, 4vw, 3.2rem) clamp(1rem, 4vw, 3rem) clamp(3rem, 7vw, 6rem);
}
.breadcrumbs { margin: 0 0 clamp(1.4rem, 3vw, 2.2rem); font-size: 0.84rem; color: var(--muted); }
.breadcrumbs ol { display: flex; flex-wrap: wrap; gap: 0.5rem; list-style: none; margin: 0; padding: 0; }
.breadcrumbs li + li::before { content: "›"; margin-inline-end: 0.5rem; color: var(--gold-deep); }
.breadcrumbs a { text-decoration: none; text-underline-offset: 0.2em; }
.breadcrumbs a:hover { text-decoration: underline; }
.breadcrumbs [aria-current="page"] { color: var(--wine); font-weight: 700; }
/* ============================================================
HERO — gilded framed panel
============================================================ */
.hero { margin-block-end: clamp(2rem, 4.5vw, 3.5rem); }
.hero-frame {
display: grid;
grid-template-columns: minmax(0, 1.12fr) minmax(0, 0.88fr);
gap: clamp(1.5rem, 4vw, 3.5rem);
align-items: center;
padding: clamp(1.5rem, 3.4vw, 2.6rem);
background:
linear-gradient(180deg, var(--cream-hi), var(--cream));
border: 1px solid var(--line-gold);
border-radius: 1.25rem;
box-shadow: var(--shadow-lg);
position: relative;
}
.hero-frame::before {
content: "";
position: absolute;
inset: 0.55rem;
border: 1px solid rgba(201, 162, 39, 0.28);
border-radius: 0.85rem;
pointer-events: none;
}
.hero-copy { position: relative; z-index: 1; padding: 0.5rem; }
.answer-card {
margin-block-start: 1.2rem;
padding: 1.25rem 1.4rem;
background: var(--card);
border-radius: 0.2rem 1rem 1rem 0.2rem;
border-inline-start: 3px solid var(--gold);
box-shadow: var(--shadow-sm);
}
.answer-card strong {
display: block;
text-transform: uppercase;
letter-spacing: 0.16em;
font-size: 0.75rem;
color: var(--wine-2);
margin-block-end: 0.35rem;
}
.answer-card p { margin: 0; font-size: 0.98rem; line-height: 1.62; color: var(--ink); }
/* hero conversion row */
.hero-ctas { display: flex; flex-wrap: wrap; gap: 0.8rem; margin-block-start: 1.3rem; }
.button-hero {
display: inline-flex;
align-items: center;
text-decoration: none;
background: linear-gradient(150deg, var(--gold-soft), var(--gold), var(--gold-deep));
color: var(--wine-deep);
box-shadow: 0 10px 26px rgba(201, 162, 39, 0.38), inset 0 1px 0 rgba(255, 255, 255, 0.45);
}
.button-hero:hover { transform: translateY(-2px); filter: brightness(1.05); box-shadow: 0 14px 34px rgba(201, 162, 39, 0.48); }
.button-ghost {
display: inline-flex;
align-items: center;
text-decoration: none;
background: transparent;
color: var(--wine);
box-shadow: inset 0 0 0 2px var(--wine);
}
.button-ghost:hover { transform: translateY(-2px); background: rgba(122, 31, 43, 0.06); }
.hero-badges {
display: flex;
flex-wrap: wrap;
gap: 0.35rem 1.4rem;
list-style: none;
margin: 1.15rem 0 0;
padding: 0;
color: var(--muted);
font-size: 0.84rem;
font-weight: 700;
}
.hero-badges li { position: relative; padding-inline-start: 1.05rem; }
.hero-badges li::before {
content: "◆";
position: absolute;
inset-inline-start: 0;
inset-block-start: 0.1em;
color: var(--gold);
font-size: 0.62rem;
}
.hero-media { position: relative; align-self: stretch; min-block-size: 100%; }
.hero-image {
width: 100%;
height: 100%;
min-block-size: 420px;
aspect-ratio: 4 / 5;
object-fit: cover;
border-radius: 0.9rem;
box-shadow: var(--shadow-lg);
display: block;
}
.hero-chip {
position: absolute;
inset-inline-start: 1rem;
inset-block-end: 1rem;
margin: 0;
display: grid;
gap: 0.1rem;
padding: 0.75rem 1.05rem;
background: rgba(251, 246, 236, 0.94);
border: 1px solid var(--line-gold);
border-radius: 0.75rem;
box-shadow: var(--shadow-md);
max-inline-size: calc(100% - 2rem);
}
.hero-chip strong {
font-family: var(--font-display);
font-size: 1.45rem;
line-height: 1.05;
color: var(--wine);
letter-spacing: -0.01em;
}
.hero-chip span { font-size: 0.78rem; font-weight: 700; color: var(--muted); }
.hero-corner {
position: absolute;
inline-size: 34px;
block-size: 34px;
pointer-events: none;
}
.hero-corner-tl {
inset-block-start: -8px;
inset-inline-start: -8px;
border-block-start: 2px solid var(--gold);
border-inline-start: 2px solid var(--gold);
border-start-start-radius: 0.4rem;
}
.hero-corner-br {
inset-block-end: -8px;
inset-inline-end: -8px;
border-block-end: 2px solid var(--gold);
border-inline-end: 2px solid var(--gold);
border-end-end-radius: 0.4rem;
}
/* ============================================================
STATS BAND — the numbers, given a stage
============================================================ */
.stats-band {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 0;
margin-block-end: clamp(2.5rem, 6vw, 4.5rem);
padding: clamp(1.4rem, 3vw, 2.1rem) clamp(0.5rem, 2vw, 1rem);
background: linear-gradient(160deg, var(--wine-deep), var(--wine) 55%, #5d1622);
border-radius: 1.1rem;
box-shadow: inset 0 0 0 1px var(--line-gold), var(--shadow-lg);
position: relative;
overflow: hidden;
}
.stats-band::before {
content: "";
position: absolute;
inset: 0.5rem;
border: 1px solid rgba(201, 162, 39, 0.25);
border-radius: 0.75rem;
pointer-events: none;
}
.stat-tile {
display: grid;
align-content: start;
gap: 0.3rem;
padding: 0.4rem 1.4rem;
text-align: center;
}
.stat-tile + .stat-tile { border-inline-start: 1px solid rgba(201, 162, 39, 0.3); }
.stat-tile strong {
font-family: var(--font-display);
font-weight: 800;
font-size: clamp(1.9rem, 3.6vw, 2.9rem);
line-height: 1;
letter-spacing: -0.01em;
color: var(--gold-soft);
}
.stat-tile span {
font-size: 0.84rem;
line-height: 1.45;
font-weight: 600;
color: rgba(244, 237, 225, 0.85);
text-wrap: balance;
}
/* ============================================================
CONTENT GRID
============================================================ */
.content-grid {
display: grid;
grid-template-columns: minmax(0, 1fr) 360px;
gap: clamp(2rem, 5vw, 4.5rem);
align-items: start;
}
.article-body { max-width: 780px; min-width: 0; counter-reset: chapter; }
.article-body p { font-size: 1.06rem; }
.prose-section { margin-block-end: clamp(2.2rem, 4.5vw, 3.4rem); counter-increment: chapter; }
.prose-section h2::before {
content: counter(chapter, upper-roman);
display: block;
font-family: var(--font-body);
font-size: 0.72rem;
font-weight: 800;
letter-spacing: 0.28em;
color: var(--gold-deep);
margin-block-end: 0.45rem;
}
.prose-section h2 { position: relative; padding-block-end: 0.5rem; }
.article-body > .prose-section:first-of-type > p:first-of-type::first-letter {
font-family: var(--font-display);
font-weight: 800;
font-size: 3.1em;
line-height: 0.82;
float: inline-start;
padding: 0.08em 0.14em 0 0;
color: var(--wine);
}
.prose-section h2::after {
content: "";
position: absolute;
inset-block-end: 0;
inset-inline-start: 0;
inline-size: 3.2rem;
block-size: 3px;
background: linear-gradient(90deg, var(--gold), var(--gold-deep));
border-radius: 3px;
}
.article-body ol, .article-body ul { padding-inline-start: 1.3rem; margin: 0.8rem 0 1rem; }
.article-body li { margin: 0.5rem 0; font-size: 1.02rem; }
.article-body ol { list-style: none; counter-reset: step; padding-inline-start: 0; }
.article-body ol li {
counter-increment: step;
position: relative;
padding-inline-start: 2.6rem;
margin: 0.7rem 0;
}
.article-body ol li::before {
content: counter(step);
position: absolute;
inset-inline-start: 0;
inset-block-start: 0.05rem;
inline-size: 1.85rem;
block-size: 1.85rem;
display: grid;
place-items: center;
font-family: var(--font-display);
font-weight: 700;
font-size: 0.9rem;
color: var(--wine);
background: var(--cream-hi);
border: 1px solid var(--line-gold);
border-radius: 50%;
}
.article-body ul li::marker { color: var(--gold-deep); }
.article-body .prose-section ul {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 0.45rem 1.4rem;
list-style: none;
padding: 0;
}
.article-body .prose-section ul li {
position: relative;
padding: 0.55rem 0.8rem 0.55rem 2.1rem;
margin: 0;
background: var(--card);
border: 1px solid var(--line);
border-radius: 0.6rem;
font-size: 0.97rem;
line-height: 1.5;
}
.article-body .prose-section ul li::before {
content: "✓";
position: absolute;
inset-inline-start: 0.75rem;
inset-block-start: 0.55rem;
color: var(--gold-deep);
font-weight: 800;
}
/* collection cards */
.collection { margin-block-end: clamp(2rem, 4vw, 3rem); }
.card-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.content-card {
display: flex;
flex-direction: column;
text-decoration: none;
background: var(--card);
padding: 1.35rem 1.4rem;
border: 1px solid var(--line);
border-radius: 0.9rem;
box-shadow: var(--shadow-sm);
transition: transform 0.22s ease, box-shadow 0.22s ease, border-color 0.22s ease;
}
.content-card:hover {
transform: translateY(-4px);
box-shadow: var(--shadow-md);
border-color: var(--line-gold);
}
.content-card span, .related-grid span {
display: block;
color: var(--wine-2);
font-size: 0.75rem;
font-weight: 800;
text-transform: uppercase;
letter-spacing: 0.12em;
margin-block-end: 0.35rem;
}
.content-card h3 { color: var(--wine-deep); }
.content-card p { color: var(--muted); font-size: 0.96rem; flex: 1; }
.card-cta {
color: var(--wine);
font-weight: 800;
font-size: 0.9rem;
margin-block-start: 0.4rem;
}
/* FAQ */
.faq-block { margin-block-end: clamp(2rem, 4vw, 3rem); }
.faq-list { display: grid; gap: 0.7rem; }
.faq-list details {
background: var(--card);
border: 1px solid var(--line);
border-radius: 0.75rem;
padding: 0.3rem 1.2rem;
box-shadow: var(--shadow-sm);
transition: border-color 0.2s ease;
}
.faq-list details[open] { border-color: var(--line-gold); }
.faq-list summary {
cursor: pointer;
font-weight: 800;
color: var(--wine-deep);
padding: 0.85rem 0;
list-style: none;
display: flex;
align-items: center;
gap: 0.75rem;
}
.faq-list summary::-webkit-details-marker { display: none; }
.faq-list summary::before {
content: "+";
flex: none;
inline-size: 1.5rem;
block-size: 1.5rem;
display: grid;
place-items: center;
font-size: 1rem;
color: var(--gold-deep);
border: 1px solid var(--line-gold);
border-radius: 50%;
transition: transform 0.2s ease;
}
.faq-list details[open] summary::before { content: "-"; transform: rotate(180deg); }
.faq-list details p { margin: 0 0 0.9rem; color: var(--ink); }
/* sources */
.sources-block { margin-block-end: clamp(2rem, 4vw, 3rem); }
.sources { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.5rem; }
.sources li { padding-inline-start: 1.2rem; position: relative; }
.sources li::before { content: "◆"; position: absolute; inset-inline-start: 0; color: var(--gold); font-size: 0.7rem; top: 0.35rem; }
.sources a { text-decoration: underline; text-decoration-thickness: 0.08em; text-underline-offset: 0.2em; color: var(--wine); }
/* trust block */
.page-trust {
border-block-start: 1px solid var(--line-gold);
margin-block-start: 1.5rem;
padding-block-start: 1.2rem;
}
.provenance { color: var(--muted); font-size: 0.9rem; margin: 0 0 0.4rem; }
.ymyl-note { color: var(--muted); font-size: 0.82rem; font-style: italic; margin: 0.4rem 0; }
.reviews-link { font-size: 0.86rem; color: var(--muted); margin: 0.4rem 0 0; }
.review-link, .reviews-link a { color: var(--wine); font-weight: 700; text-decoration: none; }
.review-link:hover, .reviews-link a:hover { text-decoration: underline; }
/* ============================================================
CTA PANEL (sticky, dark wine, gilded)
============================================================ */
.cta-panel { position: sticky; inset-block-start: 5.5rem; align-self: start; }
.cta-panel-inner {
position: relative;
padding: 1.75rem 1.6rem;
background: linear-gradient(160deg, var(--wine), var(--wine-deep) 70%, var(--green-2));
color: var(--cream);
border-radius: 1.1rem;
box-shadow: inset 0 0 0 1px var(--line-gold), var(--shadow-lg);
overflow: hidden;
}
.cta-flourish {
position: absolute;
inset-block-start: -40px;
inset-inline-end: -40px;
inline-size: 130px;
block-size: 130px;
border-radius: 50%;
background: radial-gradient(circle at 30% 30%, rgba(201, 162, 39, 0.4), transparent 65%);
pointer-events: none;
}
.cta-panel-inner h2 { color: var(--gold-soft); font-size: 1.5rem; margin-block-end: 0.6rem; }
.cta-panel-inner p { color: rgba(244, 237, 225, 0.86); font-size: 0.95rem; }
.tracked-form { margin-block-start: 1.1rem; }
.button {
border: 0;
border-radius: 999px;
padding: 0.9rem 1.3rem;
font: inherit;
font-weight: 800;
cursor: pointer;
transition: transform 0.2s ease, box-shadow 0.2s ease, filter 0.2s ease;
}
.button-primary {
inline-size: 100%;
background: linear-gradient(150deg, var(--gold-soft), var(--gold), var(--gold-deep));
color: var(--wine-deep);
box-shadow: 0 8px 22px rgba(201, 162, 39, 0.35);
}
.button-primary:hover { transform: translateY(-2px); filter: brightness(1.05); box-shadow: 0 12px 30px rgba(201, 162, 39, 0.45); }
.hubspot-target { margin-block-start: 1rem; min-height: 1rem; }
.hubspot-target iframe { max-width: 100%; }
.hubspot-target input,
.hubspot-target select,
.hubspot-target textarea {
font-size: 16px;
width: 100%;
box-sizing: border-box;
min-height: 44px;
}
.hubspot-target input[type="checkbox"],
.hubspot-target input[type="radio"] {
width: auto;
min-height: 0;
}
.aside-facts {
list-style: none;
margin: 1.2rem 0 0;
padding: 1.05rem 0 0;
border-block-start: 1px solid rgba(201, 162, 39, 0.35);
display: grid;
gap: 0.5rem;
}
.aside-facts li {
position: relative;
padding-inline-start: 1.5rem;
font-size: 0.86rem;
line-height: 1.45;
color: rgba(244, 237, 225, 0.9);
}
.aside-facts li::before {
content: "✓";
position: absolute;
inset-inline-start: 0;
color: var(--gold-soft);
font-weight: 800;
}
/* ============================================================
MEDIA SECTIONS
============================================================ */
.case-studies, .testimonials, .creator-gallery { margin-block-start: clamp(3.5rem, 7vw, 6rem); }
.case-studies > h2, .testimonials > h2, .creator-gallery > h2 {
text-align: center;
margin-block-end: 0.6rem;
}
.case-studies > h2::after, .testimonials > h2::after, .creator-gallery > h2::after {
content: "";
display: block;
inline-size: 4rem;
block-size: 3px;
margin: 0.7rem auto 0;
background: linear-gradient(90deg, transparent, var(--gold), transparent);
}
.case-proof {
max-width: 760px;
margin: 0.4rem auto 1.8rem;
text-align: center;
color: var(--muted);
font-size: 1.03rem;
}
.video-embed {
position: relative;
width: 100%;
aspect-ratio: 16 / 9;
border-radius: 0.9rem;
overflow: hidden;
background: var(--wine-deep);
box-shadow: var(--shadow-md);
}
.video-embed iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.case-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(1.2rem, 3vw, 2rem); }
.case-card {
margin: 0;
background: var(--card);
border: 1px solid var(--line-gold);
border-radius: 1rem;
overflow: hidden;
box-shadow: var(--shadow-sm);
transition: transform 0.22s ease, box-shadow 0.22s ease;
}
.case-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-md); }
.case-card .video-embed { border-radius: 0; box-shadow: none; }
.case-card figcaption { padding: 1.15rem 1.4rem; }
.case-card figcaption strong {
display: block;
font-family: var(--font-display);
font-size: clamp(1.7rem, 3.4vw, 2.2rem);
letter-spacing: -0.01em;
color: var(--wine);
line-height: 1.05;
}
.case-card figcaption span { color: var(--muted); font-weight: 600; }
.testi-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(1rem, 2.5vw, 1.6rem); }
.testi-card {
margin: 0;
position: relative;
background: var(--card);
border: 1px solid var(--line-gold);
border-radius: 1rem;
padding: 0.8rem 0.8rem 1rem;
box-shadow: var(--shadow-sm);
transition: transform 0.22s ease, box-shadow 0.22s ease;
}
.testi-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-md); }
.testi-card::before {
content: "❝";
position: absolute;
inset-block-start: -0.9rem;
inset-inline-start: 1rem;
z-index: 1;
font-family: var(--font-display);
font-size: 2rem;
line-height: 1;
color: var(--gold);
background: var(--card);
padding-inline: 0.3rem;
border-radius: 999px;
}
.testi-card .video-embed { box-shadow: none; border-radius: 0.65rem; }
.testi-card figcaption {
margin-block-start: 0.75rem;
font-family: var(--font-display);
font-weight: 700;
font-size: 1.1rem;
text-align: center;
color: var(--wine-deep);
}
.gallery-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 0.9rem; }
.gallery-item { margin: 0; position: relative; border-radius: 0.8rem; }
.gallery-item::after {
content: "";
position: absolute;
inset: 0.45rem;
border: 1px solid rgba(251, 246, 236, 0.55);
border-radius: 0.5rem;
pointer-events: none;
opacity: 0;
transition: opacity 0.25s ease;
}
.gallery-item:hover::after { opacity: 1; }
.gallery-img {
width: 100%;
height: auto;
aspect-ratio: 3 / 4;
object-fit: cover;
border-radius: 0.75rem;
box-shadow: var(--shadow-sm);
border: 1px solid var(--line-gold);
display: block;
transition: transform 0.3s ease, box-shadow 0.3s ease, filter 0.3s ease;
}
.gallery-item:nth-child(even) .gallery-img { aspect-ratio: 4 / 5.4; }
.gallery-item:hover .gallery-img { transform: translateY(-4px) scale(1.015); box-shadow: var(--shadow-md); filter: saturate(1.08); }
/* related */
.related { margin-block-start: clamp(3.5rem, 7vw, 5.5rem); }
.related > h2 { text-align: center; margin-block-end: 1.4rem; }
.related-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1rem; }
.related-grid a {
display: block;
background: var(--card);
padding: 1.1rem 1.2rem;
border-radius: 0.8rem;
text-decoration: none;
border: 1px solid var(--line);
box-shadow: var(--shadow-sm);
transition: transform 0.22s ease, box-shadow 0.22s ease, border-color 0.22s ease;
}
.related-grid a:hover { transform: translateY(-4px); box-shadow: var(--shadow-md); border-color: var(--line-gold); }
.related-grid strong { color: var(--wine-deep); font-family: var(--font-display); font-weight: 700; display: block; padding-inline-end: 1.2rem; }
.related-grid a { position: relative; }
.related-grid a::after {
content: "→";
position: absolute;
inset-inline-end: 1rem;
inset-block-end: 0.8rem;
color: var(--gold-deep);
font-weight: 800;
transition: transform 0.22s ease;
}
.related-grid a:hover::after { transform: translateX(4px); }
/* ============================================================
FOOTER
============================================================ */
.site-footer {
margin-block-start: clamp(3rem, 6vw, 5rem);
background: linear-gradient(160deg, var(--green), var(--wine-deep));
color: var(--cream);
border-block-start: 3px solid var(--gold);
}
.site-footer-inner {
max-width: var(--maxw);
margin-inline: auto;
display: grid;
grid-template-columns: minmax(240px, 1.2fr) 1fr 1fr;
gap: clamp(1.5rem, 4vw, 4rem);
align-items: start;
padding: clamp(2.2rem, 4.5vw, 3.4rem) clamp(1rem, 4vw, 3rem) clamp(1.4rem, 3vw, 2rem);
}
.footer-identity img {
width: 100%;
max-width: 300px;
height: auto;
aspect-ratio: 16 / 9;
object-fit: cover;
border-radius: 0.8rem;
box-shadow: inset 0 0 0 1px var(--line-gold), var(--shadow-md);
margin-block-end: 0.9rem;
}
.footer-name { font-family: var(--font-display); font-size: 1.35rem; color: var(--gold-soft); display: block; }
.footer-market { color: rgba(244, 237, 225, 0.78); margin: 0.2rem 0 0.6rem; font-size: 0.92rem; }
.footer-tagline { color: rgba(244, 237, 225, 0.66); font-size: 0.85rem; line-height: 1.55; max-width: 34ch; margin: 0; }
.footer-col { display: flex; flex-direction: column; }
.footer-col-title {
font-family: var(--font-body);
text-transform: uppercase;
letter-spacing: 0.18em;
font-size: 0.72rem;
font-weight: 800;
color: var(--gold-soft);
margin-block-end: 0.55rem;
}
.footer-col a { font-size: 0.9rem; text-decoration: none; color: var(--cream); opacity: 0.88; display: inline-flex; align-items: center; min-height: 40px; transition: color 0.2s ease, opacity 0.2s ease; }
.footer-col a:hover { color: var(--gold-soft); opacity: 1; }
/* network / language switcher */
.footer-network { border-block-start: 1px solid rgba(201, 162, 39, 0.28); }
.footer-network-inner {
max-width: var(--maxw);
margin-inline: auto;
padding: 1.4rem clamp(1rem, 4vw, 3rem);
display: grid;
grid-template-columns: minmax(200px, 260px) 1fr;
gap: 0.6rem clamp(1.5rem, 4vw, 3rem);
align-items: start;
}
.footer-network-head { display: grid; gap: 0.2rem; }
.footer-network-note { font-size: 0.82rem; color: rgba(244, 237, 225, 0.62); }
.lang-list {
list-style: none;
margin: 0;
padding: 0;
display: flex;
flex-wrap: wrap;
gap: 0.35rem 0.5rem;
}
.lang-list a, .lang-current {
display: inline-flex;
align-items: center;
min-height: 36px;
padding: 0.3rem 0.75rem;
border-radius: 999px;
font-size: 0.84rem;
font-weight: 700;
text-decoration: none;
border: 1px solid rgba(201, 162, 39, 0.3);
color: var(--cream);
opacity: 0.88;
transition: color 0.2s ease, border-color 0.2s ease, background 0.2s ease, opacity 0.2s ease;
}
.lang-list a:hover { color: var(--gold-soft); border-color: var(--gold); background: rgba(201, 162, 39, 0.12); opacity: 1; }
.lang-current { background: var(--gold); border-color: var(--gold); color: var(--wine-deep); opacity: 1; }
.footer-bottom {
max-width: var(--maxw);
margin-inline: auto;
padding: 1.1rem clamp(1rem, 4vw, 3rem) 1.6rem;
border-block-start: 1px solid rgba(201, 162, 39, 0.28);
display: flex;
flex-wrap: wrap;
gap: 0.3rem 2rem;
align-items: baseline;
justify-content: space-between;
}
.legal-entity { font-size: 0.8rem; opacity: 0.82; margin: 0; }
.footer-reviews { font-size: 0.82rem; opacity: 0.9; margin: 0; }
.site-footer .footer-reviews a, .site-footer .legal-entity a { color: var(--gold-soft); text-decoration: underline; }
/* ============================================================
Legal registry supplement (kept)
============================================================ */
.legal-registry-supplement { max-width: 900px; padding-block-start: 0; }
.legal-registry-supplement .faq-list { max-width: 780px; }
/* ============================================================
404 (restyle via globals only)
============================================================ */
.not-found-shell { max-width: 640px; margin-inline: auto; padding: clamp(3rem, 8vw, 6rem) 1.5rem; text-align: center; }
/* ============================================================
REVEAL + MOTION
============================================================ */
/* progressive enhancement: content is visible by default; only a JS-enabled
browser (html.js) hides it for the scroll-in animation */
html.js .reveal { opacity: 0; transform: translateY(18px); transition: opacity 0.6s ease, transform 0.6s cubic-bezier(0.22, 1, 0.36, 1); }
html.js .reveal.is-in { opacity: 1; transform: none; }
:focus-visible {
outline: 3px solid var(--gold);
outline-offset: 2px;
border-radius: 3px;
}
@media (prefers-reduced-motion: reduce) {
* { animation-duration: 0.001ms !important; transition-duration: 0.001ms !important; scroll-behavior: auto !important; }
html.js .reveal { opacity: 1; transform: none; }
.gold-dust { display: none; }
}
/* ============================================================
RESPONSIVE
============================================================ */
@media (max-width: 960px) {
.hero-frame { grid-template-columns: 1fr; }
.hero-media { order: -1; }
.hero-image { min-block-size: 0; aspect-ratio: 16 / 10; }
.content-grid { grid-template-columns: 1fr; }
.cta-panel { position: static; }
.testi-grid { grid-template-columns: repeat(2, 1fr); }
.related-grid { grid-template-columns: repeat(2, 1fr); }
.gallery-grid { grid-template-columns: repeat(3, 1fr); }
.stats-band { grid-template-columns: repeat(2, 1fr); gap: 1rem 0; }
.stat-tile:nth-child(3) { border-inline-start: 0; }
.site-footer-inner { grid-template-columns: 1fr 1fr; }
.footer-identity { grid-column: 1 / -1; }
}
@media (max-width: 820px) {
.site-nav { display: none; }
.mnav { display: block; }
}
@media (max-width: 640px) {
body { font-size: 16px; }
.brand-name { display: none; }
.case-grid, .testi-grid { grid-template-columns: 1fr; }
.card-grid, .related-grid { grid-template-columns: 1fr; }
.gallery-grid { grid-template-columns: repeat(2, 1fr); }
.site-footer-inner { grid-template-columns: 1fr; text-align: center; }
.footer-col { align-items: center; }
.footer-identity { max-width: 320px; margin-inline: auto; }
.footer-identity img { margin-inline: auto; }
.footer-tagline { margin-inline: auto; }
.footer-bottom { justify-content: center; text-align: center; }
.footer-network-inner { grid-template-columns: 1fr; text-align: center; }
.lang-list { justify-content: center; }
.hero-frame { padding: 1.1rem; }
.hero-ctas .button { inline-size: 100%; justify-content: center; }
.stats-band { grid-template-columns: 1fr 1fr; }
.stat-tile { padding: 0.4rem 0.7rem; }
.stat-tile strong { font-size: 1.7rem; }
.article-body .prose-section ul { grid-template-columns: 1fr; }
}
/* Data tables in editorial articles stay readable without widening the page. */
.overflow-x-auto,.content-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.content-table-wrap{margin:1rem 0 1.35rem}
.article-body table{width:100%;min-width:620px;border-collapse:collapse;font-size:.92rem;line-height:1.45}
.article-body th,.article-body td{padding:.72rem;text-align:start;vertical-align:top;border:1px solid var(--line,rgba(127,127,127,.35))}
.article-body th{font-weight:700;color:inherit;background:rgba(127,127,127,.12)}