init commit

This commit is contained in:
Jose
2025-09-14 18:41:10 +02:00
commit a8408f0f43
66 changed files with 3016 additions and 0 deletions

View File

@@ -0,0 +1,28 @@
.dropdown-menu .dropdown-divider {
border-top: 1px solid var(--divider-color);
}
.dropdown-menu {
background-color: var(--bg-color) !important;
color: var(--text-color) !important;
}
.dropdown-menu.show {
background-color: var(--navbar-bg) !important;
box-shadow: 0 5px 10px var(--shadow-color);
}
.dropdown-item {
background-color: var(--navbar-bg) !important;
color: var(--navbar-dropdown-item-color);
cursor: pointer;
}
.dropdown-item:hover {
background-color: var(--navbar-bg) !important;
color: var(--secondary-color) !important;
}
.disabled.text-muted {
color: var(--muted-color) !important;
}

51
src/css/Building.css Normal file
View File

@@ -0,0 +1,51 @@
/* ================================
BUILDING COMPONENT - VISUAL ONLY
================================== */
.building-container {
font-family: 'Product Sans', sans-serif;
color: var(--fg-color);
animation: fadeInScale 0.5s ease;
}
.building-icon {
font-size: 4rem;
margin-bottom: 1rem;
animation: bounce 2s infinite;
}
.building-title {
font-size: 2rem;
font-weight: bold;
}
.building-subtitle {
font-size: 1.2rem;
margin-top: 0.5rem;
opacity: 0.75;
}
/* Animaciones */
@keyframes fadeInScale {
from {
opacity: 0;
transform: scale(0.95);
}
to {
opacity: 1;
transform: scale(1);
}
}
@keyframes bounce {
0%,
100% {
transform: translateY(0px);
}
50% {
transform: translateY(-8px);
}
}

View File

@@ -0,0 +1,11 @@
.carousel-img-wrapper {
padding: 0.5rem;
}
.carousel-img {
width: 100%;
height: auto;
border-radius: 1rem;
max-height: 60vh;
object-fit: cover;
}

149
src/css/Footer.css Normal file
View File

@@ -0,0 +1,149 @@
.footer {
background-color: var(--navbar-bg); /* más similar al navbar */
color: var(--fg-color);
border-top: 3px solid var(--border-color);
font-size: 1rem;
box-shadow: 0 -2px 8px var(--shadow-color);
position: relative;
z-index: 1;
}
.footer::before {
content: "";
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 12px;
background-color: var(--primary-color);
opacity: 0.25;
pointer-events: none;
}
.footer-title,
.footer h6#devd {
font-family: "Product Sans";
font-size: 1.8rem;
font-weight: 700;
margin-bottom: 1rem;
color: var(--primary-color);
}
.footer-columns {
display: flex;
flex-direction: column;
gap: 2rem;
margin-bottom: 2rem;
background-color: var(--bg-hover-color); /* sutil contraste */
padding: 1.5rem;
border-radius: 1rem;
box-shadow: 0 4px 10px rgba(0,0,0,0.04);
}
@media (min-width: 768px) {
.footer-columns {
flex-direction: row;
justify-content: space-between;
align-items: flex-start;
}
}
.footer-column {
flex: 1;
min-width: 200px;
}
.footer-column h5 {
font-size: 1.1rem;
margin-bottom: 0.75rem;
font-weight: 600;
color: var(--fg-color);
}
.footer-column ul {
list-style: none;
padding: 0;
margin: 0;
}
.footer-column ul li {
margin-bottom: 0.5rem;
}
.footer-column ul li a {
color: var(--fg-color);
text-decoration: none;
}
.footer-column ul li a:hover {
color: var(--primary-color);
text-shadow: 0 0 4px currentColor;
}
.footer-bottom {
font-size: 0.9rem;
opacity: 0.85;
text-align: center;
border-top: 1px solid var(--divider-color);
}
.footer-bottom a {
font-weight: 600;
text-decoration: none;
color: var(--fg-color);
}
.footer-bottom a:hover {
text-shadow: 0 0 5px currentColor;
color: var(--primary-color);
}
.contact-info {
display: flex;
flex-direction: column;
gap: 0.5rem;
padding: 1rem;
border-radius: 1rem;
font-size: 0.95rem;
background-color: var(--contact-info-bg);
color: var(--primary-color);
box-shadow: 0 4px 10px var(--shadow-color);
}
.contact-info a {
font-weight: 600;
text-decoration: none;
color: var(--primary-color);
display: inline-flex;
align-items: center;
gap: 0.5rem;
}
.contact-info a:hover {
transform: translateX(8px);
color: var(--secondary-color);
}
.contact-info .fa-icon {
font-size: 1.2rem;
color: var(--primary-color);
}
.heart-anim {
display: inline-block;
animation: heartbeat 1.5s infinite ease-in-out;
}
@keyframes heartbeat {
0%, 100% {
transform: scale(1);
}
50% {
transform: scale(1.15);
}
}

