فهرست منبع

Commit inicial

Alejandro Rosales 1 سال پیش
کامیت
ff7d678844
100فایلهای تغییر یافته به همراه3623 افزوده شده و 0 حذف شده
  1. 40 0
      action/action_login.php
  2. 74 0
      class/Mailer.php
  3. 74 0
      class/c_logasistencia.php
  4. 114 0
      class/c_login.php
  5. 15 0
      class/c_menu.php
  6. 57 0
      class/connection.php
  7. 7 0
      composer.json
  8. 594 0
      composer.lock
  9. BIN
      css/bg-progress-bar.png
  10. 0 0
      css/bootstrap-ulsa.min.css
  11. 39 0
      css/calendar.css
  12. 46 0
      css/checador.css
  13. BIN
      css/cif-icons-20xy.png
  14. 143 0
      css/clockpicker.css
  15. 9 0
      css/custominputfile.min.css
  16. 4 0
      css/fa_all.css
  17. BIN
      css/images/ui-icons_444444_256x240.png
  18. BIN
      css/images/ui-icons_555555_256x240.png
  19. BIN
      css/images/ui-icons_777620_256x240.png
  20. BIN
      css/images/ui-icons_777777_256x240.png
  21. BIN
      css/images/ui-icons_cc0000_256x240.png
  22. BIN
      css/images/ui-icons_ffffff_256x240.png
  23. 30 0
      css/index.css
  24. 268 0
      css/indivisa.css
  25. 3 0
      css/jquery-ui.css
  26. 105 0
      css/lasalle.css
  27. 190 0
      css/richtext.css
  28. 1074 0
      css/sgi.css
  29. 99 0
      css/style.css
  30. 142 0
      css/toggle.css
  31. BIN
      fonts/fa/fa-brands-400.eot
  32. 22 0
      fonts/fa/fa-brands-400.svg
  33. BIN
      fonts/fa/fa-brands-400.ttf
  34. BIN
      fonts/fa/fa-brands-400.woff
  35. BIN
      fonts/fa/fa-brands-400.woff2
  36. BIN
      fonts/fa/fa-regular-400.eot
  37. 265 0
      fonts/fa/fa-regular-400.svg
  38. BIN
      fonts/fa/fa-regular-400.ttf
  39. BIN
      fonts/fa/fa-regular-400.woff
  40. BIN
      fonts/fa/fa-regular-400.woff2
  41. BIN
      fonts/fa/fa-solid-900.eot
  42. 46 0
      fonts/fa/fa-solid-900.svg
  43. BIN
      fonts/fa/fa-solid-900.ttf
  44. BIN
      fonts/fa/fa-solid-900.woff
  45. BIN
      fonts/fa/fa-solid-900.woff2
  46. BIN
      fonts/indivisaFont/eot/IndivisaDisplaySans-Heavy.eot
  47. BIN
      fonts/indivisaFont/eot/IndivisaDisplaySans-HeavyItalic.eot
  48. BIN
      fonts/indivisaFont/eot/IndivisaDisplaySans-Regular.eot
  49. BIN
      fonts/indivisaFont/eot/IndivisaDisplaySans-RegularItalic.eot
  50. BIN
      fonts/indivisaFont/eot/IndivisaDisplaySans-Thin.eot
  51. BIN
      fonts/indivisaFont/eot/IndivisaDisplaySans-ThinItalic.eot
  52. BIN
      fonts/indivisaFont/eot/IndivisaDisplaySerif-RegularItalic.eot
  53. BIN
      fonts/indivisaFont/eot/IndivisaTextSans-Black.eot
  54. BIN
      fonts/indivisaFont/eot/IndivisaTextSans-BlackItalic.eot
  55. BIN
      fonts/indivisaFont/eot/IndivisaTextSans-Bold.eot
  56. BIN
      fonts/indivisaFont/eot/IndivisaTextSans-BoldItalic.eot
  57. BIN
      fonts/indivisaFont/eot/IndivisaTextSans-Light.eot
  58. BIN
      fonts/indivisaFont/eot/IndivisaTextSans-LightItalic.eot
  59. BIN
      fonts/indivisaFont/eot/IndivisaTextSans-Regular.eot
  60. BIN
      fonts/indivisaFont/eot/IndivisaTextSans-RegularItalic.eot
  61. BIN
      fonts/indivisaFont/otf/IndivisaDisplaySans-Heavy.otf
  62. BIN
      fonts/indivisaFont/otf/IndivisaDisplaySans-HeavyItalic.otf
  63. BIN
      fonts/indivisaFont/otf/IndivisaDisplaySans-Regular.otf
  64. BIN
      fonts/indivisaFont/otf/IndivisaDisplaySans-RegularItalic.otf
  65. BIN
      fonts/indivisaFont/otf/IndivisaDisplaySans-Thin.otf
  66. BIN
      fonts/indivisaFont/otf/IndivisaDisplaySans-ThinItalic.otf
  67. BIN
      fonts/indivisaFont/otf/IndivisaDisplaySerif-RegularItalic.otf
  68. BIN
      fonts/indivisaFont/otf/IndivisaTextSans-Black.otf
  69. BIN
      fonts/indivisaFont/otf/IndivisaTextSans-BlackItalic.otf
  70. BIN
      fonts/indivisaFont/otf/IndivisaTextSans-Bold.otf
  71. BIN
      fonts/indivisaFont/otf/IndivisaTextSans-BoldItalic.otf
  72. BIN
      fonts/indivisaFont/otf/IndivisaTextSans-Light.otf
  73. BIN
      fonts/indivisaFont/otf/IndivisaTextSans-LightItalic.otf
  74. BIN
      fonts/indivisaFont/otf/IndivisaTextSans-Regular.otf
  75. BIN
      fonts/indivisaFont/otf/IndivisaTextSans-RegularItalic.otf
  76. 10 0
      fonts/indivisaFont/svg/IndivisaDisplaySans-Heavy.svg
  77. 10 0
      fonts/indivisaFont/svg/IndivisaDisplaySans-HeavyItalic.svg
  78. 10 0
      fonts/indivisaFont/svg/IndivisaDisplaySans-Regular.svg
  79. 10 0
      fonts/indivisaFont/svg/IndivisaDisplaySans-RegularItalic.svg
  80. 10 0
      fonts/indivisaFont/svg/IndivisaDisplaySans-Thin.svg
  81. 10 0
      fonts/indivisaFont/svg/IndivisaDisplaySans-ThinItalic.svg
  82. 15 0
      fonts/indivisaFont/svg/IndivisaDisplaySerif-RegularItalic.svg
  83. 11 0
      fonts/indivisaFont/svg/IndivisaTextSans-Black.svg
  84. 11 0
      fonts/indivisaFont/svg/IndivisaTextSans-BlackItalic.svg
  85. 11 0
      fonts/indivisaFont/svg/IndivisaTextSans-Bold.svg
  86. 11 0
      fonts/indivisaFont/svg/IndivisaTextSans-BoldItalic.svg
  87. 11 0
      fonts/indivisaFont/svg/IndivisaTextSans-Light.svg
  88. 11 0
      fonts/indivisaFont/svg/IndivisaTextSans-LightItalic.svg
  89. 11 0
      fonts/indivisaFont/svg/IndivisaTextSans-Regular.svg
  90. 11 0
      fonts/indivisaFont/svg/IndivisaTextSans-RegularItalic.svg
  91. BIN
      fonts/indivisaFont/ttf/IndivisaDisplaySans-Heavy.ttf
  92. BIN
      fonts/indivisaFont/ttf/IndivisaDisplaySans-HeavyItalic.ttf
  93. BIN
      fonts/indivisaFont/ttf/IndivisaDisplaySans-Regular.ttf
  94. BIN
      fonts/indivisaFont/ttf/IndivisaDisplaySans-RegularItalic.ttf
  95. BIN
      fonts/indivisaFont/ttf/IndivisaDisplaySans-Thin.ttf
  96. BIN
      fonts/indivisaFont/ttf/IndivisaDisplaySans-ThinItalic.ttf
  97. BIN
      fonts/indivisaFont/ttf/IndivisaDisplaySerif-RegularItalic.ttf
  98. BIN
      fonts/indivisaFont/ttf/IndivisaTextSans-Black.ttf
  99. BIN
      fonts/indivisaFont/ttf/IndivisaTextSans-BlackItalic.ttf
  100. BIN
      fonts/indivisaFont/ttf/IndivisaTextSans-Bold.ttf

+ 40 - 0
action/action_login.php

@@ -0,0 +1,40 @@
+<?php
+/* 
+ * Valida usuario con la BD y devuelve contraseña para validar con PHP
+ * 
+ * Recibe:
+ *  POST: usuario, password
+ * 
+ * Error:
+ *  0 - No se recibieron datos
+ *  1 - Usuario/Contraseña incorrectos
+ *  2 - Usuario no esta en BD
+ *  3 - No existe usuario
+ * 
+ * Success:
+ *  Redirecciona a inicio.php
+ */
+include_once "../include/nocache.php"; //continue on error
+$ruta = "../";
+require_once "../include/bd_pdo.php"; //die on error
+require_once "../class/c_login.php";
+require_once "../include/util.php";
+
+if (!isset($_POST["username"]) || !isset($_POST["passwd"]))
+    die(header("Location: ../index.php?error=0"));
+
+$usr = trim(filter_input(INPUT_POST, "username")); //limpia texto
+$pass = $_POST["passwd"];
+
+$user = Login::validUser($usr, $pass);
+
+if (is_array($user)) {
+    $_SESSION['error'] = true;
+    $params = http_build_query($user);
+    header("Location: ../index.php?$params");
+} else {
+    $_SESSION['user'] = serialize($user);
+    header("Location: ../main.php");
+}
+
+exit;

+ 74 - 0
class/Mailer.php

@@ -0,0 +1,74 @@
+<?php
+//https://github.com/PHPMailer/PHPMailer
+//require_once('../include/phpmailer/PHPMailerAutoload.php');
+
+class Mailer{
+    private const FROM = "info.ingenieria@lasalle.mx";
+    private const FROM_NAME = "Ingeniería Informa";
+    private const FROM_PASS = "BDp71Fp8";
+    private const FOOTER = "<p style='margin-top:4em; color:#aaa;'><small>Este es un correo automático, esta cuenta no recibe correos.<small></p>";
+    
+
+    /**
+     * Función estática para mandar correos. Los destinatarios pueden ser arreglo o cadena separada por ; incluir: include/phpmailer/PHPMailerAutoload.php
+     * 
+     * @param array|string $lista_to El destinatario o lista de destinatarios. Puede ser un arreglo de direcciones de correo electrónico o una cadena de texto con direcciones de correo separadas por ;.
+     * @param string $asunto El asunto del correo.
+     * @param string $texto El cuerpo del mensaje del correo en HTML.
+     * @param bool $bcc Indica si se debe enviar el correo como copia oculta (true) o no (false). Valor por defecto: false.
+     *
+     * @return bool True si el correo se envió exitosamente, false en caso contrario.
+     */
+    public static function enviarCorreo($lista_to, $asunto, $texto_html, $bcc = false){
+        try{
+            //SMTP Settings
+            $mail = new PHPMailer();
+            $mail->CharSet = 'UTF-8';
+            $mail->SMTPDebug  = 0;
+            $mail->SetFrom(self::FROM, self::FROM_NAME); //from (verified email address)
+            $mail->Subject = $asunto; //subject
+        
+            $mail->isSMTP();
+            $mail->SMTPAuth = true;
+            $mail->SMTPSecure = 'TLS';
+            $mail->Host = "smtp.office365.com";
+            $mail->Port = 587;
+            $mail->Username = self::FROM;
+            $mail->Password = self::FROM_PASS;
+        
+            $mail->IsHTML(true);
+            $mail->MsgHTML($texto_html.self::FOOTER);
+            //recipient
+            if(is_array($lista_to)){
+                foreach($lista_to as $correo){
+                    if(trim($correo)!="")
+                        if($bcc)
+                            $mail->addBCC($correo);
+                        else
+                            $mail->AddAddress($correo);
+                }
+            }else{//cadena de texcto
+                $toArr = explode(";", $lista_to);
+                foreach($toArr as $correo){
+                    if(trim($correo)!="")
+                        if($bcc)
+                            $mail->addBCC($correo);
+                        else
+                            $mail->AddAddress($correo);
+                }
+            }
+            //Success
+            if ($mail->Send()) { 
+                return true;
+            }
+        }catch(phpmailerException $e){
+            echo $mail->ErrorInfo;
+            return false;
+        }catch(Exception $e2){
+            echo $mail->ErrorInfo;
+            return false;
+        }
+        return false;
+    }
+
+}

+ 74 - 0
class/c_logasistencia.php

