Files
musicdownload/landing/css/style.css
T
luzadevandClaude Opus 4.7 4ebfbd472e Landing page per musictools.djluza.com (Cloudflare Pages)
- index.html: hero con mockup app, 6 feature cards, come funziona,
  pricing 39,90 EUR, FAQ accordion, footer
- css/style.css: tema dark Spotify-like coerente con l'app
- js/main.js: animazioni scroll, hook Lemon Squeezy overlay
- legal/{terms,privacy,refund}.html: documenti richiesti da LS/GDPR
- _headers: HSTS, no-sniff, cache lunga per asset
- _redirects: placeholder per futuri /download/{macos,windows}
- README con istruzioni deploy push-to-deploy via Cloudflare Pages

Da fare prima del lancio: sostituire REPLACE_WITH_LS_PRODUCT_URL
in index.html con l'URL del prodotto Lemon Squeezy.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-08 23:49:58 +02:00

717 lines
17 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.
/* ============================================================
MusicTools — Landing page
Palette coerente con l'app: tema scuro Spotify-like.
============================================================ */
:root {
--bg: #0a0a0a;
--bg-2: #060606;
--bg-card: #161616;
--bg-card-2: #1e1e1e;
--border: #262626;
--divider: #1f1f1f;
--text: #ffffff;
--text-muted: #a3a3a3;
--text-dim: #707070;
--accent: #1db954;
--accent-dark: #137a37;
--accent-glow: rgba(29, 185, 84, 0.35);
--pink: #f472b6;
--blue: #60a5fa;
--amber: #fbbf24;
--red: #f87171;
--purple: #a78bfa;
}
* { box-sizing: border-box; }
*::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Inter, system-ui, sans-serif;
font-size: 16px;
line-height: 1.55;
color: var(--text);
background: var(--bg);
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
img, svg { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
.container {
max-width: 1180px;
margin: 0 auto;
padding: 0 24px;
}
/* ============================================================
NAV
============================================================ */
.nav {
position: sticky;
top: 0;
z-index: 100;
background: rgba(10, 10, 10, 0.82);
backdrop-filter: saturate(180%) blur(14px);
-webkit-backdrop-filter: saturate(180%) blur(14px);
border-bottom: 1px solid var(--border);
}
.nav-row {
display: flex;
align-items: center;
justify-content: space-between;
height: 64px;
gap: 24px;
}
.brand {
display: flex;
align-items: center;
gap: 10px;
font-weight: 800;
font-size: 17px;
}
.brand-logo {
width: 32px;
height: 32px;
display: inline-flex;
align-items: center;
justify-content: center;
border-radius: 9px;
background: linear-gradient(135deg, var(--accent) 0%, var(--accent-dark) 100%);
color: #fff;
font-size: 16px;
}
.nav-links {
display: flex;
gap: 26px;
font-size: 14.5px;
color: var(--text-muted);
}
.nav-links a:hover { color: var(--text); }
/* ============================================================
BUTTONS
============================================================ */
.btn {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 8px;
font-family: inherit;
font-weight: 700;
border: none;
border-radius: 999px;
cursor: pointer;
padding: 12px 22px;
font-size: 14px;
transition: transform 0.15s ease, box-shadow 0.2s ease, background 0.2s ease;
white-space: nowrap;
}
.btn:active { transform: scale(0.98); }
.btn-primary {
background: var(--accent);
color: #0a0a0a;
box-shadow: 0 8px 24px var(--accent-glow);
}
.btn-primary:hover { background: #25d365; }
.btn-ghost {
background: transparent;
color: var(--text);
border: 1px solid var(--border);
}
.btn-ghost:hover { background: var(--bg-card); border-color: #3a3a3a; }
.btn-sm { padding: 8px 16px; font-size: 13px; }
.btn-lg { padding: 16px 32px; font-size: 16px; }
.btn-block { width: 100%; }
/* ============================================================
HERO
============================================================ */
.hero {
position: relative;
padding: 80px 0 100px;
overflow: hidden;
background:
radial-gradient(ellipse 60% 50% at 0% 0%, rgba(29, 185, 84, 0.18), transparent 60%),
radial-gradient(ellipse 60% 50% at 100% 100%, rgba(96, 165, 250, 0.12), transparent 60%),
linear-gradient(180deg, var(--bg) 0%, var(--bg-2) 100%);
}
.hero-grid {
display: grid;
grid-template-columns: 1.05fr 1fr;
gap: 60px;
align-items: center;
}
.eyebrow {
display: inline-block;
font-size: 11.5px;
font-weight: 800;
letter-spacing: 1.5px;
text-transform: uppercase;
color: var(--accent);
padding: 5px 11px;
border: 1px solid rgba(29, 185, 84, 0.35);
border-radius: 999px;
background: rgba(29, 185, 84, 0.08);
}
.eyebrow.center {
display: block;
width: max-content;
margin: 0 auto;
}
.hero h1 {
margin: 18px 0 18px;
font-size: clamp(36px, 5.2vw, 58px);
font-weight: 900;
line-height: 1.04;
letter-spacing: -0.02em;
}
.accent { color: var(--accent); }
.lead {
font-size: 17px;
color: var(--text-muted);
line-height: 1.6;
max-width: 520px;
margin: 0 0 28px;
}
.hero-cta {
display: flex;
gap: 12px;
margin-bottom: 24px;
flex-wrap: wrap;
}
.hero-bullets {
list-style: none;
padding: 0;
margin: 0;
display: flex;
flex-wrap: wrap;
gap: 8px 24px;
font-size: 13.5px;
color: var(--text-muted);
}
.hero-bullets li { display: flex; align-items: center; gap: 6px; }
/* ============================================================
HERO MOCKUP
============================================================ */
.hero-art {
position: relative;
perspective: 1200px;
}
.mockup {
width: 100%;
max-width: 560px;
margin-left: auto;
background: var(--bg-card);
border: 1px solid var(--border);
border-radius: 14px;
overflow: hidden;
box-shadow: 0 40px 100px rgba(0, 0, 0, 0.55), 0 0 0 1px rgba(255, 255, 255, 0.02);
transform: rotate3d(0, 1, 0, -6deg) translateY(0);
transition: transform 0.4s ease;
}
.mockup:hover { transform: rotate3d(0, 1, 0, -3deg); }
.mockup-bar {
display: flex;
align-items: center;
gap: 6px;
padding: 11px 14px;
background: #111111;
border-bottom: 1px solid var(--border);
position: relative;
}
.dot { width: 11px; height: 11px; border-radius: 50%; }
.dot.red { background: #ff5f57; }
.dot.yellow { background: #febc2e; }
.dot.green { background: #28c840; }
.mockup-title {
position: absolute;
left: 50%;
transform: translateX(-50%);
font-size: 12px;
color: var(--text-dim);
}
.mockup-body {
display: grid;
grid-template-columns: 168px 1fr;
min-height: 380px;
}
.mockup-side {
background: #111;
border-right: 1px solid var(--border);
padding: 16px 12px;
}
.ms-brand {
display: flex;
align-items: center;
gap: 8px;
font-size: 13px;
font-weight: 700;
margin-bottom: 18px;
padding: 0 6px;
}
.ms-brand span {
width: 22px; height: 22px; border-radius: 7px;
display: inline-flex; align-items: center; justify-content: center;
background: linear-gradient(135deg, var(--accent), var(--accent-dark));
color: #fff; font-size: 12px;
}
.ms-nav { display: flex; flex-direction: column; gap: 2px; }
.ms-item {
display: flex; align-items: center; gap: 10px;
padding: 7px 9px; border-radius: 8px;
font-size: 12.5px; color: var(--text-muted);
}
.ms-item.active { background: rgba(29, 185, 84, 0.14); color: #fff; }
.ms-item span { width: 18px; text-align: center; font-size: 13px; }
.mockup-main { padding: 16px; display: flex; flex-direction: column; gap: 12px; }
.mockup-hero {
position: relative;
padding: 18px 20px;
border-radius: 12px;
background: linear-gradient(135deg, #1db954 0%, #0e7a35 100%);
color: #fff;
overflow: hidden;
}
.mh-eyebrow { font-size: 9.5px; letter-spacing: 1.5px; font-weight: 800; opacity: 0.85; }
.mh-title { font-size: 17px; font-weight: 800; margin-top: 4px; }
.mh-sub { font-size: 11px; opacity: 0.85; margin-top: 3px; }
.mh-deco { position: absolute; right: 12px; top: 50%; transform: translateY(-50%); font-size: 36px; opacity: 0.3; }
.mockup-card {
background: var(--bg-card-2);
border: 1px solid var(--border);
border-radius: 11px;
padding: 12px 14px;
}
.mc-label { font-size: 9.5px; letter-spacing: 0.8px; color: var(--text-dim); text-transform: uppercase; font-weight: 700; }
.mc-input {
margin-top: 6px;
padding: 8px 10px;
background: #0d0d0d;
border: 1px solid var(--border);
border-radius: 999px;
font-size: 11.5px;
color: var(--text-muted);
font-family: ui-monospace, SFMono-Regular, monospace;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.mockup-actions { display: flex; flex-direction: column; gap: 10px; }
.mc-btn.primary {
background: var(--accent);
color: #0a0a0a;
font-size: 12px;
font-weight: 700;
padding: 9px 0;
border-radius: 999px;
text-align: center;
}
.mc-progress {
height: 6px;
border-radius: 999px;
background: #0d0d0d;
overflow: hidden;
}
.mc-progress-fill {
height: 100%;
background: linear-gradient(90deg, var(--accent), #25d365);
border-radius: inherit;
animation: progress-pulse 2.5s ease-in-out infinite alternate;
}
@keyframes progress-pulse {
0% { width: 40%; }
100% { width: 78%; }
}
/* ============================================================
SECTIONS
============================================================ */
.section {
padding: 100px 0;
position: relative;
}
.section-title {
font-size: clamp(28px, 3.8vw, 42px);
font-weight: 900;
letter-spacing: -0.02em;
text-align: center;
margin: 14px 0 12px;
}
.section-lead {
text-align: center;
color: var(--text-muted);
font-size: 16px;
max-width: 620px;
margin: 0 auto 48px;
}
/* ============================================================
FEATURES
============================================================ */
.features { background: var(--bg-2); border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); }
.feat-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
gap: 16px;
}
.feat {
background: var(--bg-card);
border: 1px solid var(--border);
border-radius: 16px;
padding: 24px 22px;
transition: transform 0.2s ease, border-color 0.2s ease, box-shadow 0.25s ease;
}
.feat:hover {
transform: translateY(-4px);
border-color: #383838;
box-shadow: 0 18px 40px rgba(0, 0, 0, 0.4);
}
.feat-icon {
width: 44px;
height: 44px;
border-radius: 12px;
display: flex;
align-items: center;
justify-content: center;
font-size: 20px;
margin-bottom: 14px;
}
.feat.green .feat-icon { background: rgba(29, 185, 84, 0.16); color: var(--accent); }
.feat.pink .feat-icon { background: rgba(244, 114, 182, 0.16); color: var(--pink); }
.feat.blue .feat-icon { background: rgba(96, 165, 250, 0.16); color: var(--blue); }
.feat.amber .feat-icon { background: rgba(251, 191, 36, 0.16); color: var(--amber); }
.feat.red .feat-icon { background: rgba(248, 113, 113, 0.16); color: var(--red); }
.feat.purple .feat-icon { background: rgba(167, 139, 250, 0.16); color: var(--purple); }
.feat h3 {
font-size: 17px;
font-weight: 800;
margin: 0 0 6px;
}
.feat p {
font-size: 14px;
color: var(--text-muted);
margin: 0;
line-height: 1.55;
}
/* ============================================================
HOW IT WORKS
============================================================ */
.how-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 20px;
margin-top: 12px;
}
.how-step {
background: var(--bg-card);
border: 1px solid var(--border);
border-radius: 16px;
padding: 28px;
text-align: center;
}
.how-num {
width: 44px;
height: 44px;
border-radius: 14px;
background: linear-gradient(135deg, var(--accent), var(--accent-dark));
color: #fff;
font-weight: 900;
font-size: 18px;
display: flex;
align-items: center;
justify-content: center;
margin: 0 auto 16px;
box-shadow: 0 10px 24px var(--accent-glow);
}
.how-step h3 {
font-size: 17px;
margin: 0 0 6px;
font-weight: 800;
}
.how-step p {
color: var(--text-muted);
font-size: 14px;
margin: 0;
}
/* ============================================================
PRICING
============================================================ */
.pricing { background: var(--bg-2); border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); }
.price-card {
max-width: 480px;
margin: 0 auto;
background: var(--bg-card);
border: 1px solid var(--border);
border-radius: 22px;
padding: 36px 32px 32px;
position: relative;
text-align: center;
box-shadow: 0 30px 80px rgba(29, 185, 84, 0.12);
}
.price-badge {
position: absolute;
top: -14px;
left: 50%;
transform: translateX(-50%);
background: var(--accent);
color: #0a0a0a;
font-size: 11px;
letter-spacing: 1px;
font-weight: 800;
padding: 6px 12px;
border-radius: 999px;
text-transform: uppercase;
}
.price-name {
font-size: 13px;
letter-spacing: 1.5px;
text-transform: uppercase;
color: var(--text-muted);
font-weight: 700;
}
.price-row {
display: flex;
align-items: baseline;
justify-content: center;
gap: 6px;
margin: 14px 0 24px;
}
.price-amount {
font-size: 64px;
font-weight: 900;
line-height: 1;
letter-spacing: -0.03em;
}
.price-currency { font-size: 26px; font-weight: 700; color: var(--text-muted); }
.price-once { font-size: 14px; color: var(--text-muted); margin-left: 8px; }
.price-features {
list-style: none;
padding: 0;
margin: 0 0 28px;
text-align: left;
}
.price-features li {
padding: 9px 0;
border-bottom: 1px dashed var(--divider);
font-size: 14.5px;
color: var(--text-muted);
}
.price-features li:last-child { border-bottom: none; }
.price-features strong { color: var(--text); font-weight: 700; }
.price-note {
font-size: 12px;
color: var(--text-dim);
margin: 14px 0 0;
}
/* ============================================================
FAQ
============================================================ */
.faq-list {
max-width: 760px;
margin: 0 auto;
}
.faq-item {
border: 1px solid var(--border);
background: var(--bg-card);
border-radius: 14px;
margin-bottom: 10px;
overflow: hidden;
}
.faq-item summary {
list-style: none;
cursor: pointer;
padding: 18px 22px;
font-weight: 700;
font-size: 15.5px;
position: relative;
padding-right: 50px;
transition: background 0.18s ease;
}
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary::after {
content: "+";
position: absolute;
right: 22px;
top: 50%;
transform: translateY(-50%);
font-size: 22px;
color: var(--accent);
font-weight: 400;
transition: transform 0.25s ease;
}
.faq-item[open] summary::after { content: "−"; }
.faq-item summary:hover { background: var(--bg-card-2); }
.faq-item p {
margin: 0;
padding: 0 22px 18px;
color: var(--text-muted);
font-size: 14.5px;
line-height: 1.6;
}
.faq-item code {
background: var(--bg-card-2);
padding: 2px 7px;
border-radius: 5px;
font-size: 13px;
font-family: ui-monospace, SFMono-Regular, monospace;
color: var(--accent);
}
/* ============================================================
FINAL CTA
============================================================ */
.cta-final { padding: 60px 0 90px; }
.cta-box {
text-align: center;
background:
radial-gradient(ellipse at center, rgba(29, 185, 84, 0.2), transparent 70%),
linear-gradient(135deg, var(--bg-card) 0%, var(--bg-card-2) 100%);
border: 1px solid var(--border);
border-radius: 22px;
padding: 56px 28px;
max-width: 880px;
margin: 0 auto;
}
.cta-box h2 { font-size: clamp(24px, 3.2vw, 34px); font-weight: 900; margin: 0 0 8px; letter-spacing: -0.02em; }
.cta-box p { color: var(--text-muted); margin: 0 0 22px; font-size: 16px; }
/* ============================================================
FOOTER
============================================================ */
.footer {
background: var(--bg-2);
border-top: 1px solid var(--border);
padding: 36px 0 30px;
font-size: 13.5px;
color: var(--text-muted);
}
.footer-row {
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
gap: 18px;
margin-bottom: 14px;
}
.footer-brand {
display: flex;
align-items: center;
gap: 10px;
font-weight: 700;
color: var(--text);
}
.footer-by { color: var(--text-dim); font-weight: 400; }
.footer-links { display: flex; gap: 22px; }
.footer-links a:hover { color: var(--text); }
.footer-copy {
font-size: 12px;
color: var(--text-dim);
border-top: 1px solid var(--divider);
padding-top: 16px;
}
/* ============================================================
RESPONSIVE
============================================================ */
@media (max-width: 920px) {
.hero { padding: 60px 0 70px; }
.hero-grid { grid-template-columns: 1fr; gap: 40px; }
.hero-art { display: none; } /* su mobile nascondiamo il mockup */
.nav-links { display: none; }
.section { padding: 70px 0; }
.how-grid { grid-template-columns: 1fr; }
.footer-row { flex-direction: column; align-items: flex-start; }
}
@media (max-width: 480px) {
.container { padding: 0 18px; }
.hero-cta .btn { width: 100%; }
.price-amount { font-size: 52px; }
}
/* ============================================================
ANIMAZIONI SCROLL
============================================================ */
.nav.scrolled { box-shadow: 0 1px 0 var(--border), 0 8px 24px rgba(0,0,0,0.4); }
.feat, .how-step, .price-card, .faq-item {
opacity: 0;
transform: translateY(16px);
transition: opacity 0.5s ease, transform 0.5s cubic-bezier(0.2, 0.8, 0.2, 1);
}
.feat.in-view, .how-step.in-view, .price-card.in-view, .faq-item.in-view {
opacity: 1;
transform: translateY(0);
}
@media (prefers-reduced-motion: reduce) {
.feat, .how-step, .price-card, .faq-item {
opacity: 1; transform: none; transition: none;
}
.mockup { transform: none !important; }
.mc-progress-fill { animation: none !important; width: 64% !important; }
html { scroll-behavior: auto; }
}