<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<link rel='shortcut icon' href='https://supernovadigitalmkt.com/assets/imgs/favicon.png'><link rel='icon' type='image/png' href='https://supernovadigitalmkt.com/assets/imgs/favicon.png'><link rel='apple-touch-icon' href='https://supernovadigitalmkt.com/assets/imgs/favicon.png'><link rel='apple-touch-icon' sizes='180x180' href='https://supernovadigitalmkt.com/assets/imgs/favicon.png'><link rel='apple-touch-icon-precomposed' href='https://supernovadigitalmkt.com/assets/imgs/favicon.png'><link rel='manifest' href='manifest.json'><meta name='theme-color' content='#070b16'><meta name='apple-mobile-web-app-capable' content='yes'><meta name='apple-mobile-web-app-status-bar-style' content='black-translucent'><meta name='apple-mobile-web-app-title' content='Supernova'><TITLE>Supernova - Digital Intelligence</TITLE><meta name="title" content="Supernova - Digital Intelligence" />
                  <meta name="Description" content="Supernova" />
                  <meta name="Keywords" content="Supernova" />
                  <meta name="URL" content="https://supernovadigitalmkt.com/" />
                  <meta name="language" content="pt-br" />
                  <meta name="author" content="AUTHOR" />
                  <meta name="copyright" content="2026" />
                  <meta name="robots" content="noindex, nofollow" />
                    <meta name="viewport" content="width=device-width, initial-scale=1.0">
                  <meta name="revisit-after" content="2 days" />
                  <meta name="document-type" content="Web Page" />
                  <meta name="cache-control" content="no-cache" /><link rel='stylesheet' type='text/css' href='https://app.supernovadigitalmkt.com/structure/styles/plugins/upload.css'/>
<link rel='stylesheet' type='text/css' href='https://app.supernovadigitalmkt.com/structure/styles/plugins/jquery-ui.css'/>
<link rel='stylesheet' type='text/css' href='https://app.supernovadigitalmkt.com/structure/styles/plugins/calendar.css'/>
<link rel='stylesheet' type='text/css' href='https://app.supernovadigitalmkt.com/structure/styles/plugins/ui-lightness/jquery-ui-1.7.2.custom.css'/>
<link rel='stylesheet' type='text/css' href='https://app.supernovadigitalmkt.com/template/css/sb-admin-2.min.css'/>
<link rel='stylesheet' type='text/css' href='https://app.supernovadigitalmkt.com/structure/styles/styles.css'/>
<link rel='stylesheet' type='text/css' href='https://app.supernovadigitalmkt.com/structure/styles/modern.css'/>
<script type='text/javascript' language='javaScript' src='https://app.supernovadigitalmkt.com/core/plugins/scripts/jquery/jquery-1.5.1.js'></script>
<script type='text/javascript' language='javaScript' src='https://app.supernovadigitalmkt.com/core/plugins/scripts/calendar.js'></script>
<script type='text/javascript' language='javaScript' src='https://app.supernovadigitalmkt.com/core/plugins/scripts/plugins-jquery/rsv/rsv.js'></script>
<script type='text/javascript' language='javaScript' src='https://app.supernovadigitalmkt.com/core/plugins/scripts/plugins-jquery/form/jquery.form.js'></script>
<script type='text/javascript' language='javaScript' src='https://app.supernovadigitalmkt.com/core/plugins/scripts/jquery/jquery-ui.js'></script>
<script type='text/javascript' language='javaScript' src='https://app.supernovadigitalmkt.com/core/plugins/scripts/jquery/ui/jquery.ui.core.js'></script>
<script type='text/javascript' language='javaScript' src='https://app.supernovadigitalmkt.com/core/plugins/scripts/jquery/ui/jquery.ui.widget.js'></script>
<script type='text/javascript' language='javaScript' src='https://app.supernovadigitalmkt.com/core/plugins/scripts/jquery/ui/jquery.ui.mouse.js'></script>
<script type='text/javascript' language='javaScript' src='https://app.supernovadigitalmkt.com/core/plugins/scripts/jquery/ui/jquery.ui.draggable.js'></script>
<script type='text/javascript' language='javaScript' src='https://app.supernovadigitalmkt.com/core/plugins/scripts/jquery/ui/jquery.ui.position.js'></script>
<script type='text/javascript' language='javaScript' src='https://app.supernovadigitalmkt.com/core/plugins/scripts/jquery/ui/jquery.ui.resizable.js'></script>
<script type='text/javascript' language='javaScript' src='https://app.supernovadigitalmkt.com/core/plugins/scripts/jquery/ui/jquery.click-calendario-1.0.js'></script>
<script type='text/javascript' language='javaScript' src='https://app.supernovadigitalmkt.com/core/plugins/scripts/jquery/ui/jquery.ui.maskedinput.js'></script>
<script type='text/javascript' language='javaScript' src='https://app.supernovadigitalmkt.com/core/plugins/scripts/jquery/ui/jquery.ui.priceformat.js'></script>
<script type='text/javascript' language='javaScript' src='https://app.supernovadigitalmkt.com/core/plugins/php/charts/Code/FusionCharts/FusionCharts.js'></script>
<script type='text/javascript' language='javaScript' src='https://app.supernovadigitalmkt.com/core/scripts/imprimir.js'></script>
<script type='text/javascript' language='javaScript' src='https://app.supernovadigitalmkt.com/core/scripts/interface.js'></script>
<script type='text/javascript' language='javaScript' src='https://app.supernovadigitalmkt.com/core/scripts/swfobject.js'></script>
<script type='text/javascript' language='javaScript' src='https://app.supernovadigitalmkt.com/core/scripts/validators.js'></script>
<script type='text/javascript' language='javaScript' src='https://app.supernovadigitalmkt.com/core/scripts/funcoes.js'></script>
<script type='text/javascript' language='javaScript' src='https://app.supernovadigitalmkt.com/core/scripts/ajax.js'></script>
<script type='text/javascript' language='javaScript' src='https://app.supernovadigitalmkt.com/core/scripts/ajaxUpload.js'></script>
<script type='text/javascript' language='javaScript' src='https://app.supernovadigitalmkt.com/core/scripts/ajaxUpload.js'></script>
<script type='text/javascript' language='javaScript' src='https://app.supernovadigitalmkt.com/core/scripts/formatadados.js'></script>
<script type='text/javascript' language='javaScript' src='https://app.supernovadigitalmkt.com/core/scripts/menu_drop_down.js'></script>
<script type='text/javascript' language='javaScript' src='https://app.supernovadigitalmkt.com/core/scripts/chat.js'></script>
<script type='text/javascript' language='javaScript' src='https://app.supernovadigitalmkt.com/system/scripts/validacao.js'></script>
<script type='text/javascript' language='javaScript' src='https://app.supernovadigitalmkt.com/system/scripts/ajax.js'></script>
<script type='text/javascript' language='javaScript' src='https://app.supernovadigitalmkt.com/structure/scripts/sn-i18n.js?v=1782925146'></script>

    <link href="template/vendor/fontawesome-free/css/all.min.css" rel="stylesheet" type="text/css">
    <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
