OASIS_MOBILE/src/client/assets/themes/OasisMobile.css
s1to 745c340917 [0.9.1] FORK_IA_UX: thumb-zone navigation — hive bottom-sheet + publish FAB + reordered bar
Mobile-usability experiment grounded in real studies (Hoober 2013,
Bergstrom-Lehtovirta CHI 2011, Parhi 2006 target size, NN/g 2016 visible nav):
- The hive (categories + modules) opens from the bottom bar as a thumb-reachable
  bottom-sheet (checkbox-hack, no JS), freeing the top for content.
- Bottom bar reordered: Explore, PM, (+) publish FAB, Search, Inbox; the central
  FAB is the distinct, elevated primary action.
- Network/status quick row (Peers, Graphos, Inbox, Settings) inside the sheet.
- Tap targets >=48px. Additive and gated by OASIS_MOBILE (Linux untouched).
2026-08-06 12:00:18 +02:00

1120 lines
50 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

html { overflow-x: clip; overflow-y: visible; height: auto; }
body { overflow-x: clip; overflow-y: visible; }
.oasis-bottombar {
display: flex;
position: fixed;
left: 0; right: 0; bottom: 0;
z-index: 1000;
justify-content: space-around;
align-items: center;
gap: 4px;
background: #1F1F1F;
border-top: 1px solid #333;
padding: 8px 6px calc(8px + env(safe-area-inset-bottom, 0px));
}
.oasis-bottombar .bb-item {
position: relative;
display: flex;
flex-direction: column;
align-items: center;
gap: 3px;
flex: 1 1 0;
min-width: 0;
padding: 2px 0;
text-decoration: none;
}
.oasis-bottombar .bb-ico { font-size: 18px; line-height: 1; color: #FFD700; }
.oasis-bottombar .bb-lbl { font-size: 9px; color: #FFD700; white-space: nowrap; }
.oasis-bottombar .bb-badge {
position: absolute;
top: -4px;
left: calc(50% + 6px);
min-width: 15px; height: 15px;
padding: 0 3px;
border-radius: 8px;
background: #FFD700;
color: #121212;
font-size: 9px; font-weight: bold;
display: flex; align-items: center; justify-content: center;
}
body { padding-bottom: calc(64px + env(safe-area-inset-bottom, 0px)); }
/* topbar FIJA arriba: [logo] [Personal] [Community] [avatar]; el hive scrollea por debajo */
.oasis-mobile-topbar {
position: fixed; top: 0; left: 0; right: 0; z-index: 100;
display: flex; align-items: center; gap: 8px;
padding: 8px 12px;
background: #121212;
border-bottom: 1px solid #333;
}
body { padding-top: 84px; background: #121212; }
.oasis-mobile-topbar .omt-logo, .oasis-mobile-topbar .omt-avatar { flex: 0 0 auto; }
.oasis-mobile-topbar .omt-logo img,
.oasis-mobile-topbar .omt-avatar img {
width: 42px; height: 42px;
border-radius: 50%;
border: 2px solid #FFD700;
object-fit: cover; display: block;
}
.oasis-mobile-topbar .omt-menus {
flex: 1 1 auto; min-width: 0;
display: flex; justify-content: center; gap: 8px;
}
.oasis-mobile-topbar .omt-menus .oasis-menu-btn {
display: flex; align-items: center; justify-content: center;
padding: 7px 14px;
border: 1px solid #FFD700; border-radius: 8px;
background: #161616; color: #FFD700;
font-weight: 600; letter-spacing: .5px; text-decoration: none;
font-size: 13px; white-space: nowrap; cursor: pointer;
}
.oasis-mobile-topbar .omt-menus .oasis-menu-btn.active {
background: #FFD700; color: #121212; border-color: #FFD700;
}
.oasis-mobile-topbar .omt-menus .oasis-menu-btn span { text-decoration: none; }
/* ANULAR el "card" global de style.css `div{background:#222;border-radius:10px;box-shadow;padding:20px;margin-bottom:20px}`
en nuestro chrome móvil propio: era el 2º color (caja mas clara) detras de los botones,
la caja redondeada de la topbar y el fondo #222 detras de los hexagonos. */
.header, .hive-nav, .hive-grid, .hive-cats, .hive-row,
.oasis-mobile-topbar, .oasis-mobile-topbar .omt-menus {
background-color: transparent; box-shadow: none; border-radius: 0;
}
.oasis-mobile-topbar { background-color: #121212; } /* fija: fondo opaco (el contenido scrollea por debajo) */
.oasis-mobile-topbar .omt-menus { padding: 0; margin: 0; } /* sin caja ni relleno detras de los botones */
.header .top-bar-left > a.logo-icon { display: none; }
.oasis-mobile-menus { display: flex; gap: 8px; padding: 0 10px 6px; }
.oasis-mobile-menus .oasis-menu-ico { display: none; }
.oasis-mobile-menus .oasis-menu-btn {
flex: 1 1 0;
display: flex; align-items: center; justify-content: center;
padding: 10px 12px;
border: 1px solid #FFD700; border-radius: 8px;
background: #161616; color: #FFD700;
font-weight: 600; letter-spacing: 1px; text-decoration: none; cursor: pointer;
}
.oasis-mobile-menus .oasis-menu-btn span { text-decoration: none; }
.oasis-mobile-menus .oasis-menu-btn.active {
background: #FFD700; color: #121212; border-color: #FFD700;
}
:root {
--space-1: 4px; --space-2: 8px; --space-3: 16px; --space-4: 24px; --space-5: 32px;
--fs-caption: 12px; --fs-body: 14px; --fs-body-lg: 16px; --fs-title: 20px;
--lh-body: 1.5; --measure: 66ch;
--c-muted: #8c8c8c; --radius-md: 12px;
}
.oasis-bottombar .bb-fab .bb-ico {
width: 46px; height: 46px;
margin-top: -22px;
border-radius: 50%;
background: #FFD700; color: #121212;
display: flex; align-items: center; justify-content: center;
font-size: 22px;
box-shadow: 0 2px 8px rgba(0,0,0,.4);
}
.oasis-bottombar .bb-fab .bb-lbl { color: #FFD700; font-weight: bold; }
.main-column, .main-column p, .main-column li, .main-column a,
.main-column span, .main-column td, .main-column h1, .main-column h2, .main-column h3 {
overflow-wrap: anywhere;
word-break: break-word;
}
.main-column { padding: var(--space-3); }
.main-column p { line-height: var(--lh-body); }
.main-column > * + * { margin-top: var(--space-3); }
.main-column img, .main-column video, .main-column table, .main-column pre, .main-column iframe {
max-width: 100%; height: auto;
}
.main-column pre { white-space: pre-wrap; }
.oasis-nav-group {
list-style: none;
background: #1c1c1c;
border: 1px solid #333;
border-radius: var(--radius-md);
overflow: hidden;
margin-bottom: var(--space-2);
}
.oasis-nav-header {
display: flex; align-items: center; gap: var(--space-2);
min-height: 48px; padding: 0 var(--space-3);
cursor: pointer;
color: #FFD700; font-weight: bold;
text-transform: uppercase; letter-spacing: .04em;
font-size: var(--fs-caption);
}
.oasis-nav-header .nav-text { flex: 1 1 auto; }
.oasis-nav-header .oasis-nav-arrow { color: var(--c-muted); transition: transform 150ms ease; }
.oasis-nav-toggle:checked + .oasis-nav-header .oasis-nav-arrow { transform: rotate(180deg); }
.oasis-nav-header:active { background: #262626; }
.oasis-nav-list { list-style: none; padding: 0; margin: 0; }
.oasis-nav-list li a {
display: flex; align-items: center; gap: var(--space-3);
min-height: 48px; padding: 0 var(--space-3);
color: #FFD700; text-decoration: none;
border-top: 1px solid #262626;
}
.oasis-nav-list li a .emoji { flex: 0 0 auto; width: 22px; text-align: center; color: #FFD700; }
.oasis-nav-list li a .nav-text { font-size: var(--fs-body); }
.oasis-nav-list li a:active { background: #262626; }
.oasis-nav-list li a.current { color: #FFD700; font-weight: bold; }
.main-column h1 { font-size: var(--fs-title); font-weight: 700; line-height: 1.25; margin: 0 0 var(--space-2); }
.main-column h2 { font-size: 18px; font-weight: 700; line-height: 1.3; margin: 0 0 var(--space-2); }
.main-column h3 { font-size: var(--fs-body-lg); font-weight: 600; margin: 0 0 var(--space-1); }
.main-column p { font-size: var(--fs-body-lg); }
.main-column .created-at, .main-column .small, .main-column .time,
.main-column .meta, .main-column .author-meta, .main-column .subtitle {
color: var(--c-muted); font-size: var(--fs-caption);
}
.main-column article,
.main-column [class*="-card"] {
background: #1c1c1c;
border: 1px solid #333;
border-radius: var(--radius-md);
padding: var(--space-3);
}
.main-column article:active,
.main-column [class*="-card"]:active { background: #202020; }
.btn, button, input[type="submit"], input[type="button"], .submit-button,
.filter-btn, .create-button, .edit-btn, .delete-btn, .join-btn, .leave-btn, .buy-btn {
min-height: 48px;
}
button:active, input[type="submit"]:active, .submit-button:active,
.filter-btn:active, .create-button:active, .edit-btn:active,
.delete-btn:active, .join-btn:active, .leave-btn:active, .buy-btn:active {
filter: brightness(.85);
}
.main-column a:active { opacity: .6; }
* { -webkit-tap-highlight-color: transparent; }
a, button, label, .tap, .oasis-menu-btn, .bb-item, .oasis-nav-header, .oasis-nav-list li a {
touch-action: manipulation;
}
body { overscroll-behavior: none; }
.main-content, .main-column, .header { overflow: visible; }
/* === Usabilidad 0.9.1: Personal/Community filtran el hive server-side (enlaces ?hive=) + desplegable FILTER === */
/* desplegable FILTER de la ristra de filtros de Activity (oculto por defecto) */
.activity-filter-toggle { position: absolute; opacity: 0; width: 1px; height: 1px; pointer-events: none; margin: 0; }
.activity-filter-btn {
display: flex; align-items: center; justify-content: center; gap: 8px;
width: 100%; min-height: 44px; margin: 4px 0 8px; padding: 10px 12px;
border: 1.5px solid #333; border-radius: 10px;
background: #121212; color: #FFD700;
font-weight: bold; letter-spacing: 1px; text-transform: uppercase; cursor: pointer;
}
.activity-filter-caret { transition: transform 150ms ease; }
#activity-filter-toggle:checked ~ .activity-filter-btn { background: #FFD700; color: #121212; border-color: #FFD700; }
#activity-filter-toggle:checked ~ .activity-filter-btn .activity-filter-caret { transform: rotate(180deg); }
.activity-filter-panel { display: none; }
#activity-filter-toggle:checked ~ .activity-filter-panel { display: block; }
.activity-filter-panel .activity-filter-grid { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px; margin-top: 8px; }
.activity-filter-panel .activity-filter-col { display: contents; }
.activity-filter-panel form { margin: 0; }
.bb-manage { margin: 8px 0 16px; }
.bb-manage h3, .bb-manage-add h3 {
font-size: 13px; text-transform: uppercase; letter-spacing: .05em;
color: #FFD700; margin: 14px 0 8px;
}
.bb-manage-list { display: flex; flex-direction: column; gap: 8px; }
.bb-manage-form { margin: 0; width: 100%; }
.bb-manage-btn {
width: 100%;
display: flex; align-items: center; gap: 12px;
min-height: 52px; padding: 0 14px;
background: #1c1c1c; border: 1px solid #333; border-radius: 10px;
color: #FFD700; cursor: pointer; text-align: left;
}
.bb-manage-ico { font-size: 20px; color: #FFD700; width: 26px; text-align: center; }
.bb-manage-lbl { flex: 1 1 auto; font-size: 15px; }
.bb-manage-x { font-size: 16px; color: #FFD700; font-weight: bold; }
.bb-manage-empty, .bb-manage-full { color: #999; font-size: 14px; padding: 8px 2px; }
.bb-manage-done {
display: block; text-align: center;
margin-top: 16px; min-height: 48px; line-height: 48px;
}
.hive-nav { --hx: min(64px, calc((100vw - 40px) / 4)); --hxm: min(58px, calc((100vw - 36px) / 5)); margin: 8px 0 16px; overflow: visible; background: transparent; padding: 0; border: 0; box-shadow: none; }
.hive-radio { position: absolute; opacity: 0; width: 0; height: 0; pointer-events: none; }
.hive-grid { display: flex; flex-direction: column; align-items: center; overflow: visible; background: transparent; padding: 0; margin: 0; box-shadow: none; }
.hive-row { display: flex; justify-content: center; gap: 3px; overflow: visible; background: transparent; padding: 0; margin: 0; box-shadow: none; }
.hive-cats .hive-row + .hive-row { margin-top: calc(var(--hx) * -0.30); }
.hex-cat, .hex-mod {
position: relative;
-webkit-clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);
clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);
display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px;
text-decoration: none; cursor: pointer; box-sizing: border-box;
background: #FFD700;
filter: drop-shadow(0 1px 2px rgba(0,0,0,.6));
}
.hex-cat::before, .hex-mod::before {
content: ''; position: absolute; inset: 1.5px; z-index: 0;
-webkit-clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);
clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);
background: #161616;
}
.hex-cat { width: var(--hx); height: calc(var(--hx) * 1.15); }
.hex-mod { width: var(--hxm); height: calc(var(--hxm) * 1.15); }
.hex-cat .hx-ico, .hex-mod .hx-ico { color: #FFD700; line-height: 1; position: relative; z-index: 1; }
.hex-cat .hx-ico { font-size: 17px; }
.hex-mod .hx-ico { font-size: 16px; }
.hex-cat .hx-lbl, .hex-mod .hx-lbl { color: #FFD700; text-align: center; line-height: 1; font-weight: bold; overflow: hidden; position: relative; z-index: 1; }
.hex-cat .hx-lbl { font-size: 8px; max-width: 88%; }
.hex-mod .hx-lbl { font-size: 8px; max-width: 92%; }
.hex-cat:active::before, .hex-mod:active::before { background: #242424; }
#hive-personal:checked ~ .hive-grid .hex-cat[for="hive-personal"],
#hive-governance:checked ~ .hive-grid .hex-cat[for="hive-governance"],
#hive-office:checked ~ .hive-grid .hex-cat[for="hive-office"],
#hive-economy:checked ~ .hive-grid .hex-cat[for="hive-economy"],
#hive-tools:checked ~ .hive-grid .hex-cat[for="hive-tools"],
#hive-network:checked ~ .hive-grid .hex-cat[for="hive-network"],
#hive-blogs:checked ~ .hive-grid .hex-cat[for="hive-blogs"],
#hive-creative:checked ~ .hive-grid .hex-cat[for="hive-creative"],
#hive-media:checked ~ .hive-grid .hex-cat[for="hive-media"],
#hive-fediverse:checked ~ .hive-grid .hex-cat[for="hive-fediverse"] { background: #FFD700; }
#hive-personal:checked ~ .hive-grid .hex-cat[for="hive-personal"]::before,
#hive-governance:checked ~ .hive-grid .hex-cat[for="hive-governance"]::before,
#hive-office:checked ~ .hive-grid .hex-cat[for="hive-office"]::before,
#hive-economy:checked ~ .hive-grid .hex-cat[for="hive-economy"]::before,
#hive-tools:checked ~ .hive-grid .hex-cat[for="hive-tools"]::before,
#hive-network:checked ~ .hive-grid .hex-cat[for="hive-network"]::before,
#hive-blogs:checked ~ .hive-grid .hex-cat[for="hive-blogs"]::before,
#hive-creative:checked ~ .hive-grid .hex-cat[for="hive-creative"]::before,
#hive-media:checked ~ .hive-grid .hex-cat[for="hive-media"]::before,
#hive-fediverse:checked ~ .hive-grid .hex-cat[for="hive-fediverse"]::before { background: #FFD700; }
#hive-personal:checked ~ .hive-grid .hex-cat[for="hive-personal"] :is(.hx-ico,.hx-lbl),
#hive-governance:checked ~ .hive-grid .hex-cat[for="hive-governance"] :is(.hx-ico,.hx-lbl),
#hive-office:checked ~ .hive-grid .hex-cat[for="hive-office"] :is(.hx-ico,.hx-lbl),
#hive-economy:checked ~ .hive-grid .hex-cat[for="hive-economy"] :is(.hx-ico,.hx-lbl),
#hive-tools:checked ~ .hive-grid .hex-cat[for="hive-tools"] :is(.hx-ico,.hx-lbl),
#hive-network:checked ~ .hive-grid .hex-cat[for="hive-network"] :is(.hx-ico,.hx-lbl),
#hive-blogs:checked ~ .hive-grid .hex-cat[for="hive-blogs"] :is(.hx-ico,.hx-lbl),
#hive-creative:checked ~ .hive-grid .hex-cat[for="hive-creative"] :is(.hx-ico,.hx-lbl),
#hive-media:checked ~ .hive-grid .hex-cat[for="hive-media"] :is(.hx-ico,.hx-lbl),
#hive-fediverse:checked ~ .hive-grid .hex-cat[for="hive-fediverse"] :is(.hx-ico,.hx-lbl) { color: #121212; }
.hive-panel { display: none; margin: 12px auto 0; max-width: 340px; background: #101010; border: 1px solid #242424; border-radius: 16px; padding: 12px 8px; overflow: visible; box-shadow: none; }
#hive-personal:checked ~ #hive-panel-personal,
#hive-governance:checked ~ #hive-panel-governance,
#hive-office:checked ~ #hive-panel-office,
#hive-economy:checked ~ #hive-panel-economy,
#hive-tools:checked ~ #hive-panel-tools,
#hive-network:checked ~ #hive-panel-network,
#hive-blogs:checked ~ #hive-panel-blogs,
#hive-creative:checked ~ #hive-panel-creative,
#hive-media:checked ~ #hive-panel-media,
#hive-fediverse:checked ~ #hive-panel-fediverse { display: block; }
.hive-mods { display: flex; flex-wrap: wrap; justify-content: center; gap: 4px; margin: 0; padding: 0; background: transparent; overflow: visible; }
.header .top-bar-left nav,
.header .top-bar-right nav { display: none; }
.oasis-mobile-topbar { padding-top: calc(env(safe-area-inset-top, 0px) + 10px); }
.oasis-bottombar .bb-pair {
display: flex; align-items: center;
flex: 0 0 auto;
gap: 2px; padding: 3px;
background: #262626;
border: 1px solid #3a3a3a;
border-radius: 999px;
}
.oasis-bottombar .bb-pair .bb-item { flex: 0 0 auto; padding: 2px 8px; }
.oasis-bottombar .bb-pair .bb-lbl { font-size: 8px; }
.oasis-bottombar a.bb-item.current .bb-ico {
background: #FFD700; color: #121212;
border-radius: 999px; padding: 4px 12px;
}
.oasis-bottombar a.bb-item.current .bb-lbl { color: #FFD700; font-weight: bold; }
.oasis-bottombar a.bb-item.current .bb-badge { background: #121212; color: #FFD700; }
.main-column, .main-column p, .main-column li, .main-column a,
.main-column span, .main-column td, .main-column th, .main-column label,
.main-column h1, .main-column h2, .main-column h3, .main-column h4,
.main-column strong, .main-column em, .main-column small,
.created-at, .post-meta, .feed-post-meta,
.feed-row .small, .feed-row .time, .feed-row .created-at,
.profile-sensors-box > *,
.card-field .card-value, .card-field .card-label {
overflow-wrap: break-word;
word-break: normal;
-webkit-hyphens: none;
hyphens: none;
}
.main-column pre, .main-column code, kbd, samp,
.peer-key, .user-link.peer-key, .oasis-id-copy, .search-oasis-id,
.pm-sent-key-value, .kpi__value,
.block-info-table td .peer-key, .block-info-table td .user-link,
.pm-info-table td .user-link,
.main-column a[href*="ed25519"], .main-column a[href^="ssb:"],
.main-column a[href^="/author/"] {
overflow-wrap: anywhere;
word-break: break-all;
}
button, input[type="submit"], input[type="button"],
.filter-btn, a.filter-btn, .create-button, .edit-btn, .delete-btn,
.join-btn, .leave-btn, .buy-btn, .submit-button, .btn,
.conn-actions button, .peers-conn-actions button,
.mode-buttons button, .mode-buttons .filter-btn,
.filter-group button, .filter-group .filter-btn,
.main-column button, .main-column input[type="submit"] {
white-space: normal;
word-break: normal;
overflow-wrap: break-word;
-webkit-hyphens: none;
hyphens: none;
}
.conn-actions, .peers-conn-actions {
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: center;
align-items: stretch;
gap: 8px;
width: 100%;
max-width: 100%;
overflow-x: hidden;
}
.conn-actions > form, .peers-conn-actions > form {
flex: 0 1 auto;
width: auto;
min-width: 0;
margin: 0;
display: flex;
}
.pm-info-table, .pm-info-table tbody,
.block-info-table, .block-info-table tbody {
display: block;
width: 100%;
max-width: 100%;
border: 0;
background: transparent;
box-shadow: none;
table-layout: auto;
}
.pm-info-table thead, .block-info-table thead { display: none; }
.pm-info-table tr, .block-info-table tr {
display: block;
width: 100%;
box-sizing: border-box;
border: 0;
border-bottom: 1px solid rgba(255,215,0,0.18);
border-radius: 0;
margin: 0 0 8px 0;
padding: 6px 0;
background: transparent;
}
.pm-info-table td, .block-info-table td {
display: block;
width: 100%;
max-width: 100%;
box-sizing: border-box;
border: 0;
background: transparent;
padding: 1px 0;
text-align: left;
overflow-wrap: break-word;
word-break: normal;
}
.pm-info-table td.card-label, .block-info-table td.card-label {
color: var(--c-muted, #8c8c8c);
font-size: 11px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: .03em;
margin-bottom: 2px;
padding-bottom: 0;
}
.pm-info-table td.card-value, .block-info-table td.card-value {
font-size: 15px;
line-height: 1.5;
margin-bottom: 6px;
}
.block-info-table tr:first-child:has(> td.card-label) { display: none; }
.block-info-table td[data-label]:not([data-label=""])::before {
content: attr(data-label);
display: block;
color: var(--c-muted, #8c8c8c);
font-size: 10px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: .03em;
margin-bottom: 1px;
white-space: nowrap;
word-break: normal;
}
.block-info-table td[data-label=""]::before { content: none; }
.peers-list .block-info-table td,
.peers-technical-block .block-info-table td,
.gov-overview tbody td {
word-break: normal;
overflow-wrap: break-word;
}
.pm-info-table td .user-link, .pm-info-table td .peer-key, .pm-info-table td a[href],
.block-info-table td .peer-key, .block-info-table td .user-link, .block-info-table td a[href] {
display: inline-block;
max-width: 100%;
overflow-wrap: anywhere;
word-break: break-all;
}
.pm-info-table td form, .block-info-table td form,
.pm-info-table td button, .block-info-table td button {
width: 100%;
margin: 0;
}
.main-content { width: 100%; max-width: 100%; }
.main-column {
width: 100%; max-width: 100%;
padding: 16px; box-sizing: border-box;
}
.main-column .card-field {
flex-direction: column;
align-items: stretch;
gap: 2px;
}
.main-column .card-field .card-value {
width: 100%; max-width: 100%; font-size: 15px;
}
.main-column .card-field .card-label {
color: var(--c-muted, #8c8c8c); font-size: 11px;
}
.main-column img, .main-column video, .main-column iframe, .main-column canvas {
max-width: 100%; height: auto;
}
.main-column hr {
width: 100%; border: 0;
border-top: 1px solid #333; margin: 16px 0;
}
.activity-filter-acc { width: 100%; margin-bottom: 8px; }
.activity-quick-modes {
display: flex; flex-wrap: nowrap; gap: 6px; margin-bottom: 8px;
}
.activity-quick-modes form { flex: 1 1 0; min-width: 0; margin: 0; display: flex; }
.activity-quick-modes .filter-btn {
flex: 1 1 0; width: 100%; min-height: 44px;
white-space: nowrap; word-break: keep-all; overflow-wrap: normal;
padding-left: 6px; padding-right: 6px; font-size: 14px;
}
.activity-groups { list-style: none; padding: 0; margin: 0; }
.activity-groups .oasis-nav-header .emoji { display: none; }
.activity-groups .oasis-nav-header .nav-text { flex: 1 1 auto; }
.activity-groups .act-count {
flex: 0 0 auto; min-width: 20px; text-align: center;
font-size: 11px; font-weight: 700; color: #121212;
background: #FFD700; border-radius: 999px; padding: 1px 7px;
margin: 0 8px 0 0;
}
.activity-groups .oasis-nav-list li { list-style: none; margin: 0; padding: 0; }
.activity-groups .oasis-nav-list form { margin: 0; display: block; width: 100%; }
.activity-groups .oasis-nav-list .filter-btn {
display: block; width: 100%; text-align: left;
min-height: 44px; margin: 2px 0; box-sizing: border-box;
}
.activity-groups .oasis-nav-list .filter-btn.active {
outline: 2px solid #FFD700; outline-offset: -2px;
}
.message-list { display: flex; flex-direction: column; gap: 4px; width: 100%; }
.message-list .pm-thread { display: flex; flex-direction: column; width: 100%; align-self: stretch; }
.pm-thread-replies { display: flex; flex-direction: column; gap: 4px; }
.pm-card.pm-bubble {
max-width: 82%; width: fit-content; min-width: 0;
box-sizing: border-box; padding: 8px 12px; margin: 2px 0;
border-radius: 16px; border: 1px solid #333;
background: #1e1e1e; box-shadow: none; cursor: default;
}
.pm-card.pm-bubble.pm-recv {
align-self: flex-start; margin-left: 0; margin-right: auto;
border-bottom-left-radius: 4px; background: #1e1e1e; border-color: #343434;
}
.pm-card.pm-bubble.pm-sent {
align-self: flex-end; margin-left: auto; margin-right: 0;
border-bottom-right-radius: 4px; background: #2a2413; border-color: #5c4c1f;
}
.pm-bubble .pm-bubble-sender { font-size: 11px; font-weight: 700; color: #FFD700; margin-bottom: 3px; }
.pm-bubble .pm-bubble-sender a { color: #FFD700; }
.pm-bubble .message-text { font-size: 15px; line-height: 1.42; color: #FFD700; margin: 0; }
.pm-bubble .message-text a { color: #FFD700; }
.pm-bubble .pm-bubble-meta {
display: flex; flex-wrap: wrap; align-items: center;
gap: 6px; margin-top: 4px; font-size: 10px; color: var(--c-muted, #8c8c8c);
}
.pm-card.pm-sent .pm-bubble-meta { justify-content: flex-end; }
.pm-card.pm-recv .pm-bubble-meta { justify-content: flex-start; }
.pm-bubble .pm-bubble-subject { font-style: italic; opacity: .75; max-width: 50%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pm-bubble .pm-bubble-lock { opacity: .85; }
.pm-bubble .pm-bubble-eco { font-size: 9px; opacity: .9; }
.pm-bubble .pm-bubble-eco * { font-size: 9px; }
.pm-bubble .pm-actions { margin-top: 6px; display: flex; gap: 6px; }
.pm-card.pm-sent .pm-actions { justify-content: flex-end; }
.pm-bubble .pm-actions .pm-btn { font-size: 10px; padding: 3px 8px; min-height: 28px; }
.pm-bubble .pm-actions form { margin: 0; }
.pm-bubble .pm-info-table { display: none; }
.pm-thread .pm-thread-details { width: 100%; }
.pm-thread .pm-thread-toggle { font-size: 12px; color: var(--c-muted, #8c8c8c); padding: 4px 0; cursor: pointer; }
.main-column h1, .main-column h2, .main-column h3, .main-column h4,
.tags-header h2, .tags-header h3, .title-with-chip h2, .pm-title, h2.pm-title,
.cn-name, h1.cn-name, .cn-section, h2.cn-section, .profile-side-name, h2.profile-side-name {
text-wrap: balance;
overflow-wrap: break-word;
word-break: keep-all;
-webkit-hyphens: none; hyphens: none;
text-align: left;
}
.main-column h1, .tags-header h2, .cn-name {
font-size: var(--fs-title, 20px); font-weight: 700;
line-height: 1.22; letter-spacing: -0.01em;
margin: 0 0 var(--space-2, 8px);
}
.main-column h2, .pm-title, .title-with-chip h2, .cn-section {
font-size: 18px; font-weight: 700;
line-height: 1.28; margin: var(--space-1, 4px) 0 var(--space-2, 8px);
}
.main-column h3 {
font-size: var(--fs-body-lg, 16px); font-weight: 600;
line-height: 1.35; margin: var(--space-1, 4px) 0;
}
.main-column h1, .main-column h2, .main-column h3,
.tags-header h2, .pm-title, .cn-name, .cn-section {
max-width: 40ch; width: auto; min-width: 0;
}
.main-column h1 code, .main-column h2 code, .main-column h3 code,
.tags-header h2 code, .pm-title code,
.main-column h1 a[href*="ed25519"], .main-column h2 a[href*="ed25519"],
.main-column h1 a[href^="ssb:"], .main-column h2 a[href^="ssb:"] {
word-break: break-all; overflow-wrap: anywhere;
}
.main-column .tags-header {
display: flex; flex-direction: column; align-items: flex-start;
gap: var(--space-1, 4px); width: 100%; max-width: 100%;
margin: 0 0 var(--space-2, 8px);
}
.main-column .tags-header h2 { margin: 0; }
.main-column .title-with-chip {
display: flex; flex-wrap: wrap; align-items: center;
gap: var(--space-2, 8px); width: 100%; max-width: 100%;
}
.main-column .title-with-chip h2 { flex: 1 1 auto; min-width: 0; margin: 0; max-width: none; }
.main-column .title-with-chip > :not(h2) { flex: 0 0 auto; }
.main-column p, .main-column li,
.tags-header p, .tags-header .prefs-help, .indexing-note, .indexing-percent,
.error-page-message, .welcome-text, .message-text, .pm-bubble .message-text {
text-wrap: pretty;
line-height: 1.55;
max-width: min(66ch, 100%);
overflow-wrap: anywhere;
word-break: normal;
min-width: 0;
-webkit-hyphens: none; hyphens: none;
}
.main-column p + p { margin-top: var(--space-3, 16px); }
.tags-header p, .tags-header .prefs-help, .indexing-note { line-height: 1.5; margin: 4px 0 0 0; }
.pm-bubble .message-text { line-height: 1.45; max-width: 100%; }
[style*="auto-fill"],
[style*="minmax(240px"], [style*="minmax(280px"], [style*="minmax(300px"],
[style*="minmax( 240px"], [style*="minmax( 280px"], [style*="minmax( 300px"],
.trending-container, .cn-hub-grid, .cn-products {
display: grid !important; grid-template-columns: 1fr !important; gap: 12px !important;
width: 100% !important; max-width: 100% !important;
}
.trending-container > *, .games-grid > *, .market-grid > *, .tribe-grid > *,
.feed-container, .feed-card, .trending-card,
.main-column article, .main-column [class*="-card"], .main-column [class*="-item"],
.main-column [class*="-entry"], .main-column .card {
width: 100%; max-width: 100%; min-width: 0;
box-sizing: border-box; margin-left: 0; margin-right: 0;
}
.feed-card .feed-text, .trending-card .feed-text,
.main-column article p, .main-column [class*="-card"] p { max-width: var(--measure, 66ch); }
.main-column form, .comment-form, .comment-form-wrapper, .market-form,
.new-message-form, .project-control-form, .filter-box {
display: block; width: 100%; max-width: 100%;
min-width: 0; box-sizing: border-box;
}
.main-column input:not([type="checkbox"]):not([type="radio"]):not(.oasis-nav-toggle):not(.oasis-nav-side-toggle),
.main-column textarea, .main-column select {
width: 100%; max-width: 100%; min-width: 0; box-sizing: border-box;
}
.main-column form > button:only-of-type, .main-column form > .create-button,
.comment-form button[type="submit"], .market-form button[type="submit"],
.new-message-form button[type="submit"] {
display: block; width: 100%; max-width: 100%;
box-sizing: border-box; margin-top: 8px;
}
[style*="width:33%"], [style*="width: 33%"], [style*="width:25%"], [style*="width: 25%"],
[style*="width:60%"], [style*="width: 60%"], [style*="width:40%"], [style*="width: 40%"] {
width: 100% !important; max-width: 100% !important;
}
.main-column [style*="max-width: 800px"], .main-column [style*="max-width:800px"],
.ai-response, .ai-train-bar {
max-width: 100% !important; width: 100% !important; margin-left: 0 !important; margin-right: 0 !important; box-sizing: border-box !important;
}
.message-list, .pm-thread, .pm-thread-replies { width: 100%; max-width: 100%; box-sizing: border-box; }
.main-column p .user-link, .main-column p a[href^="/author/"],
.main-column li .user-link, .main-column span .user-link,
.main-column .message-text .user-link, .main-column .message-text a[href^="/author/"],
.pm-bubble .message-text .user-link, .pm-bubble .message-text a[href^="/author/"],
.pm-quote a[href^="/author/"] {
display: inline; white-space: normal;
overflow-wrap: anywhere; word-break: keep-all;
-webkit-hyphens: none; hyphens: none;
}
.peer-key, .user-link.peer-key, .block-info-table td .peer-key, .pm-info-table td .peer-key,
.pm-info-table td .user-link, .block-info-table td .user-link,
.search-oasis-id, .pm-sent-key-value, .kpi__value {
display: inline-block; max-width: 100%;
overflow-wrap: anywhere; word-break: break-all;
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
font-variant-numeric: tabular-nums; line-height: 1.45;
}
.oasis-id-copy {
display: block; width: 100%; white-space: nowrap;
overflow: hidden; text-overflow: ellipsis;
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
}
.invites-list .user-link.peer-key, .peers-list .block-info-table td .peer-key {
display: block; max-width: 100%; white-space: nowrap;
overflow: hidden; text-overflow: ellipsis; word-break: normal;
}
.main-column .message-text a[href^="http"], .main-column p a[href^="http"],
.pm-bubble .message-text a[href^="http"], .main-column .message-text a.oasis-path-link,
.main-column .message-text a.job-link, .main-column .message-text a.project-link,
.main-column .message-text a.market-link {
overflow-wrap: anywhere; word-break: keep-all;
-webkit-hyphens: none; hyphens: none;
}
.main-column code:not(pre code), .pm-bubble .message-text code {
display: inline; max-width: 100%;
overflow-wrap: anywhere; word-break: break-word; white-space: pre-wrap;
}
.main-column .tags-header { margin-bottom: 6px; gap: 2px; }
.main-column .tags-header h2, .tags-header h2 {
font-size: 17px; line-height: 1.2; letter-spacing: 0;
}
.main-column .tags-header p { font-size: 13px; line-height: 1.35; margin: 0; }
.main-column { padding: 10px 12px 16px 12px; }
.activity-filter-acc { margin-bottom: 4px; }
.empty-state {
display: flex; flex-direction: column; align-items: center;
justify-content: center; text-align: center;
padding: 40px 16px; gap: 8px; width: 100%; box-sizing: border-box;
}
.empty-state-icon { font-size: 44px; line-height: 1; opacity: 0.55; }
.empty-state-title { font-size: 16px; font-weight: 700; margin: 4px 0 0 0; color: #FFD700; }
.empty-state-text { color: var(--c-muted, #8c8c8c); font-size: 14px; line-height: 1.4; max-width: 40ch; margin: 0; }
.empty-state-cta { margin-top: 10px; min-height: 48px; display: inline-flex; align-items: center; }
.activity-filter-collapsed {
display: flex; align-items: center; gap: 10px;
flex-wrap: wrap; margin-bottom: 8px; width: 100%;
}
.activity-back {
display: inline-flex; align-items: center; gap: 4px;
min-height: 44px; padding: 6px 14px 6px 10px; flex: 0 0 auto;
}
.activity-back-arrow { font-size: 22px; line-height: 1; font-weight: bold; }
.activity-active-filter {
font-weight: 700; color: #FFD700; text-transform: uppercase;
font-size: 13px; letter-spacing: .03em;
}
.oasis-bottombar .bb-item { min-height: 48px; }
.oasis-bottombar .bb-pair .bb-item { min-height: 44px; padding: 4px 10px; }
.oasis-mobile-menus .oasis-menu-btn { min-height: 48px; }
.pm-bubble .pm-actions .pm-btn { min-height: 40px; padding: 6px 12px; }
.score-btn, .vote-btn, .feed-action-btn {
min-height: 44px; min-width: 44px;
display: inline-flex; align-items: center; justify-content: center;
}
.score-btn:active, .vote-btn:active, .feed-action-btn:active { filter: brightness(.85); }
.oasis-bottombar .bb-add .bb-ico {
background: #FFD700; color: #121212; border-radius: 999px;
width: 30px; height: 30px; display: inline-flex;
align-items: center; justify-content: center;
font-weight: bold; font-size: 20px; line-height: 1;
}
.bb-pick-grid {
display: grid; grid-template-columns: repeat(3, 1fr);
gap: 8px; width: 100%; margin-top: 8px;
}
.bb-pick-form { margin: 0; display: block; }
.bb-pick-btn {
display: flex; flex-direction: column; align-items: center;
justify-content: center; gap: 6px; width: 100%;
min-height: 76px; padding: 10px 6px; box-sizing: border-box;
background: #1c1c1c; border: 1px solid #333; border-radius: 12px; color: #FFD700;
}
.bb-pick-btn.active { border-color: #FFD700; background: #2a2412; }
.bb-pick-ico { font-size: 26px; color: #FFD700; line-height: 1; }
.bb-pick-lbl { font-size: 11px; text-align: center; line-height: 1.2; }
/* Ocultar los checkboxes nativos del drawer (nav-left/right-toggle) — si no, salen 2 cuadrados blancos arriba */
.oasis-nav-side-toggle {
position: absolute;
width: 1px;
height: 1px;
opacity: 0;
pointer-events: none;
margin: 0;
}
/* ==========================================================================
Usabilidad 0.9.1 — Chats estilo Signal + widgets compactos + foros con hilos
Todo en NUESTRO tema (carga tras mobile.css → gana por cascada, sin !important)
========================================================================== */
/* --- Chats: burbujas tipo Signal (los hooks .chat-message-self/-author ya existen) --- */
.chat-messages-list { display: flex; flex-direction: column; gap: 4px; width: 100%; }
.chat-message {
max-width: 82%; width: fit-content; min-width: 0; box-sizing: border-box;
padding: 8px 12px; margin: 2px 0;
border: 1px solid #343434; background: #1e1e1e;
border-radius: 16px; border-bottom-left-radius: 4px;
align-self: flex-start;
}
.chat-message.chat-message-self {
align-self: flex-end; margin-left: auto; margin-right: 0;
background: #2a2413; border-color: #5c4c1f;
border-bottom-left-radius: 16px; border-bottom-right-radius: 4px;
}
.chat-message-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-bottom: 3px; font-size: 10px; color: var(--c-muted, #8c8c8c); }
.chat-message.chat-message-self .chat-message-meta { justify-content: flex-end; }
.chat-message-sender, .chat-message-sender a { font-size: 11px; font-weight: 700; color: #FFD700; }
.chat-message-date { opacity: .8; }
.chat-message-text {
display: block; font-size: 15px; line-height: 1.42; color: #FFD700; margin: 0;
word-break: break-word; overflow-wrap: anywhere;
}
.chat-message-text a { color: #FFD700; }
.chat-message-image-wrap { margin-top: 6px; }
.chat-message-image { max-width: 100%; border-radius: 10px; }
/* --- Compose de chat: caja redondeada + enviar como pill (no bloque naranja de ancho completo) --- */
.chat-message-form textarea {
width: 100%; box-sizing: border-box; border-radius: 14px;
padding: 10px 14px; resize: vertical; font-size: 15px;
}
.chat-message-form .filter-btn {
width: 46px !important; height: 46px !important; min-width: 46px !important; min-height: 46px !important;
padding: 0 !important; border-radius: 50% !important;
display: inline-flex !important; align-items: center !important; justify-content: center !important;
font-size: 0 !important; line-height: 0 !important;
}
.chat-message-form .filter-btn::before { content: "\27A4"; font-size: 18px; line-height: 1; color: #121212; }
.chat-message-form input[type="file"] { font-size: 12px; }
/* --- Reply a mensaje en chats (server-side ?replyTo=, sin JS) --- */
.chat-message-meta .chat-reply-btn { margin-left: auto; padding: 0 4px; color: #FFD700; text-decoration: none; font-size: 15px; opacity: .85; }
.chat-message-self .chat-message-meta .chat-reply-btn { margin-left: 8px; }
.chat-quote {
display: block; border-left: 3px solid #FFD700; padding: 3px 8px; margin: 0 0 5px;
background: rgba(255,215,0,.08); border-radius: 6px; font-size: 12px; line-height: 1.3;
}
.chat-quote-author, .chat-quote-author a { color: #FFD700; font-weight: 700; margin-right: 6px; }
.chat-quote-text { color: #FFDD44; }
.chat-replying-to {
display: flex; flex-wrap: wrap; align-items: center; gap: 6px;
border-left: 3px solid #FFD700; background: rgba(255,215,0,.10);
padding: 6px 10px; margin-bottom: 8px; border-radius: 8px; font-size: 12px;
}
.chat-replying-label { color: #FFD700; font-weight: 700; }
.chat-reply-cancel { margin-left: auto; color: #FFD700; text-decoration: none; font-weight: 700; font-size: 14px; }
/* --- Switcher de chats: tira horizontal para saltar entre conversaciones --- */
.chat-switcher {
display: flex; gap: 6px; overflow-x: auto; padding: 6px 0; margin: 4px 0 8px;
-webkit-overflow-scrolling: touch; scrollbar-width: none;
}
.chat-switcher::-webkit-scrollbar { display: none; }
.chat-switch-chip {
flex: 0 0 auto; max-width: 140px; padding: 6px 12px; border-radius: 999px;
background: #1c1c1c; border: 1px solid #333; color: #FFD700; text-decoration: none;
font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.chat-switch-chip.active { background: #FFD700; color: #121212; border-color: #FFD700; font-weight: 700; }
/* --- Subtopics de foro: tira de pestañas (topics con nombre) + input de topic en el compose --- */
.forum-topics {
display: flex; gap: 6px; overflow-x: auto; padding: 6px 0; margin: 4px 0 8px;
scrollbar-width: none;
}
.forum-topics::-webkit-scrollbar { display: none; }
.forum-topic-chip {
flex: 0 0 auto; max-width: 160px; padding: 6px 14px; border-radius: 999px;
background: #1c1c1c; border: 1px solid #333; color: #FFD700; text-decoration: none;
font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.forum-topic-chip.active { background: #FFD700; color: #121212; border-color: #FFD700; font-weight: 700; }
.new-message-form { flex-wrap: wrap; }
.forum-topic-input {
flex: 1 0 100%; box-sizing: border-box; border-radius: 12px;
padding: 8px 12px; font-size: 13px; margin: 0 0 6px;
}
/* --- #3: al desplegar una categoría, sus módulos son BOTONES CUADRADOS redondeados (no hexágonos),
en rejilla 2×2 (2 y 2) y grandes: cada cuadrado llena su columna --- */
.hive-mods {
display: grid; grid-template-columns: repeat(2, 1fr);
justify-items: stretch; align-content: center;
gap: 12px; padding: 8px 4px;
}
.hex-mod {
clip-path: none; -webkit-clip-path: none;
width: 100%; height: auto; aspect-ratio: 1 / 1; min-height: 120px;
border-radius: 18px; padding: 8px; gap: 7px;
}
.hex-mod::before { clip-path: none; -webkit-clip-path: none; inset: 2px; border-radius: 16px; }
.hex-mod .hx-ico { font-size: 36px; }
.hex-mod .hx-lbl { font-size: 12.5px; max-width: 94%; }
/* si el nº de módulos es IMPAR, el último (solo en su fila) se CENTRA en vez de pegarse a la izquierda;
abarca las 2 columnas pero conserva el ancho de una sola (gap 12 → mitad 6) */
.hex-mod:last-child:nth-child(odd) {
grid-column: 1 / -1; justify-self: center; width: calc(50% - 6px);
}
/* --- #2: el hexágono "Personal" muestra tu avatar (diferencia del filtro "Personal" del header) --- */
.hex-cat .hx-avatar {
width: 58%; height: 58%; border-radius: 50%; object-fit: cover;
position: relative; z-index: 1; border: 1px solid rgba(255,215,0,.6);
}
/* --- #1: chat estilo Signal — compose ABAJO + mensajes arriba (el reply deja de "saltar") --- */
.tribe-main.chat-full-width { display: flex; flex-direction: column-reverse; }
#chatbox { scroll-margin-top: 8px; scroll-margin-bottom: 8px; }
/* --- Botón spread → pill compacto (vence button{min-height:48px}/ancho completo) --- */
.card-spread-centered, .card-spread-left, .spread-row { margin: 6px 0; }
.card-spread-centered .spread-btn, .card-spread-left .spread-btn,
.spread-row .spread-btn, .card-chips-row .spread-btn {
display: inline-flex; align-items: center; justify-content: center;
width: auto; min-width: 0; min-height: 30px; height: 30px;
padding: 2px 14px; font-size: 13px; line-height: 1;
border-radius: 999px; border: 1px solid #555; background: #1a1a1a; color: #FFD700;
}
.card-spread-centered .spread-btn.spread-btn-on,
.card-spread-left .spread-btn.spread-btn-on { background: #FFD700; color: #1a1a1a; border-color: #FFD700; }
/* --- Caja de votos (▲ n ▼): compacta y HORIZONTAL.
El problema era una cadena de flex-stretch (comment-vote-col flex → estiraba la caja a 135px).
Rompemos el estiramiento con height:auto + inline-flex en toda la cadena, con !important
para vencer el min-height:44px de .score-btn (762) y el !important de epsylon en mobile.css. --- */
.comment-vote-col { display: block !important; height: auto !important; min-height: 0 !important; width: auto !important; }
.forum-score-box {
display: inline-flex !important; height: auto !important; min-height: 0 !important;
min-width: 0 !important; width: auto !important;
padding: 4px 8px !important; border-radius: 10px !important;
flex-direction: row !important; flex-wrap: nowrap !important; gap: 12px !important; align-items: center !important;
}
.forum-score-form {
display: inline-flex !important; height: auto !important; width: auto !important;
flex-direction: row !important; flex-wrap: nowrap !important; gap: 12px !important; align-items: center !important;
}
.score-btn {
flex: 0 0 auto !important;
width: 30px !important; height: 30px !important; min-width: 30px !important; min-height: 30px !important;
font-size: 0.95em !important; border-radius: 8px !important; padding: 0 !important;
}
.score-total { flex: 0 0 auto !important; font-size: 1.15em !important; min-height: 0 !important; height: auto !important; margin: 0 !important; white-space: nowrap; }
.comment-votes .votes-count { font-size: 11px; }
/* Aplanar el comentario: quitar las cajas/recuadros internos para que sea UN bloque limpio
(cada sección salía como una tarjeta con padding enorme → mucho hueco muerto) */
.forum-comment .comment-header,
.forum-comment .comment-body-row,
.forum-comment .comment-vote-col,
.forum-comment .comment-text-col,
.forum-comment .new-reply {
background: transparent !important; border: none !important; box-shadow: none !important;
padding: 0 !important; margin: 6px 0 0 !important; border-radius: 0 !important;
}
.forum-comment .comment-header { margin-top: 0 !important; display: flex; flex-wrap: wrap; align-items: center; gap: 8px; font-size: 12px; }
/* la barra de votos de abajo ya muestra el score → ocultar el ▲:0 ▼:0 redundante de la cabecera */
.forum-comment .comment-header .comment-votes { display: none !important; }
.forum-comment .comment-text-col p { margin: 4px 0 !important; }
.forum-comment .comment-text-col > div { background: transparent !important; border: none !important; padding: 0 !important; }
.forum-comment { padding: 10px 12px !important; margin-bottom: 8px !important; }
/* barra de votos alineada a la izquierda, no centrada, para que ocupe poco */
.forum-comment .comment-body-row { display: flex !important; flex-direction: column !important; align-items: flex-start !important; }
/* --- Reply/compose del foro estilo Signal: fila [textarea que crece] + [botón REDONDO con icono ↩] --- */
.new-reply .comment-form,
.new-message-form { display: flex !important; flex-direction: row !important; align-items: flex-end !important; gap: 8px !important; margin: 6px 0 0 !important; }
.new-message-form br { display: none !important; }
.comment-textarea, .new-message-form textarea {
flex: 1 1 auto !important; box-sizing: border-box; border-radius: 14px;
padding: 9px 14px; min-height: 42px; resize: none; font-size: 14px; margin: 0 !important;
}
.forum-send-btn {
flex: 0 0 auto !important;
width: 44px !important; height: 44px !important; min-width: 44px !important; min-height: 44px !important;
padding: 0 !important; margin: 0 !important; border-radius: 50% !important;
font-size: 0 !important; line-height: 0 !important;
display: inline-flex !important; align-items: center !important; justify-content: center !important;
}
.forum-send-btn::before { content: "\21A9"; font-size: 20px; line-height: 1; color: #121212; }
.new-reply { margin-top: 6px; }
/* --- Fase 2: hilos anidados. mobile.css fuerza margin-left:0 !important → necesitamos !important para ganar --- */
.forum-comment.level-1 { margin-left: 10px !important; border-left: 2px solid #333; }
.forum-comment.level-2 { margin-left: 20px !important; border-left: 2px solid #3a3a3a; }
.forum-comment.level-3 { margin-left: 28px !important; border-left: 2px solid #404040; }
.forum-comment.level-4 { margin-left: 34px !important; border-left: 2px solid #454545; }
/* comentario destacado: acento sutil a la izquierda en vez del marco naranja enorme */
.forum-comment.highlighted-reply { border: 1px solid #3a3a3a !important; border-left: 3px solid #FFD700 !important; background: #1b1a16 !important; }
/* --- Reply del foro SIN tocar la vista de epsylon: la cajita se agranda al enfocarla;
el botón redondo ↩ está SIEMPRE visible (el usuario pidió icono de reply, no gesto/JS). --- */
.new-reply .comment-textarea { min-height: 42px; }
.new-reply:focus-within .comment-textarea { min-height: 64px; }
/* ==========================================================================
Mejoras UI 0.9.1: fuente única + barra de búsqueda en topbar + hive global + bottombar fija
========================================================================== */
/* --- fuente única en todo el UI móvil (quitar el lío monospace/sans) --- */
.oasis-mobile-topbar, .oasis-mobile-menus, .hive-nav, .oasis-bottombar, .main-column,
.oasis-mobile-topbar input, .main-column input, .main-column textarea, .main-column select, button {
font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
}
/* (topbar sin barra de búsqueda: vuelve el título "OASIS" — CSS .omt-title más arriba) */
/* --- hive ahora global en el header (debajo de los 2 botones) --- */
.header .hive-nav { margin: 34px auto 10px; }
/* --- bottombar FIJA de 6 (Inbox·PM·Write·Search·Graphos·Peers): que quepan --- */
.oasis-bottombar-fixed .bb-item { padding: 2px 0; gap: 2px; }
.oasis-bottombar-fixed .bb-ico { font-size: 17px; }
.oasis-bottombar-fixed .bb-lbl { font-size: 8.5px; }
/* ==========================================================================
FORK_IA_UX — navegación thumb-zone: hive en HOJA INFERIOR + FAB de publicar + barra reordenada.
Respaldo real: Hoober 2013 (49% una mano), Bergstrom-Lehtovirta CHI 2011 (área del pulgar = arco),
Parhi 2006 (diana ≥9mm → ≥48px), NN/g 2016 (nav visible > oculta), Von Restorff (FAB destacado).
Sin JS (checkbox-hack), gateado por OASIS_MOBILE.
========================================================================== */
/* el hive salió del header → el contenido empieza justo bajo la topbar fija (libera espacio arriba) */
body { padding-top: 66px; }
/* --- barra inferior FORK (thumb-zone): 5 huecos con FAB central elevado --- */
.oasis-bottombar-fork { align-items: flex-end; gap: 2px; }
.oasis-bottombar-fork .bb-item,
.oasis-bottombar-fork .bb-explore {
min-height: 52px; /* diana táctil holgada (≥48px, Parhi 2006 / Material 48dp) */
justify-content: center;
cursor: pointer; text-decoration: none;
}
/* FAB central de publicar: círculo dorado destacado y elevado (Von Restorff + Jakob) */
.oasis-bottombar-fork .bb-fab-btn {
flex: 0 0 auto;
display: flex; align-items: center; justify-content: center;
width: 58px; height: 58px; margin: 0 4px;
border-radius: 50%;
background: #FFD700; color: #121212;
box-shadow: 0 3px 10px rgba(0,0,0,.55);
text-decoration: none;
transform: translateY(-16px); /* lo levanta por encima de la barra */
}
.oasis-bottombar-fork .bb-fab-glyph { font-size: 32px; font-weight: 700; line-height: 1; }
.oasis-bottombar-fork .bb-fab-btn:active { filter: brightness(.9); }
/* --- HOJA INFERIOR del hive (bottom-sheet, sin JS) --- */
.fork-sheet-wrap { display: contents; } /* no genera caja: el checkbox y la hoja quedan hermanos */
.fork-sheet-toggle { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; margin: 0; }
.hive-sheet {
position: fixed; inset: 0; z-index: 1200; pointer-events: none;
background-color: transparent; box-shadow: none; border-radius: 0; /* anula el div{#222} global */
}
.hive-sheet-backdrop { position: absolute; inset: 0; background: rgba(0,0,0,.6); opacity: 0; transition: opacity .25s ease; }
.hive-sheet-panel {
position: absolute; left: 0; right: 0; bottom: 0; margin: 0;
max-height: 82vh; overflow-y: auto;
background: #121212; border-top: 1px solid #333; border-radius: 18px 18px 0 0;
padding: 6px 10px calc(20px + env(safe-area-inset-bottom, 0px));
transform: translateY(100%); transition: transform .28s ease;
box-shadow: 0 -6px 24px rgba(0,0,0,.5);
}
/* abierto */
.fork-sheet-toggle:checked ~ .hive-sheet { pointer-events: auto; }
.fork-sheet-toggle:checked ~ .hive-sheet .hive-sheet-backdrop { opacity: 1; }
.fork-sheet-toggle:checked ~ .hive-sheet .hive-sheet-panel { transform: translateY(0); }
/* asa/grip para cerrar */
.hive-sheet-grip { display: block; width: 44px; height: 5px; margin: 4px auto 10px; border-radius: 3px; background: #444; cursor: pointer; }
/* fila de accesos que NO están en el hive (red y estado) */
.hive-sheet-quick {
display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px;
margin: 2px 0 10px; padding: 0 0 8px; border-bottom: 1px solid #262626;
background-color: transparent; box-shadow: none; border-radius: 0; /* anula div{#222} */
}
.hive-sheet-quick .hsq-item {
display: flex; flex-direction: column; align-items: center; gap: 4px;
min-height: 48px; justify-content: center;
text-decoration: none; color: #FFD700;
background: #161616; border: 1px solid #333; border-radius: 12px; padding: 6px 2px;
}
.hive-sheet-quick .hsq-ico { font-size: 20px; line-height: 1; }
.hive-sheet-quick .hsq-lbl { font-size: 10px; }
/* el hive dentro de la hoja */
.hive-sheet .hive-nav { margin: 2px auto 0; max-width: 360px; }
.hive-sheet .hive-mods { background-color: transparent; box-shadow: none; border-radius: 0; } /* por si el div{#222} lo alcanza */