Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fbc68001f4 | ||
|
|
caa57d9aa9 | ||
|
|
e0c240a212 | ||
|
|
bcb687e408 | ||
|
|
546eedf774 | ||
|
|
c7328bb80d | ||
|
|
dfe8e1bde5 | ||
|
|
066ae6c2b0 | ||
|
|
4abe664f3b |
@@ -1,6 +1,6 @@
|
|||||||
# Aulas UNICABA 🎓📱
|
# Aulas UNICABA 🎓📱
|
||||||
|
|
||||||
[](package.json)
|
[](package.json)
|
||||||
[](https://angular.io/)
|
[](https://angular.io/)
|
||||||
[](https://ionicframework.com/)
|
[](https://ionicframework.com/)
|
||||||
[](https://capacitorjs.com/)
|
[](https://capacitorjs.com/)
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ android {
|
|||||||
applicationId "ar.edu.unicaba.cartelera"
|
applicationId "ar.edu.unicaba.cartelera"
|
||||||
minSdkVersion rootProject.ext.minSdkVersion
|
minSdkVersion rootProject.ext.minSdkVersion
|
||||||
targetSdkVersion rootProject.ext.targetSdkVersion
|
targetSdkVersion rootProject.ext.targetSdkVersion
|
||||||
versionCode 16
|
versionCode 17
|
||||||
versionName "1.2.3"
|
versionName "1.2.4"
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
aaptOptions {
|
aaptOptions {
|
||||||
// Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps.
|
// Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps.
|
||||||
|
|||||||
@@ -296,14 +296,14 @@
|
|||||||
buildSettings = {
|
buildSettings = {
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 1;
|
CURRENT_PROJECT_VERSION = 17;
|
||||||
INFOPLIST_FILE = App/Info.plist;
|
INFOPLIST_FILE = App/Info.plist;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0;
|
MARKETING_VERSION = 1.2.4;
|
||||||
OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"COCOAPODS\" \"-DDEBUG\"";
|
OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"COCOAPODS\" \"-DDEBUG\"";
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = ar.edu.unicaba.cartelera;
|
PRODUCT_BUNDLE_IDENTIFIER = ar.edu.unicaba.cartelera;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
@@ -318,14 +318,14 @@
|
|||||||
buildSettings = {
|
buildSettings = {
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 1;
|
CURRENT_PROJECT_VERSION = 17;
|
||||||
INFOPLIST_FILE = App/Info.plist;
|
INFOPLIST_FILE = App/Info.plist;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0;
|
MARKETING_VERSION = 1.2.4;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = ar.edu.unicaba.cartelera;
|
PRODUCT_BUNDLE_IDENTIFIER = ar.edu.unicaba.cartelera;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "";
|
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "";
|
||||||
|
|||||||
Generated
+2
-2
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "aulas-unicaba",
|
"name": "aulas-unicaba",
|
||||||
"version": "1.2.3",
|
"version": "1.2.4",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "aulas-unicaba",
|
"name": "aulas-unicaba",
|
||||||
"version": "1.2.3",
|
"version": "1.2.4",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@angular/animations": "~20.3.18",
|
"@angular/animations": "~20.3.18",
|
||||||
"@angular/common": "~20.3.18",
|
"@angular/common": "~20.3.18",
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "aulas-unicaba",
|
"name": "aulas-unicaba",
|
||||||
"version": "1.2.3",
|
"version": "1.2.4",
|
||||||
"author": "Ionic Framework",
|
"author": "Ionic Framework",
|
||||||
"homepage": "https://ionicframework.com/",
|
"homepage": "https://ionicframework.com/",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@@ -27,4 +27,4 @@ La aplicación ha sido diseñada bajo una arquitectura de "cliente liviano" con
|
|||||||
Esta innovación tecnológica es de carácter informativo. La precisión estricta de asignación de las aulas depende originariamente de la pre-carga impuesta por el cuerpo no-docente en el documento de Spreadsheets. En escenarios contradictorios, la palabra oficial del ala administrativa universitaria primará sobre la respuesta sincronizada en Aulas UNICABA.
|
Esta innovación tecnológica es de carácter informativo. La precisión estricta de asignación de las aulas depende originariamente de la pre-carga impuesta por el cuerpo no-docente en el documento de Spreadsheets. En escenarios contradictorios, la palabra oficial del ala administrativa universitaria primará sobre la respuesta sincronizada en Aulas UNICABA.
|
||||||
|
|
||||||
---
|
---
|
||||||
*Última actualización: 28 de Agosto, 2026 - v1.2.3*
|
*Última actualización: 29 de Agosto, 2026 - v1.2.4*
|
||||||
|
|||||||
@@ -30,46 +30,108 @@
|
|||||||
<p class="subtitle">Aprendé a usar tu Ecosistema Digital</p>
|
<p class="subtitle">Aprendé a usar tu Ecosistema Digital</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="info-body">
|
<div class="guide-cards-container">
|
||||||
<section>
|
|
||||||
<h3>1. Mi Cartelera (Horarios y Aulas)</h3>
|
|
||||||
<p>Visualizá todas las materias organizadas por día. Usá la barra de búsqueda para filtrar rápido por nombre,
|
|
||||||
aula o código.</p>
|
|
||||||
<ul>
|
|
||||||
<li><strong>Favoritos:</strong> Toca la estrella ⭐ para activar notificaciones automáticas y recordatorios 30
|
|
||||||
min antes de clase.</li>
|
|
||||||
<li><strong>Sincronización:</strong> Desliza hacia abajo para traer los últimos datos oficiales.</li>
|
|
||||||
</ul>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section>
|
<!-- Paso 1: Cartelera -->
|
||||||
<h3>2. Mi Carrera (Seguimiento)</h3>
|
<div class="guide-card">
|
||||||
<p>Accedé desde el botón inferior para ver tu plan de estudios.</p>
|
<div class="guide-card-header">
|
||||||
<ul>
|
<div class="guide-icon-badge step-1">
|
||||||
<li><strong>Estados:</strong> Marcá materias como <em>Aprobadas</em> (Fucsia) o <em>En Curso</em> (Celeste).
|
<ion-icon name="calendar-outline"></ion-icon>
|
||||||
</li>
|
</div>
|
||||||
<li><strong>Optativas:</strong> Elegí tus materias directamente desde el selector para completar tu progreso.
|
<div class="guide-title-wrap">
|
||||||
</li>
|
<span class="guide-tag">Módulo 1</span>
|
||||||
</ul>
|
<h3>Mi Cartelera (Horarios y Aulas)</h3>
|
||||||
</section>
|
</div>
|
||||||
|
</div>
|
||||||
|
<p class="guide-text">
|
||||||
|
Consultá tus materias organizadas por día. Usá el buscador rápido por nombre, aula o código oficial.
|
||||||
|
</p>
|
||||||
|
<div class="guide-highlights">
|
||||||
|
<div class="highlight-item">
|
||||||
|
<ion-icon name="star" color="warning"></ion-icon>
|
||||||
|
<span><strong>Favoritos:</strong> Tocá la estrella ⭐ para recibir notificaciones y recordatorios 30 min antes de clase.</span>
|
||||||
|
</div>
|
||||||
|
<div class="highlight-item">
|
||||||
|
<ion-icon name="sync-outline" color="primary"></ion-icon>
|
||||||
|
<span><strong>Sincronización:</strong> Deslizá hacia abajo para actualizar con la cartelera oficial.</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<section>
|
<!-- Paso 2: Carrera -->
|
||||||
<h3>3. Agenda y Exámenes</h3>
|
<div class="guide-card">
|
||||||
<p>En el menú de cada materia (`...`) podés agendar <strong>Parciales, Finales o TPs</strong>. Verás insignias
|
<div class="guide-card-header">
|
||||||
de colores avisándote la proximidad.</p>
|
<div class="guide-icon-badge step-2">
|
||||||
</section>
|
<ion-icon name="school-outline"></ion-icon>
|
||||||
|
</div>
|
||||||
|
<div class="guide-title-wrap">
|
||||||
|
<span class="guide-tag">Módulo 2</span>
|
||||||
|
<h3>Mi Carrera (Seguimiento)</h3>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<p class="guide-text">
|
||||||
|
Accedé desde el botón inferior para ver tu plan de estudios y seguir tu progreso académico.
|
||||||
|
</p>
|
||||||
|
<div class="guide-highlights">
|
||||||
|
<div class="highlight-item">
|
||||||
|
<ion-icon name="checkmark-circle-outline" color="secondary"></ion-icon>
|
||||||
|
<span><strong>Estados:</strong> Marcá materias como <em>Aprobadas</em> (Fucsia) o <em>En Curso</em> (Celeste).</span>
|
||||||
|
</div>
|
||||||
|
<div class="highlight-item">
|
||||||
|
<ion-icon name="list-outline" color="tertiary"></ion-icon>
|
||||||
|
<span><strong>Optativas:</strong> Seleccioná tus materias electivas directamente desde la grilla.</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<section>
|
<!-- Paso 3: Agenda -->
|
||||||
<h3>4. Credencial Digital QR</h3>
|
<div class="guide-card">
|
||||||
<p>Tocá el logo arriba a la izquierda para abrir tu credencial. La app subirá el brillo automáticamente para
|
<div class="guide-card-header">
|
||||||
facilitar el escaneo.</p>
|
<div class="guide-icon-badge step-3">
|
||||||
</section>
|
<ion-icon name="alarm-outline"></ion-icon>
|
||||||
|
</div>
|
||||||
|
<div class="guide-title-wrap">
|
||||||
|
<span class="guide-tag">Módulo 3</span>
|
||||||
|
<h3>Agenda y Exámenes</h3>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<p class="guide-text">
|
||||||
|
En el menú de cada materia (<code>...</code>) podés agendar <strong>Parciales, Finales y Trabajos Prácticos</strong> con alertas visuales de proximidad.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Paso 4: Credencial -->
|
||||||
|
<div class="guide-card">
|
||||||
|
<div class="guide-card-header">
|
||||||
|
<div class="guide-icon-badge step-4">
|
||||||
|
<ion-icon name="qr-code-outline"></ion-icon>
|
||||||
|
</div>
|
||||||
|
<div class="guide-title-wrap">
|
||||||
|
<span class="guide-tag">Módulo 4</span>
|
||||||
|
<h3>Credencial Digital QR</h3>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<p class="guide-text">
|
||||||
|
Tocá el logo de la Universidad en la barra superior para abrir tu credencial. La app optimiza el brillo automáticamente para el molinete y funciona <strong>100% offline</strong>.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Paso 5: Respaldo -->
|
||||||
|
<div class="guide-card">
|
||||||
|
<div class="guide-card-header">
|
||||||
|
<div class="guide-icon-badge step-5">
|
||||||
|
<ion-icon name="shield-checkmark-outline"></ion-icon>
|
||||||
|
</div>
|
||||||
|
<div class="guide-title-wrap">
|
||||||
|
<span class="guide-tag">Módulo 5</span>
|
||||||
|
<h3>Respaldo y Seguridad</h3>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<p class="guide-text">
|
||||||
|
En <strong>Perfil > Guardar Respaldo</strong> exportá tu archivo CSV seguro. Podés restaurarlo en cualquier momento sin perder tus datos.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
<section>
|
|
||||||
<h3>5. Mantené tus datos seguros</h3>
|
|
||||||
<p>Usa <strong>Perfil > Guardar Respaldo</strong> para exportar un archivo CSV. Si cambias de teléfono, podés
|
|
||||||
restaurarlo desde el mismo lugar.</p>
|
|
||||||
</section>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -81,20 +143,40 @@
|
|||||||
<p class="subtitle">Tus datos son tuyos y de nadie más</p>
|
<p class="subtitle">Tus datos son tuyos y de nadie más</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="info-body">
|
<div class="privacy-cards-container">
|
||||||
<h3>Sin Intermediarios</h3>
|
|
||||||
<p>Aulas UNICABA no tiene servidores propios. Cada vez que sincronizás la cartelera o tu credencial, la conexión
|
|
||||||
viaja directo de tu teléfono al servidor de la Universidad.</p>
|
|
||||||
|
|
||||||
<h3>Tratamiento de Credenciales</h3>
|
<div class="privacy-card">
|
||||||
<p>Tus claves de Moodle o SIU Guaraní se guardan de forma encriptada en el almacenamiento seguro de tu
|
<div class="privacy-card-header">
|
||||||
dispositivo. Nunca salen de tu teléfono hacia terceros.</p>
|
<div class="privacy-icon-badge">
|
||||||
|
<ion-icon name="server-outline"></ion-icon>
|
||||||
|
</div>
|
||||||
|
<h3>Sin Servidores Intermediarios</h3>
|
||||||
|
</div>
|
||||||
|
<p>Aulas UNICABA no almacena tus datos en servidores intermedios. Cada sincronización de cartelera o credencial viaja directamente entre tu dispositivo y el servidor oficial de la Universidad.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
<h3>Analíticas y Rastreos</h3>
|
<div class="privacy-card">
|
||||||
<p>No usamos Google Analytics ni SDKs de seguimiento. No hay publicidad. Cero telemetría invasiva.</p>
|
<div class="privacy-card-header">
|
||||||
|
<div class="privacy-icon-badge">
|
||||||
|
<ion-icon name="key-outline"></ion-icon>
|
||||||
|
</div>
|
||||||
|
<h3>Almacenamiento Local Seguro</h3>
|
||||||
|
</div>
|
||||||
|
<p>Tus claves de Moodle o SIU Guaraní se guardan de forma encriptada en el almacenamiento seguro de tu teléfono y nunca se transmiten a terceros.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="privacy-card">
|
||||||
|
<div class="privacy-card-header">
|
||||||
|
<div class="privacy-icon-badge">
|
||||||
|
<ion-icon name="eye-off-outline"></ion-icon>
|
||||||
|
</div>
|
||||||
|
<h3>Cero Rastreadores y Sin Publicidad</h3>
|
||||||
|
</div>
|
||||||
|
<p>No utilizamos Google Analytics, ni cookies publicitarias ni SDKs de telemetría invasiva. Tu actividad académica es estrictamente privada.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="footer-info ion-text-center">
|
<div class="footer-info ion-text-center">
|
||||||
<p><small>Aulas UNICABA v1.2.3 • Independiente y Offline-First</small></p>
|
<p><small>Aulas UNICABA v1.2.4 • Independiente y Offline-First</small></p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -118,14 +200,15 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="title-wrap">
|
<div class="title-wrap">
|
||||||
<h3>ON FIT</h3>
|
<h3>ON FIT</h3>
|
||||||
<p class="category">Gimnasio & Bienestar</p>
|
<p class="category">Gimnasio & Bienestar</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<ion-badge color="success" class="discount-badge">25% OFF</ion-badge>
|
<ion-badge color="success" class="discount-badge">25% OFF</ion-badge>
|
||||||
</div>
|
</div>
|
||||||
<p class="benefit-desc">
|
<div class="benefit-headline">
|
||||||
25% de descuento sobre el valor de la membresía mensual con acceso libre a sus 20 sedes en todo el AMBA.
|
<span class="discount-lead">25% de descuento sobre el valor de la membresía mensual</span>
|
||||||
</p>
|
<span class="discount-sub">Acceso libre a sus 20 sedes en todo el AMBA</span>
|
||||||
|
</div>
|
||||||
<div class="inclusion-box">
|
<div class="inclusion-box">
|
||||||
<h4>¿Qué incluye la membresía?</h4>
|
<h4>¿Qué incluye la membresía?</h4>
|
||||||
<ul>
|
<ul>
|
||||||
@@ -137,15 +220,15 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="meta-grid">
|
<div class="meta-grid">
|
||||||
<div class="meta-row">
|
<div class="meta-row">
|
||||||
<ion-icon name="information-circle-outline"></ion-icon>
|
<ion-icon name="information-circle-outline" class="meta-icon"></ion-icon>
|
||||||
<span>Presentá tu Credencial Digital de la app para acreditar pertenencia a la Universidad.</span>
|
<span class="meta-text">Presentá tu Credencial Digital de la app para acreditar pertenencia.</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<ion-button expand="block" color="success" class="action-btn"
|
<ion-button expand="block" color="success" class="action-btn"
|
||||||
href="https://wa.me/5491158500830?text=Hola!%20Soy%20de%20la%20Universidad%20de%20la%20Ciudad%20y%20deseo%20acceder%20al%20beneficio%20ON%20FIT"
|
href="https://wa.me/5491158500830?text=Hola!%20Soy%20de%20la%20Universidad%20de%20la%20Ciudad%20y%20deseo%20acceder%20al%20beneficio%20ON%20FIT"
|
||||||
target="_blank">
|
target="_blank">
|
||||||
<ion-icon name="logo-whatsapp" slot="start"></ion-icon>
|
<ion-icon name="logo-whatsapp" slot="start"></ion-icon>
|
||||||
Consultar por WhatsApp (+54 9 11 5850-0830)
|
Consultar por WhatsApp
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -163,15 +246,22 @@
|
|||||||
</div>
|
</div>
|
||||||
<ion-badge color="warning" class="discount-badge">10% OFF</ion-badge>
|
<ion-badge color="warning" class="discount-badge">10% OFF</ion-badge>
|
||||||
</div>
|
</div>
|
||||||
<p class="benefit-desc">10% de descuento en productos (excluye promociones vigentes).</p>
|
<div class="benefit-headline">
|
||||||
|
<span class="discount-lead">10% de descuento en productos</span>
|
||||||
|
<span class="discount-cond">(excluye promociones vigentes)</span>
|
||||||
|
</div>
|
||||||
<div class="meta-grid">
|
<div class="meta-grid">
|
||||||
<div class="meta-row">
|
<div class="meta-row clickable-address" (click)="openMap('Tte. Gral. Juan Domingo Perón 893, CABA')">
|
||||||
<ion-icon name="location-outline"></ion-icon>
|
<ion-icon name="location-outline" class="meta-icon"></ion-icon>
|
||||||
<span>Tte. Gral. Perón 893, CABA <em>(a metros de la sede)</em></span>
|
<div class="address-wrapper">
|
||||||
|
<span class="address-text">Tte. Gral. Perón 893, CABA</span>
|
||||||
|
<span class="address-extra"><em>(a metros de la sede)</em></span>
|
||||||
|
<span class="map-action-tag">Ver mapa <ion-icon name="open-outline"></ion-icon></span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="meta-row">
|
<div class="meta-row">
|
||||||
<ion-icon name="time-outline"></ion-icon>
|
<ion-icon name="time-outline" class="meta-icon"></ion-icon>
|
||||||
<span>Lun a Vie de 8 a 20 h • Sábados de 8 a 16 h</span>
|
<span class="meta-text">Lun a Vie de 8 a 20 h • Sábados de 8 a 16 h</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -184,21 +274,27 @@
|
|||||||
<ion-icon name="restaurant-outline"></ion-icon>
|
<ion-icon name="restaurant-outline"></ion-icon>
|
||||||
</div>
|
</div>
|
||||||
<div class="title-wrap">
|
<div class="title-wrap">
|
||||||
<h3>Café & Chocolate</h3>
|
<h3>Café & Chocolate</h3>
|
||||||
<p class="category">Cafetería & Delicatessen</p>
|
<p class="category">Cafetería & Delicatessen</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<ion-badge color="warning" class="discount-badge">10% OFF</ion-badge>
|
<ion-badge color="warning" class="discount-badge">10% OFF</ion-badge>
|
||||||
</div>
|
</div>
|
||||||
<p class="benefit-desc">10% de descuento en productos (excluye promociones vigentes).</p>
|
<div class="benefit-headline">
|
||||||
|
<span class="discount-lead">10% de descuento en productos</span>
|
||||||
|
<span class="discount-cond">(excluye promociones vigentes)</span>
|
||||||
|
</div>
|
||||||
<div class="meta-grid">
|
<div class="meta-grid">
|
||||||
<div class="meta-row">
|
<div class="meta-row clickable-address" (click)="openMap('Bartolomé Mitre 807, CABA')">
|
||||||
<ion-icon name="location-outline"></ion-icon>
|
<ion-icon name="location-outline" class="meta-icon"></ion-icon>
|
||||||
<span>Bartolomé Mitre 807, CABA</span>
|
<div class="address-wrapper">
|
||||||
|
<span class="address-text">Bartolomé Mitre 807, CABA</span>
|
||||||
|
<span class="map-action-tag">Ver mapa <ion-icon name="open-outline"></ion-icon></span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="meta-row">
|
<div class="meta-row">
|
||||||
<ion-icon name="time-outline"></ion-icon>
|
<ion-icon name="time-outline" class="meta-icon"></ion-icon>
|
||||||
<span>Lun a Vie de 8 a 19 h • Sábados de 8 a 14 h</span>
|
<span class="meta-text">Lun a Vie de 8 a 19 h • Sábados de 8 a 14 h</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -217,15 +313,21 @@
|
|||||||
</div>
|
</div>
|
||||||
<ion-badge color="danger" class="discount-badge">10% OFF</ion-badge>
|
<ion-badge color="danger" class="discount-badge">10% OFF</ion-badge>
|
||||||
</div>
|
</div>
|
||||||
<p class="benefit-desc">10% de descuento en productos (excluye promociones vigentes).</p>
|
<div class="benefit-headline">
|
||||||
|
<span class="discount-lead">10% de descuento en productos</span>
|
||||||
|
<span class="discount-cond">(excluye promociones vigentes)</span>
|
||||||
|
</div>
|
||||||
<div class="meta-grid">
|
<div class="meta-grid">
|
||||||
<div class="meta-row">
|
<div class="meta-row clickable-address" (click)="openMap('Tucumán 1596, CABA')">
|
||||||
<ion-icon name="location-outline"></ion-icon>
|
<ion-icon name="location-outline" class="meta-icon"></ion-icon>
|
||||||
<span>Tucumán 1596, CABA</span>
|
<div class="address-wrapper">
|
||||||
|
<span class="address-text">Tucumán 1596, CABA</span>
|
||||||
|
<span class="map-action-tag">Ver mapa <ion-icon name="open-outline"></ion-icon></span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="meta-row">
|
<div class="meta-row">
|
||||||
<ion-icon name="time-outline"></ion-icon>
|
<ion-icon name="time-outline" class="meta-icon"></ion-icon>
|
||||||
<span>Mar a Vie de 8 a 19 h • Sáb y Dom de 9:30 a 14:30 h</span>
|
<span class="meta-text">Mar a Vie de 8 a 19 h • Sáb y Dom de 9:30 a 14:30 h</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -239,20 +341,26 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="title-wrap">
|
<div class="title-wrap">
|
||||||
<h3>Atlas Comercial</h3>
|
<h3>Atlas Comercial</h3>
|
||||||
<p class="category">Librería & Papelería</p>
|
<p class="category">Librería & Papelería</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<ion-badge color="primary" class="discount-badge">10% OFF</ion-badge>
|
<ion-badge color="primary" class="discount-badge">10% OFF</ion-badge>
|
||||||
</div>
|
</div>
|
||||||
<p class="benefit-desc">10% de descuento en productos (excluye promociones vigentes).</p>
|
<div class="benefit-headline">
|
||||||
|
<span class="discount-lead">10% de descuento en productos</span>
|
||||||
|
<span class="discount-cond">(excluye promociones vigentes)</span>
|
||||||
|
</div>
|
||||||
<div class="meta-grid">
|
<div class="meta-grid">
|
||||||
<div class="meta-row">
|
<div class="meta-row clickable-address" (click)="openMap('Bartolomé Mitre 839, CABA')">
|
||||||
<ion-icon name="location-outline"></ion-icon>
|
<ion-icon name="location-outline" class="meta-icon"></ion-icon>
|
||||||
<span>Bartolomé Mitre 839, CABA</span>
|
<div class="address-wrapper">
|
||||||
|
<span class="address-text">Bartolomé Mitre 839, CABA</span>
|
||||||
|
<span class="map-action-tag">Ver mapa <ion-icon name="open-outline"></ion-icon></span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="meta-row">
|
<div class="meta-row">
|
||||||
<ion-icon name="time-outline"></ion-icon>
|
<ion-icon name="time-outline" class="meta-icon"></ion-icon>
|
||||||
<span>Lun a Vie de 9 a 18 h</span>
|
<span class="meta-text">Lun a Vie de 9 a 18 h</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -266,22 +374,25 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="title-wrap">
|
<div class="title-wrap">
|
||||||
<h3>Fluire Studio</h3>
|
<h3>Fluire Studio</h3>
|
||||||
<p class="category">Pilates & Salud</p>
|
<p class="category">Pilates & Salud</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<ion-badge color="tertiary" class="discount-badge">Hasta 20% OFF</ion-badge>
|
<ion-badge color="tertiary" class="discount-badge">Hasta 20% OFF</ion-badge>
|
||||||
</div>
|
</div>
|
||||||
<p class="benefit-desc">
|
<div class="benefit-headline">
|
||||||
10% de descuento abonando 1 mes de servicio y 20% de descuento abonando 4 meses de servicio.
|
<span class="discount-lead">10% OFF en 1 mes • 20% OFF abonando 4 meses</span>
|
||||||
</p>
|
</div>
|
||||||
<div class="meta-grid">
|
<div class="meta-grid">
|
||||||
<div class="meta-row">
|
<div class="meta-row clickable-address" (click)="openMap('Esmeralda 135, CABA')">
|
||||||
<ion-icon name="location-outline"></ion-icon>
|
<ion-icon name="location-outline" class="meta-icon"></ion-icon>
|
||||||
<span>Esmeralda 135, piso 4 B, CABA</span>
|
<div class="address-wrapper">
|
||||||
|
<span class="address-text">Esmeralda 135, piso 4 B, CABA</span>
|
||||||
|
<span class="map-action-tag">Ver mapa <ion-icon name="open-outline"></ion-icon></span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="meta-row">
|
<div class="meta-row">
|
||||||
<ion-icon name="mail-outline"></ion-icon>
|
<ion-icon name="mail-outline" class="meta-icon"></ion-icon>
|
||||||
<span>Contacto: fluire.studio.ba@gmail.com</span>
|
<span class="meta-text">fluire.studio.ba@gmail.com</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<ion-button expand="block" fill="outline" color="tertiary" class="action-btn"
|
<ion-button expand="block" fill="outline" color="tertiary" class="action-btn"
|
||||||
@@ -303,17 +414,23 @@
|
|||||||
<p class="category">Transporte de Larga Distancia</p>
|
<p class="category">Transporte de Larga Distancia</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<ion-badge color="secondary" class="discount-badge">Descuento Nacional</ion-badge>
|
<ion-badge color="secondary" class="discount-badge">Desc. Nacional</ion-badge>
|
||||||
|
</div>
|
||||||
|
<div class="benefit-headline">
|
||||||
|
<span class="discount-lead">Descuentos en pasajes de micro a todo el país</span>
|
||||||
|
<span class="discount-sub">A través del portal oficial de Central de Pasajes</span>
|
||||||
</div>
|
</div>
|
||||||
<p class="benefit-desc">
|
|
||||||
Obtené descuentos en pasajes de micro a todo el país a través del portal de Central de Pasajes.
|
|
||||||
</p>
|
|
||||||
<div class="meta-grid">
|
<div class="meta-grid">
|
||||||
<div class="meta-row">
|
<div class="meta-row">
|
||||||
<ion-icon name="checkmark-circle-outline"></ion-icon>
|
<ion-icon name="checkmark-circle-outline" class="meta-icon"></ion-icon>
|
||||||
<span>Entrá a <b>Perfil</b>, generá tu Certificado de Alumno Regular y subilo a <a href="https://soyestudiante.com.ar/" target="_blank">soyestudiante.com.ar</a>.</span>
|
<span class="meta-text">Entrá a <b>Perfil</b>, generá tu Certificado de Alumno Regular y subilo al portal.</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<ion-button expand="block" fill="outline" color="secondary" class="action-btn"
|
||||||
|
href="https://soyestudiante.com.ar/" target="_blank">
|
||||||
|
<ion-icon name="globe-outline" slot="start"></ion-icon>
|
||||||
|
Ir a SoyEstudiante.com.ar
|
||||||
|
</ion-button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,101 +1,254 @@
|
|||||||
|
:host {
|
||||||
|
--modal-bg: var(--ion-color-light, #f4f5f8);
|
||||||
|
--card-bg: #ffffff;
|
||||||
|
--card-border: rgba(0, 0, 0, 0.05);
|
||||||
|
--card-shadow: 0 3px 12px rgba(0, 0, 0, 0.04);
|
||||||
|
--text-title: #1c1c1e;
|
||||||
|
--text-body: #4a4a52;
|
||||||
|
--text-sub: #55555e;
|
||||||
|
--text-muted: #777780;
|
||||||
|
--border-line: #f0f0f4;
|
||||||
|
--address-bg: rgba(var(--ion-color-primary-rgb), 0.04);
|
||||||
|
--address-border: rgba(var(--ion-color-primary-rgb), 0.1);
|
||||||
|
--address-hover: rgba(var(--ion-color-primary-rgb), 0.08);
|
||||||
|
--address-text: #1a1a1a;
|
||||||
|
--map-tag-bg: #ffffff;
|
||||||
|
--map-tag-color: var(--ion-color-primary);
|
||||||
|
--map-tag-border: rgba(var(--ion-color-primary-rgb), 0.2);
|
||||||
|
--h2-color: var(--ion-color-primary);
|
||||||
|
--segment-bg: rgba(0, 0, 0, 0.15);
|
||||||
|
--segment-indicator: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (prefers-color-scheme: dark) {
|
||||||
|
:host {
|
||||||
|
--modal-bg: var(--ion-background-color, #121212);
|
||||||
|
--card-bg: var(--ion-color-step-100, #1c1c1e);
|
||||||
|
--card-border: var(--ion-color-step-200, #2c2c30);
|
||||||
|
--card-shadow: 0 4px 18px rgba(0, 0, 0, 0.3);
|
||||||
|
--text-title: #ffffff;
|
||||||
|
--text-body: #d1d2d8;
|
||||||
|
--text-sub: #b5b6bc;
|
||||||
|
--text-muted: #a0a0a8;
|
||||||
|
--border-line: rgba(255, 255, 255, 0.08);
|
||||||
|
--address-bg: rgba(100, 181, 246, 0.08);
|
||||||
|
--address-border: rgba(100, 181, 246, 0.2);
|
||||||
|
--address-hover: rgba(100, 181, 246, 0.15);
|
||||||
|
--address-text: #64b5f6;
|
||||||
|
--map-tag-bg: rgba(100, 181, 246, 0.18);
|
||||||
|
--map-tag-color: #90caf9;
|
||||||
|
--map-tag-border: rgba(100, 181, 246, 0.35);
|
||||||
|
--h2-color: #ff8ab6;
|
||||||
|
--segment-bg: rgba(0, 0, 0, 0.35);
|
||||||
|
--segment-indicator: #ff8ab6;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.privacy-content {
|
.privacy-content {
|
||||||
--background: var(--ion-color-light);
|
--background: var(--modal-bg);
|
||||||
}
|
}
|
||||||
|
|
||||||
ion-segment {
|
ion-segment {
|
||||||
--background: var(--ion-color-primary-shade);
|
--background: var(--segment-bg);
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
|
|
||||||
ion-segment-button {
|
ion-segment-button {
|
||||||
--color: rgba(255,255,255,0.7);
|
--color: rgba(255, 255, 255, 0.75);
|
||||||
--color-checked: white;
|
--color-checked: #ffffff;
|
||||||
--indicator-color: white;
|
--indicator-color: var(--segment-indicator);
|
||||||
|
font-weight: 600;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.logo-container {
|
.logo-container {
|
||||||
padding: 10px 0 20px;
|
padding: 10px 0 18px;
|
||||||
|
|
||||||
.info-logo {
|
.info-logo {
|
||||||
height: 80px;
|
height: 76px;
|
||||||
background: white;
|
background: #ffffff;
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
border-radius: 16px;
|
border-radius: 16px;
|
||||||
box-shadow: 0 4px 12px rgba(0,0,0,0.1);
|
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
|
||||||
margin-bottom: 15px;
|
margin-bottom: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
ion-icon {
|
ion-icon {
|
||||||
font-size: 64px;
|
font-size: 56px;
|
||||||
margin-bottom: 5px;
|
margin-bottom: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
h2 {
|
h2 {
|
||||||
font-weight: 800;
|
font-weight: 800;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
color: var(--ion-color-primary);
|
color: var(--h2-color);
|
||||||
|
font-size: 1.45rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.subtitle {
|
.subtitle {
|
||||||
margin: 5px 0 0;
|
margin: 4px 0 0;
|
||||||
color: var(--ion-color-medium);
|
color: var(--text-muted);
|
||||||
font-size: 0.9rem;
|
font-size: 0.88rem;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.info-body {
|
/* =========================================================
|
||||||
background: white;
|
GUÍA DEL ESTUDIANTE (MANUAL)
|
||||||
border-radius: 20px;
|
========================================================= */
|
||||||
padding: 20px;
|
.guide-cards-container,
|
||||||
box-shadow: 0 4px 15px rgba(0,0,0,0.05);
|
.privacy-cards-container,
|
||||||
margin-bottom: 20px;
|
|
||||||
|
|
||||||
section {
|
|
||||||
margin-bottom: 25px;
|
|
||||||
&:last-child { margin-bottom: 0; }
|
|
||||||
}
|
|
||||||
|
|
||||||
h3 {
|
|
||||||
font-weight: 700;
|
|
||||||
font-size: 1rem;
|
|
||||||
color: var(--ion-color-dark);
|
|
||||||
margin: 0 0 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
p, li {
|
|
||||||
font-size: 0.9rem;
|
|
||||||
line-height: 1.5;
|
|
||||||
color: var(--ion-color-medium-shade);
|
|
||||||
}
|
|
||||||
|
|
||||||
ul {
|
|
||||||
padding-left: 20px;
|
|
||||||
margin: 10px 0;
|
|
||||||
li { margin-bottom: 8px; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* --- ESTILOS DE BENEFICIOS --- */
|
|
||||||
.benefits-container {
|
.benefits-container {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 16px;
|
gap: 14px;
|
||||||
margin-bottom: 25px;
|
margin-bottom: 25px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.guide-card,
|
||||||
|
.privacy-card,
|
||||||
|
.benefit-card {
|
||||||
|
background: var(--card-bg);
|
||||||
|
border-radius: 16px;
|
||||||
|
padding: 16px;
|
||||||
|
box-shadow: var(--card-shadow);
|
||||||
|
border: 1px solid var(--card-border);
|
||||||
|
transition: transform 0.2s ease, box-shadow 0.2s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.guide-card {
|
||||||
|
.guide-card-header {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 12px;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
|
||||||
|
.guide-icon-badge {
|
||||||
|
width: 38px;
|
||||||
|
height: 38px;
|
||||||
|
border-radius: 10px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
font-size: 20px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
|
||||||
|
&.step-1 { background: rgba(194, 24, 91, 0.12); color: #c2185b; }
|
||||||
|
&.step-2 { background: rgba(81, 45, 168, 0.12); color: #7e57c2; }
|
||||||
|
&.step-3 { background: rgba(2, 136, 209, 0.12); color: #0288d1; }
|
||||||
|
&.step-4 { background: rgba(46, 125, 50, 0.12); color: #2e7d32; }
|
||||||
|
&.step-5 { background: rgba(230, 81, 0, 0.12); color: #ef6c00; }
|
||||||
|
}
|
||||||
|
|
||||||
|
.guide-title-wrap {
|
||||||
|
.guide-tag {
|
||||||
|
display: block;
|
||||||
|
font-size: 0.72rem;
|
||||||
|
font-weight: 700;
|
||||||
|
text-transform: uppercase;
|
||||||
|
color: var(--h2-color);
|
||||||
|
letter-spacing: 0.5px;
|
||||||
|
margin-bottom: 2px;
|
||||||
|
}
|
||||||
|
h3 {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 0.98rem;
|
||||||
|
font-weight: 700;
|
||||||
|
color: var(--text-title);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.guide-text {
|
||||||
|
margin: 0 0 10px;
|
||||||
|
font-size: 0.88rem;
|
||||||
|
line-height: 1.45;
|
||||||
|
color: var(--text-body);
|
||||||
|
&:last-child { margin-bottom: 0; }
|
||||||
|
}
|
||||||
|
|
||||||
|
.guide-highlights {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 6px;
|
||||||
|
padding-top: 8px;
|
||||||
|
border-top: 1px solid var(--border-line);
|
||||||
|
|
||||||
|
.highlight-item {
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
gap: 8px;
|
||||||
|
font-size: 0.83rem;
|
||||||
|
line-height: 1.4;
|
||||||
|
color: var(--text-sub);
|
||||||
|
|
||||||
|
ion-icon {
|
||||||
|
font-size: 15px;
|
||||||
|
margin-top: 2px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
strong {
|
||||||
|
color: var(--text-title);
|
||||||
|
}
|
||||||
|
|
||||||
|
em {
|
||||||
|
color: var(--h2-color);
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* =========================================================
|
||||||
|
PRIVACIDAD ZERO-TRUST
|
||||||
|
========================================================= */
|
||||||
|
.privacy-card {
|
||||||
|
.privacy-card-header {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 10px;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
|
||||||
|
.privacy-icon-badge {
|
||||||
|
width: 36px;
|
||||||
|
height: 36px;
|
||||||
|
border-radius: 10px;
|
||||||
|
background: rgba(45, 211, 111, 0.15);
|
||||||
|
color: #2dd36f;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
font-size: 18px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 0.98rem;
|
||||||
|
font-weight: 700;
|
||||||
|
color: var(--text-title);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 0.88rem;
|
||||||
|
line-height: 1.45;
|
||||||
|
color: var(--text-body);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* =========================================================
|
||||||
|
COMUNIDAD DE BENEFICIOS
|
||||||
|
========================================================= */
|
||||||
.benefit-card {
|
.benefit-card {
|
||||||
background: white;
|
|
||||||
border-radius: 18px;
|
border-radius: 18px;
|
||||||
padding: 18px;
|
padding: 18px;
|
||||||
box-shadow: 0 4px 15px rgba(0,0,0,0.06);
|
|
||||||
border: 1px solid rgba(0,0,0,0.04);
|
|
||||||
transition: transform 0.2s ease, box-shadow 0.2s ease;
|
|
||||||
|
|
||||||
&.featured {
|
&.featured {
|
||||||
border: 1.5px solid var(--ion-color-primary);
|
border: 1.5px solid var(--h2-color);
|
||||||
background: linear-gradient(180deg, #ffffff 0%, rgba(var(--ion-color-primary-rgb), 0.02) 100%);
|
box-shadow: 0 6px 20px rgba(var(--ion-color-primary-rgb), 0.16);
|
||||||
box-shadow: 0 6px 20px rgba(var(--ion-color-primary-rgb), 0.12);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.card-top {
|
.card-top {
|
||||||
@@ -116,17 +269,15 @@ ion-segment {
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
background: rgba(var(--ion-color-primary-rgb), 0.1);
|
|
||||||
color: var(--ion-color-primary);
|
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
|
|
||||||
&.cafe { background: #fff3e0; color: #e65100; }
|
&.cafe { background: rgba(255, 152, 0, 0.15); color: #f57c00; }
|
||||||
&.gym { background: #e8f5e9; color: #2e7d32; }
|
&.gym { background: rgba(76, 175, 80, 0.15); color: #388e3c; }
|
||||||
&.pilates { background: #ede7f6; color: #512da8; }
|
&.pilates { background: rgba(156, 39, 176, 0.15); color: #8e24aa; }
|
||||||
&.pasta { background: #fbe9e7; color: #d84315; }
|
&.pasta { background: rgba(255, 87, 34, 0.15); color: #e64a19; }
|
||||||
&.libreria { background: #e1f5fe; color: #0288d1; }
|
&.libreria { background: rgba(3, 169, 244, 0.15); color: #0288d1; }
|
||||||
&.travel { background: #e3f2fd; color: #1565c0; }
|
&.travel { background: rgba(33, 150, 243, 0.15); color: #1976d2; }
|
||||||
}
|
}
|
||||||
|
|
||||||
.title-wrap {
|
.title-wrap {
|
||||||
@@ -134,12 +285,12 @@ ion-segment {
|
|||||||
margin: 0;
|
margin: 0;
|
||||||
font-size: 1.05rem;
|
font-size: 1.05rem;
|
||||||
font-weight: 800;
|
font-weight: 800;
|
||||||
color: var(--ion-color-dark);
|
color: var(--text-title);
|
||||||
}
|
}
|
||||||
.category {
|
.category {
|
||||||
margin: 2px 0 0;
|
margin: 2px 0 0;
|
||||||
font-size: 0.8rem;
|
font-size: 0.78rem;
|
||||||
color: var(--ion-color-medium);
|
color: var(--text-muted);
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
letter-spacing: 0.5px;
|
letter-spacing: 0.5px;
|
||||||
@@ -156,11 +307,31 @@ ion-segment {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.benefit-desc {
|
.benefit-headline {
|
||||||
font-size: 0.92rem;
|
margin-bottom: 12px;
|
||||||
color: var(--ion-color-dark-shade);
|
display: flex;
|
||||||
margin: 0 0 12px;
|
flex-direction: column;
|
||||||
line-height: 1.45;
|
gap: 2px;
|
||||||
|
|
||||||
|
.discount-lead {
|
||||||
|
font-size: 0.94rem;
|
||||||
|
font-weight: 700;
|
||||||
|
color: var(--text-title);
|
||||||
|
line-height: 1.4;
|
||||||
|
}
|
||||||
|
|
||||||
|
.discount-cond {
|
||||||
|
font-size: 0.82rem;
|
||||||
|
font-weight: 500;
|
||||||
|
color: var(--text-muted);
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
.discount-sub {
|
||||||
|
font-size: 0.84rem;
|
||||||
|
color: var(--text-body);
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.meta-grid {
|
.meta-grid {
|
||||||
@@ -168,38 +339,101 @@ ion-segment {
|
|||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 8px;
|
gap: 8px;
|
||||||
padding-top: 10px;
|
padding-top: 10px;
|
||||||
border-top: 1px dashed #e0e0e0;
|
border-top: 1px dashed var(--border-line);
|
||||||
margin-bottom: 12px;
|
margin-bottom: 12px;
|
||||||
|
|
||||||
.meta-row {
|
.meta-row {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: flex-start;
|
align-items: center;
|
||||||
gap: 8px;
|
gap: 8px;
|
||||||
font-size: 0.84rem;
|
font-size: 0.84rem;
|
||||||
color: var(--ion-color-medium-shade);
|
color: var(--text-sub);
|
||||||
line-height: 1.4;
|
line-height: 1.4;
|
||||||
|
|
||||||
ion-icon {
|
.meta-icon {
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
margin-top: 2px;
|
color: var(--h2-color);
|
||||||
color: var(--ion-color-primary);
|
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.meta-text {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.clickable-address {
|
||||||
|
cursor: pointer;
|
||||||
|
padding: 6px 10px;
|
||||||
|
margin: -2px -6px;
|
||||||
|
border-radius: 10px;
|
||||||
|
background: var(--address-bg);
|
||||||
|
border: 1px solid var(--address-border);
|
||||||
|
transition: all 0.2s ease;
|
||||||
|
|
||||||
|
.address-wrapper {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
align-items: center;
|
||||||
|
gap: 4px 6px;
|
||||||
|
flex: 1;
|
||||||
|
|
||||||
|
.address-text {
|
||||||
|
color: var(--address-text);
|
||||||
|
font-weight: 700;
|
||||||
|
text-decoration: underline;
|
||||||
|
text-underline-offset: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.address-extra {
|
||||||
|
font-size: 0.8rem;
|
||||||
|
color: var(--text-muted);
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
.map-action-tag {
|
||||||
|
font-size: 0.72rem;
|
||||||
|
font-weight: 700;
|
||||||
|
color: var(--map-tag-color);
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 2px;
|
||||||
|
background: var(--map-tag-bg);
|
||||||
|
padding: 2px 7px;
|
||||||
|
border-radius: 6px;
|
||||||
|
border: 1px solid var(--map-tag-border);
|
||||||
|
flex-shrink: 0;
|
||||||
|
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
|
||||||
|
margin-left: auto;
|
||||||
|
|
||||||
|
ion-icon {
|
||||||
|
font-size: 11px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: var(--address-hover);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:active {
|
||||||
|
transform: scale(0.985);
|
||||||
|
opacity: 0.8;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.inclusion-box {
|
.inclusion-box {
|
||||||
background: #f8fafc;
|
background: rgba(0, 0, 0, 0.03);
|
||||||
border-radius: 12px;
|
border-radius: 12px;
|
||||||
padding: 12px 14px;
|
padding: 12px 14px;
|
||||||
margin: 10px 0;
|
margin: 10px 0;
|
||||||
border-left: 3px solid var(--ion-color-success);
|
border-left: 3px solid var(--ion-color-success, #2dd36f);
|
||||||
|
|
||||||
h4 {
|
h4 {
|
||||||
margin: 0 0 6px;
|
margin: 0 0 6px;
|
||||||
font-size: 0.85rem;
|
font-size: 0.85rem;
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
color: var(--ion-color-dark);
|
color: var(--text-title);
|
||||||
}
|
}
|
||||||
|
|
||||||
ul {
|
ul {
|
||||||
@@ -208,7 +442,7 @@ ion-segment {
|
|||||||
li {
|
li {
|
||||||
font-size: 0.82rem;
|
font-size: 0.82rem;
|
||||||
margin-bottom: 4px;
|
margin-bottom: 4px;
|
||||||
color: #475569;
|
color: var(--text-body);
|
||||||
&:last-child { margin-bottom: 0; }
|
&:last-child { margin-bottom: 0; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -224,8 +458,11 @@ ion-segment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.footer-info {
|
.footer-info {
|
||||||
margin-top: 30px;
|
margin-top: 25px;
|
||||||
opacity: 0.6;
|
p, small {
|
||||||
|
color: var(--text-muted);
|
||||||
|
font-size: 0.8rem;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.fade-in {
|
.fade-in {
|
||||||
|
|||||||
@@ -18,4 +18,29 @@ export class InfoModalComponent {
|
|||||||
close() {
|
close() {
|
||||||
this.modalCtrl.dismiss();
|
this.modalCtrl.dismiss();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
openMap(address: string, event?: Event) {
|
||||||
|
if (event) {
|
||||||
|
event.stopPropagation();
|
||||||
|
}
|
||||||
|
const encodedAddress = encodeURIComponent(address);
|
||||||
|
|
||||||
|
// En iOS / Android se usan los esquemas nativos del sistema
|
||||||
|
const isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1);
|
||||||
|
const isAndroid = /android/i.test(navigator.userAgent);
|
||||||
|
|
||||||
|
let url = '';
|
||||||
|
if (isAndroid) {
|
||||||
|
// En Android, geo:0,0?q= abre el selector de mapas (Maps, Waze)
|
||||||
|
url = `geo:0,0?q=${encodedAddress}`;
|
||||||
|
} else if (isIOS) {
|
||||||
|
// En iOS, maps:// abre Apple Maps
|
||||||
|
url = `maps://?q=${encodedAddress}`;
|
||||||
|
} else {
|
||||||
|
// Fallback para Web / Escritorio
|
||||||
|
url = `https://www.google.com/maps/search/?api=1&query=${encodedAddress}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
window.open(url, '_system');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -131,7 +131,32 @@
|
|||||||
|
|
||||||
.view-segment {
|
.view-segment {
|
||||||
background: var(--ion-background-color);
|
background: var(--ion-background-color);
|
||||||
padding: 10px;
|
padding: 10px 0;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
ion-segment {
|
||||||
|
width: 100%;
|
||||||
|
padding: 0 10px;
|
||||||
|
|
||||||
|
&.ios {
|
||||||
|
width: 85% !important;
|
||||||
|
max-width: 85% !important;
|
||||||
|
margin-left: auto !important;
|
||||||
|
margin-right: auto !important;
|
||||||
|
padding: 0 !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
:host-context(.ios) .view-segment ion-segment {
|
||||||
|
width: 85% !important;
|
||||||
|
max-width: 85% !important;
|
||||||
|
margin-left: auto !important;
|
||||||
|
margin-right: auto !important;
|
||||||
|
padding: 0 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.card-header-flex {
|
.card-header-flex {
|
||||||
|
|||||||
@@ -35,3 +35,12 @@
|
|||||||
/* @import "@ionic/angular/css/palettes/dark.always.css"; */
|
/* @import "@ionic/angular/css/palettes/dark.always.css"; */
|
||||||
/* @import "@ionic/angular/css/palettes/dark.class.css"; */
|
/* @import "@ionic/angular/css/palettes/dark.class.css"; */
|
||||||
@import "@ionic/angular/css/palettes/dark.system.css";
|
@import "@ionic/angular/css/palettes/dark.system.css";
|
||||||
|
|
||||||
|
/* iOS 85% width for Home segments */
|
||||||
|
.ios .view-segment ion-segment,
|
||||||
|
.view-segment ion-segment.ios {
|
||||||
|
width: 85% !important;
|
||||||
|
max-width: 85% !important;
|
||||||
|
margin-left: auto !important;
|
||||||
|
margin-right: auto !important;
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user