43
src/css/Header.css Normal file
View File

@@ -0,0 +1,43 @@
/* ================================
HEADER - ESTILO BASE
================================== */
.bg-img {
background-image: url('/images/bg.png');
background-size: cover;
background-position: center;
background-repeat: no-repeat;
}
/*.mask {
background-color: var(--header-mask-color);
backdrop-filter: blur(4px);
-webkit-backdrop-filter: blur(4px);
}
*/
.header-title {
font-family: 'Product Sans';
font-size: 3em;
font-weight: bolder;
color: var(--text-color);
}
.shadowed {
text-shadow: 2px 2px 2px rgba(0, 0, 0, 0.5);
}
/* ================================
RESPONSIVE HEADER TITLE
================================== */
@media (max-width: 768px) {
.header-title {
font-size: 2em;
padding: 0 1rem;
text-align: center;
}
}

0
src/css/Home.css Normal file
View File

53
src/css/LoginForm.css Normal file
View File

@@ -0,0 +1,53 @@
/* ================================
LOGIN - CARD CONTAINER (VISUAL)
================================== */
.login-card {
background-color: var(--login-bg) !important;
color: var(--text-color);
box-shadow: 0 0 10px var(--shadow-color);
}
/* ================================
INPUTS VISUALES
================================== */
input.form-control {
background-color: var(--input-bg);
color: var(--input-text);
border: 1px solid var(--input-border);
}
/* ================================
LABELS PERSONALIZADAS
================================== */
.form-floating>label {
font-family: 'Product Sans';
font-size: 1.1em;
color: var(--label-color);
}
.form-floating>label::after {
background-color: transparent !important;
}
/* ================================
BOTÓN VISUAL
================================== */
.login-button {
font-family: 'Product Sans' !important;
font-size: 1.3em !important;
font-weight: bold !important;
background-color: var(--login-btn-bg) !important;
color: var(--login-btn-text) !important;
}
.login-button:hover {
background-color: var(--login-btn-hover) !important;
color: var(--login-btn-text-hover) !important;
}

57
src/css/NavBar.css Normal file
View File

@@ -0,0 +1,57 @@
/* ================================
NAVBAR - VISUAL + THEMING ONLY
================================== */
.navbar {
background-color: var(--navbar-bg) !important;
box-shadow: var(--navbar-shadow);
z-index: 1000;
}
.navbar-brand {
color: var(--navbar-brand-color) !important;
}
.navbar-brand:hover {
color: var(--navbar-brand-hover) !important;
}
a.nav-link,
.nav-item > a.nav-link,
.dropdown-item {
font-family: "Product Sans";
font-size: larger;
border-radius: 8px;
padding: 0.5rem 1rem;
color: var(--navbar-link-color) !important;
}
.nav-link:hover,
.nav-link:focus {
background-color: var(--navbar-link-hover-bg) !important;
color: var(--navbar-link-hover-color) !important;
}
hr {
border-top: 1px solid var(--navbar-divider-color);
}
/* ================================
ANIMACIONES
================================== */
@keyframes fadeIn {
from {
opacity: 0;
transform: translateY(-5px);
}
to {
opacity: 1;
transform: translateY(0);
}
}

View File

@@ -0,0 +1,7 @@
button.show-button {
color: var(--show-btn-color);
}
button.show-button:hover {
color: var(--show-btn-hover);
}

