/* Service subpages — Protect, License, Evidence, Smart Contract API. Bilingual.
   Reads window.LANG ('en' | 'es'). Pages INFORM, they do not sell. Centered layout.
   Titles use Inter Tight 700 per STYLE_GUIDE (never Fraunces italic). */

const PLANG = (typeof window !== 'undefined' && window.LANG) || 'en';

/* ---- shared building blocks ---------------------------------------------- */

const PageHero = ({ title, lead }) => (
  <header className="ipage-hero">
    <div className="container">
      <h1 className="ipage-title">{title}</h1>
      <p className="ipage-lead">{lead}</p>
    </div>
  </header>
);

const SectionHead = ({ children }) => <h2 className="ipage-h2">{children}</h2>;

const Rows = ({ items }) => (
  <div className="ipage-rows">
    {items.map((it, i) => (
      <div className="ipage-row" key={i}>
        <div className="ipage-row-k">{it.label}</div>
        <div className="ipage-row-v">{it.detail}</div>
      </div>
    ))}
  </div>
);

const STEP_COLORS = ['#E8412B', '#7C3AED', '#22C55E'];
const Steps = ({ steps }) => (
  <div className="ipage-steps">
    {steps.map((s, i) => (
      <div className="ipage-step" key={i}>
        <div className="ipage-step-num" style={{ color: STEP_COLORS[i % STEP_COLORS.length] }}>{String(i + 1).padStart(2, '0')}</div>
        <h3>{s.title}</h3>
        <p>{s.body}</p>
      </div>
    ))}
  </div>
);

const Stats = ({ stats }) => (
  <div className="ipage-stats">
    {stats.map((s, i) => (
      <div className="ipage-stat" key={i}>
        <div className="v">{s.v}<em>{s.unit}</em></div>
        <div className="l">{s.label}</div>
      </div>
    ))}
  </div>
);

const ForLine = ({ who }) => <p className="ipage-for">{who}</p>;

/* ---- CONTENT (en / es) --------------------------------------------------- */

