/* Orinova Portal — pages7.jsx
   Wave 4:
     · PortalIndex      — editorial table of contents (cover sheet)
     · ScheduleVisit    — date/time booking with morning/afternoon slots
     · EmailTemplates   — three transactional emails stacked
     · ReferralProgram  — refer a neighbor, type-led
     · DrywallService   — third service detail page
*/

const ATOMS7 = window.OrinovaAtoms;

/* ── PORTAL INDEX — cover sheet for the whole portal ──────── */

const TOC = [
  {
    code: 'I', section: { es: 'CASA · ORINOVA', en: 'HOUSE · ORINOVA' },
    rows: [
      { n: '01', t: { es: 'Inicio · papel callado', en: 'Home · quiet paper' } },
      { n: '02', t: { es: 'Inicio · vista de operador', en: 'Home · operator view' } },
      { n: '03', t: { es: 'Inicio · campo · DreamValley', en: 'Home · field · DreamValley' } },
      { n: '04', t: { es: 'Operaciones · sobre nosotros', en: 'Operations · about us' } },
      { n: '05', t: { es: 'Carta del fundador', en: 'Founder note' } },
      { n: '06', t: { es: 'Cinco promesas', en: 'Five promises' } },
      { n: '07', t: { es: 'Caso · Rancho Palos Verdes', en: 'Case · Rancho Palos Verdes' } },
    ],
  },
  {
    code: 'II', section: { es: 'SERVICIOS · DREAMVALLEY', en: 'SERVICES · DREAMVALLEY' },
    rows: [
      { n: '08', t: { es: 'Pintura interior', en: 'Interior paint' } },
      { n: '09', t: { es: 'Pintura exterior', en: 'Exterior paint' } },
      { n: '10', t: { es: 'Drywall · reparación', en: 'Drywall · repair' } },
      { n: '11', t: { es: 'Gabinetes', en: 'Cabinets' } },
      { n: '12', t: { es: 'Acceso por cuerda · SPRAT', en: 'Rope access · SPRAT' } },
      { n: '13', t: { es: 'Color · estudio de muestras', en: 'Color studio' } },
      { n: '14', t: { es: 'Galería · antes y después', en: 'Before & after' } },
      { n: '15', t: { es: 'Cobertura · Inland Empire', en: 'Coverage · IE' } },
    ],
  },
  {
    code: 'III', section: { es: 'DOCUMENTOS', en: 'DOCUMENTS' },
    rows: [
      { n: '16', t: { es: 'Estimado · documento', en: 'Estimate · document' } },
      { n: '17', t: { es: 'Factura · documento', en: 'Invoice · document' } },
      { n: '18', t: { es: 'Garantía · tres años', en: 'Warranty · three years' } },
      { n: '19', t: { es: 'Hoja de prensa', en: 'Press one-pager' } },
      { n: '20', t: { es: 'Correos transaccionales', en: 'Transactional emails' } },
    ],
  },
  {
    code: 'IV', section: { es: 'CUENTA · CLIENTE', en: 'ACCOUNT · CLIENT' },
    rows: [
      { n: '21', t: { es: 'Entrar', en: 'Sign in' } },
      { n: '22', t: { es: 'Panel de cuenta', en: 'Account dashboard' } },
      { n: '23', t: { es: 'Detalle de obra', en: 'Job detail' } },
      { n: '24', t: { es: 'Pagar saldo', en: 'Pay balance' } },
      { n: '25', t: { es: 'Agendar visita', en: 'Schedule visit' } },
      { n: '26', t: { es: 'Centro de ayuda', en: 'Help center' } },
      { n: '27', t: { es: 'Refiere un vecino', en: 'Refer a neighbor' } },
    ],
  },
  {
    code: 'V', section: { es: 'CUADRILLA · INTERNO', en: 'CREW · INTERNAL' },
    rows: [
      { n: '28', t: { es: 'Despacho del foreman', en: 'Foreman dispatch' } },
      { n: '29', t: { es: 'Hoja de obra', en: 'Job sheet' } },
      { n: '30', t: { es: 'Equipo · meet the crew', en: 'Crew · meet the team' } },
      { n: '31', t: { es: 'Empleos', en: 'Careers' } },
    ],
  },
  {
    code: 'VI', section: { es: 'TELÉFONO', en: 'PHONE' },
    rows: [
      { n: '32', t: { es: 'Inicio móvil', en: 'Mobile home' } },
      { n: '33', t: { es: 'Estimado móvil · paso 2', en: 'Mobile estimate · step 2' } },
      { n: '34', t: { es: 'Estimado móvil · paso 3', en: 'Mobile estimate · step 3' } },
      { n: '35', t: { es: 'Panel móvil de cuenta', en: 'Mobile account dashboard' } },
    ],
  },
  {
    code: 'VII', section: { es: 'PLANCHAS · LA SEGUNDA TANDA', en: 'PLATES · SECOND BATCH' },
    rows: [
      { n: '36', t: { es: 'Plancha VII · Isotipo · Neurath',     en: 'Plate VII · Isotype · Neurath' } },
      { n: '37', t: { es: 'Plancha III · Du Bois · a mano',       en: 'Plate III · Du Bois · by hand' } },
      { n: '38', t: { es: 'Wall Drawing MMXXVI · LeWitt',         en: 'Wall Drawing MMXXVI · LeWitt' } },
      { n: '39', t: { es: 'Tipología IX · cuarenta puertas',     en: 'Typologie IX · forty doors' } },
      { n: '40', t: { es: 'Libro mayor · Tufte · sparklines',     en: 'Ledger · Tufte · sparklines' } },
      { n: '41', t: { es: 'Plancha XII · 無 Mu · Hara',           en: 'Plate XII · 無 Mu · Hara' } },
    ],
  },
  {
    code: 'VIII', section: { es: 'CONCEJOS · LO QUE FALTABA', en: 'COUNCILS · WHAT WAS MISSING' },
    rows: [
      { n: '42', t: { es: 'Lotería de la Cuadrilla · 16 cartas',  en: 'Lotería de la Cuadrilla · 16 cards' } },
      { n: '43', t: { es: 'Calavera del Pintor Honrado · Posada',  en: 'Calavera of the Honest Painter · Posada' } },
      { n: '44', t: { es: 'Partitura para un día · Cage · Cardew', en: 'Score for a day · Cage · Cardew' } },
      { n: '45', t: { es: 'Broadside VII · tres verdades · Douglas', en: 'Broadside VII · three truths · Douglas' } },
      { n: '46', t: { es: 'Access to Tools · Vol. III · Brand',    en: 'Access to Tools · Vol. III · Brand' } },
      { n: '47', t: { es: 'Marca a la intemperie · camión · letrero', en: 'The brand outdoors · truck · yard sign' } },
    ],
  },
  {
    code: 'IX', section: { es: 'LINAJES · AÚN MÁS LEJOS', en: 'LINEAGES · STILL FURTHER OUT' },
    rows: [
      { n: '48', t: { es: 'Patrones de la cuadrilla · Alexander',  en: 'Patterns of the crew · Alexander' } },
      { n: '49', t: { es: 'Elogio de la sombra · Tanizaki',         en: 'In Praise of Shadows · Tanizaki' } },
      { n: '50', t: { es: 'El cuento de la casa · Munari',           en: 'The story of the house · Munari' } },
      { n: '51', t: { es: 'Almanaque · clima de trabajo',           en: 'Almanac · working weather' } },
      { n: '52', t: { es: 'Recibo de obra · DV-0431',                en: 'Job receipt · DV-0431' } },
      { n: '53', t: { es: 'Mapa II · ruta del foreman · Steinberg',  en: 'Map II · foreman\u2019s route · Steinberg' } },
    ],
  },
  {
    code: 'X', section: { es: 'OBJETOS · EL OFICIO HECHO COSA', en: 'OBJECTS · THE TRADE MADE FINISHED' },
    rows: [
      { n: '54', t: { es: 'Receta No. 7 · obra lenta',                en: 'Recipes · No. 7 · slow work' } },
      { n: '55', t: { es: 'El libro · desplegado · Penguin',          en: 'The Book · unfolded · Penguin' } },
      { n: '56', t: { es: 'Herbario de pigmentos · Merian',           en: 'Pigment herbarium · Merian' } },
      { n: '57', t: { es: 'Tarjeta de cuadrilla · Edición II',        en: 'Crew card · Issue II' } },
      { n: '58', t: { es: 'Plancha XVII · dechado · bendición',       en: 'Plate XVII · sampler · blessing' } },
      { n: '59', t: { es: 'Cancionero · No. I · canción de cuna',     en: 'Songbook · No. I · lullaby' } },
    ],
  },
];

