hacklab_web/subpages.css
2025-11-04 15:07:37 +01:00

550 lines
12 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.

/* subpages.css — TITULO CENTRADO + LOOK NEÓN COMO EL INDEX */
/* Fuentes (opcional) */
@import url('https://fonts.googleapis.com/css2?family=Press+Start+2P&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Special+Elite&display=swap');
:root{
--bg: #000000;
--panel: #0a0a0a;
--text: #e6e6e6;
--muted: #a8a8a8;
--green: #00ff00;
--green-dark: #008000;
--pink: #ff69b4;
--red: #ff0000;
--cyan: #00ffff;
/* MÁS ANCHO SIN ROMPER TODO */
--maxw: 1400px;
--pad: clamp(14px, 2.4vw, 28px);
}
/* Reset */
*{ box-sizing: border-box; margin: 0; padding: 0; }
html, body{ height: 100%; }
/* Fondo y tipografía general */
body{
background:
radial-gradient(900px 900px at 50% -10%, rgba(0,255,255,0.06), transparent 40%),
#000;
color: var(--text);
font-family: 'Special Elite','Courier New', monospace;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/* Contenedor principal */
.wrapper{
min-height: 100vh;
display: flex;
flex-direction: column;
}
/* ====== CABECERA ====== */
.sub-header{
position: relative;
width: 100%;
background: rgba(0,0,0,0.8);
backdrop-filter: blur(2px);
border-bottom: 1px solid rgba(0,255,255,0.14);
overflow: hidden;
}
.sub-header::before{
content:"";
position:absolute; inset:0;
background:
linear-gradient(90deg, rgba(0,255,255,0.05) 1px, transparent 1px) 0 0 / 22px 22px,
linear-gradient(0deg, rgba(0,255,255,0.05) 1px, transparent 1px) 0 0 / 22px 22px;
pointer-events: none;
}
.sub-header .inner{
max-width: var(--maxw);
margin: 0 auto;
padding: var(--pad) clamp(12px, 3vw, 22px);
text-align: center;
}
.sub-header h1{
font-family: 'Press Start 2P', monospace;
font-size: clamp(24px, 5vw, 56px);
text-transform: uppercase;
color: var(--pink);
letter-spacing: 0.02em;
line-height: 1.1;
margin-bottom: 14px;
text-shadow:
3px 3px 0 var(--red),
-1px -1px 0 var(--red),
1px -1px 0 var(--red),
-1px 1px 0 var(--red),
1px 1px 0 var(--red),
0 0 14px rgba(255,105,180,0.35);
}
.sub-header h1::before,
.sub-header h1::after{
content:"";
display:inline-block;
vertical-align: middle;
width: clamp(28px, 10vw, 160px);
height: 2px;
margin: 0 clamp(8px, 2vw, 18px);
background:
linear-gradient(90deg, transparent, var(--pink), transparent);
box-shadow: 0 0 8px rgba(0,255,255,0.35);
}
.sub-header .tagline{
font-size: clamp(12px, 1.8vw, 16px);
color: var(--muted);
margin-top: 2px;
}
.sub-header .crumbs{
margin-top: 10px;
font-size: 0.95rem;
color: var(--muted);
text-align: center;
}
.sub-header .crumbs a{
color: var(--green);
text-decoration: none;
border-bottom: 1px dashed rgba(0,255,0,0.5);
}
.sub-header .crumbs a:hover{
color: #000;
background: var(--green);
}
/* ====== CONTENIDO ====== */
.content{
flex: 1 0 auto;
max-width: var(--maxw);
margin: 0 auto;
padding: calc(var(--pad) + 6px) clamp(18px, 3.4vw, 28px) calc(var(--pad) + 18px);
}
/* Panel principal */
.panel{
background: var(--panel);
border: 1px solid rgba(0,255,255,0.18);
box-shadow: 0 0 20px rgba(0,255,255,0.05);
border-radius: 12px;
padding: clamp(14px, 2.6vw, 32px);
margin-bottom: clamp(16px, 2.6vw, 28px);
}
/* Subtítulos dentro del contenido */
h2{
color: var(--green);
margin: 6px 0 10px;
font-size: clamp(18px, 2.6vw, 30px);
text-transform: uppercase;
letter-spacing: 0.03em;
text-shadow: 0 0 8px rgba(0,255,255,0.25);
}
h3{
color: var(--green);
margin: 10px 0 8px;
font-size: clamp(16px, 2.2vw, 22px);
}
/* Tipografía */
p{ line-height: 1.75; margin: 8px 0 10px; }
ul{ margin: 8px 0 12px 0; padding-left: 0; list-style: none; }
li{ margin: 8px 0; }
.datetime{ color: var(--pink); }
.title{ color: var(--green); }
/* Enlaces */
a{
color: var(--green);
text-decoration: none;
position: relative;
}
a:hover{
color: #000;
background: var(--green);
}
a:focus-visible{
outline: 2px solid rgba(0,255,255,0.45);
outline-offset: 3px;
}
/* Botón */
.button{
display: inline-block;
background: var(--green);
color: #000;
border: 2px solid var(--green);
box-shadow: 0 4px var(--green-dark);
border-radius: 8px;
padding: 10px 16px;
font-weight: bold;
transition: transform .16s ease, box-shadow .16s ease, background .16s ease;
white-space: nowrap;
}
.button:hover{
background: var(--pink);
color: var(--green);
box-shadow: 0 6px var(--green), 0 0 10px var(--pink);
transform: translateY(-2px);
}
/* Meta-links en línea */
.meta-links{
display: flex;
flex-wrap: wrap;
gap: 10px;
margin: 6px 0 14px 0;
}
/* Imágenes (carteles) legado */
.poster{
width: 100%;
max-width: 720px;
height: auto;
max-height: 520px;
border: 1px solid rgba(0,255,255,0.18);
box-shadow: 0 0 16px rgba(0,255,255,0.06);
border-radius: 10px;
object-fit: contain;
}
/* NUEVO: Rejilla de 3 imágenes */
.media-grid{
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: clamp(10px, 2vw, 18px);
margin: 12px 0 14px;
}
.thumb img{
width: 100%;
height: 100%;
object-fit: cover; /* ya lo tienes */
display: block;
filter: saturate(1.05) contrast(1.06);
transition: transform .25s ease, filter .25s ease, object-fit 0s; /* object-fit no anima, pero el cambio es instantáneo */
}
/* ================================================================en hover: ver la imagen ENTERA sin recorte */
.thumb:hover{
background: #000; /* relleno neutro para las bandas */
}
.thumb:hover img{
object-fit: contain; /* muestra la imagen completa */
transform: none; /* sin zoom para no recortar otra vez */
filter: saturate(1) contrast(1);
cursor: zoom-out; /* sugerencia visual */
}
/* Footer */
.sub-footer{
margin-top: auto;
width: 100%;
border-top: 1px solid rgba(0,255,255,0.14);
color: var(--muted);
background: #000;
}
.sub-footer .inner{
max-width: var(--maxw);
margin: 0 auto;
padding: 16px;
font-size: 0.95rem;
text-align: center;
}
/* ====== CALENDARIO ====== */
.cal {
display: grid;
gap: 8px;
background: #000;
border: 1px solid rgba(0,255,255,0.18);
border-radius: 12px;
padding: 10px;
box-shadow: 0 0 20px rgba(0,255,255,0.05);
}
.cal-controls{
display: flex;
align-items: center;
justify-content: center;
gap: 10px;
margin: 6px 0 12px;
}
.cal-title{
min-width: 220px;
text-align: center;
font-weight: bold;
color: var(--green);
text-shadow: 0 0 8px rgba(0,255,255,0.25);
}
.cal-row{
display: grid;
grid-template-columns: repeat(7, minmax(0,1fr));
gap: 8px;
}
.cal-cell{
position: relative;
background: #050505;
border: 1px solid rgba(0,255,0,0.35); /* líneas verdes */
border-radius: 8px;
min-height: 90px;
overflow: hidden;
}
.cal-head{
opacity: 0.9;
}
.cal-head-cell{
background: #0a0a0a;
color: var(--cyan);
text-align: center;
font-weight: bold;
padding: 8px 0;
border: 1px solid rgba(0,255,255,0.18);
}
.cal-daynum{
position: absolute;
top: 6px; left: 8px;
font-size: 0.95rem;
color: var(--muted);
z-index: 2;
}
.cal-empty{
background: #000;
border-style: dashed;
opacity: 0.5;
}
/* celdas con evento: fondo con imagen + overlay oscuro */
.cal-event{
background: #000;
}
.cal-event::before{
content: "";
position: absolute; inset: 0;
background-image: var(--bgimg);
background-size: cover;
background-position: center;
filter: contrast(1.05) saturate(1.05);
opacity: 0.9;
transition: transform .25s ease, opacity .2s ease;
}
.cal-event::after{
content: "";
position: absolute; inset: 0;
background: linear-gradient(180deg, rgba(0,0,0,0.22), rgba(0,0,0,0.6));
pointer-events: none;
}
.cal-event .cal-label{
position: absolute;
left: 8px; bottom: 8px;
z-index: 2;
display: inline-block;
background: var(--green);
color: #000;
border: 1px solid #0f0;
padding: 4px 8px;
border-radius: 6px;
font-weight: 700;
box-shadow: 0 0 8px rgba(0,255,0,0.35);
}
.cal-event:hover::before{
transform: scale(1.04);
opacity: 1;
}
/* badge leyenda */
.cal-legend{
margin-top: 10px;
color: var(--muted);
}
.badge{
display: inline-block;
border: 1px solid rgba(0,255,0,0.5);
color: var(--green);
padding: 2px 6px;
border-radius: 6px;
margin-right: 6px;
}
/* =========================
FULL-WIDTH para eventos.html
========================= */
.page-eventos-wide .sub-header .inner,
.page-eventos-wide .content,
.page-eventos-wide .sub-footer .inner{
max-width: none !important; /* quita el límite de --maxw */
width: 100% !important;
}
.page-eventos-wide .content{
margin: 0; /* sin centrado fijo */
padding-left: clamp(10px, 2vw, 28px); /* bordes respirables */
padding-right: clamp(10px, 2vw, 28px);
}
/* Que los paneles no se vean “encajonados” */
.page-eventos-wide .panel{
margin-left: 0;
margin-right: 0;
}
/* El calendario también a todo lo ancho */
.page-eventos-wide .cal{
max-width: none;
}
/* ====== Posters destacados debajo del calendario ====== */
.poster-grid{
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr)); /* dos mitades en escritorio */
gap: clamp(10px, 2vw, 18px);
margin-top: 12px;
}
.poster-card{
position: relative;
background: #050505;
border: 1px solid rgba(0,255,255,0.18);
border-radius: 10px;
overflow: hidden;
box-shadow: 0 0 16px rgba(0,255,255,0.06);
}
.poster-card img{
width: 100%;
height: auto;
display: block;
object-fit: cover; /* recorte agradable si la proporción no coincide */
transition: transform .2s ease;
}
.poster-card:hover img{
transform: scale(1.02);
}
/* El tercero (ART LAB) ocupa la fila completa pero al 50% de ancho y centrado */
.poster-span{
grid-column: 1 / -1; /* fila completa */
width: 50%; /* la mitad del ancho total */
justify-self: center; /* centrado horizontal */
}
/* En pantallas MUY grandes evita que todo se pegue a los bordes */
@media (min-width: 1800px){
.page-eventos-wide .content{
padding-left: 32px;
padding-right: 32px;
}
}
/* Responsive se mantiene, pero con ancho completo */
@media (max-width: 720px){
.page-eventos-wide .content{
padding-left: 12px;
padding-right: 12px;
}
}
/* =========================
RESPONSIVE — unificado
========================= */
/* <= 1080px: 2 columnas en las galerías, calendario algo más compacto */
@media (max-width: 1080px){
.media-grid{ grid-template-columns: repeat(2, minmax(0, 1fr)); }
.cal { gap: 8px; padding: 10px; }
.cal-row { gap: 8px; }
.cal-cell{ min-height: 78px; }
}
/* <= 820px: cabecera ajusta “alas”, calendario más legible */
@media (max-width: 820px){
.sub-header h1::before,
.sub-header h1::after{
width: clamp(18px, 6vw, 90px);
}
.cal { gap: 8px; padding: 10px; }
.cal-row { gap: 8px; }
.cal-cell{ min-height: 72px; }
.cal-title{
font-size: 1.05rem;
min-width: 200px;
}
}
/* <= 720px: layout de contenido estrecho, 1 columna en las galerías,
controles del calendario en varias líneas y celdas más bajas */
@media (max-width: 720px){
.content{ padding: 14px 12px 28px; }
.panel{ padding: 14px; }
.sub-header .inner{ padding: 16px 12px 14px; }
.media-grid{ grid-template-columns: 1fr; gap: 12px; }
.cal-controls{
flex-wrap: wrap; /* botones y título se apilan si no caben */
gap: 8px 10px;
}
.cal-title{
min-width: auto;
font-size: 1rem;
padding: 4px 0;
}
.cal-controls .button{
padding: 8px 12px; /* targets más cómodos al tacto */
font-size: 0.95rem;
}
.cal { gap: 6px; padding: 8px; }
.cal-row { gap: 6px; }
.cal-cell{ min-height: 64px; }
.cal-daynum{ top: 6px; left: 6px; font-size: 0.9rem; }
.cal-event .cal-label{
bottom: 6px; left: 6px;
padding: 3px 7px;
font-size: 0.85rem;
border-radius: 5px;
}
}
/* <= 420px: cabecera compacta y calendario aún más compacto
(mejor lectura/uso a una mano) */
@media (max-width: 420px){
.sub-header h1{
font-size: clamp(20px, 7vw, 34px);
}
.sub-header h1::before,
.sub-header h1::after{
display: none; /* sin líneas laterales en móviles muy pequeños */
}
.cal { gap: 5px; padding: 6px; }
.cal-row { gap: 5px; }
.cal-cell{ min-height: 56px; }
.cal-daynum{ top: 5px; left: 6px; font-size: 0.88rem; }
.cal-event .cal-label{
bottom: 5px; left: 6px;
padding: 3px 6px;
font-size: 0.78rem;
}
}