/* Sam's article — Los estantes flotantes parecen difíciles. No lo son. La prueba.
 * Format: Sam editorial — Crumbs, Hero, Lede, WhatYouNeed, Steps, HotTakes, Redo, Signoff.
 */

const SamSays = ({ children }) => (
  <div className="sa-step-says">
    <span className="who">- Sam</span>
    <p>{children}</p>
  </div>
);

const heroImage = "https://images.unsplash.com/photo-1616594039964-ae9021a400a0?w=2000&q=84";

const Crumbs = () => (
  <nav className="sa-crumbs" aria-label="Breadcrumb">
    <div className="l">
      <a href="/">Inicio</a>
      <span>/</span>
      <a href="/es/contributors/sam/">Sam</a>
      <span>/</span>
      <span>Cómo</span>
      <span>/</span>
      <span style={{ color: "#EFE5CF" }}>Estantes flotantes</span>
    </div>
    <div className="r">
      <span>Edición 04 | Primavera '26</span>
      <span className="by">escrito por Sam</span>
    </div>
  </nav>
);

const Hero = () => (
  <section className="sa-hero">
    <div className="img" style={{ backgroundImage: `url('${heroImage}')` }} />
    <div className="sa-hero-wrap">
      <div>
        <div className="sa-hero-kicker">
          <span>Cómo</span>
          <span className="dot">*</span>
          <span>No. 04</span>
          <span className="dot">*</span>
          <span className="sig">escrito por Sam</span>
        </div>
        <h1>
          Los estantes flotantes parecen difíciles. <em>No lo son.</em>
        </h1>
        <p className="standfirst">
          Sin soportes visibles. Sin herraje complicado. Solo una pared que al fin parece que lo planeaste así. Encuentra los montantes, compra el soporte correcto, haz el acabado primero y no te apresures en el último paso.
        </p>
      </div>
      <div className="sa-hero-side">
        <div className="row">
          <span>Tiempo</span>
          <span className="v">Una tarde</span>
        </div>
        <div className="row">
          <span>Costo</span>
          <span className="v">$35–$160</span>
        </div>
        <div className="row">
          <span>Dificultad</span>
          <span className="v">Principiante avanzado</span>
        </div>
        <div className="row">
          <span>Nivel de tiradero</span>
          <span className="v warn">Polvo + perforación</span>
        </div>
        <div className="row">
          <span>Actualizado</span>
          <span className="v">Primavera '26</span>
        </div>
      </div>
    </div>
    <div className="sa-hero-scribble">
      montantes primero. <u>estilo después.</u>
      <svg viewBox="0 0 60 30" fill="none">
        <path d="M2 22 C 12 8, 28 4, 56 12" stroke="currentColor" strokeWidth="2" strokeLinecap="round" />
        <path d="M48 6 L 56 12 L 50 20" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" fill="none" />
      </svg>
    </div>
  </section>
);

const Lede = () => (
  <section className="sa-lede">
    <div className="sa-lede-wrap">
      <aside className="sa-lede-side">
        <div className="marker">En esta</div>
        <ul>
          <li>Encuentra todos los montantes primero</li>
          <li>Elige la ruta del soporte</li>
          <li>Haz el acabado antes de colgar</li>
          <li>Perfora previamente y nivela</li>
          <li>Cuña, sellador y decoración</li>
        </ul>
      </aside>

      <div className="sa-lede-body">
        <p className="dropcap">
          Los estantes flotantes tienen una reputación que no merecen.
        </p>
        <p>
          La gente los ve en fotos de diseño y asume que hay algún secreto de contratista: refuerzo oculto, anclajes especiales, un nivel de precisión que va más allá de un sábado por la tarde normal. No es así. El truco está en tres cosas: encontrar los montantes, comprar el soporte correcto y no apresurarse en el último paso.
        </p>
        <div className="sa-pullquote">
          <p>
            Si alguna vez has colgado un cuadro, tienes experiencia suficiente para hacer esto. Es la misma idea, solo que más pesado.
          </p>
        </div>
        <p>
          Eso es todo. Ese es el secreto. El estante parece mágico desde el frente, pero es la pared la que hace el trabajo detrás.
        </p>
      </div>

      <aside className="sa-margin">
        <span className="lab">Nota de Sam</span>
        <h4>Nada de heroicidades con solo pladur</h4>
        <p>
          Un estante que soporte libros, plantas o cerámicas necesita llegar a los montantes. Los anclajes de pladur aguantan un tiempo y luego fallan en el peor momento posible.
        </p>
      </aside>
    </div>
  </section>
);