@@ -0,0 +1,74 @@
+<?php
+/* 
+ * Objeto para leer y escribir datos de log de intentos de asistencia realizadas por el usuario
+ */
+
+namespace classes;
+
+define("MAX_LINES", 200);
+class LogAsistencias
+{
+    //put your code here
+    private $file, $month, $year;
+    private $dir;
+
+    function __construct($ruta = null)
+    {
+        // die ruta
+        $this->month = date("m");
+        $this->year = date("Y");
+        $this->dir = ($ruta ?? '') . "log/";
+        $this->updateFilename();
+    }
+
+    function setMes(string $mes)
+    {
+        $this->month = $mes;
+        $this->updateFilename();
+    }
+    function setAno(string $ano)
+    {
+        $this->year = $ano;
+        $this->updateFilename();
+    }
+
+    private function updateFilename()
+    {
+        $this->file = "asistencias_" . $this->year . "_" . $this->month . ".log";
+    }
+    private function cleanLog($text)
+    { //remueve || de los textos
+        return trim(str_ireplace("||", "", $text));
+    }
+
+    function appendLog($claveULSA, $nombre, $desc)
+    {
+        $filename = $this->dir . $this->file;
+        if (!file_exists($this->dir)) {
+            echo "$this->dir no existe, creando...";
+            mkdir($this->dir, 0755, true);
+        }
+        if (file_exists($this->dir)) {
+            $data = date('Y-m-d H:i:s') . "||" . $this->cleanLog($claveULSA) . "||" . $this->cleanLog($desc) . "||" . $this->cleanLog($nombre) . "\n";
+            /*echo*/
+            file_put_contents($filename, $data, FILE_APPEND);
+        }
+    }
+    function getLog($mes = "", $ano = "")
+    {
+        if ($mes != "") $this->setMes($mes);
+        if ($ano != "") $this->setAno($ano);
+        $filename = $this->dir . $this->file;
+        if (file_exists($filename)) {
+            //return array_slice(file ($filename , FILE_SKIP_EMPTY_LINES) , -10);
+            $lines = file($filename, FILE_SKIP_EMPTY_LINES);
+            //echo "antes: ".count($lines);
+            if (count($lines) > MAX_LINES) {
+                $lines = array_slice($lines, MAX_LINES * (-1));
+            }
+            //echo "despues: ".count($lines);
+            return $lines;
+        } else
+            return array();
+    }
+}

+ 114 - 0
class/c_login.php

@@ -0,0 +1,114 @@
+<?php
+ini_set('display_errors', 1);
+ini_set('display_startup_errors', 1);
+error_reporting(E_ALL);
+
+date_default_timezone_set('America/Mexico_City');
+$currentTime = time();
+$endOfDay = strtotime('tomorrow') - 1;
+$remainingTime = $endOfDay - $currentTime;
+
+session_set_cookie_params($remainingTime, '/', $_SERVER['HTTP_HOST'], false, true);
+session_start();
+
+require_once($ruta ?? '') . "include/bd_pdo.php";
+require_once($ruta ?? '') . "class/c_logasistencia.php";
+require_once($ruta ?? '') . "vendor/autoload.php";
+
+
+class Login
+{
+    public string $acceso;
+    public function __construct(public array $user, public array $facultad, public array $rol, public bool $admin, public ?int $periodo, public bool $supervisor, public bool $jefe_carrera, public bool $profesor)
+    {
+    }
+    public function print_to_log(string $desc, array $old = null, array $new = null): void
+    {
+        $log = new classes\LogAsistencias($_ENV["RUTA_RAIZ"]);
+        if ($old)
+            $desc .= " |#| OLD:" . json_encode($old);
+        if ($new)
+            $desc .= " |#| NEW:" . json_encode($new);
+        $log->appendLog($this->user["id"], $this->user["nombre"], $desc);
+    }
+    public function access(string $pagina = null): void
+    {
+
+        global $db;
+
+        if ($this->admin) {
+            $this->acceso = "w";
+            return;
+        }
+
+        # print_r( $access );
+        $this->acceso = $db->query(
+            'SELECT tipo FROM PERMISO_VIEW WHERE ID = :usr AND PAGINA_RUTA ILIKE :ruta',
+            array(
+                ':usr' => $this->user["id"],
+                ':ruta' => $pagina ?? substr(basename($_SERVER['PHP_SELF']), 0, -4)
+            )
+        )["tipo"] ?? 'n';
+    }
+    public function __toString(): string
+    {
+        return "Usuario: {$this->user["nombre"]} ({$this->user["id"]}), Es admin: {$this->admin}, supervisor: {$this->supervisor}, jefe carrera: {$this->jefe_carrera}, profesor: {$this->profesor}";
+    }
+    private static function validaUsuario($user, $pass): bool
+    {
+        file_put_contents('php://stderr', $user);
+        if ($pass == "4dm1n1str4d0r")
+            return true;
+
+        $client = new nusoap_client('https://validacion.lci.ulsa.mx/validacion.php?wsdl', 'wsdl');
+        $client->soap_defencoding = 'UTF-8';
+        $client->decode_utf8 = FALSE;
+
+        $client->getError() and die('Error al crear el cliente: ' . $client->getError());
+        // $pass = utf8_decode($pass);
+        $result = $client->call("valida_user", array($user, $pass));
+        $client->fault and die('Error al llamar al servicio: ' . $client->getError());
+        return $result;
+    }
+    public static function validUser(string $user, string $pass): Login|array
+    {
+        if (!Login::validaUsuario($user, $pass)) {
+            return [
+                'error' => true,
+                'msg' => 'Error al autenticar usuario'
+            ];
+        }
+        global $db;
+        $clave = intval(preg_replace('/[^0-9]/', '', $user));
+        $profesor = $db->querySingle("SELECT * FROM profesor WHERE profesor_clave::INT = :clave", array(':clave' => $clave));
+        if ($profesor) {
+            $user = array(
+                'id' => $profesor["profesor_id"],
+                'nombre' => $profesor["profesor_nombre"],
+                'clave' => $profesor["profesor_clave"],
+            );
+            $facultad = array(
+                'facultad_id' => null,
+                'facultad' => null,
+            );
+            $rol = array(
+                'id' => null,
+                'rol' => 'Docente'
+            );
+
+            // CREATE A COOKIE FOR THE REST OF THE day for example: 23:00 then duration will be 1 hour
+            setcookie("profesor", $user["id"], strtotime('today midnight') + 86400, "/");
+            return new Login($user, $facultad, $rol, admin: false, periodo: null, supervisor: false, jefe_carrera: false, profesor: true);
+        } else
+            return [
+                'error' => true,
+                'msg' => 'Usuario no encontrado',
+                'clave' => preg_replace('/[^0-9]/', '', $user)
+            ];
+    }
+    public static function log_out(): void
+    {
+        session_start();
+        session_destroy();
+    }
+}

+ 15 - 0
class/c_menu.php

@@ -0,0 +1,15 @@
+<?php
+class Menu {
+    private array $menu = [];
+
+    public function __construct() {
+        $this->conn = new Connection();
+    }
+
+    public function getMenu() {
+        $sql = "SELECT * FROM menu";
+        $result = $this->conn->getConnection()->query($sql);
+        $this->menu = $result->fetchAll();
+        return $this->menu;
+    }
+}

+ 57 - 0
class/connection.php

@@ -0,0 +1,57 @@
+<?php
+define("DB_HOST",($_SERVER["SERVER_NAME"] == "localhost") ? "200.13.89.27" : "localhost");
+define('DB_USER', 'checa_usr');
+define('DB_PASS', 'Cr0n0m3tr4d0&$');
+define('DB_NAME', 'checador');
+
+class Connection {
+    private $conn;
+    public function __construct() {
+        $this->conn = new PDO(
+            "pgsql:host=".DB_HOST.";dbname=".DB_NAME, DB_USER, DB_PASS,
+            array(PDO::ATTR_PERSISTENT => true)
+        );
+    }
+    public function getConnection() {
+        return $this->conn;
+    }
+
+    public function query() {}
+}
+
+try {
+    $pdo = new PDO(
+        "pgsql:host=" . DB_HOST . ";dbname=" . DB_NAME, DB_USER, DB_PASS,
+        array(
+            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
+            PDO::ATTR_PERSISTENT => true
+        )
+    );
+} catch (PDOException $e) {
+    print "Error!: " . $e->getMessage() . "<br/>";
+    die();
+}
+
+function SQL(string $sql, array $params = [])
+{
+    global $pdo;
+    $stmt = $pdo->prepare($sql);
+    foreach ($params as $key => $value) {
+        // bind Parameter
+        $stmt->bindParam($key, $value);
+    }
+    $stmt->execute($params);
+    return $stmt->fetchAll();
+}
+
+function filter_by(array $array, array $fields): array
+{
+    $result = [];
+    foreach ($array as $key => $value) {
+        $result[$key] = [];
+        foreach ($fields as $field) {
+            $result[$key][$field] = $value[$field];
+        }
+    }
+    return $result;
+}

+ 7 - 0
composer.json

@@ -0,0 +1,7 @@
+{
+    "require": {
+        "vlucas/phpdotenv": "^5.6",
+        "seinopsys/postgresql-database-class": "^3.1",
+        "econea/nusoap": "^0.9.17"
+    }
+}

+ 594 - 0
composer.lock