function PortalIndex() {
  const t = window.t;
  const { lang } = window.useLang();
  return (
    <div className="page" style={{ background: 'var(--paper-form)' }}>
      <div className="page-scroll hide-scroll">
        <div style={{ maxWidth: 1100, margin: '0 auto', padding: '52px 56px 56px' }}>

          {/* masthead */}
          <div style={{
            display: 'grid', gridTemplateColumns: '1fr auto 1fr',
            alignItems: 'baseline', borderBottom: '2px solid var(--ink)', paddingBottom: 14,
          }}>
            <div className="codex">ORINOVA · OPERATING GROUP</div>
            <div className="codex" style={{ textAlign: 'center' }}>{t({ es: 'EL ÍNDICE · NO. I', en: 'THE INDEX · NO. I' }, lang)}</div>
            <div className="codex" style={{ textAlign: 'right', color: 'var(--ink-muted)' }}>MMXXVI · RIVERSIDE</div>
          </div>

          <div style={{ display: 'grid', gridTemplateColumns: '1.4fr 1fr', gap: 36, alignItems: 'end', marginTop: 30 }}>
            <h1 className="display" style={{ fontSize: 120, margin: 0, lineHeight: 0.88, letterSpacing: '-0.035em', maxWidth: 820 }}>
              {t({ es: 'El portal entero,', en: 'The whole portal,' }, lang)}<br />
              <em style={{ color: 'var(--terracotta)', fontWeight: 500 }}>{t({ es: 'en una hoja.', en: 'on one sheet.' }, lang)}</em>
            </h1>
            <div>
              <p style={{ fontFamily: 'var(--serif)', fontSize: 17, lineHeight: 1.55, color: 'var(--ink-soft)', fontStyle: 'italic', margin: 0 }}>
                {t({
                  es: 'Treinta y cinco pantallas, dos idiomas, un sistema de papel y tinta. Cada renglón es una página viva.',
                  en: 'Thirty-five screens, two languages, one paper-and-ink system. Every line is a live page.'
                }, lang)}
              </p>
              <div style={{ marginTop: 14, display: 'grid', gridTemplateColumns: '1fr 1fr', gap: 12 }}>
                <div>
                  <div className="codex" style={{ color: 'var(--ink-muted)' }}>{t({ es: 'SUPERFICIES', en: 'SURFACES' }, lang)}</div>
                  <div className="display" style={{ fontSize: 36, marginTop: 4 }}>35</div>
                </div>
                <div>
                  <div className="codex" style={{ color: 'var(--ink-muted)' }}>{t({ es: 'IDIOMAS', en: 'LANGUAGES' }, lang)}</div>
                  <div className="display" style={{ fontSize: 36, marginTop: 4 }}>ES · EN</div>
                </div>
              </div>
            </div>
          </div>

          {/* sections grid */}
          <div style={{ marginTop: 44, display: 'grid', gridTemplateColumns: '1fr 1fr', columnGap: 48, rowGap: 36 }}>
            {TOC.map((sec) => (
              <div key={sec.code}>
                <div style={{ display: 'grid', gridTemplateColumns: '40px 1fr auto', gap: 10, alignItems: 'baseline', borderBottom: '1px solid var(--ink)', paddingBottom: 8 }}>
                  <div className="display" style={{ fontSize: 28, fontStyle: 'italic', color: 'var(--terracotta)', fontWeight: 500, lineHeight: 1 }}>{sec.code}</div>
                  <div className="codex">{t(sec.section, lang)}</div>
                  <div className="codex" style={{ color: 'var(--ink-muted)' }}>{sec.rows.length} {t({ es: 'pgs.', en: 'pgs.' }, lang)}</div>
                </div>
                <ul style={{ margin: '8px 0 0', padding: 0, listStyle: 'none' }}>
                  {sec.rows.map((r) => (
                    <li key={r.n} style={{
                      display: 'grid', gridTemplateColumns: '36px 1fr',
                      padding: '7px 0',
                      borderBottom: '1px dotted var(--divider)',
                      alignItems: 'baseline',
                      fontFamily: 'var(--serif)', fontSize: 15.5,
                    }}>
                      <span className="codex tab" style={{ color: 'var(--ink-muted)' }}>{r.n}</span>
                      <span style={{ color: 'var(--ink)' }}>{t(r.t, lang)}</span>
                    </li>
                  ))}
                </ul>
              </div>
            ))}
          </div>

          {/* colophon */}
          <div style={{ marginTop: 48, paddingTop: 14, borderTop: '2px solid var(--ink)', display: 'grid', gridTemplateColumns: '1.4fr 1fr', gap: 24 }}>
            <div>
              <div className="codex">{t({ es: 'COLOFÓN', en: 'COLOPHON' }, lang)}</div>
              <p style={{ fontFamily: 'var(--serif)', fontSize: 13.5, lineHeight: 1.6, color: 'var(--ink-soft)', marginTop: 8, fontStyle: 'italic', maxWidth: 540 }}>
                {t({
                  es: 'Compuesto en Fraunces, Inter y JetBrains Mono. Tinta sobre papel crema #F5F0E8. Acentos en olivo #2D4A1F y terracota #C5503E.',
                  en: 'Set in Fraunces, Inter, and JetBrains Mono. Ink on cream paper #F5F0E8. Accents in olive #2D4A1F and terracotta #C5503E.'
                }, lang)}
              </p>
            </div>
            <div style={{ textAlign: 'right' }}>
              <div className="codex" style={{ color: 'var(--ink-muted)' }}>{t({ es: 'IMPRESO INTERNAMENTE', en: 'PRINTED IN-HOUSE' }, lang)}</div>
              <div style={{ fontFamily: 'var(--serif)', fontSize: 16, marginTop: 4 }}>Riverside, CA</div>
              <div className="codex" style={{ color: 'var(--ink-muted)' }}>ORINOVA.GROUP / PORTAL</div>
            </div>
          </div>
        </div>
      </div>
    </div>
  );
}

