91³Ô¹ÏÍø

Watch CBS News

Day 3 testimony details evidence, Tanner Horner's mental health claims, attempts to "cut a deal" in Athena Strand murder trial

Testimony and interview footage on Day 3 of Tanner Horner's capital murder trial pulled back the curtain on key evidence presented to jurors. 

Jurors heard new details about how investigators found Athena Strand, including testimony that she was found unclothed and that items of her clothing were later recovered.

There was a high level of detail in how investigators built this case, from recovering out‑of‑state video from the FedEx vehicle contracting company to using cell data to pinpoint locations. 

"We did a geofence for T-Mobile," Taylor Paige, a special agent with the FBI in Dallas, testified. "That device became of interest for us. Secondly, there was a phone number from Mr. Horner that was also identified and became more relevant as Command Post started to unfold."

Prosecutors also examined Horner's home and personal life.

snapshot-2026-04-09t220407-419.jpg

In the video shown to the jury, he shared with investigators that he lived with his fiancée in a shed, just steps away from the main home where his mom and grandmother lived. Photos shown in court revealed the area behind that shed, where investigators began focusing their search — and where they say key evidence was found.

Investigators documented items of clothing, including a pair of children's underwear and socks, and blue jeans — items that matched what Athena was wearing the day she disappeared. When asked why he removed her clothes, Horner allegedly said it was for "humiliation," that he thought it was "funny."

When investigators pressed Horner on motive, he said that stress was "getting too much" and insisted he's "not a bad person" who has "done the right thing" his whole life, describing Athena as being in the "wrong place at the wrong time."

Horner cites "Zero," mental health struggles

Testimony also highlighted Horner's shifting behavior: at times discussing his family, but when pressed about his actions, he deflected blame onto "Zero" and avoided accountability.   

Horner described "Zero" as a "little devil on my shoulder," saying it developed more recently and often blamed "Zero" for his actions. According to court testimony, Horner repeatedly separated himself from the crime, saying, "I didn't do this, but he did," referring to "Zero."

He also said that he felt like events were a "bad dream" or "nightmare," referencing confusion, memory gaps, and comparing it to PTSD. At one point said he was "in trouble for something I don't remember."  

When asked if he had told investigators everything during an interview, Horner responded, "It's not Zero, it's Tanner," but continued describing the situation as if he were "in the backseat watching it happen," a pattern investigators point to as Horner distancing himself and deflecting responsibility. 

Testimony also revealed that Horner attempted self-harm in jail and tried to hang himself while in custody. At one point, Horner asked investigators to shoot him and referenced harming himself.

In May 2023, Horner attempted suicide while in the Wise County jail, and he referenced prior suicidal ideations.

Horner's attempts to "cut a deal"

Testimony revealed that Horner at one point attempted to "cut a deal," while investigators continued questioning him. 

Horner asked for an ankle monitor and to spend Christmas with his family in exchange for telling the truth; investigators told him no promises or guarantees could be made. He also told investigators that his main reason for talking is to see his son, repeatedly emphasizing wanting "one last Christmas." 

Horner said he had been off medication, emotional, and crying, and that he's "hurting for her and her family," but continued circling back to negotiating a deal.

Horner pleaded guilty to capital murder and aggravated kidnapping just moments before the trial began Tuesday. Despite his guilty plea, Horner still faces the death penalty as the punishment phase continues. 

View CBS News In
CBS News App Open
Chrome Safari Continue
const link = doc.createElement('link'); link.rel = 'stylesheet'; link.href = '/fly/fly/bundles/cbsnewscontent/css/cmp-banner.min.css?v=50747257b890e014813016b79ece0fb2'; doc.head.appendChild(link); doc.body.innerHTML = CONSENT_MESSAGE; } else { el.insertAdjacentHTML('afterend', CONSENT_MESSAGE); } }); } function hidePrivacyMessage() { // Remove from the main document document.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); // Remove from inside any iframes document.querySelectorAll('iframe').forEach(iframe => { const doc = iframe.contentDocument || iframe.contentWindow.document; doc.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); }); } function activateGatedScripts() { // Handle both new format (cmp-gated-script) and old OneTrust/Ketch format (optanon-category-4) const gatedScripts = Array.from(document.querySelectorAll('script.cmp-gated-script, script.optanon-category-4')); // Activate scripts sequentially with a small delay to avoid timing issues let delay = 0; gatedScripts.forEach(function(placeholder, index) { setTimeout(function() { // Skip if already processed if (placeholder.hasAttribute('data-cmp-processed')) { return; } placeholder.setAttribute('data-cmp-processed', 'true'); const newScript = document.createElement('script'); newScript.type = 'text/javascript'; // Try new format first (data-cmp-src), then fall back to old format (data-src) const src = placeholder.getAttribute('data-cmp-src') || placeholder.getAttribute('data-src'); if (src) { newScript.src = src; } else if (placeholder.textContent) { // Inline script - just copy the content newScript.textContent = placeholder.textContent; } // Handle new format attributes (data-cmp-attrs) - for both inline and external scripts const attrs = placeholder.getAttribute('data-cmp-attrs'); if (attrs) { const tempDiv = document.createElement('div'); tempDiv.innerHTML = '
<\/div>'; const tempAttrs = tempDiv.firstChild.attributes; for (let i = 0; i < tempAttrs.length; i++) { // For external scripts, allow defer/async. For inline scripts, skip them (not valid) if (src || (tempAttrs[i].name !== 'async' && tempAttrs[i].name !== 'defer')) { newScript.setAttribute(tempAttrs[i].name, tempAttrs[i].value); } } } // Copy other attributes from old OneTrust format for (let i = 0; i < placeholder.attributes.length; i++) { const attr = placeholder.attributes[i]; // Skip attributes we've already handled or don't want to copy if (!['class', 'data-src', 'data-type', 'data-cmp-src', 'data-cmp-attrs', 'data-cmp-processed', 'type', 'async', 'defer', 'src'].includes(attr.name)) { newScript.setAttribute(attr.name, attr.value); } } placeholder.parentNode.replaceChild(newScript, placeholder); // If external script, manually trigger window.onload handlers after it loads // This handles widgets that use window.onload for initialization if (src) { newScript.addEventListener('load', function() { // If page already loaded and script set a new onload handler, trigger it if (document.readyState === 'complete' && window.onload) { const originalOnload = window.onload; window.onload = null; // Clear temporarily to prevent loops originalOnload(); // Execute the handler } }); } }, delay); delay += 500; // 500ms delay between each script to allow full loading }); } cbsoptanon.onScriptsReady(function(cmp) { cmp.ot.targetingAllowed(function(allowed) { if (!allowed) { showPrivacyMessage(); } else { activateGatedScripts(); } }); cmp.ot.awaitInitialConsent(function(consent_model) { cmp.ot.addOnConsentChangedHandler(function() { cmp.ot.targetingAllowed(function(allowed) { if (allowed) { hidePrivacyMessage(); activateGatedScripts(); } else { showPrivacyMessage(); } }); }); }); });