</HEAD>
<BODY LEFTMARGIN='0' TOPMARGIN='0' MARGINWIDTH='0' MARGINHEIGHT='0' leftmargin='0' topmargin='0' marginwidth='0' marginheight='0' onLoad="menuBarInit();makeActiveInit();">
<div id="modalContent" style="display: none;background:#FFFFFF;">
  <div id="loaderModal" class="loaderModal"><img src="https://app.supernovadigitalmkt.com/structure/images/loader.gif" border="0">&nbsp;&nbsp;Carregando...<BR></div>
  
  <div id="modalDiv">
  <a href = "javascript:void(0)" onclick = "document.getElementById('modalContent').style.display='none';document.getElementById('fade').style.display='none'">Fechar</a>
  </div>
      
</div>
<div id="modal_over" style="display: none;background:#FFFFFF;"></div>    

<div id="loader">
  <div class="loader_interno">
    <div class="loader_icone">
      <img src="https://app.supernovadigitalmkt.com/structure/images/carregando.gif" border="0">
    </div>
    <div class="loader_texto"></div>
  </div>
</div>


<!-- Page Wrapper -->
<!-- Logo hover styles. Lifted out of the <ul> below — <style> as a
     direct child of <ul> is not valid HTML and triggers DOM repair in
     browsers, which can shift the whole sidebar/content layout. -->
<style>
  .sn-logo-link { transition: filter .25s ease, transform .25s ease; }
  .sn-logo-img  { transition: filter .25s ease, transform .25s ease; will-change: filter, transform; }
  .sn-logo-link:hover .sn-logo-img {
    filter: drop-shadow(0 0 12px rgba(255,255,255,0.45))
            drop-shadow(0 0 22px rgba(99,102,241,0.55));
    transform: scale(1.04);
  }
  .sn-logo-link:active .sn-logo-img { transform: scale(0.98); }
</style>

<div id="wrapper">

<!-- Sidebar -->
<ul class="navbar-nav bg-gradient-primary sidebar sidebar-dark accordion" id="accordionSidebar">

    <!-- Decorative cosmic backdrop (Supernova theme). Purely ornamental, sits
         behind the menu and ignores pointer events. Animations are paused for
         users with prefers-reduced-motion (see modern.css). -->
    <div class="sn-cosmos" aria-hidden="true">
        <div class="sn-stars"></div>
        <div class="sn-stars sn-stars2"></div>
        <div class="sn-nebula"></div>
        <div class="sn-shooting"></div>
    </div>

    <!-- Sidebar - Brand -->
    <a class="sidebar-brand d-flex align-items-center justify-content-center sn-logo-link" href="?">
        <img src="https://supernovadigitalmkt.com/assets/imgs/logo_supernova_small2.png" class="sn-logo-img" style="width:95%">
    </a>

    
          