const WhatYouNeed = () => (
  <section className="sa-need">
    <div className="sa-need-wrap">
      <div>
        <div className="sa-need-head">01 / Ferretería</div>
        <h2>
          Lo que <em>de verdad</em> necesitas
        </h2>
        <p className="body">
          Señala los montantes antes de ir a comprar. La distancia entre montantes determina qué soporte y qué longitud de estante funcionan en tu pared.
        </p>

        <div className="sa-need-dont">
          <span className="lab">No te molestes con</span>
          <ul>
            <li>
              Anclajes de pladur para estantes con carga
              <span className="why">No son el plan para libros, plantas, cerámicas ni nada que importe.</span>
            </li>
            <li>
              Tornillos demasiado cortos
              <span className="why">Tienen que atravesar el soporte y el pladur y aun así morder la madera a fondo.</span>
            </li>
            <li>
              Hacer el acabado después de instalar
              <span className="why">Pintar en una escalera es como aprender arrepentimiento con los hombros.</span>
            </li>
          </ul>
        </div>
      </div>

      <ul className="sa-need-list">
        <li>
          <span className="item">
            Detector de montantes o imán fuerte
            <span className="why">Un imán encuentra los tornillos de pladur que suelen marcar los montantes.</span>
          </span>
          <span className="qty">1</span>
        </li>
        <li>
          <span className="item">
            Soporte oculto o soportes visibles
            <span className="why">Oculto para el look de foto de diseño; visible para el primer intento más fácil.</span>
          </span>
          <span className="qty">Set</span>
        </li>
        <li>
          <span className="item">
            Tabla de 1x10 o 1x12
            <span className="why">El pino es barato. El álamo pinta bien. El roble y la nuez cuestan más y pesan más.</span>
          </span>
          <span className="qty">Cortada</span>
        </li>
        <li>
          <span className="item">
            Nivel
            <span className="why">De cuatro pies si lo tienes; dos pies como mínimo.</span>
          </span>
          <span className="qty">1</span>
        </li>
        <li>
          <span className="item">
            Taladro y brocas
            <span className="why">Perforar previamente mantiene el pladur limpio y los tornillos bien asentados.</span>
          </span>
          <span className="qty">Set</span>
        </li>
        <li>
          <span className="item">
            Tornillos de 2,5 o 3 pulgadas
            <span className="why">Lo bastante largos para penetrar al menos 1,5 pulgadas en el montante.</span>
          </span>
          <span className="qty">Pack</span>
        </li>
        <li>
          <span className="item">
            Lija, pintura o tinte
            <span className="why">Haz el acabado del estante antes de colgarlo.</span>
          </span>
          <span className="qty">Suficiente</span>
        </li>
      </ul>
    </div>
  </section>
);

