diff --git a/src/client/assets/styles/activista.css b/src/client/assets/styles/activista.css index 40e1151..bd5a8f3 100644 --- a/src/client/assets/styles/activista.css +++ b/src/client/assets/styles/activista.css @@ -75,9 +75,9 @@ body { background: var(--a26-bg) !important; } /* ---------- barra de abajo ---------- */ .oasis-bottombar { - background: var(--a26-bg) !important; + background: var(--a26-bar, var(--a26-bg)) !important; border: 0 !important; - border-top: var(--a26-bd) !important; + border-top: var(--a26-bar-bd, var(--a26-bd)) !important; box-shadow: none !important; } .oasis-bottombar { padding: 6px 4px calc(6px + var(--inset-bottom)) !important; gap: 2px !important; } @@ -308,8 +308,9 @@ a.user-link { font-weight: 700 !important; text-decoration: underline !important border: 0 !important; box-shadow: none !important; background: transparent !important; border-radius: 0 !important; } .main-column [class$="-card"], .main-column [class*="-card "] { - border: var(--a26-bd) !important; border-radius: var(--a26-radius) !important; - background: var(--a26-bg) !important; padding: 12px !important; margin: 0 0 14px !important; + border: var(--a26-card-bd, var(--a26-bd)) !important; border-radius: var(--a26-radius) !important; + box-shadow: var(--a26-card-shadow, none) !important; + background: var(--a26-card, var(--a26-bg)) !important; padding: 12px !important; margin: 0 0 14px !important; } .main-column .card-header { padding: 0 0 8px !important; border-bottom: var(--a26-bd-fino) !important; margin-bottom: 8px !important; } .main-column [class$="-card"] .card-footer { border-top: var(--a26-bd-fino) !important; padding-top: 8px !important; margin-top: 8px !important; } diff --git a/src/client/assets/styles/mobile_ux.css b/src/client/assets/styles/mobile_ux.css index cf496b2..eeda4db 100644 --- a/src/client/assets/styles/mobile_ux.css +++ b/src/client/assets/styles/mobile_ux.css @@ -341,17 +341,18 @@ body .main-content > .main-column { padding-left: 0 !important; padding-right: 0 /* ---------- secciones de una tribu: tira de fichas deslizable + "Mas" ---------- */ .main-column .tribe-tabs { margin: 4px 0 12px !important; } +/* en rejilla de tres columnas (antes una fila que habia que deslizar); el resto en "Mas" */ .tribe-tabs-strip { - display: flex; gap: 8px; overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch; - margin: 0; padding: 4px 0 8px; scroll-snap-type: x proximity; + display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); grid-gap: 8px; + margin: 0; padding: 4px 0 8px; } .tribe-tabs-strip::-webkit-scrollbar { display: none; } .main-column a.tribe-tab, .tribe-tabs-more > summary { - flex: 0 0 auto; scroll-snap-align: start; display: inline-flex; align-items: center; justify-content: center; + flex: 0 0 auto; text-align: center; min-width: 0; overflow-wrap: anywhere; display: inline-flex; align-items: center; justify-content: center; min-height: 40px; padding: 4px 14px; border: 1px solid var(--ux-line) !important; border-radius: 20px !important; background: var(--ux-bg) !important; color: var(--ux-fg) !important; text-decoration: none !important; - font-family: var(--ux-text) !important; font-weight: 700 !important; font-size: 14px !important; white-space: nowrap; - text-transform: none; letter-spacing: .02em; + font-family: var(--ux-text) !important; font-weight: 700 !important; font-size: 14px !important; white-space: normal; + text-transform: none; letter-spacing: .02em; min-height: 44px; border-radius: 12px !important; } .main-column a.tribe-tab.is-current { background: var(--ux-accent) !important; color: var(--ux-on-accent) !important; } .tribe-tabs-more > summary { list-style: none; cursor: pointer; margin-top: 2px; } @@ -832,10 +833,21 @@ body .oasis-mobile-topbar .omt-logo img, body .oasis-mobile-topbar .omt-avatar i .main-column > div.apk-banners > * { margin: 0 0 10px !important; } .main-column > div.apk-modbar { display: block !important; position: static !important; margin: 0 0 12px !important; padding: 0 !important; background: transparent !important; box-shadow: none !important; } .main-column div.apk-modbar > div.apk-modbar-row { display: flex !important; align-items: center; justify-content: space-between; margin: 0 0 10px !important; padding: 0 !important; } -.main-column div.apk-modbar .apk-title { margin: 0 !important; padding: 0 !important; color: var(--ux-fg) !important; } +.main-column div.apk-modbar .apk-title { margin: 0 !important; padding: 0 !important; color: var(--a26-title, var(--ux-fg)) !important; } .main-column div.apk-modbar .apk-pin { margin: 0 0 0 10px !important; width: auto !important; flex: 0 0 auto; } -.main-column div.apk-modbar > .apk-strip:not(.mobile-filter) { display: flex !important; flex-wrap: nowrap !important; overflow-x: auto !important; margin: 0 0 10px !important; padding: 0 0 4px !important; } -.main-column div.apk-modbar > .apk-strip:not(.mobile-filter) > * { flex: 0 0 auto !important; width: auto !important; margin: 0 8px 0 0 !important; white-space: nowrap !important; } +/* las fichas de la cabecera en rejilla de tres columnas, sin deslizar de lado */ +.main-column div.apk-modbar > .apk-strip:not(.mobile-filter) { + display: grid !important; grid-template-columns: repeat(3, minmax(0, 1fr)); grid-gap: 8px; + overflow: visible !important; margin: 0 0 10px !important; padding: 0 !important; white-space: normal !important; +} +.main-column div.apk-modbar > .apk-strip:not(.mobile-filter) > *, +.main-column div.apk-modbar > .apk-strip:not(.mobile-filter) > form > button { + display: flex !important; align-items: center; justify-content: center; text-align: center; + width: auto !important; min-width: 0 !important; min-height: 44px !important; margin: 0 !important; padding: 4px 6px !important; + font-size: 14px !important; line-height: 1.15 !important; white-space: normal !important; overflow-wrap: anywhere; +} +.main-column div.apk-modbar > .apk-strip:not(.mobile-filter) > form { padding: 0 !important; border: 0 !important; background: transparent !important; } +.main-column div.apk-modbar > .apk-strip:not(.mobile-filter) > form > button { width: 100% !important; } .main-column div.apk-modbar > form.filter-box { margin: 0 0 8px !important; } .main-column div.apk-modbar > div.apk-modbar-foot { margin: 0 !important; padding: 0 !important; } .main-column div.apk-modbar div.module-stats-line { margin: 0 !important; padding: 0 !important; font-size: 13px; color: var(--ux-muted) !important; } @@ -856,3 +868,22 @@ body .oasis-mobile-topbar .omt-logo img, body .oasis-mobile-topbar .omt-avatar i /* el menu desplegado con los colores del skin y filas de 48px */ .main-column details.card-menu > div.card-menu-items { background: var(--ux-bg) !important; border: 1px solid var(--ux-line) !important; color: var(--ux-fg) !important; min-width: 220px; } .main-column div.card-menu-items > * { min-height: 48px; } + +/* etiquetas de la tarjeta (PUBLICO, Abierto, Asisto...): a la linea siguiente, no cortadas */ +.main-column div.card-chips-row { display: flex !important; flex-wrap: wrap !important; overflow: visible !important; max-width: 100% !important; } +.main-column div.card-chips-row > * { margin: 0 6px 6px 0 !important; } +/* algunas tiras son un solo formulario con todos los botones (Eventos): la rejilla va dentro */ +.main-column div.apk-modbar > .apk-strip:not(.mobile-filter) > form:only-child { + grid-column: 1 / -1; display: grid !important; grid-template-columns: repeat(3, minmax(0, 1fr)); grid-gap: 8px; + min-height: 0 !important; padding: 0 !important; +} +.main-column div.apk-modbar > .apk-strip:not(.mobile-filter) > form:only-child > button { min-height: 44px !important; margin: 0 !important; } +/* las rejillas de tarjetas del dev (jobs-grid, events...) sin relleno propio: la tarjeta + ocupa el ancho como en Actividad */ +.main-column > section > div[class$="-grid"] { padding: 0 !important; margin: 0 !important; } + +/* campos de texto con el fondo de campo de la paleta (en Estandar, el #2a2a2a del dev) */ +.main-column input[type="text"], .main-column input[type="search"], .main-column input[type="url"], .main-column input[type="number"], +.main-column input[type="datetime-local"], .main-column input[type="date"], .main-column textarea, .main-column select { + background-color: var(--a26-field, var(--a26-bg)) !important; +} diff --git a/src/client/assets/themes/Activista.css b/src/client/assets/themes/Activista.css index caea6f4..55cbb7c 100644 --- a/src/client/assets/themes/Activista.css +++ b/src/client/assets/themes/Activista.css @@ -58,7 +58,7 @@ h1, h2, h3, .card-label, .tags-header h2, .oasis-nav-header { text-transform: none !important; letter-spacing: 0; line-height: 1.2 !important; - color: var(--a26-fg) !important; + color: var(--a26-title, var(--a26-fg)) !important; } h1 { font-size: 26px !important; } h2 { font-size: 22px !important; } @@ -80,10 +80,10 @@ h3 { font-size: 18px !important; } /* --- tarjetas: borde fino, sin sombra --- */ .main-column article, .main-column [class$="-card"], .main-column [class*="-card "], .main-column .card, .forum-comment, .feed-row { - background: var(--a26-bg) !important; - border: 1px solid var(--a26-line) !important; + background: var(--a26-card, var(--a26-bg)) !important; + border: var(--a26-card-bd, 1px solid var(--a26-line)) !important; border-radius: var(--a26-radius) !important; - box-shadow: none !important; + box-shadow: var(--a26-card-shadow, none) !important; } .main-column > section { border: 0 !important; padding: 0 !important; } diff --git a/src/views/mobile_settings.js b/src/views/mobile_settings.js index 3312944..ea1b6fe 100644 --- a/src/views/mobile_settings.js +++ b/src/views/mobile_settings.js @@ -23,10 +23,18 @@ const cfgNow = () => { try { return require("../configs/config-manager.js").getC // ---------- colores ---------- -// [clave, fondo, texto, acento]; la primera es la de serie y son los colores del dev -// (negro y oro de su tema OasisMobile). Los nombres, en i18n_fork (palette_) +// [clave, fondo, texto, acento, extras]; la primera es la de serie y calca la APK +// oficial del dev, medida con el inspector en su 1.3.5 (fondo #121212, texto oro +// #ffd700, titulos, etiquetas y resalte naranja #ffa300 con texto #111, tarjetas #1e1e1e +// sin borde y con raya naranja a la izquierda, bordes de boton #555, campos #2a2a2a), para +// que al abrir no parezca otra app. Los extras pisan lo que si no se calcula. +// Los nombres, en i18n_fork (palette_) const PALETTES = [ - ["oasis", "#121212", "#f2f2f2", "#ffd700"], + ["oasis", "#121212", "#ffd700", "#ffa300", { + onAccent: "#111111", card: "#1e1e1e", title: "#ffa300", line: "#2a2a2a", edge: "#555555", + muted: "#ffd700", soft: "#2a2a2a", tint: "#1a1400", field: "#2a2a2a", + bar: "#161616", barBorder: "1px solid #2a2a2a", + cardBorder: "0", cardShadow: "inset 3px 0 0 0 #ffa300" }], ["acampada", "#ffffff", "#000000", "#00e5ff"], ["noche", "#101114", "#f2f2f2", "#00e5ff"], ["bosque", "#f3f7ef", "#13231a", "#3ccf7e"], @@ -85,14 +93,20 @@ const PREVIEW_CSS = PALETTES.map(([k, bg, fg, ac]) => const colorsCss = (cfg) => { const c = colorState(cfg); // sin nada guardado tambien: la de serie son los colores del dev, no los de Activista.css + const extra = ((c.preset !== "custom" && PALETTES.find(x => x[0] === c.preset)) || [])[4] || {}; const vars = [ `--a26-bg:${c.bg}`, `--a26-fg:${c.fg}`, `--a26-neon:${c.accent}`, - `--a26-on-neon:${readableOn(c.accent)}`, - `--a26-soft:${mix(c.bg, c.fg, 0.06)}`, - `--a26-muted:${mix(c.fg, c.bg, 0.35)}`, - `--a26-tint:${mix(c.bg, c.accent, 0.2)}`, - `--a26-line:${mix(c.bg, c.fg, 0.18)}`, - `--a26-edge:${mix(c.bg, c.fg, 0.5)}`, + `--a26-card:${extra.card || c.bg}`, `--a26-title:${extra.title || c.fg}`, + `--a26-on-neon:${extra.onAccent || readableOn(c.accent)}`, + `--a26-soft:${extra.soft || mix(c.bg, c.fg, 0.06)}`, + `--a26-muted:${extra.muted || mix(c.fg, c.bg, 0.35)}`, + `--a26-tint:${extra.tint || mix(c.bg, c.accent, 0.2)}`, + `--a26-line:${extra.line || mix(c.bg, c.fg, 0.18)}`, + `--a26-edge:${extra.edge || mix(c.bg, c.fg, 0.5)}`, + `--a26-card-bd:${extra.cardBorder || "var(--a26-bd)"}`, + `--a26-card-shadow:${extra.cardShadow || "none"}`, + `--a26-field:${extra.field || c.bg}`, `--a26-bar:${extra.bar || c.bg}`, + `--a26-bar-bd:${extra.barBorder || "var(--a26-bd)"}`, // rojo de texto (borrar): el de serie si se lee sobre el fondo; si no, uno claro `--a26-danger-text:${contrast(c.bg, "#c4003b") >= 4.5 ? "#c4003b" : "#ff6b86"}`, `color-scheme:${lum(c.bg) < 0.2 ? "dark" : "light"}`