thefoldwithin-earth/public/about/Neutralizing Narcissism/index.html
Mark Randall Havens △ The Empathic Technologist ⟁ Doctor Who 42 78acbc6fa3
Create Neutralizing Narcissism/index.html
2025-11-09 00:35:01 -06:00

215 lines
No EOL
11 KiB
HTML
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.

<!DOCTYPE html><html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Neutralizing Narcissism — About</title>
<meta name="description" content="About Neutralizing Narcissism — a field-driven research and education project for pattern literacy, survivor empowerment, and culture-level accountability." />
<style>
:root{
--bg:#0b0b0d;
--panel:#111115;
--ink:#e6d29a; /* warm gold */
--muted:#a5915b;
--accent:#f1e6b9;
--ring: 0 0 0 1px inset color-mix(in oklab, var(--ink) 30%, transparent);
--shadow: 0 10px 30px rgba(0,0,0,.6);
--radius: 18px;
}
*{box-sizing:border-box}
html,body{height:100%}
body{
margin:0; background: radial-gradient(1200px 1200px at 70% -10%, #14141a 0%, var(--bg) 40%, #000 100%);
color:var(--ink); font: 16px/1.6 system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif;
overflow-x:hidden;
}
a{color:var(--accent); text-decoration:none; position:relative}
a::after{content:""; position:absolute; left:0; bottom:-2px; height:1px; width:100%; background:linear-gradient(90deg, transparent, var(--accent), transparent); transform:scaleX(0); transform-origin:left; transition:transform .35s ease}
a:hover::after{transform:scaleX(1)}/* Hero */
.hero{position:relative; min-height:72vh; display:grid; place-items:center; padding:8rem 1.5rem 4rem}
.glow{position:absolute; inset:-10vh -10vw auto -10vw; height:80vh; background:radial-gradient(600px 400px at 30% 10%, rgba(255,230,160,.15), transparent 60%);}
.halo{position:absolute; inset:0; pointer-events:none; opacity:.5}
.container{width:min(1150px, 92vw); margin-inline:auto}
.card{background:linear-gradient(180deg, rgba(255,255,255,.03), rgba(255,255,255,.00)); border-radius:var(--radius); border:1px solid rgba(230,210,154,.14); box-shadow:var(--shadow)}
.hero-card{padding:2rem 2rem 2.25rem}
h1{font-weight:700; letter-spacing:.3px; font-size:clamp(2rem, 4vw + 1rem, 3.6rem); line-height:1.15; margin:0 0 .75rem}
.kicker{letter-spacing:.18em; text-transform:uppercase; font-size:.82rem; color:var(--muted)}
.lede{font-size:clamp(1.05rem, .8vw + 1rem, 1.25rem); color:var(--accent); opacity:.95}
/* Sigil */
.sigil{width:90px; height:90px; margin-bottom:1.25rem; filter: drop-shadow(0 2px 12px rgba(241,230,185,.15));}
.sigil path{stroke:var(--ink); stroke-width:2; fill:none; stroke-linecap:round; stroke-linejoin:round}
/* Sections */
section{padding:3.5rem 1.5rem}
h2{font-size:clamp(1.35rem, 1.2vw + 1rem, 2rem); margin:0 0 .75rem}
p{margin:.4rem 0 .8rem}
.grid{display:grid; gap:1.2rem}
@media (min-width:900px){ .grid{grid-template-columns: 1fr 1fr;}}
.panel{padding:1.3rem 1.25rem; border-radius:var(--radius); background:color-mix(in oklab, var(--panel) 84%, #000); border:1px solid rgba(230,210,154,.14)}
.pill{display:inline-flex; gap:.5rem; align-items:center; padding:.38rem .7rem; border-radius:999px; border:1px solid rgba(230,210,154,.22); color:var(--accent); font-size:.8rem; background:linear-gradient(180deg, rgba(255,255,255,.05), rgba(255,255,255,.0));}
.list{display:grid; gap:.65rem; padding-left:1rem}
.list li{margin-left:.2rem}
/* Subtle particles */
.particles{position:fixed; inset:0; pointer-events:none; z-index:-1; opacity:.35}
/* Reveal on scroll */
.reveal{opacity:0; transform:translateY(12px); transition:opacity .9s ease, transform .9s ease}
.reveal.is-visible{opacity:1; transform:translateY(0)}
/* Footer */
footer{padding:2rem 1.5rem 4rem; color:var(--muted); text-align:center; font-size:.9rem}
/* Accessibility */
@media (prefers-reduced-motion: reduce){
.particles, .halo, .glow{display:none}
.reveal{opacity:1; transform:none}
a::after{display:none}
}
</style>
</head>
<body>
<canvas class="particles" id="p"></canvas>
<div class="glow" aria-hidden="true"></div> <header class="hero">
<svg class="halo" viewBox="0 0 1200 720" aria-hidden="true">
<defs>
<radialGradient id="hg" cx="50%" cy="46%" r="60%">
<stop offset="0%" stop-color="rgba(241,230,185,.12)" />
<stop offset="60%" stop-color="rgba(241,230,185,0)" />
</radialGradient>
</defs>
<ellipse cx="600" cy="360" rx="520" ry="260" fill="url(#hg)"/>
</svg>
<div class="container">
<div class="card hero-card reveal">
<svg class="sigil" viewBox="0 0 100 100" aria-hidden="true">
<!-- Simple gold-on-black sigil (circle + axis + curls) -->
<circle cx="50" cy="50" r="22" />
<line x1="50" y1="14" x2="50" y2="86" />
<line x1="30" y1="50" x2="70" y2="50" />
<path d="M50 70 C 40 76, 35 84, 35 90" />
<path d="M50 70 C 60 76, 65 84, 65 90" />
<circle cx="50" cy="10" r="4" />
</svg>
<div class="kicker">Neutralizing Narcissism</div>
<h1>Pattern literacy for a safer, saner web — and a kinder world.</h1>
<p class="lede">We teach people to recognize manipulative language patterns, set clean boundaries, and build cultures where truth has oxygen. This page shares our purpose, method, and the ethic behind the work.</p>
</div>
</div>
</header> <main>
<section class="container">
<div class="grid">
<article class="panel reveal">
<h2>Mission</h2>
<p>To expose coercive narcissistic patterns <em>at the level of language</em>, empower survivors with tools that restore agency, and prototype accountability systems that function without mobbing or dehumanization.</p>
<div class="pill" aria-hidden="true">Fieldnote-driven • Survivor-centered • Research-informed</div>
</article>
<article class="panel reveal">
<h2>What we do</h2>
<ul class="list">
<li><strong>Pattern Literacy:</strong> plain-language explainers that help you spot tactics early—love-bombing, DARVO, triangulation, erasure.</li>
<li><strong>Forensic Copy Reads:</strong> we analyze public posts or messages for red flags (no doxxing, no harassment).</li>
<li><strong>Fieldnotes & Essays:</strong> mythic + practical writing that translates research into lived clarity.</li>
<li><strong>Design for Accountability:</strong> architectures that make truth breathable—documentation flows, consented receipts, and culture-level hygiene.</li>
</ul>
</article>
</div>
</section><section class="container">
<div class="grid">
<article class="panel reveal">
<h2>Core Principles</h2>
<ul class="list">
<li><strong>Witness over War:</strong> illumination is not accusation; we show patterns, we dont hunt people.</li>
<li><strong>Boundaries are Love:</strong> clarity is care—for self, community, and even for those still trapped in shame loops.</li>
<li><strong>Receipts, not Rage:</strong> timelines and texts out-perform arguments. Document. Date. Context.</li>
<li><strong>Design the Atmosphere:</strong> build rooms where lies cannot breathe: clear rules, slow thinking, mutual consent.</li>
</ul>
</article>
<article class="panel reveal">
<h2>Patterns We Expose</h2>
<ul class="list">
<li>Erasure & revisionism</li>
<li>DARVO & gaslighting</li>
<li>Pathological mirroring & faux-empathy</li>
<li>Triangulation and manufactured fog</li>
<li>Grandiosity veneer; victim core</li>
</ul>
</article>
</div>
</section>
<section class="container">
<div class="grid">
<article class="panel reveal">
<h2>How We Work</h2>
<p>We publish iterative fieldnotes and guides, each one designed to be shared, taught, and remixed. Our cadence favors <em>clarity over virality</em>, and <em>repair over spectacle</em>. When we analyze public writing, we address <em>patterns</em>, not identities.</p>
<p>When communities ask for help, we co-design simple hygiene practices—calm channels, consented archiving, and de-escalation scripts.</p>
</article>
<article class="panel reveal">
<h2>Ethics & Safety</h2>
<ul class="list">
<li>No brigading, no stalking, no pile-ons.</li>
<li>We never publish private information or contact details.</li>
<li>We respect platform rules and local law.</li>
<li>We support trauma-informed moderation and referral to licensed care when appropriate.</li>
</ul>
</article>
</div>
</section>
<section class="container">
<div class="grid">
<article class="panel reveal">
<h2>Invite Us</h2>
<p>Workshops, community consults, or collaborative research. Tell us what you need and where your community struggles; well tailor a lightweight intervention.</p>
<p class="kicker">Email: <a href="#contact" onclick="document.getElementById('contact').scrollIntoView({behavior:'smooth'});">Contact form below</a></p>
</article>
<article class="panel reveal" id="contact">
<h2>Contact</h2>
<p>Share only what youre comfortable sharing. If this is an emergency, contact local services first.</p>
<form class="grid" onsubmit="event.preventDefault();
const btn=this.querySelector('button'); btn.disabled=true; btn.textContent='Sent — thank you';">
<input aria-label="Name" required placeholder="Your name" class="panel" style="padding:.8rem" />
<input aria-label="Email" required type="email" placeholder="Your email" class="panel" style="padding:.8rem" />
<textarea aria-label="Message" rows="4" placeholder="How can we help?" class="panel" style="padding:.8rem; grid-column:1/-1"></textarea>
<button class="pill" type="submit" style="justify-self:start">Send</button>
</form>
</article>
</div>
</section>
</main> <footer>
<div class="container">
© <span id="y"></span> Neutralizing Narcissism · Built with care. If you need help now, step outside, breathe, drink water, and call a friend you trust.
</div>
</footer> <script>
// Year
document.getElementById('y').textContent = new Date().getFullYear();
// Intersection-based reveal
const io = new IntersectionObserver((entries)=>{
for (const e of entries){ if(e.isIntersecting){ e.target.classList.add('is-visible'); io.unobserve(e.target);} }
}, {threshold:.15});
document.querySelectorAll('.reveal').forEach(el=>io.observe(el));
// Subtle particle drift (stars)
const c = document.getElementById('p');
const ctx = c.getContext('2d');
let w,h,px,parts=[]; function size(){ w=c.width=innerWidth; h=c.height=innerHeight; px=Math.max(w,h)/1000 }
size(); addEventListener('resize', size);
const COUNT = 120; // light
for(let i=0;i<COUNT;i++) parts.push({x:Math.random()*w, y:Math.random()*h, r: (Math.random()*1.8+0.4)*px, s: Math.random()*0.3+0.05});
function tick(){
ctx.clearRect(0,0,w,h);
for(const p of parts){
p.y += p.s; if(p.y>h) p.y = -10; // slow fall
ctx.beginPath(); ctx.arc(p.x,p.y,p.r,0,Math.PI*2);
ctx.fillStyle = 'rgba(241,230,185,0.12)'; ctx.fill();
}
requestAnimationFrame(tick);
}
if(!matchMedia('(prefers-reduced-motion: reduce)').matches){tick();}
</script></body>
</html>