17 DE MAYO · DÍA INTERNACIONAL
Contra
la
homofobia,
lesbofobia,
transfobia
y
bifobia
.organic-hero-host {
position: relative;
overflow: hidden;
background: #330042;
isolation: isolate;
}
.organic-hero-host > *:not(.organic-hero-cover) {
position: relative;
z-index: 2;
}
.organic-hero-cover {
position: absolute;
inset: 0;
width: 100%;
height: 100%;
overflow: hidden;
z-index: 0;
pointer-events: none;
background:
radial-gradient(circle at 84% 8%, rgba(160,104,222,.14), transparent 24%),
radial-gradient(circle at 4% 100%, rgba(18,197,208,.08), transparent 18%),
#330042;
}
.organic-hero-cover svg {
width: 100%;
height: 100%;
display: block;
}
.organic-hero-cover .layer {
will-change: transform;
transform-box: fill-box;
transform-origin: center;
}
window.injectOrganicHero = function(targetId) {
const target = document.getElementById(targetId);
if (!target) return;
target.classList.add('organic-hero-host');
if (target.querySelector('.organic-hero-cover')) return;
target.insertAdjacentHTML('afterbegin', `
`);
startOrganicHeroAnimation(target);
};
function startOrganicHeroAnimation(target) {
const root = target.querySelector('.organic-hero-cover');
if (!root) return;
const reduceMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
const CYCLE = 15.5;
const vortex = { x: 860, y: 510 };
const bgDarkLeft = root.querySelector('#bgDarkLeft');
const bgPurpleRight = root.querySelector('#bgPurpleRight');
function easeInOutSine(x) {
return -(Math.cos(Math.PI * x) - 1) / 2;
}
function amountFromProgress(progress) {
if (progress < 0.60) return easeInOutSine(progress / 0.60);
return 1 - easeInOutSine((progress - 0.60) / 0.40);
}
function catmullRomPath(points, closed = false) {
if (!points.length) return '';
if (points.length < 2) return `M ${points[0].x} ${points[0].y}`;
const pts = closed
? [points[points.length - 1], ...points, points[0], points[1]]
: [points[0], ...points, points[points.length - 1]];
let d = `M ${points[0].x.toFixed(2)} ${points[0].y.toFixed(2)}`;
for (let i = 1; i < points.length; i++) {
const p0 = pts[i - 1];
const p1 = pts[i];
const p2 = pts[i + 1];
const p3 = pts[i + 2];
const cp1x = p1.x + (p2.x - p0.x) / 6;
const cp1y = p1.y + (p2.y - p0.y) / 6;
const cp2x = p2.x - (p3.x - p1.x) / 6;
const cp2y = p2.y - (p3.y - p1.y) / 6;
d += ` C ${cp1x.toFixed(2)} ${cp1y.toFixed(2)}, ${cp2x.toFixed(2)} ${cp2y.toFixed(2)}, ${p2.x.toFixed(2)} ${p2.y.toFixed(2)}`;
}
return d;
}
function buildRibbon(points, widths) {
const upper = [];
const lower = [];
for (let i = 0; i < points.length; i++) {
const p = points[i];
const prev = points[i - 1] || points[i];
const next = points[i + 1] || points[i];
let dx = next.x - prev.x;
let dy = next.y - prev.y;
const len = Math.hypot(dx, dy) || 1;
dx /= len;
dy /= len;
const nx = -dy;
const ny = dx;
const w = widths[i];
upper.push({ x: p.x + nx * w, y: p.y + ny * w });
lower.push({ x: p.x - nx * w, y: p.y - ny * w });
}
return catmullRomPath([...upper, ...lower.reverse()], true) + ' Z';
}
function anchorWeight(cfg, i, total, amount) {
if (!cfg.anchors || !cfg.anchors.length) return 1;
let factor = 1;
for (const a of cfg.anchors) {
const idx = a.index < 0 ? total + a.index : a.index;
const dist = Math.abs(i - idx);
const radius = a.radius ?? 0;
if (dist {
const n = i / Math.max(1, arr.length - 1);
const mid = Math.sin(Math.PI * n);
const anchor = anchorWeight(cfg, i, total, amount);
const dx = p.x - vortex.x;
const dy = p.y - vortex.y;
const baseRadius = Math.hypot(dx, dy) || 1;
const baseAngle = Math.atan2(dy, dx);
const localCenterX = vortex.x + cfg.centerOffset.x * amount;
const localCenterY = vortex.y + cfg.centerOffset.y * amount;
const contraction = 1 - amount * cfg.pull * anchor;
const radius = baseRadius * contraction + cfg.core * amount * (0.45 + n * 0.55);
const spiralTurns = cfg.turns * anchor * (0.35 + (1 - n) * 0.9);
const angleTwist = baseAngle + cfg.dir * amount * spiralTurns + t * cfg.spinSpeed * cfg.dir;
let x = localCenterX + Math.cos(angleTwist) * radius;
let y = localCenterY + Math.sin(angleTwist) * radius * cfg.ellipse;
const tangent = angleTwist + Math.PI / 2;
const stretchWave = Math.sin(t * 0.32 + cfg.phase + i * 0.42);
const stretch = stretchWave * cfg.stretchAmp * amount * (0.20 + mid * 0.95) * anchor;
const localTwist = Math.sin(t * 0.40 + cfg.phase + i * 0.58) * cfg.twistAmp * amount * (0.20 + mid) * anchor;
const localBulge = Math.cos(t * 0.28 + cfg.phase * 1.2 + i * 0.38) * cfg.bulgeAmp * amount * (0.18 + mid) * anchor;
x += Math.cos(tangent) * (localTwist + stretch) + Math.cos(angleTwist) * localBulge;
y += Math.sin(tangent) * (localTwist + stretch) + Math.sin(angleTwist) * localBulge;
const harmony = 0.12 + (1 - anchor) * 0.28;
x = x * (1 - harmony) + p.x * harmony;
y = y * (1 - harmony) + p.y * harmony;
return { x, y };
});
}
function deformWidths(baseWidths, cfg, t, amount) {
const len = baseWidths.length;
return baseWidths.map((w, i) => {
const n = i / Math.max(1, len - 1);
const mid = 1 - Math.abs(0.5 - n) * 1.4;
const anchor = anchorWeight(cfg, i, len, amount);
const wave = Math.sin(t * 0.24 + cfg.phase + i * 0.30);
const thick = 1 + amount * anchor * (mid * cfg.thicken + wave * cfg.breathe);
const stretchComp = 1 - amount * anchor * 0.10 * (1 - n);
return w * thick * stretchComp;
});
}
const ribbons = [
{
path: root.querySelector('#pathLilac'),
layer: root.querySelector('#layerLilac'),
base: [
{x:-160,y:390},{x:110,y:484},{x:420,y:548},{x:730,y:514},
{x:1010,y:434},{x:1308,y:352},{x:1700,y:294}
],
widths: [82,80,76,74,68,60,56],
phase: 0.4,
dir: -1,
pull: 0.22,
turns: 1.30,
spinSpeed: 0.085,
core: 44,
ellipse: 0.86,
twistAmp: 28,
bulgeAmp: 12,
stretchAmp: 36,
thicken: 0.18,
breathe: 0.04,
drift: 5,
rot: 1.8,
centerOffset: {x:-26,y:8},
anchors: [
{index:0, radius:1, strength:0.92},
{index:6, radius:1, strength:0.75}
]
},
{
path: root.querySelector('#pathPink'),
layer: root.querySelector('#layerPink'),
base: [
{x:946,y:-94},{x:920,y:132},{x:836,y:296},
{x:714,y:460},{x:548,y:626},{x:402,y:730}
],
widths: [102,108,96,90,82,72],
phase: 1.1,
dir: 1,
pull: 0.30,
turns: 1.85,
spinSpeed: 0.10,
core: 34,
ellipse: 0.84,
twistAmp: 34,
bulgeAmp: 14,
stretchAmp: 42,
thicken: 0.20,
breathe: 0.05,
drift: 7,
rot: 2.2,
centerOffset: {x:18,y:-18},
anchors: [
{index:0, radius:0, strength:0.85}
]
},
{
path: root.querySelector('#pathTealOrange'),
layer: root.querySelector('#layerTealOrange'),
base: [
{x:-120,y:770},{x:72,y:622},{x:248,y:490},{x:426,y:412},{x:632,y:392}
],
widths: [174,168,160,148,138],
phase: 2.0,
dir: -1,
pull: 0.26,
turns: 1.65,
spinSpeed: 0.09,
core: 54,
ellipse: 0.88,
twistAmp: 38,
bulgeAmp: 16,
stretchAmp: 48,
thicken: 0.16,
breathe: 0.04,
drift: 8,
rot: 2.0,
centerOffset: {x:-34,y:18},
anchors: [
{index:0, radius:0, strength:0.90},
{index:4, radius:0, strength:0.45}
]
},
{
path: root.querySelector('#pathSun'),
layer: root.querySelector('#layerSun'),
base: [
{x:674,y:602},{x:888,y:566},{x:1108,y:562},{x:1366,y:594},{x:1666,y:670}
],
widths: [66,70,72,78,86],
phase: 2.9,
dir: 1,
pull: 0.34,
turns: 2.10,
spinSpeed: 0.11,
core: 26,
ellipse: 0.82,
twistAmp: 32,
bulgeAmp: 14,
stretchAmp: 44,
thicken: 0.24,
breathe: 0.05,
drift: 9,
rot: 2.6,
centerOffset: {x:30,y:14},
anchors: []
},
{
path: root.querySelector('#pathRed'),
layer: root.querySelector('#layerRed'),
base: [
{x:872,y:1008},{x:990,y:776},{x:1124,y:612},{x:1288,y:498},{x:1534,y:444}
],
widths: [120,116,110,104,96],
phase: 3.6,
dir: -1,
pull: 0.24,
turns: 1.50,
spinSpeed: 0.085,
core: 42,
ellipse: 0.90,
twistAmp: 30,
bulgeAmp: 13,
stretchAmp: 38,
thicken: 0.18,
breathe: 0.04,
drift: 6,
rot: 1.9,
centerOffset: {x:24,y:26},
anchors: [
{index:4, radius:0, strength:0.72}
]
}
];
const dots = [
{ el: root.querySelector('#dot1'), baseX:128, baseY:254, dir:-1, phase:0.2, pull:0.20, turns:1.1, core:18, centerOffset:{x:-16,y:8} },
{ el: root.querySelector('#dot2'), baseX:560, baseY:126, dir:1, phase:0.8, pull:0.26, turns:1.4, core:16, centerOffset:{x:14,y:-10} },
{ el: root.querySelector('#dot3'), baseX:694, baseY:174, dir:1, phase:1.6, pull:0.30, turns:1.6, core:14, centerOffset:{x:10,y:-6} },
{ el: root.querySelector('#dot4'), baseX:990, baseY:316, dir:-1, phase:2.0, pull:0.32, turns:1.8, core:12, centerOffset:{x:18,y:-4} },
{ el: root.querySelector('#dot5'), baseX:1410, baseY:334, dir:1, phase:2.8, pull:0.18, turns:1.0, core:14, centerOffset:{x:20,y:6} },
{ el: root.querySelector('#dot6'), baseX:852, baseY:530, dir:-1, phase:3.2, pull:0.36, turns:2.0, core:8, centerOffset:{x:0,y:0} },
{ el: root.querySelector('#dot7'), baseX:1368, baseY:438, dir:1, phase:3.8, pull:0.18, turns:1.0, core:12, centerOffset:{x:22,y:8} },
{ el: root.querySelector('#dot8'), baseX:886, baseY:622, dir:-1, phase:4.4, pull:0.30, turns:1.5, core:10, centerOffset:{x:6,y:18} },
{ el: root.querySelector('#dot9'), baseX:1288, baseY:658, dir:1, phase:5.0, pull:0.22, turns:1.2, core:12, centerOffset:{x:20,y:20} },
{ el: root.querySelector('#dot10'), baseX:1118, baseY:786, dir:-1, phase:5.6, pull:0.24, turns:1.3, core:10, centerOffset:{x:12,y:22} },
{ el: root.querySelector('#dot11'), baseX:118, baseY:846, dir:-1, phase:2.4, pull:0.14, turns:0.9, core:20, centerOffset:{x:-20,y:18} },
{ el: root.querySelector('#dot12'), baseX:220, baseY:150, dir:1, phase:0.6, pull:0.16, turns:0.9, core:12, centerOffset:{x:-20,y:-18} },
{ el: root.querySelector('#dot13'), baseX:330, baseY:300, dir:-1, phase:1.3, pull:0.20, turns:1.2, core:10, centerOffset:{x:-16,y:-8} },
{ el: root.querySelector('#dot14'), baseX:430, baseY:190, dir:1, phase:2.1, pull:0.18, turns:1.1, core:12, centerOffset:{x:-8,y:-18} },
{ el: root.querySelector('#dot15'), baseX:760, baseY:90, dir:-1, phase:2.8, pull:0.22, turns:1.3, core:10, centerOffset:{x:0,y:-22} },
{ el: root.querySelector('#dot16'), baseX:820, baseY:230, dir:1, phase:3.4, pull:0.28, turns:1.5, core:8, centerOffset:{x:4,y:-12} },
{ el: root.querySelector('#dot17'), baseX:1040, baseY:180, dir:-1, phase:4.2, pull:0.20, turns:1.2, core:12, centerOffset:{x:12,y:-14} },
{ el: root.querySelector('#dot18'), baseX:1210, baseY:250, dir:1, phase:5.0, pull:0.18, turns:1.0, core:8, centerOffset:{x:18,y:-8} },
{ el: root.querySelector('#dot19'), baseX:1510, baseY:210, dir:-1, phase:5.7, pull:0.12, turns:0.8, core:14, centerOffset:{x:26,y:-10} },
{ el: root.querySelector('#dot20'), baseX:1520, baseY:520, dir:1, phase:6.2, pull:0.16, turns:0.9, core:12, centerOffset:{x:26,y:8} },
{ el: root.querySelector('#dot21'), baseX:1470, baseY:760, dir:-1, phase:6.9, pull:0.14, turns:0.8, core:10, centerOffset:{x:24,y:22} },
{ el: root.querySelector('#dot22'), baseX:1320, baseY:820, dir:1, phase:7.4, pull:0.18, turns:1.0, core:12, centerOffset:{x:18,y:26} },
{ el: root.querySelector('#dot23'), baseX:980, baseY:850, dir:-1, phase:8.0, pull:0.24, turns:1.3, core:10, centerOffset:{x:8,y:28} },
{ el: root.querySelector('#dot24'), baseX:730, baseY:770, dir:1, phase:8.6, pull:0.28, turns:1.5, core:8, centerOffset:{x:-4,y:24} },
{ el: root.querySelector('#dot25'), baseX:520, baseY:840, dir:-1, phase:9.1, pull:0.20, turns:1.1, core:12, centerOffset:{x:-14,y:26} },
{ el: root.querySelector('#dot26'), baseX:300, baseY:700, dir:1, phase:9.8, pull:0.16, turns:0.9, core:10, centerOffset:{x:-22,y:20} },
{ el: root.querySelector('#dot27'), baseX:96, baseY:600, dir:-1, phase:10.3,pull:0.12, turns:0.8, core:8, centerOffset:{x:-26,y:12} },
{ el: root.querySelector('#dot28'), baseX:240, baseY:520, dir:1, phase:10.8,pull:0.18, turns:1.0, core:8, centerOffset:{x:-20,y:6} },
{ el: root.querySelector('#dot29'), baseX:640, baseY:420, dir:-1, phase:11.4,pull:0.32, turns:1.7, core:8, centerOffset:{x:-8,y:0} },
{ el: root.querySelector('#dot30'), baseX:1120, baseY:460, dir:1, phase:12.0,pull:0.30, turns:1.6, core:8, centerOffset:{x:12,y:2} },
{ el: root.querySelector('#dot31'), baseX:1220, baseY:590, dir:-1, phase:12.7,pull:0.26, turns:1.4, core:10, centerOffset:{x:16,y:12} },
{ el: root.querySelector('#dot32'), baseX:1030, baseY:690, dir:1, phase:13.3,pull:0.30, turns:1.6, core:8, centerOffset:{x:8,y:18} },
{ el: root.querySelector('#dot33'), baseX:770, baseY:690, dir:-1, phase:13.9,pull:0.34, turns:1.8, core:8, centerOffset:{x:-4,y:16} },
{ el: root.querySelector('#dot34'), baseX:470, baseY:610, dir:1, phase:14.5,pull:0.22, turns:1.2, core:8, centerOffset:{x:-14,y:12} },
{ el: root.querySelector('#dot35'), baseX:1540, baseY:90, dir:-1, phase:15.0,pull:0.10, turns:0.7, core:8, centerOffset:{x:28,y:-18} }
].filter(d => d.el);
function animateRibbon(cfg, t, amount) {
const pts = deformSpiralVortex(cfg.base, cfg, t, amount);
const widths = deformWidths(cfg.widths, cfg, t, amount);
cfg.path.setAttribute('d', buildRibbon(pts, widths));
const cx = cfg.base.reduce((a, p) => a + p.x, 0) / cfg.base.length;
const cy = cfg.base.reduce((a, p) => a + p.y, 0) / cfg.base.length;
const driftX = Math.sin(t * 0.09 + cfg.phase) * cfg.drift * amount;
const driftY = Math.cos(t * 0.08 + cfg.phase * 1.05) * cfg.drift * 0.50 * amount;
const rot = Math.sin(t * 0.12 + cfg.phase) * cfg.rot + amount * cfg.dir * 1.6;
const sx = 1 + Math.sin(t * 0.14 + cfg.phase) * 0.010 * amount + amount * 0.020;
const sy = 1 + Math.cos(t * 0.12 + cfg.phase) * 0.014 * amount - amount * 0.004;
const skewX = Math.sin(t * 0.14 + cfg.phase) * cfg.dir * 1.1 * amount;
cfg.layer.setAttribute(
'transform',
`translate(${driftX.toFixed(2)} ${driftY.toFixed(2)}) rotate(${rot.toFixed(2)} ${cx.toFixed(2)} ${cy.toFixed(2)}) skewX(${skewX.toFixed(2)}) scale(${sx.toFixed(3)} ${sy.toFixed(3)})`
);
}
function animateDots(t, amount) {
dots.forEach((d, index) => {
const localCenterX = vortex.x + d.centerOffset.x * amount;
const localCenterY = vortex.y + d.centerOffset.y * amount;
const dx = d.baseX - localCenterX;
const dy = d.baseY - localCenterY;
const baseRadius = Math.hypot(dx, dy) || 1;
const baseAngle = Math.atan2(dy, dx);
const radius = baseRadius * (1 - amount * d.pull) + d.core * amount;
const ang = baseAngle + d.dir * amount * d.turns + t * (0.06 + index * 0.0018) * d.dir;
const x = localCenterX + Math.cos(ang) * radius;
const y = localCenterY + Math.sin(ang) * radius * 0.86;
const floatX = Math.sin(t * (0.12 + index * 0.002) + d.phase) * (4 + (index % 5));
const floatY = Math.cos(t * (0.10 + index * 0.002) + d.phase) * (3 + (index % 4));
const tx = x - d.baseX + floatX;
const ty = y - d.baseY + floatY;
const s = 1 + Math.sin(t * 0.14 + d.phase) * 0.018 * amount + amount * 0.015;
d.el.setAttribute(
'transform',
`translate(${tx.toFixed(2)} ${ty.toFixed(2)}) scale(${s.toFixed(3)})`
);
});
}
function frame(ts) {
const t = ts * 0.001;
const progress = reduceMotion ? 0 : ((t % CYCLE) / CYCLE);
const amount = reduceMotion ? 0 : amountFromProgress(progress);
ribbons.forEach(r => animateRibbon(r, t, amount));
animateDots(t, amount);
const bg1 = Math.sin(t * 0.05 + 0.2) * amount;
const bg2 = Math.cos(t * 0.04 + 0.9) * amount;
bgDarkLeft.setAttribute(
'transform',
`translate(${(bg1 * 4).toFixed(2)} ${(bg2 * 3).toFixed(2)}) rotate(${(bg1 * 0.8).toFixed(2)} 290 300) scale(${(1 + bg2 * 0.008).toFixed(3)} ${(1 + bg1 * 0.010).toFixed(3)})`
);
bgPurpleRight.setAttribute(
'transform',
`translate(${(bg2 * 3).toFixed(2)} ${(bg1 * 2).toFixed(2)}) rotate(${(bg2 * 0.7).toFixed(2)} 1320 330) scale(${(1 + bg1 * 0.006).toFixed(3)} ${(1 + bg2 * 0.006).toFixed(3)})`
);
requestAnimationFrame(frame);
}
requestAnimationFrame(frame);
}
document.addEventListener('DOMContentLoaded', function() {
injectOrganicHero('hero-organico');
});
.stg-hero-intro {
--stg-purple: #622D50;
--stg-orange: #FF8300;
font-family: "Roboto", Arial, sans-serif;
color: var(--stg-dark);
background: transparent;
}
.stg-hero-intro * {
box-sizing: border-box;
}
.stg-pride-title {
margin: 0 0 32px;
font-size: 2.4rem;
line-height: 1.55;
font-weight: 300;
letter-spacing: -0.03em;
}
.stg-hero-intro .stg-lead {
max-width: 840px;
margin: 0 0 18px;
color: var(--stg-dark);
font-size: 1.12rem;
line-height: 1.75;
font-weight: 300;
}
.stg-hero-intro .stg-lead-secondary {
color: var(--stg-muted);
}
.stg-hero-intro .stg-hero-card {
position: relative;
padding: 36px;
background: var(--stg-purple);
color: #fff;
display: flex;
flex-direction: column;
justify-content: flex-end;
text-align: center;
}
.stg-hero-intro .stg-card-number {
display: block;
font-size: 7rem;
line-height: 0.8;
font-weight: 100;
letter-spacing: -0.07em;
}
.stg-hero-intro .stg-card-month {
display: block;
margin-top: 8px;
color: var(--stg-orange);
font-size: 1.7rem;
line-height: 1;
font-weight: 300;
text-transform: uppercase;
}
.stg-hero-intro .stg-card-line {
display: block;
width: 100%;
height: 2px;
margin: 28px 0;
background: var(--stg-orange);
}
.stg-hero-intro .stg-hero-card p {
margin: 0;
color: rgba(255, 255, 255, 0.88);
font-size: 1rem;
line-height: 1.6;
}
.stg-access-section {
--stg-purple: #622D50;
--stg-deep-purple: #37114f;
--stg-orange: #FF8300;
--stg-dark: #282428;
--stg-muted: #706873;
font-family: "Roboto", Arial, sans-serif;
color: var(--stg-dark);
background: transparent;
}
.stg-access-section * {
box-sizing: border-box;
}
.stg-access-section .stg-section-title {
margin: 0 0 22px;
color: var(--stg-purple);
font-size: 2.6rem;
line-height: 1.05;
font-weight: 300;
letter-spacing: -0.035em;
}
.stg-access-section .stg-text {
max-width: 840px;
margin: 0;
color: var(--stg-muted);
font-size: 1rem;
line-height: 1.75;
font-weight: 300;
}
.stg-access-card {
min-height: 250px;
padding: 28px;
background: #e97700;
border-top: 4px solid var(--stg-orange);
box-shadow: 0 12px 34px rgba(40, 36, 40, 0.12);
}
.stg-access-card span {
display: block;
margin-bottom: 22px;
color: var(--stg-orange);
font-size: 2.5rem;
line-height: 1;
font-weight: 100;
}
.stg-access-card p {
margin: 0;
color: rgba(255, 255, 255, 0.88);
font-size: 0.98rem;
line-height: 1.65;
font-weight: 300;
}
.stg-case-card {
width: 100%;
padding: 32px;
background: #622D50;
border-left: 8px solid #FF8300;
box-shadow: 0 12px 34px rgba(40, 36, 40, 0.12);
}
.stg-section-label,
.stg-section-title {
color: inherit;
}
.stg-section-label,
.stg-case-meta,
.stg-case-kicker {
letter-spacing: 0.12em;
}
.stg-section-title {
font-weight: 300;
letter-spacing: -0.035em;
}
.stg-case-meta,
.stg-case-kicker {
color: #FF8300;
}
.stg-case-title {
margin: 0 0 10px;
color: #fff;
font-size: 1.15rem;
line-height: 1.45;
font-weight: 400;
}
.stg-case-title .uk-text-underline {
text-decoration-color: #FF8300;
text-decoration-thickness: 2px;
text-underline-offset: 4px;
}
.stg-case-rit {
margin: 0 0 14px;
color: rgba(255, 255, 255, 0.76);
font-size: 0.95rem;
line-height: 1.6;
font-weight: 300;
}
.stg-case-text {
margin: 0;
color: rgba(255, 255, 255, 0.9);
font-size: 1rem;
line-height: 1.75;
font-weight: 300;
}
.stg-case-button {
border-color: #fff;
color: #fff;
font-weight: 700;
}
.stg-case-button:hover {
background: #fff;
border-color: #fff;
color: #622D50;
}
.stg-youtube-button {
border-color: #FF8300;
color: #fff;
font-weight: 700;
}
.stg-youtube-button span[uk-icon] {
margin-right: 6px;
}
.stg-youtube-button:hover {
background: #FF8300;
border-color: #FF8300;
color: #fff;
}
.stg-context-label {
letter-spacing: 0.12em;
}
.stg-context-title {
font-weight: 300;
letter-spacing: -0.035em;
}
.stg-context-text {
margin: 0;
color: inherit;
font-size: 1rem;
line-height: 1.75;
font-weight: 300;
}
.stg-stat-card {
min-height: 280px;
padding: 28px;
background: #622D50;
border-bottom: 6px solid #FF8300;
box-shadow: 0 12px 34px rgba(40, 36, 40, 0.12);
}
.stg-stat-number {
display: block;
margin-bottom: 14px;
color: #FF8300;
font-size: 4rem;
line-height: 0.9;
font-weight: 100;
letter-spacing: -0.06em;
}
.stg-stat-title {
margin: 0 0 12px;
color: #fff;
font-size: 1.05rem;
line-height: 1.45;
font-weight: 700;
}
.stg-stat-note {
margin: 0;
color: rgba(255, 255, 255, 0.78);
font-size: 0.95rem;
line-height: 1.6;
font-weight: 300;
}
.stg-resources-label {
letter-spacing: 0.12em;
}
.stg-resources-title {
font-weight: 300;
letter-spacing: -0.035em;
}
.stg-resources-list > li {
margin: 0 0 22px;
padding: 0 0 0 18px;
border-left: 5px solid #e97700;
}
.stg-resource-name {
color: inherit;
font-size: 1.08rem;
line-height: 1.4;
font-weight: 600;
}
.stg-resource-link {
display: inline-block;
margin-top: 6px;
font-size: 0.95rem;
line-height: 1.55;
word-break: break-word;
text-decoration: underline;
text-underline-offset: 3px;
}
.stg-resource-link:hover {
color: #FF8300;
}
El 17 de mayo se conmemora el Día Internacional contra la Homofobia,
Lesbofobia, Transfobia y Bifobia, en recuerdo de la decisión adoptada
en 1990 por la Asamblea General de la Organización Mundial de la Salud
de eliminar la homosexualidad de la clasificación de enfermedades mentales.
Para el Poder Judicial, esta fecha constituye una oportunidad para
reafirmar su compromiso con una justicia más inclusiva, respetuosa de
la diversidad y orientada a asegurar un efectivo acceso a la justicia,
en el marco de su Política de Igualdad de Género y No Discriminación.
17
mayo
Diversidad, igualdad y acceso efectivo a la justicia.
EL DESAFÍO DEL ACCESO A LA JUSTICIA
Brechas, inequidades y barreras que afectan a personas LGBTIQA+
El estudio “Acceso a la Justicia de las Personas LGBTI+”, encargado por la Secretaría Técnica de Igualdad de Género y No Discriminación a la Facultad de Derecho de la Universidad de Chile, identificó brechas, inequidades y barreras en el acceso a la justicia que experimentan las personas LGBTIQA+ en Chile, con especial foco en el ámbito institucional del Poder Judicial.
01
La necesidad de seguir fortaleciendo la formación en diversidad sexual y de género.
02
La persistencia de prácticas institucionales y estereotipos que pueden afectar el trato otorgado a personas LGBTIQA+.
03
La falta de reconocimiento de las especificidades propias de las personas LGBTIQA+ en la atención y resolución de casos.
04
La necesidad de responder adecuadamente a contextos de vulnerabilidad y discriminación.
Fallos destacados · 2025
Decisiones judiciales relevantes
Materia penal · 2025
Primera sentencia de su tipo en Chile
Primera condena por femicidio lesbofóbico
RIT N° 136-2025, 3° Tribunal de Juicio Oral en lo Penal de Santiago
El tribunal dictó sentencia condenatoria en un caso de femicidio
en que reconoció la lesbofobia como un factor determinante del crimen,
constituyendo la primera condena de este tipo en Chile.
Ir a la ficha del fallo
Ver video en PJUD TV
Materia penal · 2025
Condena por robo con homicidio motivado por la orientación sexual de la víctima
RIT N° 117-2025, Tribunal de Juicio Oral en lo Penal de Punta Arenas
El tribunal dictó sentencia condenatoria en un caso de robo con
homicidio cometido contra una persona gay, aplicando la agravante
del artículo 12 N° 21 del Código Penal. La sentencia reconoció
expresamente la orientación sexual de la víctima como motivo del delito.
Ir a la ficha del fallo
Materia laboral · 2025
Tutela laboral por despido discriminatorio fundado en identidad de género
RIT N° T-15-2025, Juzgado de Letras del Trabajo de Puente Alto
El tribunal acogió una denuncia de tutela laboral por vulneración
de derechos fundamentales, al concluir que el despido del actor
obedeció a un criterio discriminatorio fundado en su identidad de género.
Ir a la ficha del fallo
Contexto nacional
Según Informe MOVILH 2025
Indicadores reportados en el XXIV Informe Anual de Derechos Humanos
de la Diversidad Sexual y de Género.
3.620
casos de discriminación registrados en 2025
La cifra más alta de la que se tiene registro.
+27,1%
de aumento respecto al año anterior
El año 2025 concentra un 23% del total de casos y denuncias conocidos
en los últimos 24 años.
39,6%
de los casos afectaron a personas trans
El grupo más impactado.
2.860
declaraciones homo/transfóbicas registradas
La cifra más alta de la que se tiene registro, expresada
mayoritariamente a través de redes sociales.
Recursos para consulta
Documentos y plataformas relacionadas
Repositorio de sentencias con perspectiva de género
https://secretariadegenero.pjud.cl/index.php/repositorio/inicio-repositorio
Estudio Acceso a la Justicia LGBTI+
https://secretariadegenero.pjud.cl/index.php/estudios/estudios
XXIV Informe Anual de DDHH de la Diversidad Sexual y de Género, MOVILH
https://www.movilh.cl/wp-content/uploads/2026/03/XXIV.-Informe-Anual-de-DDHH-Diversidad-Sexual-y-de-Genero-2025-Movilh.pdf