/* ── SCHEDULE VISIT — calendar booking ────────────────────── */

function ScheduleVisit() {
  const t = window.t;
  const { lang } = window.useLang();
  const { Nav, Foot, Eyebrow } = ATOMS7;
  const ref = React.useMemo(() => {
    try {
      const q = new URLSearchParams(window.location.search);
      return q.get('ref') || '';
    } catch (e) {
      return '';
    }
  }, []);

  const now = React.useMemo(() => new Date(), []);
  const start = React.useMemo(() => {
    const d = new Date(now);
    d.setHours(0, 0, 0, 0);
    d.setDate(d.getDate() + 1);
    return d;
  }, [now]);
  const month = React.useMemo(() => ({
    es: start.toLocaleDateString('es-MX', { month: 'long', year: 'numeric' }).toUpperCase(),
    en: start.toLocaleDateString('en-US', { month: 'long', year: 'numeric' }).toUpperCase(),
  }), [start]);
  const dayLabels = [
    { es: 'L', en: 'M' }, { es: 'M', en: 'T' }, { es: 'M', en: 'W' },
    { es: 'J', en: 'T' }, { es: 'V', en: 'F' }, { es: 'S', en: 'S' }, { es: 'D', en: 'S' },
  ];
  const days = React.useMemo(() => {
    const list = [];
    for (let i = 0; i < 14; i++) {
      const d = new Date(start);
      d.setDate(start.getDate() + i);
      list.push(d);
    }
    return list;
  }, [start]);
  const weekRows = React.useMemo(() => [days.slice(0, 7), days.slice(7, 14)], [days]);

  const avail = React.useMemo(() => {
    const out = {};
    days.forEach((d, idx) => {
      const weekday = d.getDay();
      if (weekday === 0) out[d.toISOString().slice(0, 10)] = 0;
      else if (weekday === 6) out[d.toISOString().slice(0, 10)] = 1;
      else out[d.toISOString().slice(0, 10)] = (idx % 5 === 2 ? 1 : 2);
    });
    return out;
  }, [days]);
  const [pickDay, setPickDay] = React.useState(days[0] ? days[0].toISOString().slice(0, 10) : '');
  const [pickWin, setPickWin] = React.useState('AM');
  const selectedDate = React.useMemo(() => {
    const row = days.find((d) => d.toISOString().slice(0, 10) === pickDay);
    return row || null;
  }, [days, pickDay]);

  const dayCell = (d) => {
    const key = d.toISOString().slice(0, 10);
    const a = avail[key];
    const isClosed = a === 0;
    const full = a === 3;
    const open = a === 1 || a === 2;
    const selected = pickDay === key && open;
    return (
      <button key={key} type="button" disabled={!open} onClick={() => { setPickDay(key); if (a === 1) setPickWin('AM'); }}
        style={{
          aspectRatio: '1 / 1',
          background: selected ? 'var(--ink)' : 'var(--paper-form)',
          color: selected ? 'var(--paper)' : (open ? 'var(--ink)' : 'var(--ink-muted)'),
          border: '1px solid ' + (selected ? 'var(--ink)' : 'var(--divider-strong)'),
          padding: 8, cursor: open ? 'pointer' : 'not-allowed',
          fontFamily: 'var(--mono)', fontSize: 14,
          display: 'grid', gridTemplateRows: '1fr auto', gap: 4,
          textAlign: 'left',
          opacity: isClosed ? 0.45 : 1,
        }}>
        <span className="tab" style={{ fontSize: 18, fontFamily: 'var(--serif)', fontWeight: 500 }}>{d.getDate()}</span>
        <span style={{ fontSize: 9, letterSpacing: '0.14em' }}>
          {full ? (lang === 'es' ? 'LLENO' : 'FULL') :
            a === 1 ? 'AM' :
            a === 2 ? 'AM · PM' :
            (lang === 'es' ? 'CERR.' : 'CLOSED')}
        </span>
      </button>
    );
  };

  return (
    <div className="page">
      <Nav active="estimate" surface="dreamvalley" />
      <div className="page-scroll hide-scroll">
        <section style={{ maxWidth: 1100, margin: '0 auto', padding: '44px 36px 0' }}>
          <Eyebrow>{t({ es: 'Agendar visita', en: 'Schedule a visit' }, lang)}</Eyebrow>
          <h1 className="display" style={{ fontSize: 56, margin: '12px 0 12px', maxWidth: 800 }}>
            {t({ es: 'Tú escoges el día. Te decimos la hora exacta.', en: 'You pick the day. We give you the exact hour.' }, lang)}
          </h1>
          <p style={{ fontSize: 15, lineHeight: 1.6, color: 'var(--ink-soft)', maxWidth: 720 }}>
            {t({
              es: 'Una visita de estimado dura 30–45 minutos. Te confirmamos por mensaje y por correo, en español o en inglés.',
              en: 'An estimate visit takes 30–45 minutes. We confirm by text and email, in Spanish or English.'
            }, lang)}
          </p>
        </section>

        <section style={{ maxWidth: 1100, margin: '32px auto 0', padding: '0 36px', display: 'grid', gridTemplateColumns: '1.5fr 1fr', gap: 28, alignItems: 'start' }}>
          {/* calendar */}
          <div style={{ background: 'var(--paper-elevated)', border: '1px solid var(--divider)', padding: 22 }}>
            <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'baseline', marginBottom: 14 }}>
              <div className="codex">{t(month, lang)}</div>
              <div style={{ display: 'flex', gap: 6 }}>
                <button className="btn btn-ghost" style={{ padding: '6px 10px', fontSize: 12 }}>←</button>
                <button className="btn btn-ghost" style={{ padding: '6px 10px', fontSize: 12 }}>→</button>
              </div>
            </div>

            {/* day labels */}
            <div style={{ display: 'grid', gridTemplateColumns: 'repeat(7, 1fr)', gap: 6, marginBottom: 8 }}>
              {dayLabels.map((d, i) => (
                <div key={i} className="codex" style={{ textAlign: 'center', color: 'var(--ink-muted)' }}>{t(d, lang)}</div>
              ))}
            </div>

            {/* weeks */}
            {weekRows.map((row, wi) => (
              <div key={wi} style={{ display: 'grid', gridTemplateColumns: 'repeat(7, 1fr)', gap: 6, marginBottom: 6 }}>
                {row.map(dayCell)}
              </div>
            ))}

            {/* legend */}
            <div style={{ display: 'flex', gap: 18, marginTop: 14, fontFamily: 'var(--mono)', fontSize: 10, letterSpacing: '0.14em', color: 'var(--ink-muted)' }}>
              <span style={{ display: 'inline-flex', alignItems: 'center', gap: 6 }}><span style={{ width: 8, height: 8, background: 'var(--paper-form)', border: '1px solid var(--divider-strong)' }} />{t({ es: 'ABIERTO', en: 'OPEN' }, lang)}</span>
              <span style={{ display: 'inline-flex', alignItems: 'center', gap: 6 }}><span style={{ width: 8, height: 8, background: 'var(--ink)' }} />{t({ es: 'TU FECHA', en: 'YOUR PICK' }, lang)}</span>
              <span style={{ display: 'inline-flex', alignItems: 'center', gap: 6, opacity: 0.45 }}><span style={{ width: 8, height: 8, background: 'var(--paper-form)', border: '1px solid var(--divider-strong)' }} />{t({ es: 'PASÓ · LLENO', en: 'PAST · FULL' }, lang)}</span>
            </div>
          </div>

          {/* picker / summary */}
          <div>
            <Eyebrow>{t({ es: 'Ventana del día', en: 'Time window' }, lang)}</Eyebrow>
            <div style={{ display: 'grid', gridTemplateColumns: '1fr 1fr', gap: 8, marginTop: 10 }}>
              {[
                { id: 'AM', name: { es: 'Mañana', en: 'Morning' }, range: '8 – 11 AM', available: avail[pickDay] >= 1, api: 'morning' },
                { id: 'PM', name: { es: 'Tarde',  en: 'Afternoon' }, range: '1 – 4 PM', available: avail[pickDay] === 2, api: 'afternoon' },
              ].map((win) => {
                const on = pickWin === win.id && win.available;
                return (
                  <button key={win.id} type="button" disabled={!win.available} onClick={() => setPickWin(win.id)} style={{
                    background: on ? 'var(--ink)' : 'var(--paper-form)',
                    color: on ? 'var(--paper)' : (win.available ? 'var(--ink)' : 'var(--ink-muted)'),
                    border: '1px solid ' + (on ? 'var(--ink)' : 'var(--divider-strong)'),
                    padding: '14px 16px', textAlign: 'left',
                    cursor: win.available ? 'pointer' : 'not-allowed',
                    opacity: win.available ? 1 : 0.5,
                  }}>
                    <input type="radio" name="window" value={win.api} checked={on} readOnly hidden />
                    <div style={{ fontFamily: 'var(--serif)', fontSize: 18 }}>{t(win.name, lang)}</div>
                    <div className="codex tab" style={{ marginTop: 4 }}>{win.range}</div>
                    {!win.available && <div className="codex" style={{ marginTop: 4, color: 'inherit' }}>{t({ es: 'no disp.', en: 'unavailable' }, lang)}</div>}
                  </button>
                );
              })}
            </div>

            <form className="card" data-dvt-form="schedule" style={{ marginTop: 18, padding: 18 }}>
              <input type="hidden" name="ref" value={ref} />
              <input type="hidden" name="date" value={pickDay} />
              <input type="hidden" name="window" value={pickWin === 'AM' ? 'morning' : 'afternoon'} />
              <Eyebrow>{t({ es: 'Tu visita', en: 'Your visit' }, lang)}</Eyebrow>
              <div style={{ fontFamily: 'var(--serif)', fontSize: 28, margin: '6px 0 6px', lineHeight: 1.1 }}>
                {selectedDate
                  ? selectedDate.toLocaleDateString(lang === 'es' ? 'es-MX' : 'en-US', {
                      weekday: 'long', month: 'long', day: 'numeric',
                    })
                  : t({ es: 'Selecciona día', en: 'Select a day' }, lang)}
              </div>
              <div className="codex">
                {pickWin === 'AM' ? '8 – 11 AM' : '1 – 4 PM'} · 30–45 min · {t({ es: 'sin costo', en: 'no charge' }, lang)}
              </div>
              <div className="rule" style={{ margin: '14px 0' }} />
              <div className="codex" style={{ color: 'var(--ink-muted)' }}>{t({ es: 'TE LLAMA', en: 'YOUR ESTIMATOR' }, lang)}</div>
              <div style={{ fontFamily: 'var(--serif)', fontSize: 16, marginTop: 4 }}>Erick R. <span style={{ color: 'var(--ink-muted)' }}>· {t({ es: 'fundador', en: 'founder' }, lang)}</span></div>
              <button className="btn btn-primary" style={{ width: '100%', marginTop: 14 }}>
                {t({ es: 'Confirmar visita →', en: 'Confirm visit →' }, lang)}
              </button>
              <div className="codex" style={{ marginTop: 10, color: 'var(--ink-muted)', textAlign: 'center' }}>
                {t({ es: 'recibes mensaje + correo', en: 'you get text + email' }, lang)}
              </div>
            </form>
          </div>
        </section>

        <div style={{ height: 56 }} />
        <Foot surface="dreamvalley" />
      </div>
    </div>
  );
}