const STEPS = [
  {
    n: "01",
    phase: "Localizar | 15 min",
    title: "Señala todos los montantes en la zona de trabajo.",
    flip: false,
    body: (
      <>
        <p>
          Acércate a la pared y golpea. El sonido hueco es pladur sin nada detrás. El sonido sólido es donde está el montante. Usa un detector de montantes si lo tienes. Si no, un imán fuerte encontrará los tornillos de pladur que marcan los montantes.
        </p>
        <p>
          Señala cada montante con cinta. Los montantes suelen estar a 16 pulgadas de distancia, pero no diseñes el estante basándote en el "suele". Mide la pared que tienes de verdad.
        </p>
      </>
    ),
    warn: { lab: "Montantes, no esperanza", text: "Los anclajes de pladur no son el plan de soporte para un estante de verdad. Son el plan para una futura tristeza." },
    fig: { img: heroImage, tag: "Fig 01 | Mapa de montantes", cap: "el soporte solo funciona si la pared hace su parte." },
    says: "Señala todos los montantes antes de ir a comprar. El soporte tiene que encajar en la pared, no en el tablero de inspiración."
  },
  {
    n: "02",
    phase: "Elegir | 20 min",
    title: "Elige tu ruta de soporte.",
    flip: true,
    body: (
      <>
        <p>
          La ruta uno es el sistema de soporte oculto: varillas metálicas o una placa se atornillan a los montantes y el estante se desliza encima sin que se vea nada por el frente ni los lados. Esta es la versión limpia de la foto de diseño.
        </p>
        <p>
          La ruta dos es un soporte tradicional con una tabla de madera encima. El soporte queda visible por debajo, pero es más rápido, más fácil de ajustar y más tolerante. Para un primer proyecto, la ruta dos es la jugada.
        </p>
      </>
    ),
    tip: { lab: "Acabado del soporte", text: "El hierro negro queda moderno. El latón lo calienta. Los soportes utilitarios plateados básicos solo funcionan si apuestas por lo industrial." },
    fig: { img: "https://images.unsplash.com/photo-1600585154340-be6161a56a0c?w=1200&q=84", tag: "Fig 02 | Ruta", cap: "herraje oculto o herraje honesto. los dos funcionan." }
  },
  {
    n: "03",
    phase: "Acabado | 1–2 hrs activas",
    title: "Haz el acabado del estante antes de que toque la pared.",
    flip: false,
    body: (
      <>
        <p>
          Lija la tabla antes de todo lo demás. Empieza con grano 120 para eliminar los puntos ásperos, luego pasa con grano 220 hasta que quede suave. Limpia el polvo con un paño húmedo y deja secar.
        </p>
        <p>
          Pinta o tinta ahora. Dos manos. Si pintas, una lijada suave entre manos hace que la superficie final parezca que viene de una tienda y no del pasillo de maderas.
        </p>
      </>
    ),
    warn: { lab: "El tiempo de curado importa", text: "Seco al tacto no es curado. Dale a la mayoría de pinturas al menos 24 horas antes de manipular el estante y cargarlo." },
    fig: { img: "https://images.unsplash.com/photo-1589939705384-5185137a7f0f?w=1200&q=80", tag: "Fig 03 | Acabado primero", cap: "plano sobre caballetes es mejor que agachada en una escalera." },
    says: "El estante es más fácil de dejar bonito antes de estar pegado a la pared. Obvio, y sin embargo casi siempre se ignora."
  },
  {
    n: "04",
    phase: "Colgar | 45 min",
    title: "Perfora previamente, nivela y luego aprieta.",
    flip: true,
    body: (
      <>
        <p>
          Sostén el soporte donde quieres el estante. Marca a través de los agujeros del soporte. Retíralo y comprueba las marcas. Si al menos dos tornillos caen en montantes, adelante. Si no, desplaza el soporte.
        </p>
        <p>
          Perfora despacio. Ajusta ambos tornillos sin apretar del todo, comprueba el nivel y luego aprieta el resto. Un soporte que entra ligeramente torcido es un suplicio corregirlo después.
        </p>
      </>
    ),
    tip: { lab: "Longitud del tornillo", text: "El pladur mide más o menos media pulgada de grosor, y el soporte también tiene su grosor. Usa tornillos de 2,5 o 3 pulgadas para que haya mordida real en el montante." },
    fig: { img: "https://images.unsplash.com/photo-1581244277943-fe4a9c777189?w=1200&q=80", tag: "Fig 04 | Nivel", cap: "ajustado primero. nivelado segundo. apretado tercero." }
  },
  {
    n: "05",
    phase: "Terminar | 20 min",
    title: "Cuña, sellador y luego decóralo.",
    flip: false,
    body: (
      <>
        <p>
          Casi ninguna pared es perfectamente plana. Si el estante bascula o hay un hueco donde el borde trasero toca la pared, no entres en pánico. Una cuña fina detrás del soporte corrige el balanceo. Un pequeño cordón de sellador pintable cierra el hueco.
        </p>
        <p>
          Decora con los objetos pesados en el centro y los más ligeros hacia los extremos. Los libros y las cerámicas están bien. Una pecera no. Los números impares quedan mejor que los pares, y el espacio vacío también cuenta como diseño.
        </p>
      </>
    ),
    tip: { lab: "No es un fracaso", text: "Las cuñas y el sellador no son parches. Son acabados. Los profesionales los usan constantemente." },
    fig: { img: "https://images.unsplash.com/photo-1616486338812-3dadae4b4ace?w=1200&q=84", tag: "Fig 05 | Decorar", cap: "la pared al fin parece que lo planeaste así." },
    says: "Tú construiste el estante. Tú decides qué va encima."
  }
];

const Step = ({ data }) => (
  <article className={`sa-step ${data.flip ? "flip" : ""}`}>
    <div className="sa-step-text">
      <div className="sa-step-meta">
        <span className="sa-step-num">{data.n}</span>
        <span className="sa-step-phase">{data.phase}</span>
      </div>
      <h3>{data.title}</h3>
      <div className="sa-step-body">{data.body}</div>
      {data.tip && (
        <div className="sa-step-tip">
          <span className="lab">{data.tip.lab}</span>
          <p>{data.tip.text}</p>
        </div>
      )}
      {data.warn && (
        <div className="sa-step-warn">
          <span className="lab">{data.warn.lab}</span>
          <p>{data.warn.text}</p>
        </div>
      )}
    </div>
    <figure className="sa-step-fig">
      <div className="frame">
        <span className="tag">{data.fig.tag}</span>
        <img src={data.fig.img} alt="" loading="lazy" />
      </div>
      <figcaption>{data.fig.cap}</figcaption>
      {data.says && <SamSays>{data.says}</SamSays>}
    </figure>
  </article>
);

const Steps = () => (
  <section className="sa-steps">
    <div className="sa-steps-wrap">
      <header className="sa-steps-head">
        <h2>
          Los <em>cinco</em> movimientos
        </h2>
        <span className="count">05 MOVIMIENTOS | UNA TARDE ACTIVA</span>
      </header>
      {STEPS.map((s) => (
        <Step key={s.n} data={s} />
      ))}
    </div>
  </section>
);