const C = {
  en: {
    protect: {
      title: <>Find unauthorized AI clones of <em>your talent.</em></>,
      lead: "talicense watches the major platforms for AI use of your talent's face and voice, documents every violation with legally usable evidence, and leaves the decision with you.",
      doH: 'What talicense does',
      do: [
        { label: 'Continuous monitoring', detail: 'YouTube, TikTok, Instagram and Meta, watched around the clock.' },
        { label: 'Documented violations', detail: 'Every hit captured with screenshot, source URL, timestamp and an on-chain certificate.' },
        { label: 'Instant alerts', detail: 'You are notified the moment a violation is detected.' },
        { label: 'You decide the response', detail: 'Takedown, license offer or legal demand. We carry it out.' },
        { label: 'One inbox', detail: 'Inbound requests from verified studios, managed in one place.' },
      ],
      howH: 'How it works',
      steps: [
        { title: 'Register', body: 'You provide face photos, voice samples and signed consent. An authority certificate is anchored on-chain.' },
        { title: 'Monitor', body: 'talicense scans the platforms. Violations are surfaced and documented, typically within 48 hours.' },
        { title: 'Resolve', body: 'Each violation becomes your choice: take it down, or turn it into a licensed deal.' },
      ],
      for: 'For talent agencies, estates and rights organizations.',
    },
    license: {
      title: <>License your talent's likeness, <em>on your terms.</em></>,
      lead: "Studios and brands want authorized likenesses for AI content. talicense turns that demand into clean, legally binding deals, with you approving every one.",
      doH: 'What you control',
      do: [
        { label: 'Which media types', detail: 'Film, TV, advertising, social, or any combination you choose to allow.' },
        { label: 'The terms', detail: 'Territory, duration, exclusivity and content restrictions, all set upfront.' },
        { label: 'Every request', detail: 'Each one comes to you first. Approve or reject before anything moves.' },
        { label: 'The contract', detail: 'A legally binding agreement is generated the moment you approve.' },
        { label: 'The payment', detail: 'Collected on platform and sent directly to you.' },
      ],
      howH: 'How a deal works',
      steps: [
        { title: 'Define your scope', body: 'Set the media types, territory, duration and restrictions you will license. This becomes your standing offer.' },
        { title: 'Approve the deal', body: 'Studios submit requests. Each comes to you. On approval, a smart contract is generated.' },
        { title: 'Get paid', body: 'Payment is routed to you. Every signature and usage is anchored on-chain for the full term.' },
      ],
      for: 'For talent agencies, rights organizations and estates.',
    },
    evidence: {
      title: <>Court-ready proof of <em>every violation.</em></>,
      lead: "A flagged clip is not enough to act on. talicense turns each violation into a tamper-proof package that holds up with platforms, lawyers and courts.",
      packH: 'What is inside an evidence package',
      packLabel: 'Evidence package',
      packTag: 'On-chain anchored',
      pack: [
        { k: 'Capture', v: 'Screenshot, source URL and the exact timestamp of the violation.' },
        { k: 'Context', v: 'Platform data and an estimate of the revenue it is generating.' },
        { k: 'Match', v: 'Face and voice match score linking the content to the registered likeness.' },
        { k: 'Proof', v: 'An on-chain certificate so the evidence cannot be altered after the fact.' },
        { k: 'Standing', v: 'A jurisdiction note covering EU, US, UK and LatAm admissibility.' },
      ],
      stats: [
        { v: '48', unit: 'h', label: 'From violation flagged to filing-ready package' },
        { v: '100', unit: '%', label: 'Of packages anchored on-chain and timestamped' },
        { v: '4', unit: '', label: 'Jurisdictions covered: EU, US, UK and LatAm' },
      ],
      for: 'For agencies, estates, rights organizations and their counsel.',
    },
    api: {
      title: <>A licensing API for <em>studios and brands.</em></>,
      lead: "For teams building AI content at scale. The talicense API exposes licensed likeness data and on-chain contracts directly to your systems.",
      pilot: 'Early access. The API is in pilot with selected partners. There is no public signup, access is by request.',
      doH: 'What it does',
      do: [
        { label: 'Licensed data, not raw assets', detail: 'Query authorized likeness data without ever holding the raw face or voice.' },
        { label: 'A contract per deal', detail: 'An on-chain smart contract defining the exact usage scope and term.' },
        { label: 'Usage tracking', detail: 'Visible to both sides for the full license period.' },
        { label: 'Automatic settlement', detail: 'Payment collection and royalty distribution, handled for you.' },
      ],
      for: 'For studios and brands building AI content at scale.',
    },
  },

  es: {
    protect: {
      title: <>Encuentra clones de IA no autorizados de <em>tu talento.</em></>,
      lead: "talicense vigila las principales plataformas en busca de usos con IA del rostro y la voz de tu talento, documenta cada infracción con pruebas válidas legalmente y deja la decisión en tus manos.",
      doH: 'Qué hace talicense',
      do: [
        { label: 'Monitoreo continuo', detail: 'YouTube, TikTok, Instagram y Meta, vigiladas las 24 horas.' },
        { label: 'Infracciones documentadas', detail: 'Cada caso con captura, URL de origen, marca de tiempo y un certificado en cadena.' },
        { label: 'Alertas inmediatas', detail: 'Te avisamos en el momento en que se detecta una infracción.' },
        { label: 'Tú decides la respuesta', detail: 'Retirada, oferta de licencia o requerimiento legal. Nosotros lo ejecutamos.' },
        { label: 'Una sola bandeja', detail: 'Las solicitudes de estudios verificados, gestionadas en un solo lugar.' },
      ],
      howH: 'Cómo funciona',
      steps: [
        { title: 'Registra', body: 'Aportas fotos del rostro, muestras de voz y el consentimiento firmado. Anclamos un certificado de autoridad en cadena.' },
        { title: 'Monitorea', body: 'talicense rastrea las plataformas. Las infracciones se detectan y documentan, normalmente en menos de 48 horas.' },
        { title: 'Resuelve', body: 'Cada infracción es tu decisión: retirarla o convertirla en un acuerdo de licencia.' },
      ],
      for: 'Para agencias de talento, herederos y organizaciones de gestión de derechos.',
    },
    license: {
      title: <>Licencia la imagen de tu talento, <em>según tus condiciones.</em></>,
      lead: "Los estudios y las marcas necesitan imágenes autorizadas para contenido con IA. talicense convierte esa demanda en acuerdos limpios y legalmente vinculantes, y tú apruebas cada uno.",
      doH: 'Lo que tú controlas',
      do: [
        { label: 'Qué tipos de medios', detail: 'Cine, televisión, publicidad, redes sociales o la combinación que elijas permitir.' },
        { label: 'Las condiciones', detail: 'Territorio, duración, exclusividad y restricciones de contenido, definidas desde el inicio.' },
        { label: 'Cada solicitud', detail: 'Llega primero a ti. Apruébala o recházala antes de que avance nada.' },
        { label: 'El contrato', detail: 'Se genera un acuerdo legalmente vinculante en el momento en que apruebas.' },
        { label: 'El pago', detail: 'Se cobra en la plataforma y se te envía directamente.' },
      ],
      howH: 'Cómo funciona un acuerdo',
      steps: [
        { title: 'Define tu alcance', body: 'Establece los tipos de medios, territorio, duración y restricciones que licenciarás. Esa será tu oferta permanente.' },
        { title: 'Aprueba el acuerdo', body: 'Los estudios envían solicitudes. Cada una llega a ti. Al aprobar, se genera un contrato inteligente.' },
        { title: 'Cobra', body: 'El pago se te enruta. Cada firma y cada uso queda anclado en cadena durante toda la vigencia.' },
      ],
      for: 'Para agencias de talento, organizaciones de gestión de derechos y herederos.',
    },
    evidence: {
      title: <>Pruebas listas para un tribunal de <em>cada infracción.</em></>,
      lead: "Un clip señalado no basta para actuar. talicense convierte cada infracción en un paquete inviolable que se sostiene ante plataformas, abogados y tribunales.",
      packH: 'Qué incluye un paquete de prueba',
      packLabel: 'Paquete de prueba',
      packTag: 'Anclado en cadena',
      pack: [
        { k: 'Captura', v: 'Captura de pantalla, URL de origen y la marca de tiempo exacta de la infracción.' },
        { k: 'Contexto', v: 'Datos de la plataforma y una estimación de los ingresos que está generando.' },
        { k: 'Coincidencia', v: 'Puntuación de coincidencia de rostro y voz que vincula el contenido con la imagen registrada.' },
        { k: 'Prueba', v: 'Un certificado en cadena para que la evidencia no pueda alterarse después.' },
        { k: 'Validez', v: 'Una nota de jurisdicción que cubre la admisibilidad en la UE, EE. UU., Reino Unido y Latinoamérica.' },
      ],
      stats: [
        { v: '48', unit: 'h', label: 'Desde que se detecta la infracción hasta la entrega del paquete' },
        { v: '100', unit: '%', label: 'De los paquetes anclados en cadena y con marca de tiempo' },
        { v: '4', unit: '', label: 'Jurisdicciones cubiertas: UE, EE. UU., Reino Unido y Latinoamérica' },
      ],
      for: 'Para agencias, herederos, organizaciones de gestión de derechos y sus abogados.',
    },
    api: {
      title: <>Una API de licencias para <em>estudios y marcas.</em></>,
      lead: "Para equipos que crean contenido con IA a escala. La API de talicense expone datos de imagen licenciados y contratos en cadena directamente a tus sistemas.",
      pilot: 'Acceso anticipado. La API está en piloto con socios seleccionados. No hay registro público, el acceso es por solicitud.',
      doH: 'Qué hace',
      do: [
        { label: 'Datos licenciados, no archivos originales', detail: 'Consulta datos de imagen autorizados sin tener nunca el rostro o la voz en bruto.' },
        { label: 'Un contrato por acuerdo', detail: 'Un contrato inteligente en cadena que define el alcance y la vigencia exactos.' },
        { label: 'Seguimiento de uso', detail: 'Visible para ambas partes durante toda la vigencia de la licencia.' },
        { label: 'Liquidación automática', detail: 'Cobro de pagos y reparto de regalías, gestionados automáticamente.' },
      ],
      for: 'Para estudios y marcas que crean contenido con IA a escala.',
    },
  },
};

