From a316e5dd0876a581437b08d9980b658cc714da90 Mon Sep 17 00:00:00 2001 From: dmolinari Date: Mon, 6 Oct 2025 12:25:12 -0300 Subject: [PATCH] Fix Styles CSS --- .../CongresoNacionalWidget.module.css | 346 ++++++------------ .../nacionales/CongresoNacionalWidget.tsx | 2 +- .../nacionales/HomeCarouselWidget.module.css | 1 - .../nacionales/PanelNacional.module.css | 3 - ...ResultadosNacionalesCardsWidget.module.css | 2 - .../net9.0/Elecciones.Api.AssemblyInfo.cs | 2 +- .../net9.0/Elecciones.Core.AssemblyInfo.cs | 2 +- .../Elecciones.Database.AssemblyInfo.cs | 2 +- .../Elecciones.Infrastructure.AssemblyInfo.cs | 2 +- .../net9.0/Elecciones.Worker.AssemblyInfo.cs | 2 +- 10 files changed, 113 insertions(+), 251 deletions(-) diff --git a/Elecciones-Web/frontend/src/features/legislativas/nacionales/CongresoNacionalWidget.module.css b/Elecciones-Web/frontend/src/features/legislativas/nacionales/CongresoNacionalWidget.module.css index 07c6f50..44d167b 100644 --- a/Elecciones-Web/frontend/src/features/legislativas/nacionales/CongresoNacionalWidget.module.css +++ b/Elecciones-Web/frontend/src/features/legislativas/nacionales/CongresoNacionalWidget.module.css @@ -3,265 +3,116 @@ /* --- SOLUCIÓN PARA FUENTES Y ESTILOS GLOBALES --- */ .congresoContainer, .congresoContainer * { - font-family: "Public Sans", system-ui, sans-serif !important; + font-family: "Roboto", system-ui, sans-serif !important; box-sizing: border-box; } +/* --- Reseteos Generales --- */ +.congresoContainer h1, .congresoContainer h2, .congresoContainer h3, .congresoContainer h4, .congresoContainer h5, .congresoContainer h6, .congresoContainer div, .congresoContainer p, .congresoContainer span, .congresoContainer strong, .congresoContainer em, .congresoContainer b, .congresoContainer i { + line-height: 1.2; margin: 0; padding: 0; color: inherit; text-align: left; vertical-align: baseline; border: 0; +} + +/* --- ESTILOS BASE (VISTA ANCHA/ESCRITORIO) --- */ .congresoContainer { - display: flex; - gap: 1.5rem; - background-color: #ffffff; - border: 1px solid #e0e0e0; - box-shadow: 0 2px 5px rgba(0, 0, 0, 0.05); - padding: 1rem; - border-radius: 8px; - max-width: 900px; - margin: 20px auto; - color: #333333; - --primary-accent-color: #007bff; /* Movida aquí desde :root */ + display: flex; flex-direction: row; align-items: stretch; gap: 1.5rem; + background-color: #ffffff; border: 1px solid #e0e0e0; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.05); + padding: 1rem; border-radius: 8px; max-width: 900px; margin: 20px auto; + color: #333333; --primary-accent-color: #007bff; height: 500px; + container-type: inline-size; container-name: congreso-widget; } -.congresoGrafico { - flex: 2; - min-width: 300px; - display: flex; - flex-direction: column; -} +/* ... (El resto de los estilos base permanece sin cambios) ... */ +.congresoGrafico { flex: 2; min-width: 300px; display: flex; flex-direction: column; } +.congresoHemicicloWrapper { flex-grow: 1; display: flex; align-items: center; justify-content: center; width: 100%; } +.congresoHemicicloWrapper.isHovering :global(.party-block:not(:hover)) { opacity: 0.3; } +.congresoGrafico svg { width: 100%; height: auto; } +.congresoFooter { width: 100%; display: flex; justify-content: space-between; align-items: center; padding: 0.75rem 0.5rem 0 0.5rem; margin-top: auto; font-size: 0.8em; color: #666; border-top: 1px solid #eee; } +.footerLegend { display: flex; gap: 1.25rem; align-items: center; } +.footerLegendItem { display: flex; align-items: center; gap: 0.6rem; font-size: 1.1em; } +.legendIcon { display: inline-block; width: 14px; height: 14px; border-radius: 50%; } +.legendIconSolid { background-color: #888; border: 1px solid #777; } +.legendIconRing { background-color: rgba(136, 136, 136, 0.3); border: 1px solid #888; } +.footerTimestamp { font-weight: 500; font-size: 0.75em; text-align: right; } +.congresoSummary { flex: 1; border-left: 1px solid #e0e0e0; padding-left: 1.25rem; display: flex; flex-direction: column; justify-content: flex-start; } +.congresoSummary h3 { text-align: center; margin-top: 0.25rem; margin-bottom: 0.75rem; font-size: 1.4em; font-weight: 700; color: #212529; } +.chamberTabs { display: flex; margin-bottom: 1rem; border: 1px solid #dee2e6; border-radius: 6px; overflow: hidden; } +.chamberTabs button { flex: 1; padding: 0.5rem; border: none; background-color: #f8f9fa; color: #6c757d; font-family: inherit; font-size: 1em; font-weight: 500; cursor: pointer; transition: all 0.2s ease-in-out; text-align: center; } +.chamberTabs button:first-child { border-right: 1px solid #dee2e6; } +.chamberTabs button:hover { background-color: #e9ecef; } +.chamberTabs button.active { background-color: var(--primary-accent-color); color: #ffffff; } +.summaryMetric { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 0.25rem; font-size: 1.1em; } +.summaryMetric strong { font-size: 1.5em; font-weight: 700; color: var(--primary-accent-color); } +.congresoSummary hr { border: none; border-top: 1px solid #e0e0e0; margin: 1rem 0; } +.partidoListaContainer { flex-grow: 1; overflow-y: auto; min-height: 0; padding-right: 8px; } +.partidoLista { list-style: none; padding: 0; margin: 0; } +.partidoLista li { display: flex; align-items: center; margin-bottom: 0.85rem; } +.partidoColorBox { width: 16px; height: 16px; border-radius: 4px; margin-right: 12px; flex-shrink: 0; } +.partidoNombre { flex-grow: 1; } +.partidoBancas { font-weight: 700; font-size: 1.1em; } -.congresoHemicicloWrapper { - flex-grow: 1; - display: flex; - align-items: center; - justify-content: center; - width: 100%; -} - -.congresoHemicicloWrapper.isHovering :global(.party-block:not(:hover)) { - opacity: 0.3; -} - -.congresoGrafico svg { - width: 100%; - height: auto; - animation: fadeIn 0.8s ease-in-out; -} - -@keyframes fadeIn { - from { opacity: 0; transform: scale(0.9); } - to { opacity: 1; transform: scale(1); } -} - -.congresoFooter { - width: 100%; - display: flex; - justify-content: space-between; - align-items: center; - padding: 0.75rem 0.5rem 0 0.5rem; - margin-top: auto; - font-size: 0.8em; - color: #666; - border-top: 1px solid #eee; -} - -.footerLegend { - display: flex; - gap: 1.25rem; - align-items: center; -} - -.footerLegendItem { - display: flex; - align-items: center; - gap: 0.6rem; - font-size: 1.1em; -} - -.legendIcon { - display: inline-block; - width: 14px; - height: 14px; - border-radius: 50%; - box-sizing: border-box; -} - -.legendIconSolid { - background-color: #888; - border: 1px solid #777; -} - -.legendIconRing { - background-color: rgba(136, 136, 136, 0.3); - border: 1px solid #888; -} - -.footerTimestamp { - font-weight: 500; - font-size: 0.75em; -} - -.congresoSummary { - flex: 1; - border-left: 1px solid #e0e0e0; - padding-left: 1.25rem; - display: flex; - flex-direction: column; - justify-content: flex-start; -} - -.congresoSummary h3 { - margin-top: 0; - margin-bottom: 0.75rem; - font-size: 1.4em; - color: #212529; -} - -.chamberTabs { - display: flex; - margin-bottom: 1rem; - border: 1px solid #dee2e6; - border-radius: 6px; - overflow: hidden; -} - -.chamberTabs button { - flex: 1; - padding: 0.5rem 0.5rem; - border: none; - background-color: #f8f9fa; - color: #6c757d; - font-family: inherit; - font-size: 1em; - font-weight: 500; - cursor: pointer; - transition: all 0.2s ease-in-out; -} - -.chamberTabs button:first-child { - border-right: 1px solid #dee2e6; -} - -.chamberTabs button:hover { - background-color: #e9ecef; -} - -.chamberTabs button.active { - background-color: var(--primary-accent-color); - color: #ffffff; -} - -.summaryMetric { - display: flex; - justify-content: space-between; - align-items: baseline; - margin-bottom: 0.25rem; - font-size: 1.1em; -} - -.summaryMetric strong { - font-size: 1.5em; - font-weight: 700; - color: var(--primary-accent-color); -} - -.congresoSummary hr { - border: none; - border-top: 1px solid #e0e0e0; - margin: 1rem 0; -} - -.partidoListaContainer { - flex-grow: 1; - overflow-y: auto; - min-height: 0; - padding-right: 8px; -} - -.partidoLista { - list-style: none; - padding: 0; - margin: 0; -} - -.partidoLista li { - display: flex; - align-items: center; - margin-bottom: 0.85rem; -} - -.partidoColorBox { - width: 16px; - height: 16px; - border-radius: 4px; - margin-right: 12px; - flex-shrink: 0; -} - -.partidoNombre { - flex-grow: 1; -} - -.partidoBancas { - font-weight: 700; - font-size: 1.1em; -} +/* --- REGLA #1: RESPONSIVIDAD EXTERNA Y LAYOUT PRINCIPAL (MÓVIL) --- */ @media (max-width: 768px) { .congresoContainer { - flex-direction: column; - padding: 0.5rem; - height: auto; - max-height: none; - } + /* Forzar el comportamiento externo */ + width: 100% !important; + flex-basis: 100% !important; + grid-column: 1 / -1 !important; + max-width: none !important; + margin-left: auto !important; + margin-right: auto !important; - .congresoSummary { - border-left: none; - padding-left: 0; - border-top: 1px solid #e0e0e0; - } - - .partidoListaContainer { - overflow-y: visible; - max-height: none; - } - - .congresoFooter { - flex-direction: column; - align-items: center; - gap: 0.5rem; - padding: 0.75rem 0rem; - } - - .footerLegend { - gap: 0.75rem; - } - - .footerLegendItem{ - font-size: 1em; - } - - .footerTimestamp { - font-size: 0.75em; + /* --- ¡LA CLAVE! --- */ + /* Traemos la regla de la versión anterior para forzar el layout vertical */ + flex-direction: column !important; + height: auto !important; + max-height: none !important; } } -@media (min-width: 769px) { - .congresoContainer { - flex-direction: row; - align-items: stretch; - height: 500px; - } +/* --- REGLA #2: AJUSTES FINOS INTERNOS CUANDO EL WIDGET ES ESTRECHO --- */ +@container congreso-widget (max-width: 700px) { + /* La dirección del flex ya fue establecida por la @media query. */ + /* Aquí solo hacemos los ajustes de contenido. */ + + .congresoGrafico { min-width: 0; } + .congresoSummary { border-left: none; padding-left: 0; border-top: 1px solid #e0e0e0; padding-top: 1rem; margin-top: 1rem; } + .congresoSummary h3 { font-size: 1.25em; } + .summaryMetric { font-size: 1em; } + .summaryMetric strong { font-size: 1.3em; } + .partidoNombre { font-size: 0.9em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } + .partidoBancas { font-size: 1em; } + .partidoListaContainer { overflow-y: visible; max-height: none; } + .footerLegend { gap: 1rem; } + .footerLegendItem{ font-size: 0.9em; } + .congresoFooter { flex-direction: column; align-items: center; gap: 0.75rem; padding: 0.75rem 0rem; } +} + +.partidoListaContainer { scrollbar-width: thin; scrollbar-color: #c1c1c1 #f1f1c1; } +.partidoListaContainer::-webkit-scrollbar { width: 8px; } +.partidoListaContainer::-webkit-scrollbar-track { background: #f1f1f1; border-radius: 10px; } +.partidoListaContainer::-webkit-scrollbar-thumb { background: #c1c1c1; border-radius: 10px; border: 2px solid #f1f1f1; } +.partidoListaContainer::-webkit-scrollbar-thumb:hover { background: #a8a8a8; } + +/* --- A. Tooltip de FOTO DE LEGISLADOR (seat-tooltip) --- */ + +:global(#seat-tooltip.react-tooltip) { + opacity: 1 !important; + background-color: #ffffff !important; + border-radius: 6px !important; + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2) !important; + padding: 0 !important; + z-index: 9999 !important; } -/* --- ESTILOS PARA TOOLTIP --- */ -/* Usamos :global() para apuntar a clases e IDs generados por la librería react-tooltip */ :global(.seat-tooltip) { display: flex; flex-direction: column; align-items: center; gap: 5px; padding: 8px; - background-color: white; } + :global(.seat-tooltip img) { width: 60px; height: 60px; @@ -269,14 +120,31 @@ object-fit: cover; border: 2px solid #ccc; } + :global(.seat-tooltip p) { margin: 0; font-size: 12px; font-weight: bold; - color: #333; + font-family: "Roboto", system-ui, sans-serif !important; + color: #333333 !important; + text-align: center !important; } -:global(#seat-tooltip.react-tooltip) { +/* --- B. ¡NUEVO! Tooltip de BLOQUE DE PARTIDO (party-tooltip) --- */ + +:global(#party-tooltip.react-tooltip) { opacity: 1 !important; - background-color: white; + background-color: #333333 !important; /* Fondo oscuro, como el nativo */ + border-radius: 4px !important; + padding: 4px 8px !important; /* Padding interno */ + z-index: 9998 !important; /* Ligeramente por debajo del otro por si acaso */ + pointer-events: none; /* Evita que el tooltip interfiera con el mouse */ +} + +/* Usamos la clase que añadimos en el TSX para estilizar el contenido */ +.partyTooltipContainer { + font-size: 13px !important; + font-family: "Roboto", system-ui, sans-serif !important; + color: #ffffff !important; /* Letras blancas para contrastar con el fondo oscuro */ + font-weight: 500 !important; } \ No newline at end of file diff --git a/Elecciones-Web/frontend/src/features/legislativas/nacionales/CongresoNacionalWidget.tsx b/Elecciones-Web/frontend/src/features/legislativas/nacionales/CongresoNacionalWidget.tsx index a8a5da3..eb62bf3 100644 --- a/Elecciones-Web/frontend/src/features/legislativas/nacionales/CongresoNacionalWidget.tsx +++ b/Elecciones-Web/frontend/src/features/legislativas/nacionales/CongresoNacionalWidget.tsx @@ -148,7 +148,7 @@ const WidgetContent = ({ eleccionId }: CongresoNacionalWidgetProps) => { - + ); }; diff --git a/Elecciones-Web/frontend/src/features/legislativas/nacionales/HomeCarouselWidget.module.css b/Elecciones-Web/frontend/src/features/legislativas/nacionales/HomeCarouselWidget.module.css index 71615fd..e1f27de 100644 --- a/Elecciones-Web/frontend/src/features/legislativas/nacionales/HomeCarouselWidget.module.css +++ b/Elecciones-Web/frontend/src/features/legislativas/nacionales/HomeCarouselWidget.module.css @@ -127,7 +127,6 @@ } .partyName { font-size: 0.8rem; - text-transform: uppercase; color: var(--secondary-text); font-weight: 400; } diff --git a/Elecciones-Web/frontend/src/features/legislativas/nacionales/PanelNacional.module.css b/Elecciones-Web/frontend/src/features/legislativas/nacionales/PanelNacional.module.css index 41ae60b..b0d0894 100644 --- a/Elecciones-Web/frontend/src/features/legislativas/nacionales/PanelNacional.module.css +++ b/Elecciones-Web/frontend/src/features/legislativas/nacionales/PanelNacional.module.css @@ -200,7 +200,6 @@ overflow: hidden; text-overflow: ellipsis; line-height: 1.2; - text-transform: uppercase; } .partidoNombreNormal { @@ -210,13 +209,11 @@ overflow: hidden; text-overflow: ellipsis; line-height: 1.2; - text-transform: uppercase; } .candidatoNombre { font-size: 0.75rem; color: #6c757d; - text-transform: uppercase; font-weight: 500; line-height: 1.1; } diff --git a/Elecciones-Web/frontend/src/features/legislativas/nacionales/ResultadosNacionalesCardsWidget.module.css b/Elecciones-Web/frontend/src/features/legislativas/nacionales/ResultadosNacionalesCardsWidget.module.css index fd95daf..89ff5de 100644 --- a/Elecciones-Web/frontend/src/features/legislativas/nacionales/ResultadosNacionalesCardsWidget.module.css +++ b/Elecciones-Web/frontend/src/features/legislativas/nacionales/ResultadosNacionalesCardsWidget.module.css @@ -149,7 +149,6 @@ .candidatoPartido { font-size: 0.75rem; color: var(--text-secondary); - text-transform: uppercase; display: block; margin-bottom: 0.3rem; text-align: left; @@ -208,7 +207,6 @@ font-size: 0.65rem; font-weight: 500; color: var(--text-secondary); - text-transform: uppercase; margin-top: -4px; } diff --git a/Elecciones-Web/src/Elecciones.Api/obj/Debug/net9.0/Elecciones.Api.AssemblyInfo.cs b/Elecciones-Web/src/Elecciones.Api/obj/Debug/net9.0/Elecciones.Api.AssemblyInfo.cs index 6ef124d..e45cced 100644 --- a/Elecciones-Web/src/Elecciones.Api/obj/Debug/net9.0/Elecciones.Api.AssemblyInfo.cs +++ b/Elecciones-Web/src/Elecciones.Api/obj/Debug/net9.0/Elecciones.Api.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Elecciones.Api")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+fa261ba828ec1118d196055b11685d63154ca40d")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+ce4fc52d4ab234dc5c25703d8945a3f79dccebc4")] [assembly: System.Reflection.AssemblyProductAttribute("Elecciones.Api")] [assembly: System.Reflection.AssemblyTitleAttribute("Elecciones.Api")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/Elecciones-Web/src/Elecciones.Core/obj/Debug/net9.0/Elecciones.Core.AssemblyInfo.cs b/Elecciones-Web/src/Elecciones.Core/obj/Debug/net9.0/Elecciones.Core.AssemblyInfo.cs index 0c925b7..d1b4ae9 100644 --- a/Elecciones-Web/src/Elecciones.Core/obj/Debug/net9.0/Elecciones.Core.AssemblyInfo.cs +++ b/Elecciones-Web/src/Elecciones.Core/obj/Debug/net9.0/Elecciones.Core.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Elecciones.Core")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+1719e79723abcbe8891a67b4d447a068c41d9e57")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+ce4fc52d4ab234dc5c25703d8945a3f79dccebc4")] [assembly: System.Reflection.AssemblyProductAttribute("Elecciones.Core")] [assembly: System.Reflection.AssemblyTitleAttribute("Elecciones.Core")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/Elecciones-Web/src/Elecciones.Database/obj/Debug/net9.0/Elecciones.Database.AssemblyInfo.cs b/Elecciones-Web/src/Elecciones.Database/obj/Debug/net9.0/Elecciones.Database.AssemblyInfo.cs index 953905a..933b058 100644 --- a/Elecciones-Web/src/Elecciones.Database/obj/Debug/net9.0/Elecciones.Database.AssemblyInfo.cs +++ b/Elecciones-Web/src/Elecciones.Database/obj/Debug/net9.0/Elecciones.Database.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Elecciones.Database")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+1719e79723abcbe8891a67b4d447a068c41d9e57")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+ce4fc52d4ab234dc5c25703d8945a3f79dccebc4")] [assembly: System.Reflection.AssemblyProductAttribute("Elecciones.Database")] [assembly: System.Reflection.AssemblyTitleAttribute("Elecciones.Database")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/Elecciones-Web/src/Elecciones.Infrastructure/obj/Debug/net9.0/Elecciones.Infrastructure.AssemblyInfo.cs b/Elecciones-Web/src/Elecciones.Infrastructure/obj/Debug/net9.0/Elecciones.Infrastructure.AssemblyInfo.cs index 3c4c987..757f2be 100644 --- a/Elecciones-Web/src/Elecciones.Infrastructure/obj/Debug/net9.0/Elecciones.Infrastructure.AssemblyInfo.cs +++ b/Elecciones-Web/src/Elecciones.Infrastructure/obj/Debug/net9.0/Elecciones.Infrastructure.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Elecciones.Infrastructure")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+1719e79723abcbe8891a67b4d447a068c41d9e57")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+ce4fc52d4ab234dc5c25703d8945a3f79dccebc4")] [assembly: System.Reflection.AssemblyProductAttribute("Elecciones.Infrastructure")] [assembly: System.Reflection.AssemblyTitleAttribute("Elecciones.Infrastructure")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/Elecciones-Web/src/Elecciones.Worker/obj/Debug/net9.0/Elecciones.Worker.AssemblyInfo.cs b/Elecciones-Web/src/Elecciones.Worker/obj/Debug/net9.0/Elecciones.Worker.AssemblyInfo.cs index ad6bb61..69189f4 100644 --- a/Elecciones-Web/src/Elecciones.Worker/obj/Debug/net9.0/Elecciones.Worker.AssemblyInfo.cs +++ b/Elecciones-Web/src/Elecciones.Worker/obj/Debug/net9.0/Elecciones.Worker.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Elecciones.Worker")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+1719e79723abcbe8891a67b4d447a068c41d9e57")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+ce4fc52d4ab234dc5c25703d8945a3f79dccebc4")] [assembly: System.Reflection.AssemblyProductAttribute("Elecciones.Worker")] [assembly: System.Reflection.AssemblyTitleAttribute("Elecciones.Worker")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]