61
src/css/ThemeButton.css Normal file
View File

@@ -0,0 +1,61 @@
/* ================================
THEME TOGGLE - BASE
================================== */
.theme-toggle {
width: auto;
height: 40px;
border: none;
border-radius: 999px;
display: flex;
padding: 0 1rem;
align-items: center;
justify-content: center;
cursor: pointer;
outline: none;
background-color: var(--toggle-bg);
color: var(--toggle-fg);
font-family: 'Product Sans';
font-size: 1.2rem;
transition:
background-color 0.3s ease,
color 0.3s ease,
transform 0.2s ease,
box-shadow 0.3s ease;
}
/* ================================
HOVER / ACTIVE STATES
================================== */
.theme-toggle:hover {
transform: scale(1.05);
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.2);
}
/* ================================
LIGHT THEME
================================== */
.light {
--toggle-bg: #1e1e1e;
--toggle-fg: #f0f0f0;
}
.light .theme-toggle {
box-shadow: 0 0px 10px rgba(68, 7, 182, 0.808);
}
/* ================================
DARK THEME
================================== */
.dark {
--toggle-bg: #f0f0f0;
--toggle-fg: #1e1e1e;
}
.dark .theme-toggle {
box-shadow: 0 0px 10px rgba(206, 180, 36, 0.589);
}

230
src/css/index.css Normal file
View File