const HotTakes = () => (
  <section className="sa-hottakes">
    <div className="sa-hottakes-wrap">
      <header className="sa-hottakes-head">
        <span className="lab">Las opiniones fuertes de Sam</span>
        <h2>
          Cosas de las que estoy <em>cansada</em> de ver
        </h2>
      </header>
      <div className="sa-hottakes-list">
        <div className="sa-take">
          <div className="num">i.</div>
          <h3>Comprar el estante antes de encontrar los montantes</h3>
          <p>
            La pared decide qué cabe. Mide los montantes primero, luego compra el herraje que de verdad aterriza donde tiene que aterrizar.
          </p>
        </div>
        <div className="sa-take">
          <div className="num">ii.</div>
          <h3>Confiar en anclajes de pladur para los libros</h3>
          <p>
            Una vela, puede ser. ¿Libros, plantas, cerámicas o cualquier cosa que se rompa? Montantes. Siempre.
          </p>
        </div>
        <div className="sa-take">
          <div className="num">iii.</div>
          <h3>Usar tornillos cortos</h3>
          <p>
            El tornillo tiene que pasar por el soporte y el pladur y aun así morder la madera. La mitad de los fallos son simplemente tornillos diminutos haciéndose pasar por estructura.
          </p>
        </div>
        <div className="sa-take">
          <div className="num">iv.</div>
          <h3>Llenarlo en cuanto se cuelga</h3>
          <p>
            También instalaste espacio vacío. Déjalo respirar antes de convertirlo en un repisa de almacenamiento.
          </p>
        </div>
      </div>
    </div>
  </section>
);

const Redo = () => (
  <section className="sa-redo">
    <div className="sa-redo-wrap">
      <aside className="sa-redo-side">
        lo que te
        <br />
        <em style={{ color: "#D97A4F" }}>atrapa</em>
        <svg viewBox="0 0 80 60" fill="none">
          <path d="M5 12 C 25 6, 55 14, 70 38" stroke="#91A86C" strokeWidth="2" strokeLinecap="round" />
          <path d="M64 30 L 70 38 L 60 42" stroke="#91A86C" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" fill="none" />
        </svg>
      </aside>
      <div>
        <h2>
          La pared no es <em>plana.</em>
        </h2>
        <p>
          Casi ninguna lo es. Si el estante bascula ligeramente o hay un hueco en un extremo, no lo leas como un fracaso. Una cuña fina detrás del soporte en el lado bajo corrige el balanceo.
        </p>
        <p>
          Un pequeño cordón de sellador pintable a lo largo del borde trasero cierra el hueco y hace que el estante parezca intencional. No son trucos. Son acabados. Todos los carpinteros profesionales los usan. Ahora tú también.
        </p>
      </div>
    </div>
  </section>
);

const Signoff = () => (
  <section className="sa-signoff">
    <div className="sa-signoff-wrap">
      <div>
        <h2>
          Está nivelado. <em>Queda bien.</em>
        </h2>
        <p>
          Te llevó una tarde. La pared al fin parece que lo planeaste así, y el estante está listo para libros, cerámicas, plantas o exactamente un objeto con demasiada confianza en sí mismo.
        </p>
        <div className="sig">- Sam</div>
        <div className="ctas" style={{ marginTop: 28 }}>
          <a href="/contact/" className="btn primary">
            Mándame una foto
          </a>
          <a href="/es/contributors/sam/" className="btn ghost">
            Más de Sam
          </a>
        </div>
      </div>
      <div className="sa-readnext">
        <span className="lab">Lee a continuación</span>
        <a href="/es/contributors/sam/how-to-hang-something-heavy-without-asking-anyone-for-help/">
          <span>Colgar algo pesado sin pedirle ayuda a nadie</span>
          <span className="m">SAM</span>
        </a>
        <a href="/es/contributors/sam/how-to-paint-exposed-attic-rafters/">
          <span>Pintar vigas de ático a la vista</span>
          <span className="m">SAM</span>
        </a>
        <a href="/en/build/living-room/how-to-build-floating-shelves/">
          <span>Construir estantes flotantes</span>
          <span className="m">HUB</span>
        </a>
        <a href="/es/contributors/sam/">
          <span>Todas las guías de Sam</span>
          <span className="m">PERFIL</span>
        </a>
      </div>
    </div>
  </section>
);

const Article = () => (
  <div className="sa">
    <Crumbs />
    <Hero />
    <Lede />
    <WhatYouNeed />
    <Steps />
    <HotTakes />
    <Redo />
    <Signoff />
  </div>
);

ReactDOM.createRoot(document.getElementById("root")).render(<Article />);