/* ── EMAIL TEMPLATES — three transactional emails stacked ──── */

function EmailFrame({ from, fromTag, subject, when, children }) {
  return (
    <div style={{
      background: 'var(--paper-form)', border: '1px solid var(--divider-strong)',
      maxWidth: 620,
    }}>
      {/* envelope head */}
      <div style={{
        padding: '14px 22px',
        borderBottom: '1px solid var(--divider)',
        background: 'var(--paper-cream)',
      }}>
        <div style={{ display: 'grid', gridTemplateColumns: '1fr auto', alignItems: 'baseline', gap: 12 }}>
          <div style={{ fontFamily: 'var(--serif)', fontSize: 16 }}>
            {from} <span style={{ color: 'var(--ink-muted)', fontSize: 13 }}>&lt;{fromTag}&gt;</span>
          </div>
          <div className="codex tab" style={{ color: 'var(--ink-muted)' }}>{when}</div>
        </div>
        <div style={{ marginTop: 4, fontSize: 14, color: 'var(--ink-soft)' }}>{subject}</div>
      </div>
      <div style={{ padding: '22px 26px 26px', fontFamily: 'var(--sans)', fontSize: 14, color: 'var(--ink)', lineHeight: 1.55 }}>
        {children}
      </div>
    </div>
  );
}

