Skip to content
LAM
Read Home Blog
Make Projects HTML Tools Games
Touch grass Notes Resume Links
Home Blog HTML Projects
Tools Games Notes Resume Links
Back Options & 0DTE Radar – Cheat Sheet Finance
Download Open
Show description 2,312 chars · Finance

Options & 0DTE Radar – Cheat Sheet

Options & 0DTE Radar – Cheat Sheet







Options & 0DTE Radar


A one-page, dark-mode cheat sheet for remembering what calls, puts,
strike price, bid/ask, and 0DTE actually mean when you’re staring at
a real options chain.



Learning Mode
Calls vs Puts
Bid / Ask / Spread
0DTE Flow













Core Idea: What an Option Actually Is

foundation





An option is a contract that gives you the
right, but not the obligation, to buy or sell
100 shares of a stock or ETF at a specific
strike price on or before a certain date
(expiration).



Call = right to buy (bullish)
Put = right to sell (bearish)
1 contract ≙ 100 shares


You pay "premium"


The price of the option is the premium. If a
contract shows 1.25, it actually costs
1.25 × 100 = $125.





Call in one line


You pay premium now, hoping the stock ends up
above the strike. Profit potential is
(roughly) unlimited, loss is limited to the premium you paid.





Put in one line


You pay premium now, betting the stock will go
down. The lower it goes below the strike, the
more the put can be worth (until it hits zero).










Key memory hook


Calls up, puts down.
Calls want price up and above the strike.
Puts want price down and below the strike.












Strike Price & ITM / OTM

where price has to cross





The strike price is the level the underlying
needs to be above/below for the option to have intrinsic value
at expiration.



For calls



In The Money (ITM): stock price
above strike.



At The Money (ATM): stock price ≈ strike.



Out of The Money (OTM): stock price
below strike.




For puts



ITM: stock price
below strike.


ATM: stock price ≈ strike.


OTM: stock price
above strike.






Break-even (simple view)


Call: break-even ≈ strike + premium
Put: break-even ≈ strike − premium





Example


Stock = 11.22
Call strike = 10
Intrinsic now = 11.22 − 10 = 1.22














Bid, Ask & The Spread

how you actually get filled





Every option is constantly being quoted with two prices:




Bid: highest price someone will pay
right now.



Ask: lowest price someone will sell for
right now.





The difference between them is the
spread.…

Options & 0DTE Radar – Cheat Sheet

