/* =================================================== GioSer · Estilos de Portada (Chakana 2×2) =================================================== */ *, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; } :root { --bg: #0c0c0c; --bg-alt: #111; --fg: #c8c8c8; --fg-dim: #666; --fg-bright: #e0e0e0; --accent: #a0a0a0; --accent-glow: #c0c0c0; --reticula: #3a3a3a; --reticula-hover: rgba(192, 192, 192, 0.15); --border: #333; --border-hover: #666; --font: 'SF Mono', 'JetBrains Mono', 'Fira Code', 'Cascadia Code', monospace; --font-ui: -apple-system, 'Inter', 'Segoe UI', sans-serif; } html, body { height: 100%; width: 100%; overflow: hidden; background: var(--bg); color: var(--fg); font-family: var(--font); font-size: 14px; line-height: 1.4; -webkit-font-smoothing: antialiased; } /* =================================================== PORTADA — retícula 2×2 =================================================== */ .portada { position: fixed; inset: 0; display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr; z-index: 10; background: var(--bg); } /* Líneas de retícula — sobre todo */ .reticula-v { position: absolute; top: 0; left: 50%; width: 3px; height: 100%; background: #777; z-index: 30; pointer-events: none; transform: translateX(-1.5px); } .reticula-h { position: absolute; top: 50%; left: 0; width: 100%; height: 3px; background: #777; z-index: 30; pointer-events: none; transform: translateY(-1.5px); } .reticula-center { position: absolute; top: calc(50% - 16px); left: calc(50% - 16px); width: 32px; height: 32px; border: 3px solid #777; border-radius: 50%; z-index: 30; pointer-events: none; background: transparent; } /* Iluminación en hover via JS */ .reticula-lit { background: rgba(200, 200, 200, 0.5) !important; box-shadow: 0 0 12px rgba(200, 200, 200, 0.3) !important; } .reticula-center.reticula-lit { border-color: rgba(200, 200, 200, 0.6) !important; box-shadow: 0 0 14px rgba(200, 200, 200, 0.35) !important; background: rgba(200, 200, 200, 0.06) !important; } /* =================================================== CUADRANTES =================================================== */ .cuadrante { position: relative; background: transparent; border: none; cursor: pointer; z-index: 5; overflow: hidden; transition: background 0.3s ease; text-align: left; font-family: var(--font); color: var(--fg); padding: 0; } .cuadrante:hover { background: var(--reticula-hover); } /* Borde iluminado en hover */ .cuadrante-border { position: absolute; inset: -1px; border: 1px solid transparent; transition: border-color 0.3s ease; pointer-events: none; } .cuadrante:hover .cuadrante-border { border-color: var(--border-hover); } /* Contenido */ .cuadrante-content { position: absolute; inset: 0; display: flex; flex-direction: column; justify-content: center; padding: 40px 32px; opacity: 0.7; transition: opacity 0.3s ease; } /* Alineación: izquierda mira a la derecha, derecha mira a la izquierda */ .cuadrante-01 .cuadrante-content, .cuadrante-02 .cuadrante-content { align-items: flex-end; text-align: right; padding-right: 40px; padding-left: 20px; } .cuadrante-00 .cuadrante-content, .cuadrante-03 .cuadrante-content { align-items: flex-start; text-align: left; padding-left: 40px; padding-right: 20px; } .cuadrante:hover .cuadrante-content { opacity: 1; } .cuadrante-hex { font-size: 11px; font-weight: 600; color: var(--fg-dim); letter-spacing: 0.15em; margin-bottom: 6px; font-family: var(--font); } .cuadrante-title { font-size: 17px; font-weight: 600; color: var(--fg-bright); letter-spacing: 0.06em; margin-bottom: 12px; font-family: var(--font-ui); } .cuadrante-context { font-size: 13px; color: var(--fg-dim); line-height: 1.6; margin-bottom: 16px; max-width: 70%; font-family: var(--font-ui); } .cuadrante-01 .cuadrante-context, .cuadrante-02 .cuadrante-context { text-align: right; } .cuadrante-00 .cuadrante-context, .cuadrante-03 .cuadrante-context { text-align: left; } .cuadrante-meta { display: flex; align-items: center; gap: 14px; margin-bottom: 12px; } .cuadrante-01 .cuadrante-meta, .cuadrante-02 .cuadrante-meta { flex-direction: row-reverse; } .cuadrante-00 .cuadrante-meta, .cuadrante-03 .cuadrante-meta { flex-direction: row; } .meta-cta { font-size: 11px; font-weight: 600; color: var(--accent); font-family: var(--font); letter-spacing: 0.05em; border: 1px solid var(--border); padding: 2px 8px; border-radius: 2px; transition: border-color 0.3s ease, color 0.3s ease; } .cuadrante:hover .meta-cta { border-color: var(--accent-glow); color: var(--fg-bright); } .meta-stat { font-size: 10px; color: var(--fg-dim); letter-spacing: 0.08em; font-family: var(--font); opacity: 0; transition: opacity 0.4s ease; } .cuadrante:hover .meta-stat { opacity: 0.7; } .cuadrante-crates { list-style: none; font-size: 11px; color: var(--fg-dim); font-family: var(--font); line-height: 1.6; margin: 0; opacity: 0; transition: opacity 0.4s ease; } .cuadrante:hover .cuadrante-crates { opacity: 0.6; } .cuadrante-crates li::before { content: '◆ '; color: var(--fg-dim); font-size: 7px; opacity: 0.4; } /* =================================================== TRANSICIÓN CIERRE PORTADA =================================================== */ .portada-closing { animation: portadaFade 0.6s ease forwards; } @keyframes portadaFade { 0% { opacity: 1; pointer-events: auto; } 100% { opacity: 0; pointer-events: none; } } /* =================================================== DECK (páginas md, mismo estilo de antes) =================================================== */ .deck { position: fixed; inset: 0; z-index: 20; background: var(--bg); opacity: 0; transition: opacity 0.5s ease; } .deck:not([aria-hidden]) { opacity: 1; } .deck-strip { height: 100%; width: 100%; display: flex; overflow-x: auto; overflow-y: hidden; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; } /* =================================================== CONTROLES DE PÁGINA =================================================== */ .page-controls { position: fixed; top: 12px; right: 12px; display: flex; gap: 8px; z-index: 100; transition: opacity 0.3s ease; } .page-control-btn { width: 32px; height: 32px; background: rgba(255,255,255,0.04); border: 1px solid var(--border); border-radius: 4px; color: var(--fg); cursor: pointer; display: flex; align-items: center; justify-content: center; transition: background 0.2s ease, border-color 0.2s ease; } .page-control-btn:hover { background: rgba(255,255,255,0.08); border-color: var(--border-hover); } .page-close { font-size: 18px; font-family: var(--font-ui); font-weight: 300; } /* =================================================== TASKBAR =================================================== */ .taskbar { position: fixed; bottom: 0; left: 0; right: 0; height: 40px; background: rgba(12, 12, 12, 0.92); border-top: 1px solid var(--border); display: flex; align-items: center; gap: 6px; padding: 0 10px; z-index: 200; backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); font-family: var(--font); font-size: 12px; } .taskbar-home, .taskbar-brand { display: flex; align-items: center; gap: 4px; color: var(--fg); cursor: pointer; text-decoration: none; background: transparent; border: none; font-family: var(--font); font-size: 12px; padding: 4px 8px; border-radius: 3px; transition: background 0.2s ease; } .taskbar-home:hover, .taskbar-brand:hover { background: rgba(255,255,255,0.06); } .taskbar-home-glyph { width: 16px; height: 16px; } .brand-dot { color: var(--fg-dim); margin: 0 1px; } .taskbar-divider { width: 1px; height: 20px; background: var(--border); margin: 0 4px; } .taskbar-list { display: flex; gap: 2px; list-style: none; margin: 0; padding: 0; max-width: 60vw; overflow-x: auto; } .taskbar-list::-webkit-scrollbar { height: 0; } .taskbar-spacer { flex: 1; } .taskbar-credit { color: var(--fg-dim); text-decoration: none; display: flex; align-items: center; gap: 4px; padding: 4px 8px; border-radius: 3px; transition: color 0.2s ease; font-size: 11px; } .taskbar-credit:hover { color: var(--fg); } .copyleft-mark { font-size: 11px; } /* =================================================== SCROLLBAR =================================================== */ ::-webkit-scrollbar { width: 6px; height: 6px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: var(--border); border-radius: 3px; } ::-webkit-scrollbar-thumb:hover { background: var(--border-hover); }