function EmailTemplates() {
  const t = window.t;
  const { lang } = window.useLang();
  const { Nav, Foot, Eyebrow } = ATOMS7;
  return (
    <div className="page">
      <Nav active="account" surface="dreamvalley" />
      <div className="page-scroll hide-scroll">
        <section style={{ maxWidth: 1100, margin: '0 auto', padding: '44px 36px 0' }}>
          <Eyebrow>{t({ es: 'Correos del sistema', en: 'System emails' }, lang)}</Eyebrow>
          <h1 className="display" style={{ fontSize: 52, margin: '12px 0 12px', maxWidth: 760 }}>
            {t({ es: 'Tres correos. Mismo papel.', en: 'Three emails. Same paper.' }, lang)}
          </h1>
          <p style={{ fontSize: 15, lineHeight: 1.55, color: 'var(--ink-soft)', maxWidth: 720 }}>
            {t({
              es: 'Los únicos correos automáticos que mandamos: confirmación al firmar, recordatorio el día antes, gracias al cerrar.',
              en: 'The only automatic emails we send: confirmation on signing, reminder the day before, thanks at close.'
            }, lang)}
          </p>
        </section>

        <section style={{ maxWidth: 1100, margin: '32px auto 0', padding: '0 36px', display: 'grid', gridTemplateColumns: 'repeat(3, 1fr)', gap: 20, alignItems: 'start' }}>

          {/* 01 — confirmation */}
          <div>
            <div className="codex" style={{ color: 'var(--terracotta)' }}>01 · {t({ es: 'CONFIRMACIÓN', en: 'CONFIRMATION' }, lang)}</div>
            <div style={{ marginTop: 8 }}>
              <EmailFrame
                from="DreamValley"
                fromTag="hola@dreamvalley.trade"
                subject={t({ es: '✓ Estimado firmado · DV-0431', en: '✓ Estimate signed · DV-0431' }, lang)}
                when={t({ es: 'lun 9 mar · 4:12 PM', en: 'Mon Mar 9 · 4:12 PM' }, lang)}
              >
                <div style={{ fontFamily: 'var(--serif)', fontSize: 20, marginBottom: 10 }}>
                  {t({ es: 'Hola María,', en: 'Hi Maria,' }, lang)}
                </div>
                <p style={{ margin: '0 0 10px' }}>
                  {t({
                    es: 'Gracias por firmar. Anoté DV-0431 en el libro.',
                    en: 'Thanks for signing. I wrote DV-0431 into the book.'
                  }, lang)}
                </p>
                <dl style={{ margin: '12px 0' }}>
                  <div className="spec-row"><dt>{t({ es: 'OBRA', en: 'JOB' }, lang)}</dt><dd>DV-0431 · {t({ es: 'pintura interior', en: 'interior paint' }, lang)}</dd></div>
                  <div className="spec-row"><dt>{t({ es: 'INICIA', en: 'START' }, lang)}</dt><dd className="tab">23 MAR · 7:30 AM</dd></div>
                  <div className="spec-row"><dt>{t({ es: 'FOREMAN', en: 'FOREMAN' }, lang)}</dt><dd>Luis O.</dd></div>
                  <div className="spec-row"><dt>{t({ es: 'TOTAL', en: 'TOTAL' }, lang)}</dt><dd className="tab">$4,820</dd></div>
                </dl>
                <p style={{ margin: '12px 0 14px' }}>
                  {t({
                    es: 'Te mando un recordatorio el domingo en la tarde.',
                    en: 'I\u2019ll send a reminder Sunday afternoon.'
                  }, lang)}
                </p>
                <div style={{ display: 'flex', gap: 8 }}>
                  <a className="btn btn-primary" style={{ padding: '8px 14px', fontSize: 13 }}>{t({ es: 'Ver estimado', en: 'View estimate' }, lang)}</a>
                  <a className="btn btn-ghost" style={{ padding: '8px 14px', fontSize: 13 }}>{t({ es: 'Mi cuenta', en: 'My account' }, lang)}</a>
                </div>
                <div className="codex" style={{ marginTop: 18, color: 'var(--ink-muted)' }}>— Erick</div>
              </EmailFrame>
            </div>
          </div>

          {/* 02 — reminder */}
          <div>
            <div className="codex" style={{ color: 'var(--terracotta)' }}>02 · {t({ es: 'RECORDATORIO', en: 'REMINDER' }, lang)}</div>
            <div style={{ marginTop: 8 }}>
              <EmailFrame
                from="DreamValley"
                fromTag="hola@dreamvalley.trade"
                subject={t({ es: 'Mañana llegamos · DV-0431', en: 'We arrive tomorrow · DV-0431' }, lang)}
                when={t({ es: 'dom 22 mar · 5:00 PM', en: 'Sun Mar 22 · 5:00 PM' }, lang)}
              >
                <div style={{ fontFamily: 'var(--serif)', fontSize: 20, marginBottom: 10 }}>
                  {t({ es: 'Hola María,', en: 'Hi Maria,' }, lang)}
                </div>
                <p style={{ margin: '0 0 10px' }}>
                  {t({
                    es: 'Mañana lunes Luis y la cuadrilla llegan 7:30 AM. Camionetas blancas con logo, ID con foto.',
                    en: 'Tomorrow Monday Luis and the crew arrive 7:30 AM. White trucks with the logo, photo ID.'
                  }, lang)}
                </p>
                <div className="codex" style={{ marginTop: 12, color: 'var(--ink-muted)' }}>{t({ es: 'TRES COSAS', en: 'THREE THINGS' }, lang)}</div>
                <ul style={{ margin: '6px 0 14px', padding: 0, listStyle: 'none' }}>
                  {[
                    { es: 'Despeja una franja de 2 ft frente a las paredes.', en: 'Clear a 2 ft strip in front of the walls.' },
                    { es: 'Si tienes mascota, déjala en un cuarto cerrado.', en: 'If you have a pet, keep them in a closed room.' },
                    { es: 'Confirma si seguimos con DE6371 Riverbed.', en: 'Confirm we\u2019re still on DE6371 Riverbed.' },
                  ].map((r, i) => (
                    <li key={i} style={{ display: 'grid', gridTemplateColumns: '24px 1fr', gap: 8, padding: '6px 0', borderBottom: '1px solid var(--divider)' }}>
                      <span className="codex" style={{ color: 'var(--terracotta)' }}>{String(i+1).padStart(2,'0')}</span>
                      <span>{t(r, lang)}</span>
                    </li>
                  ))}
                </ul>
                <p style={{ margin: '8px 0 14px' }}>
                  {t({
                    es: 'Si necesitas mover el día, contesta este correo o llama. Sin cargo.',
                    en: 'If you need to move the day, reply to this email or call. No charge.'
                  }, lang)}
                </p>
                <div className="codex" style={{ marginTop: 8, color: 'var(--ink-muted)' }}>— Erick · (951) 555-0148</div>
              </EmailFrame>
            </div>
          </div>

          {/* 03 — thank you */}
          <div>
            <div className="codex" style={{ color: 'var(--terracotta)' }}>03 · {t({ es: 'GRACIAS', en: 'THANK YOU' }, lang)}</div>
            <div style={{ marginTop: 8 }}>
              <EmailFrame
                from="DreamValley"
                fromTag="hola@dreamvalley.trade"
                subject={t({ es: 'Obra cerrada · garantía adjunta', en: 'Job closed · warranty attached' }, lang)}
                when={t({ es: 'mié 25 mar · 6:18 PM', en: 'Wed Mar 25 · 6:18 PM' }, lang)}
              >
                <div style={{ fontFamily: 'var(--serif)', fontSize: 20, marginBottom: 10 }}>
                  {t({ es: 'Hola María,', en: 'Hi Maria,' }, lang)}
                </div>
                <p style={{ margin: '0 0 10px' }}>
                  {t({
                    es: 'Quedó. Gracias por la confianza y por el café.',
                    en: 'It\u2019s done. Thanks for the trust and for the coffee.'
                  }, lang)}
                </p>
                <p style={{ margin: '0 0 10px' }}>
                  {t({
                    es: 'Adjunto va tu garantía de tres años. La pintura sobrante (1 galón) la dejé sellada en el clóset del pasillo, etiquetada.',
                    en: 'Attached is your three-year warranty. Touch-up paint (1 gallon) is sealed in the hallway closet, labeled.'
                  }, lang)}
                </p>
                <div style={{
                  marginTop: 14, padding: 14,
                  background: 'var(--paper-cream)', border: '1px solid var(--divider)',
                }}>
                  <div className="codex" style={{ color: 'var(--ink-muted)' }}>{t({ es: 'ADJUNTOS · PDF', en: 'ATTACHED · PDF' }, lang)}</div>
                  <div style={{ marginTop: 6, fontFamily: 'var(--serif)', fontSize: 14 }}>
                    DV-0431 · {t({ es: 'garantía', en: 'warranty' }, lang)} · 1 {t({ es: 'pág.', en: 'pg.' }, lang)}
                  </div>
                  <div style={{ marginTop: 2, fontFamily: 'var(--serif)', fontSize: 14 }}>
                    DV-0431 · {t({ es: 'factura final', en: 'final invoice' }, lang)} · 2 {t({ es: 'págs.', en: 'pgs.' }, lang)}
                  </div>
                </div>
                <p style={{ margin: '14px 0 14px' }}>
                  {t({
                    es: 'Si algún día ves algo, escríbeme. Si no, mándame foto cuando muevas los muebles. Me da gusto verlo.',
                    en: 'If anything ever looks off, write me. If not, send a photo when you move the furniture back. I love seeing it.'
                  }, lang)}
                </p>
                <div className="codex" style={{ marginTop: 8, color: 'var(--ink-muted)' }}>— Erick</div>
              </EmailFrame>
            </div>
          </div>
        </section>

        <div style={{ height: 56 }} />
        <Foot surface="dreamvalley" />
      </div>
    </div>
  );
}