30,116 bytes · HTML source
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8" />
  <title>Options & 0DTE Radar – Cheat Sheet</title>
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <style>
    :root {
      --bg: #050509;
      --bg-alt: #101018;
      --bg-card: #141422;
      --accent: #32ffb0;
      --accent-soft: rgba(50,255,176,0.12);
      --accent2: #ff53c0;
      --accent3: #4ecbff;
      --danger: #ff4b81;
      --text-main: #f4f4ff;
      --text-muted: #9b9bb5;
      --border-subtle: #2a2a3a;
      --radius-lg: 18px;
      --radius-sm: 8px;
      --shadow-soft: 0 18px 45px rgba(0,0,0,0.65);
      --font-main: system-ui, -apple-system, BlinkMacSystemFont, "SF Pro Text",
                   "Segoe UI", sans-serif;
      --font-mono: "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", monospace;
    }

    * {
      box-sizing: border-box;
    }

    body {
      margin: 0;
      padding: 0;
      background: radial-gradient(circle at top, #1b1b3a 0, var(--bg) 40%, #000 100%);
      color: var(--text-main);
      font-family: var(--font-main);
      min-height: 100vh;
    }

    .app-shell {
      max-width: 1120px;
      margin: 0 auto;
      padding: 24px 16px 48px;
    }

    header.hero {
      display: flex;
      flex-wrap: wrap;
      align-items: center;
      gap: 16px;
      margin-bottom: 24px;
    }

    .hero-title {
      font-size: clamp(2rem, 3vw + 1rem, 2.9rem);
      font-weight: 800;
      letter-spacing: 0.03em;
      text-transform: uppercase;
      background: linear-gradient(120deg, var(--accent), var(--accent2), var(--accent3));
      -webkit-background-clip: text;
      color: transparent;
    }

    .hero-tagline {
      color: var(--text-muted);
      max-width: 520px;
      line-height: 1.5;
    }

    .hero-chip-row {
      display: flex;
      flex-wrap: wrap;
      gap: 8px;
      margin-top: 8px;
    }

    .chip {
      border-radius: 999px;
      padding: 4px 10px;
      border: 1px solid var(--border-subtle);
      background: rgba(10,10,20,0.8);
      font-size: 11px;
      text-transform: uppercase;
      letter-spacing: 0.08em;
      color: var(--text-muted);
    }

    .glow-chip {
      border-color: var(--accent);
      color: var(--accent);
      box-shadow: 0 0 15px rgba(50,255,176,0.5);
    }

    .layout-main {
      display: grid;
      grid-template-columns: minmax(0, 3fr) minmax(0, 1.5fr);
      gap: 20px;
    }

    @media (max-width: 900px) {
      .layout-main {
        grid-template-columns: 1fr;
      }
    }

    .card {
      background: linear-gradient(135deg, var(--bg-card), #12121e);
      border-radius: var(--radius-lg);
      border: 1px solid var(--border-subtle);
      box-shadow: var(--shadow-soft);
      padding: 18px 18px 16px;
      position: relative;
      overflow: hidden;
    }

    .card::before {
      content: "";
      position: absolute;
      inset: -20%;
      background:
        radial-gradient(circle at 0 0, rgba(50,255,176,0.12), transparent 55%),
        radial-gradient(circle at 100% 0, rgba(255,83,192,0.09), transparent 55%);
      opacity: 0.7;
      pointer-events: none;
    }

    .card > * {
      position: relative;
      z-index: 1;
    }

    .card-title-row {
      display: flex;
      align-items: baseline;
      justify-content: space-between;
      gap: 10px;
      margin-bottom: 6px;
    }

    .card-title {
      font-size: 1.1rem;
      font-weight: 700;
    }

    .card-tag {
      font-size: 11px;
      text-transform: uppercase;
      letter-spacing: 0.16em;
      color: var(--accent3);
    }

    .card-body {
      font-size: 0.9rem;
      color: var(--text-muted);
      line-height: 1.6;
    }

    .pill-row {
      display: flex;
      flex-wrap: wrap;
      gap: 6px;
      margin: 10px 0 6px;
    }

    .pill {
      font-size: 11px;
      border-radius: 999px;
      padding: 2px 8px;
      border: 1px solid rgba(255,255,255,0.08);
      background: rgba(0,0,0,0.4);
      color: var(--text-muted);
      white-space: nowrap;
    }

    .pill.call {
      border-color: var(--accent);
      color: var(--accent);
    }

    .pill.put {
      border-color: var(--danger);
      color: var(--danger);
    }

    .mono {
      font-family: var(--font-mono);
      font-size: 0.86rem;
    }

    .grid-two {
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 8px;
      margin-top: 8px;
    }

    .mini-card {
      background: rgba(5,5,16,0.85);
      border-radius: var(--radius-sm);
      border: 1px solid var(--border-subtle);
      padding: 8px 9px;
      font-size: 0.82rem;
      color: var(--text-muted);
    }

    .mini-title {
      font-size: 0.8rem;
      text-transform: uppercase;
      letter-spacing: 0.12em;
      color: var(--accent3);
      margin-bottom: 3px;
    }

    .label {
      font-size: 0.8rem;
      text-transform: uppercase;
      letter-spacing: 0.18em;
      color: var(--text-muted);
      margin-top: 10px;
      margin-bottom: 4px;
    }

    .bullets {
      margin: 0;
      padding-left: 18px;
    }

    .bullets li {
      margin-bottom: 4px;
    }

    .badge {
      display: inline-flex;
      align-items: center;
      gap: 4px;
      padding: 1px 7px;
      border-radius: 999px;
      font-size: 11px;
      background: rgba(255,255,255,0.03);
      border: 1px solid rgba(255,255,255,0.05);
      color: var(--text-muted);
    }

    .badge-dot {
      width: 7px;
      height: 7px;
      border-radius: 999px;
      background: var(--accent);
    }

    .warning {
      color: var(--danger);
      font-weight: 500;
    }

    .accent-box {
      margin-top: 10px;
      padding: 8px 10px;
      border-radius: var(--radius-sm);
      background: radial-gradient(circle at 0 0, var(--accent-soft), transparent 60%);
      border: 1px dashed rgba(50,255,176,0.4);
      font-size: 0.85rem;
    }

    /* Right-hand sidebar */

    .sidebar-card {
      margin-bottom: 16px;
    }

    .nav-list {
      list-style: none;
      padding: 0;
      margin: 6px 0 0;
      font-size: 0.85rem;
    }

    .nav-list li {
      margin: 3px 0;
    }

    .nav-list a {
      color: var(--text-muted);
      text-decoration: none;
      display: inline-flex;
      align-items: center;
      gap: 6px;
      padding: 3px 4px;
      border-radius: 999px;
    }

    .nav-list a::before {
      content: "◆";
      font-size: 9px;
      color: var(--accent3);
      opacity: 0.85;
    }

    .nav-list a:hover {
      color: var(--accent);
      background: rgba(50,255,176,0.08);
    }

    /* Simple accordion for "deep dive" */

    .accordion {
      border-radius: var(--radius-sm);
      overflow: hidden;
      border: 1px solid var(--border-subtle);
      margin-top: 8px;
    }

    .accordion-item + .accordion-item {
      border-top: 1px solid var(--border-subtle);
    }

    .accordion-header {
      background: rgba(5,5,16,0.92);
      padding: 7px 9px;
      cursor: pointer;
      display: flex;
      justify-content: space-between;
      align-items: center;
      font-size: 0.86rem;
    }

    .accordion-header span {
      color: var(--text-muted);
    }

    .accordion-header .chevron {
      font-size: 12px;
      color: var(--accent3);
      transition: transform 0.16s ease;
    }

    .accordion-content {
      max-height: 0;
      overflow: hidden;
      background: #060612;
      padding: 0 9px;
      font-size: 0.82rem;
      color: var(--text-muted);
      transition: max-height 0.18s ease-out, padding 0.18s ease-out;
    }

    .accordion-content.open {
      padding: 7px 9px 9px;
    }

    .accordion-item.active .accordion-header .chevron {
      transform: rotate(90deg);
    }

    /* Simple break-even calculator */

    .calc-grid {
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 8px;
      margin-top: 6px;
      align-items: end;
    }

    .calc-grid label {
      font-size: 0.78rem;
      text-transform: uppercase;
      letter-spacing: 0.12em;
      color: var(--text-muted);
      display: block;
      margin-bottom: 3px;
    }

    .calc-grid input,
    .calc-grid select {
      width: 100%;
      border-radius: 8px;
      border: 1px solid var(--border-subtle);
      padding: 6px 8px;
      background: #05050b;
      color: var(--text-main);
      font-family: var(--font-mono);
      font-size: 0.82rem;
      outline: none;
    }

    .calc-grid input:focus,
    .calc-grid select:focus {
      border-color: var(--accent3);
      box-shadow: 0 0 0 1px rgba(78,203,255,0.4);
    }

    .calc-output {
      margin-top: 6px;
      font-size: 0.85rem;
      color: var(--accent);
      font-family: var(--font-mono);
    }

    footer {
      margin-top: 26px;
      font-size: 0.75rem;
      color: var(--text-muted);
      text-align: center;
      opacity: 0.7;
    }

    a.inline-link {
      color: var(--accent3);
      text-decoration: none;
    }

    a.inline-link:hover {
      text-decoration: underline;
    }
  </style>
</head>
<body>
  <div class="app-shell">
    <header class="hero">
      <div>
        <div class="hero-title">Options &amp; 0DTE Radar</div>
        <div class="hero-tagline">
          A one-page, dark-mode cheat sheet for remembering what calls, puts,
          strike price, bid/ask, and 0DTE actually mean when you’re staring at
          a real options chain.
        </div>
        <div class="hero-chip-row">
          <span class="chip glow-chip">Learning Mode</span>
          <span class="chip">Calls vs Puts</span>
          <span class="chip">Bid / Ask / Spread</span>
          <span class="chip">0DTE Flow</span>
        </div>
      </div>
    </header>

    <div class="layout-main">
      <!-- MAIN COLUMN -->
      <main>
        <!-- Core concepts -->
        <section id="core" class="card">
          <div class="card-title-row">
            <div class="card-title">Core Idea: What an Option Actually Is</div>
            <div class="card-tag">foundation</div>
          </div>
          <div class="card-body">
            <p>
              An <strong>option</strong> is a contract that gives you the
              <em>right</em>, but not the obligation, to buy or sell
              <strong>100 shares</strong> of a stock or ETF at a specific
              <strong>strike price</strong> on or before a certain date
              (<strong>expiration</strong>).
            </p>
            <div class="pill-row">
              <span class="pill call">Call = right to buy (bullish)</span>
              <span class="pill put">Put = right to sell (bearish)</span>
              <span class="pill mono">1 contract ≙ 100 shares</span>
            </div>
            <p class="label">You pay &quot;premium&quot;</p>
            <p>
              The price of the option is the <strong>premium</strong>. If a
              contract shows <span class="mono">1.25</span>, it actually costs
              <span class="mono">1.25 × 100 = $125</span>.
            </p>

            <div class="grid-two">
              <div class="mini-card">
                <div class="mini-title">Call in one line</div>
                <div>
                  You pay premium now, hoping the stock ends up
                  <strong>above the strike</strong>. Profit potential is
                  (roughly) unlimited, loss is limited to the premium you paid.
                </div>
              </div>
              <div class="mini-card">
                <div class="mini-title">Put in one line</div>
                <div>
                  You pay premium now, betting the stock will go
                  <strong>down</strong>. The lower it goes below the strike, the
                  more the put can be worth (until it hits zero).
                </div>
              </div>
            </div>

            <div class="accent-box">
              <span class="badge">
                <span class="badge-dot"></span>
                <span>Key memory hook</span>
              </span>
              <div style="margin-top:4px;">
                <strong>Calls up, puts down.</strong>
                Calls want price <strong>up and above</strong> the strike.
                Puts want price <strong>down and below</strong> the strike.
              </div>
            </div>
          </div>
        </section>

        <!-- Strike price / ITM / OTM -->
        <section id="strike" class="card" style="margin-top:16px;">
          <div class="card-title-row">
            <div class="card-title">Strike Price &amp; ITM / OTM</div>
            <div class="card-tag">where price has to cross</div>
          </div>
          <div class="card-body">
            <p>
              The <strong>strike price</strong> is the level the underlying
              needs to be above/below for the option to have intrinsic value
              at expiration.
            </p>

            <p class="label">For calls</p>
            <ul class="bullets">
              <li>
                <strong>In The Money (ITM):</strong> stock price
                <strong>above</strong> strike.
              </li>
              <li>
                <strong>At The Money (ATM):</strong> stock price ≈ strike.
              </li>
              <li>
                <strong>Out of The Money (OTM):</strong> stock price
                <strong>below</strong> strike.
              </li>
            </ul>

            <p class="label">For puts</p>
            <ul class="bullets">
              <li>
                <strong>ITM:</strong> stock price
                <strong>below</strong> strike.
              </li>
              <li><strong>ATM:</strong> stock price ≈ strike.</li>
              <li>
                <strong>OTM:</strong> stock price
                <strong>above</strong> strike.
              </li>
            </ul>

            <div class="grid-two" style="margin-top:10px;">
              <div class="mini-card">
                <div class="mini-title">Break-even (simple view)</div>
                <div class="mono">
                  Call: break-even ≈ strike + premium<br />
                  Put: break-even ≈ strike − premium
                </div>
              </div>
              <div class="mini-card">
                <div class="mini-title">Example</div>
                <div class="mono">
                  Stock = 11.22<br />
                  Call strike = 10<br />
                  Intrinsic now = 11.22 − 10 = 1.22
                </div>
              </div>
            </div>
          </div>
        </section>

        <!-- Bid / Ask -->
        <section id="bidask" class="card" style="margin-top:16px;">
          <div class="card-title-row">
            <div class="card-title">Bid, Ask &amp; The Spread</div>
            <div class="card-tag">how you actually get filled</div>
          </div>
          <div class="card-body">
            <p>
              Every option is constantly being quoted with two prices:
            </p>
            <ul class="bullets">
              <li>
                <strong>Bid:</strong> highest price someone will pay
                <em>right now</em>.
              </li>
              <li>
                <strong>Ask:</strong> lowest price someone will sell for
                <em>right now</em>.
              </li>
            </ul>

            <p>
              The difference between them is the
              <strong>spread</strong>. The <em>mid</em> is halfway between.
            </p>

            <div class="grid-two">
              <div class="mini-card">
                <div class="mini-title">Example call quote</div>
                <div class="mono">
                  Bid = 0.62<br />
                  Ask = 2.01<br />
                  Mid ≈ (0.62 + 2.01)/2 ≈ 1.32
                </div>
                <div style="margin-top:4px;">
                  If you buy at the ask and immediately sell at the bid, you
                  donate the spread.
                </div>
              </div>
              <div class="mini-card">
                <div class="mini-title">Your actions</div>
                <ul class="bullets">
                  <li><strong>Buy</strong> → you lift the ask.</li>
                  <li><strong>Sell</strong> → you hit the bid.</li>
                  <li>
                    <strong>Better:</strong> use limit orders near the
                    <em>mid</em>, especially with options.
                  </li>
                </ul>
              </div>
            </div>

            <div class="accent-box">
              <strong>Rule of thumb:</strong> tight spreads are friendly.
              Wide spreads are where small accounts go to die, slowly.
            </div>
          </div>
        </section>

        <!-- 0DTE -->
        <section id="zero" class="card" style="margin-top:16px;">
          <div class="card-title-row">
            <div class="card-title">0DTE: Zero Days to Expiration</div>
            <div class="card-tag">hyper-short term</div>
          </div>
          <div class="card-body">
            <p>
              <strong>0DTE</strong> means the options
              <strong>expire today</strong>. On the chain, it’s simply the
              expiration date that matches <em>today’s date</em>.
            </p>

            <div class="grid-two">
              <div class="mini-card">
                <div class="mini-title">Why it&#8217;s wild</div>
                <ul class="bullets">
                  <li>Time is almost gone → very little time value.</li>
                  <li>
                    Option price becomes ultra-sensitive to small price moves.
                  </li>
                  <li>
                    Tiny move in the stock can cause massive % swings in the
                    option (up or down).
                  </li>
                </ul>
              </div>
              <div class="mini-card">
                <div class="mini-title">What traders try to do</div>
                <ul class="bullets">
                  <li>Scalp intraday moves with calls/puts.</li>
                  <li>
                    Aim for quick +20–50% on the option while cutting losers
                    fast.
                  </li>
                  <li class="warning">
                    One stubborn trade can nuke the account.
                  </li>
                </ul>
              </div>
            </div>

            <div class="label">Key memory</div>
            <p>
              0DTE = you’re not buying “time,” you’re buying
              <strong>leverage</strong> on today’s price move, with the clock
              trying to kill the contract by the closing bell.
            </p>
          </div>
        </section>

        <!-- Flow of a trade + calculator -->
        <section id="flow" class="card" style="margin-top:16px;">
          <div class="card-title-row">
            <div class="card-title">Flow of a Single Options Trade</div>
            <div class="card-tag">from idea to exit</div>
          </div>
          <div class="card-body">
            <ol class="bullets">
              <li>
                Pick a ticker (SPY, QQQ, TSLA, NVDA, etc.) and your
                <strong>direction</strong> (up → call, down → put).
              </li>
              <li>
                Choose <strong>DTE</strong> (days to expiration) and
                <strong>strike</strong> (how aggressive vs conservative you want
                to be).
              </li>
              <li>
                Check <strong>bid/ask</strong> and volume. Avoid huge, ugly
                spreads when learning.
              </li>
              <li>
                Decide <strong>position size</strong> (how many contracts, how
                much you&#8217;re willing to lose).
              </li>
              <li>
                Set your <strong>plan</strong>:
                <span class="mono">take profit at +X%</span>,
                <span class="mono">cut loss at −Y%</span>.
              </li>
              <li>
                Enter with a <strong>limit order</strong> near the mid, not a
                random market slap.
              </li>
              <li>Stick to the plan. No “it’ll come back” heroics.</li>
            </ol>

            <div class="label">Mini break-even calculator</div>
            <div class="calc-grid">
              <div>
                <label for="optType">Option type</label>
                <select id="optType">
                  <option value="call">Call (bullish)</option>
                  <option value="put">Put (bearish)</option>
                </select>
              </div>
              <div>
                <label for="strikeInput">Strike price</label>
                <input id="strikeInput" type="number" step="0.01" value="10" />
              </div>
              <div>
                <label for="premInput">Premium (option price)</label>
                <input id="premInput" type="number" step="0.01" value="1.25" />
              </div>
              <div>
                <button id="calcBtn"
                        style="
                          width:100%;
                          border-radius:999px;
                          padding:7px 8px;
                          border:none;
                          background:linear-gradient(120deg,var(--accent3),var(--accent2));
                          color:#fff;
                          font-size:0.8rem;
                          text-transform:uppercase;
                          letter-spacing:0.14em;
                          cursor:pointer;
                        ">
                  Compute Break-Even
                </button>
              </div>
            </div>
            <div id="calcOut" class="calc-output">
              Break-even will appear here.
            </div>

            <div class="accent-box" style="margin-top:10px;">
              <span class="warning">Important:</span>
              break-even is a simple expiration concept. In real life, options
              can be profitable before hitting break-even because of time value
              and volatility — but this gives you a clean anchor.
            </div>
          </div>
        </section>

        <!-- Risk -->
        <section id="risk" class="card" style="margin-top:16px;">
          <div class="card-title-row">
            <div class="card-title">Risk, Reality &amp; Account Size</div>
            <div class="card-tag">tuition, not magic</div>
          </div>
          <div class="card-body">
            <p>
              You can technically open an account with very little money, but
              the smaller it is, the more each mistake hurts.
            </p>
            <ul class="bullets">
              <li>
                <strong>Mechanical minimum:</strong> enough to buy 1 contract
                (e.g., a $0.40 option → $40).
              </li>
              <li>
                <strong>Learning account:</strong> something like
                <span class="mono">$300–$500</span> you are willing to treat as
                <em>tuition</em>.
              </li>
              <li>
                <strong>Risk per trade:</strong> many traders keep it to
                <span class="mono">1–5%</span> of account, not all-in.
              </li>
              <li>
                <strong>0DTE:</strong>
                extremely volatile; best approached after you understand how
                regular options behave.
              </li>
            </ul>

            <div class="accordion">
              <div class="accordion-item">
                <div class="accordion-header">
                  <span>Why 95% win-rate screenshots are suspicious</span>
                  <span class="chevron">▶</span>
                </div>
                <div class="accordion-content">
                  <p>
                    Most “I win 95% of the time on 0DTE!” posts are in a small
                    window where the trader hasn’t yet hit the huge loss. With
                    leveraged options, one undisciplined trade can wipe out a
                    long streak of tiny wins. Screenshots rarely show the blown
                    accounts.
                  </p>
                </div>
              </div>
              <div class="accordion-item">
                <div class="accordion-header">
                  <span>Safer learning progression</span>
                  <span class="chevron">▶</span>
                </div>
                <div class="accordion-content">
                  <ol class="bullets">
                    <li>Paper trade to learn the mechanics.</li>
                    <li>
                      Start real money with small, liquid, non-0DTE calls/puts.
                    </li>
                    <li>
                      Use tight risk and log every trade and reason for entry /
                      exit.
                    </li>
                    <li>
                      Only experiment with 0DTE later, with size you can truly
                      afford to lose.
                    </li>
                  </ol>
                </div>
              </div>
            </div>
          </div>
        </section>
      </main>

      <!-- SIDEBAR -->
      <aside>
        <div class="card sidebar-card">
          <div class="card-title-row">
            <div class="card-title">Quick Jump</div>
            <div class="card-tag">sections</div>
          </div>
          <ul class="nav-list">
            <li><a href="#core">Core Idea: What is an option?</a></li>
            <li><a href="#strike">Strike &amp; ITM / OTM</a></li>
            <li><a href="#bidask">Bid / Ask / Spread</a></li>
            <li><a href="#zero">0DTE Explained</a></li>
            <li><a href="#flow">Trade Flow &amp; Break-even</a></li>
            <li><a href="#risk">Risk &amp; Reality Check</a></li>
          </ul>
        </div>

        <div class="card sidebar-card">
          <div class="card-title-row">
            <div class="card-title">Mental Flash Cards</div>
            <div class="card-tag">memory hooks</div>
          </div>
          <div class="card-body">
            <ul class="bullets">
              <li><strong>Call:</strong> right to buy, wants price up.</li>
              <li><strong>Put:</strong> right to sell, wants price down.</li>
              <li>
                <strong>Strike:</strong> the level where ITM/OTM flips. Calls
                want above, puts want below (at expiration).
              </li>
              <li>
                <strong>Bid/Ask:</strong> YOU hit bid when selling, YOU lift ask
                when buying.
              </li>
              <li>
                <strong>0DTE:</strong> expires today; pure leverage on today’s
                move.
              </li>
            </ul>
          </div>
        </div>
      </aside>
    </div>

    <footer>
      Built as a personal options &amp; 0DTE memory palace. Save this file,
      tweak it, and keep adding your own notes as you learn.
    </footer>
  </div>

  <script>
    // Break-even calculator
    function calcBreakeven() {
      const type = document.getElementById("optType").value;
      const strike = parseFloat(document.getElementById("strikeInput").value);
      const prem = parseFloat(document.getElementById("premInput").value);
      const out = document.getElementById("calcOut");

      if (isNaN(strike) || isNaN(prem)) {
        out.textContent = "Enter valid numbers for strike and premium.";
        return;
      }

      let be;
      if (type === "call") {
        be = strike + prem;
        out.textContent =
          "Call break-even ≈ strike + premium = " +
          strike.toFixed(2) +
          " + " +
          prem.toFixed(2) +
          " = " +
          be.toFixed(2);
      } else {
        be = strike - prem;
        out.textContent =
          "Put break-even ≈ strike − premium = " +
          strike.toFixed(2) +
          " − " +
          prem.toFixed(2) +
          " = " +
          be.toFixed(2);
      }
    }

    document.getElementById("calcBtn").addEventListener("click", calcBreakeven);

    // Simple accordion behavior
    document.querySelectorAll(".accordion-item").forEach(function (item) {
      const header = item.querySelector(".accordion-header");
      const content = item.querySelector(".accordion-content");

      header.addEventListener("click", function () {
        const isOpen = item.classList.contains("active");
        document
          .querySelectorAll(".accordion-item")
          .forEach(function (other) {
            other.classList.remove("active");
            const c = other.querySelector(".accordion-content");
            if (c) {
              c.style.maxHeight = 0;
              c.classList.remove("open");
            }
          });

        if (!isOpen) {
          item.classList.add("active");
          content.classList.add("open");
          content.style.maxHeight = content.scrollHeight + "px";
        }
      });
    });
  </script>
</body>
</html>