feat: full Fase 0 landing (services, advantage, packages, process, CTA)
This commit is contained in:
parent
4d0f97d9a5
commit
32bf6c828c
2 changed files with 259 additions and 153 deletions
212
app/globals.css
212
app/globals.css
|
|
@ -1,156 +1,122 @@
|
|||
:root {
|
||||
--bg: #0a0a0b;
|
||||
--bg-2: #101013;
|
||||
--fg: #fafafa;
|
||||
--muted: #a1a1aa;
|
||||
--line: rgba(255, 255, 255, 0.1);
|
||||
--accent: #6366f1;
|
||||
--accent-2: #22d3ee;
|
||||
--maxw: 1100px;
|
||||
--maxw: 1140px;
|
||||
}
|
||||
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
* { box-sizing: border-box; margin: 0; padding: 0; }
|
||||
|
||||
html { scroll-behavior: smooth; }
|
||||
|
||||
html,
|
||||
body {
|
||||
background: var(--bg);
|
||||
color: var(--fg);
|
||||
font-family: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto,
|
||||
Helvetica, Arial, sans-serif;
|
||||
font-family: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
a {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
a { color: inherit; text-decoration: none; }
|
||||
|
||||
.hero {
|
||||
min-height: 100dvh;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: clamp(20px, 4vw, 40px);
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
.wrap { max-width: var(--maxw); margin: 0 auto; padding: 0 clamp(20px, 5vw, 40px); width: 100%; }
|
||||
|
||||
.hero::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background: radial-gradient(
|
||||
60% 50% at 72% 0%,
|
||||
rgba(99, 102, 241, 0.28),
|
||||
transparent 70%
|
||||
),
|
||||
radial-gradient(40% 40% at 0% 100%, rgba(34, 211, 238, 0.12), transparent 70%);
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.nav {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.logo {
|
||||
font-weight: 700;
|
||||
letter-spacing: -0.02em;
|
||||
}
|
||||
|
||||
.nav-cta {
|
||||
font-size: 0.9rem;
|
||||
color: var(--muted);
|
||||
}
|
||||
|
||||
.content {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
max-width: var(--maxw);
|
||||
width: 100%;
|
||||
margin: 0 auto;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.eyebrow {
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.18em;
|
||||
font-size: 0.78rem;
|
||||
color: var(--accent-2);
|
||||
margin-bottom: 1.2rem;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: clamp(2.4rem, 6.5vw, 5rem);
|
||||
line-height: 1.02;
|
||||
letter-spacing: -0.03em;
|
||||
font-weight: 800;
|
||||
}
|
||||
|
||||
h1 span {
|
||||
.grad {
|
||||
background: linear-gradient(90deg, var(--accent), var(--accent-2));
|
||||
-webkit-background-clip: text;
|
||||
background-clip: text;
|
||||
color: transparent;
|
||||
}
|
||||
|
||||
.sub {
|
||||
margin-top: 1.6rem;
|
||||
max-width: 620px;
|
||||
font-size: clamp(1rem, 1.6vw, 1.25rem);
|
||||
color: var(--muted);
|
||||
line-height: 1.6;
|
||||
/* HEADER */
|
||||
.hd {
|
||||
position: sticky; top: 0; z-index: 50;
|
||||
display: flex; justify-content: space-between; align-items: center;
|
||||
padding: 16px clamp(20px, 5vw, 40px);
|
||||
background: rgba(10, 10, 11, 0.7);
|
||||
backdrop-filter: blur(12px);
|
||||
border-bottom: 1px solid var(--line);
|
||||
}
|
||||
.logo { font-weight: 700; letter-spacing: -0.02em; }
|
||||
.hd-nav { display: flex; gap: 1.6rem; align-items: center; font-size: 0.92rem; }
|
||||
.hd-nav a { color: var(--muted); transition: color 0.15s; }
|
||||
.hd-nav a:hover { color: var(--fg); }
|
||||
.hd-cta { color: var(--fg) !important; border: 1px solid var(--line); padding: 0.5rem 1rem; border-radius: 999px; }
|
||||
@media (max-width: 640px) { .hd-nav a:not(.hd-cta) { display: none; } }
|
||||
|
||||
.actions {
|
||||
margin-top: 2.4rem;
|
||||
display: flex;
|
||||
gap: 1rem;
|
||||
flex-wrap: wrap;
|
||||
/* HERO */
|
||||
.hero { position: relative; overflow: hidden; padding: clamp(80px, 14vw, 160px) 0 clamp(60px, 9vw, 110px); }
|
||||
.hero::before {
|
||||
content: ""; position: absolute; inset: 0; pointer-events: none;
|
||||
background: radial-gradient(55% 50% at 72% -10%, rgba(99, 102, 241, 0.28), transparent 70%),
|
||||
radial-gradient(40% 45% at 0% 110%, rgba(34, 211, 238, 0.12), transparent 70%);
|
||||
}
|
||||
.hero .wrap { position: relative; z-index: 1; }
|
||||
.eyebrow { text-transform: uppercase; letter-spacing: 0.18em; font-size: 0.76rem; color: var(--accent-2); margin-bottom: 1.1rem; }
|
||||
h1 { font-size: clamp(2.3rem, 6vw, 4.6rem); line-height: 1.04; letter-spacing: -0.03em; font-weight: 800; }
|
||||
.sub { margin-top: 1.5rem; max-width: 620px; font-size: clamp(1rem, 1.5vw, 1.2rem); color: var(--muted); }
|
||||
.actions { margin-top: 2.2rem; display: flex; gap: 1rem; flex-wrap: wrap; }
|
||||
|
||||
.btn {
|
||||
padding: 0.85rem 1.5rem;
|
||||
border-radius: 999px;
|
||||
font-weight: 600;
|
||||
font-size: 0.95rem;
|
||||
transition: transform 0.15s ease, opacity 0.15s ease;
|
||||
}
|
||||
.btn { padding: 0.85rem 1.5rem; border-radius: 999px; font-weight: 600; font-size: 0.95rem; transition: transform 0.15s; display: inline-block; }
|
||||
.btn:hover { transform: translateY(-2px); }
|
||||
.btn.primary { background: linear-gradient(90deg, var(--accent), var(--accent-2)); color: #04060a; }
|
||||
.btn.ghost { border: 1px solid var(--line); color: var(--fg); }
|
||||
.btn.big { padding: 1.05rem 2.2rem; font-size: 1.05rem; }
|
||||
|
||||
.btn:hover {
|
||||
transform: translateY(-2px);
|
||||
}
|
||||
/* PROOF STRIP */
|
||||
.strip { display: flex; gap: 1rem; align-items: center; flex-wrap: wrap; padding: 22px clamp(20px, 5vw, 40px); color: var(--muted); font-size: 0.9rem; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
|
||||
.strip .dot { opacity: 0.4; }
|
||||
|
||||
.btn.primary {
|
||||
background: linear-gradient(90deg, var(--accent), var(--accent-2));
|
||||
color: #04060a;
|
||||
}
|
||||
/* BANDS */
|
||||
.band { padding: clamp(56px, 9vw, 110px) 0; }
|
||||
.band.alt { background: var(--bg-2); }
|
||||
.band h2 { font-size: clamp(1.7rem, 3.4vw, 2.6rem); letter-spacing: -0.02em; font-weight: 800; }
|
||||
.lead { margin-top: 0.9rem; max-width: 640px; color: var(--muted); font-size: clamp(1rem, 1.4vw, 1.15rem); }
|
||||
.lead strong { color: var(--fg); }
|
||||
|
||||
.btn.ghost {
|
||||
border: 1px solid rgba(255, 255, 255, 0.18);
|
||||
color: var(--fg);
|
||||
}
|
||||
/* GRIDS + CARDS */
|
||||
.grid3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.1rem; margin-top: 2.6rem; }
|
||||
.grid4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.1rem; margin-top: 2.6rem; }
|
||||
@media (max-width: 900px) { .grid3, .grid4 { grid-template-columns: repeat(2, 1fr); } }
|
||||
@media (max-width: 560px) { .grid3, .grid4 { grid-template-columns: 1fr; } }
|
||||
|
||||
.foot {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
color: var(--muted);
|
||||
font-size: 0.8rem;
|
||||
padding-top: 2rem;
|
||||
.card {
|
||||
background: rgba(255, 255, 255, 0.025);
|
||||
border: 1px solid var(--line);
|
||||
border-radius: 16px;
|
||||
padding: 1.5rem;
|
||||
transition: border-color 0.2s, transform 0.2s;
|
||||
}
|
||||
.card:hover { border-color: rgba(99, 102, 241, 0.5); transform: translateY(-3px); }
|
||||
.card h3 { font-size: 1.15rem; margin-bottom: 0.5rem; letter-spacing: -0.01em; }
|
||||
.card p { color: var(--muted); font-size: 0.96rem; }
|
||||
.card .step { font-size: 0.85rem; font-weight: 700; color: var(--accent-2); letter-spacing: 0.1em; }
|
||||
|
||||
@media (max-width: 640px) {
|
||||
.actions {
|
||||
flex-direction: column;
|
||||
}
|
||||
.btn {
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
.vertical { display: grid; gap: 2rem; }
|
||||
|
||||
/* PACKAGES */
|
||||
.pkg { position: relative; background: rgba(255, 255, 255, 0.025); border: 1px solid var(--line); border-radius: 16px; padding: 1.6rem 1.4rem; }
|
||||
.pkg.featured { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent), 0 20px 50px -20px rgba(99, 102, 241, 0.5); }
|
||||
.pkg .tag { position: absolute; top: -11px; left: 1.4rem; background: linear-gradient(90deg, var(--accent), var(--accent-2)); color: #04060a; font-size: 0.7rem; font-weight: 700; padding: 0.25rem 0.7rem; border-radius: 999px; }
|
||||
.pkg h3 { font-size: 1.2rem; }
|
||||
.pkg .who { color: var(--muted); font-size: 0.85rem; margin: 0.3rem 0 1rem; }
|
||||
.pkg ul { list-style: none; display: flex; flex-direction: column; gap: 0.55rem; }
|
||||
.pkg li { font-size: 0.92rem; padding-left: 1.4rem; position: relative; }
|
||||
.pkg li::before { content: "→"; position: absolute; left: 0; color: var(--accent-2); }
|
||||
|
||||
/* CTA */
|
||||
.cta { position: relative; overflow: hidden; padding: clamp(70px, 11vw, 130px) 0; text-align: center; }
|
||||
.cta::before { content: ""; position: absolute; inset: 0; background: radial-gradient(50% 80% at 50% 0%, rgba(99, 102, 241, 0.22), transparent 70%); pointer-events: none; }
|
||||
.cta .wrap { position: relative; z-index: 1; display: flex; flex-direction: column; align-items: center; }
|
||||
.cta h2 { font-size: clamp(1.9rem, 4vw, 3rem); letter-spacing: -0.02em; }
|
||||
.cta .lead { margin-left: auto; margin-right: auto; text-align: center; }
|
||||
.cta .btn { margin-top: 2rem; }
|
||||
|
||||
/* FOOTER */
|
||||
.ft { border-top: 1px solid var(--line); padding: 2.5rem 0; }
|
||||
.ft .wrap { display: flex; justify-content: space-between; gap: 1rem; flex-wrap: wrap; font-size: 0.85rem; }
|
||||
.ft .muted { color: var(--muted); }
|
||||
|
|
|
|||
178
app/page.tsx
178
app/page.tsx
|
|
@ -1,38 +1,178 @@
|
|||
const services = [
|
||||
{ t: "Web & Desarrollo", d: "Sitios en código, rápidos y editables. Sin plantillas genéricas." },
|
||||
{ t: "SEO", d: "Posicionamiento técnico y de contenido, con reporting real." },
|
||||
{ t: "Paid Ads", d: "Google, Meta, TikTok, LinkedIn — creatividad + optimización con IA." },
|
||||
{ t: "Contenido", d: "Artículos y piezas optimizadas para Google y para IA (GEO)." },
|
||||
{ t: "Diseño & Marca", d: "Identidad y dirección de arte con criterio, no plantillas." },
|
||||
{ t: "Automatización", d: "Flujos que ahorran horas: leads, reporting, operativa." },
|
||||
];
|
||||
|
||||
const pillars = [
|
||||
{ k: "Más rápido", d: "Entregamos en días lo que una agencia tradicional tarda semanas." },
|
||||
{ k: "Más medible", d: "Cada acción con su dashboard y su resultado, no humo." },
|
||||
{ k: "Mejor coste", d: "Nuestra plataforma hace el trabajo pesado. Pagas resultado, no horas." },
|
||||
];
|
||||
|
||||
const packages = [
|
||||
{ n: "Sitio AI-native", who: "Necesitas web ya", f: ["Web editable en código", "SEO base + tracking", "Listo en tiempo récord"] },
|
||||
{ n: "Base", who: "Estás arrancando", f: ["Fundamentos SEO", "Contenido inicial", "Analítica"] },
|
||||
{ n: "Motor", who: "Quieres crecer", f: ["Ads + SEO + contenido", "Dashboard de resultados", "Optimización mensual"], featured: true },
|
||||
{ n: "Partner", who: "Quieres escalar", f: ["Full-stack de crecimiento", "Automatización a medida", "Prioridad y plataforma"] },
|
||||
];
|
||||
|
||||
const steps = [
|
||||
{ n: "01", t: "Diagnóstico", d: "Analizamos tu negocio, tu mercado y tus números." },
|
||||
{ n: "02", t: "Sistema", d: "Montamos el motor: web, canales, automatización." },
|
||||
{ n: "03", t: "Crecimiento", d: "Iteramos sobre datos. Tú ves el resultado en tu dashboard." },
|
||||
];
|
||||
|
||||
export default function Home() {
|
||||
return (
|
||||
<main className="hero">
|
||||
<nav className="nav">
|
||||
<>
|
||||
<header className="hd">
|
||||
<span className="logo">Feedback Studios</span>
|
||||
<a className="nav-cta" href="#contacto">
|
||||
Habla con nosotros
|
||||
</a>
|
||||
<nav className="hd-nav">
|
||||
<a href="#servicios">Servicios</a>
|
||||
<a href="#paquetes">Paquetes</a>
|
||||
<a href="#contacto" className="hd-cta">Habla con nosotros</a>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<section className="content">
|
||||
<main>
|
||||
{/* HERO */}
|
||||
<section className="hero">
|
||||
<div className="wrap">
|
||||
<p className="eyebrow">Agencia de marketing AI-native</p>
|
||||
<h1>
|
||||
La mayoría de agencias alquilan sus herramientas.
|
||||
<br />
|
||||
<span>Nosotros construimos la nuestra.</span>
|
||||
<span className="grad">Nosotros construimos la nuestra.</span>
|
||||
</h1>
|
||||
<p className="sub">
|
||||
Estrategia humana + nuestra propia plataforma de IA. Web, SEO, ads y
|
||||
contenido — más rápido, más medible y a mejor coste que una agencia
|
||||
tradicional.
|
||||
Estrategia humana + nuestra propia plataforma de IA. Web, SEO, ads
|
||||
y contenido — más rápido, más medible y a mejor coste que una
|
||||
agencia tradicional.
|
||||
</p>
|
||||
<div className="actions">
|
||||
<a className="btn primary" href="#contacto">
|
||||
Habla con nosotros
|
||||
</a>
|
||||
<a className="btn ghost" href="#trabajo">
|
||||
Ver resultados
|
||||
</a>
|
||||
<a className="btn primary" href="#contacto">Habla con nosotros</a>
|
||||
<a className="btn ghost" href="#servicios">Ver qué hacemos</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<footer className="foot">
|
||||
© 2026 Feedback Studios · construido sobre infraestructura propia
|
||||
</footer>
|
||||
{/* PROOF STRIP */}
|
||||
<section className="strip wrap">
|
||||
<span>+60 marcas confían en nosotros</span>
|
||||
<span className="dot">·</span>
|
||||
<span>Web · SEO · Ads · Contenido</span>
|
||||
<span className="dot">·</span>
|
||||
<span>Resultados medibles</span>
|
||||
</section>
|
||||
|
||||
{/* VENTAJA INJUSTA */}
|
||||
<section className="band">
|
||||
<div className="wrap">
|
||||
<h2>Nuestra ventaja injusta</h2>
|
||||
<p className="lead">
|
||||
No alquilamos herramientas ni envolvemos un ChatGPT. Operamos tu
|
||||
marketing sobre <strong>nuestra propia plataforma de IA</strong>.
|
||||
</p>
|
||||
<div className="grid3">
|
||||
{pillars.map((p) => (
|
||||
<div className="card" key={p.k}>
|
||||
<h3>{p.k}</h3>
|
||||
<p>{p.d}</p>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{/* SERVICIOS */}
|
||||
<section id="servicios" className="band alt">
|
||||
<div className="wrap">
|
||||
<h2>Qué hacemos</h2>
|
||||
<p className="lead">Todo lo que necesita tu crecimiento, bajo un mismo techo y un mismo sistema.</p>
|
||||
<div className="grid3">
|
||||
{services.map((s) => (
|
||||
<div className="card" key={s.t}>
|
||||
<h3>{s.t}</h3>
|
||||
<p>{s.d}</p>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{/* PROFUNDIDAD POR SECTOR */}
|
||||
<section className="band">
|
||||
<div className="wrap vertical">
|
||||
<div>
|
||||
<p className="eyebrow">Soluciones a medida</p>
|
||||
<h2>Generalistas por fuera, profundos por dentro</h2>
|
||||
<p className="lead">
|
||||
Para sectores exigentes construimos soluciones específicas sobre
|
||||
nuestra plataforma — por ejemplo, clínicas estéticas con captación,
|
||||
seguimiento y operativa a medida. Profundidad que un generalista no tiene.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{/* PAQUETES */}
|
||||
<section id="paquetes" className="band alt">
|
||||
<div className="wrap">
|
||||
<h2>Paquetes</h2>
|
||||
<p className="lead">Cada uno con un resultado prometido y su dashboard. No listas de tareas.</p>
|
||||
<div className="grid4">
|
||||
{packages.map((p) => (
|
||||
<div className={"pkg" + (p.featured ? " featured" : "")} key={p.n}>
|
||||
{p.featured && <span className="tag">Más popular</span>}
|
||||
<h3>{p.n}</h3>
|
||||
<p className="who">{p.who}</p>
|
||||
<ul>
|
||||
{p.f.map((x) => (
|
||||
<li key={x}>{x}</li>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{/* PROCESO */}
|
||||
<section className="band">
|
||||
<div className="wrap">
|
||||
<h2>Cómo trabajamos</h2>
|
||||
<div className="grid3">
|
||||
{steps.map((s) => (
|
||||
<div className="card" key={s.n}>
|
||||
<span className="step">{s.n}</span>
|
||||
<h3>{s.t}</h3>
|
||||
<p>{s.d}</p>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{/* CONTACTO */}
|
||||
<section id="contacto" className="cta">
|
||||
<div className="wrap">
|
||||
<h2>¿Hablamos de tu crecimiento?</h2>
|
||||
<p className="lead">Cuéntanos dónde estás y te enseñamos cómo llegar al siguiente nivel.</p>
|
||||
<a className="btn primary big" href="mailto:feedback.studios.design@gmail.com">Habla con nosotros</a>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<footer className="ft">
|
||||
<div className="wrap">
|
||||
<span>© 2026 Feedback Studios</span>
|
||||
<span className="muted">Agencia de marketing AI-native · construido sobre infraestructura propia</span>
|
||||
</div>
|
||||
</footer>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue