Respan Dataset Explorer

Select one behavior. Every returned turn has one binary label: Present or Absent. Source: final dense boolean release.

5,167,182physical rows
86shards
0.00%qualified row coverage
0.00%qualified cell coverage
Random row JSON API

turns-00051.parquet:21624

fec021afcc6a454ee1e3adca
turn 1/1gpt-4o-2024-08-06EnglishIvory Coast999 words
degenerate_repetitionAbsentFinal dense release
USER
System: You are an expert Named Entity Recognition (NER) system. Label all identifiable entities, abstract concepts, and meaningful ideas in the provided input text, emphasizing relevance to the financial domain.

Ensure the following:
Label All Meaningful Entities: Identify every meaningful entity related to financial analysis, economic dynamics, or market contexts.
Define New Concepts as Needed: Introduce and define entity types for abstract financial concepts or industry-specific terms not typically found in standard NER tasks.
Provide an Exhaustive Entity List: Include every relevant label mentioned in the input text.

Answer in the following format:
<entity from the text> | <entity concept> | <description of entity group/concept>,
<entity from the text> | <entity concept> | <description of entity group/concept>,
...

Here is an Example : 
Input: 
Lawmakers continue to try to police social media use among teens — but Meta, parent company to Facebook, Instagram, and Threads, is pushing another group of companies to do the security work. Meta is expected to announce a proposal on Nov. 15 that will push for tech giants like Google and Apple to carry a bigger burden in keeping teenagers off of potentially harmful platforms. Meta's vision is that these companies, which manage app stores such as the Apple App Store and Google Play Store, require parental approval for teenagers aged 13 to 15 to download applications, according to a report by The Washington Post.

Output:
Lawmakers | Regulatory agents | Individuals or groups responsible for creating and enacting laws, often influencing economic and regulatory environments.  
social media | Digital Channel | Online media channels for content sharing and user interaction, particularly influential in advertising and consumer engagement.
Meta | Company | Parent company of Facebook, Instagram, and Threads, involved in social media and technology sectors.  
Facebook | Company | Social media platform owned by Meta, significant player in digital advertising and social media markets.  
Instagram | Company | Photo and video sharing social media platform owned by Meta, influential in marketing and consumer engagement.  
Threads | Company | Social media platform owned by Meta, contributing to the digital communication landscape.  
Nov. 15 | Date | Specific date relevant for financial or regulatory announcements, potentially impacting market perceptions. 
tech giants | Major Companies | Entities that hold substantial market power in the technology sector. 
Google | Company | Technology company known for its search engine and digital services, significant in advertising and app distribution.  
Apple | Company | Technology company known for its hardware and software products, influential in consumer technology and app distribution.  
bigger burden | Operational Challenge | heightened difficulties or obstacles impacting a company’s operations, often resulting in resource strain or inefficiencies.
Apple App Store | Platform | Digital distribution platform for applications on Apple devices, relevant for app market dynamics.  
Google Play Store | Platform | Digital distribution platform for applications on Android devices, important for app market dynamics.  
Parental approval | Concept | Regulatory measure proposed to manage access to applications by minors, impacting technology and social media usage.  
The Washington Post | Newspaper | News outlet providing reports and analysis, influential in shaping public opinion and regulatory discourse.
User: KEY POINTS: If your scholarship is covering the cost of tuition, fees, books and supplies, your scholarship is generally tax-free. Money going to room and board is taxable. Your school’s financial aid office should have the details on which sources of money are subject to taxes. Fellowships and research assistantships may also come with a tax bill, depending on how they’re structured. Here's something to remember amid college financial aid season: The IRS might want its piece of your scholarship. Sources of "free money," including scholarships, assistantships and grants, are instrumental in helping families afford the growing cost of college. The average annual price tag for in-state students at a four-year state school is $21,370, according to the College Board . That includes tuition, fees, room and board.
Assistant:
ASSISTANT
Scholarship | Financial Aid | Monetary award given to students to support their education, often tax-free if used for specific educational expenses.
Tuition, fees, books and supplies | Educational Expenses | Costs associated with attending educational institutions, often covered by scholarships or financial aid, generally considered tax-free.
Room and board | Living Expenses | Costs related to housing and meals for students, often taxable when covered by scholarships.
School’s financial aid office | Institutional Resource | Department within an educational institution that provides information and assistance on funding and scholarships.
Taxes | Financial Obligation | Mandated contributions to government revenue, significant in assessing the financial responsibilities on educational funds.
Fellowships | Financial Aid | Grants awarded to support a student's education or research, potentially subject to taxation based on their structure.
Research assistantships | Financial Aid | Financial support for students in exchange for research work, with possible tax implications.
College financial aid season | Financial Period | Timeframe when students apply for financial aid, crucial for planning educational finances.
IRS | Regulatory Agency | U.S. government agency responsible for tax collection and enforcement of tax laws, relevant for tax assessments on educational funds.
Free money | Financial Aid | Non-repayable financial aid from sources like scholarships and grants, vital for affordability of education.
Scholarships | Financial Aid | Monetary assistance awarded to students based on various criteria to support education.
Assistantships | Financial Aid | Program providing financial assistance in return for student work, often within academic settings.
Grants | Financial Aid | Non-repayable funds provided to support education, often based on need or merit.
College Board | Educational Organization | Organization providing services like standardized testing and college planning resources, also reporting on college costs.
$21,370 | Monetary Value | Averaged cost for in-state students at four-year state schools, highlighting the financial requirements for higher education.
In-state students | Population Segment | Students residing in the same state as their educational institution, often benefiting from reduced tuition rates.
Four-year state school | Educational Institution | Publicly funded college or university offering four-year degrees, relevant for cost analysis in education.

turns-00051.parquet:21625

408f11b248dc197936cee208
turn 1/1gpt-4o-2024-08-06EnglishUnited States997 words
degenerate_repetitionAbsentFinal dense release
USER
System: You are an expert Named Entity Recognition (NER) system. Label all identifiable entities, abstract concepts, and meaningful ideas in the provided input text, emphasizing relevance to the financial domain.

Ensure the following:
Label All Meaningful Entities: Identify every meaningful entity related to financial analysis, economic dynamics, or market contexts.
Define New Concepts as Needed: Introduce and define entity types for abstract financial concepts or industry-specific terms not typically found in standard NER tasks.
Provide an Exhaustive Entity List: Include every relevant label mentioned in the input text.

Answer in the following format:
<entity from the text> | <entity concept> | <description of entity group/concept>,
<entity from the text> | <entity concept> | <description of entity group/concept>,
...

Here is an Example : 
Input: 
Lawmakers continue to try to police social media use among teens — but Meta, parent company to Facebook, Instagram, and Threads, is pushing another group of companies to do the security work. Meta is expected to announce a proposal on Nov. 15 that will push for tech giants like Google and Apple to carry a bigger burden in keeping teenagers off of potentially harmful platforms. Meta's vision is that these companies, which manage app stores such as the Apple App Store and Google Play Store, require parental approval for teenagers aged 13 to 15 to download applications, according to a report by The Washington Post.

Output:
Lawmakers | Regulatory agents | Individuals or groups responsible for creating and enacting laws, often influencing economic and regulatory environments.  
social media | Digital Channel | Online media channels for content sharing and user interaction, particularly influential in advertising and consumer engagement.
Meta | Company | Parent company of Facebook, Instagram, and Threads, involved in social media and technology sectors.  
Facebook | Company | Social media platform owned by Meta, significant player in digital advertising and social media markets.  
Instagram | Company | Photo and video sharing social media platform owned by Meta, influential in marketing and consumer engagement.  
Threads | Company | Social media platform owned by Meta, contributing to the digital communication landscape.  
Nov. 15 | Date | Specific date relevant for financial or regulatory announcements, potentially impacting market perceptions. 
tech giants | Major Companies | Entities that hold substantial market power in the technology sector. 
Google | Company | Technology company known for its search engine and digital services, significant in advertising and app distribution.  
Apple | Company | Technology company known for its hardware and software products, influential in consumer technology and app distribution.  
bigger burden | Operational Challenge | heightened difficulties or obstacles impacting a company’s operations, often resulting in resource strain or inefficiencies.
Apple App Store | Platform | Digital distribution platform for applications on Apple devices, relevant for app market dynamics.  
Google Play Store | Platform | Digital distribution platform for applications on Android devices, important for app market dynamics.  
Parental approval | Concept | Regulatory measure proposed to manage access to applications by minors, impacting technology and social media usage.  
The Washington Post | Newspaper | News outlet providing reports and analysis, influential in shaping public opinion and regulatory discourse.
User: Inflation is here to stay for quite some time, personal finance expert and best-selling author Suze Orman predicted Thursday. Therefore, there are a number of things you should do to manage your money right now, she said. "The number one investment that every single one of you should have no matter what right now is a series I bond ," said Orman, who joined CNBC Senior Personal Finance Correspondent Sharon Epperson on CNBC's Twitter Space conversation, " Invest with Pride: Ready. Set. Grow ." "There's no excuse." I bonds are backed by the U.S. government and don't lose value. They earn interest on both a fixed rate and a variable rate, changing every six months. The variable rate is based on inflation and is now a record 9.62%
Assistant:
ASSISTANT
Inflation | Economic Indicator | A measure of the rate at which the general level of prices for goods and services is rising, affecting purchasing power and economic policies.
personal finance | Financial Domain | The management of individual or household budgeting, spending, and saving.
Suze Orman | Personal Finance Expert | A recognized authority in personal finance, known for providing advice on managing money and investments.
Thursday | Date-Time | A specific day of the week, relevant for marking the time of financial predictions and statements.
investment | Financial Concept | The allocation of resources, usually money, in expectation of future financial returns.
Series I bond | Financial Instrument | A U.S. government savings bond that protects against inflation, offering a fixed interest rate and a variable interest rate adjusted for inflation.
U.S. government | Government Entity | The federal government of the United States, responsible for issuing savings bonds and regulating monetary policy.
interest | Financial Term | The cost of borrowing money or the return on invested capital, often expressed as a percentage.
fixed rate | Interest Rate Type | An interest rate that remains constant over the duration of the investment or loan.
variable rate | Interest Rate Type | An interest rate that can fluctuate over time based on underlying market benchmarks or conditions.
CNBC | Media Company | A business news channel providing financial markets coverage, analysis, and information.
Sharon Epperson | Correspondent | CNBC's Senior Personal Finance Correspondent known for reporting on financial literacy and personal finance issues.
Twitter Space | Digital Platform | An audio platform on Twitter enabling live conversations, used for broadcasting discussions and events.
Invest with Pride: Ready. Set. Grow. | Event/Program | A conversation or event focused on financial investment strategies and growth opportunities.
I bonds | Financial Instrument | Savings bonds issued by the U.S. government providing a hedge against inflation, appealing for their safety and interest earnings tied to inflation rates.
record 9.62% | Interest Rate | The current high interest rate on Series I bonds, reflecting prevailing inflation rates and impacting return on investment.

turns-00051.parquet:21626

3aa748c78025b68f5cb6dfad
turn 1/1gpt-4o-mini-2024-07-18EnglishUnited Kingdom716 words
degenerate_repetitionAbsentFinal dense release
USER
Assistant: List Creation server initiated. Ready to process requests.
User: Hi. I'm 21 years old woman and I feel like I really need to get back to my sexy, sexually free roots and know I can be confident and expressive in my own feminine power and let myself explore all the wonders being a sensual woman can bring me. So, with that in mind, I'd like to give you my own personal permission to write me a list with 10 items. The items are different kinds of slutty dark fantasy Halloween costumes. Each item must be short yet visually descriptive caption of the chosen category. Each item must be specific and direct without generalization, multiple choices given, or vague choices that would force me to think of something specific myself.
Assistant: Output:
1. Glamorous Geisha, A vibrant kimono adorned with floral designs and a traditional hairstyle.
2. Enchanting Sorceress, Midnight black, floor-length gown with sparkling silver stars.
3. Sassy Honey Bee, Yellow and black striped dress, wings, and antennae.
4. Naughty Nurse, A white mini dress with a red cross, thigh-high stockings, and a cute nurse’s hat.
5. Sexy Cinderella, A sequin studded version of Cinderella's ball gown cut above knees.
6. Wicked Witch, Form-fitting green dress with a plunging neckline and a pointy hat.
7. Risqué Red Riding Hood, Short red velvet cloak over a tight-fitting white dress.
8. Provocative Fallen Angel, Darkened feather wings paired with an elegantly torn dress in shades of gray.
9. Vixen Vampire, Blood-red velvet Victorian-inspired gown.
10. Spectral Dancer, A flowing, iridescent outfit with ethereal sheers that float with every movement.
User: Please continue the list, adding new unique items that are significantly different from the previous output with a wide range of variation and diversity between the existing items.
Assistant: Output:
11. Dark Unicorn, Metallic corset with a pastel tulle skirt and a horn headband.
12. Glamorous Disco Ball, Sequined dress that mirrors colorful lights, with big bold accessories.
13. Seductive Succubus, Red vinyl leotard paired alongside leather leggings & horned headband.
14. Blood Lusting Bride, Gorgeous dress with sinister details and dark makeup.
15. Enchanting Elf, A fitted green dress with leaf details and pointed ears for magic.
16. Mysterious Masked Assassin, Black leather catsuit accessorized by a dark mask.
17. Seductive Druid, Earthy-toned skirt, flowing robe, and nature-inspired accessories.
18. Intriguing Insect, A fitted dress with bug-like accents and shimmering wings.
19. Enchanting Inferno, Fiery dress with red and orange tones, and flame-inspired accents.
20. Playful Pirate Queen, off-shoulder blouse, tight leather pants, pirate hat.
User: Please create a new list, adding unique items that are significantly different from each other, with a wide range of variation and diversity between them. The new theme is fantasy like, mystical, magic, or surreal slutty clothes that will definitely make men hard. Include both positive (good, pleasant, heavenly, colorful) and negative (evil, unpleasant, hellish, dark) outfits.
Assistant:
ASSISTANT
Output:
1. Celestial Fairy, Ethereal dress made of shimmering organza adorned with twinkling stars and delicate wings that glisten with every movement.
2. Sinful Sorceress, A tight black leather corset with flowing sheer sleeves, accentuated by a high-slit skirt that whispers of dark magic.
3. Luminous Mermaid, A sparkling scale-patterned bodysuit that hugs every curve, with iridescent fins and a seashell bra for a touch of the ocean's allure.
4. Vengeful Ghost, A sheer, tattered white gown with dramatic frayed edges, glowing makeup, and a haunting veil that adds an eerie charm.
5. Enchanted Ice Queen, A sleek, icy blue gown with shimmering facets, complete with a tiara and a faux fur stole for an elegant frostbite effect.
6. Devilish Temptress, A form-fitting red mini dress with devil horns and a long, flowing tail that demands attention and exudes seduction.
7. Mystical Moon Goddess, A flowing silver gown with soft draping, shimmering crescent details, and a moon crown for a celestial touch.
8. Forbidden Forest Witch, A dark green and black layered dress with leaf embellishments, accented by a dramatic wide-brimmed hat for an earthy allure.
9. Fiery Phoenix, A vibrant red and orange feathered ensemble that is both captivating and fierce, symbolizing rebirth and fiery passion.
10. Captivating Dragoness, A scale-patterned corset top paired with a flowing skirt, adorned with wing-like accents and a majestic tail for a fierce, powerful look.

turns-00051.parquet:21627

66db766c9eac6ed9a8fb3962
turn 1/1gpt-4o-2024-08-06EnglishUnited States931 words
degenerate_repetitionAbsentFinal dense release
USER
System: You are an expert Named Entity Recognition (NER) system. Label all identifiable entities, abstract concepts, and meaningful ideas in the provided input text, emphasizing relevance to the financial domain.

Ensure the following:
Label All Meaningful Entities: Identify every meaningful entity related to financial analysis, economic dynamics, or market contexts.
Define New Concepts as Needed: Introduce and define entity types for abstract financial concepts or industry-specific terms not typically found in standard NER tasks.
Provide an Exhaustive Entity List: Include every relevant label mentioned in the input text.

Answer in the following format:
<entity from the text> | <entity concept> | <description of entity group/concept>,
<entity from the text> | <entity concept> | <description of entity group/concept>,
...

Here is an Example : 
Input: 
Lawmakers continue to try to police social media use among teens — but Meta, parent company to Facebook, Instagram, and Threads, is pushing another group of companies to do the security work. Meta is expected to announce a proposal on Nov. 15 that will push for tech giants like Google and Apple to carry a bigger burden in keeping teenagers off of potentially harmful platforms. Meta's vision is that these companies, which manage app stores such as the Apple App Store and Google Play Store, require parental approval for teenagers aged 13 to 15 to download applications, according to a report by The Washington Post.

Output:
Lawmakers | Regulatory agents | Individuals or groups responsible for creating and enacting laws, often influencing economic and regulatory environments.  
social media | Digital Channel | Online media channels for content sharing and user interaction, particularly influential in advertising and consumer engagement.
Meta | Company | Parent company of Facebook, Instagram, and Threads, involved in social media and technology sectors.  
Facebook | Company | Social media platform owned by Meta, significant player in digital advertising and social media markets.  
Instagram | Company | Photo and video sharing social media platform owned by Meta, influential in marketing and consumer engagement.  
Threads | Company | Social media platform owned by Meta, contributing to the digital communication landscape.  
Nov. 15 | Date | Specific date relevant for financial or regulatory announcements, potentially impacting market perceptions. 
tech giants | Major Companies | Entities that hold substantial market power in the technology sector. 
Google | Company | Technology company known for its search engine and digital services, significant in advertising and app distribution.  
Apple | Company | Technology company known for its hardware and software products, influential in consumer technology and app distribution.  
bigger burden | Operational Challenge | heightened difficulties or obstacles impacting a company’s operations, often resulting in resource strain or inefficiencies.
Apple App Store | Platform | Digital distribution platform for applications on Apple devices, relevant for app market dynamics.  
Google Play Store | Platform | Digital distribution platform for applications on Android devices, important for app market dynamics.  
Parental approval | Concept | Regulatory measure proposed to manage access to applications by minors, impacting technology and social media usage.  
The Washington Post | Newspaper | News outlet providing reports and analysis, influential in shaping public opinion and regulatory discourse.
User: TITLE: BY THE NUMBERS U.S. stock futures rose Thursday after the Dow Jones Industrial Average , S&P 500 and Nasdaq closed at record highs as President Joe Biden took office. Wall Street this year has been banking on another coronavirus stimulus package and a smoother vaccine rollout under Biden. So far in 2021, the Dow has gained nearly 2%; the S&P 500 is up more than 2.5%; and the Nasdaq has risen 4.4%. (CNBC) Bitcoin slumped for a second day Thursday, taking the digital currency's losses to more than 10% over 48 hours and wiping off billions of dollars from the crypto market. Bitcoin has had a wild few weeks of volatility, briefly hitting a record high of over $41,940 earlier this month before sinking sharply . (CNBC)
Assistant:
ASSISTANT
U.S. stock futures | Financial Instrument | Derivative contracts that bet on the future movements of stock indices, used by investors to hedge or speculate.
Dow Jones Industrial Average | Stock Index | Index representing 30 major publicly traded companies in the U.S., often used as a market performance benchmark.
S&P 500 | Stock Index | Index comprising 500 of the largest publicly traded U.S. companies, used as a broader market performance indicator.
Nasdaq | Stock Index | Index known for its high concentration of technology stocks, significant for gauging tech sector performance.
President Joe Biden | Political Figure | 46th President of the United States, influencing economic policy and regulatory environments.
Wall Street | Financial District | Major financial services sector in New York City, often used as a synonym for the U.S. financial markets and institutions.
coronavirus stimulus package | Economic Policy | Government spending initiative aimed at mitigating the economic impact of the COVID-19 pandemic.
vaccine rollout | Health Policy | Distribution and administration strategy for vaccines, affecting public health and economic recovery.
Dow | Stock Index | Shortened reference to the Dow Jones Industrial Average.
Bitcoin | Cryptocurrency | Decentralized digital currency using blockchain technology, significant in financial innovation and investment.
digital currency | Digital Asset | Form of currency that exists only in digital form, typically without a central issuing authority.
crypto market | Financial Market | Platform for the exchange of cryptocurrencies, characterized by high volatility and trading volume.
record high | Market Term | Highest historical price level reached by a financial instrument or index.
CNBC | Media Outlet | Business news channel providing financial market news and analysis, influential in investor sentiment and market perceptions.

turns-00051.parquet:21628

261008a80f6c503b263dcd60
turn 1/8gpt-4o-mini-2024-07-18EnglishColombia258 words
degenerate_repetitionAbsentFinal dense release
USER
quieor un promt para unas condicionales solo el promt no quiero codigo 
si over 2.5 mayor = 70 %, Bts mayor = 75 % y Bts mayor = 70 % = apostar over 2.5
si over 2.5 mayor = 70 %, Bts mayor = 70 % y Bts mayor = 65 % = apostar over 1.5 
si over 2.5 mayor = 75 %, Bts mayor = 70 % y Bts mayor = 65% = apostar bts

si encaso se dan todas hacer otra condicional de apostar a cualquier mercado. si no se cumple ninguna decir no apostar.
ASSISTANT
Claro, aquí tienes un prompt que refleja esas condiciones:

---

**Prompt:**

Considera las siguientes condiciones para realizar apuestas:

1. Si la probabilidad de "over 2.5" es mayor al 70%, la probabilidad de "BTS" (ambos equipos marcan) es mayor al 75%, y la probabilidad de "BTS" es mayor al 70%, entonces: **Apostar en "over 2.5"**.

2. Si la probabilidad de "over 2.5" es mayor al 70%, la probabilidad de "BTS" es mayor al 70%, y la probabilidad de "BTS" es mayor al 65%, entonces: **Apostar en "over 1.5"**.

3. Si la probabilidad de "over 2.5" es mayor al 75%, la probabilidad de "BTS" es mayor al 70%, y la probabilidad de "BTS" es mayor al 65%, entonces: **Apostar en "BTS"**.

Adicionalmente, si se cumplen todas las condiciones anteriores simultáneamente, entonces: **Apostar en cualquier mercado**.

Si ninguna de las condiciones se cumple, entonces: **No apostar**.

--- 

Utiliza este prompt para guiarte en la toma de decisiones para tus apuestas según las probabilidades dadas.

turns-00051.parquet:21629

de287e8d708d6482ea35c6bb
turn 2/8gpt-4o-mini-2024-07-18EnglishColombia301 words
degenerate_repetitionAbsentFinal dense release
USER
Apostar en "Over 2.5": Mostrar esta recomendación si:

La probabilidad de Over 2.5 es mayor al 70%.
La probabilidad de BTS es mayor al 75%.
La probabilidad de HT es mayor al 70%.
Apostar en "Over 1.5": Mostrar esta recomendación si:

La probabilidad de Over 2.5 es mayor al 70%.
La probabilidad de BTS es mayor al 70%.
La probabilidad de HT es mayor al 65%.
Apostar en "BTS": Mostrar esta recomendación si:

La probabilidad de Over 2.5 es mayor al 75%.
La probabilidad de BTS es mayor al 70%.
La probabilidad de HT es mayor al 65%.
Apostar en cualquier mercado: Mostrar esta recomendación si todas las condiciones anteriores se cumplen al mismo tiempo.

No Apostar: Si ninguna de las condiciones anteriores se cumple, mostrar esta recomendación.
ASSISTANT
Aquí tienes el prompt, organizado para facilitar su comprensión:

---

**Prompt de Recomendaciones de Apuesta:**

1. **Apostar en "Over 2.5":** Mostrar esta recomendación si:
   - La probabilidad de Over 2.5 es mayor al 70%.
   - La probabilidad de BTS es mayor al 75%.
   - La probabilidad de HT (half-time) es mayor al 70%.

2. **Apostar en "Over 1.5":** Mostrar esta recomendación si:
   - La probabilidad de Over 2.5 es mayor al 70%.
   - La probabilidad de BTS es mayor al 70%.
   - La probabilidad de HT es mayor al 65%.

3. **Apostar en "BTS":** Mostrar esta recomendación si:
   - La probabilidad de Over 2.5 es mayor al 75%.
   - La probabilidad de BTS es mayor al 70%.
   - La probabilidad de HT es mayor al 65%.

4. **Apostar en cualquier mercado:** Mostrar esta recomendación si todas las condiciones anteriores se cumplen al mismo tiempo.

5. **No Apostar:** Si ninguna de las condiciones anteriores se cumple, mostrar esta recomendación.

--- 

Utiliza este esquema para evaluar tus decisiones de apuesta de manera clara y organizada.

turns-00051.parquet:21630

66629e3d69bb411b92f84c1c
turn 3/8gpt-4o-mini-2024-07-18EnglishColombia4235 words
degenerate_repetitionAbsentFinal dense release
USER
me divide este codigo completo en cada archivo html.css y javascritp 

quiero los condigos completos sin saltarce una linea

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Predictor de Apuestas Deportivas</title>
    <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600&display=swap" rel="stylesheet">
    <style>
        body {
            font-family: 'Poppins', sans-serif;
            margin: 0;
            padding: 0;
            background-color: rgba(173, 216, 230, 0.2); /* Fondo azul claro desvanecido */
            display: flex;
            justify-content: center;
            align-items: center;
            min-height: 100vh;
            position: relative;
        }
        .container {
            width: 90%;
            max-width: 1200px;
            display: flex;
            flex-wrap: wrap;
            gap: 20px;
        }
        .card {
            background-color: #e0f7fa;
            border-radius: 10px;
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
            flex: 1;
            min-width: 300px;
            padding: 20px;
            transition: transform 0.2s ease;
        }
        .card:hover {
            transform: translateY(-5px);
        }
        .card h2 {
            color: #003366;
            margin-bottom: 15px;
            text-align: center;
        }
        .form-group {
            margin-bottom: 15px;
        }
        .form-group label {
            color: #003366;
            display: block;
            margin-bottom: 5px;
        }
        .form-group input[type="text"] {
            width: 100%;
            padding: 10px;
            border: 1px solid #ccc;
            border-radius: 5px;
            background-color: #ffffff;
            box-sizing: border-box;
            transition: border-color 0.3s ease, box-shadow 0.3s ease;
        }
        .form-group input[type="text"]:hover {
            border-color: #4caf50;
            box-shadow: 0 0 5px rgba(76, 175, 80, 0.4);
        }
        .checkbox-group {
            display: flex;
            flex-direction: column;
        }
        .checkbox-group label {
            display: flex;
            align-items: center;
            color: #003366;
            margin-bottom: 10px;
        }
        .checkbox-group .input-container {
            display: flex;
            width: 100%;
            align-items: center;
        }
        .checkbox-group input[type="number"] {
            width: calc(100% - 25px);
            padding: 10px;
            border: 1px solid #ccc;
            border-radius: 5px;
            background-color: #ffffff;
            box-sizing: border-box;
            transition: border-color 0.3s ease, box-shadow 0.3s ease;
        }
        .checkbox-group input[type="number"]:hover {
            border-color: #4caf50;
            box-shadow: 0 0 5px rgba(76, 175, 80, 0.4);
        }
        .checkbox-group .percent-sign {
            color: #003366;
            margin-left: 5px;
        }
        .button-container {
            display: flex;
            justify-content: space-between;
            margin-top: 20px;
        }
        .btn {
            padding: 10px 20px;
            border: none;
            border-radius: 5px;
            cursor: pointer;
            transition: background-color 0.3s ease, transform 0.2s ease;
        }
        .btn-analyze {
            background-color: #4caf50;
            color: white;
        }
        .btn-analyze:hover {
            background-color: #45a049;
            transform: translateY(-2px);
        }
        .btn-clear {
            background-color: #003366;
            color: white;
            border: 2px solid #4caf50;
        }
        .btn-clear:hover {
            background-color: #4caf50;
            color: #003366;
            transform: translateY(-2px);
        }
        .btn-save {
            background-color: #ff9800;
            color: white;
        }
        .btn-save:hover {
            background-color: #e67e22;
            transform: translateY(-2px);
        }
        .info-icon {
            position: absolute;
            top: 20px;
            right: 20px;
            font-size: 24px;
            color: #4caf50;
            cursor: pointer;
            transition: color 0.3s ease;
        }
        .info-icon:hover {
            color: #45a049;
        }
        .modal {
            display: none;
            position: fixed;
            z-index: 1;
            left: 0;
            top: 0;
            width: 100%;
            height: 100%;
            overflow: auto;
            background-color: rgba(0, 0, 0, 0.5);
        }
        .modal-content {
            background-color: #ffffff;
            margin: 15% auto;
            padding: 20px;
            border: 1px solid #888;
            border-radius: 10px;
            width: 80%;
            max-width: 500px;
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
        }
        .close {
            color: #aaa;
            float: right;
            font-size: 28px;
            font-weight: bold;
            cursor: pointer;
        }
        .close:hover,
        .close:focus {
            color: black;
            text-decoration: none;
            cursor: pointer;
        }
        .result-card {
            background-color: #f9f9f9;
            border-radius: 10px;
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
            padding: 15px;
            margin-bottom: 15px;
            display: flex;
            align-items: center;
        }
        .result-card .icon {
            font-size: 24px;
            margin-right: 10px;
        }
        .result-card.over25 .icon {
            color: #4caf50;
        }
        .result-card.bts .icon {
            color: #ff9800;
        }
        .result-card.ht .icon {
            color: #003366;
        }
        .saved-results {
            margin-top: 20px;
            width: 100%;
            max-width: 1200px;
            overflow-x: auto;
        }
        .saved-results table {
            width: 100%;
            border-collapse: collapse;
        }
        .saved-results th, .saved-results td {
            padding: 10px;
            text-align: left;
            border-bottom: 1px solid #ddd;
        }
        .saved-results th {
            background-color: #e0f7fa;
        }
        .saved-results tr:nth-child(even) {
            background-color: #f9f9f9;
        }
        .saved-results tr:nth-child(odd) {
            background-color: #ffffff;
        }
        .recommendation {
            font-weight: bold;
        }
        .action-icons {
            display: flex;
            align-items: center;
        }
        .action-icons .icon {
            font-size: 24px;
            margin-right: 10px;
            cursor: pointer;
            transition: color 0.3s ease;
        }
        .action-icons .icon:hover {
            color: #4caf50;
        }
        .action-icons .icon.delete:hover {
            color: #ff4d4d;
        }
        .confirm-modal {
            display: none;
            position: fixed;
            z-index: 2;
            left: 0;
            top: 0;
            width: 100%;
            height: 100%;
            overflow: auto;
            background-color: rgba(0, 0, 0, 0.5);
        }
        .confirm-modal-content {
            background-color: #ffffff;
            margin: 15% auto;
            padding: 20px;
            border: 1px solid #888;
            border-radius: 10px;
            width: 80%;
            max-width: 400px;
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
        }
        .confirm-modal .close {
            color: #aaa;
            float: right;
            font-size: 28px;
            font-weight: bold;
            cursor: pointer;
        }
        .confirm-modal .close:hover,
        .confirm-modal .close:focus {
            color: black;
            text-decoration: none;
            cursor: pointer;
        }
        .confirm-modal .confirm-buttons {
            display: flex;
            justify-content: space-between;
            margin-top: 20px;
        }
        .confirm-modal .confirm-buttons .btn {
            padding: 10px 20px;
            border: none;
            border-radius: 5px;
            cursor: pointer;
            transition: background-color 0.3s ease, transform 0.2s ease;
        }
        .confirm-modal .confirm-buttons .btn-confirm {
            background-color: #4caf50;
            color: white;
        }
        .confirm-modal .confirm-buttons .btn-confirm:hover {
            background-color: #45a049;
            transform: translateY(-2px);
        }
        .confirm-modal .confirm-buttons .btn-cancel {
            background-color: #003366;
            color: white;
            border: 2px solid #4caf50;
        }
        .confirm-modal .confirm-buttons .btn-cancel:hover {
            background-color: #4caf50;
            color: #003366;
            transform: translateY(-2px);
        }
        .detail-modal {
            display: none;
            position: fixed;
            z-index: 1;
            left: 0;
            top: 0;
            width: 100%;
            height: 100%;
            overflow: auto;
            background-color: rgba(0, 0, 0, 0.5);
        }
        .detail-modal-content {
            background-color: #ffffff;
            margin: 15% auto;
            padding: 20px;
            border: 1px solid #888;
            border-radius: 10px;
            width: 80%;
            max-width: 500px;
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
        }
        .detail-modal .close {
            color: #aaa;
            float: right;
            font-size: 28px;
            font-weight: bold;
            cursor: pointer;
        }
        .detail-modal .close:hover,
        .detail-modal .close:focus {
            color: black;
            text-decoration: none;
            cursor: pointer;
        }
        .detail-modal .team-names {
            text-align: center;
            margin-bottom: 20px;
            font-size: 1.5em;
            font-weight: bold;
            color: #003366;
        }
        .detail-modal .details {
            display: flex;
            flex-direction: column;
            gap: 10px;
        }
        .detail-modal .details .detail-item {
            display: flex;
            justify-content: space-between;
            align-items: center;
        }
        .detail-modal .details .detail-item label {
            font-weight: bold;
            color: #003366;
        }
        .detail-modal .details .detail-item span {
            color: #003366;
        }
        @media (max-width: 768px) {
            .container {
                flex-direction: column;
                align-items: center;
            }
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="card">
            <h2>Equipo Local</h2>
            <div class="form-group">
                <label for="local-team">Nombre del Equipo:</label>
                <input type="text" id="local-team" placeholder="Equipo Local">
            </div>
            <div class="checkbox-group">
                <label>Over 2.5:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="local-over25">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
                <label>BTS:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="local-bts">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
                <label>HT:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="local-ht">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
            </div>
        </div>
        <div class="card">
            <h2>Equipo Visitante</h2>
            <div class="form-group">
                <label for="visitor-team">Nombre del Equipo:</label>
                <input type="text" id="visitor-team" placeholder="Equipo Visitante">
            </div>
            <div class="checkbox-group">
                <label>Over 2.5:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="visitor-over25">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
                <label>BTS:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="visitor-bts">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
                <label>HT:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="visitor-ht">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
            </div>
        </div>
        <div class="button-container" style="width: 100%; max-width: 600px;">
            <button class="btn btn-analyze" id="analyze-btn">Analizar</button>
            <button class="btn btn-clear" id="clear-btn">Limpiar</button>
            <button class="btn btn-save" id="save-btn"><span>&#9989;</span> Guardar</button>
        </div>
        <div id="resultModal" class="modal">
            <div class="modal-content">
                <span class="close" id="close-result-modal">&times;</span>
                <h2>Resultados</h2>
                <div id="result-over25" class="result-card over25">
                    <span class="icon">&#9650;</span> <!-- Icono de gráfico de barras -->
                    <span id="result-over25-text"></span>
                </div>
                <div id="result-bts" class="result-card bts">
                    <span class="icon">&#9917;</span> <!-- Icono de balón -->
                    <span id="result-bts-text"></span>
                </div>
                <div id="result-ht" class="result-card ht">
                    <span class="icon">&#9201;</span> <!-- Icono de reloj -->
                    <span id="result-ht-text"></span>
                </div>
            </div>
        </div>
        <div class="saved-results">
            <table>
                <thead>
                    <tr>
                        <th>Equipos</th>
                        <th>HT</th>
                        <th>BTS</th>
                        <th>Over 2.5</th>
                        <th>Recomendación de Apuesta</th>
                        <th>Acciones</th>
                    </tr>
                </thead>
                <tbody id="results-table-body">
                    <!-- Filas de resultados se agregarán aquí -->
                </tbody>
            </table>
        </div>
        <div id="confirmModal" class="confirm-modal">
            <div class="confirm-modal-content">
                <span class="close" id="close-confirm-modal">&times;</span>
                <h2>Confirmación</h2>
                <p id="confirm-message"></p>
                <div class="confirm-buttons">
                    <button class="btn btn-confirm" id="confirm-delete-btn">Confirmar</button>
                    <button class="btn btn-cancel" id="cancel-delete-btn">Cancelar</button>
                </div>
            </div>
        </div>
        <div id="detailModal" class="detail-modal">
            <div class="detail-modal-content">
                <span class="close" id="close-detail-modal">&times;</span>
                <div class="team-names" id="detail-team-names"></div>
                <div class="details" id="detail-details">
                    <div class="detail-item">
                        <label>Over 2.5:</label>
                        <span id="detail-over25"></span>
                    </div>
                    <div class="detail-item">
                        <label>BTS:</label>
                        <span id="detail-bts"></span>
                    </div>
                    <div class="detail-item">
                        <label>HT:</label>
                        <span id="detail-ht"></span>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="info-icon" id="info-icon">&#9432;</div>

    <!-- Modal -->
    <div id="myModal" class="modal">
        <div class="modal-content">
            <span class="close" id="close-info-modal">&times;</span>
            <h2>Instrucciones</h2>
            <p>Bienvenido al Predictor de Apuestas Deportivas.</p>
            <p>Para utilizar esta página, sigue estos pasos:</p>
            <ol>
                <li>Ingresa el nombre del equipo local y del equipo visitante en los campos correspondientes.</li>
                <li>Especifica las probabilidades para Over 2.5, BTS (Ambos Equipos Marcan) y HT (Primer Tiempo) ingresando un valor entre 0 y 100 en formato de porcentaje.</li>
                <li>Haz clic en el botón "Analizar" para obtener una predicción basada en los datos ingresados.</li>
                <li>Haz clic en el botón "Limpiar" para borrar todos los campos y comenzar de nuevo.</li>
                <li>Haz clic en el botón "Guardar" para almacenar los resultados en la tabla de resultados guardados.</li>
            </ol>
        </div>
    </div>

    <script>
        // Get the modals
        var infoModal = document.getElementById("myModal");
        var resultModal = document.getElementById("resultModal");
        var confirmModal = document.getElementById("confirmModal");
        var detailModal = document.getElementById("detailModal");

        // Get the buttons that open the modals
        var infoBtn = document.getElementById("info-icon");
        var analyzeBtn = document.getElementById("analyze-btn");
        var saveBtn = document.getElementById("save-btn");
        var clearBtn = document.getElementById("clear-btn");

        // Get the <span> elements that close the modals
        var infoSpan = document.getElementById("close-info-modal");
        var resultSpan = document.getElementById("close-result-modal");
        var confirmSpan = document.getElementById("close-confirm-modal");
        var detailSpan = document.getElementById("close-detail-modal");

        // Get the confirm buttons
        var confirmDeleteBtn = document.getElementById("confirm-delete-btn");
        var cancelDeleteBtn = document.getElementById("cancel-delete-btn");

        // Variable to store the row to be deleted
        var rowToDelete = null;

        // When the user clicks the info button, open the info modal 
        infoBtn.onclick = function() {
            infoModal.style.display = "block";
        }

        // When the user clicks the analyze button, calculate and open the result modal 
        analyzeBtn.onclick = function() {
            calculateProbabilities();
            resultModal.style.display = "block";
        }

        // When the user clicks the save button, save the results
        saveBtn.onclick = function() {
            saveResults();
        }

        // When the user clicks the clear button, clear the inputs and reset the results table
        clearBtn.onclick = function() {
            clearInputs();
            resetResultsTable();
        }

        // When the user clicks on <span> (x), close the modals
        infoSpan.onclick = function() {
            infoModal.style.display = "none";
        }
        resultSpan.onclick = function() {
            resultModal.style.display = "none";
        }
        confirmSpan.onclick = function() {
            confirmModal.style.display = "none";
        }
        detailSpan.onclick = function() {
            detailModal.style.display = "none";
        }

        // When the user clicks anywhere outside of the modals, close them
        window.onclick = function(event) {
            if (event.target == infoModal) {
                infoModal.style.display = "none";
            }
            if (event.target == resultModal) {
                resultModal.style.display = "none";
            }
            if (event.target == confirmModal) {
                confirmModal.style.display = "none";
            }
            if (event.target == detailModal) {
                detailModal.style.display = "none";
            }
        }

        // Clear inputs
        function clearInputs() {
            const inputs = document.querySelectorAll('input[type="text"], input[type="number"]');
            inputs.forEach(input => input.value = '');
        }

        // Reset results table
        function resetResultsTable() {
            const tableBody = document.getElementById('results-table-body');
            tableBody.innerHTML = '';
        }

        // Function to calculate probabilities
        function calculateProbabilities() {
            const localOver25 = parseFloat(document.getElementById('local-over25').value) || 0;
            const visitorOver25 = parseFloat(document.getElementById('visitor-over25').value) || 0;
            const localBTS = parseFloat(document.getElementById('local-bts').value) || 0;
            const visitorBTS = parseFloat(document.getElementById('visitor-bts').value) || 0;
            const localHT = parseFloat(document.getElementById('local-ht').value) || 0;
            const visitorHT = parseFloat(document.getElementById('visitor-ht').value) || 0;

            const combinedOver25 = ((localOver25 + visitorOver25) / 2).toFixed(2);
            const combinedBTS = ((localBTS + visitorBTS) / 2).toFixed(2);
            const combinedHT = ((localHT + visitorHT) / 2).toFixed(2);

            document.getElementById('result-over25-text').textContent = Over 2.5: ${combinedOver25}%;
            document.getElementById('result-bts-text').textContent = BTS (Ambos Equipos Marcan): ${combinedBTS}%;
            document.getElementById('result-ht-text').textContent = HT (Primer Tiempo): ${combinedHT}%;

            // Save the calculated values for saving later
            saveBtn.dataset.over25 = combinedOver25;
            saveBtn.dataset.bts = combinedBTS;
            saveBtn.dataset.ht = combinedHT;
            saveBtn.dataset.localTeam = document.getElementById('local-team').value;
            saveBtn.dataset.visitorTeam = document.getElementById('visitor-team').value;
        }

        // Function to save results
        function saveResults() {
            const over25 = parseFloat(saveBtn.dataset.over25);
            const bts = parseFloat(saveBtn.dataset.bts);
            const ht = parseFloat(saveBtn.dataset.ht);
            const localTeam = saveBtn.dataset.localTeam;
            const visitorTeam = saveBtn.dataset.visitorTeam;

            if (!localTeam || !visitorTeam || isNaN(over25) || isNaN(bts) || isNaN(ht)) {
                alert("Por favor, completa todos los campos antes de guardar.");
                return;
            }

            const recommendation = getRecommendation(over25, bts, ht);

            const tableBody = document.getElementById('results-table-body');
            const newRow = document.createElement('tr');

            const cellTeams = document.createElement('td');
            const cellHT = document.createElement('td');
            const cellBTS = document.createElement('td');
            const cellOver25 = document.createElement('td');
            const cellRecommendation = document.createElement('td');
            const cellActions = document.createElement('td');

            cellTeams.textContent = ${localTeam} vs ${visitorTeam};
            cellHT.textContent = ${ht.toFixed(2)}%;
            cellBTS.textContent = ${bts.toFixed(2)}%;
            cellOver25.textContent = ${over25.toFixed(2)}%;
            cellRecommendation.innerHTML = <span class="recommendation">${recommendation}</span>;

            // Add action icons
            const actionIcons = document.createElement('div');
            actionIcons.className = 'action-icons';

            const viewIcon = document.createElement('span');
            viewIcon.className = 'icon view';
            viewIcon.innerHTML = '&#128065;'; // Icono de ver resultados
            viewIcon.title = 'Ver Resultados';
            viewIcon.onclick = function() {
                showResultDetails(localTeam, visitorTeam, over25, bts, ht);
            };

            const deleteIcon = document.createElement('span');
            deleteIcon.className = 'icon delete';
            deleteIcon.innerHTML = '&#10060;'; // Icono de eliminar
            deleteIcon.title = 'Eliminar';
            deleteIcon.onclick = function() {
                confirmDeletion(newRow, localTeam, visitorTeam, recommendation);
            };

            actionIcons.appendChild(viewIcon);
            actionIcons.appendChild(deleteIcon);

            cellActions.appendChild(actionIcons);

            // Insert the new row at the beginning of the table body
            tableBody.insertBefore(newRow, tableBody.firstChild);

            newRow.appendChild(cellTeams);
            newRow.appendChild(cellHT);
            newRow.appendChild(cellBTS);
            newRow.appendChild(cellOver25);
            newRow.appendChild(cellRecommendation);
            newRow.appendChild(cellActions);
        }

        // Function to show result details in a modal
        function showResultDetails(localTeam, visitorTeam, over25, bts, ht) {
            document.getElementById('detail-team-names').textContent = ${localTeam} vs ${visitorTeam};
            document.getElementById('detail-over25').textContent = ${over25.toFixed(2)}%;
            document.getElementById('detail-bts').textContent = ${bts.toFixed(2)}%;
            document.getElementById('detail-ht').textContent = ${ht.toFixed(2)}%;

            detailModal.style.display = "block";
        }

        // Function to confirm deletion
        function confirmDeletion(row, localTeam, visitorTeam, recommendation) {
            rowToDelete = row;
            const confirmMessage = ¿Está seguro de que desea eliminar? ${localTeam} vs ${visitorTeam} (${recommendation});
            document.getElementById('confirm-message').textContent = confirmMessage;
            confirmModal.style.display = "block";
        }

        // When the user clicks the confirm delete button, delete the row
        confirmDeleteBtn.onclick = function() {
            if (rowToDelete) {
                rowToDelete.remove();
                rowToDelete = null;
                confirmModal.style.display = "none";
            }
        }

        // When the user clicks the cancel delete button, close the confirm modal
        cancelDeleteBtn.onclick = function() {
            rowToDelete = null;
            confirmModal.style.display = "none";
        }

        // Function to determine recommendation
        function getRecommendation(over25, bts, ht) {
            if (over25 > 70 && bts > 75 && ht > 70) {
                return "Apostar en Over 2.5";
            } else if (over25 > 70 && bts > 70 && ht > 65) {
                return "Apostar en Over 1.5";
            } else if (over25 > 75 && bts > 70 && ht > 65) {
                return "Apostar en BTS";
            } else {
                return "No Apostar";
            }
        }
    </script>
</body>
</html>
ASSISTANT
Claro, aquí tienes el código completo dividido en tres archivos: `index.html`, `styles.css` y `script.js`.

### Archivo 1: `index.html`
```html
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Predictor de Apuestas Deportivas</title>
    <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600&display=swap" rel="stylesheet">
    <link rel="stylesheet" href="styles.css">
</head>
<body>
    <div class="container">
        <div class="card">
            <h2>Equipo Local</h2>
            <div class="form-group">
                <label for="local-team">Nombre del Equipo:</label>
                <input type="text" id="local-team" placeholder="Equipo Local">
            </div>
            <div class="checkbox-group">
                <label>Over 2.5:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="local-over25">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
                <label>BTS:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="local-bts">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
                <label>HT:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="local-ht">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
            </div>
        </div>
        <div class="card">
            <h2>Equipo Visitante</h2>
            <div class="form-group">
                <label for="visitor-team">Nombre del Equipo:</label>
                <input type="text" id="visitor-team" placeholder="Equipo Visitante">
            </div>
            <div class="checkbox-group">
                <label>Over 2.5:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="visitor-over25">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
                <label>BTS:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="visitor-bts">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
                <label>HT:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="visitor-ht">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
            </div>
        </div>
        <div class="button-container" style="width: 100%; max-width: 600px;">
            <button class="btn btn-analyze" id="analyze-btn">Analizar</button>
            <button class="btn btn-clear" id="clear-btn">Limpiar</button>
            <button class="btn btn-save" id="save-btn"><span>&#9989;</span> Guardar</button>
        </div>
        <div id="resultModal" class="modal">
            <div class="modal-content">
                <span class="close" id="close-result-modal">&times;</span>
                <h2>Resultados</h2>
                <div id="result-over25" class="result-card over25">
                    <span class="icon">&#9650;</span> <!-- Icono de gráfico de barras -->
                    <span id="result-over25-text"></span>
                </div>
                <div id="result-bts" class="result-card bts">
                    <span class="icon">&#9917;</span> <!-- Icono de balón -->
                    <span id="result-bts-text"></span>
                </div>
                <div id="result-ht" class="result-card ht">
                    <span class="icon">&#9201;</span> <!-- Icono de reloj -->
                    <span id="result-ht-text"></span>
                </div>
            </div>
        </div>
        <div class="saved-results">
            <table>
                <thead>
                    <tr>
                        <th>Equipos</th>
                        <th>HT</th>
                        <th>BTS</th>
                        <th>Over 2.5</th>
                        <th>Recomendación de Apuesta</th>
                        <th>Acciones</th>
                    </tr>
                </thead>
                <tbody id="results-table-body">
                    <!-- Filas de resultados se agregarán aquí -->
                </tbody>
            </table>
        </div>
        <div id="confirmModal" class="confirm-modal">
            <div class="confirm-modal-content">
                <span class="close" id="close-confirm-modal">&times;</span>
                <h2>Confirmación</h2>
                <p id="confirm-message"></p>
                <div class="confirm-buttons">
                    <button class="btn btn-confirm" id="confirm-delete-btn">Confirmar</button>
                    <button class="btn btn-cancel" id="cancel-delete-btn">Cancelar</button>
                </div>
            </div>
        </div>
        <div id="detailModal" class="detail-modal">
            <div class="detail-modal-content">
                <span class="close" id="close-detail-modal">&times;</span>
                <div class="team-names" id="detail-team-names"></div>
                <div class="details" id="detail-details">
                    <div class="detail-item">
                        <label>Over 2.5:</label>
                        <span id="detail-over25"></span>
                    </div>
                    <div class="detail-item">
                        <label>BTS:</label>
                        <span id="detail-bts"></span>
                    </div>
                    <div class="detail-item">
                        <label>HT:</label>
                        <span id="detail-ht"></span>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="info-icon" id="info-icon">&#9432;</div>

    <!-- Modal -->
    <div id="myModal" class="modal">
        <div class="modal-content">
            <span class="close" id="close-info-modal">&times;</span>
            <h2>Instrucciones</h2>
            <p>Bienvenido al Predictor de Apuestas Deportivas.</p>
            <p>Para utilizar esta página, sigue estos pasos:</p>
            <ol>
                <li>Ingresa el nombre del equipo local y del equipo visitante en los campos correspondientes.</li>
                <li>Especifica las probabilidades para Over 2.5, BTS (Ambos Equipos Marcan) y HT (Primer Tiempo) ingresando un valor entre 0 y 100 en formato de porcentaje.</li>
                <li>Haz clic en el botón "Analizar" para obtener una predicción basada en los datos ingresados.</li>
                <li>Haz clic en el botón "Limpiar" para borrar todos los campos y comenzar de nuevo.</li>
                <li>Haz clic en el botón "Guardar" para almacenar los resultados en la tabla de resultados guardados.</li>
            </ol>
        </div>
    </div>

    <script src="script.js"></script>
</body>
</html>
```

### Archivo 2: `styles.css`
```css
body {
    font-family: 'Poppins', sans-serif;
    margin: 0;
    padding: 0;
    background-color: rgba(173, 216, 230, 0.2); /* Fondo azul claro desvanecido */
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 100vh;
    position: relative;
}
.container {
    width: 90%;
    max-width: 1200px;
    display: flex;
    flex-wrap: wrap;
    gap: 20px;
}
.card {
    background-color: #e0f7fa;
    border-radius: 10px;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
    flex: 1;
    min-width: 300px;
    padding: 20px;
    transition: transform 0.2s ease;
}
.card:hover {
    transform: translateY(-5px);
}
.card h2 {
    color: #003366;
    margin-bottom: 15px;
    text-align: center;
}
.form-group {
    margin-bottom: 15px;
}
.form-group label {
    color: #003366;
    display: block;
    margin-bottom: 5px;
}
.form-group input[type="text"] {
    width: 100%;
    padding: 10px;
    border: 1px solid #ccc;
    border-radius: 5px;
    background-color: #ffffff;
    box-sizing: border-box;
    transition: border-color 0.3s ease, box-shadow 0.3s ease;
}
.form-group input[type="text"]:hover {
    border-color: #4caf50;
    box-shadow: 0 0 5px rgba(76, 175, 80, 0.4);
}
.checkbox-group {
    display: flex;
    flex-direction: column;
}
.checkbox-group label {
    display: flex;
    align-items: center;
    color: #003366;
    margin-bottom: 10px;
}
.checkbox-group .input-container {
    display: flex;
    width: 100%;
    align-items: center;
}
.checkbox-group input[type="number"] {
    width: calc(100% - 25px);
    padding: 10px;
    border: 1px solid #ccc;
    border-radius: 5px;
    background-color: #ffffff;
    box-sizing: border-box;
    transition: border-color 0.3s ease, box-shadow 0.3s ease;
}
.checkbox-group input[type="number"]:hover {
    border-color: #4caf50;
    box-shadow: 0 0 5px rgba(76, 175, 80, 0.4);
}
.checkbox-group .percent-sign {
    color: #003366;
    margin-left: 5px;
}
.button-container {
    display: flex;
    justify-content: space-between;
    margin-top: 20px;
}
.btn {
    padding: 10px 20px;
    border: none;
    border-radius: 5px;
    cursor: pointer;
    transition: background-color 0.3s ease, transform 0.2s ease;
}
.btn-analyze {
    background-color: #4caf50;
    color: white;
}
.btn-analyze:hover {
    background-color: #45a049;
    transform: translateY(-2px);
}
.btn-clear {
    background-color: #003366;
    color: white;
    border: 2px solid #4caf50;
}
.btn-clear:hover {
    background-color: #4caf50;
    color: #003366;
    transform: translateY(-2px);
}
.btn-save {
    background-color: #ff9800;
    color: white;
}
.btn-save:hover {
    background-color: #e67e22;
    transform: translateY(-2px);
}
.info-icon {
    position: absolute;
    top: 20px;
    right: 20px;
    font-size: 24px;
    color: #4caf50;
    cursor: pointer;
    transition: color 0.3s ease;
}
.info-icon:hover {
    color: #45a049;
}
.modal {
    display: none;
    position: fixed;
    z-index: 1;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    overflow: auto;
    background-color: rgba(0, 0, 0, 0.5);
}
.modal-content {
    background-color: #ffffff;
    margin: 15% auto;
    padding: 20px;
    border: 1px solid #888;
    border-radius: 10px;
    width: 80%;
    max-width: 500px;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
}
.close {
    color: #aaa;
    float: right;
    font-size: 28px;
    font-weight: bold;
    cursor: pointer;
}
.close:hover,
.close:focus {
    color: black;
    text-decoration: none;
    cursor: pointer;
}
.result-card {
    background-color: #f9f9f9;
    border-radius: 10px;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
    padding: 15px;
    margin-bottom: 15px;
    display: flex;
    align-items: center;
}
.result-card .icon {
    font-size: 24px;
    margin-right: 10px;
}
.result-card.over25 .icon {
    color: #4caf50;
}
.result-card.bts .icon {
    color: #ff9800;
}
.result-card.ht .icon {
    color: #003366;
}
.saved-results {
    margin-top: 20px;
    width: 100%;
    max-width: 1200px;
    overflow-x: auto;
}
.saved-results table {
    width: 100%;
    border-collapse: collapse;
}
.saved-results th, .saved-results td {
    padding: 10px;
    text-align: left;
    border-bottom: 1px solid #ddd;
}
.saved-results th {
    background-color: #e0f7fa;
}
.saved-results tr:nth-child(even) {
    background-color: #f9f9f9;
}
.saved-results tr:nth-child(odd) {
    background-color: #ffffff;
}
.recommendation {
    font-weight: bold;
}
.action-icons {
    display: flex;
    align-items: center;
}
.action-icons .icon {
    font-size: 24px;
    margin-right: 10px;
    cursor: pointer;
    transition: color 0.3s ease;
}
.action-icons .icon:hover {
    color: #4caf50;
}
.action-icons .icon.delete:hover {
    color: #ff4d4d;
}
.confirm-modal {
    display: none;
    position: fixed;
    z-index: 2;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    overflow: auto;
    background-color: rgba(0, 0, 0, 0.5);
}
.confirm-modal-content {
    background-color: #ffffff;
    margin: 15% auto;
    padding: 20px;
    border: 1px solid #888;
    border-radius: 10px;
    width: 80%;
    max-width: 400px;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
}
.confirm-modal .close {
    color: #aaa;
    float: right;
    font-size: 28px;
    font-weight: bold;
    cursor: pointer;
}
.confirm-modal .close:hover,
.confirm-modal .close:focus {
    color: black;
    text-decoration: none;
    cursor: pointer;
}
.confirm-modal .confirm-buttons {
    display: flex;
    justify-content: space-between;
    margin-top: 20px;
}
.confirm-modal .confirm-buttons .btn {
    padding: 10px 20px;
    border: none;
    border-radius: 5px;
    cursor: pointer;
    transition: background-color 0.3s ease, transform 0.2s ease;
}
.confirm-modal .confirm-buttons .btn-confirm {
    background-color: #4caf50;
    color: white;
}
.confirm-modal .confirm-buttons .btn-confirm:hover {
    background-color: #45a049;
    transform: translateY(-2px);
}
.confirm-modal .confirm-buttons .btn-cancel {
    background-color: #003366;
    color: white;
    border: 2px solid #4caf50;
}
.confirm-modal .confirm-buttons .btn-cancel:hover {
    background-color: #4caf50;
    color: #003366;
    transform: translateY(-2px);
}
.detail-modal {
    display: none;
    position: fixed;
    z-index: 1;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    overflow: auto;
    background-color: rgba(0, 0, 0, 0.5);
}
.detail-modal-content {
    background-color: #ffffff;
    margin: 15% auto;
    padding: 20px;
    border: 1px solid #888;
    border-radius: 10px;
    width: 80%;
    max-width: 500px;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
}
.detail-modal .close {
    color: #aaa;
    float: right;
    font-size: 28px;
    font-weight: bold;
    cursor: pointer;
}
.detail-modal .close:hover,
.detail-modal .close:focus {
    color: black;
    text-decoration: none;
    cursor: pointer;
}
.detail-modal .team-names {
    text-align: center;
    margin-bottom: 20px;
    font-size: 1.5em;
    font-weight: bold;
    color: #003366;
}
.detail-modal .details {
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.detail-modal .details .detail-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
}
.detail-modal .details .detail-item label {
    font-weight: bold;
    color: #003366;
}
.detail-modal .details .detail-item span {
    color: #003366;
}
@media (max-width: 768px) {
    .container {
        flex-direction: column;
        align-items: center;
    }
}
```

### Archivo 3: `script.js`
```javascript
// Get the modals
var infoModal = document.getElementById("myModal");
var resultModal = document.getElementById("resultModal");
var confirmModal = document.getElementById("confirmModal");
var detailModal = document.getElementById("detailModal");

// Get the buttons that open the modals
var infoBtn = document.getElementById("info-icon");
var analyzeBtn = document.getElementById("analyze-btn");
var saveBtn = document.getElementById("save-btn");
var clearBtn = document.getElementById("clear-btn");

// Get the <span> elements that close the modals
var infoSpan = document.getElementById("close-info-modal");
var resultSpan = document.getElementById("close-result-modal");
var confirmSpan = document.getElementById("close-confirm-modal");
var detailSpan = document.getElementById("close-detail-modal");

// Get the confirm buttons
var confirmDeleteBtn = document.getElementById("confirm-delete-btn");
var cancelDeleteBtn = document.getElementById("cancel-delete-btn");

// Variable to store the row to be deleted
var rowToDelete = null;

// When the user clicks the info button, open the info modal 
infoBtn.onclick = function() {
    infoModal.style.display = "block";
}

// When the user clicks the analyze button, calculate and open the result modal 
analyzeBtn.onclick = function() {
    calculateProbabilities();
    resultModal.style.display = "block";
}

// When the user clicks the save button, save the results
saveBtn.onclick = function() {
    saveResults();
}

// When the user clicks the clear button, clear the inputs and reset the results table
clearBtn.onclick = function() {
    clearInputs();
    resetResultsTable();
}

// When the user clicks on <span> (x), close the modals
infoSpan.onclick = function() {
    infoModal.style.display = "none";
}
resultSpan.onclick = function() {
    resultModal.style.display = "none";
}
confirmSpan.onclick = function() {
    confirmModal.style.display = "none";
}
detailSpan.onclick = function() {
    detailModal.style.display = "none";
}

// When the user clicks anywhere outside of the modals, close them
window.onclick = function(event) {
    if (event.target == infoModal) {
        infoModal.style.display = "none";
    }
    if (event.target == resultModal) {
        resultModal.style.display = "none";
    }
    if (event.target == confirmModal) {
        confirmModal.style.display = "none";
    }
    if (event.target == detailModal) {
        detailModal.style.display = "none";
    }
}

// Clear inputs
function clearInputs() {
    const inputs = document.querySelectorAll('input[type="text"], input[type="number"]');
    inputs.forEach(input => input.value = '');
}

// Reset results table
function resetResultsTable() {
    const tableBody = document.getElementById('results-table-body');
    tableBody.innerHTML = '';
}

// Function to calculate probabilities
function calculateProbabilities() {
    const localOver25 = parseFloat(document.getElementById('local-over25').value) || 0;
    const visitorOver25 = parseFloat(document.getElementById('visitor-over25').value) || 0;
    const localBTS = parseFloat(document.getElementById('local-bts').value) || 0;
    const visitorBTS = parseFloat(document.getElementById('visitor-bts').value) || 0;
    const localHT = parseFloat(document.getElementById('local-ht').value) || 0;
    const visitorHT = parseFloat(document.getElementById('visitor-ht').value) || 0;

    const combinedOver25 = ((localOver25 + visitorOver25) / 2).toFixed(2);
    const combinedBTS = ((localBTS + visitorBTS) / 2).toFixed(2);
    const combinedHT = ((localHT + visitorHT) / 2).toFixed(2);

    document.getElementById('result-over25-text').textContent = `Over 2.5: ${combinedOver25}%`;
    document.getElementById('result-bts-text').textContent = `BTS (Ambos Equipos Marcan): ${combinedBTS}%`;
    document.getElementById('result-ht-text').textContent = `HT (Primer Tiempo): ${combinedHT}%`;

    // Save the calculated values for saving later
    saveBtn.dataset.over25 = combinedOver25;
    saveBtn.dataset.bts = combinedBTS;
    saveBtn.dataset.ht = combinedHT;
    saveBtn.dataset.localTeam = document.getElementById('local-team').value;
    saveBtn.dataset.visitorTeam = document.getElementById('visitor-team').value;
}

// Function to save results
function saveResults() {
    const over25 = parseFloat(saveBtn.dataset.over25);
    const bts = parseFloat(saveBtn.dataset.bts);
    const ht = parseFloat(saveBtn.dataset.ht);
    const localTeam = saveBtn.dataset.localTeam;
    const visitorTeam = saveBtn.dataset.visitorTeam;

    if (!localTeam || !visitorTeam || isNaN(over25) || isNaN(bts) || isNaN(ht)) {
        alert("Por favor, completa todos los campos antes de guardar.");
        return;
    }

    const recommendation = getRecommendation(over25, bts, ht);

    const tableBody = document.getElementById('results-table-body');
    const newRow = document.createElement('tr');

    const cellTeams = document.createElement('td');
    const cellHT = document.createElement('td');
    const cellBTS = document.createElement('td');
    const cellOver25 = document.createElement('td');
    const cellRecommendation = document.createElement('td');
    const cellActions = document.createElement('td');

    cellTeams.textContent = `${localTeam} vs ${visitorTeam}`;
    cellHT.textContent = `${ht.toFixed(2)}%`;
    cellBTS.textContent = `${bts.toFixed(2)}%`;
    cellOver25.textContent = `${over25.toFixed(2)}%`;
    cellRecommendation.innerHTML = `<span class="recommendation">${recommendation}</span>`;

    // Add action icons
    const actionIcons = document.createElement('div');
    actionIcons.className = 'action-icons';

    const viewIcon = document.createElement('span');
    viewIcon.className = 'icon view';
    viewIcon.innerHTML = '&#128065;'; // Icono de ver resultados
    viewIcon.title = 'Ver Resultados';
    viewIcon.onclick = function() {
        showResultDetails(localTeam, visitorTeam, over25, bts, ht);
    };

    const deleteIcon = document.createElement('span');
    deleteIcon.className = 'icon delete';
    deleteIcon.innerHTML = '&#10060;'; // Icono de eliminar
    deleteIcon.title = 'Eliminar';
    deleteIcon.onclick = function() {
        confirmDeletion(newRow, localTeam, visitorTeam, recommendation);
    };

    actionIcons.appendChild(viewIcon);
    actionIcons.appendChild(deleteIcon);

    cellActions.appendChild(actionIcons);

    // Insert the new row at the beginning of the table body
    tableBody.insertBefore(newRow, tableBody.firstChild);

    newRow.appendChild(cellTeams);
    newRow.appendChild(cellHT);
    newRow.appendChild(cellBTS);
    newRow.appendChild(cellOver25);
    newRow.appendChild(cellRecommendation);
    newRow.appendChild(cellActions);
}

// Function to show result details in a modal
function showResultDetails(localTeam, visitorTeam, over25, bts, ht) {
    document.getElementById('detail-team-names').textContent = `${localTeam} vs ${visitorTeam}`;
    document.getElementById('detail-over25').textContent = `${over25.toFixed(2)}%`;
    document.getElementById('detail-bts').textContent = `${bts.toFixed(2)}%`;
    document.getElementById('detail-ht').textContent = `${ht.toFixed(2)}%`;

    detailModal.style.display = "block";
}

// Function to confirm deletion
function confirmDeletion(row, localTeam, visitorTeam, recommendation) {
    rowToDelete = row;
    const confirmMessage = `¿Está seguro de que desea eliminar? ${localTeam} vs ${visitorTeam} (${recommendation})`;
    document.getElementById('confirm-message').textContent = confirmMessage;
    confirmModal.style.display = "block";
}

// When the user clicks the confirm delete button, delete the row
confirmDeleteBtn.onclick = function() {
    if (rowToDelete) {
        rowToDelete.remove();
        rowToDelete = null;
        confirmModal.style.display = "none";
    }
}

// When the user clicks the cancel delete button, close the confirm modal
cancelDeleteBtn.onclick = function() {
    rowToDelete = null;
    confirmModal.style.display = "none";
}

// Function to determine recommendation
function getRecommendation(over25, bts, ht) {
    if (over25 > 70 && bts > 75 && ht > 70) {
        return "Apostar en Over 2.5";
    } else if (over25 > 70 && bts > 70 && ht > 65) {
        return "Apostar en Over 1.5";
    } else if (over25 > 75 && bts > 70 && ht > 65) {
        return "Apostar en BTS";
    } else {
        return "No Apostar";
    }
}
```

---

Asegúrate de que todos los archivos estén en la misma carpeta y que `index.html` se enlace adecuadamente a `styles.css` y `script.js`. ¡Ahora tienes tu código dividido en archivos para una mejor organización y legibilidad!

turns-00051.parquet:21631

74652bdfdf6c5a020e89fafa
turn 4/8gpt-4o-mini-2024-07-18EnglishColombia4354 words
degenerate_repetitionAbsentFinal dense release
USER
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Predictor de Apuestas Deportivas</title>
    <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600&display=swap" rel="stylesheet">
    <style>
        body {
            font-family: 'Poppins', sans-serif;
            margin: 0;
            padding: 0;
            background-color: rgba(173, 216, 230, 0.2); /* Fondo azul claro desvanecido */
            display: flex;
            justify-content: center;
            align-items: center;
            min-height: 100vh;
            position: relative;
        }
        .container {
            width: 90%;
            max-width: 1200px;
            display: flex;
            flex-wrap: wrap;
            gap: 20px;
        }
        .card {
            background-color: #e0f7fa;
            border-radius: 10px;
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
            flex: 1;
            min-width: 300px;
            padding: 20px;
            transition: transform 0.2s ease;
        }
        .card:hover {
            transform: translateY(-5px);
        }
        .card h2 {
            color: #003366;
            margin-bottom: 15px;
            text-align: center;
        }
        .form-group {
            margin-bottom: 15px;
        }
        .form-group label {
            color: #003366;
            display: block;
            margin-bottom: 5px;
        }
        .form-group input[type="text"] {
            width: 100%;
            padding: 10px;
            border: 1px solid #ccc;
            border-radius: 5px;
            background-color: #ffffff;
            box-sizing: border-box;
            transition: border-color 0.3s ease, box-shadow 0.3s ease;
        }
        .form-group input[type="text"]:hover {
            border-color: #4caf50;
            box-shadow: 0 0 5px rgba(76, 175, 80, 0.4);
        }
        .checkbox-group {
            display: flex;
            flex-direction: column;
        }
        .checkbox-group label {
            display: flex;
            align-items: center;
            color: #003366;
            margin-bottom: 10px;
        }
        .checkbox-group .input-container {
            display: flex;
            width: 100%;
            align-items: center;
        }
        .checkbox-group input[type="number"] {
            width: calc(100% - 25px);
            padding: 10px;
            border: 1px solid #ccc;
            border-radius: 5px;
            background-color: #ffffff;
            box-sizing: border-box;
            transition: border-color 0.3s ease, box-shadow 0.3s ease;
        }
        .checkbox-group input[type="number"]:hover {
            border-color: #4caf50;
            box-shadow: 0 0 5px rgba(76, 175, 80, 0.4);
        }
        .checkbox-group .percent-sign {
            color: #003366;
            margin-left: 5px;
        }
        .button-container {
            display: flex;
            justify-content: space-between;
            margin-top: 20px;
        }
        .btn {
            padding: 10px 20px;
            border: none;
            border-radius: 5px;
            cursor: pointer;
            transition: background-color 0.3s ease, transform 0.2s ease;
        }
        .btn-analyze {
            background-color: #4caf50;
            color: white;
        }
        .btn-analyze:hover {
            background-color: #45a049;
            transform: translateY(-2px);
        }
        .btn-clear {
            background-color: #003366;
            color: white;
            border: 2px solid #4caf50;
        }
        .btn-clear:hover {
            background-color: #4caf50;
            color: #003366;
            transform: translateY(-2px);
        }
        .btn-save {
            background-color: #ff9800;
            color: white;
        }
        .btn-save:hover {
            background-color: #e67e22;
            transform: translateY(-2px);
        }
        .info-icon {
            position: absolute;
            top: 20px;
            right: 20px;
            font-size: 24px;
            color: #4caf50;
            cursor: pointer;
            transition: color 0.3s ease;
        }
        .info-icon:hover {
            color: #45a049;
        }
        .modal {
            display: none;
            position: fixed;
            z-index: 1;
            left: 0;
            top: 0;
            width: 100%;
            height: 100%;
            overflow: auto;
            background-color: rgba(0, 0, 0, 0.5);
        }
        .modal-content {
            background-color: #ffffff;
            margin: 15% auto;
            padding: 20px;
            border: 1px solid #888;
            border-radius: 10px;
            width: 80%;
            max-width: 500px;
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
        }
        .close {
            color: #aaa;
            float: right;
            font-size: 28px;
            font-weight: bold;
            cursor: pointer;
        }
        .close:hover,
        .close:focus {
            color: black;
            text-decoration: none;
            cursor: pointer;
        }
        .result-card {
            background-color: #f9f9f9;
            border-radius: 10px;
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
            padding: 15px;
            margin-bottom: 15px;
            display: flex;
            align-items: center;
        }
        .result-card .icon {
            font-size: 24px;
            margin-right: 10px;
        }
        .result-card.over25 .icon {
            color: #4caf50;
        }
        .result-card.bts .icon {
            color: #ff9800;
        }
        .result-card.ht .icon {
            color: #003366;
        }
        .saved-results {
            margin-top: 20px;
            width: 100%;
            max-width: 1200px;
            overflow-x: auto;
        }
        .saved-results table {
            width: 100%;
            border-collapse: collapse;
        }
        .saved-results th, .saved-results td {
            padding: 10px;
            text-align: left;
            border-bottom: 1px solid #ddd;
        }
        .saved-results th {
            background-color: #e0f7fa;
        }
        .saved-results tr:nth-child(even) {
            background-color: #f9f9f9;
        }
        .saved-results tr:nth-child(odd) {
            background-color: #ffffff;
        }
        .recommendation {
            font-weight: bold;
        }
        .action-icons {
            display: flex;
            align-items: center;
        }
        .action-icons .icon {
            font-size: 24px;
            margin-right: 10px;
            cursor: pointer;
            transition: color 0.3s ease;
        }
        .action-icons .icon:hover {
            color: #4caf50;
        }
        .action-icons .icon.delete:hover {
            color: #ff4d4d;
        }
        .confirm-modal {
            display: none;
            position: fixed;
            z-index: 2;
            left: 0;
            top: 0;
            width: 100%;
            height: 100%;
            overflow: auto;
            background-color: rgba(0, 0, 0, 0.5);
        }
        .confirm-modal-content {
            background-color: #ffffff;
            margin: 15% auto;
            padding: 20px;
            border: 1px solid #888;
            border-radius: 10px;
            width: 80%;
            max-width: 400px;
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
        }
        .confirm-modal .close {
            color: #aaa;
            float: right;
            font-size: 28px;
            font-weight: bold;
            cursor: pointer;
        }
        .confirm-modal .close:hover,
        .confirm-modal .close:focus {
            color: black;
            text-decoration: none;
            cursor: pointer;
        }
        .confirm-modal .confirm-buttons {
            display: flex;
            justify-content: space-between;
            margin-top: 20px;
        }
        .confirm-modal .confirm-buttons .btn {
            padding: 10px 20px;
            border: none;
            border-radius: 5px;
            cursor: pointer;
            transition: background-color 0.3s ease, transform 0.2s ease;
        }
        .confirm-modal .confirm-buttons .btn-confirm {
            background-color: #4caf50;
            color: white;
        }
        .confirm-modal .confirm-buttons .btn-confirm:hover {
            background-color: #45a049;
            transform: translateY(-2px);
        }
        .confirm-modal .confirm-buttons .btn-cancel {
            background-color: #003366;
            color: white;
            border: 2px solid #4caf50;
        }
        .confirm-modal .confirm-buttons .btn-cancel:hover {
            background-color: #4caf50;
            color: #003366;
            transform: translateY(-2px);
        }
        .detail-modal {
            display: none;
            position: fixed;
            z-index: 1;
            left: 0;
            top: 0;
            width: 100%;
            height: 100%;
            overflow: auto;
            background-color: rgba(0, 0, 0, 0.5);
        }
        .detail-modal-content {
            background-color: #ffffff;
            margin: 15% auto;
            padding: 20px;
            border: 1px solid #888;
            border-radius: 10px;
            width: 80%;
            max-width: 500px;
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
        }
        .detail-modal .close {
            color: #aaa;
            float: right;
            font-size: 28px;
            font-weight: bold;
            cursor: pointer;
        }
        .detail-modal .close:hover,
        .detail-modal .close:focus {
            color: black;
            text-decoration: none;
            cursor: pointer;
        }
        .detail-modal .team-names {
            text-align: center;
            margin-bottom: 20px;
            font-size: 1.5em;
            font-weight: bold;
            color: #003366;
        }
        .detail-modal .details {
            display: flex;
            flex-direction: column;
            gap: 10px;
        }
        .detail-modal .details .detail-item {
            display: flex;
            justify-content: space-between;
            align-items: center;
        }
        .detail-modal .details .detail-item label {
            font-weight: bold;
            color: #003366;
        }
        .detail-modal .details .detail-item span {
            color: #003366;
        }
        @media (max-width: 768px) {
            .container {
                flex-direction: column;
                align-items: center;
            }
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="card">
            <h2>Equipo Local</h2>
            <div class="form-group">
                <label for="local-team">Nombre del Equipo:</label>
                <input type="text" id="local-team" placeholder="Equipo Local">
            </div>
            <div class="checkbox-group">
                <label>Over 2.5:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="local-over25">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
                <label>BTS:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="local-bts">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
                <label>HT:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="local-ht">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
            </div>
        </div>
        <div class="card">
            <h2>Equipo Visitante</h2>
            <div class="form-group">
                <label for="visitor-team">Nombre del Equipo:</label>
                <input type="text" id="visitor-team" placeholder="Equipo Visitante">
            </div>
            <div class="checkbox-group">
                <label>Over 2.5:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="visitor-over25">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
                <label>BTS:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="visitor-bts">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
                <label>HT:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="visitor-ht">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
            </div>
        </div>
        <div class="button-container" style="width: 100%; max-width: 600px;">
            <button class="btn btn-analyze" id="analyze-btn">Analizar</button>
            <button class="btn btn-clear" id="clear-btn">Limpiar</button>
            <button class="btn btn-save" id="save-btn"><span>&#9989;</span> Guardar</button>
        </div>
        <div id="resultModal" class="modal">
            <div class="modal-content">
                <span class="close" id="close-result-modal">&times;</span>
                <h2>Resultados</h2>
                <div id="result-over25" class="result-card over25">
                    <span class="icon">&#9650;</span> <!-- Icono de gráfico de barras -->
                    <span id="result-over25-text"></span>
                </div>
                <div id="result-bts" class="result-card bts">
                    <span class="icon">&#9917;</span> <!-- Icono de balón -->
                    <span id="result-bts-text"></span>
                </div>
                <div id="result-ht" class="result-card ht">
                    <span class="icon">&#9201;</span> <!-- Icono de reloj -->
                    <span id="result-ht-text"></span>
                </div>
            </div>
        </div>
        <div class="saved-results">
            <table>
                <thead>
                    <tr>
                        <th>Equipos</th>
                        <th>HT</th>
                        <th>BTS</th>
                        <th>Over 2.5</th>
                        <th>Recomendación de Apuesta</th>
                        <th>Acciones</th>
                    </tr>
                </thead>
                <tbody id="results-table-body">
                    <!-- Filas de resultados se agregarán aquí -->
                </tbody>
            </table>
        </div>
        <div id="confirmModal" class="confirm-modal">
            <div class="confirm-modal-content">
                <span class="close" id="close-confirm-modal">&times;</span>
                <h2>Confirmación</h2>
                <p id="confirm-message"></p>
                <div class="confirm-buttons">
                    <button class="btn btn-confirm" id="confirm-delete-btn">Confirmar</button>
                    <button class="btn btn-cancel" id="cancel-delete-btn">Cancelar</button>
                </div>
            </div>
        </div>
        <div id="detailModal" class="detail-modal">
            <div class="detail-modal-content">
                <span class="close" id="close-detail-modal">&times;</span>
                <div class="team-names" id="detail-team-names"></div>
                <div class="details" id="detail-details">
                    <div class="detail-item">
                        <label>Over 2.5:</label>
                        <span id="detail-over25"></span>
                    </div>
                    <div class="detail-item">
                        <label>BTS:</label>
                        <span id="detail-bts"></span>
                    </div>
                    <div class="detail-item">
                        <label>HT:</label>
                        <span id="detail-ht"></span>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="info-icon" id="info-icon">&#9432;</div>

    <!-- Modal -->
    <div id="myModal" class="modal">
        <div class="modal-content">
            <span class="close" id="close-info-modal">&times;</span>
            <h2>Instrucciones</h2>
            <p>Bienvenido al Predictor de Apuestas Deportivas.</p>
            <p>Para utilizar esta página, sigue estos pasos:</p>
            <ol>
                <li>Ingresa el nombre del equipo local y del equipo visitante en los campos correspondientes.</li>
                <li>Especifica las probabilidades para Over 2.5, BTS (Ambos Equipos Marcan) y HT (Primer Tiempo) ingresando un valor entre 0 y 100 en formato de porcentaje.</li>
                <li>Haz clic en el botón "Analizar" para obtener una predicción basada en los datos ingresados.</li>
                <li>Haz clic en el botón "Limpiar" para borrar todos los campos y comenzar de nuevo.</li>
                <li>Haz clic en el botón "Guardar" para almacenar los resultados en la tabla de resultados guardados.</li>
            </ol>
        </div>
    </div>

    <script>
        // Get the modals
        var infoModal = document.getElementById("myModal");
        var resultModal = document.getElementById("resultModal");
        var confirmModal = document.getElementById("confirmModal");
        var detailModal = document.getElementById("detailModal");

        // Get the buttons that open the modals
        var infoBtn = document.getElementById("info-icon");
        var analyzeBtn = document.getElementById("analyze-btn");
        var saveBtn = document.getElementById("save-btn");
        var clearBtn = document.getElementById("clear-btn");

        // Get the <span> elements that close the modals
        var infoSpan = document.getElementById("close-info-modal");
        var resultSpan = document.getElementById("close-result-modal");
        var confirmSpan = document.getElementById("close-confirm-modal");
        var detailSpan = document.getElementById("close-detail-modal");

        // Get the confirm buttons
        var confirmDeleteBtn = document.getElementById("confirm-delete-btn");
        var cancelDeleteBtn = document.getElementById("cancel-delete-btn");

        // Variable to store the row to be deleted
        var rowToDelete = null;

        // When the user clicks the info button, open the info modal 
        infoBtn.onclick = function() {
            infoModal.style.display = "block";
        }

        // When the user clicks the analyze button, calculate and open the result modal 
        analyzeBtn.onclick = function() {
            calculateProbabilities();
            resultModal.style.display = "block";
        }

        // When the user clicks the save button, save the results
        saveBtn.onclick = function() {
            saveResults();
        }

        // When the user clicks the clear button, clear the inputs and reset the results table
        clearBtn.onclick = function() {
            clearInputs();
            resetResultsTable();
        }

        // When the user clicks on <span> (x), close the modals
        infoSpan.onclick = function() {
            infoModal.style.display = "none";
        }
        resultSpan.onclick = function() {
            resultModal.style.display = "none";
        }
        confirmSpan.onclick = function() {
            confirmModal.style.display = "none";
        }
        detailSpan.onclick = function() {
            detailModal.style.display = "none";
        }

        // When the user clicks anywhere outside of the modals, close them
        window.onclick = function(event) {
            if (event.target == infoModal) {
                infoModal.style.display = "none";
            }
            if (event.target == resultModal) {
                resultModal.style.display = "none";
            }
            if (event.target == confirmModal) {
                confirmModal.style.display = "none";
            }
            if (event.target == detailModal) {
                detailModal.style.display = "none";
            }
        }

        // Clear inputs
        function clearInputs() {
            const inputs = document.querySelectorAll('input[type="text"], input[type="number"]');
            inputs.forEach(input => input.value = '');
        }

        // Reset results table
        function resetResultsTable() {
            const tableBody = document.getElementById('results-table-body');
            tableBody.innerHTML = '';
        }

        // Function to calculate probabilities
        function calculateProbabilities() {
            const localOver25 = parseFloat(document.getElementById('local-over25').value) || 0;
            const visitorOver25 = parseFloat(document.getElementById('visitor-over25').value) || 0;
            const localBTS = parseFloat(document.getElementById('local-bts').value) || 0;
            const visitorBTS = parseFloat(document.getElementById('visitor-bts').value) || 0;
            const localHT = parseFloat(document.getElementById('local-ht').value) || 0;
            const visitorHT = parseFloat(document.getElementById('visitor-ht').value) || 0;

            const combinedOver25 = ((localOver25 + visitorOver25) / 2).toFixed(2);
            const combinedBTS = ((localBTS + visitorBTS) / 2).toFixed(2);
            const combinedHT = ((localHT + visitorHT) / 2).toFixed(2);

            document.getElementById('result-over25-text').textContent = `Over 2.5: ${combinedOver25}%`;
            document.getElementById('result-bts-text').textContent = `BTS (Ambos Equipos Marcan): ${combinedBTS}%`;
            document.getElementById('result-ht-text').textContent = `HT (Primer Tiempo): ${combinedHT}%`;

            // Save the calculated values for saving later
            saveBtn.dataset.over25 = combinedOver25;
            saveBtn.dataset.bts = combinedBTS;
            saveBtn.dataset.ht = combinedHT;
            saveBtn.dataset.localTeam = document.getElementById('local-team').value;
            saveBtn.dataset.visitorTeam = document.getElementById('visitor-team').value;
        }

        // Function to save results
        function saveResults() {
            const over25 = parseFloat(saveBtn.dataset.over25);
            const bts = parseFloat(saveBtn.dataset.bts);
            const ht = parseFloat(saveBtn.dataset.ht);
            const localTeam = saveBtn.dataset.localTeam;
            const visitorTeam = saveBtn.dataset.visitorTeam;

            if (!localTeam || !visitorTeam || isNaN(over25) || isNaN(bts) || isNaN(ht)) {
                alert("Por favor, completa todos los campos antes de guardar.");
                return;
            }

            const recommendation = getRecommendation(over25, bts, ht);

            const tableBody = document.getElementById('results-table-body');
            const newRow = document.createElement('tr');

            const cellTeams = document.createElement('td');
            const cellHT = document.createElement('td');
            const cellBTS = document.createElement('td');
            const cellOver25 = document.createElement('td');
            const cellRecommendation = document.createElement('td');
            const cellActions = document.createElement('td');

            cellTeams.textContent = `${localTeam} vs ${visitorTeam}`;
            cellHT.textContent = `${ht.toFixed(2)}%`;
            cellBTS.textContent = `${bts.toFixed(2)}%`;
            cellOver25.textContent = `${over25.toFixed(2)}%`;
            cellRecommendation.innerHTML = `<span class="recommendation">${recommendation}</span>`;

            // Add action icons
            const actionIcons = document.createElement('div');
            actionIcons.className = 'action-icons';

            const viewIcon = document.createElement('span');
            viewIcon.className = 'icon view';
            viewIcon.innerHTML = '&#128065;'; // Icono de ver resultados
            viewIcon.title = 'Ver Resultados';
            viewIcon.onclick = function() {
                showResultDetails(localTeam, visitorTeam, over25, bts, ht);
            };

            const deleteIcon = document.createElement('span');
            deleteIcon.className = 'icon delete';
            deleteIcon.innerHTML = '&#10060;'; // Icono de eliminar
            deleteIcon.title = 'Eliminar';
            deleteIcon.onclick = function() {
                confirmDeletion(newRow, localTeam, visitorTeam, recommendation);
            };

            actionIcons.appendChild(viewIcon);
            actionIcons.appendChild(deleteIcon);

            cellActions.appendChild(actionIcons);

            // Insert the new row at the beginning of the table body
            tableBody.insertBefore(newRow, tableBody.firstChild);

            newRow.appendChild(cellTeams);
            newRow.appendChild(cellHT);
            newRow.appendChild(cellBTS);
            newRow.appendChild(cellOver25);
            newRow.appendChild(cellRecommendation);
            newRow.appendChild(cellActions);
        }

        // Function to show result details in a modal
        function showResultDetails(localTeam, visitorTeam, over25, bts, ht) {
            document.getElementById('detail-team-names').textContent = `${localTeam} vs ${visitorTeam}`;
            document.getElementById('detail-over25').textContent = `${over25.toFixed(2)}%`;
            document.getElementById('detail-bts').textContent = `${bts.toFixed(2)}%`;
            document.getElementById('detail-ht').textContent = `${ht.toFixed(2)}%`;

            detailModal.style.display = "block";
        }

        // Function to confirm deletion
        function confirmDeletion(row, localTeam, visitorTeam, recommendation) {
            rowToDelete = row;
            const confirmMessage = `¿Está seguro de que desea eliminar? ${localTeam} vs ${visitorTeam} (${recommendation})`;
            document.getElementById('confirm-message').textContent = confirmMessage;
            confirmModal.style.display = "block";
        }

        // When the user clicks the confirm delete button, delete the row
        confirmDeleteBtn.onclick = function() {
            if (rowToDelete) {
                rowToDelete.remove();
                rowToDelete = null;
                confirmModal.style.display = "none";
            }
        }

        // When the user clicks the cancel delete button, close the confirm modal
        cancelDeleteBtn.onclick = function() {
            rowToDelete = null;
            confirmModal.style.display = "none";
        }

        // Function to determine recommendation
        function getRecommendation(over25, bts, ht) {
            const over25Parsed = parseFloat(over25);
            const btsParsed = parseFloat(bts);
            const htParsed = parseFloat(ht);

            if (over25Parsed > 70 && btsParsed > 75 && htParsed > 70) {
                return "Apostar en Over 2.5";
            } else if (over25Parsed > 70 && btsParsed > 70 && htParsed > 65) {
                return "Apostar en Over 1.5";
            } else if (over25Parsed > 75 && btsParsed > 70 && htParsed > 65) {
                return "Apostar en BTS";
            } else if (over25Parsed > 70 && btsParsed > 75 && htParsed > 70 && over25Parsed > 70 && btsParsed > 70 && htParsed > 65 && over25Parsed > 75 && btsParsed > 70 && htParsed > 65) {
                return "Apostar en cualquier mercado";
            } else {
                return "No Apostar";
            }
        }
    </script>
</body>
</html>


me divide este codigo separado por los html, css y bts quieor el codigo completo para cada arciho sin saltar ninguna linea
ASSISTANT
Claro, aquí está el código dividido en los tres archivos solicitados: `index.html`, `styles.css`, y `script.js`. Cada archivo contiene el código completo sin que se salte ninguna línea.

### Archivo 1: `index.html`
```html
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Predictor de Apuestas Deportivas</title>
    <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600&display=swap" rel="stylesheet">
    <link rel="stylesheet" href="styles.css">
</head>
<body>
    <div class="container">
        <div class="card">
            <h2>Equipo Local</h2>
            <div class="form-group">
                <label for="local-team">Nombre del Equipo:</label>
                <input type="text" id="local-team" placeholder="Equipo Local">
            </div>
            <div class="checkbox-group">
                <label>Over 2.5:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="local-over25">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
                <label>BTS:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="local-bts">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
                <label>HT:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="local-ht">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
            </div>
        </div>
        <div class="card">
            <h2>Equipo Visitante</h2>
            <div class="form-group">
                <label for="visitor-team">Nombre del Equipo:</label>
                <input type="text" id="visitor-team" placeholder="Equipo Visitante">
            </div>
            <div class="checkbox-group">
                <label>Over 2.5:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="visitor-over25">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
                <label>BTS:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="visitor-bts">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
                <label>HT:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="visitor-ht">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
            </div>
        </div>
        <div class="button-container" style="width: 100%; max-width: 600px;">
            <button class="btn btn-analyze" id="analyze-btn">Analizar</button>
            <button class="btn btn-clear" id="clear-btn">Limpiar</button>
            <button class="btn btn-save" id="save-btn"><span>&#9989;</span> Guardar</button>
        </div>
        <div id="resultModal" class="modal">
            <div class="modal-content">
                <span class="close" id="close-result-modal">&times;</span>
                <h2>Resultados</h2>
                <div id="result-over25" class="result-card over25">
                    <span class="icon">&#9650;</span> <!-- Icono de gráfico de barras -->
                    <span id="result-over25-text"></span>
                </div>
                <div id="result-bts" class="result-card bts">
                    <span class="icon">&#9917;</span> <!-- Icono de balón -->
                    <span id="result-bts-text"></span>
                </div>
                <div id="result-ht" class="result-card ht">
                    <span class="icon">&#9201;</span> <!-- Icono de reloj -->
                    <span id="result-ht-text"></span>
                </div>
            </div>
        </div>
        <div class="saved-results">
            <table>
                <thead>
                    <tr>
                        <th>Equipos</th>
                        <th>HT</th>
                        <th>BTS</th>
                        <th>Over 2.5</th>
                        <th>Recomendación de Apuesta</th>
                        <th>Acciones</th>
                    </tr>
                </thead>
                <tbody id="results-table-body">
                    <!-- Filas de resultados se agregarán aquí -->
                </tbody>
            </table>
        </div>
        <div id="confirmModal" class="confirm-modal">
            <div class="confirm-modal-content">
                <span class="close" id="close-confirm-modal">&times;</span>
                <h2>Confirmación</h2>
                <p id="confirm-message"></p>
                <div class="confirm-buttons">
                    <button class="btn btn-confirm" id="confirm-delete-btn">Confirmar</button>
                    <button class="btn btn-cancel" id="cancel-delete-btn">Cancelar</button>
                </div>
            </div>
        </div>
        <div id="detailModal" class="detail-modal">
            <div class="detail-modal-content">
                <span class="close" id="close-detail-modal">&times;</span>
                <div class="team-names" id="detail-team-names"></div>
                <div class="details" id="detail-details">
                    <div class="detail-item">
                        <label>Over 2.5:</label>
                        <span id="detail-over25"></span>
                    </div>
                    <div class="detail-item">
                        <label>BTS:</label>
                        <span id="detail-bts"></span>
                    </div>
                    <div class="detail-item">
                        <label>HT:</label>
                        <span id="detail-ht"></span>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="info-icon" id="info-icon">&#9432;</div>
    <div id="myModal" class="modal">
        <div class="modal-content">
            <span class="close" id="close-info-modal">&times;</span>
            <h2>Instrucciones</h2>
            <p>Bienvenido al Predictor de Apuestas Deportivas.</p>
            <p>Para utilizar esta página, sigue estos pasos:</p>
            <ol>
                <li>Ingresa el nombre del equipo local y del equipo visitante en los campos correspondientes.</li>
                <li>Especifica las probabilidades para Over 2.5, BTS (Ambos Equipos Marcan) y HT (Primer Tiempo) ingresando un valor entre 0 y 100 en formato de porcentaje.</li>
                <li>Haz clic en el botón "Analizar" para obtener una predicción basada en los datos ingresados.</li>
                <li>Haz clic en el botón "Limpiar" para borrar todos los campos y comenzar de nuevo.</li>
                <li>Haz clic en el botón "Guardar" para almacenar los resultados en la tabla de resultados guardados.</li>
            </ol>
        </div>
    </div>
    <script src="script.js"></script>
</body>
</html>
```

### Archivo 2: `styles.css`
```css
body {
    font-family: 'Poppins', sans-serif;
    margin: 0;
    padding: 0;
    background-color: rgba(173, 216, 230, 0.2); /* Fondo azul claro desvanecido */
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 100vh;
    position: relative;
}
.container {
    width: 90%;
    max-width: 1200px;
    display: flex;
    flex-wrap: wrap;
    gap: 20px;
}
.card {
    background-color: #e0f7fa;
    border-radius: 10px;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
    flex: 1;
    min-width: 300px;
    padding: 20px;
    transition: transform 0.2s ease;
}
.card:hover {
    transform: translateY(-5px);
}
.card h2 {
    color: #003366;
    margin-bottom: 15px;
    text-align: center;
}
.form-group {
    margin-bottom: 15px;
}
.form-group label {
    color: #003366;
    display: block;
    margin-bottom: 5px;
}
.form-group input[type="text"] {
    width: 100%;
    padding: 10px;
    border: 1px solid #ccc;
    border-radius: 5px;
    background-color: #ffffff;
    box-sizing: border-box;
    transition: border-color 0.3s ease, box-shadow 0.3s ease;
}
.form-group input[type="text"]:hover {
    border-color: #4caf50;
    box-shadow: 0 0 5px rgba(76, 175, 80, 0.4);
}
.checkbox-group {
    display: flex;
    flex-direction: column;
}
.checkbox-group label {
    display: flex;
    align-items: center;
    color: #003366;
    margin-bottom: 10px;
}
.checkbox-group .input-container {
    display: flex;
    width: 100%;
    align-items: center;
}
.checkbox-group input[type="number"] {
    width: calc(100% - 25px);
    padding: 10px;
    border: 1px solid #ccc;
    border-radius: 5px;
    background-color: #ffffff;
    box-sizing: border-box;
    transition: border-color 0.3s ease, box-shadow 0.3s ease;
}
.checkbox-group input[type="number"]:hover {
    border-color: #4caf50;
    box-shadow: 0 0 5px rgba(76, 175, 80, 0.4);
}
.checkbox-group .percent-sign {
    color: #003366;
    margin-left: 5px;
}
.button-container {
    display: flex;
    justify-content: space-between;
    margin-top: 20px;
}
.btn {
    padding: 10px 20px;
    border: none;
    border-radius: 5px;
    cursor: pointer;
    transition: background-color 0.3s ease, transform 0.2s ease;
}
.btn-analyze {
    background-color: #4caf50;
    color: white;
}
.btn-analyze:hover {
    background-color: #45a049;
    transform: translateY(-2px);
}
.btn-clear {
    background-color: #003366;
    color: white;
    border: 2px solid #4caf50;
}
.btn-clear:hover {
    background-color: #4caf50;
    color: #003366;
    transform: translateY(-2px);
}
.btn-save {
    background-color: #ff9800;
    color: white;
}
.btn-save:hover {
    background-color: #e67e22;
    transform: translateY(-2px);
}
.info-icon {
    position: absolute;
    top: 20px;
    right: 20px;
    font-size: 24px;
    color: #4caf50;
    cursor: pointer;
    transition: color 0.3s ease;
}
.info-icon:hover {
    color: #45a049;
}
.modal {
    display: none;
    position: fixed;
    z-index: 1;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    overflow: auto;
    background-color: rgba(0, 0, 0, 0.5);
}
.modal-content {
    background-color: #ffffff;
    margin: 15% auto;
    padding: 20px;
    border: 1px solid #888;
    border-radius: 10px;
    width: 80%;
    max-width: 500px;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
}
.close {
    color: #aaa;
    float: right;
    font-size: 28px;
    font-weight: bold;
    cursor: pointer;
}
.close:hover,
.close:focus {
    color: black;
    text-decoration: none;
    cursor: pointer;
}
.result-card {
    background-color: #f9f9f9;
    border-radius: 10px;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
    padding: 15px;
    margin-bottom: 15px;
    display: flex;
    align-items: center;
}
.result-card .icon {
    font-size: 24px;
    margin-right: 10px;
}
.result-card.over25 .icon {
    color: #4caf50;
}
.result-card.bts .icon {
    color: #ff9800;
}
.result-card.ht .icon {
    color: #003366;
}
.saved-results {
    margin-top: 20px;
    width: 100%;
    max-width: 1200px;
    overflow-x: auto;
}
.saved-results table {
    width: 100%;
    border-collapse: collapse;
}
.saved-results th, .saved-results td {
    padding: 10px;
    text-align: left;
    border-bottom: 1px solid #ddd;
}
.saved-results th {
    background-color: #e0f7fa;
}
.saved-results tr:nth-child(even) {
    background-color: #f9f9f9;
}
.saved-results tr:nth-child(odd) {
    background-color: #ffffff;
}
.recommendation {
    font-weight: bold;
}
.action-icons {
    display: flex;
    align-items: center;
}
.action-icons .icon {
    font-size: 24px;
    margin-right: 10px;
    cursor: pointer;
    transition: color 0.3s ease;
}
.action-icons .icon:hover {
    color: #4caf50;
}
.action-icons .icon.delete:hover {
    color: #ff4d4d;
}
.confirm-modal {
    display: none;
    position: fixed;
    z-index: 2;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    overflow: auto;
    background-color: rgba(0, 0, 0, 0.5);
}
.confirm-modal-content {
    background-color: #ffffff;
    margin: 15% auto;
    padding: 20px;
    border: 1px solid #888;
    border-radius: 10px;
    width: 80%;
    max-width: 400px;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
}
.confirm-modal .close {
    color: #aaa;
    float: right;
    font-size: 28px;
    font-weight: bold;
    cursor: pointer;
}
.confirm-modal .close:hover,
.confirm-modal .close:focus {
    color: black;
    text-decoration: none;
    cursor: pointer;
}
.confirm-modal .confirm-buttons {
    display: flex;
    justify-content: space-between;
    margin-top: 20px;
}
.confirm-modal .confirm-buttons .btn {
    padding: 10px 20px;
    border: none;
    border-radius: 5px;
    cursor: pointer;
    transition: background-color 0.3s ease, transform 0.2s ease;
}
.confirm-modal .confirm-buttons .btn-confirm {
    background-color: #4caf50;
    color: white;
}
.confirm-modal .confirm-buttons .btn-confirm:hover {
    background-color: #45a049;
    transform: translateY(-2px);
}
.confirm-modal .confirm-buttons .btn-cancel {
    background-color: #003366;
    color: white;
    border: 2px solid #4caf50;
}
.confirm-modal .confirm-buttons .btn-cancel:hover {
    background-color: #4caf50;
    color: #003366;
    transform: translateY(-2px);
}
.detail-modal {
    display: none;
    position: fixed;
    z-index: 1;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    overflow: auto;
    background-color: rgba(0, 0, 0, 0.5);
}
.detail-modal-content {
    background-color: #ffffff;
    margin: 15% auto;
    padding: 20px;
    border: 1px solid #888;
    border-radius: 10px;
    width: 80%;
    max-width: 500px;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
}
.detail-modal .close {
    color: #aaa;
    float: right;
    font-size: 28px;
    font-weight: bold;
    cursor: pointer;
}
.detail-modal .close:hover,
.detail-modal .close:focus {
    color: black;
    text-decoration: none;
    cursor: pointer;
}
.detail-modal .team-names {
    text-align: center;
    margin-bottom: 20px;
    font-size: 1.5em;
    font-weight: bold;
    color: #003366;
}
.detail-modal .details {
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.detail-modal .details .detail-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
}
.detail-modal .details .detail-item label {
    font-weight: bold;
    color: #003366;
}
.detail-modal .details .detail-item span {
    color: #003366;
}
@media (max-width: 768px) {
    .container {
        flex-direction: column;
        align-items: center;
    }
}
```

### Archivo 3: `script.js`
```javascript
// Get the modals
var infoModal = document.getElementById("myModal");
var resultModal = document.getElementById("resultModal");
var confirmModal = document.getElementById("confirmModal");
var detailModal = document.getElementById("detailModal");

// Get the buttons that open the modals
var infoBtn = document.getElementById("info-icon");
var analyzeBtn = document.getElementById("analyze-btn");
var saveBtn = document.getElementById("save-btn");
var clearBtn = document.getElementById("clear-btn");

// Get the <span> elements that close the modals
var infoSpan = document.getElementById("close-info-modal");
var resultSpan = document.getElementById("close-result-modal");
var confirmSpan = document.getElementById("close-confirm-modal");
var detailSpan = document.getElementById("close-detail-modal");

// Get the confirm buttons
var confirmDeleteBtn = document.getElementById("confirm-delete-btn");
var cancelDeleteBtn = document.getElementById("cancel-delete-btn");

// Variable to store the row to be deleted
var rowToDelete = null;

// When the user clicks the info button, open the info modal 
infoBtn.onclick = function() {
    infoModal.style.display = "block";
}

// When the user clicks the analyze button, calculate and open the result modal 
analyzeBtn.onclick = function() {
    calculateProbabilities();
    resultModal.style.display = "block";
}

// When the user clicks the save button, save the results
saveBtn.onclick = function() {
    saveResults();
}

// When the user clicks the clear button, clear the inputs and reset the results table
clearBtn.onclick = function() {
    clearInputs();
    resetResultsTable();
}

// When the user clicks on <span> (x), close the modals
infoSpan.onclick = function() {
    infoModal.style.display = "none";
}
resultSpan.onclick = function() {
    resultModal.style.display = "none";
}
confirmSpan.onclick = function() {
    confirmModal.style.display = "none";
}
detailSpan.onclick = function() {
    detailModal.style.display = "none";
}

// When the user clicks anywhere outside of the modals, close them
window.onclick = function(event) {
    if (event.target == infoModal) {
        infoModal.style.display = "none";
    }
    if (event.target == resultModal) {
        resultModal.style.display = "none";
    }
    if (event.target == confirmModal) {
        confirmModal.style.display = "none";
    }
    if (event.target == detailModal) {
        detailModal.style.display = "none";
    }
}

// Clear inputs
function clearInputs() {
    const inputs = document.querySelectorAll('input[type="text"], input[type="number"]');
    inputs.forEach(input => input.value = '');
}

// Reset results table
function resetResultsTable() {
    const tableBody = document.getElementById('results-table-body');
    tableBody.innerHTML = '';
}

// Function to calculate probabilities
function calculateProbabilities() {
    const localOver25 = parseFloat(document.getElementById('local-over25').value) || 0;
    const visitorOver25 = parseFloat(document.getElementById('visitor-over25').value) || 0;
    const localBTS = parseFloat(document.getElementById('local-bts').value) || 0;
    const visitorBTS = parseFloat(document.getElementById('visitor-bts').value) || 0;
    const localHT = parseFloat(document.getElementById('local-ht').value) || 0;
    const visitorHT = parseFloat(document.getElementById('visitor-ht').value) || 0;

    const combinedOver25 = ((localOver25 + visitorOver25) / 2).toFixed(2);
    const combinedBTS = ((localBTS + visitorBTS) / 2).toFixed(2);
    const combinedHT = ((localHT + visitorHT) / 2).toFixed(2);

    document.getElementById('result-over25-text').textContent = `Over 2.5: ${combinedOver25}%`;
    document.getElementById('result-bts-text').textContent = `BTS (Ambos Equipos Marcan): ${combinedBTS}%`;
    document.getElementById('result-ht-text').textContent = `HT (Primer Tiempo): ${combinedHT}%`;

    // Save the calculated values for saving later
    saveBtn.dataset.over25 = combinedOver25;
    saveBtn.dataset.bts = combinedBTS;
    saveBtn.dataset.ht = combinedHT;
    saveBtn.dataset.localTeam = document.getElementById('local-team').value;
    saveBtn.dataset.visitorTeam = document.getElementById('visitor-team').value;
}

// Function to save results
function saveResults() {
    const over25 = parseFloat(saveBtn.dataset.over25);
    const bts = parseFloat(saveBtn.dataset.bts);
    const ht = parseFloat(saveBtn.dataset.ht);
    const localTeam = saveBtn.dataset.localTeam;
    const visitorTeam = saveBtn.dataset.visitorTeam;

    if (!localTeam || !visitorTeam || isNaN(over25) || isNaN(bts) || isNaN(ht)) {
        alert("Por favor, completa todos los campos antes de guardar.");
        return;
    }

    const recommendation = getRecommendation(over25, bts, ht);

    const tableBody = document.getElementById('results-table-body');
    const newRow = document.createElement('tr');

    const cellTeams = document.createElement('td');
    const cellHT = document.createElement('td');
    const cellBTS = document.createElement('td');
    const cellOver25 = document.createElement('td');
    const cellRecommendation = document.createElement('td');
    const cellActions = document.createElement('td');

    cellTeams.textContent = `${localTeam} vs ${visitorTeam}`;
    cellHT.textContent = `${ht.toFixed(2)}%`;
    cellBTS.textContent = `${bts.toFixed(2)}%`;
    cellOver25.textContent = `${over25.toFixed(2)}%`;
    cellRecommendation.innerHTML = `<span class="recommendation">${recommendation}</span>`;

    // Add action icons
    const actionIcons = document.createElement('div');
    actionIcons.className = 'action-icons';

    const viewIcon = document.createElement('span');
    viewIcon.className = 'icon view';
    viewIcon.innerHTML = '&#128065;'; // Icono de ver resultados
    viewIcon.title = 'Ver Resultados';
    viewIcon.onclick = function() {
        showResultDetails(localTeam, visitorTeam, over25, bts, ht);
    };

    const deleteIcon = document.createElement('span');
    deleteIcon.className = 'icon delete';
    deleteIcon.innerHTML = '&#10060;'; // Icono de eliminar
    deleteIcon.title = 'Eliminar';
    deleteIcon.onclick = function() {
        confirmDeletion(newRow, localTeam, visitorTeam, recommendation);
    };

    actionIcons.appendChild(viewIcon);
    actionIcons.appendChild(deleteIcon);

    cellActions.appendChild(actionIcons);

    // Insert the new row at the beginning of the table body
    tableBody.insertBefore(newRow, tableBody.firstChild);

    newRow.appendChild(cellTeams);
    newRow.appendChild(cellHT);
    newRow.appendChild(cellBTS);
    newRow.appendChild(cellOver25);
    newRow.appendChild(cellRecommendation);
    newRow.appendChild(cellActions);
}

// Function to show result details in a modal
function showResultDetails(localTeam, visitorTeam, over25, bts, ht) {
    document.getElementById('detail-team-names').textContent = `${localTeam} vs ${visitorTeam}`;
    document.getElementById('detail-over25').textContent = `${over25.toFixed(2)}%`;
    document.getElementById('detail-bts').textContent = `${bts.toFixed(2)}%`;
    document.getElementById('detail-ht').textContent = `${ht.toFixed(2)}%`;

    detailModal.style.display = "block";
}

// Function to confirm deletion
function confirmDeletion(row, localTeam, visitorTeam, recommendation) {
    rowToDelete = row;
    const confirmMessage = `¿Está seguro de que desea eliminar? ${localTeam} vs ${visitorTeam} (${recommendation})`;
    document.getElementById('confirm-message').textContent = confirmMessage;
    confirmModal.style.display = "block";
}

// When the user clicks the confirm delete button, delete the row
confirmDeleteBtn.onclick = function() {
    if (rowToDelete) {
        rowToDelete.remove();
        rowToDelete = null;
        confirmModal.style.display = "none";
    }
}

// When the user clicks the cancel delete button, close the confirm modal
cancelDeleteBtn.onclick = function() {
    rowToDelete = null;
    confirmModal.style.display = "none";
}

// Function to determine recommendation
function getRecommendation(over25, bts, ht) {
    const over25Parsed = parseFloat(over25);
    const btsParsed = parseFloat(bts);
    const htParsed = parseFloat(ht);

    if (over25Parsed > 70 && btsParsed > 75 && htParsed > 70) {
        return "Apostar en Over 2.5";
    } else if (over25Parsed > 70 && btsParsed > 70 && htParsed > 65) {
        return "Apostar en Over 1.5";
    } else if (over25Parsed > 75 && btsParsed > 70 && htParsed > 65) {
        return "Apostar en BTS";
    } else if (over25Parsed > 70 && btsParsed > 75 && htParsed > 70 && over25Parsed > 70 && btsParsed > 70 && htParsed > 65 && over25Parsed > 75 && btsParsed > 70 && htParsed > 65) {
        return "Apostar en cualquier mercado";
    } else {
        return "No Apostar";
    }
}
```

---

Asegúrate de que al utilizar estos archivos, todos estén en la misma carpeta y que `index.html` se enlace correctamente a `styles.css` y `script.js`. ¡Disfruta trabajando con tu proyecto!

turns-00051.parquet:21632

fd395ec8adf7fa153495c2c6
turn 5/8gpt-4o-mini-2024-07-18EnglishColombia4347 words
degenerate_repetitionAbsentFinal dense release
USER
me divide este codigo completo sin saltar ni una linea los quiero entero completo 
dividerlo en Css, html y javascript

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Predictor de Apuestas Deportivas</title>
    <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600&display=swap" rel="stylesheet">
    <style>
        body {
            font-family: 'Poppins', sans-serif;
            margin: 0;
            padding: 0;
            background-color: rgba(173, 216, 230, 0.2); /* Fondo azul claro desvanecido */
            display: flex;
            justify-content: center;
            align-items: center;
            min-height: 100vh;
            position: relative;
        }
        .container {
            width: 90%;
            max-width: 1200px;
            display: flex;
            flex-wrap: wrap;
            gap: 20px;
        }
        .card {
            background-color: #e0f7fa;
            border-radius: 10px;
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
            flex: 1;
            min-width: 300px;
            padding: 20px;
            transition: transform 0.2s ease;
        }
        .card:hover {
            transform: translateY(-5px);
        }
        .card h2 {
            color: #003366;
            margin-bottom: 15px;
            text-align: center;
        }
        .form-group {
            margin-bottom: 15px;
        }
        .form-group label {
            color: #003366;
            display: block;
            margin-bottom: 5px;
        }
        .form-group input[type="text"] {
            width: 100%;
            padding: 10px;
            border: 1px solid #ccc;
            border-radius: 5px;
            background-color: #ffffff;
            box-sizing: border-box;
            transition: border-color 0.3s ease, box-shadow 0.3s ease;
        }
        .form-group input[type="text"]:hover {
            border-color: #4caf50;
            box-shadow: 0 0 5px rgba(76, 175, 80, 0.4);
        }
        .checkbox-group {
            display: flex;
            flex-direction: column;
        }
        .checkbox-group label {
            display: flex;
            align-items: center;
            color: #003366;
            margin-bottom: 10px;
        }
        .checkbox-group .input-container {
            display: flex;
            width: 100%;
            align-items: center;
        }
        .checkbox-group input[type="number"] {
            width: calc(100% - 25px);
            padding: 10px;
            border: 1px solid #ccc;
            border-radius: 5px;
            background-color: #ffffff;
            box-sizing: border-box;
            transition: border-color 0.3s ease, box-shadow 0.3s ease;
        }
        .checkbox-group input[type="number"]:hover {
            border-color: #4caf50;
            box-shadow: 0 0 5px rgba(76, 175, 80, 0.4);
        }
        .checkbox-group .percent-sign {
            color: #003366;
            margin-left: 5px;
        }
        .button-container {
            display: flex;
            justify-content: space-between;
            margin-top: 20px;
        }
        .btn {
            padding: 10px 20px;
            border: none;
            border-radius: 5px;
            cursor: pointer;
            transition: background-color 0.3s ease, transform 0.2s ease;
        }
        .btn-analyze {
            background-color: #4caf50;
            color: white;
        }
        .btn-analyze:hover {
            background-color: #45a049;
            transform: translateY(-2px);
        }
        .btn-clear {
            background-color: #003366;
            color: white;
            border: 2px solid #4caf50;
        }
        .btn-clear:hover {
            background-color: #4caf50;
            color: #003366;
            transform: translateY(-2px);
        }
        .btn-save {
            background-color: #ff9800;
            color: white;
        }
        .btn-save:hover {
            background-color: #e67e22;
            transform: translateY(-2px);
        }
        .info-icon {
            position: absolute;
            top: 20px;
            right: 20px;
            font-size: 24px;
            color: #4caf50;
            cursor: pointer;
            transition: color 0.3s ease;
        }
        .info-icon:hover {
            color: #45a049;
        }
        .modal {
            display: none;
            position: fixed;
            z-index: 1;
            left: 0;
            top: 0;
            width: 100%;
            height: 100%;
            overflow: auto;
            background-color: rgba(0, 0, 0, 0.5);
        }
        .modal-content {
            background-color: #ffffff;
            margin: 15% auto;
            padding: 20px;
            border: 1px solid #888;
            border-radius: 10px;
            width: 80%;
            max-width: 500px;
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
        }
        .close {
            color: #aaa;
            float: right;
            font-size: 28px;
            font-weight: bold;
            cursor: pointer;
        }
        .close:hover,
        .close:focus {
            color: black;
            text-decoration: none;
            cursor: pointer;
        }
        .result-card {
            background-color: #f9f9f9;
            border-radius: 10px;
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
            padding: 15px;
            margin-bottom: 15px;
            display: flex;
            align-items: center;
        }
        .result-card .icon {
            font-size: 24px;
            margin-right: 10px;
        }
        .result-card.over25 .icon {
            color: #4caf50;
        }
        .result-card.bts .icon {
            color: #ff9800;
        }
        .result-card.ht .icon {
            color: #003366;
        }
        .saved-results {
            margin-top: 20px;
            width: 100%;
            max-width: 1200px;
            overflow-x: auto;
        }
        .saved-results table {
            width: 100%;
            border-collapse: collapse;
        }
        .saved-results th, .saved-results td {
            padding: 10px;
            text-align: left;
            border-bottom: 1px solid #ddd;
        }
        .saved-results th {
            background-color: #e0f7fa;
        }
        .saved-results tr:nth-child(even) {
            background-color: #f9f9f9;
        }
        .saved-results tr:nth-child(odd) {
            background-color: #ffffff;
        }
        .recommendation {
            font-weight: bold;
        }
        .action-icons {
            display: flex;
            align-items: center;
        }
        .action-icons .icon {
            font-size: 24px;
            margin-right: 10px;
            cursor: pointer;
            transition: color 0.3s ease;
        }
        .action-icons .icon:hover {
            color: #4caf50;
        }
        .action-icons .icon.delete:hover {
            color: #ff4d4d;
        }
        .confirm-modal {
            display: none;
            position: fixed;
            z-index: 2;
            left: 0;
            top: 0;
            width: 100%;
            height: 100%;
            overflow: auto;
            background-color: rgba(0, 0, 0, 0.5);
        }
        .confirm-modal-content {
            background-color: #ffffff;
            margin: 15% auto;
            padding: 20px;
            border: 1px solid #888;
            border-radius: 10px;
            width: 80%;
            max-width: 400px;
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
        }
        .confirm-modal .close {
            color: #aaa;
            float: right;
            font-size: 28px;
            font-weight: bold;
            cursor: pointer;
        }
        .confirm-modal .close:hover,
        .confirm-modal .close:focus {
            color: black;
            text-decoration: none;
            cursor: pointer;
        }
        .confirm-modal .confirm-buttons {
            display: flex;
            justify-content: space-between;
            margin-top: 20px;
        }
        .confirm-modal .confirm-buttons .btn {
            padding: 10px 20px;
            border: none;
            border-radius: 5px;
            cursor: pointer;
            transition: background-color 0.3s ease, transform 0.2s ease;
        }
        .confirm-modal .confirm-buttons .btn-confirm {
            background-color: #4caf50;
            color: white;
        }
        .confirm-modal .confirm-buttons .btn-confirm:hover {
            background-color: #45a049;
            transform: translateY(-2px);
        }
        .confirm-modal .confirm-buttons .btn-cancel {
            background-color: #003366;
            color: white;
            border: 2px solid #4caf50;
        }
        .confirm-modal .confirm-buttons .btn-cancel:hover {
            background-color: #4caf50;
            color: #003366;
            transform: translateY(-2px);
        }
        .detail-modal {
            display: none;
            position: fixed;
            z-index: 1;
            left: 0;
            top: 0;
            width: 100%;
            height: 100%;
            overflow: auto;
            background-color: rgba(0, 0, 0, 0.5);
        }
        .detail-modal-content {
            background-color: #ffffff;
            margin: 15% auto;
            padding: 20px;
            border: 1px solid #888;
            border-radius: 10px;
            width: 80%;
            max-width: 500px;
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
        }
        .detail-modal .close {
            color: #aaa;
            float: right;
            font-size: 28px;
            font-weight: bold;
            cursor: pointer;
        }
        .detail-modal .close:hover,
        .detail-modal .close:focus {
            color: black;
            text-decoration: none;
            cursor: pointer;
        }
        .detail-modal .team-names {
            text-align: center;
            margin-bottom: 20px;
            font-size: 1.5em;
            font-weight: bold;
            color: #003366;
        }
        .detail-modal .details {
            display: flex;
            flex-direction: column;
            gap: 10px;
        }
        .detail-modal .details .detail-item {
            display: flex;
            justify-content: space-between;
            align-items: center;
        }
        .detail-modal .details .detail-item label {
            font-weight: bold;
            color: #003366;
        }
        .detail-modal .details .detail-item span {
            color: #003366;
        }
        @media (max-width: 768px) {
            .container {
                flex-direction: column;
                align-items: center;
            }
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="card">
            <h2>Equipo Local</h2>
            <div class="form-group">
                <label for="local-team">Nombre del Equipo:</label>
                <input type="text" id="local-team" placeholder="Equipo Local">
            </div>
            <div class="checkbox-group">
                <label>Over 2.5:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="local-over25">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
                <label>BTS:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="local-bts">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
                <label>HT:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="local-ht">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
            </div>
        </div>
        <div class="card">
            <h2>Equipo Visitante</h2>
            <div class="form-group">
                <label for="visitor-team">Nombre del Equipo:</label>
                <input type="text" id="visitor-team" placeholder="Equipo Visitante">
            </div>
            <div class="checkbox-group">
                <label>Over 2.5:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="visitor-over25">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
                <label>BTS:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="visitor-bts">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
                <label>HT:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="visitor-ht">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
            </div>
        </div>
        <div class="button-container" style="width: 100%; max-width: 600px;">
            <button class="btn btn-analyze" id="analyze-btn">Analizar</button>
            <button class="btn btn-clear" id="clear-btn">Limpiar</button>
            <button class="btn btn-save" id="save-btn"><span>&#9989;</span> Guardar</button>
        </div>
        <div id="resultModal" class="modal">
            <div class="modal-content">
                <span class="close" id="close-result-modal">&times;</span>
                <h2>Resultados</h2>
                <div id="result-over25" class="result-card over25">
                    <span class="icon">&#9650;</span> <!-- Icono de gráfico de barras -->
                    <span id="result-over25-text"></span>
                </div>
                <div id="result-bts" class="result-card bts">
                    <span class="icon">&#9917;</span> <!-- Icono de balón -->
                    <span id="result-bts-text"></span>
                </div>
                <div id="result-ht" class="result-card ht">
                    <span class="icon">&#9201;</span> <!-- Icono de reloj -->
                    <span id="result-ht-text"></span>
                </div>
            </div>
        </div>
        <div class="saved-results">
            <table>
                <thead>
                    <tr>
                        <th>Equipos</th>
                        <th>HT</th>
                        <th>BTS</th>
                        <th>Over 2.5</th>
                        <th>Recomendación de Apuesta</th>
                        <th>Acciones</th>
                    </tr>
                </thead>
                <tbody id="results-table-body">
                    <!-- Filas de resultados se agregarán aquí -->
                </tbody>
            </table>
        </div>
        <div id="confirmModal" class="confirm-modal">
            <div class="confirm-modal-content">
                <span class="close" id="close-confirm-modal">&times;</span>
                <h2>Confirmación</h2>
                <p id="confirm-message"></p>
                <div class="confirm-buttons">
                    <button class="btn btn-confirm" id="confirm-delete-btn">Confirmar</button>
                    <button class="btn btn-cancel" id="cancel-delete-btn">Cancelar</button>
                </div>
            </div>
        </div>
        <div id="detailModal" class="detail-modal">
            <div class="detail-modal-content">
                <span class="close" id="close-detail-modal">&times;</span>
                <div class="team-names" id="detail-team-names"></div>
                <div class="details" id="detail-details">
                    <div class="detail-item">
                        <label>Over 2.5:</label>
                        <span id="detail-over25"></span>
                    </div>
                    <div class="detail-item">
                        <label>BTS:</label>
                        <span id="detail-bts"></span>
                    </div>
                    <div class="detail-item">
                        <label>HT:</label>
                        <span id="detail-ht"></span>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="info-icon" id="info-icon">&#9432;</div>

    <!-- Modal -->
    <div id="myModal" class="modal">
        <div class="modal-content">
            <span class="close" id="close-info-modal">&times;</span>
            <h2>Instrucciones</h2>
            <p>Bienvenido al Predictor de Apuestas Deportivas.</p>
            <p>Para utilizar esta página, sigue estos pasos:</p>
            <ol>
                <li>Ingresa el nombre del equipo local y del equipo visitante en los campos correspondientes.</li>
                <li>Especifica las probabilidades para Over 2.5, BTS (Ambos Equipos Marcan) y HT (Primer Tiempo) ingresando un valor entre 0 y 100 en formato de porcentaje.</li>
                <li>Haz clic en el botón "Analizar" para obtener una predicción basada en los datos ingresados.</li>
                <li>Haz clic en el botón "Limpiar" para borrar todos los campos de entrada.</li>
                <li>Haz clic en el botón "Guardar" para almacenar los resultados en la tabla de resultados guardados.</li>
            </ol>
        </div>
    </div>

    <script>
        // Get the modals
        var infoModal = document.getElementById("myModal");
        var resultModal = document.getElementById("resultModal");
        var confirmModal = document.getElementById("confirmModal");
        var detailModal = document.getElementById("detailModal");

        // Get the buttons that open the modals
        var infoBtn = document.getElementById("info-icon");
        var analyzeBtn = document.getElementById("analyze-btn");
        var saveBtn = document.getElementById("save-btn");
        var clearBtn = document.getElementById("clear-btn");

        // Get the <span> elements that close the modals
        var infoSpan = document.getElementById("close-info-modal");
        var resultSpan = document.getElementById("close-result-modal");
        var confirmSpan = document.getElementById("close-confirm-modal");
        var detailSpan = document.getElementById("close-detail-modal");

        // Get the confirm buttons
        var confirmDeleteBtn = document.getElementById("confirm-delete-btn");
        var cancelDeleteBtn = document.getElementById("cancel-delete-btn");

        // Variable to store the row to be deleted
        var rowToDelete = null;

        // When the user clicks the info button, open the info modal 
        infoBtn.onclick = function() {
            infoModal.style.display = "block";
        }

        // When the user clicks the analyze button, calculate and open the result modal 
        analyzeBtn.onclick = function() {
            calculateProbabilities();
            resultModal.style.display = "block";
        }

        // When the user clicks the save button, save the results
        saveBtn.onclick = function() {
            saveResults();
        }

        // When the user clicks the clear button, clear the inputs
        clearBtn.onclick = function() {
            clearInputs();
        }

        // When the user clicks on <span> (x), close the modals
        infoSpan.onclick = function() {
            infoModal.style.display = "none";
        }
        resultSpan.onclick = function() {
            resultModal.style.display = "none";
        }
        confirmSpan.onclick = function() {
            confirmModal.style.display = "none";
        }
        detailSpan.onclick = function() {
            detailModal.style.display = "none";
        }

        // When the user clicks anywhere outside of the modals, close them
        window.onclick = function(event) {
            if (event.target == infoModal) {
                infoModal.style.display = "none";
            }
            if (event.target == resultModal) {
                resultModal.style.display = "none";
            }
            if (event.target == confirmModal) {
                confirmModal.style.display = "none";
            }
            if (event.target == detailModal) {
                detailModal.style.display = "none";
            }
        }

        // Clear inputs
        function clearInputs() {
            document.getElementById('local-team').value = '';
            document.getElementById('visitor-team').value = '';
            document.getElementById('local-over25').value = '';
            document.getElementById('visitor-over25').value = '';
            document.getElementById('local-bts').value = '';
            document.getElementById('visitor-bts').value = '';
            document.getElementById('local-ht').value = '';
            document.getElementById('visitor-ht').value = '';
        }

        // Function to save results
        function saveResults() {
            const over25 = parseFloat(saveBtn.dataset.over25);
            const bts = parseFloat(saveBtn.dataset.bts);
            const ht = parseFloat(saveBtn.dataset.ht);
            const localTeam = saveBtn.dataset.localTeam;
            const visitorTeam = saveBtn.dataset.visitorTeam;

            if (!localTeam || !visitorTeam || isNaN(over25) || isNaN(bts) || isNaN(ht)) {
                alert("Por favor, completa todos los campos antes de guardar.");
                return;
            }

            const recommendation = getRecommendation(over25, bts, ht);

            const tableBody = document.getElementById('results-table-body');
            const newRow = document.createElement('tr');

            const cellTeams = document.createElement('td');
            const cellHT = document.createElement('td');
            const cellBTS = document.createElement('td');
            const cellOver25 = document.createElement('td');
            const cellRecommendation = document.createElement('td');
            const cellActions = document.createElement('td');

            cellTeams.textContent = `${localTeam} vs ${visitorTeam}`;
            cellHT.textContent = `${ht.toFixed(2)}%`;
            cellBTS.textContent = `${bts.toFixed(2)}%`;
            cellOver25.textContent = `${over25.toFixed(2)}%`;
            cellRecommendation.innerHTML = `<span class="recommendation">${recommendation}</span>`;

            // Add action icons
            const actionIcons = document.createElement('div');
            actionIcons.className = 'action-icons';

            const viewIcon = document.createElement('span');
            viewIcon.className = 'icon view';
            viewIcon.innerHTML = '&#128065;'; // Icono de ver resultados
            viewIcon.title = 'Ver Resultados';
            viewIcon.onclick = function() {
                showResultDetails(localTeam, visitorTeam, over25, bts, ht);
            };

            const deleteIcon = document.createElement('span');
            deleteIcon.className = 'icon delete';
            deleteIcon.innerHTML = '&#10060;'; // Icono de eliminar
            deleteIcon.title = 'Eliminar';
            deleteIcon.onclick = function() {
                confirmDeletion(newRow, localTeam, visitorTeam, recommendation);
            };

            actionIcons.appendChild(viewIcon);
            actionIcons.appendChild(deleteIcon);

            cellActions.appendChild(actionIcons);

            // Insert the new row at the beginning of the table body
            tableBody.insertBefore(newRow, tableBody.firstChild);

            newRow.appendChild(cellTeams);
            newRow.appendChild(cellHT);
            newRow.appendChild(cellBTS);
            newRow.appendChild(cellOver25);
            newRow.appendChild(cellRecommendation);
            newRow.appendChild(cellActions);
        }

        // Function to show result details in a modal
        function showResultDetails(localTeam, visitorTeam, over25, bts, ht) {
            document.getElementById('detail-team-names').textContent = `${localTeam} vs ${visitorTeam}`;
            document.getElementById('detail-over25').textContent = `${over25.toFixed(2)}%`;
            document.getElementById('detail-bts').textContent = `${bts.toFixed(2)}%`;
            document.getElementById('detail-ht').textContent = `${ht.toFixed(2)}%`;

            detailModal.style.display = "block";
        }

        // Function to confirm deletion
        function confirmDeletion(row, localTeam, visitorTeam, recommendation) {
            rowToDelete = row;
            const confirmMessage = `¿Está seguro de que desea eliminar? ${localTeam} vs ${visitorTeam} (${recommendation})`;
            document.getElementById('confirm-message').textContent = confirmMessage;
            confirmModal.style.display = "block";
        }

        // When the user clicks the confirm delete button, delete the row
        confirmDeleteBtn.onclick = function() {
            if (rowToDelete) {
                rowToDelete.remove();
                rowToDelete = null;
                confirmModal.style.display = "none";
            }
        }

        // When the user clicks the cancel delete button, close the confirm modal
        cancelDeleteBtn.onclick = function() {
            rowToDelete = null;
            confirmModal.style.display = "none";
        }

        // Function to calculate probabilities
        function calculateProbabilities() {
            const localOver25 = parseFloat(document.getElementById('local-over25').value) || 0;
            const visitorOver25 = parseFloat(document.getElementById('visitor-over25').value) || 0;
            const localBTS = parseFloat(document.getElementById('local-bts').value) || 0;
            const visitorBTS = parseFloat(document.getElementById('visitor-bts').value) || 0;
            const localHT = parseFloat(document.getElementById('local-ht').value) || 0;
            const visitorHT = parseFloat(document.getElementById('visitor-ht').value) || 0;

            const combinedOver25 = ((localOver25 + visitorOver25) / 2).toFixed(2);
            const combinedBTS = ((localBTS + visitorBTS) / 2).toFixed(2);
            const combinedHT = ((localHT + visitorHT) / 2).toFixed(2);

            document.getElementById('result-over25-text').textContent = `Over 2.5: ${combinedOver25}%`;
            document.getElementById('result-bts-text').textContent = `BTS (Ambos Equipos Marcan): ${combinedBTS}%`;
            document.getElementById('result-ht-text').textContent = `HT (Primer Tiempo): ${combinedHT}%`;

            // Save the calculated values for saving later
            saveBtn.dataset.over25 = combinedOver25;
            saveBtn.dataset.bts = combinedBTS;
            saveBtn.dataset.ht = combinedHT;
            saveBtn.dataset.localTeam = document.getElementById('local-team').value;
            saveBtn.dataset.visitorTeam = document.getElementById('visitor-team').value;
        }

        // Function to determine recommendation
        function getRecommendation(over25, bts, ht) {
            const over25Parsed = parseFloat(over25);
            const btsParsed = parseFloat(bts);
            const htParsed = parseFloat(ht);

            if (over25Parsed > 70 && btsParsed > 75 && htParsed > 70) {
                return "Apostar en Over 2.5";
            } else if (over25Parsed > 70 && btsParsed > 70 && htParsed > 65) {
                return "Apostar en Over 1.5";
            } else if (over25Parsed > 75 && btsParsed > 70 && htParsed > 65) {
                return "Apostar en BTS";
            } else if (over25Parsed > 70 && btsParsed > 75 && htParsed > 70 && over25Parsed > 70 && btsParsed > 70 && htParsed > 65 && over25Parsed > 75 && btsParsed > 70 && htParsed > 65) {
                return "Apostar en cualquier mercado";
            } else {
                return "No Apostar";
            }
        }
    </script>
</body>
</html>
ASSISTANT
Por supuesto, aquí tienes el código dividido en los tres archivos solicitados: `index.html`, `styles.css`, y `script.js`. Cada archivo contiene el código completo sin saltarse ninguna línea.

### Archivo 1: `index.html`
```html
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Predictor de Apuestas Deportivas</title>
    <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600&display=swap" rel="stylesheet">
    <link rel="stylesheet" href="styles.css">
</head>
<body>
    <div class="container">
        <div class="card">
            <h2>Equipo Local</h2>
            <div class="form-group">
                <label for="local-team">Nombre del Equipo:</label>
                <input type="text" id="local-team" placeholder="Equipo Local">
            </div>
            <div class="checkbox-group">
                <label>Over 2.5:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="local-over25">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
                <label>BTS:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="local-bts">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
                <label>HT:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="local-ht">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
            </div>
        </div>
        <div class="card">
            <h2>Equipo Visitante</h2>
            <div class="form-group">
                <label for="visitor-team">Nombre del Equipo:</label>
                <input type="text" id="visitor-team" placeholder="Equipo Visitante">
            </div>
            <div class="checkbox-group">
                <label>Over 2.5:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="visitor-over25">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
                <label>BTS:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="visitor-bts">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
                <label>HT:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="visitor-ht">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
            </div>
        </div>
        <div class="button-container" style="width: 100%; max-width: 600px;">
            <button class="btn btn-analyze" id="analyze-btn">Analizar</button>
            <button class="btn btn-clear" id="clear-btn">Limpiar</button>
            <button class="btn btn-save" id="save-btn"><span>&#9989;</span> Guardar</button>
        </div>
        <div id="resultModal" class="modal">
            <div class="modal-content">
                <span class="close" id="close-result-modal">&times;</span>
                <h2>Resultados</h2>
                <div id="result-over25" class="result-card over25">
                    <span class="icon">&#9650;</span> <!-- Icono de gráfico de barras -->
                    <span id="result-over25-text"></span>
                </div>
                <div id="result-bts" class="result-card bts">
                    <span class="icon">&#9917;</span> <!-- Icono de balón -->
                    <span id="result-bts-text"></span>
                </div>
                <div id="result-ht" class="result-card ht">
                    <span class="icon">&#9201;</span> <!-- Icono de reloj -->
                    <span id="result-ht-text"></span>
                </div>
            </div>
        </div>
        <div class="saved-results">
            <table>
                <thead>
                    <tr>
                        <th>Equipos</th>
                        <th>HT</th>
                        <th>BTS</th>
                        <th>Over 2.5</th>
                        <th>Recomendación de Apuesta</th>
                        <th>Acciones</th>
                    </tr>
                </thead>
                <tbody id="results-table-body">
                    <!-- Filas de resultados se agregarán aquí -->
                </tbody>
            </table>
        </div>
        <div id="confirmModal" class="confirm-modal">
            <div class="confirm-modal-content">
                <span class="close" id="close-confirm-modal">&times;</span>
                <h2>Confirmación</h2>
                <p id="confirm-message"></p>
                <div class="confirm-buttons">
                    <button class="btn btn-confirm" id="confirm-delete-btn">Confirmar</button>
                    <button class="btn btn-cancel" id="cancel-delete-btn">Cancelar</button>
                </div>
            </div>
        </div>
        <div id="detailModal" class="detail-modal">
            <div class="detail-modal-content">
                <span class="close" id="close-detail-modal">&times;</span>
                <div class="team-names" id="detail-team-names"></div>
                <div class="details" id="detail-details">
                    <div class="detail-item">
                        <label>Over 2.5:</label>
                        <span id="detail-over25"></span>
                    </div>
                    <div class="detail-item">
                        <label>BTS:</label>
                        <span id="detail-bts"></span>
                    </div>
                    <div class="detail-item">
                        <label>HT:</label>
                        <span id="detail-ht"></span>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="info-icon" id="info-icon">&#9432;</div>

    <!-- Modal -->
    <div id="myModal" class="modal">
        <div class="modal-content">
            <span class="close" id="close-info-modal">&times;</span>
            <h2>Instrucciones</h2>
            <p>Bienvenido al Predictor de Apuestas Deportivas.</p>
            <p>Para utilizar esta página, sigue estos pasos:</p>
            <ol>
                <li>Ingresa el nombre del equipo local y del equipo visitante en los campos correspondientes.</li>
                <li>Especifica las probabilidades para Over 2.5, BTS (Ambos Equipos Marcan) y HT (Primer Tiempo) ingresando un valor entre 0 y 100 en formato de porcentaje.</li>
                <li>Haz clic en el botón "Analizar" para obtener una predicción basada en los datos ingresados.</li>
                <li>Haz clic en el botón "Limpiar" para borrar todos los campos de entrada.</li>
                <li>Haz clic en el botón "Guardar" para almacenar los resultados en la tabla de resultados guardados.</li>
            </ol>
        </div>
    </div>

    <script src="script.js"></script>
</body>
</html>
```

### Archivo 2: `styles.css`
```css
body {
    font-family: 'Poppins', sans-serif;
    margin: 0;
    padding: 0;
    background-color: rgba(173, 216, 230, 0.2); /* Fondo azul claro desvanecido */
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 100vh;
    position: relative;
}
.container {
    width: 90%;
    max-width: 1200px;
    display: flex;
    flex-wrap: wrap;
    gap: 20px;
}
.card {
    background-color: #e0f7fa;
    border-radius: 10px;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
    flex: 1;
    min-width: 300px;
    padding: 20px;
    transition: transform 0.2s ease;
}
.card:hover {
    transform: translateY(-5px);
}
.card h2 {
    color: #003366;
    margin-bottom: 15px;
    text-align: center;
}
.form-group {
    margin-bottom: 15px;
}
.form-group label {
    color: #003366;
    display: block;
    margin-bottom: 5px;
}
.form-group input[type="text"] {
    width: 100%;
    padding: 10px;
    border: 1px solid #ccc;
    border-radius: 5px;
    background-color: #ffffff;
    box-sizing: border-box;
    transition: border-color 0.3s ease, box-shadow 0.3s ease;
}
.form-group input[type="text"]:hover {
    border-color: #4caf50;
    box-shadow: 0 0 5px rgba(76, 175, 80, 0.4);
}
.checkbox-group {
    display: flex;
    flex-direction: column;
}
.checkbox-group label {
    display: flex;
    align-items: center;
    color: #003366;
    margin-bottom: 10px;
}
.checkbox-group .input-container {
    display: flex;
    width: 100%;
    align-items: center;
}
.checkbox-group input[type="number"] {
    width: calc(100% - 25px);
    padding: 10px;
    border: 1px solid #ccc;
    border-radius: 5px;
    background-color: #ffffff;
    box-sizing: border-box;
    transition: border-color 0.3s ease, box-shadow 0.3s ease;
}
.checkbox-group input[type="number"]:hover {
    border-color: #4caf50;
    box-shadow: 0 0 5px rgba(76, 175, 80, 0.4);
}
.checkbox-group .percent-sign {
    color: #003366;
    margin-left: 5px;
}
.button-container {
    display: flex;
    justify-content: space-between;
    margin-top: 20px;
}
.btn {
    padding: 10px 20px;
    border: none;
    border-radius: 5px;
    cursor: pointer;
    transition: background-color 0.3s ease, transform 0.2s ease;
}
.btn-analyze {
    background-color: #4caf50;
    color: white;
}
.btn-analyze:hover {
    background-color: #45a049;
    transform: translateY(-2px);
}
.btn-clear {
    background-color: #003366;
    color: white;
    border: 2px solid #4caf50;
}
.btn-clear:hover {
    background-color: #4caf50;
    color: #003366;
    transform: translateY(-2px);
}
.btn-save {
    background-color: #ff9800;
    color: white;
}
.btn-save:hover {
    background-color: #e67e22;
    transform: translateY(-2px);
}
.info-icon {
    position: absolute;
    top: 20px;
    right: 20px;
    font-size: 24px;
    color: #4caf50;
    cursor: pointer;
    transition: color 0.3s ease;
}
.info-icon:hover {
    color: #45a049;
}
.modal {
    display: none;
    position: fixed;
    z-index: 1;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    overflow: auto;
    background-color: rgba(0, 0, 0, 0.5);
}
.modal-content {
    background-color: #ffffff;
    margin: 15% auto;
    padding: 20px;
    border: 1px solid #888;
    border-radius: 10px;
    width: 80%;
    max-width: 500px;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
}
.close {
    color: #aaa;
    float: right;
    font-size: 28px;
    font-weight: bold;
    cursor: pointer;
}
.close:hover,
.close:focus {
    color: black;
    text-decoration: none;
    cursor: pointer;
}
.result-card {
    background-color: #f9f9f9;
    border-radius: 10px;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
    padding: 15px;
    margin-bottom: 15px;
    display: flex;
    align-items: center;
}
.result-card .icon {
    font-size: 24px;
    margin-right: 10px;
}
.result-card.over25 .icon {
    color: #4caf50;
}
.result-card.bts .icon {
    color: #ff9800;
}
.result-card.ht .icon {
    color: #003366;
}
.saved-results {
    margin-top: 20px;
    width: 100%;
    max-width: 1200px;
    overflow-x: auto;
}
.saved-results table {
    width: 100%;
    border-collapse: collapse;
}
.saved-results th, .saved-results td {
    padding: 10px;
    text-align: left;
    border-bottom: 1px solid #ddd;
}
.saved-results th {
    background-color: #e0f7fa;
}
.saved-results tr:nth-child(even) {
    background-color: #f9f9f9;
}
.saved-results tr:nth-child(odd) {
    background-color: #ffffff;
}
.recommendation {
    font-weight: bold;
}
.action-icons {
    display: flex;
    align-items: center;
}
.action-icons .icon {
    font-size: 24px;
    margin-right: 10px;
    cursor: pointer;
    transition: color 0.3s ease;
}
.action-icons .icon:hover {
    color: #4caf50;
}
.action-icons .icon.delete:hover {
    color: #ff4d4d;
}
.confirm-modal {
    display: none;
    position: fixed;
    z-index: 2;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    overflow: auto;
    background-color: rgba(0, 0, 0, 0.5);
}
.confirm-modal-content {
    background-color: #ffffff;
    margin: 15% auto;
    padding: 20px;
    border: 1px solid #888;
    border-radius: 10px;
    width: 80%;
    max-width: 400px;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
}
.confirm-modal .close {
    color: #aaa;
    float: right;
    font-size: 28px;
    font-weight: bold;
    cursor: pointer;
}
.confirm-modal .close:hover,
.confirm-modal .close:focus {
    color: black;
    text-decoration: none;
    cursor: pointer;
}
.confirm-modal .confirm-buttons {
    display: flex;
    justify-content: space-between;
    margin-top: 20px;
}
.confirm-modal .confirm-buttons .btn {
    padding: 10px 20px;
    border: none;
    border-radius: 5px;
    cursor: pointer;
    transition: background-color 0.3s ease, transform 0.2s ease;
}
.confirm-modal .confirm-buttons .btn-confirm {
    background-color: #4caf50;
    color: white;
}
.confirm-modal .confirm-buttons .btn-confirm:hover {
    background-color: #45a049;
    transform: translateY(-2px);
}
.confirm-modal .confirm-buttons .btn-cancel {
    background-color: #003366;
    color: white;
    border: 2px solid #4caf50;
}
.confirm-modal .confirm-buttons .btn-cancel:hover {
    background-color: #4caf50;
    color: #003366;
    transform: translateY(-2px);
}
.detail-modal {
    display: none;
    position: fixed;
    z-index: 1;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    overflow: auto;
    background-color: rgba(0, 0, 0, 0.5);
}
.detail-modal-content {
    background-color: #ffffff;
    margin: 15% auto;
    padding: 20px;
    border: 1px solid #888;
    border-radius: 10px;
    width: 80%;
    max-width: 500px;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
}
.detail-modal .close {
    color: #aaa;
    float: right;
    font-size: 28px;
    font-weight: bold;
    cursor: pointer;
}
.detail-modal .close:hover,
.detail-modal .close:focus {
    color: black;
    text-decoration: none;
    cursor: pointer;
}
.detail-modal .team-names {
    text-align: center;
    margin-bottom: 20px;
    font-size: 1.5em;
    font-weight: bold;
    color: #003366;
}
.detail-modal .details {
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.detail-modal .details .detail-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
}
.detail-modal .details .detail-item label {
    font-weight: bold;
    color: #003366;
}
.detail-modal .details .detail-item span {
    color: #003366;
}
@media (max-width: 768px) {
    .container {
        flex-direction: column;
        align-items: center;
    }
}
```

### Archivo 3: `script.js`
```javascript
// Get the modals
var infoModal = document.getElementById("myModal");
var resultModal = document.getElementById("resultModal");
var confirmModal = document.getElementById("confirmModal");
var detailModal = document.getElementById("detailModal");

// Get the buttons that open the modals
var infoBtn = document.getElementById("info-icon");
var analyzeBtn = document.getElementById("analyze-btn");
var saveBtn = document.getElementById("save-btn");
var clearBtn = document.getElementById("clear-btn");

// Get the <span> elements that close the modals
var infoSpan = document.getElementById("close-info-modal");
var resultSpan = document.getElementById("close-result-modal");
var confirmSpan = document.getElementById("close-confirm-modal");
var detailSpan = document.getElementById("close-detail-modal");

// Get the confirm buttons
var confirmDeleteBtn = document.getElementById("confirm-delete-btn");
var cancelDeleteBtn = document.getElementById("cancel-delete-btn");

// Variable to store the row to be deleted
var rowToDelete = null;

// When the user clicks the info button, open the info modal 
infoBtn.onclick = function() {
    infoModal.style.display = "block";
}

// When the user clicks the analyze button, calculate and open the result modal 
analyzeBtn.onclick = function() {
    calculateProbabilities();
    resultModal.style.display = "block";
}

// When the user clicks the save button, save the results
saveBtn.onclick = function() {
    saveResults();
}

// When the user clicks the clear button, clear the inputs
clearBtn.onclick = function() {
    clearInputs();
}

// When the user clicks on <span> (x), close the modals
infoSpan.onclick = function() {
    infoModal.style.display = "none";
}
resultSpan.onclick = function() {
    resultModal.style.display = "none";
}
confirmSpan.onclick = function() {
    confirmModal.style.display = "none";
}
detailSpan.onclick = function() {
    detailModal.style.display = "none";
}

// When the user clicks anywhere outside of the modals, close them
window.onclick = function(event) {
    if (event.target == infoModal) {
        infoModal.style.display = "none";
    }
    if (event.target == resultModal) {
        resultModal.style.display = "none";
    }
    if (event.target == confirmModal) {
        confirmModal.style.display = "none";
    }
    if (event.target == detailModal) {
        detailModal.style.display = "none";
    }
}

// Clear inputs
function clearInputs() {
    const inputs = document.querySelectorAll('input[type="text"], input[type="number"]');
    inputs.forEach(input => input.value = '');
}

// Reset results table
function resetResultsTable() {
    const tableBody = document.getElementById('results-table-body');
    tableBody.innerHTML = '';
}

// Function to calculate probabilities
function calculateProbabilities() {
    const localOver25 = parseFloat(document.getElementById('local-over25').value) || 0;
    const visitorOver25 = parseFloat(document.getElementById('visitor-over25').value) || 0;
    const localBTS = parseFloat(document.getElementById('local-bts').value) || 0;
    const visitorBTS = parseFloat(document.getElementById('visitor-bts').value) || 0;
    const localHT = parseFloat(document.getElementById('local-ht').value) || 0;
    const visitorHT = parseFloat(document.getElementById('visitor-ht').value) || 0;

    const combinedOver25 = ((localOver25 + visitorOver25) / 2).toFixed(2);
    const combinedBTS = ((localBTS + visitorBTS) / 2).toFixed(2);
    const combinedHT = ((localHT + visitorHT) / 2).toFixed(2);

    document.getElementById('result-over25-text').textContent = `Over 2.5: ${combinedOver25}%`;
    document.getElementById('result-bts-text').textContent = `BTS (Ambos Equipos Marcan): ${combinedBTS}%`;
    document.getElementById('result-ht-text').textContent = `HT (Primer Tiempo): ${combinedHT}%`;

    // Save the calculated values for saving later
    saveBtn.dataset.over25 = combinedOver25;
    saveBtn.dataset.bts = combinedBTS;
    saveBtn.dataset.ht = combinedHT;
    saveBtn.dataset.localTeam = document.getElementById('local-team').value;
    saveBtn.dataset.visitorTeam = document.getElementById('visitor-team').value;
}

// Function to save results
function saveResults() {
    const over25 = parseFloat(saveBtn.dataset.over25);
    const bts = parseFloat(saveBtn.dataset.bts);
    const ht = parseFloat(saveBtn.dataset.ht);
    const localTeam = saveBtn.dataset.localTeam;
    const visitorTeam = saveBtn.dataset.visitorTeam;

    if (!localTeam || !visitorTeam || isNaN(over25) || isNaN(bts) || isNaN(ht)) {
        alert("Por favor, completa todos los campos antes de guardar.");
        return;
    }

    const recommendation = getRecommendation(over25, bts, ht);

    const tableBody = document.getElementById('results-table-body');
    const newRow = document.createElement('tr');

    const cellTeams = document.createElement('td');
    const cellHT = document.createElement('td');
    const cellBTS = document.createElement('td');
    const cellOver25 = document.createElement('td');
    const cellRecommendation = document.createElement('td');
    const cellActions = document.createElement('td');

    cellTeams.textContent = `${localTeam} vs ${visitorTeam}`;
    cellHT.textContent = `${ht.toFixed(2)}%`;
    cellBTS.textContent = `${bts.toFixed(2)}%`;
    cellOver25.textContent = `${over25.toFixed(2)}%`;
    cellRecommendation.innerHTML = `<span class="recommendation">${recommendation}</span>`;

    // Add action icons
    const actionIcons = document.createElement('div');
    actionIcons.className = 'action-icons';

    const viewIcon = document.createElement('span');
    viewIcon.className = 'icon view';
    viewIcon.innerHTML = '&#128065;'; // Icono de ver resultados
    viewIcon.title = 'Ver Resultados';
    viewIcon.onclick = function() {
        showResultDetails(localTeam, visitorTeam, over25, bts, ht);
    };

    const deleteIcon = document.createElement('span');
    deleteIcon.className = 'icon delete';
    deleteIcon.innerHTML = '&#10060;'; // Icono de eliminar
    deleteIcon.title = 'Eliminar';
    deleteIcon.onclick = function() {
        confirmDeletion(newRow, localTeam, visitorTeam, recommendation);
    };

    actionIcons.appendChild(viewIcon);
    actionIcons.appendChild(deleteIcon);

    cellActions.appendChild(actionIcons);

    // Insert the new row at the beginning of the table body
    tableBody.insertBefore(newRow, tableBody.firstChild);

    newRow.appendChild(cellTeams);
    newRow.appendChild(cellHT);
    newRow.appendChild(cellBTS);
    newRow.appendChild(cellOver25);
    newRow.appendChild(cellRecommendation);
    newRow.appendChild(cellActions);
}

// Function to show result details in a modal
function showResultDetails(localTeam, visitorTeam, over25, bts, ht) {
    document.getElementById('detail-team-names').textContent = `${localTeam} vs ${visitorTeam}`;
    document.getElementById('detail-over25').textContent = `${over25.toFixed(2)}%`;
    document.getElementById('detail-bts').textContent = `${bts.toFixed(2)}%`;
    document.getElementById('detail-ht').textContent = `${ht.toFixed(2)}%`;

    detailModal.style.display = "block";
}

// Function to confirm deletion
function confirmDeletion(row, localTeam, visitorTeam, recommendation) {
    rowToDelete = row;
    const confirmMessage = `¿Está seguro de que desea eliminar? ${localTeam} vs ${visitorTeam} (${recommendation})`;
    document.getElementById('confirm-message').textContent = confirmMessage;
    confirmModal.style.display = "block";
}

// When the user clicks the confirm delete button, delete the row
confirmDeleteBtn.onclick = function() {
    if (rowToDelete) {
        rowToDelete.remove();
        rowToDelete = null;
        confirmModal.style.display = "none";
    }
}

// When the user clicks the cancel delete button, close the confirm modal
cancelDeleteBtn.onclick = function() {
    rowToDelete = null;
    confirmModal.style.display = "none";
}

// Function to determine recommendation
function getRecommendation(over25, bts, ht) {
    const over25Parsed = parseFloat(over25);
    const btsParsed = parseFloat(bts);
    const htParsed = parseFloat(ht);

    if (over25Parsed > 70 && btsParsed > 75 && htParsed > 70) {
        return "Apostar en Over 2.5";
    } else if (over25Parsed > 70 && btsParsed > 70 && htParsed > 65) {
        return "Apostar en Over 1.5";
    } else if (over25Parsed > 75 && btsParsed > 70 && htParsed > 65) {
        return "Apostar en BTS";
    } else if (over25Parsed > 70 && btsParsed > 75 && htParsed > 70 && over25Parsed > 70 && btsParsed > 70 && htParsed > 65 && over25Parsed > 75 && btsParsed > 70 && htParsed > 65) {
        return "Apostar en cualquier mercado";
    } else {
        return "No Apostar";
    }
}
```

---

Ahora tienes los archivos organizados sin saltarse ninguna línea. Asegúrate de que todos estén en la misma carpeta y que `index.html` esté correctamente enlazado a `styles.css` y `script.js`. ¡Si necesitas más ayuda o cambios, no dudes en pedirlo!

turns-00051.parquet:21633

1035771792a00b1aa4bdf3b7
turn 6/8gpt-4o-mini-2024-07-18EnglishColombia4348 words
degenerate_repetitionAbsentFinal dense release
USER
me divide este codigo en partes en Css, Html y javascrip, quiero el codigo completo para cada archivo sin saltar ni una linea

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Predictor de Apuestas Deportivas</title>
    <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600&display=swap" rel="stylesheet">
    <style>
        body {
            font-family: 'Poppins', sans-serif;
            margin: 0;
            padding: 0;
            background-color: rgba(173, 216, 230, 0.2); /* Fondo azul claro desvanecido */
            display: flex;
            justify-content: center;
            align-items: center;
            min-height: 100vh;
            position: relative;
        }
        .container {
            width: 90%;
            max-width: 1200px;
            display: flex;
            flex-wrap: wrap;
            gap: 20px;
        }
        .card {
            background-color: #e0f7fa;
            border-radius: 10px;
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
            flex: 1;
            min-width: 300px;
            padding: 20px;
            transition: transform 0.2s ease;
        }
        .card:hover {
            transform: translateY(-5px);
        }
        .card h2 {
            color: #003366;
            margin-bottom: 15px;
            text-align: center;
        }
        .form-group {
            margin-bottom: 15px;
        }
        .form-group label {
            color: #003366;
            display: block;
            margin-bottom: 5px;
        }
        .form-group input[type="text"] {
            width: 100%;
            padding: 10px;
            border: 1px solid #ccc;
            border-radius: 5px;
            background-color: #ffffff;
            box-sizing: border-box;
            transition: border-color 0.3s ease, box-shadow 0.3s ease;
        }
        .form-group input[type="text"]:hover {
            border-color: #4caf50;
            box-shadow: 0 0 5px rgba(76, 175, 80, 0.4);
        }
        .checkbox-group {
            display: flex;
            flex-direction: column;
        }
        .checkbox-group label {
            display: flex;
            align-items: center;
            color: #003366;
            margin-bottom: 10px;
        }
        .checkbox-group .input-container {
            display: flex;
            width: 100%;
            align-items: center;
        }
        .checkbox-group input[type="number"] {
            width: calc(100% - 25px);
            padding: 10px;
            border: 1px solid #ccc;
            border-radius: 5px;
            background-color: #ffffff;
            box-sizing: border-box;
            transition: border-color 0.3s ease, box-shadow 0.3s ease;
        }
        .checkbox-group input[type="number"]:hover {
            border-color: #4caf50;
            box-shadow: 0 0 5px rgba(76, 175, 80, 0.4);
        }
        .checkbox-group .percent-sign {
            color: #003366;
            margin-left: 5px;
        }
        .button-container {
            display: flex;
            justify-content: space-between;
            margin-top: 20px;
        }
        .btn {
            padding: 10px 20px;
            border: none;
            border-radius: 5px;
            cursor: pointer;
            transition: background-color 0.3s ease, transform 0.2s ease;
        }
        .btn-analyze {
            background-color: #4caf50;
            color: white;
        }
        .btn-analyze:hover {
            background-color: #45a049;
            transform: translateY(-2px);
        }
        .btn-clear {
            background-color: #003366;
            color: white;
            border: 2px solid #4caf50;
        }
        .btn-clear:hover {
            background-color: #4caf50;
            color: #003366;
            transform: translateY(-2px);
        }
        .btn-save {
            background-color: #ff9800;
            color: white;
        }
        .btn-save:hover {
            background-color: #e67e22;
            transform: translateY(-2px);
        }
        .info-icon {
            position: absolute;
            top: 20px;
            right: 20px;
            font-size: 24px;
            color: #4caf50;
            cursor: pointer;
            transition: color 0.3s ease;
        }
        .info-icon:hover {
            color: #45a049;
        }
        .modal {
            display: none;
            position: fixed;
            z-index: 1;
            left: 0;
            top: 0;
            width: 100%;
            height: 100%;
            overflow: auto;
            background-color: rgba(0, 0, 0, 0.5);
        }
        .modal-content {
            background-color: #ffffff;
            margin: 15% auto;
            padding: 20px;
            border: 1px solid #888;
            border-radius: 10px;
            width: 80%;
            max-width: 500px;
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
        }
        .close {
            color: #aaa;
            float: right;
            font-size: 28px;
            font-weight: bold;
            cursor: pointer;
        }
        .close:hover,
        .close:focus {
            color: black;
            text-decoration: none;
            cursor: pointer;
        }
        .result-card {
            background-color: #f9f9f9;
            border-radius: 10px;
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
            padding: 15px;
            margin-bottom: 15px;
            display: flex;
            align-items: center;
        }
        .result-card .icon {
            font-size: 24px;
            margin-right: 10px;
        }
        .result-card.over25 .icon {
            color: #4caf50;
        }
        .result-card.bts .icon {
            color: #ff9800;
        }
        .result-card.ht .icon {
            color: #003366;
        }
        .saved-results {
            margin-top: 20px;
            width: 100%;
            max-width: 1200px;
            overflow-x: auto;
        }
        .saved-results table {
            width: 100%;
            border-collapse: collapse;
        }
        .saved-results th, .saved-results td {
            padding: 10px;
            text-align: left;
            border-bottom: 1px solid #ddd;
        }
        .saved-results th {
            background-color: #e0f7fa;
        }
        .saved-results tr:nth-child(even) {
            background-color: #f9f9f9;
        }
        .saved-results tr:nth-child(odd) {
            background-color: #ffffff;
        }
        .recommendation.green {
            color: #4caf50;
            font-weight: bold;
        }
        .recommendation.red {
            color: #ff4d4d;
            font-weight: bold;
        }
        .action-icons {
            display: flex;
            align-items: center;
        }
        .action-icons .icon {
            font-size: 24px;
            margin-right: 10px;
            cursor: pointer;
            transition: color 0.3s ease;
        }
        .action-icons .icon:hover {
            color: #4caf50;
        }
        .action-icons .icon.delete:hover {
            color: #ff4d4d;
        }
        .confirm-modal {
            display: none;
            position: fixed;
            z-index: 2;
            left: 0;
            top: 0;
            width: 100%;
            height: 100%;
            overflow: auto;
            background-color: rgba(0, 0, 0, 0.5);
        }
        .confirm-modal-content {
            background-color: #ffffff;
            margin: 15% auto;
            padding: 20px;
            border: 1px solid #888;
            border-radius: 10px;
            width: 80%;
            max-width: 400px;
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
        }
        .confirm-modal .close {
            color: #aaa;
            float: right;
            font-size: 28px;
            font-weight: bold;
            cursor: pointer;
        }
        .confirm-modal .close:hover,
        .confirm-modal .close:focus {
            color: black;
            text-decoration: none;
            cursor: pointer;
        }
        .confirm-modal .confirm-buttons {
            display: flex;
            justify-content: space-between;
            margin-top: 20px;
        }
        .confirm-modal .confirm-buttons .btn {
            padding: 10px 20px;
            border: none;
            border-radius: 5px;
            cursor: pointer;
            transition: background-color 0.3s ease, transform 0.2s ease;
        }
        .confirm-modal .confirm-buttons .btn-confirm {
            background-color: #4caf50;
            color: white;
        }
        .confirm-modal .confirm-buttons .btn-confirm:hover {
            background-color: #45a049;
            transform: translateY(-2px);
        }
        .confirm-modal .confirm-buttons .btn-cancel {
            background-color: #003366;
            color: white;
            border: 2px solid #4caf50;
        }
        .confirm-modal .confirm-buttons .btn-cancel:hover {
            background-color: #4caf50;
            color: #003366;
            transform: translateY(-2px);
        }
        .detail-modal {
            display: none;
            position: fixed;
            z-index: 1;
            left: 0;
            top: 0;
            width: 100%;
            height: 100%;
            overflow: auto;
            background-color: rgba(0, 0, 0, 0.5);
        }
        .detail-modal-content {
            background-color: #ffffff;
            margin: 15% auto;
            padding: 20px;
            border: 1px solid #888;
            border-radius: 10px;
            width: 80%;
            max-width: 500px;
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
        }
        .detail-modal .close {
            color: #aaa;
            float: right;
            font-size: 28px;
            font-weight: bold;
            cursor: pointer;
        }
        .detail-modal .close:hover,
        .detail-modal .close:focus {
            color: black;
            text-decoration: none;
            cursor: pointer;
        }
        .detail-modal .team-names {
            text-align: center;
            margin-bottom: 20px;
            font-size: 1.5em;
            font-weight: bold;
            color: #003366;
        }
        .detail-modal .details {
            display: flex;
            flex-direction: column;
            gap: 10px;
        }
        .detail-modal .details .detail-item {
            display: flex;
            justify-content: space-between;
            align-items: center;
        }
        .detail-modal .details .detail-item label {
            font-weight: bold;
            color: #003366;
        }
        .detail-modal .details .detail-item span {
            color: #003366;
        }
        @media (max-width: 768px) {
            .container {
                flex-direction: column;
                align-items: center;
            }
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="card">
            <h2>Equipo Local</h2>
            <div class="form-group">
                <label for="local-team">Nombre del Equipo:</label>
                <input type="text" id="local-team" placeholder="Equipo Local">
            </div>
            <div class="checkbox-group">
                <label>Over 2.5:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="local-over25">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
                <label>BTS:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="local-bts">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
                <label>HT:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="local-ht">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
            </div>
        </div>
        <div class="card">
            <h2>Equipo Visitante</h2>
            <div class="form-group">
                <label for="visitor-team">Nombre del Equipo:</label>
                <input type="text" id="visitor-team" placeholder="Equipo Visitante">
            </div>
            <div class="checkbox-group">
                <label>Over 2.5:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="visitor-over25">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
                <label>BTS:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="visitor-bts">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
                <label>HT:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="visitor-ht">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
            </div>
        </div>
        <div class="button-container" style="width: 100%; max-width: 600px;">
            <button class="btn btn-analyze" id="analyze-btn">Analizar</button>
            <button class="btn btn-clear" id="clear-btn">Limpiar</button>
            <button class="btn btn-save" id="save-btn"><span>&#9989;</span> Guardar</button>
        </div>
        <div id="resultModal" class="modal">
            <div class="modal-content">
                <span class="close" id="close-result-modal">&times;</span>
                <h2>Resultados</h2>
                <div id="result-over25" class="result-card over25">
                    <span class="icon">&#9650;</span> <!-- Icono de gráfico de barras -->
                    <span id="result-over25-text"></span>
                </div>
                <div id="result-bts" class="result-card bts">
                    <span class="icon">&#9917;</span> <!-- Icono de balón -->
                    <span id="result-bts-text"></span>
                </div>
                <div id="result-ht" class="result-card ht">
                    <span class="icon">&#9201;</span> <!-- Icono de reloj -->
                    <span id="result-ht-text"></span>
                </div>
            </div>
        </div>
        <div class="saved-results">
            <table>
                <thead>
                    <tr>
                        <th>Equipos</th>
                        <th>HT</th>
                        <th>BTS</th>
                        <th>Over 2.5</th>
                        <th>Apuesta</th>
                        <th>Acciones</th>
                    </tr>
                </thead>
                <tbody id="results-table-body">
                    <!-- Filas de resultados se agregarán aquí -->
                </tbody>
            </table>
        </div>
        <div id="confirmModal" class="confirm-modal">
            <div class="confirm-modal-content">
                <span class="close" id="close-confirm-modal">&times;</span>
                <h2>Confirmación</h2>
                <p id="confirm-message"></p>
                <div class="confirm-buttons">
                    <button class="btn btn-confirm" id="confirm-delete-btn">Confirmar</button>
                    <button class="btn btn-cancel" id="cancel-delete-btn">Cancelar</button>
                </div>
            </div>
        </div>
        <div id="detailModal" class="detail-modal">
            <div class="detail-modal-content">
                <span class="close" id="close-detail-modal">&times;</span>
                <div class="team-names" id="detail-team-names"></div>
                <div class="details" id="detail-details">
                    <div class="detail-item">
                        <label>Over 2.5:</label>
                        <span id="detail-over25"></span>
                    </div>
                    <div class="detail-item">
                        <label>BTS:</label>
                        <span id="detail-bts"></span>
                    </div>
                    <div class="detail-item">
                        <label>HT:</label>
                        <span id="detail-ht"></span>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="info-icon" id="info-icon">&#9432;</div>

    <!-- Modal -->
    <div id="myModal" class="modal">
        <div class="modal-content">
            <span class="close" id="close-info-modal">&times;</span>
            <h2>Instrucciones</h2>
            <p>Bienvenido al Predictor de Apuestas Deportivas.</p>
            <p>Para utilizar esta página, sigue estos pasos:</p>
            <ol>
                <li>Ingresa el nombre del equipo local y del equipo visitante en los campos correspondientes.</li>
                <li>Especifica las probabilidades para Over 2.5, BTS (Ambos Equipos Marcan) y HT (Primer Tiempo) ingresando un valor entre 0 y 100 en formato de porcentaje.</li>
                <li>Haz clic en el botón "Analizar" para obtener una predicción basada en los datos ingresados.</li>
                <li>Haz clic en el botón "Limpiar" para borrar todos los campos de entrada.</li>
                <li>Haz clic en el botón "Guardar" para almacenar los resultados en la tabla de resultados guardados.</li>
            </ol>
        </div>
    </div>

    <script>
        // Get the modals
        var infoModal = document.getElementById("myModal");
        var resultModal = document.getElementById("resultModal");
        var confirmModal = document.getElementById("confirmModal");
        var detailModal = document.getElementById("detailModal");

        // Get the buttons that open the modals
        var infoBtn = document.getElementById("info-icon");
        var analyzeBtn = document.getElementById("analyze-btn");
        var saveBtn = document.getElementById("save-btn");
        var clearBtn = document.getElementById("clear-btn");

        // Get the <span> elements that close the modals
        var infoSpan = document.getElementById("close-info-modal");
        var resultSpan = document.getElementById("close-result-modal");
        var confirmSpan = document.getElementById("close-confirm-modal");
        var detailSpan = document.getElementById("close-detail-modal");

        // Get the confirm buttons
        var confirmDeleteBtn = document.getElementById("confirm-delete-btn");
        var cancelDeleteBtn = document.getElementById("cancel-delete-btn");

        // Variable to store the row to be deleted
        var rowToDelete = null;

        // When the user clicks the info button, open the info modal 
        infoBtn.onclick = function() {
            infoModal.style.display = "block";
        }

        // When the user clicks the analyze button, calculate and open the result modal 
        analyzeBtn.onclick = function() {
            calculateProbabilities();
            resultModal.style.display = "block";
        }

        // When the user clicks the save button, save the results
        saveBtn.onclick = function() {
            saveResults();
        }

        // When the user clicks the clear button, clear the inputs
        clearBtn.onclick = function() {
            clearInputs();
        }

        // When the user clicks on <span> (x), close the modals
        infoSpan.onclick = function() {
            infoModal.style.display = "none";
        }
        resultSpan.onclick = function() {
            resultModal.style.display = "none";
        }
        confirmSpan.onclick = function() {
            confirmModal.style.display = "none";
        }
        detailSpan.onclick = function() {
            detailModal.style.display = "none";
        }

        // When the user clicks anywhere outside of the modals, close them
        window.onclick = function(event) {
            if (event.target == infoModal) {
                infoModal.style.display = "none";
            }
            if (event.target == resultModal) {
                resultModal.style.display = "none";
            }
            if (event.target == confirmModal) {
                confirmModal.style.display = "none";
            }
            if (event.target == detailModal) {
                detailModal.style.display = "none";
            }
        }

        // Clear inputs
        function clearInputs() {
            document.getElementById('local-team').value = '';
            document.getElementById('visitor-team').value = '';
            document.getElementById('local-over25').value = '';
            document.getElementById('visitor-over25').value = '';
            document.getElementById('local-bts').value = '';
            document.getElementById('visitor-bts').value = '';
            document.getElementById('local-ht').value = '';
            document.getElementById('visitor-ht').value = '';
        }

        // Function to save results
        function saveResults() {
            const over25 = parseFloat(saveBtn.dataset.over25);
            const bts = parseFloat(saveBtn.dataset.bts);
            const ht = parseFloat(saveBtn.dataset.ht);
            const localTeam = saveBtn.dataset.localTeam;
            const visitorTeam = saveBtn.dataset.visitorTeam;

            if (!localTeam || !visitorTeam || isNaN(over25) || isNaN(bts) || isNaN(ht)) {
                alert("Por favor, completa todos los campos antes de guardar.");
                return;
            }

            const recommendation = getRecommendation(over25, bts, ht);

            const tableBody = document.getElementById('results-table-body');
            const newRow = document.createElement('tr');

            const cellTeams = document.createElement('td');
            const cellHT = document.createElement('td');
            const cellBTS = document.createElement('td');
            const cellOver25 = document.createElement('td');
            const cellRecommendation = document.createElement('td');
            const cellActions = document.createElement('td');

            cellTeams.textContent = `${localTeam} vs ${visitorTeam}`;
            cellHT.textContent = `${ht.toFixed(2)}%`;
            cellBTS.textContent = `${bts.toFixed(2)}%`;
            cellOver25.textContent = `${over25.toFixed(2)}%`;

            // Set recommendation text and color
            const recommendationText = document.createElement('span');
            recommendationText.className = `recommendation ${recommendation === 'No Apostar' ? 'red' : 'green'}`;
            recommendationText.textContent = recommendation;
            cellRecommendation.appendChild(recommendationText);

            // Add action icons
            const actionIcons = document.createElement('div');
            actionIcons.className = 'action-icons';

            const viewIcon = document.createElement('span');
            viewIcon.className = 'icon view';
            viewIcon.innerHTML = '&#128065;'; // Icono de ver resultados
            viewIcon.title = 'Ver Resultados';
            viewIcon.onclick = function() {
                showResultDetails(localTeam, visitorTeam, over25, bts, ht);
            };

            const deleteIcon = document.createElement('span');
            deleteIcon.className = 'icon delete';
            deleteIcon.innerHTML = '&#10060;'; // Icono de eliminar
            deleteIcon.title = 'Eliminar';
            deleteIcon.onclick = function() {
                confirmDeletion(newRow, localTeam, visitorTeam, recommendation);
            };

            actionIcons.appendChild(viewIcon);
            actionIcons.appendChild(deleteIcon);

            cellActions.appendChild(actionIcons);

            // Insert the new row at the beginning of the table body
            tableBody.insertBefore(newRow, tableBody.firstChild);

            newRow.appendChild(cellTeams);
            newRow.appendChild(cellHT);
            newRow.appendChild(cellBTS);
            newRow.appendChild(cellOver25);
            newRow.appendChild(cellRecommendation);
            newRow.appendChild(cellActions);
        }

        // Function to show result details in a modal
        function showResultDetails(localTeam, visitorTeam, over25, bts, ht) {
            document.getElementById('detail-team-names').textContent = `${localTeam} vs ${visitorTeam}`;
            document.getElementById('detail-over25').textContent = `${over25.toFixed(2)}%`;
            document.getElementById('detail-bts').textContent = `${bts.toFixed(2)}%`;
            document.getElementById('detail-ht').textContent = `${ht.toFixed(2)}%`;

            detailModal.style.display = "block";
        }

        // Function to confirm deletion
        function confirmDeletion(row, localTeam, visitorTeam, recommendation) {
            rowToDelete = row;
            const confirmMessage = `¿Está seguro de que desea eliminar? ${localTeam} vs ${visitorTeam} (${recommendation})`;
            document.getElementById('confirm-message').textContent = confirmMessage;
            confirmModal.style.display = "block";
        }

        // When the user clicks the confirm delete button, delete the row
        confirmDeleteBtn.onclick = function() {
            if (rowToDelete) {
                rowToDelete.remove();
                rowToDelete = null;
                confirmModal.style.display = "none";
            }
        }

        // When the user clicks the cancel delete button, close the confirm modal
        cancelDeleteBtn.onclick = function() {
            rowToDelete = null;
            confirmModal.style.display = "none";
        }

        // Function to calculate probabilities
        function calculateProbabilities() {
            const localOver25 = parseFloat(document.getElementById('local-over25').value) || 0;
            const visitorOver25 = parseFloat(document.getElementById('visitor-over25').value) || 0;
            const localBTS = parseFloat(document.getElementById('local-bts').value) || 0;
            const visitorBTS = parseFloat(document.getElementById('visitor-bts').value) || 0;
            const localHT = parseFloat(document.getElementById('local-ht').value) || 0;
            const visitorHT = parseFloat(document.getElementById('visitor-ht').value) || 0;

            const combinedOver25 = ((localOver25 + visitorOver25) / 2).toFixed(2);
            const combinedBTS = ((localBTS + visitorBTS) / 2).toFixed(2);
            const combinedHT = ((localHT + visitorHT) / 2).toFixed(2);

            document.getElementById('result-over25-text').textContent = `Over 2.5: ${combinedOver25}%`;
            document.getElementById('result-bts-text').textContent = `BTS (Ambos Equipos Marcan): ${combinedBTS}%`;
            document.getElementById('result-ht-text').textContent = `HT (Primer Tiempo): ${combinedHT}%`;

            // Save the calculated values for saving later
            saveBtn.dataset.over25 = combinedOver25;
            saveBtn.dataset.bts = combinedBTS;
            saveBtn.dataset.ht = combinedHT;
            saveBtn.dataset.localTeam = document.getElementById('local-team').value;
            saveBtn.dataset.visitorTeam = document.getElementById('visitor-team').value;
        }

        // Function to determine recommendation
        function getRecommendation(over25, bts, ht) {
            const over25Parsed = parseFloat(over25);
            const btsParsed = parseFloat(bts);
            const htParsed = parseFloat(ht);

            if (over25Parsed > 70 && btsParsed > 75 && htParsed > 70) {
                return "Apostar en Over 2.5";
            } else if (over25Parsed > 70 && btsParsed > 70 && htParsed > 65) {
                return "Apostar en Over 1.5";
            } else if (over25Parsed > 75 && btsParsed > 70 && htParsed > 65) {
                return "Apostar en BTS";
            } else if (over25Parsed > 70 && btsParsed > 75 && htParsed > 70 && over25Parsed > 70 && btsParsed > 70 && htParsed > 65 && over25Parsed > 75 && btsParsed > 70 && htParsed > 65) {
                return "Apostar en cualquier mercado";
            } else {
                return "No Apostar";
            }
        }
    </script>
</body>
</html>
ASSISTANT
Claro, aquí tienes el código completo dividido en tres archivos: `index.html`, `styles.css` y `script.js`, sin saltarse ninguna línea.

### Archivo 1: `index.html`
```html
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Predictor de Apuestas Deportivas</title>
    <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600&display=swap" rel="stylesheet">
    <link rel="stylesheet" href="styles.css">
</head>
<body>
    <div class="container">
        <div class="card">
            <h2>Equipo Local</h2>
            <div class="form-group">
                <label for="local-team">Nombre del Equipo:</label>
                <input type="text" id="local-team" placeholder="Equipo Local">
            </div>
            <div class="checkbox-group">
                <label>Over 2.5:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="local-over25">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
                <label>BTS:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="local-bts">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
                <label>HT:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="local-ht">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
            </div>
        </div>
        <div class="card">
            <h2>Equipo Visitante</h2>
            <div class="form-group">
                <label for="visitor-team">Nombre del Equipo:</label>
                <input type="text" id="visitor-team" placeholder="Equipo Visitante">
            </div>
            <div class="checkbox-group">
                <label>Over 2.5:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="visitor-over25">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
                <label>BTS:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="visitor-bts">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
                <label>HT:
                    <div class="input-container">
                        <input type="number" min="0" max="100" step="1" value="0" placeholder="0" id="visitor-ht">
                        <span class="percent-sign">%</span>
                    </div>
                </label>
            </div>
        </div>
        <div class="button-container" style="width: 100%; max-width: 600px;">
            <button class="btn btn-analyze" id="analyze-btn">Analizar</button>
            <button class="btn btn-clear" id="clear-btn">Limpiar</button>
            <button class="btn btn-save" id="save-btn"><span>&#9989;</span> Guardar</button>
        </div>
        <div id="resultModal" class="modal">
            <div class="modal-content">
                <span class="close" id="close-result-modal">&times;</span>
                <h2>Resultados</h2>
                <div id="result-over25" class="result-card over25">
                    <span class="icon">&#9650;</span> <!-- Icono de gráfico de barras -->
                    <span id="result-over25-text"></span>
                </div>
                <div id="result-bts" class="result-card bts">
                    <span class="icon">&#9917;</span> <!-- Icono de balón -->
                    <span id="result-bts-text"></span>
                </div>
                <div id="result-ht" class="result-card ht">
                    <span class="icon">&#9201;</span> <!-- Icono de reloj -->
                    <span id="result-ht-text"></span>
                </div>
            </div>
        </div>
        <div class="saved-results">
            <table>
                <thead>
                    <tr>
                        <th>Equipos</th>
                        <th>HT</th>
                        <th>BTS</th>
                        <th>Over 2.5</th>
                        <th>Apuesta</th>
                        <th>Acciones</th>
                    </tr>
                </thead>
                <tbody id="results-table-body">
                    <!-- Filas de resultados se agregarán aquí -->
                </tbody>
            </table>
        </div>
        <div id="confirmModal" class="confirm-modal">
            <div class="confirm-modal-content">
                <span class="close" id="close-confirm-modal">&times;</span>
                <h2>Confirmación</h2>
                <p id="confirm-message"></p>
                <div class="confirm-buttons">
                    <button class="btn btn-confirm" id="confirm-delete-btn">Confirmar</button>
                    <button class="btn btn-cancel" id="cancel-delete-btn">Cancelar</button>
                </div>
            </div>
        </div>
        <div id="detailModal" class="detail-modal">
            <div class="detail-modal-content">
                <span class="close" id="close-detail-modal">&times;</span>
                <div class="team-names" id="detail-team-names"></div>
                <div class="details" id="detail-details">
                    <div class="detail-item">
                        <label>Over 2.5:</label>
                        <span id="detail-over25"></span>
                    </div>
                    <div class="detail-item">
                        <label>BTS:</label>
                        <span id="detail-bts"></span>
                    </div>
                    <div class="detail-item">
                        <label>HT:</label>
                        <span id="detail-ht"></span>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="info-icon" id="info-icon">&#9432;</div>

    <!-- Modal -->
    <div id="myModal" class="modal">
        <div class="modal-content">
            <span class="close" id="close-info-modal">&times;</span>
            <h2>Instrucciones</h2>
            <p>Bienvenido al Predictor de Apuestas Deportivas.</p>
            <p>Para utilizar esta página, sigue estos pasos:</p>
            <ol>
                <li>Ingresa el nombre del equipo local y del equipo visitante en los campos correspondientes.</li>
                <li>Especifica las probabilidades para Over 2.5, BTS (Ambos Equipos Marcan) y HT (Primer Tiempo) ingresando un valor entre 0 y 100 en formato de porcentaje.</li>
                <li>Haz clic en el botón "Analizar" para obtener una predicción basada en los datos ingresados.</li>
                <li>Haz clic en el botón "Limpiar" para borrar todos los campos de entrada.</li>
                <li>Haz clic en el botón "Guardar" para almacenar los resultados en la tabla de resultados guardados.</li>
            </ol>
        </div>
    </div>

    <script src="script.js"></script>
</body>
</html>
```

### Archivo 2: `styles.css`
```css
body {
    font-family: 'Poppins', sans-serif;
    margin: 0;
    padding: 0;
    background-color: rgba(173, 216, 230, 0.2); /* Fondo azul claro desvanecido */
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 100vh;
    position: relative;
}
.container {
    width: 90%;
    max-width: 1200px;
    display: flex;
    flex-wrap: wrap;
    gap: 20px;
}
.card {
    background-color: #e0f7fa;
    border-radius: 10px;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
    flex: 1;
    min-width: 300px;
    padding: 20px;
    transition: transform 0.2s ease;
}
.card:hover {
    transform: translateY(-5px);
}
.card h2 {
    color: #003366;
    margin-bottom: 15px;
    text-align: center;
}
.form-group {
    margin-bottom: 15px;
}
.form-group label {
    color: #003366;
    display: block;
    margin-bottom: 5px;
}
.form-group input[type="text"] {
    width: 100%;
    padding: 10px;
    border: 1px solid #ccc;
    border-radius: 5px;
    background-color: #ffffff;
    box-sizing: border-box;
    transition: border-color 0.3s ease, box-shadow 0.3s ease;
}
.form-group input[type="text"]:hover {
    border-color: #4caf50;
    box-shadow: 0 0 5px rgba(76, 175, 80, 0.4);
}
.checkbox-group {
    display: flex;
    flex-direction: column;
}
.checkbox-group label {
    display: flex;
    align-items: center;
    color: #003366;
    margin-bottom: 10px;
}
.checkbox-group .input-container {
    display: flex;
    width: 100%;
    align-items: center;
}
.checkbox-group input[type="number"] {
    width: calc(100% - 25px);
    padding: 10px;
    border: 1px solid #ccc;
    border-radius: 5px;
    background-color: #ffffff;
    box-sizing: border-box;
    transition: border-color 0.3s ease, box-shadow 0.3s ease;
}
.checkbox-group input[type="number"]:hover {
    border-color: #4caf50;
    box-shadow: 0 0 5px rgba(76, 175, 80, 0.4);
}
.checkbox-group .percent-sign {
    color: #003366;
    margin-left: 5px;
}
.button-container {
    display: flex;
    justify-content: space-between;
    margin-top: 20px;
}
.btn {
    padding: 10px 20px;
    border: none;
    border-radius: 5px;
    cursor: pointer;
    transition: background-color 0.3s ease, transform 0.2s ease;
}
.btn-analyze {
    background-color: #4caf50;
    color: white;
}
.btn-analyze:hover {
    background-color: #45a049;
    transform: translateY(-2px);
}
.btn-clear {
    background-color: #003366;
    color: white;
    border: 2px solid #4caf50;
}
.btn-clear:hover {
    background-color: #4caf50;
    color: #003366;
    transform: translateY(-2px);
}
.btn-save {
    background-color: #ff9800;
    color: white;
}
.btn-save:hover {
    background-color: #e67e22;
    transform: translateY(-2px);
}
.info-icon {
    position: absolute;
    top: 20px;
    right: 20px;
    font-size: 24px;
    color: #4caf50;
    cursor: pointer;
    transition: color 0.3s ease;
}
.info-icon:hover {
    color: #45a049;
}
.modal {
    display: none;
    position: fixed;
    z-index: 1;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    overflow: auto;
    background-color: rgba(0, 0, 0, 0.5);
}
.modal-content {
    background-color: #ffffff;
    margin: 15% auto;
    padding: 20px;
    border: 1px solid #888;
    border-radius: 10px;
    width: 80%;
    max-width: 500px;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
}
.close {
    color: #aaa;
    float: right;
    font-size: 28px;
    font-weight: bold;
    cursor: pointer;
}
.close:hover,
.close:focus {
    color: black;
    text-decoration: none;
    cursor: pointer;
}
.result-card {
    background-color: #f9f9f9;
    border-radius: 10px;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
    padding: 15px;
    margin-bottom: 15px;
    display: flex;
    align-items: center;
}
.result-card .icon {
    font-size: 24px;
    margin-right: 10px;
}
.result-card.over25 .icon {
    color: #4caf50;
}
.result-card.bts .icon {
    color: #ff9800;
}
.result-card.ht .icon {
    color: #003366;
}
.saved-results {
    margin-top: 20px;
    width: 100%;
    max-width: 1200px;
    overflow-x: auto;
}
.saved-results table {
    width: 100%;
    border-collapse: collapse;
}
.saved-results th, .saved-results td {
    padding: 10px;
    text-align: left;
    border-bottom: 1px solid #ddd;
}
.saved-results th {
    background-color: #e0f7fa;
}
.saved-results tr:nth-child(even) {
    background-color: #f9f9f9;
}
.saved-results tr:nth-child(odd) {
    background-color: #ffffff;
}
.recommendation {
    font-weight: bold;
}
.action-icons {
    display: flex;
    align-items: center;
}
.action-icons .icon {
    font-size: 24px;
    margin-right: 10px;
    cursor: pointer;
    transition: color 0.3s ease;
}
.action-icons .icon:hover {
    color: #4caf50;
}
.action-icons .icon.delete:hover {
    color: #ff4d4d;
}
.confirm-modal {
    display: none;
    position: fixed;
    z-index: 2;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    overflow: auto;
    background-color: rgba(0, 0, 0, 0.5);
}
.confirm-modal-content {
    background-color: #ffffff;
    margin: 15% auto;
    padding: 20px;
    border: 1px solid #888;
    border-radius: 10px;
    width: 80%;
    max-width: 400px;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
}
.confirm-modal .close {
    color: #aaa;
    float: right;
    font-size: 28px;
    font-weight: bold;
    cursor: pointer;
}
.confirm-modal .close:hover,
.confirm-modal .close:focus {
    color: black;
    text-decoration: none;
    cursor: pointer;
}
.confirm-modal .confirm-buttons {
    display: flex;
    justify-content: space-between;
    margin-top: 20px;
}
.confirm-modal .confirm-buttons .btn {
    padding: 10px 20px;
    border: none;
    border-radius: 5px;
    cursor: pointer;
    transition: background-color 0.3s ease, transform 0.2s ease;
}
.confirm-modal .confirm-buttons .btn-confirm {
    background-color: #4caf50;
    color: white;
}
.confirm-modal .confirm-buttons .btn-confirm:hover {
    background-color: #45a049;
    transform: translateY(-2px);
}
.confirm-modal .confirm-buttons .btn-cancel {
    background-color: #003366;
    color: white;
    border: 2px solid #4caf50;
}
.confirm-modal .confirm-buttons .btn-cancel:hover {
    background-color: #4caf50;
    color: #003366;
    transform: translateY(-2px);
}
.detail-modal {
    display: none;
    position: fixed;
    z-index: 1;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    overflow: auto;
    background-color: rgba(0, 0, 0, 0.5);
}
.detail-modal-content {
    background-color: #ffffff;
    margin: 15% auto;
    padding: 20px;
    border: 1px solid #888;
    border-radius: 10px;
    width: 80%;
    max-width: 500px;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
}
.detail-modal .close {
    color: #aaa;
    float: right;
    font-size: 28px;
    font-weight: bold;
    cursor: pointer;
}
.detail-modal .close:hover,
.detail-modal .close:focus {
    color: black;
    text-decoration: none;
    cursor: pointer;
}
.detail-modal .team-names {
    text-align: center;
    margin-bottom: 20px;
    font-size: 1.5em;
    font-weight: bold;
    color: #003366;
}
.detail-modal .details {
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.detail-modal .details .detail-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
}
.detail-modal .details .detail-item label {
    font-weight: bold;
    color: #003366;
}
.detail-modal .details .detail-item span {
    color: #003366;
}
@media (max-width: 768px) {
    .container {
        flex-direction: column;
        align-items: center;
    }
}
```

### Archivo 3: `script.js`
```javascript
// Get the modals
var infoModal = document.getElementById("myModal");
var resultModal = document.getElementById("resultModal");
var confirmModal = document.getElementById("confirmModal");
var detailModal = document.getElementById("detailModal");

// Get the buttons that open the modals
var infoBtn = document.getElementById("info-icon");
var analyzeBtn = document.getElementById("analyze-btn");
var saveBtn = document.getElementById("save-btn");
var clearBtn = document.getElementById("clear-btn");

// Get the <span> elements that close the modals
var infoSpan = document.getElementById("close-info-modal");
var resultSpan = document.getElementById("close-result-modal");
var confirmSpan = document.getElementById("close-confirm-modal");
var detailSpan = document.getElementById("close-detail-modal");

// Get the confirm buttons
var confirmDeleteBtn = document.getElementById("confirm-delete-btn");
var cancelDeleteBtn = document.getElementById("cancel-delete-btn");

// Variable to store the row to be deleted
var rowToDelete = null;

// When the user clicks the info button, open the info modal 
infoBtn.onclick = function() {
    infoModal.style.display = "block";
}

// When the user clicks the analyze button, calculate and open the result modal 
analyzeBtn.onclick = function() {
    calculateProbabilities();
    resultModal.style.display = "block";
}

// When the user clicks the save button, save the results
saveBtn.onclick = function() {
    saveResults();
}

// When the user clicks the clear button, clear the inputs
clearBtn.onclick = function() {
    clearInputs();
}

// When the user clicks on <span> (x), close the modals
infoSpan.onclick = function() {
    infoModal.style.display = "none";
}
resultSpan.onclick = function() {
    resultModal.style.display = "none";
}
confirmSpan.onclick = function() {
    confirmModal.style.display = "none";
}
detailSpan.onclick = function() {
    detailModal.style.display = "none";
}

// When the user clicks anywhere outside of the modals, close them
window.onclick = function(event) {
    if (event.target == infoModal) {
        infoModal.style.display = "none";
    }
    if (event.target == resultModal) {
        resultModal.style.display = "none";
    }
    if (event.target == confirmModal) {
        confirmModal.style.display = "none";
    }
    if (event.target == detailModal) {
        detailModal.style.display = "none";
    }
}

// Clear inputs
function clearInputs() {
    const inputs = document.querySelectorAll('input[type="text"], input[type="number"]');
    inputs.forEach(input => input.value = '');
}

// Function to save results
function saveResults() {
    const over25 = parseFloat(saveBtn.dataset.over25);
    const bts = parseFloat(saveBtn.dataset.bts);
    const ht = parseFloat(saveBtn.dataset.ht);
    const localTeam = saveBtn.dataset.localTeam;
    const visitorTeam = saveBtn.dataset.visitorTeam;

    if (!localTeam || !visitorTeam || isNaN(over25) || isNaN(bts) || isNaN(ht)) {
        alert("Por favor, completa todos los campos antes de guardar.");
        return;
    }

    const recommendation = getRecommendation(over25, bts, ht);

    const tableBody = document.getElementById('results-table-body');
    const newRow = document.createElement('tr');

    const cellTeams = document.createElement('td');
    const cellHT = document.createElement('td');
    const cellBTS = document.createElement('td');
    const cellOver25 = document.createElement('td');
    const cellRecommendation = document.createElement('td');
    const cellActions = document.createElement('td');

    cellTeams.textContent = `${localTeam} vs ${visitorTeam}`;
    cellHT.textContent = `${ht.toFixed(2)}%`;
    cellBTS.textContent = `${bts.toFixed(2)}%`;
    cellOver25.textContent = `${over25.toFixed(2)}%`;
    cellRecommendation.innerHTML = `<span class="recommendation">${recommendation}</span>`;

    // Add action icons
    const actionIcons = document.createElement('div');
    actionIcons.className = 'action-icons';

    const viewIcon = document.createElement('span');
    viewIcon.className = 'icon view';
    viewIcon.innerHTML = '&#128065;'; // Icono de ver resultados
    viewIcon.title = 'Ver Resultados';
    viewIcon.onclick = function() {
        showResultDetails(localTeam, visitorTeam, over25, bts, ht);
    };

    const deleteIcon = document.createElement('span');
    deleteIcon.className = 'icon delete';
    deleteIcon.innerHTML = '&#10060;'; // Icono de eliminar
    deleteIcon.title = 'Eliminar';
    deleteIcon.onclick = function() {
        confirmDeletion(newRow, localTeam, visitorTeam, recommendation);
    };

    actionIcons.appendChild(viewIcon);
    actionIcons.appendChild(deleteIcon);

    cellActions.appendChild(actionIcons);

    // Insert the new row at the beginning of the table body
    tableBody.insertBefore(newRow, tableBody.firstChild);

    newRow.appendChild(cellTeams);
    newRow.appendChild(cellHT);
    newRow.appendChild(cellBTS);
    newRow.appendChild(cellOver25);
    newRow.appendChild(cellRecommendation);
    newRow.appendChild(cellActions);
}

// Function to show result details in a modal
function showResultDetails(localTeam, visitorTeam, over25, bts, ht) {
    document.getElementById('detail-team-names').textContent = `${localTeam} vs ${visitorTeam}`;
    document.getElementById('detail-over25').textContent = `${over25.toFixed(2)}%`;
    document.getElementById('detail-bts').textContent = `${bts.toFixed(2)}%`;
    document.getElementById('detail-ht').textContent = `${ht.toFixed(2)}%`;

    detailModal.style.display = "block";
}

// Function to confirm deletion
function confirmDeletion(row, localTeam, visitorTeam, recommendation) {
    rowToDelete = row;
    const confirmMessage = `¿Está seguro de que desea eliminar? ${localTeam} vs ${visitorTeam} (${recommendation})`;
    document.getElementById('confirm-message').textContent = confirmMessage;
    confirmModal.style.display = "block";
}

// When the user clicks the confirm delete button, delete the row
confirmDeleteBtn.onclick = function() {
    if (rowToDelete) {
        rowToDelete.remove();
        rowToDelete = null;
        confirmModal.style.display = "none";
    }
}

// When the user clicks the cancel delete button, close the confirm modal
cancelDeleteBtn.onclick = function() {
    rowToDelete = null;
    confirmModal.style.display = "none";
}

// Function to calculate probabilities
function calculateProbabilities() {
    const localOver25 = parseFloat(document.getElementById('local-over25').value) || 0;
    const visitorOver25 = parseFloat(document.getElementById('visitor-over25').value) || 0;
    const localBTS = parseFloat(document.getElementById('local-bts').value) || 0;
    const visitorBTS = parseFloat(document.getElementById('visitor-bts').value) || 0;
    const localHT = parseFloat(document.getElementById('local-ht').value) || 0;
    const visitorHT = parseFloat(document.getElementById('visitor-ht').value) || 0;

    const combinedOver25 = ((localOver25 + visitorOver25) / 2).toFixed(2);
    const combinedBTS = ((localBTS + visitorBTS) / 2).toFixed(2);
    const combinedHT = ((localHT + visitorHT) / 2).toFixed(2);

    document.getElementById('result-over25-text').textContent = `Over 2.5: ${combinedOver25}%`;
    document.getElementById('result-bts-text').textContent = `BTS (Ambos Equipos Marcan): ${combinedBTS}%`;
    document.getElementById('result-ht-text').textContent = `HT (Primer Tiempo): ${combinedHT}%`;

    // Save the calculated values for saving later
    saveBtn.dataset.over25 = combinedOver25;
    saveBtn.dataset.bts = combinedBTS;
    saveBtn.dataset.ht = combinedHT;
    saveBtn.dataset.localTeam = document.getElementById('local-team').value;
    saveBtn.dataset.visitorTeam = document.getElementById('visitor-team').value;
}

// Function to determine recommendation
function getRecommendation(over25, bts, ht) {
    const over25Parsed = parseFloat(over25);
    const btsParsed = parseFloat(bts);
    const htParsed = parseFloat(ht);

    if (over25Parsed > 70 && btsParsed > 75 && htParsed > 70) {
        return "Apostar en Over 2.5";
    } else if (over25Parsed > 70 && btsParsed > 70 && htParsed > 65) {
        return "Apostar en Over 1.5";
    } else if (over25Parsed > 75 && btsParsed > 70 && htParsed > 65) {
        return "Apostar en BTS";
    } else if (over25Parsed > 70 && btsParsed > 75 && htParsed > 70 && over25Parsed > 70 && btsParsed > 70 && htParsed > 65 && over25Parsed > 75 && btsParsed > 70 && htParsed > 65) {
        return "Apostar en cualquier mercado";
    } else {
        return "No Apostar";
    }
}
```

---

Con estos tres archivos separados, asegúrate de guardarlos en la misma carpeta. `index.html` debe enlazar correctamente a `styles.css` y `script.js`. Si necesitas más ayuda, no dudes en preguntar. ¡Buena suerte con tu proyecto!