Site Builder
Editing:
index.php
writable 0666
<!doctype html> <html lang="en" data-theme="amber"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width,initial-scale=1" /> <title>TruthCase™ — the case for real protection from non‑native EMFs | RF SAFE</title> <meta name="description" content="A single-page brief: design that actually reduces everyday RF exposure, the science behind non‑thermal bioeffects, and the policy roadmap (EPRC enforcement, Section 704 reform, LiFi indoors). Choose your phone and get two clean purchase buttons." /> <meta name="color-scheme" content="light dark" /> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link rel="preload" as="style" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700;800;900&display=swap"> <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700;800;900&display=swap"> <style> /* ========================= THEME ========================= */ :root{ --bg:#0b0b0c; --ink:#f6f6f7; --muted:#cfcfd4; --card:#121317; --border:#24262c; --shadow:0 18px 42px rgba(0,0,0,.45); --brand:#ffb020; --brand-ink:#ffe1a6; --cta:#ffb020; --cta-ink:#1a1309; --ok:#10b981; --warn:#f97316; --ring:rgba(255,176,32,.35); --soft:rgba(255,176,32,.10); --soft2:rgba(255,176,32,.08); --radius:20px; --font:Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial; } /* Optional light */ html[data-theme="light"]{ --bg:#f7f7fb; --ink:#0f1115; --muted:#5c6270; --card:#ffffff; --border:#e7e8ee; --shadow:0 18px 42px rgba(16,24,40,.08); --brand:#0ea5e9; --brand-ink:#075985; --cta:#f59e0b; --cta-ink:#1a1309; --ring:rgba(14,165,233,.35); --soft:rgba(14,165,233,.08); --soft2:rgba(245,158,11,.10); } /* Base */ *{box-sizing:border-box} html,body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.7 var(--font);letter-spacing:.2px} a{color:var(--brand);text-decoration:none} a:hover{text-decoration:underline} .wrap{max-width:1200px;margin:0 auto;padding:28px 18px 120px} .section{margin-top:44px;scroll-margin-top:84px} .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0} /* Nav */ .nav{position:sticky;top:0;z-index:70;backdrop-filter:saturate(1.1) blur(8px); background:color-mix(in oklab, var(--bg) 70%, transparent);border-bottom:1px solid var(--border)} .navin{max-width:1200px;margin:0 auto;display:flex;gap:12px;align-items:center;justify-content:space-between;padding:10px 18px} .brand{display:flex;gap:10px;align-items:center;font-weight:900;color:var(--brand-ink)} .dot{width:10px;height:10px;border-radius:50%;background:var(--brand);box-shadow:0 0 18px var(--ring)} .nav-right{display:flex;gap:10px;align-items:center} /* Buttons */ .btn{display:inline-flex;align-items:center;gap:10px;border-radius:999px;padding:11px 16px;font-weight:900;border:2px solid var(--brand); background:transparent;color:var(--brand);box-shadow:0 8px 20px var(--ring);transition:.2s;cursor:pointer} .btn:hover{transform:translateY(-1px)} .btn.primary{background:var(--cta);border-color:var(--cta);color:var(--cta-ink)} .btn.ghost{border-color:var(--border);color:var(--brand)} .btn.small{padding:8px 12px;font-size:.92rem} /* Hamburger — visible on all sizes */ .menu-btn{display:inline-flex;gap:10px;align-items:center;border:1px solid var(--border); background:color-mix(in oklab, var(--card) 85%, transparent); color:var(--brand);border-radius:12px;padding:10px 12px;cursor:pointer} .menu-icon{width:22px;height:3px;background:var(--brand);position:relative;border-radius:2px} .menu-icon::before,.menu-icon::after{content:"";position:absolute;left:0;width:22px;height:3px;background:var(--brand);border-radius:2px} .menu-icon::before{top:-7px}.menu-icon::after{top:7px} /* Mobile/desktop: hide top buy on small screens to keep it clean */ @media (max-width: 920px){ #openModalBtnTop{display:none} } /* Slide-down menu (used on all sizes) */ .menu-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.6);backdrop-filter:blur(2px);display:none;opacity:0;transition:.2s;z-index:71} .menu-panel{position:fixed;left:0;right:0;top:0;background:var(--card);border-bottom:1px solid var(--border); box-shadow:0 22px 60px rgba(0,0,0,.35);transform:translateY(-12px);opacity:0;transition:.2s;display:none;z-index:72} .menu-in{max-width:1200px;margin:0 auto;padding:16px 18px 20px} .menu-links{display:grid;gap:8px;margin-top:8px} .menu-actions{display:flex;gap:8px;align-items:center;justify-content:space-between;margin-top:8px;flex-wrap:wrap} .theme{display:flex;gap:6px;border:1px solid var(--border);border-radius:999px;padding:4px;background:color-mix(in oklab, var(--card) 80%, transparent)} .theme button{border:0;background:transparent;color:var(--muted);padding:6px 10px;border-radius:999px;cursor:pointer} .theme button[aria-pressed="true"]{background:var(--soft);color:var(--brand);font-weight:800} body.menu-open .menu-backdrop{display:block;opacity:1} body.menu-open .menu-panel{display:block;transform:translateY(0);opacity:1} /* Hero */ .hero{ margin-top:18px;background: radial-gradient(800px 300px at 10% -20%, var(--soft), transparent 60%), radial-gradient(800px 300px at 90% -40%, var(--soft2), transparent 60%), var(--card); border-radius:24px;box-shadow:var(--shadow);padding:28px } .eyebrow{display:inline-flex;align-items:center;gap:8px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;color:var(--brand); border:1px solid var(--border);background:color-mix(in oklab, var(--card) 90%, transparent);border-radius:999px;padding:6px 12px} h1{margin:10px 0 8px;font-size:clamp(28px,4.8vw,56px);line-height:1.06} .subtitle{color:var(--muted);max-width:980px} .badges{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px} .badge{font-size:12px;font-weight:900;border:1px solid var(--border);background:color-mix(in oklab, var(--card) 90%, transparent);color:var(--brand); border-radius:999px;padding:6px 10px} .cta-row{display:flex;gap:12px;flex-wrap:wrap;margin-top:16px} .trust{display:flex;gap:14px;flex-wrap:wrap;margin-top:14px} .trust .pill{display:flex;gap:8px;align-items:center;border:1px solid var(--border);background:color-mix(in oklab, var(--card) 90%, transparent); padding:8px 12px;border-radius:999px;color:var(--muted);font-weight:700} /* Cards, grids */ .card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px;border:1px solid var(--border)} .grid{display:grid;gap:18px} @media(min-width:980px){.cols-2{grid-template-columns:1fr 1fr}.cols-3{grid-template-columns:1fr 1fr 1fr}} .lead{font-size:1.05rem;color:color-mix(in oklab, var(--ink) 80%, var(--muted))} .slogan{border-left:4px solid var(--brand);padding-left:12px;margin:6px 0;font-weight:900;color:var(--ink)} .callout{background:color-mix(in oklab, var(--card) 92%, transparent);border:1px solid var(--border);border-radius:16px;padding:14px} /* TL;DR tiles (wrap fix) */ .stat{display:block;padding:14px;border:1px dashed var(--border);border-radius:14px;word-break:normal;white-space:normal} .stat b{display:inline-block;margin-right:10px;font-size:1.2rem;white-space:nowrap} /* Details */ details{border:1px solid var(--border);border-radius:14px;background:color-mix(in oklab, var(--card) 94%, transparent);padding:10px} summary{cursor:pointer;font-weight:900} summary::-webkit-details-marker{display:none} details[open]{background:color-mix(in oklab, var(--card) 88%, transparent)} /* Table */ .table{overflow:auto;border-radius:14px;border:1px solid var(--border)} table{width:100%;border-collapse:separate;border-spacing:0;min-width:860px} th,td{padding:12px 14px;border-bottom:1px solid var(--border);text-align:left;vertical-align:top} thead th{background:color-mix(in oklab, var(--card) 90%, transparent);font-size:14px;color:var(--brand)} /* Modal */ .modal-backdrop{position:fixed;inset:0;z-index:100; background:radial-gradient(900px 420px at 50% 10%, color-mix(in oklab, var(--brand) 20%, transparent), rgba(0,0,0,.78) 58%), rgba(0,0,0,.55); display:none;opacity:0;pointer-events:none;transition:opacity .25s ease} .modal{position:fixed;inset:0;z-index:101;display:none;place-items:center;pointer-events:none;opacity:0;transition:opacity .25s ease} .modal-panel{ width:min(740px,94vw);background:var(--card);border-radius:20px;border:1px solid color-mix(in oklab, var(--brand) 35%, var(--border)); box-shadow:0 22px 60px rgba(0,0,0,.35), 0 0 0 6px color-mix(in oklab, var(--brand) 12%, transparent); padding:18px;pointer-events:auto;transform:translateY(6px) scale(.985);transition:transform .25s ease} .modal-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px} .modal-title{font-weight:900;margin:0} .close{appearance:none;border:1px solid var(--border);background:color-mix(in oklab, var(--card) 85%, transparent);color:var(--brand); border-radius:999px;padding:8px 12px;font-weight:900;cursor:pointer} .form-row{display:grid;gap:14px;margin-top:12px} @media(min-width:700px){.form-row{grid-template-columns:1fr 1fr}} label{font-weight:800} select{width:100%;padding:12px;border:1px solid var(--border);border-radius:12px;background:color-mix(in oklab, var(--card) 80%, transparent); color:var(--ink);font-size:16px;box-shadow:0 8px 20px rgba(0,0,0,.08) inset} select:focus-visible{outline:2px solid color-mix(in oklab, var(--brand) 55%, transparent)} .modal-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px} .helper{font-size:.9rem;color:var(--muted)} .is-hidden{display:none !important} /* Modal open + mobile sheet */ body.modal-open .modal-backdrop{display:block;opacity:1;pointer-events:auto} body.modal-open .modal{display:grid;opacity:1;pointer-events:auto} body.modal-open .modal-panel{transform:translateY(0) scale(1)} body.modal-open .wrap, body.modal-open .nav{filter:blur(1.2px) saturate(.9);opacity:.9;transform:scale(.998);transition:.2s} @media (max-width:560px){ .modal{align-items:end} .modal-panel{width:100vw;max-height:85vh;overflow:auto;border-radius:16px 16px 0 0;padding:16px 16px 20px} .modal-panel::after{content:"";display:block;width:44px;height:4px;border-radius:999px; background:color-mix(in oklab, var(--ink) 40%, transparent);opacity:.5;margin:4px auto 8px} .modal-actions{position:sticky;bottom:-16px;background:linear-gradient(180deg, transparent 0%, color-mix(in oklab, var(--card) 96%, transparent) 42%); padding-top:10px;padding-bottom:4px} } /* Reveal */ .reveal{opacity:0;transform:translateY(12px);transition:all .5s ease} .reveal.in{opacity:1;transform:none} /* Sticky Mobile CTA */ .mobile-cta{position:fixed;left:0;right:0;bottom:10px;z-index:30;display:none;justify-content:center} @media (max-width:760px){ .mobile-cta{display:flex} } .mobile-cta .btn{box-shadow:0 18px 32px color-mix(in oklab, var(--cta) 30%, transparent)} </style> </head> <body> <a href="#main" class="sr-only">Skip to content</a> <!-- NAV --> <div class="nav" role="navigation" aria-label="Primary"> <div class="navin"> <div class="brand"> <span class="dot" aria-hidden="true"></span><span>RF SAFE • TruthCase™</span> </div> <div class="nav-right"> <button id="menuBtn" class="menu-btn" aria-haspopup="true" aria-expanded="false" aria-controls="menuPanel"> <span class="menu-icon" aria-hidden="true"></span> <span>Menu</span> </button> <button class="btn primary" id="openModalBtnTop" type="button">Select Your Phone</button> </div> </div> <!-- Global Menu --> <div id="menuBackdrop" class="menu-backdrop" hidden></div> <div id="menuPanel" class="menu-panel" hidden> <div class="menu-in"> <div class="menu-actions"> <div class="theme" role="group" aria-label="Theme"> <button id="tAmberM" aria-pressed="true">Amber</button> <button id="tLightM" aria-pressed="false">Light</button> </div> <button class="btn primary small" id="openModalBtnM" type="button">Select Your Phone</button> </div> <div class="menu-links"> <a class="btn ghost small" href="#tl">At a Glance</a> <a class="btn ghost small" href="#evidence">Evidence</a> <a class="btn ghost small" href="#law">Law & Mandate</a> <a class="btn ghost small" href="#policy">Policy Roadmap</a> <a class="btn ghost small" href="#how">How to Use</a> <a class="btn ghost small" href="#refs">References</a> </div> </div> </div> </div> <div id="main" class="wrap"> <!-- HERO --> <header class="hero reveal"> <span class="eyebrow">RF SAFE • Since the 1990s</span> <h1>TruthCase™ — the case for real protection from non‑native EMFs</h1> <p class="subtitle"> RF SAFE pioneered exposure‑reduction cases in the <strong>1990s</strong>. TruthCase™ is built to reduce everyday microwave exposure without gimmicks, and it lays out the full roadmap: <strong>design</strong> that obeys physics, <strong>usage</strong> that actually lowers dose, and <strong>policy</strong> that finally aligns technology with biology. </p> <div class="badges" role="list"> <span class="badge" role="listitem">Shield between you & phone</span> <span class="badge" role="listitem">No metal loops • No magnets</span> <span class="badge" role="listitem">Antenna‑aware & ultra‑thin</span> <span class="badge" role="listitem">Ohmmeter‑checkable shield</span> </div> <div class="trust" aria-label="Key assurances"> <span class="pill">First‑principles design</span> <span class="pill">Honest usage guidance</span> <span class="pill">Roadmap beyond products</span> </div> <div class="cta-row"> <button class="btn primary" id="openModalBtn2" type="button">Select Your Phone</button> <a class="btn" href="#truths">Why TruthCase™ is different</a> <a class="btn ghost" href="https://www.rfsafe.com/class/user-guide/" target="_blank" rel="noopener">Short Version</a> </div> </header> <!-- WHAT YOU NEED TO KNOW NOW --> <section class="section card reveal"> <h2 style="margin:0 0 8px">What you need to know now</h2> <div class="grid cols-2"> <div class="card"> <h3>Design choices change exposure</h3> <p>Magnets, metal loops, plate steel, and thick wallet stacks can <strong>detune antennas</strong> and make phones transmit harder. TruthCase™ avoids those traps and keeps the shield where it matters: <em>between you and the phone</em>.</p> </div> <div class="card"> <h3>Non‑thermal effects are real</h3> <p>The literature describes a coherent pathway: <strong>VGIC/VGCC disruption → Ca²⁺ dysregulation → oxidative stress → DNA damage</strong>. That’s why we reduce duty cycle and proximity wherever possible.</p> </div> <div class="card"> <h3>Law is lagging—by mandate, not choice</h3> <p><strong>Public Law 90‑602</strong> requires HHS to run an electronic product radiation control program. With NTP’s RF work shut down and no successor program, HHS is <strong>not</strong> fulfilling the statute. Section 704 preempts communities from citing health; it must be fixed.</p> </div> <div class="card"> <h3>There’s a clean exit path</h3> <p><strong>LiFi (IEEE 802.11bb)</strong> moves indoor connectivity to light, with privacy and no microwave burden. TruthCase™ helps now; the roadmap finishes the job.</p> </div> </div> </section> <!-- TL;DR --> <section id="tl" class="section card reveal"> <h2 style="margin:0 0 8px">Wireless radiation, cancer, fertility & mechanism: what the totality shows</h2> <div class="grid cols-2"> <div class="card"> <div class="stat"><b>1) Cancer signals</b> appear where exposure is highest: INTERPHONE heavy‑use ≈ <strong>+40% glioma risk</strong>. U.S. NTP + Italy’s Ramazzini: <strong>gliomas</strong> & <strong>heart schwannomas</strong> at levels once called “too low.” A WHO‑commissioned 2025 review graded animal evidence for those tumors <strong>High</strong>.</div> <div class="stat"><b>2) Male fertility</b>: WHO‑program meta‑analysis revised pooled estimate to <strong>OR 1.68</strong> for decreased pregnancy rate in experimental studies; consistent oxidative stress & DNA damage at non‑thermal levels.</div> </div> <div class="card"> <div class="stat"><b>3) Mechanism</b>: <strong>VGIC/VGCC disruption → Ca²⁺ → ROS → DNA damage</strong>. Large reviews report ~<strong>95%</strong> of relevant experiments show oxidative‑stress effects at non‑thermal intensities.</div> <div class="stat"><b>4) Population signal</b>: Denmark’s registry shows a multi‑year rise in brain/CNS tumors through 2023 (steepest 2021→2023). Not proof of causation; definitely not “no signal.”</div> </div> </div> <p class="lead" style="margin-top:8px">U.S. limits are still <strong>thermal‑only (1996)</strong>. The fix is <strong>law and oversight</strong>: enforce EPRC (Public Law 90‑602), restore local authority, and move indoor connectivity toward LiFi.</p> </section> <!-- DIFFERENT ON PURPOSE --> <section class="section card reveal"> <h2 style="margin:0 0 8px">Different on purpose</h2> <p class="lead">Most “anti‑radiation” cases add convenience hardware that raises output. TruthCase™ follows physics.</p> <div class="grid cols-3"> <div class="card"> <h3>Design</h3> <p>Directional shielding <strong>between you & phone</strong>. <strong>No metal loops, magnets, or plate steel.</strong> Ear‑side continuity.</p> </div> <div class="card"> <h3>Usage</h3> <p>Habits that matter: call posture, pocket orientation, night distance, turning off radios you don’t need.</p> </div> <div class="card"> <h3>Roadmap</h3> <p><strong>Light‑based networking</strong> and updated law—so homes and schools rely more on light and less on microwaves.</p> </div> </div> </section> <!-- THE FOUR TRUTHS --> <section id="truths" class="section card reveal"> <h2 style="margin:0 0 6px">The four truths the market ignores</h2> <details open> <summary>Truth #1 — Unshielded ear‑side holes break protection where you need it most</summary> <p>Large ear‑aligned apertures are a direct path for higher‑frequency signals and defeat continuity in calls. TruthCase™ keeps a shielded ear‑side path.</p> </details> <details> <summary>Truth #2 — Detachable magnets & steel plates make phones shout</summary> <p>They <strong>detune</strong> antennas. Power‑control ramps <strong>up</strong> output to hold the link—more exposure, not less. TruthCase™ excludes magnets, plates, and thick wallet stacks.</p> </details> <details> <summary>Truth #3 — Metal loops and hardware near antennas detune the system</summary> <p>Conductive loops near radiators alter near‑field behavior and degrade efficiency. Phones respond by transmitting harder. TruthCase™ has <strong>no metal loops</strong> and stays thin where radios live.</p> </details> <details> <summary>Truth #4 — “99% protection” fabric numbers ≠ your life</summary> <p>A swatch is not your duty cycle. Reduction comes from shield placement, antenna behavior, and how long radios are active. We refuse “99% everywhere.”</p> </details> </section> <!-- EVIDENCE --> <section id="evidence" class="section card reveal"> <h2 style="margin:0 0 6px">The evidence, straight</h2> <div class="grid cols-2"> <div class="card"> <h3>Cancer</h3> <ul> <li><strong>INTERPHONE</strong>: top decile (≥1,640 h) ≈ OR 1.40 for glioma (~30 min/day over 10 years).</li> <li><strong>NTP</strong>: clear evidence of heart schwannomas (male rats); some for gliomas; DNA damage.</li> <li><strong>Ramazzini</strong>: far‑field ~0.1 W/kg → more heart schwannomas and glial tumors.</li> <li><strong>WHO‑commissioned 2025</strong>: animal evidence <strong>High</strong> for glioma & heart schwannoma.</li> </ul> </div> <div class="card"> <h3>Reproduction & development</h3> <ul> <li><strong>Male fertility</strong>: pooled OR <strong>1.68</strong> for decreased pregnancy rate; consistent motility/morphology detriments and oxidative stress at non‑thermal exposures.</li> <li><strong>Prenatal/offspring</strong>: fetal/placental oxidative stress; behavioral changes in exposed offspring across multiple labs.</li> <li><strong>Mechanistic match</strong>: mitochondrial strain, hormone signaling disruption, ROS‑mediated DNA damage.</li> </ul> </div> <div class="card"> <h3>Mechanism</h3> <p><strong>Polarized, pulsed RFR → VGIC/VGCC interference → Ca²⁺ influx → ROS → DNA damage</strong>. Explains tumor types, fertility effects, and prenatal outcomes.</p> </div> <div class="card"> <h3>Population</h3> <p>Denmark’s registry shows increasing brain/CNS tumor rates through 2023, with the sharpest jump 2021→2023. Public health acts on converging evidence; it doesn’t wait for a mythical single “perfect” study.</p> </div> </div> </section> <!-- LAW & MANDATE --> <section id="law" class="section card reveal"> <h2 style="margin:0 0 6px">Law & mandate: this is not optional</h2> <div class="grid cols-3"> <div class="card"> <h3>Public Law 90‑602 (EPRC)</h3> <p><strong>Mandate:</strong> HHS <em>shall</em> run an electronic product radiation control program—research <em>and</em> performance standards for electronic products (including wireless). With NTP’s RF work shut down and no successor program, HHS is <strong>not</strong> fulfilling the statute.</p> </div> <div class="card"> <h3>Fix (now)</h3> <ul> <li>Reconstitute a national RF research program with non‑thermal endpoints.</li> <li>Promulgate performance standards (duty‑cycle controls, labeling, child margins).</li> <li>Seat RF health oversight at <strong>HHS/FDA/NIH with EPA</strong>; keep FCC on spectrum engineering.</li> </ul> </div> <div class="card"> <h3>Section 704 (1996)</h3> <p>Preempts communities from citing health in siting decisions if FCC limits are met—functionally muting the First & Tenth Amendments for nearly three decades. It must be repealed/repaired.</p> </div> </div> <div class="card" style="margin-top:12px"> <h3>We had the evidence before 1996</h3> <ul> <li>1971 U.S. Navy bibliography → hundreds of RF bioeffects papers.</li> <li>Allan Frey → microwave hearing & blood‑brain barrier effects.</li> <li>Arthur Guy → foundational RF dosimetry.</li> <li>Lai & Singh (1995/96) → DNA strand breaks at low intensities.</li> <li>CTIA/WTR era → internal “war‑gaming” of unfavorable findings.</li> </ul> <p class="slogan">Non‑thermal effects were documented. Thermal‑only limits remain a policy choice, not a scientific necessity.</p> </div> </section> <!-- POLICY ROADMAP --> <section id="policy" class="section card reveal"> <h2 style="margin:0 0 6px">Clean Ether roadmap</h2> <div class="grid cols-3"> <div class="card"> <h3>Home & school (now)</h3> <ul> <li>Phones off‑body; speaker/air‑tubes; shorten on‑head calls.</li> <li>Wire it where possible; <strong>LiFi (802.11bb)</strong> for indoor wireless.</li> <li>Keep routers away from sleeping areas; schedule overnight off.</li> <li>Prefer text/async; download then offline for media.</li> </ul> </div> <div class="card"> <h3>Institutions</h3> <ul> <li>LiFi for classrooms, libraries, clinics, aircraft cabins.</li> <li>Buffer RF facilities from play areas; shut school small‑cells after hours.</li> <li>Buy low‑power APs with sleep modes by default.</li> </ul> </div> <div class="card"> <h3>Nation</h3> <ul> <li>Enforce EPRC; restart federal RF research now.</li> <li>Set biologically protective standards (pulsation/modulation, cumulative dose, child margins).</li> <li>Repeal/repair Section 704; restore community authority.</li> <li>Adopt a <strong>Clean Ether Act</strong>: optical indoors by default, RF for mobility.</li> </ul> </div> </div> <div class="cta-row" style="margin-top:12px"> <a class="btn" href="https://www.usa.gov/elected-officials" target="_blank" rel="noopener">Find your lawmakers</a> <button id="copyLetter" class="btn ghost" type="button">Copy sample letter</button> </div> <pre id="letter" class="card" style="white-space:pre-wrap;margin-top:10px"> Subject: Enforce EPRC (Public Law 90‑602), restore local authority, and move RF health oversight to HHS/EPA Please: 1) Direct HHS to immediately execute its non‑discretionary EPRC mandate (21 U.S.C. §360hh–ss): research and performance standards for electronic product radiation, including wireless. With NTP’s RF program shut down and no successor executing EPRC scope, HHS is not in compliance. 2) Move RF health oversight to HHS/FDA/NIH with EPA as co‑regulator. Keep FCC on spectrum engineering and auctions, not health. 3) Repeal/repair Section 704 of the 1996 Telecom Act to restore First & Tenth Amendment rights so communities can protect schools and neighborhoods. 4) Modernize RF exposure standards to address pulsed/modulated signals, cumulative exposures, children’s susceptibility, and whole‑body low‑level fields. Mandate LiFi (IEEE 802.11bb) for indoor networks where cost‑effective, reserving RF for mobility. The evidence is sufficient to act: high‑exposure epidemiology, two concordant animal bioassays, a WHO‑commissioned review rating animal evidence High for glioma and heart schwannoma, robust oxidative‑stress/DNA‑damage mechanisms, and rising population signals. </pre> </section> <!-- HOW TO USE --> <section id="how" class="section grid cols-2 reveal"> <div class="card"> <h3>How to use TruthCase™</h3> <ul> <li><strong>Calls:</strong> answer/start, then close the cover <em>toward your head</em>; use speaker or wired for long calls.</li> <li><strong>Pocket:</strong> shielded cover toward your body (back pocket often best).</li> <li><strong>Night:</strong> distance or airplane mode; keep phones away from heads and children’s beds.</li> <li><strong>Duty cycle:</strong> turn off radios you don’t need (Wi‑Fi, Bluetooth, hotspot).</li> </ul> <p class="lead">Protection = design + practice. TruthCase™ enables the practice to work.</p> </div> <div class="card"> <h3>Why thin matters</h3> <p>Over‑thick “armor” near antenna zones degrades efficiency and makes phones transmit harder. TruthCase™ stays deliberately slim and antenna‑aware so the phone can do the same job with less output.</p> <p class="slogan"><strong>Not anti‑radiation. Pro‑truth.</strong></p> </div> </section> <!-- VERIFY IN 60 SECONDS --> <section class="section card reveal"> <h2 style="margin:0 0 6px">Verify your shield in 60 seconds</h2> <div class="grid cols-2"> <div class="card"> <h3>What you need</h3> <ul> <li>Any basic ohmmeter / multimeter</li> <li>Your TruthCase™ (front cover open)</li> </ul> </div> <div class="card"> <h3>Steps</h3> <ol> <li>Touch one probe to the exposed test point at the ear‑side speaker aperture.</li> <li>Touch the other probe to a second point on the cover’s shielding layer.</li> <li>You should see a **low‑resistance** path (conductive mesh continuity). That’s your verifiable shield.</li> </ol> </div> </div> </section> <!-- TRUTH STANDARD --> <section class="section card reveal"> <h2 style="margin:0 0 6px">The Truth Standard™</h2> <div class="table"> <table> <thead><tr><th>Principle</th><th>Meaning</th><th>TruthCase™ Position</th></tr></thead> <tbody> <tr> <td><strong>Shield the person, not the phone</strong></td> <td>Place the shield <em>between</em> you & the source during calls and pocket carry.</td> <td>Front cover toward head/body; directional use is the point.</td> </tr> <tr> <td><strong>Keep antennas efficient</strong></td> <td>Avoid obstructing/detuning radiators (which triggers power boosts).</td> <td><strong>No metal loops, no magnets, no plate steel</strong>; thin near antenna zones.</td> </tr> <tr> <td><strong>Continuity at the ear</strong></td> <td>Don’t break the shield path with a large ear‑aligned aperture.</td> <td>Shielded ear‑side path; continuity in call posture.</td> </tr> <tr> <td><strong>Field behavior > fabric %</strong></td> <td>Measure outcomes in real use, not swatch percentages.</td> <td>No “99% everywhere” claims; we teach correct use.</td> </tr> <tr> <td><strong>Verifiable materials</strong></td> <td>Let people confirm a conductive shield path.</td> <td>Ohmmeter‑checkable access in the front cover.</td> </tr> </tbody> </table> </div> </section> <!-- FAQ --> <section class="section card reveal"> <h2 style="margin:0 0 6px">Quick answers</h2> <div class="grid cols-2"> <div class="card"> <h3>Does it “block 99%”?</h3> <p>No slogans. Real‑world reduction depends on placement, antenna behavior, and duty cycle. We teach the practice that lowers exposure; we don’t promise swatch numbers.</p> </div> <div class="card"> <h3>Why avoid magnets/loops/plates?</h3> <p>They obstruct/detune antennas; the phone compensates by transmitting harder. That raises exposure—exactly what we’re reducing.</p> </div> <div class="card"> <h3>Is TruthCase™ QuantaCase®?</h3> <p>Yes. <strong>TruthCase™ is QuantaCase® by RF SAFE</strong>—built to expose design flaws, reduce exposure today, and lead the policy shift we need.</p> </div> <div class="card"> <h3>Where do the links go?</h3> <p>Pick a model to see <strong>Buy on Amazon</strong> (if an ASIN exists) and <strong>Buy Now</strong> (direct). Everything is from <code>truthcases.json</code> so affiliates can re‑use this page.</p> </div> </div> </section> <!-- REFERENCES --> <section id="refs" class="section card reveal"> <h2 style="margin:0 0 6px">References & links</h2> <ol> <li>INTERPHONE heavy‑use ≈30 min/day; glioma OR 1.40: <a target="_blank" rel="noopener" href="https://www.iarc.who.int/wp-content/uploads/2018/07/pr200_E.pdf">IARC</a></li> <li>Corporate‑subscription exclusion in billing cohorts: <a target="_blank" rel="noopener" href="https://pmc.ncbi.nlm.nih.gov/articles/PMC3226506/">EHP / PMC</a></li> <li>NTP cell‑phone RFR program: <a target="_blank" rel="noopener" href="https://ntp.niehs.nih.gov/research/topics/cellphones">NTP</a></li> <li>Ramazzini (Falcioni 2018): <a target="_blank" rel="noopener" href="https://pubmed.ncbi.nlm.nih.gov/29530389/">PubMed</a> • <a target="_blank" rel="noopener" href="https://www.sciencedirect.com/science/article/abs/pii/S0013935118300367">ScienceDirect</a></li> <li>WHO‑commissioned animal review (Mevissen 2025): <a target="_blank" rel="noopener" href="https://doris.bfs.de/jspui/bitstream/urn:nbn:de:0221-2025070953051/2/SL_Mevissen_2025_EffectsOfRadiofrequency_Eng.pdf">BfS Spotlight</a> • DOI: <a target="_blank" rel="noopener" href="https://doi.org/10.1016/j.envint.2025.109482">Environment International</a></li> <li>Male fertility SR (2024) + corrigendum (2025): <a target="_blank" rel="noopener" href="https://pubmed.ncbi.nlm.nih.gov/38492496/">PubMed</a> • <a target="_blank" rel="noopener" href="https://www.sciencedirect.com/science/article/pii/S0160412025002004">ScienceDirect</a></li> <li>Pregnancy/birth outcomes SR + BfS note: <a target="_blank" rel="noopener" href="https://pubmed.ncbi.nlm.nih.gov/37729852/">PubMed</a> • <a target="_blank" rel="noopener" href="https://doris.bfs.de/jspui/bitstream/urn:nbn:de:0221-2024061244261/5/SL_Cordelli_2024_EffectsOfRadiofrequency_Eng.pdf">BfS</a></li> <li>Oxidative stress review: <a target="_blank" rel="noopener" href="https://pubmed.ncbi.nlm.nih.gov/26151230/">Yakymenko 2015 (PubMed)</a></li> <li>Mechanism review (Int J Oncol 2021): <a target="_blank" rel="noopener" href="https://pubmed.ncbi.nlm.nih.gov/34617575/">PubMed</a></li> <li>Mechanistic synthesis (Frontiers 2025): <a target="_blank" rel="noopener" href="https://www.frontiersin.org/journals/public-health/articles/10.3389/fpubh.2025.1585441/full">Full text</a></li> <li>Denmark CNS trends: <a target="_blank" rel="noopener" href="https://sundhedsdatastyrelsen.dk/media/16526/Kraefttilfaelde%202023.pdf">2023 PDF</a> • <a target="_blank" rel="noopener" href="https://sundhedsdatastyrelsen.dk/Media/638863629605245206/Kraefttilf%C3%A6lde_2024.pdf">2024 PDF</a></li> <li>47 U.S.C. §332(c)(7) (Section 704): <a target="_blank" rel="noopener" href="https://www.law.cornell.edu/uscode/text/47/332">Cornell LII</a></li> <li>Public Law 90‑602 + FDA EPRC: <a target="_blank" rel="noopener" href="https://www.congress.gov/90/statute/STATUTE-82/STATUTE-82-Pg1173.pdf">Congress.gov</a> • <a target="_blank" rel="noopener" href="https://www.fda.gov/radiation-emitting-products/electronic-product-radiation-control-program">FDA EPRC</a></li> <li>EHT v. FCC (2021 remand): <a target="_blank" rel="noopener" href="https://www.fcc.gov/document/dc-circuit-decision-environmental-health-trust-v-fcc">FCC page</a> • <a target="_blank" rel="noopener" href="https://law.justia.com/cases/federal/appellate-courts/cadc/20-1025/20-1025-2021-08-13.html">Opinion</a></li> <li>NTP program status coverage: <a target="_blank" rel="noopener" href="https://microwavenews.com/news-center/ntp-quits-rf">Microwave News</a></li> <li>LiFi standard: <a target="_blank" rel="noopener" href="https://standards.ieee.org/ieee/802.11bb/11055/">IEEE 802.11bb</a></li> </ol> <p class="muted">Educational content only. Not medical, legal, or engineering advice.</p> </section> <!-- CTA --> <section class="section card reveal" style="text-align:center"> <h2 style="margin:0 0 6px">The only case for your phone should be a TruthCase™</h2> <p style="max-width:880px;margin:0 auto"> A case should <strong>reduce exposure in real use</strong>—without making your phone transmit harder and without “99% everywhere” claims. TruthCase™ is built for <strong>physics</strong>, for <strong>people</strong>, and for a <strong>future</strong> where indoor connectivity relies more on light and less on microwaves. <br><br><em>TruthCase™ is QuantaCase® by RF SAFE.</em> </p> <div class="cta-row" style="justify-content:center"> <button class="btn primary" id="openModalBtn3" type="button">Select Your Phone</button> </div> </section> <footer style="text-align:center;color:var(--muted);font-size:14px"> <p><strong>RF SAFE</strong> introduced exposure‑reduction cases in the 1990s and continues to set a first‑principles standard: no metal loops, no magnets or plate steel, a shielded ear‑side aperture, antenna‑aware thin design, and ohmmeter‑verified shielding—paired with honest usage guidance.</p> <p>© RF SAFE — This page focuses on reducing RF (microwave) exposure in everyday device use.</p> </footer> </div> <!-- Sticky Mobile CTA --> <div class="mobile-cta" aria-hidden="false"> <button class="btn primary" id="openModalBtn4" type="button" aria-label="Select your phone (quick access)">Select Your Phone</button> </div> <!-- MODAL --> <div class="modal-backdrop" id="backdrop" aria-hidden="true"></div> <div class="modal" id="modal" aria-hidden="true"> <div class="modal-panel" role="dialog" aria-modal="true" aria-labelledby="modalTitle"> <div class="modal-head"> <h3 id="modalTitle" class="modal-title">Select Your Phone</h3> <button class="close" id="closeModalBtn" type="button" aria-label="Close">✕</button> </div> <p id="announce" class="sr-only" aria-live="polite"></p> <div class="form-row" id="manuRow" style="display:none"> <div> <label for="manuSelect">Manufacturer</label> <select id="manuSelect" aria-describedby="manuHelp"></select> <div id="manuHelp" class="helper">Choose a brand to filter models.</div> </div> <div id="modelCol" class="is-hidden"> <label for="modelSelect">Model</label> <select id="modelSelect" aria-describedby="modelHelp" disabled></select> <div id="modelHelp" class="helper">Pick your specific phone model.</div> </div> </div> <div class="form-row" id="modelOnlyRow" style="display:none"> <div style="grid-column:1/-1"> <label for="modelSelectSolo">Model</label> <select id="modelSelectSolo" aria-describedby="modelOnlyHelp"></select> <div id="modelOnlyHelp" class="helper">Models load from <code>truthcases.json</code>.</div> </div> </div> <div class="modal-actions" id="buyButtons" style="display:none"> <a class="btn" id="buyAmazonBtn" href="#" target="_blank" rel="noopener">Buy on Amazon</a> <a class="btn primary" id="buyDirectBtn" href="#" target="_blank" rel="noopener">Buy Now</a> </div> </div> </div> <!-- Toast --> <div id="toast" class="toast" role="status" aria-live="polite" style="position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:var(--card);color:var(--ink);border:1px solid var(--border);border-radius:10px;padding:10px 14px;box-shadow:var(--shadow);opacity:0;pointer-events:none;transition:.2s">Copied to clipboard.</div> <script> /* ---------- Utilities ---------- */ const $ = s => document.querySelector(s); const $$ = s => Array.from(document.querySelectorAll(s)); const norm = s => (s||'').toString().toLowerCase().replace(/\s+/g,' ').trim(); function unique(arr){ return [...new Set(arr)]; } function getQS(name){ try{ return new URL(location.href).searchParams.get(name); }catch{return null;} } function appendParam(urlStr, key, val){ if(!val) return urlStr; try{ const u=new URL(urlStr,location.href); u.searchParams.set(key,val); return u.toString(); } catch{ const sep=urlStr.includes('?')?'&':'?'; return urlStr+sep+encodeURIComponent(key)+'='+encodeURIComponent(val); } } /* ---------- Theme from menu (persistent) ---------- */ const tAmberM = $('#tAmberM'), tLightM = $('#tLightM'); function setTheme(mode){ document.documentElement.setAttribute('data-theme', mode); localStorage.setItem('truth_theme', mode); [tAmberM].forEach(b=>b && b.setAttribute('aria-pressed', String(mode==='amber'))); [tLightM].forEach(b=>b && b.setAttribute('aria-pressed', String(mode==='light'))); } (function initTheme(){ const saved = localStorage.getItem('truth_theme'); setTheme(saved || 'amber'); })(); [tAmberM].forEach(b=>b && b.addEventListener('click', ()=>setTheme('amber'))); [tLightM].forEach(b=>b && b.addEventListener('click', ()=>setTheme('light'))); /* ---------- Global menu ---------- */ const menuBtn = $('#menuBtn'), menuPanel = $('#menuPanel'), menuBackdrop = $('#menuBackdrop'); let lastMenuFocus = null; function openMenu(){ lastMenuFocus = document.activeElement; document.body.classList.add('menu-open'); menuBtn.setAttribute('aria-expanded','true'); menuPanel.hidden = false; menuBackdrop.hidden = false; menuPanel.querySelector('button, a')?.focus(); } function closeMenu(){ document.body.classList.remove('menu-open'); menuBtn.setAttribute('aria-expanded','false'); menuPanel.hidden = true; menuBackdrop.hidden = true; lastMenuFocus?.focus(); } menuBtn.addEventListener('click', ()=> (document.body.classList.contains('menu-open')?closeMenu():openMenu())); menuBackdrop.addEventListener('click', closeMenu); menuPanel.addEventListener('click', e=>{ if(e.target.tagName==='A' || e.target.id==='openModalBtnM') closeMenu(); }); document.addEventListener('keydown', e=>{ if(e.key==='Escape' && document.body.classList.contains('menu-open')) closeMenu(); }); /* ---------- Modal open/close with focus trap ---------- */ const openModalBtns = ['#openModalBtnTop','#openModalBtn2','#openModalBtn3','#openModalBtn4','#openModalBtnM'].map(sel=>$(sel)).filter(Boolean); const backdrop = $('#backdrop'); const modal = $('#modal'); const closeModalBtn = $('#closeModalBtn'); const focusable = `a[href],button:not([disabled]),select:not([disabled]),input:not([disabled]),[tabindex]:not([tabindex="-1"])`; let lastFocused = null; function trapFocus(e){ if(e.key !== 'Tab') return; const items = Array.from(modal.querySelectorAll(focusable)).filter(el=>el.offsetParent!==null); if(!items.length) return; const first = items[0], last = items[items.length - 1]; if(e.shiftKey && document.activeElement===first){ last.focus(); e.preventDefault(); } else if(!e.shiftKey && document.activeElement===last){ first.focus(); e.preventDefault(); } } function openModal(){ lastFocused = document.activeElement; document.body.classList.add('modal-open'); document.body.style.overflow='hidden'; backdrop.style.display='block'; modal.style.display='grid'; requestAnimationFrame(()=>{ backdrop.style.opacity='1'; modal.style.opacity='1'; }); modal.setAttribute('aria-hidden','false'); setTimeout(()=>{ (manuRow.style.display!=='none' ? manuSelect : modelSelectSolo).focus(); },30); document.addEventListener('keydown', trapFocus); } function closeModal(){ document.removeEventListener('keydown', trapFocus); document.body.classList.remove('modal-open'); document.body.style.overflow=''; backdrop.style.opacity='0'; modal.style.opacity='0'; modal.setAttribute('aria-hidden','true'); setTimeout(()=>{ backdrop.style.display='none'; modal.style.display='none'; }, 200); lastFocused?.focus(); } backdrop.addEventListener('click', closeModal); closeModalBtn.addEventListener('click', closeModal); openModalBtns.forEach(b=>b && b.addEventListener('click', openModal)); document.addEventListener('keydown', e=>{ if(e.key==='Escape' && modal.getAttribute('aria-hidden')==='false') closeModal(); }); /* ---------- State ---------- */ let DATA = { settings:{}, products:[] }; let manufacturers = []; let selectedManufacturer = ''; let filteredProducts = []; let affiliateRef = ''; let amazonTag = ''; /* ---------- DOM refs ---------- */ const manuRow = $('#manuRow'); const manuSelect = $('#manuSelect'); const modelCol = $('#modelCol'); const modelOnlyRow = $('#modelOnlyRow'); const modelSelect = $('#modelSelect'); const modelSelectSolo = $('#modelSelectSolo'); const buyButtons = $('#buyButtons'); const buyDirectBtn = $('#buyDirectBtn'); const buyAmazonBtn = $('#buyAmazonBtn'); const announceEl = $('#announce'); /* ---------- Load JSON ---------- */ async function loadData(){ try{ const r = await fetch('truthcases.json',{cache:'no-store'}); if(!r.ok) throw new Error('HTTP '+r.status); const j = await r.json(); DATA = Object.assign({settings:{}, products:[]}, j||{}); if(!Array.isArray(DATA.products) || !DATA.products.length) throw new Error('No products in truthcases.json'); }catch(e){ console.warn('truthcases.json missing/invalid. Using demo.', e); DATA = { settings:{ defaultAffiliateParam:'ref', defaultAmazonTagParam:'tag' }, products:[ { manufacturer:'Apple', title:'TruthCase™ for iPhone 15 Pro Max (Black)', sku:'QC-IP15PM-BLK', asin:'B0DEMO1234', price:69.99, salePrice:59.99, buyUrl:'https://www.rfsafe.com/product/truthcase-iphone-15-pro-max/', affiliateId:'RFS_DEFAULT', amazonTag:'rfsafe-20' }, { manufacturer:'Samsung', title:'TruthCase™ for Galaxy S24 Ultra (Black)', sku:'QC-S24U-BLK', asin:'', price:69.99, salePrice:59.99, buyUrl:'https://www.rfsafe.com/product/truthcase-s24-ultra/', affiliateId:'RFS_DEFAULT', amazonTag:'' } ] }; } } /* ---------- Build selects ---------- */ function buildManufacturers(){ manufacturers = unique((DATA.products||[]).map(p => (p.manufacturer||'').trim()).filter(Boolean)); } function renderManufacturerSelect(){ manuSelect.innerHTML=''; const ph = document.createElement('option'); ph.value=''; ph.textContent='Choose manufacturer…'; manuSelect.appendChild(ph); manufacturers.forEach(m=>{ const o=document.createElement('option'); o.value=m; o.textContent=m; manuSelect.appendChild(o); }); manuSelect.value = selectedManufacturer || ''; } function renderModelSelect(list, el){ el.innerHTML=''; const ph = document.createElement('option'); ph.value=''; ph.textContent='Choose model…'; el.appendChild(ph); list.forEach((p,i)=>{ const o=document.createElement('option'); o.value=String(i); o.textContent=p.title || `Model ${i+1}`; el.appendChild(o); }); el.value=''; } /* ---------- Links ---------- */ function currentAffiliateRef(p){ return (affiliateRef || p.affiliateId || '').trim(); } function currentAmazonTag(p){ return (amazonTag || p.amazonTag || '').trim(); } function buildDirectUrl(p){ const base=(p.buyUrl||'').trim(); if(!base) return ''; const key=(DATA.settings && DATA.settings.defaultAffiliateParam) || 'ref'; return appendParam(base, key, currentAffiliateRef(p) || ''); } function buildAmazonUrl(p){ const asin=(p.asin||'').trim(); if(!asin) return ''; const key=(DATA.settings && DATA.settings.defaultAmazonTagParam) || 'tag'; const tag=currentAmazonTag(p); const base=`https://www.amazon.com/dp/${encodeURIComponent(asin)}`; return tag ? appendParam(base, key, tag) : base; } /* ---------- Selection logic ---------- */ const announce = msg => { const el=$('#announce'); if(el) el.textContent=msg||''; }; manuSelect.addEventListener('change', ()=>{ selectedManufacturer = manuSelect.value; filteredProducts = selectedManufacturer ? DATA.products.filter(p => (p.manufacturer||'').trim()===selectedManufacturer) : DATA.products.slice(); if(selectedManufacturer){ $('#modelCol').classList.remove('is-hidden'); modelSelect.disabled=false; renderModelSelect(filteredProducts, modelSelect); announce(`Manufacturer ${selectedManufacturer} selected. Choose a model.`); }else{ $('#modelCol').classList.add('is-hidden'); modelSelect.disabled=true; modelSelect.innerHTML=''; announce(`Manufacturer cleared. Please select a manufacturer.`); } buyButtons.style.display='none'; }); modelSelect.addEventListener('change', ()=>{ const idx=parseInt(modelSelect.value,10); if(Number.isFinite(idx) && idx>=0){ const p=filteredProducts[idx]; const dir=buildDirectUrl(p); const amz=buildAmazonUrl(p); if(amz){ buyAmazonBtn.href=amz; buyAmazonBtn.style.display='inline-flex'; } else { buyAmazonBtn.style.display='none'; } if(dir){ buyDirectBtn.href=dir; buyDirectBtn.style.display='inline-flex'; } else { buyDirectBtn.style.display='none'; } buyButtons.style.display=(amz||dir)?'flex':'none'; announce(`Model ${p.title} selected.`); }else{ buyButtons.style.display='none'; } }); modelSelectSolo.addEventListener('change', ()=>{ const idx=parseInt(modelSelectSolo.value,10); if(Number.isFinite(idx) && idx>=0){ const p=DATA.products[idx]; const dir=buildDirectUrl(p); const amz=buildAmazonUrl(p); if(amz){ buyAmazonBtn.href=amz; buyAmazonBtn.style.display='inline-flex'; } else { buyAmazonBtn.style.display='none'; } if(dir){ buyDirectBtn.href=dir; buyDirectBtn.style.display='inline-flex'; } else { buyDirectBtn.style.display='none'; } buyButtons.style.display=(amz||dir)?'flex':'none'; announce(`Model ${p.title} selected.`); }else{ buyButtons.style.display='none'; } }); /* ---------- Deep link ---------- */ function pickFromDeepLink(){ const qSku = getQS('sku'); const qAsin = getQS('asin'); const qManu = getQS('manu') || getQS('manufacturer'); const qModel= getQS('model') || getQS('title'); if(qSku){ const p = DATA.products.find(pr => pr.sku && norm(pr.sku)===norm(qSku)); if(p) return p; } if(qAsin){ const p = DATA.products.find(pr => pr.asin && norm(pr.asin)===norm(qAsin)); if(p) return p; } if(qModel){ let p = DATA.products.find(pr => norm(pr.title)===norm(qModel)); if(!p) p = DATA.products.find(pr => norm(pr.title).includes(norm(qModel))); if(p) return p; } if(qManu) return { __manuOnly:true, manufacturer:qManu }; return null; } /* ---------- Copy letter ---------- */ const toast = $('#toast'); $('#copyLetter').addEventListener('click', async ()=>{ try{ const txt = $('#letter').innerText.trim(); await navigator.clipboard.writeText(txt); toast.style.opacity='1'; toast.style.pointerEvents='auto'; setTimeout(()=>{ toast.style.opacity='0'; toast.style.pointerEvents='none'; }, 1500); }catch(err){ alert('Copy failed. Select and copy manually.'); } }); /* ---------- Init ---------- */ (async function init(){ // Affiliate overrides from URL (persist quietly) const qRef=getQS('ref'); const qTag=getQS('atag'); if(qRef) localStorage.setItem('truthcase_ref', qRef); if(qTag) localStorage.setItem('truthcase_atag', qTag); affiliateRef = qRef || localStorage.getItem('truthcase_ref') || ''; amazonTag = qTag || localStorage.getItem('truthcase_atag') || ''; await loadData(); buildManufacturers(); if(manufacturers.length){ manuRow.style.display=''; modelOnlyRow.style.display='none'; renderManufacturerSelect(); $('#modelCol').classList.add('is-hidden'); modelSelect.disabled=true; }else{ manuRow.style.display='none'; modelOnlyRow.style.display=''; renderModelSelect(DATA.products, modelSelectSolo); } // Deep‑link auto‑selection (with manufacturer auto‑switch) const pick = pickFromDeepLink(); if(pick){ openModal(); if(pick.__manuOnly){ const manuName = manufacturers.find(m => norm(m)===norm(pick.manufacturer)) || pick.manufacturer; selectedManufacturer = manuName || ''; if(manufacturers.length){ manuSelect.value=selectedManufacturer; manuSelect.dispatchEvent(new Event('change')); } buyButtons.style.display='none'; }else{ if(manufacturers.length){ const manuName = pick.manufacturer || manufacturers.find(m => norm(m)===norm(pick.manufacturer)) || ''; manuSelect.value = manuName; manuSelect.dispatchEvent(new Event('change')); const idx = filteredProducts.findIndex(pr => norm(pr.title)===norm(pick.title)); const idx2 = idx>=0 ? idx : filteredProducts.findIndex(pr => norm(pr.title).includes(norm(pick.title))); if(idx2>=0){ modelSelect.value=String(idx2); modelSelect.dispatchEvent(new Event('change')); } }else{ const i = DATA.products.findIndex(pr => norm(pr.title)===norm(pick.title)); if(i>=0){ modelSelectSolo.value=String(i); modelSelectSolo.dispatchEvent(new Event('change')); } } } } // Reveal animation const io=new IntersectionObserver(es=>es.forEach(e=>{ if(e.isIntersecting){ e.target.classList.add('in'); io.unobserve(e.target);} }),{threshold:.12}); $$('.reveal').forEach(el=>io.observe(el)); })(); </script> </body> </html>
Save changes
Create folder
writable 0777
Create
Cancel