/* ── REFERRAL PROGRAM — refer a neighbor ──────────────────── */

function ReferralProgram() {
  const t = window.t;
  const { lang } = window.useLang();
  const { Nav, Foot, Eyebrow } = ATOMS7;
  return (
    <div className="page">
      <Nav active="account" surface="dreamvalley" />
      <div className="page-scroll hide-scroll">
        <section style={{ maxWidth: 1100, margin: '0 auto', padding: '50px 36px 0' }}>
          <div style={{ display: 'grid', gridTemplateColumns: '1fr auto', alignItems: 'baseline', borderBottom: '1px solid var(--ink)', paddingBottom: 10 }}>
            <Eyebrow>{t({ es: 'Programa · refiere un vecino', en: 'Program · refer a neighbor' }, lang)}</Eyebrow>
            <div className="codex" style={{ color: 'var(--ink-muted)' }}>DV · PROGRAM · 02</div>
          </div>

          <h1 className="display" style={{ fontSize: 88, margin: '24px 0 18px', lineHeight: 0.92, maxWidth: 920, letterSpacing: '-0.03em' }}>
            {t({ es: 'Una calle, dos casas, ', en: 'One street, two homes,' }, lang)}<em style={{ color: 'var(--terracotta)', fontWeight: 500 }}>{t({ es: 'el mismo precio.', en: 'the same price.' }, lang)}</em>
          </h1>
          <p style={{ fontFamily: 'var(--serif)', fontSize: 19, lineHeight: 1.55, color: 'var(--ink-soft)', maxWidth: 760, marginTop: 0 }}>
            {t({
              es: 'Si refieres a tu vecino y nos contrata, ambos reciben $250 de crédito en su próxima obra. Si trabajamos las dos casas en la misma semana, son $500 para ti.',
              en: 'Refer a neighbor — if they hire us, you both get $250 credit on your next job. If we work both homes the same week, you get $500.'
            }, lang)}
          </p>
        </section>

        {/* the three-step */}
        <section style={{ maxWidth: 1100, margin: '40px auto 0', padding: '0 36px' }}>
          <div style={{ display: 'grid', gridTemplateColumns: 'repeat(3, 1fr)', borderTop: '1px solid var(--divider-strong)' }}>
            {[
              { n: '01', t: { es: 'Manda el contacto', en: 'Send the contact' },     d: { es: 'Nombre y teléfono — por mensaje o desde tu cuenta. Una línea basta.', en: 'Name and phone — by text or from your account. One line is enough.' } },
              { n: '02', t: { es: 'Hablamos con ellos', en: 'We reach out' },         d: { es: 'En 24 horas, sin presión. Si no contestan en 3 días, lo dejamos.', en: 'Within 24 hours, no pressure. If they don\u2019t answer in 3 days we drop it.' } },
              { n: '03', t: { es: 'Si firman, ambos cobran', en: 'If they sign, both credit' }, d: { es: 'El crédito vive en tu cuenta. Se aplica solo cuando firmes la siguiente obra.', en: 'Credit lives in your account. Applies only when you sign the next job.' } },
            ].map((s, i) => (
              <div key={s.n} style={{ borderRight: i < 2 ? '1px solid var(--divider)' : 'none', borderBottom: '1px solid var(--divider)', padding: '24px 22px 28px' }}>
                <div className="display tab" style={{ fontSize: 54, color: 'var(--terracotta)', fontStyle: 'italic', fontWeight: 500, lineHeight: 0.9 }}>{s.n}</div>
                <h3 className="display" style={{ fontSize: 24, margin: '12px 0 8px', lineHeight: 1.05 }}>{t(s.t, lang)}</h3>
                <p style={{ fontSize: 13.5, color: 'var(--ink-soft)', lineHeight: 1.55, margin: 0 }}>{t(s.d, lang)}</p>
              </div>
            ))}
          </div>
        </section>

        {/* form + ledger */}
        <section style={{ maxWidth: 1100, margin: '36px auto 0', padding: '0 36px', display: 'grid', gridTemplateColumns: '1fr 1fr', gap: 28, alignItems: 'start' }}>
          <div className="card">
            <Eyebrow>{t({ es: 'Mandar el contacto', en: 'Send the contact' }, lang)}</Eyebrow>
            <div className="field" style={{ marginTop: 12 }}>
              <label className="field-label">{t({ es: 'NOMBRE DEL VECINO', en: 'NEIGHBOR\u2019S NAME' }, lang)}</label>
              <input className="field-input" placeholder={t({ es: 'p. ej. José M.', en: 'e.g. José M.' }, lang)} />
            </div>
            <div className="field" style={{ marginTop: 10 }}>
              <label className="field-label">{t({ es: 'TELÉFONO O CORREO', en: 'PHONE OR EMAIL' }, lang)}</label>
              <input className="field-input" placeholder="(951) ··· ····" />
            </div>
            <div className="field" style={{ marginTop: 10 }}>
              <label className="field-label">{t({ es: 'NOTA · OPCIONAL', en: 'NOTE · OPTIONAL' }, lang)}</label>
              <input className="field-input" placeholder={t({ es: 'mejor llamar después de las 6', en: 'best to call after 6' }, lang)} />
            </div>
            <button className="btn btn-primary" style={{ width: '100%', marginTop: 14 }}>
              {t({ es: 'Mandar contacto →', en: 'Send contact →' }, lang)}
            </button>
            <div className="codex" style={{ marginTop: 10, color: 'var(--ink-muted)', textAlign: 'center' }}>
              {t({ es: 'no compartimos su número con nadie más', en: 'we never share their number elsewhere' }, lang)}
            </div>
          </div>

          <div>
            <Eyebrow>{t({ es: 'Tu libro de referidos', en: 'Your referral ledger' }, lang)}</Eyebrow>
            <div style={{ borderTop: '1px solid var(--divider)', marginTop: 12 }}>
              {[
                { name: 'Carlos R.', status: { es: 'firmó', en: 'signed' }, statusKey: 'good', credit: '$250', when: '02·26' },
                { name: 'Doña Elsa', status: { es: 'estimado mandado', en: 'estimate sent' }, statusKey: 'mid', credit: '—', when: '03·11' },
                { name: 'Familia Pérez', status: { es: 'no contestó', en: 'no answer' }, statusKey: 'off', credit: '—', when: '01·19' },
              ].map((r, i) => (
                <div key={i} style={{
                  display: 'grid', gridTemplateColumns: '1fr 1fr 70px 60px',
                  alignItems: 'baseline', gap: 10,
                  padding: '14px 0', borderBottom: '1px solid var(--divider)',
                }}>
                  <div style={{ fontFamily: 'var(--serif)', fontSize: 16 }}>{r.name}</div>
                  <div className="codex" style={{
                    color: r.statusKey === 'good' ? 'var(--olive)' :
                           r.statusKey === 'off' ? 'var(--ink-muted)' : 'var(--terracotta)'
                  }}>
                    · {t(r.status, lang)}
                  </div>
                  <div className="tab" style={{ fontFamily: 'var(--serif)', fontSize: 15, textAlign: 'right' }}>{r.credit}</div>
                  <div className="codex tab" style={{ color: 'var(--ink-muted)', textAlign: 'right' }}>{r.when}</div>
                </div>
              ))}
            </div>
            <div style={{
              marginTop: 12, padding: 14,
              background: 'var(--paper-cream)', border: '1px solid var(--divider)',
              display: 'grid', gridTemplateColumns: '1fr auto', alignItems: 'baseline',
            }}>
              <div className="codex">{t({ es: 'CRÉDITO DISPONIBLE', en: 'CREDIT AVAILABLE' }, lang)}</div>
              <div className="display tab" style={{ fontSize: 26 }}>$250</div>
            </div>
          </div>
        </section>

        {/* fine print */}
        <section style={{ maxWidth: 1100, margin: '32px auto 0', padding: '0 36px' }}>
          <Eyebrow>{t({ es: 'Letra chica honesta', en: 'Honest fine print' }, lang)}</Eyebrow>
          <ul style={{ margin: '10px 0 0', padding: 0, listStyle: 'none', display: 'grid', gridTemplateColumns: '1fr 1fr', gap: '0 32px' }}>
            {[
              { es: 'El crédito se aplica cuando firmes tu siguiente obra — no en efectivo.', en: 'Credit applies when you sign your next job — not as cash.' },
              { es: 'Un referido por casa. No funciona con cambios de propietario.', en: 'One referral per address. Doesn\u2019t apply to ownership transfers.' },
              { es: 'El referido tiene que ser obra nueva, no continuación de la tuya.', en: 'The referral must be a new job, not a continuation of yours.' },
              { es: 'Si el vecino te dice que no quiere ser contactado, dejamos de seguir.', en: 'If the neighbor asks not to be contacted, we stop following up.' },
            ].map((r, i) => (
              <li key={i} style={{ padding: '12px 0', borderBottom: '1px solid var(--divider)', display: 'grid', gridTemplateColumns: '24px 1fr', gap: 10, fontSize: 13.5, color: 'var(--ink-soft)', lineHeight: 1.55 }}>
                <span className="codex" style={{ color: 'var(--ink-muted)' }}>{String(i+1).padStart(2,'0')}</span>
                <span>{t(r, lang)}</span>
              </li>
            ))}
          </ul>
        </section>

        <div style={{ height: 56 }} />
        <Foot surface="dreamvalley" />
      </div>
    </div>
  );
}

