Rama de desarrollo experimental sobre el Oasis de epsylon, sin afiliacion con el proyecto original. Base: 0.9.5. Trae el modulo Karvan —salas efimeras en memoria con autodestruccion por TTL, chat que funciona sin JavaScript y llamadas de audio y video sobre WebRTC— con el enlace en el menu lateral por el mismo patron que el resto de modulos: renderKarvanLink calcado de renderPollsLink, entrada en modules_view y en la lista de /modules. Los estilos del modulo van en su propia hoja, styles/karvan.css, siguiendo el patron de highlight.css: asi se ve igual con cualquier tema, sin depender del tema movil. Sin servidores ICE de terceros: no hay STUN de fabrica, porque un STUN aprende la IP publica y el momento de cada llamada. Solo candidatos host salvo que se configure un TURN propio en oasis-config.json, con credenciales efimeras por el mecanismo REST de coturn. El codigo propio vive separado —views/fork/, backend/fork_routes.js, models/karvan_model.js y translations/fork/— de modo que sobre los ficheros de upstream solo hay enganches de una linea y cada version nueva se integra sin arrastrar nada. Respecto al arbol de Android: fuera el wrapper y main.js, que es su arranque; el tema vuelve a Dark-SNH y se restauran los modulos que en movil se recortan por peso. Verificado arrancando sin OASIS_MOBILE: nueve rutas OK, menu lateral de upstream con 27 grupos y el enlace de Karvan, cero rastro de la interfaz movil (ni hexagonos, ni topbar, ni barra inferior), y una sala creada y servida.
382 lines
11 KiB
CSS
382 lines
11 KiB
CSS
body {
|
|
background-color: #000000 !important;
|
|
color: #00FF00 !important;
|
|
font-family: 'Courier New', monospace;
|
|
}
|
|
|
|
header, footer {
|
|
background-color: #000000;
|
|
color: #00FF00;
|
|
padding: 20px;
|
|
text-align: center;
|
|
font-size: 18px;
|
|
}
|
|
|
|
footer {
|
|
border-top: 2px solid #00FF00;
|
|
}
|
|
|
|
.sidebar-left, .sidebar-right {
|
|
background-color: #000000;
|
|
color: #00FF00;
|
|
border-right: 2px solid #00FF00;
|
|
padding: 15px;
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
.main-column {
|
|
background-color: #000000;
|
|
color: #00FF00;
|
|
padding: 20px;
|
|
border-left: 2px solid #00FF00;
|
|
margin-bottom: 20px;
|
|
}
|
|
|
|
button, input[type="submit"], input[type="button"] {
|
|
background-color: #000000;
|
|
color: #00FF00;
|
|
border: 2px solid #00FF00;
|
|
border-radius: 8px;
|
|
padding: 10px 20px;
|
|
cursor: pointer;
|
|
font-family: 'Courier New', monospace;
|
|
text-transform: none;
|
|
font-size: 16px;
|
|
}
|
|
|
|
button:hover, input[type="submit"]:hover, input[type="button"]:hover {
|
|
background-color: #00FF00;
|
|
color: #000000;
|
|
border-color: #00FF00;
|
|
box-shadow: 0 0 10px rgba(0, 255, 0, 0.8);
|
|
}
|
|
|
|
input, textarea, select {
|
|
background-color: #1A1A1A;
|
|
color: #00FF00;
|
|
border: 1px solid #00FF00;
|
|
border-radius: 5px;
|
|
padding: 10px;
|
|
font-family: 'Courier New', monospace;
|
|
font-size: 16px;
|
|
}
|
|
|
|
a {
|
|
color: #00FF00;
|
|
text-decoration: none;
|
|
font-weight: normal;
|
|
font-size: 16px;
|
|
}
|
|
|
|
table {
|
|
background-color: #000000;
|
|
color: #00FF00;
|
|
width: 100%;
|
|
border: 1px solid #00FF00;
|
|
font-size: 16px;
|
|
}
|
|
|
|
table th {
|
|
background-color: #00FF00;
|
|
color: #000000;
|
|
}
|
|
|
|
table tr:nth-child(even) {
|
|
background-color: #1A1A1A;
|
|
}
|
|
|
|
nav ul {
|
|
background-color: #000000;
|
|
padding: 0;
|
|
margin: 0;
|
|
}
|
|
|
|
nav ul li {
|
|
display: inline-block;
|
|
margin-right: 10px;
|
|
}
|
|
|
|
nav ul li a {
|
|
color: #00FF00;
|
|
padding: 10px;
|
|
display: inline-block;
|
|
font-family: 'Courier New', monospace;
|
|
text-transform: none;
|
|
font-size: 16px;
|
|
}
|
|
|
|
.profile {
|
|
background-color: #1A1A1A;
|
|
color: #00FF00;
|
|
padding: 20px;
|
|
border-radius: 8px;
|
|
border: 1px solid #00FF00;
|
|
box-shadow: 0 2px 5px rgba(0,255,0,0.5);
|
|
}
|
|
|
|
.profile .name {
|
|
color: #00FF00;
|
|
font-size: 18px;
|
|
font-weight: bold;
|
|
}
|
|
|
|
.avatar {
|
|
border: 4px solid #00FF00;
|
|
border-radius: 50%;
|
|
width: 80px;
|
|
height: 80px;
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
article, section {
|
|
background-color: #1A1A1A;
|
|
color: #00FF00;
|
|
padding: 20px;
|
|
border-radius: 10px;
|
|
border: 1px solid #00FF00;
|
|
box-shadow: 0 4px 10px rgba(0, 255, 0, 0.5);
|
|
}
|
|
|
|
.post-preview {
|
|
background-color: #00FF00;
|
|
padding: 15px;
|
|
border-radius: 8px;
|
|
color: #000000;
|
|
}
|
|
|
|
.post-preview img {
|
|
border-radius: 8px;
|
|
max-width: 100%;
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb {
|
|
background-color: #00FF00;
|
|
}
|
|
|
|
::-webkit-scrollbar-track {
|
|
background-color: #000000;
|
|
}
|
|
|
|
.action-container {
|
|
background-color: #1A1A1A;
|
|
border-color: #00FF00;
|
|
color: #00FF00;
|
|
}
|
|
|
|
footer a {
|
|
background-color: #00FF00;
|
|
color: #000000;
|
|
padding: 8px 20px;
|
|
border-radius: 5px;
|
|
text-decoration: none;
|
|
}
|
|
|
|
.top-bar-left,
|
|
.top-bar-mid,
|
|
.top-bar-right {
|
|
background-color: #000000 !important;
|
|
border: 2px solid #00FF00 !important;
|
|
padding: 12px 16px;
|
|
box-shadow: 0 0 12px #00FF00;
|
|
border-radius: 8px;
|
|
display: flex;
|
|
gap: 12px;
|
|
}
|
|
|
|
.sidebar-left,
|
|
.sidebar-right {
|
|
background-color: #000000 !important;
|
|
border: 2px solid #00FF00 !important;
|
|
box-shadow: 0 0 15px #00FF00;
|
|
padding: 16px;
|
|
}
|
|
|
|
.sidebar-left nav ul,
|
|
.sidebar-right nav ul {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 10px;
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
|
|
.sidebar-left nav ul li,
|
|
.sidebar-right nav ul li {
|
|
width: 100%;
|
|
}
|
|
|
|
.sidebar-left nav ul li a,
|
|
.sidebar-right nav ul li a,
|
|
.header nav ul li a {
|
|
background-color: #000000 !important;
|
|
color: #00FF00 !important;
|
|
border: 1px solid #00FF00 !important;
|
|
font-weight: bold;
|
|
border-radius: 6px;
|
|
padding: 10px 14px;
|
|
display: flex;
|
|
justify-content: flex-start;
|
|
box-shadow: 0 0 6px #00FF00;
|
|
transition: background-color 0.3s ease, color 0.3s ease;
|
|
}
|
|
|
|
.sidebar-left nav ul li a:hover,
|
|
.sidebar-right nav ul li a:hover,
|
|
.header nav ul li a:hover {
|
|
background-color: #00FF00 !important;
|
|
color: #000000 !important;
|
|
}
|
|
|
|
.card {
|
|
color: #00FF00;
|
|
font-family: 'Courier New', monospace;
|
|
background-color: #1A1A1A;
|
|
}
|
|
|
|
.card-label {
|
|
color: #00FF00;
|
|
}
|
|
|
|
.card-footer {
|
|
color: #00FF00;
|
|
}
|
|
|
|
.card-tags a.tag-link {
|
|
color: #00FF00;
|
|
background: #000000;
|
|
}
|
|
|
|
.card-tags a.tag-link:hover {
|
|
background: #00FF00;
|
|
color: #000000;
|
|
cursor: pointer;
|
|
}
|
|
|
|
a.user-link {
|
|
background-color: #00FF00;
|
|
color: #000000;
|
|
border-color: #00FF00;
|
|
transition: background-color 0.3s, color 0.3s, border-color 0.3s;
|
|
}
|
|
|
|
a.user-link:hover {
|
|
background-color: #000000;
|
|
border-color: #00FF00;
|
|
color: #00FF00;
|
|
cursor: pointer;
|
|
}
|
|
|
|
a.user-link:focus {
|
|
background-color: #00FF00;
|
|
border-color: #00FF00;
|
|
color: #000000;
|
|
}
|
|
|
|
.date-link {
|
|
background-color: #00FF00;
|
|
color: #000000;
|
|
}
|
|
|
|
.date-link:hover {
|
|
background-color: #000000;
|
|
color: #00FF00;
|
|
}
|
|
|
|
.activitySpreadInhabitant2 {
|
|
background-color: #1A1A1A;
|
|
color: #00FF00;
|
|
}
|
|
|
|
.activityVotePost {
|
|
background-color: #00FF00;
|
|
color: #000000;
|
|
}
|
|
|
|
.update-banner {
|
|
background-color: #001a00;
|
|
border-bottom-color: #003300;
|
|
color: #00FF00;
|
|
}
|
|
|
|
.update-banner-link {
|
|
color: #00FF00;
|
|
}
|
|
|
|
.snh-invite-code {
|
|
color: #00FF00 !important;
|
|
}
|
|
|
|
.stats-kpi-label { color: #00FF00 !important; }
|
|
.stats-kpi-value { color: #00FF00 !important; }
|
|
.carbon-bar-note, .carbon-bar-formula { color: #00FF00 !important; }
|
|
.graphos-node-label { fill: #00FF00 !important; }
|
|
.graphos-node-label-me { fill: #ffa500 !important; font-weight: bold !important; }
|
|
.graphos-legend { color: #00FF00 !important; }
|
|
.graphos-edge { stroke: #003300 !important; }
|
|
/* Blockexplorer */
|
|
.blockchain-view { background-color: #000000 !important; color: #00FF00 !important; }
|
|
.block { background: #1A1A1A !important; border: 1px solid #00FF00 !important; }
|
|
.block:hover { box-shadow: 0 0 15px rgba(0,255,0,0.3) !important; }
|
|
.blockchain-card-label, .block-info-table .card-label, .pm-info-table .card-label, .block-content-label { color: #00FF00 !important; }
|
|
.blockchain-card-value, .block-info-table .card-value, .pm-info-table .card-value, .block-timestamp, .json-content { color: #00FF00 !important; }
|
|
.block-content-preview, .block-content { background: #1A1A1A !important; color: #00FF00 !important; }
|
|
.block-author { color: #00FF00 !important; background: rgba(0,255,0,0.08) !important; }
|
|
.block-author:hover { color: #00FF00 !important; }
|
|
.block-url { color: #00FF00 !important; }
|
|
.block-row--details .block-url { background: #1A1A1A !important; }
|
|
.block-row--details .block-url:hover { background: #00FF00 !important; color: #000000 !important; }
|
|
.btn-singleview { background: #000000 !important; color: #00FF00 !important; border: 1px solid #00FF00 !important; }
|
|
.btn-singleview:hover { background: #00FF00 !important; color: #000000 !important; }
|
|
.btn-spread-on, .content-actions .btn-pin-on { background: #00FF00 !important; color: #000000 !important; }
|
|
.btn-spread-on:hover, .content-actions .btn-pin-on:hover { background: #66FF66 !important; color: #000000 !important; }
|
|
.btn-back { background: #000000 !important; color: #00FF00 !important; border: 1px solid #00FF00 !important; }
|
|
.btn-back:hover { background: #00FF00 !important; color: #000000 !important; }
|
|
.block-info-table td, .pm-info-table td { border-color: #00FF00 !important; }
|
|
.block-diagram { border-color: #00FF00 !important; background: #000000 !important; }
|
|
.block-diagram-ruler { color: #00FF00 !important; background: #000000 !important; border-bottom-color: #00FF00 !important; }
|
|
.block-diagram-ruler span { color: #00FF00 !important; }
|
|
.block-diagram-cell { border-color: #00FF00 !important; background: #1A1A1A !important; }
|
|
.bd-label { color: #00FF00 !important; }
|
|
.bd-value { color: #00FF00 !important; }
|
|
.deleted-label { color: #ff3333 !important; }
|
|
|
|
/* Tribes */
|
|
.tribe-card { background: #1A1A1A !important; border-color: #00FF00 !important; }
|
|
.tribe-card:hover { box-shadow: 0 0 15px rgba(0,255,0,0.3) !important; }
|
|
.tribe-card-title { color: #00FF00 !important; }
|
|
.tribe-card-description { color: #00FF00 !important; }
|
|
.tribe-info-table td { border-color: #00FF00 !important; }
|
|
.tribe-info-label { color: #00FF00 !important; background: #1A1A1A !important; }
|
|
.tribe-info-value { color: #00FF00 !important; background: #1A1A1A !important; }
|
|
.tribe-info-empty { color: #006600 !important; }
|
|
.tribe-card-members { border-color: #00FF00 !important; background: #1A1A1A !important; }
|
|
.tribe-members-count { color: #00FF00 !important; }
|
|
.tribe-card-actions { border-color: #00FF00 !important; background: #1A1A1A !important; }
|
|
.tribe-action-btn { border-color: #00FF00 !important; color: #00FF00 !important; }
|
|
.tribe-action-btn:hover { background: #00FF00 !important; color: #000 !important; }
|
|
.tribe-subtribe-link { background: #000000 !important; border-color: #00FF00 !important; color: #00FF00 !important; }
|
|
.tribe-thumb-link { border-color: #00FF00 !important; }
|
|
.tribe-thumb-link:hover { box-shadow: 0 0 10px rgba(0,255,0,0.3) !important; }
|
|
.tribe-subtribe-link:hover { background: #00FF00 !important; color: #000 !important; }
|
|
.tribe-parent-image { border-color: #00FF00 !important; }
|
|
.tribe-parent-box { background: #1A1A1A !important; }
|
|
|
|
.oasis-nav-header { color: #00FF00 !important; border-color: #00FF00 !important; background: #000000 !important; }
|
|
.oasis-nav-header:hover { color: #000000 !important; background: #00FF00 !important; }
|
|
.oasis-nav-header .emoji, .oasis-nav-header .nav-text, .oasis-nav-arrow { color: inherit !important; }
|
|
.oasis-nav-list li a { color: #00FF00 !important; }
|
|
.oasis-nav-list li a:hover { color: #00FF00 !important; opacity: 1 !important; }
|
|
.oasis-nav-list .emoji, .oasis-nav-list .nav-text { color: inherit !important; }
|
|
nav, .sidebar-left nav, .sidebar-right nav, .sidebar-left ul, .sidebar-right ul { color: #00FF00 !important; }
|
|
.sidebar-left a, .sidebar-right a { color: #00FF00 !important; }
|
|
|
|
.ai-ask-form .ai-ask-input, .ai-ask-form .ai-ask-btn { color: #00FF00 !important; border-color: #00FF00 !important; background: #000000 !important; }
|
|
.ai-ask-form .ai-ask-input::placeholder { color: rgba(0,255,0,0.55) !important; }
|
|
.ai-ask-form .ai-ask-input:focus { border-color: #00FF00 !important; background: #1A1A1A !important; box-shadow: 0 0 6px rgba(0,255,0,0.4) !important; }
|
|
.ai-ask-form .ai-ask-btn:hover { background: #00FF00 !important; color: #000000 !important; border-color: #00FF00 !important; }
|
|
.ai-nav-results, .ai-nav-result-card { color: #00FF00 !important; border-color: #00FF00 !important; background: #000000 !important; }
|
|
.ai-nav-result-card .card-label { color: #00FF00 !important; }
|
|
.ai-nav-result-card a { color: #00FF00 !important; }
|
|
.ai-nav-result-card a:hover { background: #00FF00 !important; color: #000000 !important; }
|
|
.ai-nav-query { color: #00FF00 !important; }
|
|
.trending-card.own-content { box-shadow: inset 3px 0 0 #00FF00; }
|