</ul>
<!-- End of Sidebar -->

<!-- Content Wrapper -->
<div id="content-wrapper" class="d-flex flex-column">

<!-- Main Content -->
<div id="content">

<!-- Topbar -->
<nav class="navbar navbar-expand navbar-light bg-white topbar mb-4 static-top shadow">

    <!-- Sidebar Toggle (Topbar) -->
    <button id="sidebarToggleTop" class="btn btn-link d-md-none rounded-circle mr-3">
        <i class="fa fas fa-bars"></i>
    </button>

    <!-- Mobile-only centered brand -->
    <a class="topbar-brand-mobile d-md-none" href="?">
        <img src="https://supernovadigitalmkt.com/assets/imgs/logo_supernova.png" alt="Supernova">
    </a>

    <!-- Topbar Navbar -->
    <ul class="navbar-nav ml-auto">

        <!-- Nav Item - User Information -->
        <li class="nav-item dropdown no-arrow">

            

        </li>

    </ul>

</nav>
<!-- End of Topbar -->

<!-- Begin Page Content -->
<div class="container-fluid">

<div class="row" id="interno">

<style>
    :root {
        --sn-bg:           #0b1220;
        --sn-surface:      #ffffff;
        --sn-border:       #e5e7eb;
        --sn-text:         #0f172a;
        --sn-text-muted:   #64748b;
        --sn-accent:       #6366f1;
        --sn-accent-hover: #4f46e5;
        --sn-danger:       #ef4444;
        --sn-radius:       14px;
        --sn-radius-sm:    8px;
        --sn-font: 'Inter', 'Poppins', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
    }
    * { margin: 0; padding: 0; box-sizing: border-box; font-family: var(--sn-font) !important; }

    html, body { height: 100%; min-height: 100%; }
    body {
        margin: 0 !important;
        padding: 24px !important;
        min-height: 100vh;
        background:
            radial-gradient(1100px 600px at 12% -10%, rgba(99,102,241,0.30) 0%, transparent 55%),
            radial-gradient(900px 500px at 88% 110%, rgba(14,165,233,0.22) 0%, transparent 50%),
            radial-gradient(700px 400px at 50% 50%, rgba(168,85,247,0.10) 0%, transparent 60%),
            #070b16 !important;
        background-image: none, none, none, none !important;
        color: var(--sn-text);
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
        display: flex !important;
        flex-direction: column !important;
        justify-content: center !important;
        align-items: center !important;
        overflow-x: hidden;
    }

    /* Hide legacy admin chrome on the login screen */
    #accordionSidebar, .navbar, .sticky-footer, .topbar-brand-mobile,
    #modalContent, #modal_over, #loader { display: none !important; }

    /* Flatten the admin wrapper chain so .login-shell centers directly in <body>.
       display:contents makes the wrapper boxes invisible to layout while keeping
       their children — kills the nested 100vh + padding pile-up that was
       causing the inner scrollbar. */
    #wrapper, #content-wrapper, #content, .container-fluid, #interno, .row {
        display: contents !important;
        background: transparent !important;
        box-shadow: none !important;
        border: 0 !important;
        margin: 0 !important;
        padding: 0 !important;
    }

    /* Decorative glow ring behind the card */
    .login-shell {
        position: relative;
        width: 100%;
        max-width: 400px;
        animation: snRise 480ms cubic-bezier(0.2, 0.8, 0.2, 1) both;
    }
    .login-shell::before {
        content: "";
        position: absolute;
        inset: -24px;
        border-radius: calc(var(--sn-radius) + 12px);
        background:
            radial-gradient(60% 70% at 50% 0%, rgba(99,102,241,0.45) 0%, transparent 70%),
            radial-gradient(50% 60% at 100% 100%, rgba(14,165,233,0.30) 0%, transparent 70%);
        filter: blur(28px);
        opacity: 0.65;
        z-index: 0;
        pointer-events: none;
    }

    .login-card {
        position: relative;
        z-index: 1;
        background: var(--sn-surface);
        border: 1px solid rgba(255,255,255,0.10);
        border-radius: var(--sn-radius);
        box-shadow:
            0 24px 60px rgba(2, 6, 23, 0.55),
            0 1px 0 rgba(255,255,255,0.06) inset;
        padding: 24px 30px 26px;
        text-align: left;
    }

    .login-brand {
        display: flex;
        justify-content: center;
        margin: 0 0 14px;
    }
    .login-brand img {
        /* The source PNG (logo-new-orig-white) is a 1563x1563 SQUARE with the
           logo in a horizontal band in the vertical middle and large transparent
           padding top/bottom. Crop to that band via aspect-ratio + object-fit so
           the card isn't mostly empty space above/below the logo. */
        width: 84%;
        max-width: 320px;
        aspect-ratio: 1422 / 484;
        object-fit: cover;
        object-position: center 46%;
        opacity: 0.96;
    }

    .login-card h1 {
        color: var(--sn-text);
        margin: 0 0 6px;
        font-size: 22px;
        font-weight: 600;
        letter-spacing: -0.015em;
        text-align: center;
    }
    .login-subtitle {
        color: var(--sn-text-muted);
        font-size: 13.5px;
        margin: 0 0 24px;
        text-align: center;
    }

    .error-message {
        color: var(--sn-danger);
        background: #fef2f2;
        border: 1px solid #fecaca;
        font-size: 13px;
        padding: 9px 12px;
        border-radius: var(--sn-radius-sm);
        margin: 0 0 16px;
    }
    .error-message:empty,
    .error-message b:empty,
    .error-message:has(b:empty) { display: none; }

    .form-group { margin-bottom: 14px; text-align: left; }
    label {
        display: block;
        margin-bottom: 6px;
        color: var(--sn-text);
        font-size: 12.5px;
        font-weight: 500;
        letter-spacing: 0.005em;
    }
    input[type="text"],
    input[type="password"],
    input[type="email"] {
        width: 100%;
        padding: 11px 13px;
        border: 1px solid var(--sn-border);
        border-radius: var(--sn-radius-sm);
        font-size: 14px;
        color: var(--sn-text);
        background: #fff;
        transition: border-color 120ms ease, box-shadow 120ms ease;
        outline: none;
    }
    input[type="text"]:focus,
    input[type="password"]:focus,
    input[type="email"]:focus {
        border-color: var(--sn-accent);
        box-shadow: 0 0 0 3px rgba(99,102,241,0.18);
    }

    input[type="submit"] {
        background: var(--sn-accent);
        color: #fff;
        border: 1px solid var(--sn-accent);
        border-radius: var(--sn-radius-sm);
        padding: 12px;
        cursor: pointer;
        font-size: 14px;
        font-weight: 600;
        letter-spacing: 0.005em;
        width: 100%;
        margin-top: 10px;
        transition: background 120ms ease, border-color 120ms ease, transform 80ms ease;
    }
    input[type="submit"]:hover {
        background: var(--sn-accent-hover);
        border-color: var(--sn-accent-hover);
    }
    input[type="submit"]:active { transform: translateY(1px); }
    input[type="submit"]:focus { box-shadow: 0 0 0 3px rgba(99,102,241,0.30); outline: none; }

    .login-divider {
        display: flex;
        align-items: center;
        gap: 12px;
        margin: 20px 0 14px;
        color: var(--sn-text-muted);
        font-size: 12px;
    }
    .login-divider::before,
    .login-divider::after {
        content: "";
        flex: 1;
        height: 1px;
        background: var(--sn-border);
    }

    .login-toggle {
        text-align: center;
        font-size: 13.5px;
        color: var(--sn-text-muted);
    }
    .login-toggle a {
        color: var(--sn-accent);
        text-decoration: none;
        font-weight: 500;
        margin-left: 4px;
    }
    .login-toggle a:hover { color: var(--sn-accent-hover); text-decoration: underline; }

    .login-meta {
        margin: 18px auto 0;
        max-width: 420px;
        text-align: center;
        font-size: 12px;
        color: rgba(203, 213, 225, 0.55);
        position: relative;
        z-index: 1;
    }
    .login-meta a { color: rgba(203, 213, 225, 0.85); text-decoration: none; }
    .login-meta a:hover { color: #fff; }

    /* ---- Install-as-app helper (PWA / add to home screen) ---- */
    .login-install {
        position: relative; z-index: 1;
        width: 100%; max-width: 400px;
        margin: 14px auto 0; text-align: center;
    }
    .login-install-toggle {
        background: rgba(255,255,255,0.06);
        border: 1px solid rgba(255,255,255,0.12);
        color: #cbd5e1;
        border-radius: 10px;
        padding: 9px 14px;
        font-size: 13px; font-weight: 500;
        cursor: pointer;
        transition: background 150ms ease, border-color 150ms ease, color 150ms ease;
    }
    .login-install-toggle:hover { background: rgba(255,255,255,0.10); border-color: rgba(255,255,255,0.22); color: #fff; }
    .login-install-panel {
        display: none;
        margin-top: 10px;
        background: rgba(15,23,42,0.55);
        border: 1px solid rgba(255,255,255,0.10);
        border-radius: 12px;
        padding: 14px 16px;
        text-align: left;
        -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
        animation: snRise 240ms ease both;
    }
    .login-install-panel.open { display: block; }
    .login-install-intro { color: #cbd5e1; font-size: 12.5px; line-height: 1.45; margin: 0 0 12px; }
    .login-install-btn {
        display: block; width: 100%;
        background: var(--sn-accent); color: #fff; border: none;
        border-radius: 8px; padding: 10px; font-size: 13.5px; font-weight: 600;
        cursor: pointer; margin: 0 0 12px;
        transition: background 120ms ease;
    }
    .login-install-btn:hover { background: var(--sn-accent-hover); }
    .login-install-row { display: flex; gap: 10px; padding: 9px 0; border-top: 1px solid rgba(255,255,255,0.07); }
    .login-install-row:first-of-type { border-top: none; }
    .login-install-os { flex: 0 0 88px; color: #fff; font-weight: 600; font-size: 12px; }
    .login-install-step { flex: 1; color: #94a3b8; font-size: 12px; line-height: 1.45; }
    .login-install-row.sn-current { background: rgba(99,102,241,0.12); border-radius: 8px; margin: 0 -8px; padding: 9px 8px; }
    .login-install-row.sn-current .login-install-step { color: #c7d2fe; }

    /* ---- Impactful cosmic background ---------------------------------------- */
    .login-bg { position: fixed; inset: 0; z-index: 0; overflow: hidden; pointer-events: none; }

    /* Slow-drifting aurora / nebula blobs give the page life and depth. */
    .login-bg-aurora {
        position: absolute; inset: -25%;
        background:
            radial-gradient(38% 48% at 20% 25%, rgba(99,102,241,0.55), transparent 60%),
            radial-gradient(34% 44% at 82% 18%, rgba(14,165,233,0.40), transparent 60%),
            radial-gradient(44% 50% at 72% 84%, rgba(168,85,247,0.42), transparent 60%),
            radial-gradient(32% 40% at 12% 82%, rgba(56,189,248,0.30), transparent 60%);
        filter: blur(64px);
        animation: snAurora 24s ease-in-out infinite alternate;
        will-change: transform;
    }
    @keyframes snAurora {
        0%   { transform: translate(0, 0) scale(1) rotate(0deg); }
        50%  { transform: translate(2.5%, -2%) scale(1.10) rotate(2deg); }
        100% { transform: translate(-2.5%, 2.5%) scale(1.05) rotate(-2deg); }
    }

    /* Two parallax star layers (tiled radial-gradients), drifting + twinkling. */
    .login-bg-stars {
        position: absolute; top: 0; left: 0; right: 0; height: 200%;
        background-repeat: repeat;
        background-image:
            radial-gradient(1px 1px at 24px 40px,  rgba(255,255,255,.9),  transparent),
            radial-gradient(1px 1px at 120px 90px, rgba(199,210,254,.8),  transparent),
            radial-gradient(1px 1px at 200px 160px,rgba(255,255,255,.7),  transparent),
            radial-gradient(1.5px 1.5px at 80px 220px, rgba(255,255,255,.95), transparent),
            radial-gradient(1px 1px at 300px 60px, rgba(165,180,252,.75), transparent);
        background-size: 320px 320px;
        animation: snStarDrift 120s linear infinite, snStarTwinkle 7s ease-in-out infinite;
        will-change: transform, opacity;
    }
    .login-bg-stars.two {
        background-size: 240px 240px; filter: blur(.3px); opacity: .5;
        animation: snStarDrift2 80s linear infinite, snStarTwinkle 9s ease-in-out infinite reverse;
    }
    @keyframes snStarDrift  { from { transform: translateY(0); } to { transform: translateY(-320px); } }
    @keyframes snStarDrift2 { from { transform: translateY(0); } to { transform: translateY(-240px); } }
    @keyframes snStarTwinkle { 0%,100% { opacity: .5; } 50% { opacity: .85; } }

    /* Occasional shooting stars crossing the sky. */
    .login-bg-shoot {
        position: absolute; width: 120px; height: 2px;
        background: linear-gradient(90deg, rgba(255,255,255,0), rgba(255,255,255,.95));
        border-radius: 2px; opacity: 0;
    }
    .login-bg-shoot.s1 { top: 16%; left: -12%; animation: snShoot 9s ease-in 2s infinite; }
    .login-bg-shoot.s2 { top: 40%; left: -12%; animation: snShoot 13s ease-in 6s infinite; }
    @keyframes snShoot {
        0%   { opacity: 0; transform: translate(0, 0) rotate(20deg); }
        2%   { opacity: 1; }
        12%  { opacity: 1; }
        18%  { opacity: 0; transform: translate(64vw, 26vh) rotate(20deg); }
        100% { opacity: 0; transform: translate(64vw, 26vh) rotate(20deg); }
    }

    @media (prefers-reduced-motion: reduce) {
        .login-bg-aurora, .login-bg-stars, .login-bg-shoot { animation: none !important; }
        .login-bg-shoot { display: none; }
    }

    @keyframes snRise {
        from { opacity: 0; transform: translateY(8px) scale(0.985); }
        to   { opacity: 1; transform: translateY(0) scale(1); }
    }

    @media (max-width: 480px) {
        body { padding: 16px; }
        .login-card { padding: 28px 22px 22px; border-radius: 12px; }
        .login-brand img { width: 210px; }
        .login-card h1 { font-size: 20px; }
        input[type="text"],
        input[type="password"],
        input[type="email"] { padding: 13px; font-size: 16px; }
        .login-shell::before { inset: -14px; filter: blur(22px); }
    }

    #login-form  { display: block; }
    #signup-form { display: none; }
</style>

<div class="login-bg" aria-hidden="true">
  <div class="login-bg-aurora"></div>
  <div class="login-bg-stars"></div>
  <div class="login-bg-stars two"></div>
  <div class="login-bg-shoot s1"></div>
  <div class="login-bg-shoot s2"></div>
</div>

<div class="login-shell">
  <div class="login-card">
    <div class="login-lang" style="position:absolute;top:12px;right:14px;font-size:12px;z-index:2;">
      <a href="javascript:void(0)" id="snLangEs" onclick="snSetLang('es')" style="color:#94a3b8;text-decoration:none;">ES</a>
      <span style="color:#cbd5e1;">|</span>
      <a href="javascript:void(0)" id="snLangPt" onclick="snSetLang('pt')" style="color:#94a3b8;text-decoration:none;">PT</a>
      <span style="color:#cbd5e1;">|</span>
      <a href="javascript:void(0)" id="snLangEn" onclick="snSetLang('en')" style="color:#94a3b8;text-decoration:none;">EN</a>
    </div>
    <div class="login-brand">
      <img src="https://supernovadigitalmkt.com/assets/imgs/logo-new-orig-white.png" alt="Supernova">
    </div>

    <div id="login-form">
      <h1>Iniciar sesión</h1>
      <p class="login-subtitle">Accede a tu panel de Supernova.</p>

      <form name="form" method="POST" action="https://app.supernovadigitalmkt.com/?on=login">
        <div class="error-message"><b></b></div>

        <div class="form-group">
          <label for="username">Usuario</label>
          <input name="username" type="text" id="username" value="" autocomplete="username" autofocus />
        </div>

        <div class="form-group">
          <label for="senha">Contraseña</label>
          <input name="senha" type="password" id="senha" autocomplete="current-password" />
        </div>

        <input name="Logar" value="Entrar" type="submit" />

        <div class="login-divider">o</div>

        <div class="login-toggle">
          ¿No tienes cuenta?
          <a href="javascript:void(0)" onClick="$('#login-form').hide(); $('#signup-form').show();">Crear mi cuenta</a>
        </div>
      </form>
    </div>

    <div id="signup-form">
      <h1>Crear cuenta</h1>
      <p class="login-subtitle">Empieza a usar Supernova en menos de un minuto.</p>

      <form name="form" method="POST" action="https://app.supernovadigitalmkt.com/?on=login&in=signup">
        <div class="error-message"><b></b></div>

        <div class="form-group">
          <label for="name">Nombre completo</label>
          <input name="name" type="text" id="name" value="" autocomplete="name" />
        </div>

        <div class="form-group">
          <label for="username">E-mail</label>
          <input name="username" type="text" id="username" value="" autocomplete="email" />
        </div>

        <div class="form-group">
          <label for="senha">Contraseña</label>
          <input name="senha" type="password" id="senha" autocomplete="new-password" />
        </div>

        <input name="Logar" value="Crear cuenta" type="submit" />

        <div class="login-divider">o</div>

        <div class="login-toggle">
          ¿Ya tienes cuenta?
          <a href="javascript:void(0)" onClick="$('#signup-form').hide(); $('#login-form').show();">Volver a iniciar sesión</a>
        </div>
      </form>
    </div>
  </div>

  <div class="login-install">
    <button type="button" class="login-install-toggle" onclick="snToggleInstall()">📲 Instalar la app</button>
    <div class="login-install-panel" id="sn-install-panel">
      <p class="login-install-intro">Añade Supernova a tu pantalla de inicio para abrirla como una app.</p>
      <button type="button" class="login-install-btn" id="sn-install-now" style="display:none" onclick="snDoInstall()">Instalar ahora</button>
      <div class="login-install-row" data-os="ios">
        <div class="login-install-os">iPhone / iPad</div>
        <div class="login-install-step">Pulsa Compartir y luego Añadir a pantalla de inicio.</div>
      </div>
      <div class="login-install-row" data-os="android">
        <div class="login-install-os">Android</div>
        <div class="login-install-step">Abre el menú del navegador y pulsa Instalar app o Añadir a pantalla de inicio.</div>
      </div>
      <div class="login-install-row" data-os="desktop">
        <div class="login-install-os">Ordenador</div>
        <div class="login-install-step">Pulsa el icono Instalar en la barra de direcciones.</div>
      </div>
    </div>
  </div>

  <div class="login-meta">
    &copy; Supernova Digital
  </div>
</div>

<script>
  // Language selector for the logged-out login/signup page. The translation
  // overlay (sn-i18n.js) is already loaded via the shell and reads the sn_lang
  // cookie; here we just let the visitor set it. Default Spanish (no conta yet).
  // Auto-detect language from the browser when the visitor hasn't chosen one.
  // navigator.language reflects language intent better than geo-IP and needs no
  // external service. Only sets the soft default (SN_LANG_DEFAULT, read by the
  // overlay) — no cookie — so the account's configured default still wins after
  // login. The visitor can override via the ES/PT/EN switch (which sets the cookie).
  (function () {
    var m = (document.cookie || '').match(/(?:^|;\s*)sn_lang=(es|pt|en)/);
    if (m) { window.SN_LANG_DEFAULT = m[1]; return; }
    var nav = (navigator.language || navigator.userLanguage || '').toLowerCase();
    window.SN_LANG_DEFAULT = nav.indexOf('pt') === 0 ? 'pt' : (nav.indexOf('en') === 0 ? 'en' : 'es');
  })();
  if (!window.snSetLang) {
    window.snSetLang = function (l) {
      document.cookie = 'sn_lang=' + l + ';path=/;max-age=31536000';
      window.location.reload();
    };
  }
  // Highlight the active option (cookie > detected browser language > es).
  (function () {
    var lang = window.SN_LANG_DEFAULT || 'es';
    var el = document.getElementById({ es: 'snLangEs', pt: 'snLangPt', en: 'snLangEn' }[lang]);
    if (el) { el.style.fontWeight = '700'; el.style.color = '#6366f1'; }
  })();

  // ---- Install as app (PWA / Add to Home Screen) ----------------------------
  window.snToggleInstall = function () {
    var p = document.getElementById('sn-install-panel');
    if (p) p.classList.toggle('open');
  };
  (function () {
    // Highlight the row for the visitor's platform. iPadOS 13+ reports as
    // Macintosh + touch, so treat that as iOS.
    var ua = (navigator.userAgent || '').toLowerCase();
    var os = (/iphone|ipad|ipod/.test(ua) || (/macintosh/.test(ua) && 'ontouchend' in document)) ? 'ios'
           : (/android/.test(ua) ? 'android' : 'desktop');
    var row = document.querySelector('.login-install-row[data-os="' + os + '"]');
    if (row) row.classList.add('sn-current');

    // Native install prompt — only fires when the browser deems the app
    // installable (needs a web manifest). Until then only the manual steps show.
    window.__snDeferredPrompt = null;
    window.addEventListener('beforeinstallprompt', function (e) {
      e.preventDefault();
      window.__snDeferredPrompt = e;
      var b = document.getElementById('sn-install-now');
      if (b) b.style.display = 'block';
      var p = document.getElementById('sn-install-panel');
      if (p) p.classList.add('open');
    });
    window.snDoInstall = function () {
      var e = window.__snDeferredPrompt;
      if (!e) return;
      e.prompt();
      var done = function () {
        window.__snDeferredPrompt = null;
        var b = document.getElementById('sn-install-now');
        if (b) b.style.display = 'none';
      };
      if (e.userChoice && e.userChoice.then) e.userChoice.then(done, done); else done();
    };
  })();
</script>

</div>

</div>
<!-- /.container-fluid -->

</div>
<!-- End of Main Content -->

<!-- Footer -->
<footer class="sticky-footer bg-white">
    <div class="container my-auto">
        <div class="copyright text-center my-auto">
            <span>Copyright &copy; Supernova</span>
        </div>
    </div>
</footer>
<!-- End of Footer -->

</div>
<!-- End of Content Wrapper -->

</div>
<!-- End of Page Wrapper -->




<!-- Bootstrap core JavaScript-->
<script src="template/vendor/jquery/jquery.min.js"></script>
<script src="template/vendor/bootstrap/js/bootstrap.bundle.min.js"></script>

<!-- Core plugin JavaScript-->
<script src="template/vendor/jquery-easing/jquery.easing.min.js"></script>

<!-- Custom scripts for all pages-->
<script src="template/js/sb-admin-2.min.js"></script>

<!-- Modern overlay: close mobile drawer when tapping outside -->
<script>
(function() {
  var mql = window.matchMedia('(max-width: 767.98px)');

  // On mobile, .toggled means OPEN (off-canvas drawer). SB Admin 2's resize
  // handler adds .toggled whenever the viewport drops below 480px — which
  // happens both on initial load AND whenever the mobile keyboard pops up
  // after focusing an input. We track user intent and strip any .toggled
  // that wasn't user-initiated.
  var userOpened = false;

  function forceClosedOnMobile() {
    if (!mql.matches) return;
    if (userOpened) return;
    var sb = document.getElementById('accordionSidebar');
    if (sb) sb.classList.remove('toggled');
    document.body.classList.remove('sidebar-toggled');
  }
  // Initial load: wait one tick so SB Admin 2's resize handler has finished.
  if (document.readyState !== 'loading') {
    setTimeout(forceClosedOnMobile, 0);
  } else {
    document.addEventListener('DOMContentLoaded', function() {
      setTimeout(forceClosedOnMobile, 0);
    });
  }

  // Track user intent: the hamburger toggles the drawer.
  document.addEventListener('click', function(e) {
    var toggleBtn = document.getElementById('sidebarToggleTop');
    if (!toggleBtn || !toggleBtn.contains(e.target)) return;
    // Read after SB Admin 2's own click handler has flipped the class.
    setTimeout(function() {
      var sb = document.getElementById('accordionSidebar');
      userOpened = !!(sb && sb.classList.contains('toggled'));
    }, 0);
  }, true);

  // Resize fires when the mobile keyboard opens/closes. Re-strip any
  // .toggled that SB Admin 2's <480px resize handler may have added,
  // unless the user opened the drawer themselves.
  window.addEventListener('resize', function() {
    setTimeout(forceClosedOnMobile, 0);
  });
  // visualViewport is the reliable signal for keyboard show/hide on iOS.
  if (window.visualViewport) {
    window.visualViewport.addEventListener('resize', function() {
      setTimeout(forceClosedOnMobile, 0);
    });
  }

  function maybeClose(e) {
    if (!mql.matches) return;
    var sidebar = document.getElementById('accordionSidebar');
    if (!sidebar || !sidebar.classList.contains('toggled')) return;
    var target = e.target;
    if (sidebar.contains(target)) return;
    var toggleBtn = document.getElementById('sidebarToggleTop');
    if (toggleBtn && toggleBtn.contains(target)) return;
    sidebar.classList.remove('toggled');
    document.body.classList.remove('sidebar-toggled');
    userOpened = false;
  }
  // Capture phase so we run before any inner stopPropagation handlers.
  document.addEventListener('click', maybeClose, true);
  document.addEventListener('touchstart', maybeClose, { capture: true, passive: true });
  // Close on Escape too.
  document.addEventListener('keydown', function(e) {
    if (e.key === 'Escape') maybeClose(e);
  });
})();
</script>

<!-- Sidebar current-section highlight. Navigation is AJAX (getPage into
     #interno) and the URL never changes, so we cannot rely on the server or
     :focus. We hook getPage and mark the menu link whose ?on= matches the
     loaded section. Covers sidebar clicks, dashboard quicklinks, and the
     server-rendered dashboard landing. Style: .sn-current in modern.css. -->
<script>
(function() {
  function onFromString(s) {
    var m = /[?&]on=([^&'"]+)/.exec(s || '');
    return m ? decodeURIComponent(m[1]) : '';
  }
  function linkOn(a) {
    return onFromString(a.getAttribute('onclick') || a.getAttribute('href') || '');
  }
  function allLinks() { return document.querySelectorAll('#accordionSidebar .nav-link'); }
  function markLink(a) {
    var links = allLinks();
    for (var i = 0; i < links.length; i++) links[i].classList.remove('sn-current');
    if (a) a.classList.add('sn-current');
  }
  // Match by ?on= for programmatic navigation (dashboard quicklinks, initial
  // load). Only MOVES the highlight when it resolves to a real menu item, so
  // clicking a row/button inside a module keeps the section marked. The initial
  // full-page load always seeds a selection (Dashboard).
  function markByOn(on, isInit) {
    if (on === '' || on === 'capa' || on === 'login') on = 'cadastro_dashboard';
    var links = allLinks(), match = null;
    for (var i = 0; i < links.length; i++) {
      if (linkOn(links[i]) === on) { match = links[i]; break; }
    }
    if (!match && !isInit) return;
    markLink(match);
  }
  window.snSetCurrentMenu = markByOn;

  // A sidebar click is authoritative: highlight the EXACT link clicked, even
  // when two items share the same ?on= (e.g. Agentes and Mensageria are both
  // cadastro_chatbotwa, so matching by ?on= alone always picked the first one,
  // Agentes). Capture phase runs before the link's inline getPage(); the flag
  // tells the getPage hook below to stand down for this click.
  var fromSidebar = false;
  document.addEventListener('click', function(ev) {
    var t = ev.target;
    if (!t || !t.closest) return;
    var a = t.closest('#accordionSidebar .nav-link');
    if (!a) return;
    fromSidebar = true;
    markLink(a);
    setTimeout(function() { fromSidebar = false; }, 0);
  }, true);

  // Hook getPage so non-sidebar navigation (quicklinks) moves the highlight.
  if (typeof window.getPage === 'function') {
    var orig = window.getPage;
    window.getPage = function(page, dest, menu, onload) {
      var r = orig.apply(this, arguments);
      try { if ((!dest || dest === 'interno') && !fromSidebar) markByOn(onFromString(page), false); } catch (e) {}
      return r;
    };
  }

  // Full page refresh: read the section from the URL, default to Dashboard.
  function init() { markByOn(onFromString(window.location.search), true); }
  if (document.readyState !== 'loading') init();
  else document.addEventListener('DOMContentLoaded', init);
})();
</script>
</BODY>
</HTML>