/* ── DRYWALL SERVICE — third service detail ───────────────── */

function DrywallService() {
  const t = window.t;
  const { lang } = window.useLang();
  const { Nav, Foot, Eyebrow, Slot } = ATOMS7;
  return (
    <div className="page">
      <Nav active="services" surface="dreamvalley" />
      <div className="page-scroll hide-scroll">
        <section style={{ maxWidth: 1100, margin: '0 auto', padding: '36px 36px 0' }}>
          <div className="codex" style={{ color: 'var(--ink-muted)' }}>
            <a style={{ color: 'inherit', textDecoration: 'none' }}>{t({ es: 'Servicios', en: 'Services' }, lang)}</a> &nbsp;/&nbsp; {t({ es: 'Drywall · reparación', en: 'Drywall · repair' }, lang)}
          </div>
          <div style={{ display: 'grid', gridTemplateColumns: '1.2fr 1fr', gap: 36, marginTop: 14, alignItems: 'start' }}>
            <div>
              <Eyebrow>SERVICE · 03 · DV·DRYWALL</Eyebrow>
              <h1 className="display" style={{ fontSize: 56, margin: '12px 0 12px' }}>
                {t({ es: 'Drywall que desaparece.', en: 'Drywall that disappears.' }, lang)}
              </h1>
              <p style={{ fontSize: 16, lineHeight: 1.6, color: 'var(--ink-soft)', maxWidth: 540 }}>
                {t({
                  es: 'Hoyos de puerta, manchas de agua, juntas mal acabadas, paredes nuevas. Texturado a juego: lisa, naranja, knockdown. La reparación queda invisible bajo la pintura.',
                  en: 'Door dings, water stains, bad joints, new walls. Texture-matched: smooth, orange peel, knockdown. The patch goes invisible under the topcoat.'
                }, lang)}
              </p>
              <div style={{ display: 'flex', gap: 10, marginTop: 18 }}>
                <a className="btn btn-call">{t({ es: 'Pedir estimado →', en: 'Request estimate →' }, lang)}</a>
                <a className="btn btn-ghost">{t({ es: 'Ver fotos', en: 'See photos' }, lang)}</a>
              </div>
            </div>
            <Slot label="SERVICE HERO" sub="patched wall · 4:3" slotId="service-drywall-hero" style={{ aspectRatio: '4 / 3' }} />
          </div>
        </section>

        {/* texture chooser */}
        <section style={{ maxWidth: 1100, margin: '40px auto 0', padding: '0 36px' }}>
          <Eyebrow>{t({ es: 'Igualamos tres texturas', en: 'We match three textures' }, lang)}</Eyebrow>
          <div style={{ display: 'grid', gridTemplateColumns: 'repeat(3, 1fr)', gap: 14, marginTop: 12 }}>
            {[
              {
                name: { es: 'Lisa · nivel 5', en: 'Smooth · level 5' },
                d:    { es: 'Construcción nueva, casas modernas. Cinco capas, lijada al espejo.', en: 'New construction, modern homes. Five-coat skim, sanded glassy.' },
                pattern: 'smooth',
              },
              {
                name: { es: 'Naranja', en: 'Orange peel' },
                d:    { es: 'La más común del IE. Rociada y dejada secar sin nockear.', en: 'Most common IE finish. Sprayed and left without knockdown.' },
                pattern: 'orange',
              },
              {
                name: { es: 'Knockdown', en: 'Knockdown' },
                d:    { es: 'Rociada, esperada 20 min, aplanada con cuchilla. Patrón clásico estuco-interior.', en: 'Sprayed, waited 20 min, flattened with a blade. Classic stucco-style finish.' },
                pattern: 'knock',
              },
            ].map((tx, i) => (
              <div key={i} style={{ border: '1px solid var(--divider)', background: 'var(--paper-elevated)' }}>
                <div style={{
                  height: 120,
                  background:
                    tx.pattern === 'smooth' ? 'linear-gradient(180deg, #efe9dd, #e6dfd0)' :
                    tx.pattern === 'orange'
                      ? 'radial-gradient(circle at 20% 30%, rgba(0,0,0,0.07) 0 2px, transparent 3px), radial-gradient(circle at 60% 60%, rgba(0,0,0,0.06) 0 2px, transparent 3px), radial-gradient(circle at 80% 20%, rgba(0,0,0,0.06) 0 2px, transparent 3px), #ece4d3'
                      : 'conic-gradient(from 15deg at 30% 40%, rgba(0,0,0,0.08), transparent 30%, rgba(0,0,0,0.06) 60%, transparent 90%), conic-gradient(from 220deg at 70% 70%, rgba(0,0,0,0.06), transparent 40%), #e9e1ce',
                  backgroundSize: tx.pattern === 'orange' ? '16px 16px, 22px 22px, 14px 14px, 100% 100%' : 'auto',
                }} />
                <div style={{ padding: '14px 16px 16px' }}>
                  <div style={{ fontFamily: 'var(--serif)', fontSize: 18 }}>{t(tx.name, lang)}</div>
                  <p style={{ margin: '6px 0 0', fontSize: 13, color: 'var(--ink-soft)', lineHeight: 1.5 }}>{t(tx.d, lang)}</p>
                </div>
              </div>
            ))}
          </div>
        </section>

        {/* ranges + not-covered */}
        <section style={{ maxWidth: 1100, margin: '40px auto 0', padding: '0 36px', display: 'grid', gridTemplateColumns: '1.1fr 1fr', gap: 32, alignItems: 'start' }}>
          <div>
            <Eyebrow>{t({ es: 'Rangos típicos', en: 'Typical ranges' }, lang)}</Eyebrow>
            <dl style={{ marginTop: 12 }}>
              <div className="spec-row"><dt>{t({ es: 'PARCHE PEQUEÑO', en: 'SMALL PATCH' }, lang)}</dt><dd className="tab">$180 – $280</dd></div>
              <div className="spec-row"><dt>{t({ es: 'PARED COMPLETA', en: 'FULL WALL' }, lang)}</dt><dd className="tab">$420 – $680</dd></div>
              <div className="spec-row"><dt>{t({ es: 'CUARTO COMPLETO', en: 'FULL ROOM' }, lang)}</dt><dd className="tab">$1,200 – $1,800</dd></div>
              <div className="spec-row"><dt>{t({ es: 'CON PINTURA', en: 'INCL. PAINT' }, lang)}</dt><dd>+ 30–40%</dd></div>
              <div className="spec-row"><dt>{t({ es: 'PLAZO', en: 'DURATION' }, lang)}</dt><dd>{t({ es: '1–3 días + 1 día de secado', en: '1–3 days + 1 day cure' }, lang)}</dd></div>
            </dl>
          </div>
          <div className="card">
            <Eyebrow>{t({ es: 'Cuándo decimos que no', en: 'When we say no' }, lang)}</Eyebrow>
            <p style={{ fontSize: 13.5, color: 'var(--ink-soft)', lineHeight: 1.6, marginTop: 8 }}>
              {t({
                es: 'Drywall mojado activamente — primero seca la fuga. Plomo o asbesto en yeso viejo — eso es contratista certificado. Movimiento estructural — eso es ingeniero. Te decimos el oficio correcto, sin cobrar visita.',
                en: 'Actively wet drywall — fix the leak first. Lead or asbestos in old plaster — that\u2019s a certified abatement contractor. Structural movement — that\u2019s an engineer. We name the right trade, no trip charge.'
              }, lang)}
            </p>
          </div>
        </section>

        <div style={{ height: 56 }} />
        <Foot surface="dreamvalley" />
      </div>
    </div>
  );
}

window.OrinovaPages7 = {
  PortalIndex,
  ScheduleVisit,
  EmailTemplates,
  ReferralProgram,
  DrywallService,
};