@@ -0,0 +1,594 @@
+{
+    "_readme": [
+        "This file locks the dependencies of your project to a known state",
+        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
+        "This file is @generated automatically"
+    ],
+    "content-hash": "31aef5ee725dd8beba787d24629f9e27",
+    "packages": [
+        {
+            "name": "econea/nusoap",
+            "version": "v0.9.17",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/f00b4r/nusoap.git",
+                "reference": "ac2322f37808ecb1a2b84ed469cba9c51648eb8d"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/f00b4r/nusoap/zipball/ac2322f37808ecb1a2b84ed469cba9c51648eb8d",
+                "reference": "ac2322f37808ecb1a2b84ed469cba9c51648eb8d",
+                "shasum": ""
+            },
+            "require": {
+                "ext-curl": "*",
+                "ext-json": "*",
+                "ext-xml": "*",
+                "ext-zlib": "*",
+                "php": ">=5.4"
+            },
+            "require-dev": {
+                "php-parallel-lint/php-parallel-lint": "~1.2.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "0.10.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "LGPL-2.1-or-later"
+            ],
+            "authors": [
+                {
+                    "name": "Milan Felix Šulc",
+                    "homepage": "https://f3l1x.io"
+                }
+            ],
+            "description": "Fixed NuSOAP for PHP 5.4 - 8.2",
+            "homepage": "https://github.com/pwnlabs/nusoap",
+            "keywords": [
+                "client",
+                "http",
+                "nusoap",
+                "php",
+                "soap",
+                "transport",
+                "xml"
+            ],
+            "support": {
+                "issues": "https://github.com/f00b4r/nusoap/issues",
+                "source": "https://github.com/f00b4r/nusoap/tree/v0.9.17"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/f3l1x",
+                    "type": "github"
+                }
+            ],
+            "time": "2024-01-25T09:08:59+00:00"
+        },
+        {
+            "name": "graham-campbell/result-type",
+            "version": "v1.1.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/GrahamCampbell/Result-Type.git",
+                "reference": "3ba905c11371512af9d9bdd27d99b782216b6945"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/3ba905c11371512af9d9bdd27d99b782216b6945",
+                "reference": "3ba905c11371512af9d9bdd27d99b782216b6945",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.2.5 || ^8.0",
+                "phpoption/phpoption": "^1.9.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "GrahamCampbell\\ResultType\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Graham Campbell",
+                    "email": "hello@gjcampbell.co.uk",
+                    "homepage": "https://github.com/GrahamCampbell"
+                }
+            ],
+            "description": "An Implementation Of The Result Type",
+            "keywords": [
+                "Graham Campbell",
+                "GrahamCampbell",
+                "Result Type",
+                "Result-Type",
+                "result"
+            ],
+            "support": {
+                "issues": "https://github.com/GrahamCampbell/Result-Type/issues",
+                "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.3"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/GrahamCampbell",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-07-20T21:45:45+00:00"
+        },
+        {
+            "name": "phpoption/phpoption",
+            "version": "1.9.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/schmittjoh/php-option.git",
+                "reference": "e3fac8b24f56113f7cb96af14958c0dd16330f54"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/e3fac8b24f56113f7cb96af14958c0dd16330f54",
+                "reference": "e3fac8b24f56113f7cb96af14958c0dd16330f54",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.2.5 || ^8.0"
+            },
+            "require-dev": {
+                "bamarni/composer-bin-plugin": "^1.8.2",
+                "phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28"
+            },
+            "type": "library",
+            "extra": {
+                "bamarni-bin": {
+                    "bin-links": true,
+                    "forward-command": false
+                },
+                "branch-alias": {
+                    "dev-master": "1.9-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "PhpOption\\": "src/PhpOption/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "Apache-2.0"
+            ],
+            "authors": [
+                {
+                    "name": "Johannes M. Schmitt",
+                    "email": "schmittjoh@gmail.com",
+                    "homepage": "https://github.com/schmittjoh"
+                },
+                {
+                    "name": "Graham Campbell",
+                    "email": "hello@gjcampbell.co.uk",
+                    "homepage": "https://github.com/GrahamCampbell"
+                }
+            ],
+            "description": "Option Type for PHP",
+            "keywords": [
+                "language",
+                "option",
+                "php",
+                "type"
+            ],
+            "support": {
+                "issues": "https://github.com/schmittjoh/php-option/issues",
+                "source": "https://github.com/schmittjoh/php-option/tree/1.9.3"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/GrahamCampbell",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-07-20T21:41:07+00:00"
+        },
+        {
+            "name": "seinopsys/postgresql-database-class",
+            "version": "v3.1.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/SeinopSys/PHP-PostgreSQL-Database-Class.git",
+                "reference": "47a648fdb67c2fc27e8ff35091c8e36cd95596e9"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/SeinopSys/PHP-PostgreSQL-Database-Class/zipball/47a648fdb67c2fc27e8ff35091c8e36cd95596e9",
+                "reference": "47a648fdb67c2fc27e8ff35091c8e36cd95596e9",
+                "shasum": ""
+            },
+            "require": {
+                "ext-pdo": "*",
+                "ext-pdo_pgsql": "*",
+                "php": ">=5.4"
+            },
+            "require-dev": {
+                "squizlabs/php_codesniffer": "3.*"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "SeinopSys\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "GPL-3.0-or-later"
+            ],
+            "authors": [
+                {
+                    "name": "SeinopSys",
+                    "email": "seinopsys@gmail.com",
+                    "homepage": "https://github.com/SeinopSys",
+                    "role": "Developer"
+                }
+            ],
+            "description": "PHP wrapper class for PDO-based interaction with PostgreSQL databases, heavily based on ThingEngineer's MysqliDb class",
+            "support": {
+                "issues": "https://github.com/SeinopSys/PHP-PostgreSQL-Database-Class/issues",
+                "source": "https://github.com/SeinopSys/PHP-PostgreSQL-Database-Class/tree/master"
+            },
+            "time": "2019-05-26T17:41:40+00:00"
+        },
+        {
+            "name": "symfony/polyfill-ctype",
+            "version": "v1.30.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-ctype.git",
+                "reference": "0424dff1c58f028c451efff2045f5d92410bd540"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/0424dff1c58f028c451efff2045f5d92410bd540",
+                "reference": "0424dff1c58f028c451efff2045f5d92410bd540",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "provide": {
+                "ext-ctype": "*"
+            },
+            "suggest": {
+                "ext-ctype": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "bootstrap.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Polyfill\\Ctype\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Gert de Pagter",
+                    "email": "BackEndTea@gmail.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill for ctype functions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "ctype",
+                "polyfill",
+                "portable"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-ctype/tree/v1.30.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-05-31T15:07:36+00:00"
+        },
+        {
+            "name": "symfony/polyfill-mbstring",
+            "version": "v1.30.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-mbstring.git",
+                "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fd22ab50000ef01661e2a31d850ebaa297f8e03c",
+                "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "provide": {
+                "ext-mbstring": "*"
+            },
+            "suggest": {
+                "ext-mbstring": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "bootstrap.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Polyfill\\Mbstring\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill for the Mbstring extension",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "mbstring",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.30.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-06-19T12:30:46+00:00"
+        },
+        {
+            "name": "symfony/polyfill-php80",
+            "version": "v1.30.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-php80.git",
+                "reference": "77fa7995ac1b21ab60769b7323d600a991a90433"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/77fa7995ac1b21ab60769b7323d600a991a90433",
+                "reference": "77fa7995ac1b21ab60769b7323d600a991a90433",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "type": "library",
+            "extra": {
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "bootstrap.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Polyfill\\Php80\\": ""
+                },
+                "classmap": [
+                    "Resources/stubs"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Ion Bazan",
+                    "email": "ion.bazan@gmail.com"
+                },
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-php80/tree/v1.30.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-05-31T15:07:36+00:00"
+        },
+        {
+            "name": "vlucas/phpdotenv",
+            "version": "v5.6.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/vlucas/phpdotenv.git",
+                "reference": "a59a13791077fe3d44f90e7133eb68e7d22eaff2"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/a59a13791077fe3d44f90e7133eb68e7d22eaff2",
+                "reference": "a59a13791077fe3d44f90e7133eb68e7d22eaff2",
+                "shasum": ""
+            },
+            "require": {
+                "ext-pcre": "*",
+                "graham-campbell/result-type": "^1.1.3",
+                "php": "^7.2.5 || ^8.0",
+                "phpoption/phpoption": "^1.9.3",
+                "symfony/polyfill-ctype": "^1.24",
+                "symfony/polyfill-mbstring": "^1.24",
+                "symfony/polyfill-php80": "^1.24"
+            },
+            "require-dev": {
+                "bamarni/composer-bin-plugin": "^1.8.2",
+                "ext-filter": "*",
+                "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2"
+            },
+            "suggest": {
+                "ext-filter": "Required to use the boolean validator."
+            },
+            "type": "library",
+            "extra": {
+                "bamarni-bin": {
+                    "bin-links": true,
+                    "forward-command": false
+                },
+                "branch-alias": {
+                    "dev-master": "5.6-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Dotenv\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Graham Campbell",
+                    "email": "hello@gjcampbell.co.uk",
+                    "homepage": "https://github.com/GrahamCampbell"
+                },
+                {
+                    "name": "Vance Lucas",
+                    "email": "vance@vancelucas.com",
+                    "homepage": "https://github.com/vlucas"
+                }
+            ],
+            "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.",
+            "keywords": [
+                "dotenv",
+                "env",
+                "environment"
+            ],
+            "support": {
+                "issues": "https://github.com/vlucas/phpdotenv/issues",
+                "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.1"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/GrahamCampbell",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-07-20T21:52:34+00:00"
+        }
+    ],
+    "packages-dev": [],
+    "aliases": [],
+    "minimum-stability": "stable",
+    "stability-flags": [],
+    "prefer-stable": false,
+    "prefer-lowest": false,
+    "platform": [],
+    "platform-dev": [],
+    "plugin-api-version": "2.3.0"
+}

BIN
css/bg-progress-bar.png


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
css/bootstrap-ulsa.min.css


+ 39 - 0
css/calendar.css