const D = C[PLANG];

/* ---- pages --------------------------------------------------------------- */

const ProtectPage = () => (
  <>
    <SiteNav />
    <PageHero title={D.protect.title} lead={D.protect.lead} />
    <section className="ipage-section">
      <div className="container">
        <SectionHead>{D.protect.doH}</SectionHead>
        <Rows items={D.protect.do} />
      </div>
    </section>
    <section className="ipage-section ipage-section-alt">
      <div className="container">
        <SectionHead>{D.protect.howH}</SectionHead>
        <Steps steps={D.protect.steps} />
      </div>
    </section>
    <ForLine who={D.protect.for} />
    <SiteFooter />
  </>
);

const LicensePage = () => (
  <>
    <SiteNav />
    <PageHero title={D.license.title} lead={D.license.lead} />
    <section className="ipage-section">
      <div className="container">
        <SectionHead>{D.license.doH}</SectionHead>
        <Rows items={D.license.do} />
      </div>
    </section>
    <section className="ipage-section ipage-section-alt">
      <div className="container">
        <SectionHead>{D.license.howH}</SectionHead>
        <Steps steps={D.license.steps} />
      </div>
    </section>
    <ForLine who={D.license.for} />
    <SiteFooter />
  </>
);

const EvidencePage = () => (
  <>
    <SiteNav />
    <PageHero title={D.evidence.title} lead={D.evidence.lead} />
    <section className="ipage-section">
      <div className="container">
        <SectionHead>{D.evidence.packH}</SectionHead>
        <div className="ipage-package">
          <div className="ipage-package-head">
            <span>{D.evidence.packLabel}</span>
            <span className="ipage-package-tag">{D.evidence.packTag}</span>
          </div>
          {D.evidence.pack.map((row, i) => (
            <div className="ipage-package-row" key={i}>
              <div className="ipage-package-k">{row.k}</div>
              <div className="ipage-package-v">{row.v}</div>
            </div>
          ))}
        </div>
      </div>
    </section>
    <section className="ipage-section ipage-section-alt">
      <div className="container">
        <Stats stats={D.evidence.stats} />
      </div>
    </section>
    <ForLine who={D.evidence.for} />
    <SiteFooter />
  </>
);

const ApiPage = () => (
  <>
    <SiteNav />
    <PageHero title={D.api.title} lead={D.api.lead} />
    <div className="container">
      <div className="ipage-pilot">
        <span className="ipage-pilot-dot" />
        {D.api.pilot}
      </div>
    </div>
    <section className="ipage-section">
      <div className="container">
        <SectionHead>{D.api.doH}</SectionHead>
        <Rows items={D.api.do} />
      </div>
    </section>
    <ForLine who={D.api.for} />
    <SiteFooter />
  </>
);

Object.assign(window, { ProtectPage, LicensePage, EvidencePage, ApiPage });
