/* ============================================================ 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)}