<!doctype html>
<html lang="pt-BR" dir="ltr" prefix="og: https://ogp.me/ns#">
  <head>
    <meta charset="UTF-8" />

    <!-- ── Canonical & Identity ── -->
    <link rel="canonical" href="https://sofin-fms.web.app/" />
    <link rel="alternate" hreflang="pt-BR" href="https://sofin-fms.web.app/" />

    <!-- ── Favicons ── -->
    <link rel="icon" type="image/x-icon" href="./favicon.ico" />
    <link rel="icon" type="image/png" sizes="32x32" href="./favicon-32x32.png" />
    <link rel="icon" type="image/png" sizes="16x16" href="./favicon-16x16.png" />
    <link rel="apple-touch-icon" sizes="180x180" href="./apple-touch-icon.png" />
    <link rel="manifest" href="./site.webmanifest" />

    <!-- ── Core Meta ── -->
    <meta name="theme-color" content="#0F172A" />
    <meta name="color-scheme" content="light" />
    <meta name="google-site-verification" content="YgNJw-4onJl3KiKt_HLGfdenBLMPnXzcgp4yNaa82VM" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />

    <!-- ── SEO / Robots (padrão para todas as páginas; landing atualiza dinamicamente) ── -->
    <title>SOFIN</title>
    <meta name="description" content="Plataforma de gestão financeira para PMEs." />
    <meta name="robots" content="noindex, nofollow" />
    <meta name="format-detection" content="telephone=no" />

    <!-- ── Open Graph (Facebook, LinkedIn, WhatsApp, Telegram) ── -->
    <meta property="og:type" content="website" />
    <meta property="og:site_name" content="SOFIN — Gestão Financeira Inteligente" />
    <meta property="og:title" content="SOFIN — Gestão Financeira Inteligente para PMEs" />
    <meta property="og:description" content="Plataforma SaaS de gestão financeira com conciliação bancária automatizada, relatórios gerenciais (DRE, Fluxo de Caixa), IA para categorização e criptografia client-side. Para pequenas e médias empresas." />
    <meta property="og:url" content="https://sofin-fms.web.app/" />
    <meta property="og:image" content="https://sofin-fms.web.app/images/sofin-og-banner.png" />
    <meta property="og:image:width" content="1200" />
    <meta property="og:image:height" content="630" />
    <meta property="og:image:alt" content="SOFIN — Dashboard de gestão financeira inteligente" />
    <meta property="og:locale" content="pt_BR" />

    <!-- ── Twitter Cards ── -->
    <meta name="twitter:card" content="summary_large_image" />
    <meta name="twitter:title" content="SOFIN — Gestão Financeira Inteligente para PMEs" />
    <meta name="twitter:description" content="Conciliação bancária automatizada, DRE, Fluxo de Caixa, IA para categorização e criptografia client-side. Gestão financeira moderna para sua empresa." />
    <meta name="twitter:image" content="https://sofin-fms.web.app/images/sofin-og-banner.png" />
    <meta name="twitter:image:alt" content="SOFIN — Dashboard de gestão financeira inteligente" />

    <!-- ── Structured Data: Organization + SoftwareApplication ── -->
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@graph": [
        {
          "@type": "Organization",
          "@id": "https://sofin-fms.web.app/#organization",
          "name": "Soluções Integradas",
          "url": "https://sofin-fms.web.app",
          "logo": {
            "@type": "ImageObject",
            "url": "https://sofin-fms.web.app/images/sofin-logo.png",
            "width": 512,
            "height": 512
          },
          "description": "Empresa de tecnologia especializada em soluções de gestão financeira inteligente para PMEs brasileiras.",
          "contactPoint": {
            "@type": "ContactPoint",
            "contactType": "customer support",
            "email": "afcavalcanti99@gmail.com",
            "availableLanguage": ["Portuguese"]
          },
          "sameAs": ["https://github.com/afcavalcanti/sofin"]
        },
        {
          "@type": "WebSite",
          "@id": "https://sofin-fms.web.app/#website",
          "name": "SOFIN",
          "url": "https://sofin-fms.web.app",
          "publisher": { "@id": "https://sofin-fms.web.app/#organization" },
          "inLanguage": "pt-BR"
        },
        {
          "@type": "SoftwareApplication",
          "@id": "https://sofin-fms.web.app/#software",
          "name": "SOFIN",
          "alternateName": "SOFIN - Gestão Financeira Inteligente",
          "description": "Plataforma SaaS de gestão financeira para PMEs com conciliação bancária automatizada, DRE, Fluxo de Caixa, IA e criptografia client-side.",
          "url": "https://sofin-fms.web.app",
          "applicationCategory": "FinanceApplication",
          "operatingSystem": "Web Browser",
          "inLanguage": "pt-BR",
          "offers": {
            "@type": "AggregateOffer",
            "priceCurrency": "BRL",
            "lowPrice": "0",
            "highPrice": "299.90"
          },
          "creator": { "@id": "https://sofin-fms.web.app/#organization" },
          "featureList": [
            "Dashboard personalizável",
            "Conciliação bancária automatizada (OFX)",
            "DRE e Fluxo de Caixa",
            "IA para categorização de lançamentos",
            "Criptografia client-side (AES-GCM)",
            "Multi-tenancy com isolamento por organização",
            "RBAC (Owner, Admin, User)"
          ]
        }
      ]
    }
    </script>

    <!-- ── Google Analytics 4 ── -->
    <script async src="https://www.googletagmanager.com/gtag/js?id=G-XE2XKL070R"></script>
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());
      gtag('config', 'G-XE2XKL070R');
    </script>

    <!-- ── Preconnect & External Resources ── -->
    <script src="https://accounts.google.com/gsi/client" async defer></script>
    <script src="https://cdn.tailwindcss.com"></script>
    <link rel="stylesheet" href="https://rsms.me/inter/inter.css" />
    <script>
      tailwind.config = {
        theme: {
          extend: {
            fontFamily: {
              sans: ['Inter', 'sans-serif'],
            },
            colors: {
              'brand-sidebar': '#0F172A',
              'brand-header': '#FFFFFF',
              'brand-background': '#F8FAFC',
              'brand-surface': '#FFFFFF',
              'brand-primary': '#0369A1',
              'brand-primary-dark': '#075985',
              'brand-accent': '#15803D',
              'brand-accent-dark': '#166534',
              'brand-danger': '#DC2626',
              'brand-danger-dark': '#B91C1C',
              'brand-text-light': '#CBD5E1',
              'brand-text-dark': '#0F172A',
            },
          },
        },
      };
    </script>
    <style>
      .print-header,
      .print-footer {
        display: none;
      }

      .search-modal-backdrop {
        background-color: rgba(15, 23, 42, 0.8);
        backdrop-filter: blur(4px);
      }

      .conc-matched-row {
        background-color: #f0fdf4; /* green-50 */
        border-left: 4px solid #22c55e; /* green-500 */
      }
      .conc-suggested-row {
        background-color: #f0f9ff; /* sky-50 */
        border-left: 4px solid #0ea5e9; /* sky-500 */
      }

      /* Estilos para customização do Dashboard */
      .dashboard-item-placeholder {
        background-color: #f0f9ff; /* sky-50 */
        border: 2px dashed #0ea5e9; /* sky-500 */
        border-radius: 0.75rem;
        min-height: 150px;
        transition: all 0.2s ease-in-out;
      }
      .drag-handle {
        cursor: grab;
      }
      .drag-handle:active {
        cursor: grabbing;
      }
      .dashboard-item.dragging {
        opacity: 0.5;
        transform: scale(0.98);
        box-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.25);
      }
      .dashboard-item {
        transition: all 0.2s ease-in-out;
        position: relative;
      }

      @media print {
        .no-print {
          display: none !important;
        }

        /* Initialize page counter */
        body {
          counter-reset: page;
        }

        @page {
          size: A4;
          margin: 0.5cm; /* Margens reduzidas para maximizar espaço útil (≈0.2 polegadas) */

          @bottom-left {
            content: 'Relatório gerado via SOFIN - uma ferramenta da Soluções Integradas';
            font-size: 8pt;
            color: #666;
            border-top: 1px solid #ccc;
            padding-top: 5px;
            width: 80%;
          }

          @bottom-right {
            content: 'Página ' counter(page) ' de ' counter(pages);
            font-size: 8pt;
            color: #666;
            padding-top: 5px;
          }
        }

        /* Reset base styles for printing and allow content to flow across pages */
        html,
        body {
          background-color: #fff !important;
          color: #000;
          font-size: 9pt;
          padding: 0;
          margin: 0;
          height: auto !important;
          overflow: visible !important;
          width: 100% !important;
        }

        /* Override app layout containers that use viewport height and overflow constraints */
        #root,
        #root > div,
        #root > div > .flex-1 {
          display: block !important;
          height: auto !important;
          overflow: visible !important;
        }

        /* Hide general app chrome for all printing */
        header,
        aside,
        footer:not(.print-footer) {
          display: none !important;
        }
        main {
          padding: 0 !important;
          margin: 0 !important;
          overflow: visible !important; /* Key fix: No scrollbars in print */
          padding-bottom: 0 !important; /* Remove old padding, footer is handled by @page now */
        }

        /* Ensure containers with horizontal scroll on screen print all their content */
        .overflow-x-auto {
          overflow-x: visible !important;
        }

        /* General visibility control */
        .printable-area {
          display: block !important;
          box-shadow: none !important;
          border: none !important;
          border-radius: 0 !important;
          padding: 0 !important;
          background-color: transparent !important;
          word-break: break-word; /* Prevent long text from overflowing */
          height: auto !important;
          max-height: none !important;
          overflow: visible !important;
        }

        /* Report specific header */
        .print-header {
          display: flex !important;
          justify-content: space-between;
          align-items: flex-start;
          border-bottom: 2px solid black;
          padding-bottom: 0.5rem;
          margin-bottom: 1.5rem;
          page-break-after: avoid;
        }
        .print-header .logo-container {
          display: flex;
          align-items: center;
          gap: 1rem;
        }
        .print-header img {
          max-height: 40px;
          width: auto;
        }
        .print-header .report-details {
          text-align: right;
        }
        .print-header .report-title {
          font-size: 16pt;
          font-weight: bold;
          margin: 0;
        }
        .print-header .report-subtitle {
          font-size: 9pt;
          color: #444;
          margin: 0;
        }

        /* Rules to fix page breaking issues with tables */
        .printable-area,
        .printable-area > div,
        .overflow-x-auto {
          page-break-inside: auto !important;
        }

        /* General Table styling for reports */
        .printable-area table {
          width: 100%;
          border-collapse: collapse;
          font-size: 8pt;
          margin-top: 1rem;
          page-break-inside: auto !important; /* Allow tables to break across pages */
        }
        .printable-area thead {
          display: table-header-group !important; /* Repeat header on each page */
          background-color: #f3f4f6 !important; /* gray-100 */
          -webkit-print-color-adjust: exact; /* Force background color print */
          print-color-adjust: exact;
        }
        .printable-area thead th {
          white-space: nowrap;
        }
        .printable-area th,
        .printable-area td {
          border: 1px solid #e5e7eb; /* gray-200 */
          padding: 4px 6px;
          text-align: left;
        }
        /* Zebra-striping for tables */
        .printable-area tbody tr:nth-child(odd) {
          background-color: #f8fafc !important; /* slate-50 */
          -webkit-print-color-adjust: exact;
          print-color-adjust: exact;
        }
        .printable-area tr,
        .print-avoid-break {
          page-break-inside: avoid !important; /* Try to keep rows intact */
        }

        /* Specific styles for DRE/Fluxo de Caixa summary rows */
        .dre-total-row {
          font-weight: bold !important;
          border-top: 2px double #333 !important;
          border-bottom: 2px double #333 !important;
          background-color: #f3f4f6 !important; /* gray-100 */
          -webkit-print-color-adjust: exact;
          print-color-adjust: exact;
        }

        .recharts-responsive-container {
          page-break-inside: avoid;
        }

        /* Footer is now handled by @page directive, hide the HTML one */
        .print-footer {
          display: none !important;
        }

        /* Plano de Contas específico */
        .printable-area .actions-cell,
        .printable-area button,
        .no-print,
        nav[role='tablist'],
        .print-hide {
          display: none !important;
        }

        /* Ocultar container de scroll, mostrar conteúdo completo */
        .printable-area .overflow-auto {
          overflow: visible !important;
          max-height: none !important;
        }

        /* Tree table indentation */
        .tree-table tbody tr td:first-child {
          word-break: keep-all !important;
        }
      }
    </style>

    <script type="importmap">
      {
        "imports": {
          "react": "https://esm.sh/react@^19.1.1",
          "react-dom/": "https://esm.sh/react-dom@^19.1.1/",
          "react/": "https://esm.sh/react@^19.1.1/",
          "recharts": "https://esm.sh/recharts@^3.1.0",
          "@google/genai": "https://esm.sh/@google/genai"
        }
      }
    </script>
    <script type="module" crossorigin src="./assets/index-CkmqPL2J.js"></script>
    <link rel="modulepreload" crossorigin href="./assets/recharts-DIe3Egna.js">
    <link rel="modulepreload" crossorigin href="./assets/firebase-C-bGPRVn.js">
    <link rel="modulepreload" crossorigin href="./assets/services-DO41N0fW.js">
    <link rel="modulepreload" crossorigin href="./assets/utils-BJr2iaUX.js">
    <link rel="stylesheet" crossorigin href="./assets/index-CPnUccs-.css">
  </head>
  <body>
    <noscript>You need to enable JavaScript to run this app.</noscript>
    <div id="root"></div>
  </body>
</html>