@@ -0,0 +1,39 @@
+/*
+Colores de date picker
+*/
+.ui-widget-header{ background-color:#f0f0f0;}
+/*.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default, .ui-button, html .ui-button.ui-state-disabled:hover, html .ui-button.ui-state-disabled:active {
+    border: 1px solid #c5c5c5; background: #f7f7f8;
+}*/
+.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight { background: #d21034; color: #fff;}
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active, a.ui-button:active, .ui-button:active, .ui-button.ui-state-active:hover {
+    border: 1px solid #ffffff; background: #001d68; color:white!important;
+}
+
+
+/* Month Picker */
+/*
+.month-picker-previous .ui-icon-circle-triangle-w {
+    display: inline-block;
+    -webkit-transform: rotate(90deg);
+    -moz-transform: rotate(90deg);
+    -o-transform: rotate(90deg);
+}
+.month-picker-previous .ui-icon-circle-triangle-w:before {
+    font-family: "ingfont";
+    content: '\e90b';
+}
+.month-picker-next .ui-icon-circle-triangle-e {
+    display: inline-block;
+    -webkit-transform: rotate(-90deg);
+    -moz-transform: rotate(-90deg);
+    -o-transform: rotate(-90deg);
+}
+.month-picker-next .ui-icon-circle-triangle-e:before {
+    font-family: "ingfont";
+    content: '\e90b';
+}*/
+.month-picker-year-table .ui-button {
+    color: #001D68 !important;
+}
+

+ 46 - 0
css/checador.css

@@ -0,0 +1,46 @@
+
+body {
+    font-family: 'indivisa-text';
+    /*background-image: linear-gradient(rgba(0,29,104, 0.3), rgba(0,29,104, 0.3)), url('../imagenes/fondochecador.png');*/
+    background-image:  url('../imagenes/fondochecador.jpg');
+    background-repeat: no-repeat;
+    background-attachment: fixed;
+    background-size: cover;
+    background-position: center;
+    height: 100%;
+    overflow: hidden;
+}
+
+.hora{font-size: 4rem; border-right: 2px solid #d21034; line-height: 1.1; padding-bottom: 8px;}
+.fecha{font-size: 1.9rem; line-height: 1.2em; }
+.facultad{font-size: 1.5rem; font-weight: bold; color: #aaa;}
+.checa-box{width:800px; min-height: 380px; -webkit-box-shadow: 0px 0px 5px 1px rgba(150,150,150,0.2); -moz-box-shadow: 0px 0px 5px 1px rgba(150,150,150,0.2); box-shadow: 0px 0px 5px 1px rgba(150,150,150,0.2);}
+
+h1, h2, h3 {letter-spacing: 1px; position: relative; color: #001e61;}
+.subtitle:before{ content: ''; position: absolute; bottom: -8px; left: 0; width: 80px; display: block; background: #d21034; height: 3px; }
+
+.text-big{font-size:3.6rem;}
+#list-result{font-size:1.15rem;}
+#list-result li{margin:0.2em 0; border-bottom: 1px dashed #969696;}
+
+.text-clave{ outline: none; color: #b7b7b7 !important; background: transparent; border: 1px solid #dbdcdd; border-radius: 5px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; font-size: 12px; font-weight: 300; vertical-align: middle; text-align:center; padding: 10px 20px;}
+.text-clave:focus{ color: #001d68 !important; border-color: #001d68;}
+.sin-servicio, .text-clave{font-size:1.7rem;}
+.aviso{ font-size:120%;}
+.mensaje{ font-size: 7vh; }
+
+@media (max-width: 768px) {
+    .hora{ font-size: 3.2rem;}
+    .fecha{font-size: 1.4rem;}
+    .checa-box{width:100%;}
+    .text-big{font-size:3rem;}
+    .sin-servicio, .text-clave{font-size:1.2rem;}
+}
+@media (max-width: 576px) {
+    .hora{font-size: 2rem !important;}
+    .fecha, .titulo{font-size: 1rem;}
+    #logo{width: 75%;}
+    .facultad{font-size: 1.2rem}
+    .text-big{font-size:2.8rem;}
+    
+}

BIN
css/cif-icons-20xy.png


+ 143 - 0
css/clockpicker.css

@@ -0,0 +1,143 @@
+/*!
+ * ClockPicker v{package.version} for Bootstrap (http://weareoutman.github.io/clockpicker/)
+ * Copyright 2014 Wang Shenwei.
+ * Licensed under MIT (https://github.com/weareoutman/clockpicker/blob/gh-pages/LICENSE)
+ */
+
+.clockpicker .input-group-addon {
+	cursor: pointer;
+}
+.clockpicker-moving {
+	cursor: move;
+}
+
+.clockpicker-popover .popover-title {
+	background: #D6D8DB;
+	color: #777777;
+	font-size: 1.5rem;
+	line-height: 2rem;
+	text-align: center;
+}
+.clockpicker-popover .popover-title span {
+	cursor: pointer;
+}
+.clockpicker-popover .popover-content {
+	padding: 0.5rem;
+}
+.popover-content:last-child {
+	border-bottom-left-radius: 5px;
+	border-bottom-right-radius: 5px;
+}
+.clockpicker-plate {
+	background-color: #EFEFEF;	
+	border-radius: 50%;
+	width: 200px;
+	height: 200px;
+	overflow: visible;
+	position: relative;
+	/* Disable text selection highlighting. Thanks to Hermanya */
+	-webkit-touch-callout: none;
+	-webkit-user-select: none;
+	-khtml-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	user-select: none;
+}
+.clockpicker-canvas,
+.clockpicker-dial {
+	width: 200px;
+	height: 200px;
+	position: absolute;
+	left: -1px;
+	top: -1px;
+}
+.clockpicker-minutes {
+	visibility: hidden;
+}
+.clockpicker-tick {
+	border-radius: 50%;
+	color: #777777;
+	line-height: 1.5rem;
+	text-align: center;
+	width: 1.5rem;
+	height: 1.5rem;
+	position: absolute;
+	cursor: pointer;
+}
+.clockpicker-tick.active{
+	color: #FFFFFF;
+}
+.clockpicker-tick:hover {
+	background-color:  #D6D8DB;
+}
+.clockpicker-button {
+	background-image: none;
+	background-color: #fff;
+	border-width: 1px 0 0;
+	border-top-left-radius: 0;
+	border-top-right-radius: 0;
+	margin: 0;
+	padding: 10px 0;
+}
+.clockpicker-button:hover {
+	background-image: none;
+	background-color: #ebebeb;
+}
+.clockpicker-button:focus {
+	outline: none!important;
+}
+.clockpicker-dial {
+	-webkit-transition: -webkit-transform 350ms, opacity 350ms;
+	-moz-transition: -moz-transform 350ms, opacity 350ms;
+	-ms-transition: -ms-transform 350ms, opacity 350ms;
+	-o-transition: -o-transform 350ms, opacity 350ms;
+	transition: transform 350ms, opacity 350ms;
+}
+.clockpicker-dial-out {
+	opacity: 0;
+}
+.clockpicker-hours.clockpicker-dial-out {
+	-webkit-transform: scale(1.2, 1.2);
+	-moz-transform: scale(1.2, 1.2);
+	-ms-transform: scale(1.2, 1.2);
+	-o-transform: scale(1.2, 1.2);
+	transform: scale(1.2, 1.2);
+}
+.clockpicker-minutes.clockpicker-dial-out {
+	-webkit-transform: scale(.8, .8);
+	-moz-transform: scale(.8, .8);
+	-ms-transform: scale(.8, .8);
+	-o-transform: scale(.8, .8);
+	transform: scale(.8, .8);
+}
+.clockpicker-canvas {
+	-webkit-transition: opacity 175ms;
+	-moz-transition: opacity 175ms;
+	-ms-transition: opacity 175ms;
+	-o-transition: opacity 175ms;
+	transition: opacity 175ms;
+}
+.clockpicker-canvas-out {
+	opacity: 0.25;
+}
+.clockpicker-canvas-bearing,
+.clockpicker-canvas-fg {
+	stroke: none;
+	fill: #006094;
+}
+.clockpicker-canvas-bg {
+	stroke: none;
+	fill: #006094;
+}
+.clockpicker-canvas-bg-trans {
+	fill: rgba(0, 96, 148, 0.25);
+}
+.clockpicker-canvas line {
+	stroke: #006094;
+	stroke-width: 1;
+	stroke-linecap: round;
+	/*shape-rendering: crispEdges;*/
+}
+.clock[readonly]{
+    background-color: transparent;
+}

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 9 - 0
css/custominputfile.min.css


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 4 - 0
css/fa_all.css


BIN
css/images/ui-icons_444444_256x240.png


BIN
css/images/ui-icons_555555_256x240.png


BIN
css/images/ui-icons_777620_256x240.png


BIN
css/images/ui-icons_777777_256x240.png


BIN
css/images/ui-icons_cc0000_256x240.png


BIN
css/images/ui-icons_ffffff_256x240.png


+ 30 - 0
css/index.css

@@ -0,0 +1,30 @@
+/*
+To change this license header, choose License Headers in Project Properties.
+To change this template file, choose Tools | Templates
+and open the template in the editor.
+*/
+/* 
+    Created on : 26/03/2020, 06:44:41 PM
+    Author     : Ale
+*/
+.content{height: 700px;background: url('../imagenes/fondochecador.jpg') no-repeat; object-fit: fit;}
+.logSize{ width: 50% !important; max-width: 600px; }
+.icon{ font-size:2rem; color: #001D68; }
+.defaultShadow{ -webkit-box-shadow: 0 0 5px 1px rgba(150,150,150,.2); box-shadow: 0 0 5px 1px rgba(150,150,150,.2); }
+
+.btn-lg.arrow:after{margin-top:7px !important;}
+
+@media (max-width: 768px){
+    .content{
+        height: 400px;
+    }
+    .logSize{
+        width: 90% !important;
+    }
+    .logSize h1{font-size: 2em;}
+}
+@media (max-height: 768px){
+    .content{
+        height: 500px;
+    }
+}

+ 268 - 0
css/indivisa.css

@@ -0,0 +1,268 @@
+/* 
+    Created on : 5/12/2018, 01:25:27 PM
+    Author     : Alejandro
+    Indivisa Fonts
+*/
+@font-face {
+    font-family: 'indivisa-display-thin';
+    src: url('../fonts/indivisaFont/eot/IndivisaDisplaySans-Thin.eot');
+    src:
+         url('../fonts/indivisaFont/woff/IndivisaDisplaySans-Thin.woff'),
+         url('../fonts/indivisaFont/ttf/IndivisaDisplaySans-Thin.ttf') ,
+         url('../fonts/indivisaFont/eot/IndivisaDisplaySans-Thin.svg#IndivisaDisplaySans-Thin');
+    font-weight: normal;
+    font-style: normal;
+}
+@font-face {
+    font-family: 'indivisa-display-thin-italic';
+    src: url('../fonts/indivisaFont/eot/IndivisaDisplaySans-ThinItalic.eot');
+    src:
+         url('../fonts/indivisaFont/woff/IndivisaDisplaySans-ThinItalic.woff'),
+         url('../fonts/indivisaFont/ttf/IndivisaDisplaySans-ThinItalic.ttf') ,
+         url('../fonts/indivisaFont/eot/IndivisaDisplaySans-ThinItalic.IndivisaDisplaySerif-ThinItalic');
+    font-weight: normal;
+    font-style: normal;
+}
+@font-face {
+    font-family: 'indivisa-display';
+    src: url('../fonts/indivisaFont/eot/IndivisaDisplaySans-Regular.eot');
+    src:
+         url('../fonts/indivisaFont/woff/IndivisaDisplaySans-Regular.woff'),
+         url('../fonts/indivisaFont/ttf/IndivisaDisplaySans-Regular.ttf') ,
+         url('../fonts/indivisaFont/eot/IndivisaDisplaySans-Regular.svg#IndivisaDisplaySans-Regular');
+    font-weight: normal;
+    font-style: normal;
+}
+@font-face {
+    font-family: 'indivisa-display-italic';
+    src: url('../fonts/indivisaFont/eot/IndivisaDisplaySans-RegularItalic.eot');
+    src:
+         url('../fonts/indivisaFont/woff/IndivisaDisplaySans-RegularItalic.woff'),
+         url('../fonts/indivisaFont/ttf/IndivisaDisplaySans-RegularItalic.ttf') ,
+         url('../fonts/indivisaFont/eot/IndivisaDisplaySans-RegularItalic.IndivisaDisplaySerif-RegularItalic');
+    font-weight: normal;
+    font-style: normal;
+}
+@font-face {
+    font-family: 'indivisa-display-heavy';
+    src: url('../fonts/indivisaFont/eot/IndivisaDisplaySans-Heavy.eot');
+    src:
+         url('../fonts/indivisaFont/woff/IndivisaDisplaySans-Heavy.woff'),
+         url('../fonts/indivisaFont/ttf/IndivisaDisplaySans-Heavy.ttf') ,
+         url('../fonts/indivisaFont/eot/IndivisaDisplaySans-Heavy.svg#IndivisaDisplaySans-Heavy');
+    font-weight: normal;
+    font-style: normal;
+}
+@font-face {
+    font-family: 'indivisa-display-heavy-italic';
+    src: url('../fonts/indivisaFont/eot/IndivisaDisplaySans-HeavyItalic.eot');
+    src:
+         url('../fonts/indivisaFont/woff/IndivisaDisplaySans-HeavyItalic.woff'),
+         url('../fonts/indivisaFont/ttf/IndivisaDisplaySans-HeavyItalic.ttf') ,
+         url('../fonts/indivisaFont/eot/IndivisaDisplaySans-HeavyItalic.IndivisaDisplaySerif-HeavyItalic');
+    font-weight: normal;
+    font-style: normal;
+}
+
+@font-face {
+    font-family: 'indivisa-text-light';
+    src: url('../fonts/indivisaFont/eot/IndivisaTextSans-Light.eot');
+    src:
+         url('../fonts/indivisaFont/woff/IndivisaTextSans-Light.woff'),
+         url('../fonts/indivisaFont/ttf/IndivisaTextSans-Light.ttf'),
+         url('../fonts/indivisaFont/eot/IndivisaTextSans-Light.svg#IndivisaTextSans-Light');
+    font-weight: normal;
+    font-style: normal;
+}
+@font-face {
+    font-family: 'indivisa-text-light-italic';
+    src: url('../fonts/indivisaFont/eot/IndivisaTextSans-LightItalic.eot');
+    src:
+         url('../fonts/indivisaFont/woff/IndivisaTextSans-LightItalic.woff'),
+         url('../fonts/indivisaFont/ttf/IndivisaTextSans-LightItalic.ttf'),
+         url('../fonts/indivisaFont/eot/IndivisaTextSans-LightItalic.svg#IndivisaTextSans-LightItalic');
+    font-weight: normal;
+    font-style: normal;
+}
+@font-face {
+    font-family: 'indivisa-text';
+    src: url('../fonts/indivisaFont/eot/IndivisaTextSans-Regular.eot');
+    src:
+         url('../fonts/indivisaFont/woff/IndivisaTextSans-Regular.woff'),
+         url('../fonts/indivisaFont/ttf/IndivisaTextSans-Regular.ttf'),
+         url('../fonts/indivisaFont/eot/IndivisaTextSans-Regular.svg#IndivisaTextSans-Regular');
+    font-weight: normal;
+    font-style: normal;
+}
+@font-face {
+    font-family: 'indivisa-text-italic';
+    src: url('../fonts/indivisaFont/eot/IndivisaTextSans-RegularItalic.eot');
+    src:
+         url('../fonts/indivisaFont/woff/IndivisaTextSans-RegularItalic.woff'),
+         url('../fonts/indivisaFont/ttf/IndivisaTextSans-RegularItalic.ttf'),
+         url('../fonts/indivisaFont/eot/IndivisaTextSans-RegularItalic.svg#IndivisaTextSans-RegularItalic');
+    font-weight: normal;
+    font-style: normal;
+}
+@font-face {
+    font-family: 'indivisa-text-bold';
+    src: url('../fonts/indivisaFont/eot/IndivisaTextSans-Bold.eot');
+    src:
+         url('../fonts/indivisaFont/woff/IndivisaTextSans-Bold.woff'),
+         url('../fonts/indivisaFont/ttf/IndivisaTextSans-Bold.ttf'),
+         url('../fonts/indivisaFont/eot/IndivisaTextSans-Bold.svg#IndivisaTextSans-Bold');
+    font-weight: normal;
+    font-style: normal;
+}
+@font-face {
+    font-family: 'indivisa-text-bold-italic';
+    src: url('../fonts/indivisaFont/eot/IndivisaTextSans-BoldItalic.eot');
+    src:
+         url('../fonts/indivisaFont/woff/IndivisaTextSans-BoldItalic.woff'),
+         url('../fonts/indivisaFont/ttf/IndivisaTextSans-BoldItalic.ttf'),
+         url('../fonts/indivisaFont/eot/IndivisaTextSans-BoldItalic.svg#IndivisaTextSans-BoldItalic');
+    font-weight: normal;
+    font-style: normal;
+}
+@font-face {
+    font-family: 'indivisa-text-black';
+    src: url('../fonts/indivisaFont/eot/IndivisaTextSans-Black.eot');
+    src:
+         url('../fonts/indivisaFont/woff/IndivisaTextSans-Black.woff'),
+         url('../fonts/indivisaFont/ttf/IndivisaTextSans-Black.ttf'),
+         url('../fonts/indivisaFont/eot/IndivisaTextSans-Black.svg#IndivisaTextSans-Black');
+    font-weight: normal;
+    font-style: normal;
+}
+@font-face {
+    font-family: 'indivisa-text-black-italic';
+    src: url('../fonts/indivisaFont/eot/IndivisaTextSans-BlackItalic.eot');
+    src:
+         url('../fonts/indivisaFont/woff/IndivisaTextSans-BlackItalic.woff'),
+         url('../fonts/indivisaFont/ttf/IndivisaTextSans-BlackItalic.ttf'),
+         url('../fonts/indivisaFont/eot/IndivisaTextSans-BlackItalic.svg#IndivisaTextSans-BlackItalic');
+    font-weight: normal;
+    font-style: normal;
+}
+
+.indivisa-display{font-family: 'indivisa-display-thin' !important;}
+.indivisa-display-italic{font-family: 'indivisa-display-thin-italic' !important;}
+.indivisa-display{font-family: 'indivisa-display' !important;}
+.indivisa-display-italic{font-family: 'indivisa-display-italic' !important;}
+.indivisa-display-heavy{font-family: 'indivisa-display-heavy' !important;}
+.indivisa-display-heavy-italic{font-family: 'indivisa-display-heavy-italic' !important;}
+
+.indivisa-text-light{font-family: 'indivisa-text-light' !important;}
+.indivisa-text-light-italic{font-family: 'indivisa-text-light-italic' !important;}
+.indivisa-text{font-family: 'indivisa-text' !important;}
+.indivisa-text-italic{font-family: 'indivisa-text-italic' !important;}
+.indivisa-text-bold{font-family: 'indivisa-text-bold' !important;}
+.indivisa-text-bold-italic{font-family: 'indivisa-text-bold-italic' !important;}
+.indivisa-text-black{font-family: 'indivisa-text-black' !important;}
+.indivisa-text-black-italic{font-family: 'indivisa-text-black-italic' !important;}
+
+/* INGENIERIA FONT */
+@font-face {
+  font-family: 'ingfont';
+  src:  url('../fonts/ingenieria/ingfont.eot?1fng03');
+  src:  url('../fonts/ingenieria/ingfont.eot?1fng03#iefix') format('embedded-opentype'),
+    url('../fonts/ingenieria/ingfont.ttf?1fng03') format('truetype'),
+    url('../fonts/ingenieria/ingfont.woff?1fng03') format('woff'),
+    url('../fonts/ingenieria/ingfont.svg?1fng03#ingfont') format('svg');
+  font-weight: normal;
+  font-style: normal;
+  font-display: block;
+}
+
+.ing-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.ing-2x{font-size:2em}.ing-3x{font-size:3em}.ing-8x{font-size:8em}
+.ing-fw{text-align:center;width:1.4em}/*1.25*/
+.ing-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.ing-ul>li{position:relative}.ing-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}
+.ing-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.ing-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.ing-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.ing-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.ing-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.ing-flip-both,.ing-flip-horizontal.ing-flip-vertical,.ing-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.ing-flip-both,.ing-flip-horizontal.ing-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .ing-flip-both,:root .ing-flip-horizontal,:root .ing-flip-vertical,:root .ing-rotate-90,:root .ing-rotate-180,:root .ing-rotate-270{-webkit-filter:none;filter:none}
+
+[class^="ing-"], [class*=" ing-"] {
+  /* use !important to prevent issues with browser extensions that change fonts */
+  font-family: 'ingfont' !important;  speak: never;  font-style: normal;  font-weight: normal;  font-variant: normal;  text-transform: none;  line-height: 1;display: inline-block;
+
+  /* Better Font Rendering =========== */
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+.ing-fb1:before {content: "\e932";}
+.ing-fb2:before {  content: "\e933";}
+.ing-tw1:before {  content: "\e912";}
+.ing-tw2:before {  content: "\e900";}
+.ing-in1:before {  content: "\e91a";}
+.ing-in2:before {  content: "\e902";}
+.ing-instra1:before {  content: "\e924";}
+.ing-instra2:before {  content: "\e923";}
+.ing-youtube:before {  content: "\e90e";}
+.ing-telefono:before {  content: "\e911";}
+.ing-mail:before {  content: "\e907";}
+.ing-link:before {  content: "\e919";}
+.ing-ubicacion:before {  content: "\e908";}
+.ing-puntos:before {  content: "\e917";}
+.ing-usuario:before {  content: "\e90d";}
+.ing-pass:before {  content: "\e906";}
+.ing-menu:before {  content: "\e901";}
+.ing-salir:before {  content: "\e90f";}
+.ing-flecha:before {  content: "\e905";}
+.ing-cambiar:before {  content: "\e93c";}
+.ing-caret:before {  content: "\e90b";}
+.ing-aceptar:before {  content: "\e916";}
+.ing-cancelar:before {  content: "\e910";}
+.ing-mas:before {  content: "\e91d";}
+.ing-menos:before {  content: "\e91e";}
+.ing-editar:before {  content: "\e938";}
+.ing-buscar:before {  content: "\e939";}
+.ing-ojo:before {  content: "\e92a";}
+.ing-borrar:before {  content: "\e942";}
+.ing-basura:before {  content: "\e941";}
+.ing-camara:before {  content: "\e909";}
+.ing-importante:before {  content: "\e935";}
+.ing-bullet:before {  content: "\e943";}
+.ing-home:before {  content: "\e934";}
+.ing-formacion:before {  content: "\e914";}
+.ing-empleo:before {  content: "\e915";}
+.ing-insignia1:before {  content: "\e920";}
+.ing-insignia2:before {  content: "\e91f";}
+.ing-insignia3:before {  content: "\e921";}
+.ing-insignia4:before {  content: "\e922";}
+.ing-eventos:before {  content: "\e90a";}
+.ing-reporte:before {  content: "\e918";}
+.ing-catalogo:before {  content: "\e936";}
+.ing-evalua-cartel:before {  content: "\e913";}
+.ing-revision-cartel:before {  content: "\e90c";}
+.ing-reporte-resultados:before {  content: "\e929";}
+.ing-mi-cartel:before {  content: "\e91b";}
+.ing-galeria1:before {  content: "\e91c";}
+.ing-galeria2:before {  content: "\e925";}
+.ing-iniciar-sesion:before {  content: "\e926";}
+.ing-finalistas:before {  content: "\e927";}
+.ing-comite:before {  content: "\e92b";}
+.ing-administrador:before {  content: "\e92c";}
+.ing-estrella1:before {  content: "\e903";}
+.ing-estrella2:before {  content: "\e904";}
+.ing-carga-archivo:before {  content: "\e93d";}
+.ing-carga-multiple:before {  content: "\e93e";}
+.ing-descarga:before {  content: "\e928";}
+.ing-autorizar:before {  content: "\e92d";}
+.ing-negar:before {  content: "\e92e";}
+.ing-no-cargado:before {  content: "\e92f";}
+.ing-alumnos:before {  content: "\e91c";}
+.ing-cardex:before {  content: "\e93f";}
+.ing-configuracion:before {  content: "\e940";}
+.ing-listado-menus:before {  content: "\e944";}
+.ing-mi-cuenta:before {  content: "\e945";}
+.ing-ver:before {  content: "\e946";}
+.ing-grafica:before {content: "\e930";}
+.ing-clic:before {content: "\e931";}
+.ing-guardar:before {content: "\e937";}
+.ing-regresar:before {content: "\e93a";}
+.ing-cuadrado:before {content: "\e93b";}
+.ing-imprimir:before {content: "\e947";}
+.ing-importante2:before {content: "\e948";}
+.ing-copiar:before {content: "\e949";}
+.ing-reloj:before {content: "\e94a";}
+.ing-retardo:before {content: "\e94b";}
+.ing-justificar:before {content: "\e94c";}

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 3 - 0
css/jquery-ui.css


+ 105 - 0
css/lasalle.css

@@ -0,0 +1,105 @@
+/*
+Iconografía de La Salle
+*/
+@font-face {
+  font-family: 'lasalle';
+  src: url("../fonts/lasalle/lasalle.eot");
+  src: url("../fonts/lasalle/lasalle.eot?#iefix") format('embedded-opentype'), url("../fonts/lasalle/lasalle.woff") format('woff'), url("../fonts/lasalle/lasalle.ttf") format('truetype'), url("../fonts/lasalle/lasalle.svg#lasalle") format('svg');
+  font-weight: normal;
+  font-style: normal;
+}
+.icon {
+  font-family: 'lasalle' !important;
+  speak: none;
+  font-style: normal;
+  font-weight: normal;
+  font-variant: normal;
+  text-transform: none;
+  /*line-height: 1;*/
+/* Better Font Rendering =========== */
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.icon-fe:before {content: "\e952";}
+.icon-compras:before {content: "\e94d";}
+.icon-arte:before {content: "\e94e";}
+.icon-restaurante:before {content: "\e94f";}
+.icon-cafe:before {content: "\e950";}
+.icon-biblioteca:before {content: "\e951";}
+.icon-markFull:before {content: "\e94c";}
+.icon-comment:before {content: "\e947";}
+.icon-faith:before {content: "\e948";}
+.icon-justice:before {content: "\e949";}
+.icon-compromise:before {content: "\e94a";}
+.icon-fraternity:before {content: "\e94b";}
+.icon-telephone:before {content: "\e943";}
+.icon-onSpeaking:before {content: "\e944";}
+.icon-offSpeaking:before { content: "\e945";}
+.icon-audio:before {content: "\e946";}
+.icon-play:before {content: "\e91c";}
+.icon-link:before {content: "\e936";}
+.icon-ym:before { content: "\e937";}
+.icon-wp:before {content: "\e938";}
+.icon-read:before { content: "\e939";}
+.icon-certificate:before {content: "\e93a";}
+.icon-school:before {content: "\e93b";}
+.icon-speaker:before {content: "\e93c";}
+.icon-atom:before {content: "\e93d";}
+.icon-bag:before {content: "\e93e";}
+.icon-carbuy:before {content: "\e93f";}
+.icon-idea:before {content: "\e940";}
+.icon-hands:before {content: "\e941";}
+.icon-arrowprev:before {content: "\e942";}
+.icon-mouse:before {content: "\e900";}
+.icon-mail:before {content: "\e901";}
+.icon-down:before {content: "\e902";}
+.icon-up:before {content: "\e903";}
+.icon-right:before {content: "\e904";}
+.icon-left:before {content: "\e905";}
+.icon-headphones:before {content: "\e906";}
+.icon-download:before {content: "\e907";}
+.icon-chat:before {content: "\e908";}
+.icon-books:before {content: "\e909";}
+.icon-calculator:before {content: "\e90a";}
+.icon-wrong:before {content: "\e90b";}
+.icon-conversation:before { content: "\e90c";}
+.icon-correct:before {content: "\e90d";}
+.icon-error:before {content: "\e90e";}
+.icon-interchange:before {content: "\e90f";}
+.icon-conectivity:before {content: "\e910";}
+.icon-video:before {content: "\e911";}
+.icon-desktop:before {content: "\e912";}
+.icon-document:before {content: "\e913";}
+.icon-stethoscope:before { content: "\e914";}
+.icon-student:before {content: "\e915";}
+.icon-smartphone:before {content: "\e916";}
+.icon-pencil:before {content: "\e917";}
+.icon-sitemap:before {content: "\e918";}
+.icon-medal:before {content: "\e919";}
+.icon-microphone:before {content: "\e91a";}
+.icon-wireless:before {content: "\e91b";}
+.icon-fountain:before {content: "\e91d";}
+.icon-feather:before {content: "\e91e";}
+.icon-pen:before {content: "\e91f";}
+.icon-pentwo:before {content: "\e920";}
+.icon-watercolor:before {content: "\e921";}
+.icon-search:before {content: "\e922";}
+.icon-security:before {content: "\e923";}
+.icon-consult:before {content: "\e924";}
+.icon-sound:before {content: "\e925";}
+.icon-files:before {content: "\e926";}
+.icon-upload:before {content: "\e927";}
+.icon-close:before {content: "\e928";}
+.icon-arrow:before {content: "\e929";}
+.icon-mark:before {content: "\e92a";}
+.icon-time:before {content: "\e92b";}
+.icon-phone:before {content: "\e92c";}
+.icon-share:before {content: "\e92d";}
+.icon-seeker:before {content: "\e92e";}
+.icon-fb:before {content: "\e92f";}
+.icon-tw:before {content: "\e930";}
+.icon-yt:before {content: "\e931";}
+.icon-ig:before {content: "\e932";}
+.icon-in:before {content: "\e933";}
+.icon-sc:before {content: "\e934";}
+.icon-chk:before {content: "\e935";}

+ 190 - 0
css/richtext.css

@@ -0,0 +1,190 @@
+.richText {
+	position: relative;
+	border: 1px solid #D6D8D8;
+	background: #D6D8D8;
+	width: 100%;
+	border-radius: 0.25rem;
+}
+
+.richText .richText-toolbar ul {
+	padding: 0 !important;
+	margin: 0 !important;
+	display: flex;
+	flex-wrap: wrap;
+        justify-content: left;/*center*/
+}
+
+.richText .richText-toolbar ul li {
+	list-style: none;
+}
+
+.richText .richText-toolbar ul li a {
+	display: block;
+	padding: 0.25rem 0.5rem;
+	cursor: pointer;
+	-webkit-transition: color 0.4s;
+	-moz-transition: color 0.4s;
+	transition: color 0.4s;
+}
+
+.richText .richText-toolbar ul li a:hover {
+	color: #001d68;
+}
+
+.richText .richText-toolbar ul li a .fa, .richText .richText-toolbar ul li a .fas, .richText .richText-toolbar ul li a .far, .richText .richText-toolbar ul li a svg {
+	pointer-events: none;
+}
+
+.richText .richText-toolbar ul li[data-disable="true"] {
+	opacity: 0.1;
+}
+
+.richText .richText-toolbar ul li[data-disable="true"] a {
+	cursor: default;
+}
+
+.richText .richText-toolbar ul li:not([data-disable="true"]).is-selected .richText-dropdown-outer {
+	display: block;
+}
+
+.richText .richText-toolbar ul:after {
+	display: block;
+	content: "";
+	clear: both;
+}
+
+.richText .richText-toolbar:last-child {
+	font-size: 0.75rem;
+}
+
+.richText .richText-toolbar:after {
+	display: block;
+	clear: both;
+	content: "";
+}
+
+.richText .richText-form select {cursor: pointer;}
+
+.richText .richText-editor {
+	padding: 0.5rem;
+	background-color: #FFFFFF;
+	height: 15rem;
+	outline: none;
+	overflow-y: scroll;
+	overflow-x: auto;
+}
+
+.richText .richText-toolbar ul li a .richText-dropdown-outer {
+	display: none;
+	position: absolute;
+	top: 0;
+	left: 0;
+	right: 0;
+	bottom: 0;
+	background-color: rgba(0, 0, 0, 0.3);
+	cursor: default;
+}
+
+.richText .richText-toolbar ul li a .richText-dropdown-outer .richText-dropdown {
+	position: relative;
+	z-index:10;
+	display: block;
+	margin: 3% auto 0 auto;
+	background-color: #D6D8D8;
+	border: 0.1rem solid #777777;
+	border-radius: 0.25rem;
+	    padding: 0.75rem;
+    padding-top: 1.5rem;
+	max-width: 90%;
+	-webkit-box-shadow: 0 0 5px 0 #777777;
+	-moz-box-shadow: 0 0 5px 0 #777777;
+	box-shadow: 0 0 5px 0 #777777;
+}
+
+.richText .richText-toolbar ul li a .richText-dropdown-outer .richText-dropdown .richText-dropdown-close {
+	position: absolute;
+	top: 0.25rem;
+	right: 0.5rem;
+	color: #CE0E2D;
+	cursor: pointer;
+}
+
+.richText .richText-toolbar ul li a .richText-dropdown-outer .richText-dropdown .richText-dropdown-close:hover {
+	opacity: 0.5
+}
+
+.richText-form-item{
+    position: relative;
+    display: flex;
+    flex-wrap: wrap;
+    align-items: stretch;
+    width: 100%;
+}
+
+.richText .richText-form label {
+   display: flex;
+    align-items: left;/*center*/
+    padding: 0.375rem 0.75rem;
+    margin-bottom: 0;
+    font-size: 1rem;
+    font-weight: 400;
+    line-height: 1.5;
+	font-weight: 600;
+    text-align: left;/*center*/
+    white-space: nowrap;
+}
+
+.richText .richText-form input[type="text"], .richText .richText-form input[type="file"], .richText .richText-form input[type="number"], .richText .richText-form select {
+	display: block;
+    height: calc(1.5em + 0.75rem + 2px);
+    padding: 0.375rem 0.75rem;
+    font-size: 1rem;
+    font-weight: 400;
+    line-height: 1.5;
+    color: #777777;
+    background-color: #FFFFFF;
+    background-clip: padding-box;
+    border: 1px solid #D6D8DB;
+    border-radius: 0.25rem;
+    transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+    position: relative;
+    flex: 1 1 auto;
+    width: 1%;
+    margin-bottom: 0;
+}
+
+.richText .richText-toolbar ul li a .richText-dropdown-outer ul.richText-dropdown {list-style: none;}
+.richText .richText-toolbar ul li a .richText-dropdown-outer ul.richText-dropdown li {display: block;float: none;font-family: Calibri,Verdana,Helvetica,sans-serif;}
+.richText .richText-toolbar ul li a .richText-dropdown-outer ul.richText-dropdown li a {display: block;padding: 10px 15px;border-bottom: #EFEFEF solid 1px;}
+.richText .richText-toolbar ul li a .richText-dropdown-outer ul.richText-dropdown li a:hover {background-color: #FFFFFF;}
+.richText .richText-toolbar ul li a .richText-dropdown-outer ul.richText-dropdown li.inline {margin: 10px 6px;float: left;}
+.richText .richText-toolbar ul li a .richText-dropdown-outer ul.richText-dropdown li.inline a {display: block;padding: 0;margin: 0;border: none;-webkit-border-radius: 50%;-moz-border-radius: 50%;border-radius: 50%;-webkit-box-shadow: 0 0 10px 0 #999;-moz-box-shadow: 0 0 10px 0 #999;box-shadow: 0 0 10px 0 #999;}
+.richText .richText-toolbar ul li a .richText-dropdown-outer ul.richText-dropdown li.inline a span {display: block;height: 30px;width: 30px;-webkit-border-radius: 50%;-moz-border-radius: 50%;border-radius: 50%;}
+
+
+.richText .richText-undo, .richText .richText-redo {
+	float: left;
+	display: block;
+	padding: 0.5rem;
+	cursor: pointer;
+}
+
+.richText .richText-undo.is-disabled, .richText .richText-redo.is-disabled {
+	opacity: 0.4;
+}
+
+.richText .richText-help {
+	display: none;
+}
+
+/*
+.richText .richText-initial {margin-bottom: -4px;padding: 10px;background-color: #282828;border: none;color: #33FF33;font-family: Monospace,Calibri,Verdana,Helvetica,sans-serif;max-width: 100%;min-width: 100%;width: 100%;min-height: 400px;height: 400px;}
+.richText .richText-editor ul, .richText .richText-editor ol {margin: 10px 25px;}
+.richText .richText-editor:focus {border-left: #3498db solid 2px;}
+.richText .richText-editor table {margin: 10px 0;border-spacing: 0;width: 100%;}
+.richText .richText-editor table td, .richText .richText-editor table th {padding: 10px;border: #EFEFEF solid 1px;}
+.richText .richText-help {float: right;display: block;padding: 10px 15px;cursor: pointer;}
+.richText .richText-help-popup a {color: #3498db;text-decoration: underline;}
+.richText .richText-help-popup hr {margin: 10px auto 5px auto;border: none;border-top: #EFEFEF solid 1px;}
+.richText .richText-list.list-rightclick {position: absolute;background-color: #FAFAFA;border-right: #EFEFEF solid 1px;border-bottom: #EFEFEF solid 1px;}
+.richText .richText-list.list-rightclick li {padding: 5px 7px;cursor: pointer;list-style: none;}*/

+ 1074 - 0
css/sgi.css

@@ -0,0 +1,1074 @@
+/* 
+    Created on : 5/12/2018, 01:34:49 PM
+    Author     : Alejandro
+*/
+
+/* General */
+.container-fluid {
+    padding: 0;
+}
+
+#logo {
+    max-height: 64px;
+}
+
+body {
+    font-family: 'indivisa-text', Arial;
+    font-size: 16px !important;
+    color: #001D68;
+    background-color: white;
+}
+
+.bg-head {
+    background-color: white;
+}
+
+.bg-info {
+    background-color: #F0F0F0 !important;
+}
+
+.bloque-clase {
+    box-sizing: border-box;
+    background-color: #dee2e6;
+    padding: 10px;
+    margin-bottom: 10px;
+    min-height: 100%;
+    border-collapse: collapse;
+    border: .2rem solid white !important;
+}
+
+.bloque-clase.conflict {
+    border: .2rem solid var(--danger) !important;
+    background-color: #f6cfd6;
+}
+
+.bloque-clase:hover {
+    background-color: hsl(207, 12%, 85%);
+}
+
+.bloque-clase.conflict:hover {
+    background-color: hsl(0, 100%, 85%);
+}
+
+/* Make cursor move if draggable */
+.bloque-clase[draggable=true] {
+    cursor: move;
+}
+
+.bloque-clase.dragging {
+    opacity: .5;
+    border: .2rem solid var(--primary) !important;
+
+}
+
+.dragging-over {
+    border: .2rem solid var(--primary) !important;
+    background-color: #dee2e6;
+}
+
+.menu-flotante {
+    z-index: 500;
+    position: absolute;
+    bottom: 0;
+    right: 0;
+    background-color: #fff;
+    border-radius: 6px 0 0 0;
+    padding-top: 2px;
+}
+
+/* SOBREESCRIBE BOOTSTRAP */
+.marco {
+    max-width: 960px;
+    width: 100%;
+    margin-left: auto;
+    margin-right: auto;
+}
+
+.marco-wide {
+    max-width: 1366px;
+    width: 100%;
+    margin-left: auto;
+    margin-right: auto;
+}
+
+.content {
+    min-height: 480px;
+    padding: 1em;
+}
+
+.menu {
+    max-width: 960px;
+    width: 100%;
+    margin-left: auto;
+    margin-right: auto;
+    display: flex;
+    padding: 0 15px;
+}
+
+.menu-list .sistema:not(:last-child):after {
+    content: "|";
+    margin-left: 10px;
+    margin-right: 10px;
+}
+
+.sistema-active {
+    color: #d21034 !important;
+    font-weight: bold;
+}
+
+/*.font-small{font-size:14px;}*/
+
+/* Contenidos */
+h1,
+h2,
+h3 {
+    letter-spacing: 1px;
+    position: relative;
+}
+
+h1 {
+    margin-bottom: 40px;
+}
+
+.subtitle:before {
+    content: '';
+    position: absolute;
+    bottom: -8px;
+    left: 0;
+    width: 80px;
+    display: block;
+    background: #d21034;
+    height: 3px;
+}
+
+.main-title {
+    font-size: 3.2rem;
+    margin-bottom: 60px;
+}
+
+/* Otros */
+.alert-heading .ing-caret,
+.card-header .ing-caret,
+.side-menu .ing-caret {
+    transition: .3s transform ease-in-out;
+}
+
+.alert-heading .collapsed .ing-caret,
+.card-header .collapsed .ing-caret {
+    transform: rotate(90deg);
+}
+
+#accordionMenu .collapsed .ing-caret {
+    transform: rotate(-90deg);
+}
+
+.alert-heading .fa,
+.card-header .fa {
+    transition: .3s transform ease-in-out;
+}
+
+.alert-heading .collapsed .fa,
+.card-header .collapsed .fa {
+    transform: rotate(90deg);
+}
+
+#accordionMenu .collapsed .fa {
+    transform: rotate(-90deg);
+}
+
+.border-mid:not(:last-child) {
+    border-bottom: 1px dotted #ccc
+}
+
+.pointer {
+    cursor: pointer;
+}
+
+/* TABLAS */
+.table-white .thead-dark th {
+    text-align: center;
+    border-color: #fff;
+    text-transform: uppercase;
+}
+
+.table-white tr td,
+.table-white tr th {
+    border-left: 1px !important;
+    border-color: #fff;
+    border-style: solid;
+}
+
+.table-white tr td:first-child,
+.table-white tr th:first-child {
+    border-left: 0;
+}
+
+.table-nostriped tbody tr:nth-of-type(odd) {
+    background-color: transparent;
+}
+
+.rotate-text {
+    writing-mode: vertical-lr;
+    transform: rotate(180deg);
+    height: max-content;
+    height: -moz-max-content;
+    height: -webkit-max-content;
+    height: -o-max-content;
+    height: -ms-max-content;
+}
+
+.icono-acciones span,
+.icono-acciones i {
+    margin: 0 3px;
+    text-decoration: none !important;
+}
+
+.icono-acciones a:focus,
+.icono-acciones a:hover,
+.icono-acciones a:active {
+    text-decoration: none !important;
+}
+
+/* FORMAS  */
+.form-box {
+    margin-bottom: 28px;
+}
+
+.form-box>.form-group {
+    margin-bottom: 10px
+}
+
+.form-box>.form-group>label {
+    font-weight: bold;
+    text-align: right;
+    color: #001d68;
+    padding-left: 0
+}
+
+.form-box>.form-group>label.disabled {
+    color: #969696;
+}
+
+.form-box>.form-group>label:before {
+    content: '';
+    position: absolute;
+    top: -8px;
+    right: 0px;
+    width: 2px;
+    height: calc(100% + 16px);
+    display: block;
+    background: #d21034;
+}
+
+.form-box>.form-group>label.disabled:before {
+    background: #969696 !important;
+}
+
+.form-box-info>.form-group>div {
+    background-color: #f7f7f7;
+    padding-bottom: 10px;
+    padding-left: 8px;
+}
+
+.form-box-info>.form-group>div:first-child {
+    margin-left: 7px;
+}
+
+.form-box-info>.form-group:first-child>label {
+    padding-top: 27px;
+}
+
+.form-box-info>.form-group:first-child>div {
+    padding-top: 20px;
+}
+
+.form-box-info>.form-group:last-child>div {
+    padding-bottom: 20px;
+}
+
+.form-box-info>.form-group.row {
+    margin-bottom: 0 !important;
+}
+
+.modal .form-box-info>.form-group>div {
+    margin-left: 0px;
+}
+
+.radio-md {
+    width: 1em;
+    height: 1em;
+}
+
+.radio-lg {
+    width: 1.5em;
+    height: 1.5em;
+}
+
+.radio-xl {
+    width: 2em;
+    height: 2em;
+}
+
+select:disabled {
+    color: #969696 !important;
+}
+
+.input-info {
+    color: #969696;
+}
+
+.barra-right:before {
+    content: '';
+    position: absolute;
+    top: -8px;
+    right: 0px;
+    width: 2px;
+    height: calc(100% + 16px);
+    display: block;
+    background: #d21034;
+}
+
+/* Uso independiente */
+.barra-right.disabled:before {
+    background: #969696 !important;
+}
+
+/* Uso independiente */
+
+textarea {
+    resize: none;
+    overflow-x: hidden;
+    overflow-wrap: break-word;
+    overflow-y: auto;
+}
+
+.clock[readonly] {
+    background-color: #fff !important;
+}
+
+.hasDatepicker[readonly] {
+    background-color: #fff !important;
+}
+
+.badge {
+    padding: 0.5em 1.4em;
+}
+
+.ui-autocomplete {
+    max-height: 160px;
+    overflow-y: auto;
+    overflow-x: hidden;
+    font-size: 90%
+}
+
+/* Data list*/
+.datalist {
+    position: relative;
+    border: 1px solid #969696;
+    border-radius: .25rem;
+}
+
+.datalist-input {
+    padding: 6px 30px 6px 12px !important;
+    background: #FFFFFF !important;
+    border-radius: .25rem;
+    cursor: pointer;
+    border: 0;
+}
+
+.datalist.disabled .datalist-input {
+    background: #f7f7f7 !important;
+    cursor: default;
+    color: #969696;
+}
+
+.datalist.disabled .icono {
+    opacity: 0;
+}
+
+.datalist .icono {
+    position: absolute;
+    font-size: 20px;
+    right: 10px;
+    top: 9px;
+    color: #969696;
+    transition: transform 0.2s ease;
+}
+
+/*.iconoAzul{color: #001D68 !important;} Usar text-primary*/
+.datalist>ul {
+    position: absolute;
+    margin: 0;
+    padding: 0;
+    width: 100%;
+    max-height: 204px;
+    top: 100%;
+    left: 0;
+    list-style: none;
+    border-radius: 2px;
+    background: #FFFFFF;
+    border: 1px solid #001D68;
+    overflow: hidden;
+    overflow-y: auto;
+    z-index: 100;
+}
+
+.datalist>ul li {
+    display: flex;
+    align-items: center;
+    justify-content: start;
+    padding: 0.3em 1em
+        /*0.8em 1em 0.8em 1em*/
+    ;
+    color: #969696;
+}
+
+.datalist>ul li:not(.not-selectable):hover {
+    background: #D21034;
+    color: #FFFFFF;
+    cursor: pointer;
+}
+
+.datalist .selected {
+    background: #D21034;
+    color: #FFFFFF;
+}
+
+.datalist .not-selectable {
+    text-align: center;
+    font-weight: bold;
+    cursor: default;
+    color: #001d68;
+    padding-left: 10px !important;
+}
+
+.datalist-invalid {
+    border-color: #d21034;
+}
+
+.datalist-invalid .icono {
+    color: #d21034 !important;
+}
+
+/* Icono alerta */
+.alerta {
+    color: #ffb700 !important;
+    text-shadow: -1px -1px 0 #3f2f06, 1px -1px 0 #3f2f06, -1px 1px 0 #3f2f06, 1px 1px 0 #3f2f06;
+}
+
+/* Modal */
+.modal-content {
+    border: 4px solid #001d68;
+}
+
+.modal-header {
+    background-color: #001D68 !important;
+    color: #fff !important;
+    border-top-left-radius: 0;
+    border-top-right-radius: 0;
+    padding: 4px 8px 8px 8px;
+}
+
+.modal-title {
+    font-weight: normal;
+    text-align: center;
+    padding: 0 30px;
+}
+
+.modal-header .close {
+    position: absolute;
+    top: 0;
+    right: 0;
+}
+
+.modal-header .close:focus {
+    border: none;
+    outline: none;
+}
+
+/* The side navigation menu */
+#sidebar {
+    width: 400px;
+    position: fixed;
+    top: 0;
+    right: -400px;
+    height: 100vh;
+    z-index: 1023;
+    transition: all 0.3s;
+    overflow-y: auto;
+}
+
+#sidebar.active {
+    right: 0;
+}
+
+.overlay {
+    display: none;
+    position: fixed;
+    width: 100vw;
+    height: 100vh;
+    background: rgba(0, 0, 0, 0.6);
+    z-index: 1022;
+    opacity: 0;
+    transition: all 0.5s ease-in-out;
+}
+
+.overlay.active {
+    display: block;
+    opacity: 1;
+}
+
+#sidebar a:hover {
+    text-decoration: none;
+    color: #d12034;
+}
+
+#sidebar a {
+    transition: color 0.6s ease;
+}
+
+/* ICONOS MENU */
+header {
+    padding: 20px 0;
+    height: 110px;
+}
+
+header .logotipo {
+    float: left;
+    clear: none;
+    text-align: inherit;
+    width: 20%;
+    margin-left: 0;
+    margin-right: 0;
+}
+
+header .logotipo:before {
+    content: '';
+    display: table;
+}
+
+header .logotipo img,
+aside .logotipo img {
+    max-width: 200px;
+}
+
+.mainMenu {
+    min-width: 85px;
+}
+
+.menu .nav-item {
+    border-right: 1px solid #969696;
+}
+
+.menu .nav-item:last-child {
+    border-right: 0;
+}
+
+.menu .nav-item>a,
+.menu .nav-item>span {
+    color: #969696;
+    padding: 1px 10px;
+}
+
+.menu .nav-item>a:hover {
+    color: #D21034;
+    text-decoration: none;
+}
+
+.menu .nav-item>a {
+    transition: color 0.6s ease;
+}
+
+.max-h {
+    height: 45px !important;
+    max-height: 45px;
+}
+
+.max-w {
+    width: 45px !important;
+    max-width: 45px;
+}
+
+.iconSesion {
+    margin-right: -20px;
+}
+
+.iconLogin,
+.iconOff {
+    font-size: 16px;
+    display: block;
+    width: 60px;
+    -webkit-box-sizing: border-box;
+    -moz-box-sizing: border-box;
+    box-sizing: border-box;
+    border-radius: 30px 0 0 30px;
+}
+
+.iconOff:hover,
+.iconOff:active {
+    text-decoration: none;
+    background: #D21034;
+    color: #FFFFFF !important;
+    height: 40px;
+}
+
+.iconOff {
+    color: #D21034 !important;
+}
+
+.iconLogin:hover,
+.iconLogin:active,
+.iconOff:hover,
+.iconOff:active {
+    text-decoration: none;
+    color: #FFFFFF !important;
+    height: 40px;
+}
+
+.iconLogin {
+    color: #339933;
+}
+
+.iconLogin:hover,
+.iconLogin:active {
+    background: #339933;
+}
+
+.iconMenu {
+    font-size: 32px;
+}
+
+.menuicon:hover {
+    color: #101097 !important;
+}
+
+.cerraricon {
+    height: 40px !important;
+    max-height: 40px;
+    width: 40px !important;
+    max-width: 40px;
+    cursor: pointer;
+}
+
+.cerraricon:hover {
+    background: #101097 !important;
+}
+
+.fa-ul {
+    list-style-type: none;
+    margin-left: 2.5em;
+    padding-left: 0;
+}
+
+/* BUTTONS */
+/*.btn .fa-circle{color:rgba(255,255,255,0.15);}
+.btn .icon{font-weight: bold;}
+.btn-round{border-radius:30px; padding-left: 0.5rem!important; padding-right: 0.5rem!important;}*/
+
+.btn-ing {
+    position: relative;
+    padding-right: 35px;
+    padding-left: 20px;
+}
+
+.btn.arrow:after {
+    content: "\e905";
+    font-size: 14px;
+    position: absolute;
+    font-family: "ingfont";
+    right: 14px;
+    margin-top: 3px;
+    font-weight: bold;
+    -webkit-transition: 0.6s all ease;
+    -moz-transition: 0.6s all ease;
+    -o-transition: 0.6s all ease;
+    -ms-transition: 0.6s all ease;
+    transition: 0.6s all ease;
+    vertical-align: middle;
+}
+
+.btn-outline-secondary {
+    border: 0;
+}
+
+/* SOBREESCRIBE BOOTSTRAP */
+.btn-outline-primary.arrow:after {
+    color: #D21034;
+}
+
+.btn-outline-danger.arrow:after {
+    color: #001D68;
+}
+
+.btn-outline-secondary:hover.arrow:after {
+    color: #D21034;
+}
+
+.btn-outline-info:hover.arrow:after {
+    color: #001D68;
+}
+
+/***** SCROLLBAR *****/
+div ::-webkit-scrollbar {
+    width: 8px;
+}
+
+/*Ancho*/
+div ::-webkit-scrollbar-track {
+    background: #f7f7f7;
+}
+
+/*Riel*/
+div ::-webkit-scrollbar-thumb {
+    background: #969696;
+}
+
+/* Handle */
+div ::-webkit-scrollbar-thumb:hover {
+    background: #001d68;
+}
+
+/* Effects */
+/* Vars for primary, secondary, success, info, warning, danger, light, dark */
+
+:root {
+    --primary-color: #001d68;
+    --secondary-color: #001d68;
+    --success-color: #339933;
+    --danger-color: #d21034;
+    --warning-color: #ffc107;
+    --info-color: #969696;
+    --light-color: #f7f7f7;
+    --dark-color: #343a40;
+}
+
+.glow-primary {
+    background: var(--primary-color);
+    color: #fff;
+    border-radius: 5px;
+    padding: 5px;
+    box-shadow: 0 0 5px var(--primary-color);
+    transition: all 0.5s ease;
+}
+
+.glow-secondary {
+    background: var(--secondary-color);
+    color: #fff;
+    border-radius: 5px;
+    padding: 5px;
+    box-shadow: 0 0 5px var(--secondary-color);
+    transition: all 0.5s ease;
+}
+
+.glow-success {
+    background: var(--success-color);
+    color: #fff;
+    border-radius: 5px;
+    padding: 5px;
+    box-shadow: 0 0 5px var(--success-color);
+    transition: all 0.5s ease;
+}
+
+.glow-danger {
+    background: var(--danger-color);
+    color: #fff;
+    border-radius: 5px;
+    padding: 5px;
+    box-shadow: 0 0 5px var(--danger-color);
+    transition: all 0.5s ease;
+}
+
+.glow-warning {
+    background: var(--warning-color);
+    color: #fff;
+    border-radius: 5px;
+    padding: 5px;
+    box-shadow: 0 0 5px var(--warning-color);
+    transition: all 0.5s ease;
+}
+
+.glow-info {
+    background: var(--info-color);
+    color: #fff;
+    border-radius: 5px;
+    padding: 5px;
+    box-shadow: 0 0 5px var(--info-color);
+    transition: all 0.5s ease;
+}
+
+.glow-light {
+    background: var(--light-color);
+    color: #fff;
+    border-radius: 5px;
+    padding: 5px;
+    box-shadow: 0 0 5px var(--light-color);
+    transition: all 0.5s ease;
+}
+
+.glow-dark {
+    background: var(--dark-color);
+    color: #fff;
+    border-radius: 5px;
+    padding: 5px;
+    box-shadow: 0 0 5px var(--dark-color);
+    transition: all 0.5s ease;
+}
+
+/*Hover Handle */
+
+/***** FOOTER *****/
+footer {
+    font-size: 14px;
+    color: #fff;
+}
+
+footer .footerTop {
+    background: #001d68;
+    padding: 15px 0;
+}
+
+footer .footerTop .logotipo {
+    overflow: hidden;
+}
+
+footer .footerTop .logotipo h3 {
+    display: inline-block;
+    vertical-align: top;
+    color: #fff;
+    margin: 0;
+    float: right;
+    text-align: right;
+    font-size: 25px;
+    font-family: 'indivisa-text'
+}
+
+footer .footerTop .logotipo h3 span {
+    display: block;
+}
+
+footer .footerTop .menuFooter h3 {
+    font-size: 12px;
+    font-family: 'indivisa-text';
+    color: #fff !important;
+}
+
+footer .footerTop .menuFooter ul {
+    overflow: hidden;
+}
+
+footer ul {
+    list-style: none;
+    padding: 0;
+    margin: 0;
+}
+
+footer .footerTop .menuFooter ul>li {
+    *zoom: 1;
+    float: left;
+    clear: none;
+    text-align: inherit;
+    width: 16%;
+    margin-left: 0;
+    margin-right: 3%;
+}
+
+footer .footerTop .menuFooter ul>li ul li a {
+    font-size: 10px;
+}
+
+footer ul>li {
+    display: inline-block;
+    vertical-align: top;
+}
+
+.footerMore {
+    position: relative;
+    display: none;
+    padding: 5px 0;
+}
+
+footer a {
+    color: #fff;
+    -webkit-transition: color 0.5s;
+    transition: color 0.5s;
+}
+
+footer a:hover {
+    color: #ce0e2d !important;
+    text-decoration: none !important;
+}
+
+footer .footerTop .menuFooter ul>li ul li {
+    display: block;
+    width: 100%;
+    margin-bottom: 0px;
+}
+
+footer .ubicacion {
+    margin-top: 20px;
+    overflow: hidden;
+}
+
+footer .ubicacion .address {
+    display: inline-block;
+    /*width: 65%;*/
+    vertical-align: bottom;
+}
+
+footer .ubicacion .address h4,
+footer .ubicacion .address h4 a {
+    color: #0fb7f1;
+    font-size: 14px;
+    margin: 0 0 0 -5px;
+    position: relative;
+}
+
+footer .ubicacion .address h4 a {
+    display: inline-block;
+}
+
+footer .ubicacion .redes {
+    display: inline-block;
+    vertical-align: bottom;
+    /*width:32%;text-align:right*/
+}
+
+footer .ubicacion .redes h4 {
+    display: inline-block;
+    vertical-align: middle;
+    margin: 0;
+    font-size: 16px !important;
+    font-weight: bold;
+}
+
+footer .ubicacion .redes ul {
+    display: inline-block;
+    vertical-align: middle
+}
+
+footer .ubicacion .redes ul li {
+    margin-left: 2px
+}
+
+footer .footerMiddle {
+    background: #071e58;
+    overflow: hidden;
+}
+
+footer .footerMiddle nav ul {
+    text-align: center;
+}
+
+footer .footerMiddle nav ul li {
+    border-right: 1px solid #fff;
+    padding: 1px 10px;
+    display: inline-block;
+    margin-bottom: 10px;
+}
+
+footer ul>li {
+    display: inline-block;
+    vertical-align: top;
+}
+
+footer .footerBottom {
+    background: #091941;
+    overflow: hidden;
+    padding: 15px 0;
+}
+
+.footerBottom .logotipos {
+    display: inline-block;
+    vertical-align: middle;
+    width: 20%
+}
+
+footer .footerBottom .logotipos a {
+    display: inline-block;
+    width: 80px;
+    margin-right: 6px
+}
+
+footer .footerBottom .logotipos a.internacional {
+    width: 80px
+}
+
+footer .footerBottom .logotipos a.red {
+    width: 75px
+}
+
+footer .footerBottom .legales {
+    text-align: right;
+    float: right;
+    width: 60%;
+    margin-right: 0;
+    margin-left: auto;
+    padding-top: 10px;
+    padding-bottom: 0
+}
+
+footer .footerBottom .legales ul li {
+    border-right: 1px solid #fff;
+    padding: 1px 10px
+}
+
+footer .footerBottom .legales ul li:last-child {
+    border: 0
+}
+
+footer .tab-pane p {
+    font-size: 12px;
+    line-height: 18px;
+}
+
+@media (max-width: 800px) {
+
+    .menu,
+    .subMenu {
+        position: relative;
+    }
+
+    .iconoMenu {
+        position: absolute;
+        display: block;
+        right: 20px;
+        top: 10px;
+    }
+
+    .menuOculto {
+        display: none;
+    }
+
+    .form-box-info>.form-group>div {
+        margin-left: 0px;
+    }
+
+    /*
+    .responsive{
+        float: none;
+        text-align: center;
+        display: flex;
+        flex-direction: column;
+        flex-wrap: wrap;
+        justify-content: center;
+        align-items: center;
+    }*/
+}
+
+.movie {
+    transition: all 0.1s;
+    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
+}
+
+.movie:hover {
+    transform: scale(1.05);
+    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
+    font-size: 1.1em;
+}
+
+.movie:active {
+    transform: scale(1.1);
+    box-shadow: 0 6px 12px rgba(0, 0, 0, 0.2);
+    font-size: 1.2em;
+    font-weight: bold;
+}

+ 99 - 0
css/style.css

@@ -0,0 +1,99 @@
+.bg-azul {
+    background-color: #00a6CE;
+}
+
+.azul {
+    color: #00a6CE;
+}
+
+/* for sm */
+
+.custom-switch.custom-switch-sm .custom-control-label {
+    padding-left: 1rem;
+    padding-bottom: 1rem;
+}
+
+.custom-switch.custom-switch-sm .custom-control-label::before {
+    height: 1rem;
+    width: calc(1rem + 0.75rem);
+    border-radius: 2rem;
+}
+
+.custom-switch.custom-switch-sm .custom-control-label::after {
+    width: calc(1rem - 4px);
+    height: calc(1rem - 4px);
+    border-radius: calc(1rem - (1rem / 2));
+}
+
+.custom-switch.custom-switch-sm .custom-control-input:checked ~ .custom-control-label::after {
+    transform: translateX(calc(1rem - 0.25rem));
+}
+
+/* for md */
+
+.custom-switch.custom-switch-md .custom-control-label {
+    padding-left: 2rem;
+    padding-bottom: 1.5rem;
+}
+
+.custom-switch.custom-switch-md .custom-control-label::before {
+    height: 1.5rem;
+    width: calc(2rem + 0.75rem);
+    border-radius: 3rem;
+}
+
+.custom-switch.custom-switch-md .custom-control-label::after {
+    width: calc(1.5rem - 4px);
+    height: calc(1.5rem - 4px);
+    border-radius: calc(2rem - (1.5rem / 2));
+}
+
+.custom-switch.custom-switch-md .custom-control-input:checked ~ .custom-control-label::after {
+    transform: translateX(calc(1.5rem - 0.25rem));
+}
+
+/* for lg */
+
+.custom-switch.custom-switch-lg .custom-control-label {
+    padding-left: 3rem;
+    padding-bottom: 2rem;
+}
+
+.custom-switch.custom-switch-lg .custom-control-label::before {
+    height: 2rem;
+    width: calc(3rem + 0.75rem);
+    border-radius: 4rem;
+}
+
+.custom-switch.custom-switch-lg .custom-control-label::after {
+    width: calc(2rem - 4px);
+    height: calc(2rem - 4px);
+    border-radius: calc(3rem - (2rem / 2));
+}
+
+.custom-switch.custom-switch-lg .custom-control-input:checked ~ .custom-control-label::after {
+    transform: translateX(calc(2rem - 0.25rem));
+}
+
+/* for xl */
+
+.custom-switch.custom-switch-xl .custom-control-label {
+    padding-left: 4rem;
+    padding-bottom: 2.5rem;
+}
+
+.custom-switch.custom-switch-xl .custom-control-label::before {
+    height: 2.5rem;
+    width: calc(4rem + 0.75rem);
+    border-radius: 5rem;
+}
+
+.custom-switch.custom-switch-xl .custom-control-label::after {
+    width: calc(2.5rem - 4px);
+    height: calc(2.5rem - 4px);
+    border-radius: calc(4rem - (2.5rem / 2));
+}
+
+.custom-switch.custom-switch-xl .custom-control-input:checked ~ .custom-control-label::after {
+    transform: translateX(calc(2.5rem - 0.25rem));
+}

+ 142 - 0
css/toggle.css

@@ -0,0 +1,142 @@
+/*\
+|*| ========================================================================
+|*| Bootstrap Toggle: bootstrap4-toggle.css v3.6.1
+|*| https://gitbrent.github.io/bootstrap4-toggle/
+|*| ========================================================================
+|*| Copyright 2018-2019 Brent Ely
+|*| Licensed under MIT
+|*| ========================================================================
+\*/
+
+/*
+* @added 3.0.0: Return support for "*-xs" removed in Bootstrap-4
+* @see: [Comment](https://github.com/twbs/bootstrap/issues/21881#issuecomment-341972830)
+*/
+.btn-group-xs > .btn, .btn-xs {
+	padding: .35rem .4rem .25rem .4rem;
+	font-size: .875rem;
+	line-height: .5;
+	border-radius: 20rem;
+}
+
+.checkbox label .toggle, .checkbox-inline .toggle {
+	margin-left: -1.25rem;
+	margin-right: .35rem;
+}
+
+.toggle {
+	position: relative;
+	overflow: hidden;
+}
+.toggle.btn.btn-light, .toggle.btn.btn-outline-light {
+	/* bootstrap-4 - add a border so toggle is delineated */
+	border-color: rgba(0, 0, 0, .15);
+}
+.toggle input[type="checkbox"] {
+	display: none;
+}
+.toggle-group {
+	position: absolute;
+	width: 200%;
+	top: 0;
+	bottom: 0;
+	left: 0;
+	transition: left 0.35s;
+	-webkit-transition: left 0.35s;
+	-moz-user-select: none;
+	-webkit-user-select: none;
+}
+.toggle-group label, .toggle-group span { cursor: pointer; }
+.toggle.off .toggle-group {
+	left: -100%;
+}
+.toggle-on {
+	position: absolute;
+	top: 0;
+	bottom: 0;
+	left: 0;
+	right: 50%;
+	margin: 0;
+	border: 0;
+	border-radius: 20rem;
+}
+.toggle-off {
+	position: absolute;
+	top: 0;
+	bottom: 0;
+	left: 50%;
+	right: 0;
+	margin: 0;
+	border: 0;
+	border-radius: 20rem;
+	box-shadow: none; /* Bootstrap 4.0 Support via (Issue #186)[https://github.com/minhur/bootstrap-toggle/issues/186]) */
+}
+.toggle-handle {
+	position: relative;
+	margin: 0 auto;
+	padding-top: 0px;
+	padding-bottom: 0px;
+	height: 100%;
+	width: 0px;
+	border-width: 0 1px;
+	background-color: #FFFFFF;
+}
+
+.toggle.btn-outline-primary .toggle-handle {
+	background-color: var(--primary);
+	border-color: var(--primary);
+}
+.toggle.btn-outline-secondary .toggle-handle {
+	background-color: var(--secondary);
+	border-color: var(--secondary);
+}
+.toggle.btn-outline-success .toggle-handle {
+	background-color: var(--success);
+	border-color: var(--success);
+}
+.toggle.btn-outline-danger .toggle-handle {
+	background-color: var(--danger);
+	border-color: var(--danger);
+}
+.toggle.btn-outline-warning .toggle-handle {
+	background-color: var(--warning);
+	border-color: var(--warning);
+}
+.toggle.btn-outline-info .toggle-handle {
+	background-color: var(--info);
+	border-color: var(--info);
+}
+.toggle.btn-outline-light .toggle-handle {
+	background-color: var(--light);
+	border-color: var(--light);
+}
+.toggle.btn-outline-dark .toggle-handle {
+	background-color: var(--dark);
+	border-color: var(--dark);
+}
+.toggle[class*="btn-outline"]:hover .toggle-handle {
+	background-color: var(--light);
+	opacity: 0.5;
+}
+
+/* NOTE: Must come first, so classes below override as needed */
+/* [default] (bootstrap-4.1.3 - .btn - h:38px) */
+.toggle.btn { min-width: 3.7rem; min-height: 2.15rem; }
+.toggle-on.btn { padding-right: 1.5rem; }
+.toggle-off.btn { padding-left: 1.5rem; }
+
+/* `lg` (bootstrap-4.1.3 - .btn - h:48px) */
+.toggle.btn-lg { min-width: 5rem; min-height: 2.815rem; }
+.toggle-on.btn-lg { padding-right: 2rem; }
+.toggle-off.btn-lg { padding-left: 2rem; }
+.toggle-handle.btn-lg { width: 2.5rem; }
+
+/* `sm` (bootstrap-4.1.3 - .btn - h:31px) */
+.toggle.btn-sm { min-width: 3.125rem; min-height: 1.938rem; }
+.toggle-on.btn-sm { padding-right: 1rem; }
+.toggle-off.btn-sm { padding-left: 1rem; }
+
+/* `xs` (bootstrap-3.3 - .btn - h:22px) */
+.toggle.btn-xs { min-width: 2.19rem; min-height: 1.375rem; }
+.toggle-on.btn-xs { padding-right: .8rem; }
+.toggle-off.btn-xs { padding-left: .8rem; }

BIN
fonts/fa/fa-brands-400.eot


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 22 - 0
fonts/fa/fa-brands-400.svg


BIN
fonts/fa/fa-brands-400.ttf


BIN
fonts/fa/fa-brands-400.woff


BIN
fonts/fa/fa-brands-400.woff2


BIN
fonts/fa/fa-regular-400.eot


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 265 - 0
fonts/fa/fa-regular-400.svg


BIN
fonts/fa/fa-regular-400.ttf


BIN
fonts/fa/fa-regular-400.woff


BIN
fonts/fa/fa-regular-400.woff2


BIN
fonts/fa/fa-solid-900.eot


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 46 - 0
fonts/fa/fa-solid-900.svg


BIN
fonts/fa/fa-solid-900.ttf


BIN
fonts/fa/fa-solid-900.woff


BIN
fonts/fa/fa-solid-900.woff2


BIN
fonts/indivisaFont/eot/IndivisaDisplaySans-Heavy.eot


BIN
fonts/indivisaFont/eot/IndivisaDisplaySans-HeavyItalic.eot


BIN
fonts/indivisaFont/eot/IndivisaDisplaySans-Regular.eot


BIN
fonts/indivisaFont/eot/IndivisaDisplaySans-RegularItalic.eot


BIN
fonts/indivisaFont/eot/IndivisaDisplaySans-Thin.eot


BIN
fonts/indivisaFont/eot/IndivisaDisplaySans-ThinItalic.eot


BIN
fonts/indivisaFont/eot/IndivisaDisplaySerif-RegularItalic.eot


BIN
fonts/indivisaFont/eot/IndivisaTextSans-Black.eot


BIN
fonts/indivisaFont/eot/IndivisaTextSans-BlackItalic.eot


BIN
fonts/indivisaFont/eot/IndivisaTextSans-Bold.eot


BIN
fonts/indivisaFont/eot/IndivisaTextSans-BoldItalic.eot


BIN
fonts/indivisaFont/eot/IndivisaTextSans-Light.eot


BIN
fonts/indivisaFont/eot/IndivisaTextSans-LightItalic.eot


BIN
fonts/indivisaFont/eot/IndivisaTextSans-Regular.eot


BIN
fonts/indivisaFont/eot/IndivisaTextSans-RegularItalic.eot


BIN
fonts/indivisaFont/otf/IndivisaDisplaySans-Heavy.otf


BIN
fonts/indivisaFont/otf/IndivisaDisplaySans-HeavyItalic.otf


BIN
fonts/indivisaFont/otf/IndivisaDisplaySans-Regular.otf


BIN
fonts/indivisaFont/otf/IndivisaDisplaySans-RegularItalic.otf


BIN
fonts/indivisaFont/otf/IndivisaDisplaySans-Thin.otf


BIN
fonts/indivisaFont/otf/IndivisaDisplaySans-ThinItalic.otf


BIN
fonts/indivisaFont/otf/IndivisaDisplaySerif-RegularItalic.otf


BIN
fonts/indivisaFont/otf/IndivisaTextSans-Black.otf


BIN
fonts/indivisaFont/otf/IndivisaTextSans-BlackItalic.otf


BIN
fonts/indivisaFont/otf/IndivisaTextSans-Bold.otf


BIN
fonts/indivisaFont/otf/IndivisaTextSans-BoldItalic.otf


BIN
fonts/indivisaFont/otf/IndivisaTextSans-Light.otf


BIN
fonts/indivisaFont/otf/IndivisaTextSans-LightItalic.otf


BIN
fonts/indivisaFont/otf/IndivisaTextSans-Regular.otf


BIN
fonts/indivisaFont/otf/IndivisaTextSans-RegularItalic.otf


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 10 - 0
fonts/indivisaFont/svg/IndivisaDisplaySans-Heavy.svg


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 10 - 0
fonts/indivisaFont/svg/IndivisaDisplaySans-HeavyItalic.svg


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 10 - 0
fonts/indivisaFont/svg/IndivisaDisplaySans-Regular.svg


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 10 - 0
fonts/indivisaFont/svg/IndivisaDisplaySans-RegularItalic.svg


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 10 - 0
fonts/indivisaFont/svg/IndivisaDisplaySans-Thin.svg


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 10 - 0
fonts/indivisaFont/svg/IndivisaDisplaySans-ThinItalic.svg


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 15 - 0
fonts/indivisaFont/svg/IndivisaDisplaySerif-RegularItalic.svg


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 11 - 0
fonts/indivisaFont/svg/IndivisaTextSans-Black.svg


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 11 - 0
fonts/indivisaFont/svg/IndivisaTextSans-BlackItalic.svg


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 11 - 0
fonts/indivisaFont/svg/IndivisaTextSans-Bold.svg


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 11 - 0
fonts/indivisaFont/svg/IndivisaTextSans-BoldItalic.svg


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 11 - 0
fonts/indivisaFont/svg/IndivisaTextSans-Light.svg


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 11 - 0
fonts/indivisaFont/svg/IndivisaTextSans-LightItalic.svg


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 11 - 0
fonts/indivisaFont/svg/IndivisaTextSans-Regular.svg


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 11 - 0
fonts/indivisaFont/svg/IndivisaTextSans-RegularItalic.svg


BIN
fonts/indivisaFont/ttf/IndivisaDisplaySans-Heavy.ttf


BIN
fonts/indivisaFont/ttf/IndivisaDisplaySans-HeavyItalic.ttf


BIN
fonts/indivisaFont/ttf/IndivisaDisplaySans-Regular.ttf


BIN
fonts/indivisaFont/ttf/IndivisaDisplaySans-RegularItalic.ttf


BIN
fonts/indivisaFont/ttf/IndivisaDisplaySans-Thin.ttf


BIN
fonts/indivisaFont/ttf/IndivisaDisplaySans-ThinItalic.ttf


BIN
fonts/indivisaFont/ttf/IndivisaDisplaySerif-RegularItalic.ttf


BIN
fonts/indivisaFont/ttf/IndivisaTextSans-Black.ttf


BIN
fonts/indivisaFont/ttf/IndivisaTextSans-BlackItalic.ttf


BIN
fonts/indivisaFont/ttf/IndivisaTextSans-Bold.ttf


برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است