3DCOMUNITY/3dcomunity/sub/code.css
2025-11-10 19:17:31 +00:00

461 lines
13 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.

/* ===========================
code.css — 3DCOMUNITY.NET
Tema oscuro + verde neón / naranja
(rutas ABSOLUTAS para fuentes e imágenes)
=========================== */
/* 0) Reset + Variables */
* { margin: 0; padding: 0; box-sizing: border-box; }
html, body { height: 100%; }
:root{
/* Colores base */
--bg-0: #0a0a0a;
--bg-1: #0f0f0f;
--bg-2: #151515;
--panel: #1b1b1b;
--text: #f2f2f2;
--muted: #a9a9a9;
/* Neón */
--neon-green: #39FF14;
--neon-orange: #FF7A18;
/* Gradientes */
--grad-gn-or: linear-gradient(90deg, var(--neon-green) 0%, var(--neon-orange) 100%);
--grad-or-gn: linear-gradient(90deg, var(--neon-orange) 0%, var(--neon-green) 100%);
/* Sombras / bordes */
--shadow: rgba(0,0,0,.6);
--stroke: #0e0e0e;
/* Tipografías */
--font-ui: 'Oxanium', 'Rajdhani', 'Inter', system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;
--font-title: 'ThreeDIsometric', var(--font-ui);
--font-display: 'Gunplay', var(--font-ui);
--font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
/* Tamaños */
--header-h: clamp(88px, 16vh, 160px);
--radius: 16px;
--pad: clamp(14px, 2vw, 24px);
}
/* 1) Fuentes locales (rutas ABSOLUTAS) */
@font-face{
font-family: 'ThreeDIsometric';
src: url('/fonts/3DIsometric-Regular.ttf') format('truetype'),
url('/fonts/3DIsometric-Regular.otf') format('opentype');
font-weight: 700;
font-style: normal;
font-display: swap;
}
@font-face{
font-family: 'Gunplay';
src: url('/fonts/Gunplay-Regular.otf') format('opentype');
font-weight: 400;
font-style: normal;
font-display: swap;
}
@font-face{
font-family: 'Oxanium';
src: url('/fonts/Oxanium-VariableFont_wght.ttf') format('truetype');
font-weight: 200 800;
font-style: normal;
font-display: swap;
}
/* 2) Base documento */
body{
font-family: var(--font-ui);
color: var(--text);
background:
radial-gradient(1200px 700px at 8% -10%, #141414 0%, #0c0c0c 55%, #070707 100%),
var(--bg-0);
min-height: 100svh;
display: grid;
grid-template-rows: var(--header-h) 1fr;
}
*::-webkit-scrollbar { width: 10px; height: 10px; }
*::-webkit-scrollbar-thumb { background: #2a2a2a; border-radius: 999px; }
*::-webkit-scrollbar-thumb:hover { background: #3a3a3a; }
@media (prefers-reduced-motion: reduce){
* { animation: none !important; transition: none !important; }
}
/* 3) Header + Navegación (coherente con about) */
.site-header{
background: linear-gradient(180deg, #0e0e0e 0%, #0a0a0a 100%);
border-bottom: 1px solid #121212;
box-shadow: 0 6px 24px var(--shadow);
display: grid;
grid-template-columns: auto 1fr auto;
align-items: center;
gap: .8rem;
padding: clamp(10px, 2vw, 18px) clamp(14px, 2.4vw, 22px);
}
.site-logo{
display: inline-flex; align-items: center; justify-content: center;
width: 150px; height: 150px; border-radius: 12px;
background: #0f0f0f; border: 1px solid #222;
box-shadow: 0 8px 20px rgba(0,0,0,.5), 0 0 10px rgba(57,255,20,.15);
overflow: hidden;
}
.site-logo img{ display:block; width:100%; height:100%; object-fit: cover; }
/* Variante opcional para logo grande (aplícale esta clase al contenedor del logo si lo quieres a 150x150) */
.site-logo--150{ width:150px; height:150px; }
/* Utilidad de imagen 150x150 (para cualquier imagen suelta) */
.img-150{ width:150px; height:150px; object-fit:cover; border-radius:12px; display:block; }
.site-title{
justify-self: center;
font-family: var(--font-title);
font-weight: 800;
font-size: clamp(2.2rem, 5.8vw, 4.6rem);
letter-spacing: .06em;
color: var(--neon-orange);
text-shadow:
0 0 6px rgba(255,122,24,.25),
0 12px 28px rgba(0,0,0,.45);
white-space: nowrap;
/* más espacio con el bloque siguiente */
margin-bottom: clamp(8px, 1.2vw, 16px);
}
.nav-menu{
display: flex; flex-wrap: wrap; justify-content: flex-end;
gap: .6rem .7rem;
}
/* Botones del header */
.nav-menu button{
--h: clamp(42px, 5.2vh, 54px);
--px: clamp(14px, 2.2vw, 22px);
display: inline-flex; align-items: center; justify-content: center;
height: var(--h); padding: 0 var(--px);
border-radius: 12px;
border: 1px solid #1a1a1a;
font-family: var(--font-display);
font-weight: 800;
font-size: clamp(1.02rem, 1.5vw, 1.22rem);
letter-spacing: .02em;
background-image: var(--grad-gn-or);
background-size: 220% 100%;
background-position: 0% 50%;
color: #0b0b0b;
box-shadow: 0 6px 18px rgba(0,0,0,.55);
transition: background-position .35s ease, transform .12s ease, box-shadow .25s ease, filter .2s ease, border-color .2s ease, opacity .2s ease;
cursor: pointer;
}
.nav-menu button:hover{
background-position: 100% 50%; transform: translateY(-1px);
box-shadow: 0 10px 26px rgba(0,0,0,.6), 0 0 18px rgba(57,255,20,.28), 0 0 28px rgba(255,122,24,.22);
border-color: #262626; filter: saturate(1.06);
}
.nav-menu button:active{ transform: translateY(0); box-shadow: inset 0 4px 10px rgba(0,0,0,.45); }
.nav-menu button:focus-visible{ outline: 2px solid rgba(57,255,20,.9); outline-offset: 3px; }
.nav-menu button.active{
background: var(--neon-green);
color: #0b0b0b;
border-color: #2b2b2b;
box-shadow: 0 8px 22px rgba(0,0,0,.5), 0 0 10px rgba(57,255,20,.35);
}
/* 4) Botones globales (CTA dentro del contenido) */
.btn{
--h: clamp(44px, 5.4vh, 56px);
--px: clamp(16px, 2.4vw, 26px);
display: inline-flex; align-items: center; justify-content: center;
height: var(--h); padding: 0 var(--px);
border-radius: 14px;
border: 1px solid #1a1a1a;
font-family: var(--font-display);
font-weight: 800; letter-spacing: .02em;
text-decoration: none; user-select: none; cursor: pointer;
background-image: var(--grad-gn-or);
background-size: 220% 100%;
background-position: 0% 50%;
color: #0b0b0b;
box-shadow:
0 8px 22px rgba(0,0,0,.55),
0 0 0 0 rgba(57,255,20,0);
transition: background-position .35s ease, transform .12s ease,
box-shadow .25s ease, filter .2s ease, border-color .2s ease, opacity .2s ease;
position: relative; isolation: isolate;
}
.btn::after{
content:""; position: absolute; inset: -2px; border-radius: inherit;
background: radial-gradient(60% 60% at 50% 50%, rgba(57,255,20,.18), rgba(255,122,24,.1) 60%, transparent 70%);
z-index: -1; opacity: 0; transition: opacity .25s ease;
}
.btn:hover{
background-position: 100% 50%;
transform: translateY(-1px);
box-shadow:
0 14px 28px rgba(0,0,0,.65),
0 0 18px rgba(57,255,20,.28),
0 0 28px rgba(255,122,24,.22);
filter: saturate(1.07);
border-color: #262626;
}
.btn:hover::after{ opacity: 1; }
.btn:active{ transform: translateY(0); box-shadow: inset 0 4px 10px rgba(0,0,0,.45); }
.btn:focus-visible{ outline: 2px solid rgba(57,255,20,.9); outline-offset: 3px; }
/* Variantes */
.btn-green{ background-image: none; background: var(--neon-green); }
.btn-orange{ background-image: none; background: var(--neon-orange); }
.btn-outline{
background: transparent;
color: var(--text);
border-color: #2d2d2d;
box-shadow: 0 8px 22px rgba(0,0,0,.45);
}
.btn-outline:hover{
background: #151515;
border-color: var(--neon-green);
box-shadow: 0 10px 26px rgba(0,0,0,.6), 0 0 14px rgba(57,255,20,.22);
}
/* 5) Layout de la página Code */
.code-page{
padding: 0;
overflow-y: auto;
min-height: 0;
}
.doc-card{
width: 100%;
background:
radial-gradient(1400px 700px at 0% 0%, rgba(57,255,20,.06), transparent 60%),
linear-gradient(180deg, #121212 0%, #0e0e0e 100%);
border-top: 1px solid #171717;
border-bottom: 1px solid #171717;
border-radius: 0;
box-shadow: 0 10px 28px var(--shadow) inset;
padding: clamp(18px, 3.2vw, 42px);
display: grid;
gap: clamp(18px, 2.6vw, 32px); /* un poco más de espacio general */
}
/* HERO / INTRO: más espacio con el título */
.hero-head{
display: grid; gap: clamp(12px, 1.6vw, 18px);
padding: clamp(10px, 1.4vw, 14px) 0 clamp(14px, 2vw, 20px);
border-bottom: 1px solid #202020;
margin-bottom: clamp(12px, 2vw, 22px);
}
.hero-title{
font-family: var(--font-title);
font-size: clamp(2.2rem, 5.8vw, 4rem);
line-height: 1.05;
letter-spacing: .02em;
color: var(--neon-orange);
text-shadow: 0 0 8px rgba(255,122,24,.18);
margin-bottom: clamp(10px, 1.6vw, 18px); /* más separación bajo el título */
}
.hero-title span{ color: var(--neon-green); text-shadow: 0 0 10px rgba(57,255,20,.22); }
.hero-subtitle{
font-size: clamp(1.02rem, 1.7vw, 1.2rem);
color: var(--text);
max-width: 1100px;
}
.btn-row{
display: flex; flex-wrap: wrap; gap: .75rem .85rem;
margin-top: .2rem;
}
.pills{
display: flex; flex-wrap: wrap; gap: .5rem .6rem; list-style: none;
}
.pill{
padding: .5rem .7rem;
border: 1px solid #242424;
border-radius: 999px;
background: #141414;
font-weight: 700;
font-size: .95rem;
color: #cfcfcf;
}
/* 6) Índice rápido (fila de botones) */
.index-row{
display: flex; flex-wrap: wrap; gap: .6rem .7rem;
padding: .25rem 0 .2rem;
border-top: 1px solid #202020;
border-bottom: 1px solid #202020;
}
/* 7) Bloques + tarjetas */
.block{ display: grid; gap: .9rem; }
.block-title{
font-family: var(--font-display);
font-size: clamp(1.28rem, 2.4vw, 1.7rem);
letter-spacing: .01em;
margin-bottom: .25rem; /* aire extra antes del contenido del bloque */
}
.grid-2{
display: grid; gap: clamp(14px, 2.2vw, 20px);
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.card{
background: var(--panel);
border: 1px solid var(--stroke);
border-radius: var(--radius);
box-shadow: 0 10px 26px var(--shadow);
padding: var(--pad);
display: grid; gap: .7rem;
}
.card h4{
font-weight: 800;
font-size: clamp(1.05rem, 1.9vw, 1.25rem);
letter-spacing: .01em;
}
.doc-card p, .doc-card ul, .doc-card ol{
line-height: 1.7;
color: var(--text);
}
/* 8) ASCII y bloques de código */
.ascii{
font-family: var(--font-mono);
font-size: clamp(.86rem, 1.2vw, .98rem);
line-height: 1.35;
background: #0f0f0f;
color: #d7d7d7;
border: 1px solid #242424;
border-left-width: 6px;
border-radius: 10px;
padding: 1rem 1.1rem;
box-shadow: inset 0 0 0 1px rgba(255,255,255,.02), 0 12px 28px rgba(0,0,0,.55);
overflow: auto;
}
.ascii.gn{ border-left-color: var(--neon-green); }
.ascii.or{ border-left-color: var(--neon-orange); }
.code{
font-family: var(--font-mono);
background: #101010;
color: #eaeaea;
border: 1px solid #262626;
border-radius: 12px;
padding: .9rem 1rem;
overflow: auto;
box-shadow: inset 0 0 0 1px rgba(255,255,255,.02), 0 10px 24px rgba(0,0,0,.5);
}
/* 9) Demo visor 3D */
.demo-3d{
background: #0b0b0b;
border: 1px solid #1f1f1f;
border-radius: 14px;
box-shadow:
0 10px 26px rgba(0,0,0,.6),
0 0 18px rgba(57,255,20,.10),
inset 0 0 0 1px rgba(255,255,255,.02);
padding: 10px;
}
model-viewer{
display: block;
width: 100%;
height: clamp(320px, 48vh, 540px);
background: #000;
border-radius: 10px;
outline: 1px solid #111;
}
/* 10) Listas específicas */
.check-list{
display: grid; gap: .5rem; list-style: none;
}
.check-list li{
position: relative; padding-left: 1.65rem;
}
.check-list li::before{
content: "✔";
position: absolute; left: 0; top: 0;
color: var(--neon-green); font-weight: 900;
}
.dash-list{
display: grid; gap: .45rem; list-style: none;
}
.dash-list li{
position: relative; padding-left: 1.2rem;
}
.dash-list li::before{
content: "—";
position: absolute; left: 0; top: 0; color: #7c7c7c;
}
/* 11) FAQ — Ajustes solicitados
- Más aire con el título global ya dado (hero-title/hero-head)
- Letra (cuerpo) de las preguntas un poco más pequeña
- Efecto “letra inicial” de dos líneas en el <summary>
*/
.faq{
background: #141414;
border: 1px solid #2a2a2a;
border-radius: 12px;
padding: .8rem 1rem;
}
.faq + .faq{ margin-top: .7rem; }
.faq summary{
cursor: pointer; list-style: none;
font-size: clamp(.96rem, 1.05vw, 1.06rem); /* ligeramente más pequeño */
line-height: 1.55; /* más legible */
letter-spacing: .01em;
position: relative;
}
/* “Letra inicial” en dos líneas aprox (robusto cross-browser con ::first-letter) */
.faq summary::first-letter{
float: left;
font-family: var(--font-display);
font-weight: 800;
font-size: 2.2em; /* ~2 líneas según el tamaño final */
line-height: .95;
margin-right: .38rem;
margin-top: .05rem;
color: var(--neon-green);
text-shadow: 0 0 8px rgba(57,255,20,.18);
}
/* Marcador +/ */
.faq summary::-webkit-details-marker{ display: none; }
.faq summary::after{
content: "+";
float: right; font-weight: 900;
color: var(--neon-orange);
}
.faq[open] summary::after{ content: ""; }
/* 12) Responsive */
@media (max-width: 1200px){
.grid-2{ grid-template-columns: 1fr 1fr; }
}
@media (max-width: 980px){
.site-header{ grid-template-columns: 1fr; justify-items: center; row-gap: .6rem; }
.site-title{ order: 2; font-size: clamp(2.1rem, 7vw, 3.2rem); }
.nav-menu{ order: 3; justify-content: center; }
.site-logo{ order: 1; }
}
@media (max-width: 900px){
.grid-2{ grid-template-columns: 1fr; }
}
@media (max-width: 680px){
.btn{ --h: 44px; }
.btn-row{ gap: .6rem; }
.pill{ font-size: .9rem; }
/* Mantener el drop-cap legible en pantallas pequeñas */
.faq summary::first-letter{ font-size: 2em; margin-right: .32rem; }
}
@media (max-width: 480px){
.hero-title{ font-size: clamp(1.8rem, 10vw, 2.3rem); }
.hero-subtitle{ font-size: 1rem; }
}