@@ -0,0 +1,230 @@
/* ================================
FUENTES PERSONALIZADAS
================================== */
@font-face {
font-family: "Open Sans";
src: url('/fonts/OpenSans.ttf');
}
@font-face {
font-family: "Product Sans";
src: url('/fonts/ProductSansRegular.ttf');
}
@font-face {
font-family: "Product Sans Italic";
src: url('/fonts/ProductSansItalic.ttf');
}
@font-face {
font-family: "Product Sans Italic Bold";
src: url('/fonts/ProductSansBoldItalic.ttf');
}
@font-face {
font-family: "Product Sans Bold";
src: url('/fonts/ProductSansBold.ttf');
}
/* ================================
PALETA DE COLORES
================================== */
:root {
--highlight-border: var(--accent-color);
--box-shadow-soft: 0 4px 6px var(--shadow-color);
--alert-bg: #f8d7da;
}
.light {
--primary-color: #333;
--secondary-color: #555;
--tertiary-color: #777;
--border-color: #ccc;
--divider-color: #ddd;
--bg-color: #fff;
--fg-color: #111;
--text-color: #111;
--muted-color: #666;
--shadow-color: rgba(0, 0, 0, 0.1);
--bg-hover-color: #f0f0f0;
--bg-search-bar: rgba(0,0,0,0.05);
--input-bg: #fff;
--input-border: #ccc;
--placeholder-color: #999;
--input-text: var(--text-color);
--accent-color: #333;
--btn-bg: #333;
--btn-bg-hover: #555;
--btn-text: #fff;
--btn-text-hover: #fff;
--icon-color: var(--fg-color);
--highlight-border: #777;
--card-bg: #fff;
--card-button: #fff;
--card-border: #ccc;
--card-text: var(--text-color);
--card-text-secondary: #555;
--card-btn-hover: rgba(0,0,0,0.05);
--card-muted-text: #666;
--item-bg: #fff;
--item-text: var(--text-color);
--subtitle-color: #666;
--login-bg: #f9f9f9;
--label-color: var(--text-color);
--login-btn-bg: #333;
--login-btn-hover: #555;
--login-btn-text: #fff;
--login-btn-text-hover: #111;
--header-mask-color: rgba(0,0,0,0.1);
--navbar-bg: #fff;
--navbar-brand-color: #333;
--navbar-brand-hover: #555;
--navbar-link-color: #111;
--navbar-link-hover-bg: #f0f0f0;
--navbar-link-hover-color: #333;
--navbar-dropdown-bg: #fff;
--navbar-dropdown-item-color: #111;
--navbar-dropdown-item-hover-color: #333;
--navbar-divider-color: #ccc;
--hamburger-color: #333;
--navbar-shadow: 0 2px 6px rgba(0,0,0,0.05);
--show-btn-color: #333;
--show-btn-hover: #555;
--header-btn-hover: rgba(0,0,0,0.05);
--list-hover-bg: rgba(0,0,0,0.03);
--list-hover-bg-light: #f5f5f5;
--list-active-bg-light: #e0e0e0;
--search-bg: rgba(255,255,255,0.6);
--search-border: #ccc;
--search-input-color: #111;
--search-placeholder: #999;
--toolbar-btn-color: #111;
--toolbar-btn-hover: rgba(0,0,0,0.07);
--modal-bg: #fff;
--modal-header-border: #ccc;
--modal-body-bg: #fff;
--modal-close-color: #111;
--contact-info-bg: #f5f5f5;
--balance-report-bg: #fff;
--file-card-bg: #fff;
--sidebar-bg: #eee;
}
.dark {
--primary-color: #eee;
--secondary-color: #ccc;
--tertiary-color: #999;
--border-color: #444;
--divider-color: #555;
--bg-color: #111;
--fg-color: #fff;
--text-color: #fff;
--muted-color: #aaa;
--shadow-color: rgba(0,0,0,0.5);
--bg-hover-color: #222;
--bg-search-bar: rgba(255,255,255,0.05);
--input-bg: #222;
--input-border: #555;
--placeholder-color: #888;
--input-text: #fff;
--accent-color: #eee;
--btn-bg: #eee;
--btn-bg-hover: #ccc;
--btn-text: #111;
--btn-text-hover: #000;
--icon-color: #fff;
--highlight-border: #999;
--alert-bg: #500;
--card-bg: #222;
--card-button: #222;
--card-border: #555;
--card-text: #fff;
--card-text-secondary: #ccc;
--card-btn-hover: rgba(255,255,255,0.05);
--item-bg: #222;
--item-text: #fff;
--subtitle-color: #aaa;
--login-bg: #111;
--label-color: #fff;
--login-btn-bg: #eee;
--login-btn-hover: #ccc;
--login-btn-text: #111;
--login-btn-text-hover: #000;
--header-mask-color: rgba(0,0,0,0.3);
--navbar-bg: #111;
--navbar-brand-color: #eee;
--navbar-brand-hover: #ccc;
--navbar-link-color: #fff;
--navbar-link-hover-bg: #222;
--navbar-link-hover-color: #ccc;
--navbar-dropdown-bg: #222;
--navbar-dropdown-item-color: #fff;
--navbar-dropdown-item-hover-color: #ccc;
--navbar-divider-color: #555;
--hamburger-color: #eee;
--navbar-shadow: 0 2px 5px rgba(0,0,0,0.5);
--show-btn-color: #eee;
--show-btn-hover: #ccc;
--card-muted-text: #aaa;
--header-btn-hover: rgba(255,255,255,0.05);
--list-hover-bg: rgba(255,255,255,0.03);
--list-hover-bg-dark: #333;
--list-active-bg-dark: #444;
--search-bg: rgba(255,255,255,0.1);
--search-border: #555;
--search-input-color: #fff;
--search-placeholder: #888;
--toolbar-btn-color: #fff;
--toolbar-btn-hover: rgba(255,255,255,0.08);
--modal-bg: #222;
--modal-header-border: #555;
--modal-body-bg: #222;
--modal-close-color: #fff;
--contact-info-bg: #111;
--balance-report-bg: #222;
--file-card-bg: #222;
--sidebar-bg: #000;
}
/* ================================
ESTILOS BASE / RESET SUAVE
================================== */
html,
body {
font-family: "Open Sans", sans-serif;
color: var(--text-color);
background-color: var(--bg-color);
}
body {
background-color: transparent !important; /* compatibilidad navbar fija */
}
main {
color: var(--text-color);
background-color: var(--bg-color);
}
/* Tipografía global */
div,
label,
input,
p,
span,
a,
button {
font-family: "Open Sans", sans-serif;
color: var(--text-color);
}
h1,
h2,
h3,
h4,
h5,
h6 {
font-family: "Product Sans", sans-serif;
color: var(--text-color);
}