> ## Documentation Index
> Fetch the complete documentation index at: https://learn.actionist.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Schedules

> Put your agents on the clock. One-time and recurring agent tasks, full calendar UI, timezone handling, wake windows, and a complete run history — no cron syntax required.

<div className="mxp-hero xc-border">
  <div className="exp-eyebrow mxp-rise">ALWAYS ON TIME</div>

  <h2 className="mxp-hero-title mxp-rise" style={{animationDelay:'0.06s'}}>
    Your agents show up — <span style={{background:'linear-gradient(90deg,#24A4FF,#9000FF,#E3008E)',WebkitBackgroundClip:'text',backgroundClip:'text',color:'transparent'}}>whether you're there or not.</span>
  </h2>

  <p className="mxp-hero-dek mxp-rise" style={{animationDelay:'0.13s'}}>
    Describe the task once. Drop it on the calendar. The agent fires every morning, every week, or at the exact moment you need it — silently, in the background, with a full transcript waiting when you check in.
  </p>
</div>

<div className="w-full py-10">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">The idea</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">A calendar built for AI employees.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      Every schedule targets a single agent task. Write the instruction once — the agent handles it on time, every time.
    </p>
  </div>

  <Columns cols={2}>
    <Card title="One-time" icon="calendar">
      Fire an agent task at a specific date and time, once. Use it for things that happen once — a briefing before a product launch, a one-off data export, a post-event summary.
    </Card>

    <Card title="Recurring" icon="repeat">
      Fire on a repeating cadence: every morning, every Monday, the first of each month. Six frequency options, interval multiplier from 1 to 100, and three stop rules.
    </Card>
  </Columns>

  <Info>
    The Calendar page is available on the desktop app only. Every schedule targets an <strong>Agent task</strong> — the type is always "Have an agent perform a task".
  </Info>
</div>

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">Recurrence</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Pick a pattern, see it on the month.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      Toggle <strong>Repeat</strong> on in the ScheduleSheet to expand the recurrence block. Every combination is expressed in plain language — no cron syntax, no documentation to look up. Select a pattern to preview it:
    </p>
  </div>

  <div className="xsc-recur exp-tool-shell xc-try">
    <div className="mxp-srch-chips" style={{marginBottom:'18px'}}>
      <label htmlFor="xsc-r-once"><input className="mxp-r" type="radio" name="xsc-rec" id="xsc-r-once" defaultChecked />Once — 10th</label>
      <label htmlFor="xsc-r-daily"><input className="mxp-r" type="radio" name="xsc-rec" id="xsc-r-daily" />Daily</label>
      <label htmlFor="xsc-r-mwf"><input className="mxp-r" type="radio" name="xsc-rec" id="xsc-r-mwf" />Weekly Mon-Wed-Fri</label>
      <label htmlFor="xsc-r-monthly"><input className="mxp-r" type="radio" name="xsc-rec" id="xsc-r-monthly" />Monthly (8th, 15th, 22nd)</label>
    </div>

    <div className="xsc-month-head">
      <div className="xsc-day-label">Mo</div>
      <div className="xsc-day-label">Tu</div>
      <div className="xsc-day-label">We</div>
      <div className="xsc-day-label">Th</div>
      <div className="xsc-day-label">Fr</div>
      <div className="xsc-day-label">Sa</div>
      <div className="xsc-day-label">Su</div>
    </div>

    <div className="xsc-month">
      {/* Row 1: days 1–7 */}

      <div className="xsc-dot" data-active="1" data-mwf="1">1</div>
      <div className="xsc-dot" data-active="1">2</div>
      <div className="xsc-dot" data-active="1" data-mwf="1">3</div>
      <div className="xsc-dot" data-active="1">4</div>
      <div className="xsc-dot" data-active="1" data-mwf="1">5</div>
      <div className="xsc-dot" data-active="1">6</div>
      <div className="xsc-dot" data-active="1">7</div>

      {/* Row 2: days 8–14 */}

      <div className="xsc-dot" data-active="1" data-mwf="1" data-monthly="1">8</div>
      <div className="xsc-dot" data-active="1">9</div>
      <div className="xsc-dot" data-active="1" data-once="1" data-mwf="1">10</div>
      <div className="xsc-dot" data-active="1">11</div>
      <div className="xsc-dot" data-active="1" data-mwf="1">12</div>
      <div className="xsc-dot" data-active="1">13</div>
      <div className="xsc-dot" data-active="1">14</div>

      {/* Row 3: days 15–21 */}

      <div className="xsc-dot" data-active="1" data-mwf="1" data-monthly="1">15</div>
      <div className="xsc-dot" data-active="1">16</div>
      <div className="xsc-dot" data-active="1" data-mwf="1">17</div>
      <div className="xsc-dot" data-active="1">18</div>
      <div className="xsc-dot" data-active="1" data-mwf="1">19</div>
      <div className="xsc-dot" data-active="1">20</div>
      <div className="xsc-dot" data-active="1">21</div>

      {/* Row 4: days 22–28 */}

      <div className="xsc-dot" data-active="1" data-mwf="1" data-monthly="1">22</div>
      <div className="xsc-dot" data-active="1">23</div>
      <div className="xsc-dot" data-active="1" data-mwf="1">24</div>
      <div className="xsc-dot" data-active="1">25</div>
      <div className="xsc-dot" data-active="1" data-mwf="1">26</div>
      <div className="xsc-dot" data-active="1">27</div>
      <div className="xsc-dot" data-active="1">28</div>
    </div>

    <div className="xsc-pattern-summary xsc-ps-once">
      <strong>Once — June 10</strong> at 09:00 your timezone. Fires exactly once, then the schedule is complete. Good for a pre-launch briefing or a one-off data export.
    </div>

    <div className="xsc-pattern-summary xsc-ps-daily">
      <strong>Every day</strong> at 09:00 — interval: 1. Continues until you set a stop rule (On date or After N occurrences) or delete the schedule.
    </div>

    <div className="xsc-pattern-summary xsc-ps-mwf">
      <strong>Every Monday, Wednesday, Friday</strong> at 09:00. Use the day-chip picker (Mo, Tu, We…) to select any combination. The interval multiplier can make it every 2nd week, every 3rd, and so on.
    </div>

    <div className="xsc-pattern-summary xsc-ps-monthly">
      <strong>Monthly — day 8, then 15th, then 22nd</strong> illustrates three separate monthly schedules at different dates. Each "Monthly" schedule targets one specific day of the month (e.g. the 15th). Interval: every N months.
    </div>
  </div>

  <AccordionGroup>
    <Accordion title="Frequencies" icon="calendar-days" defaultOpen={true}>
      Six frequency options are available:

      | Frequency    | What it means                                                                                  |
      | ------------ | ---------------------------------------------------------------------------------------------- |
      | **Minutely** | Every N minutes                                                                                |
      | **Hourly**   | Every N hours                                                                                  |
      | **Daily**    | Every N days                                                                                   |
      | **Weekly**   | On selected days of the week — use the day-chip picker (Mo, Tu, We, etc.) to choose which days |
      | **Monthly**  | On a specific day of the month (e.g. the 15th)                                                 |
      | **Yearly**   | On a specific date each year                                                                   |

      The interval multiplier lets you say "every 3 days" or "every 2 weeks" — set any integer from 1 to 100.
    </Accordion>

    <Accordion title="Stop rules" icon="circle-stop">
      Three options control when a recurring series ends:

      * **Never** — continues indefinitely until you edit or delete the schedule.
      * **On date** — stops after a specific calendar date.
      * **After N occurrences** — stops automatically after a set number of firings.

      You choose the stop rule when creating the schedule and can change it at any time via "All occurrences" in the edit scope modal.
    </Accordion>

    <Accordion title="Live preview" icon="eye">
      While you configure recurrence, the **PreviewPanel** on the right side of the ScheduleSheet shows the next occurrences in real time — date, day of week, and time for each upcoming run. Use it to sanity-check your cadence before saving.

      The recurrence summary also appears as a human-readable sentence ("Every Monday and Wednesday at 09:00, starting June 15") so you can verify the pattern at a glance.
    </Accordion>

    <Accordion title="Editing a recurring series" icon="pencil">
      Click any event on the calendar to open the ScheduleSheet in edit mode. After you make changes and click **Save changes**, a scope modal appears with three options:

      * **This occurrence** — change only the single instance you clicked.
      * **This and following** — change from this occurrence forward, leaving past ones intact.
      * **All occurrences** — change the entire series, including future occurrences.

      A toast confirms "Schedule updated" after saving.
    </Accordion>
  </AccordionGroup>
</div>

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">Wake window</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Business hours, enforced automatically.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      The wake window defines a daily time range during which the agent is allowed to fire. Schedules that fall outside the window are skipped — the engine records each skip as a <strong>Missed</strong> run in execution history with a note explaining the reason, then advances to the next occurrence. Skipped firings are not retried.
    </p>
  </div>

  <div className="exp-tool-shell" style={{padding:'24px 28px'}}>
    <div style={{fontSize:12,letterSpacing:'0.08em',textTransform:'uppercase',opacity:0.5,marginBottom:8,fontWeight:600}}>24-hour day — agent's configured timezone</div>

    <div className="xsc-ww-bar">
      <div className="xsc-ww-fill" />

      <div className="xsc-ww-line start" />

      <div className="xsc-ww-line end" />

      <div className="xsc-ww-line-label start">09:00</div>
      <div className="xsc-ww-line-label end">17:00</div>

      <div className="xsc-ww-skip" />

      <div className="xsc-ww-skip-label">Missed · 19:30</div>
    </div>

    <div className="xsc-ww-tick-row">
      <span className="xsc-ww-tick">00:00</span>
      <span className="xsc-ww-tick">06:00</span>
      <span className="xsc-ww-tick">12:00</span>
      <span className="xsc-ww-tick">18:00</span>
      <span className="xsc-ww-tick">24:00</span>
    </div>

    <div className="exp-surface-grid" style={{marginTop:'20px'}}>
      <div className="exp-surface-tile">
        <strong>Inside the window.</strong> Any scheduled execution between 09:00 and 17:00 fires normally and appears in run history as Completed (or Failed if the task errors).
      </div>

      <div className="exp-surface-tile">
        <strong>Outside the window.</strong> The amber dot at 19:30 shows a skipped firing. Recorded as Missed with reason noted. The schedule advances to its next occurrence — no retry.
      </div>

      <div className="exp-surface-tile">
        <strong>Default window.</strong> 09:00–17:00 in the agent's configured timezone. Set a custom range in the agent's <strong>Scheduled runs</strong> tab under Schedule Preferences.
      </div>
    </div>
  </div>

  <Tip>
    Use wake windows instead of toggling individual schedules on and off manually. A single wake-window setting prevents every schedule for this agent from firing outside business hours — with a full audit trail of every skip.
  </Tip>
</div>

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">Overnight runs</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">While you slept.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      Agents on a schedule don't wait for you to show up. By the time you open the app, the morning digest is already posted, the pipeline report is in your feed, and anything unusual has been flagged — all logged with full transcripts.
    </p>
  </div>

  <div className="mxp-window" style={{marginBottom:'28px'}}>
    <div className="mxp-window-bar">
      <span className="mxp-window-dot" />

      <span className="mxp-window-dot" />

      <span className="mxp-window-dot" />

      <span className="mxp-window-title">execution-history · overnight · Jun 12</span>
    </div>

    <div style={{padding:'12px 16px',display:'flex',flexDirection:'column',gap:'7px'}}>
      <div className="xsc-mock-history-row">
        <span className="xsc-status-badge completed">Completed</span>
        <span className="xsc-mock-hist-title">Morning inbox digest — Maya</span>
        <span className="xsc-mock-hist-meta">1 m 52 s · 07:00</span>
        <span className="xsc-mock-hist-link">Session</span>
      </div>

      <div className="xsc-mock-history-row">
        <span className="xsc-status-badge completed">Completed</span>
        <span className="xsc-mock-hist-title">Weekly pipeline report — Dario</span>
        <span className="xsc-mock-hist-meta">3 m 14 s · 08:30</span>
        <span className="xsc-mock-hist-link">Session</span>
      </div>

      <div className="xsc-mock-history-row">
        <span className="xsc-status-badge completed">Completed</span>
        <span className="xsc-mock-hist-title">Spend anomaly check — Felix</span>
        <span className="xsc-mock-hist-meta">2 m 07 s · 08:30</span>
        <span className="xsc-mock-hist-link">Session</span>
      </div>

      <div className="xsc-mock-history-row">
        <span className="xsc-status-badge missed">Missed</span>
        <span className="xsc-mock-hist-title">Support queue digest — outside wake window</span>
        <span className="xsc-mock-hist-meta">— · 06:00</span>
        <span className="xsc-mock-hist-link">Session</span>
      </div>
    </div>
  </div>

  <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl" style={{marginTop:'20px',marginBottom:'16px'}}>
    Click any Session link to open the full transcript. The run below shows what the conversation looks like when you check in after the fact.
  </p>

  <div className="xc-phone">
    <div className="xc-phone-head">
      <div className="xc-phone-ava" style={{background:'linear-gradient(135deg,#486EFF,#9000FF)'}}>S</div>

      <div>
        <strong>Sam</strong>
        <span className="handle">@sam\_actionist\_bot</span>
      </div>

      <span className="xc-phone-online">ONLINE</span>
    </div>

    <div className="xc-phone-body">
      <div className="xc-phone-badge">SEEN · READING CONTEXT</div>

      <div className="xc-bub them">
        Good morning. Here is your inbox summary for the last 12 hours: 23 emails processed, 4 flagged as needing a reply today, 1 marked urgent (Northwind contract renewal — deadline Friday). The remaining 18 are filed or archived.
        <span className="t">07:00</span>
      </div>

      <div className="xc-bub them">
        Pipeline report is ready. 11 open deals, 3 moved to proposal stage overnight. One deal at Northwind stalled — no activity in 9 days. Dario's report is in your home feed.
        <span className="t">08:31</span>
      </div>

      <div className="xc-phone-badge">TOOL · FLAG\_ANOMALY</div>

      <div className="xc-bub them">
        Spend anomaly flagged: software line item 2.4x above the 30-day rolling average. Felix reviewed the transactions — two duplicate charges from the same vendor. Details in the spend report.
        <span className="t">08:33</span>
      </div>

      <div className="xc-bub me">
        Got it. Anything I need to act on before standup?
        <span className="t">09:02</span>
      </div>

      <div className="xc-bub them">
        Two things: reply to the Northwind contract thread before end of day, and approve the duplicate-charge reversal Felix queued. Both are in your home feed with one-tap approve cards.
        <span className="t">09:02</span>
      </div>
    </div>
  </div>

  <p className="text-sm text-gray-500 dark:text-gray-500 mt-4 max-w-xl" style={{fontFamily:'"JetBrains Mono",monospace',fontSize:'11.5px',lineHeight:'1.6',opacity:0.6}}>
    Illustrative scenario. Each run above maps to a recurring schedule on the Calendar page with delivery set to Home feed or Telegram. The "spend anomaly" is the kind of narrow, scoped task the 10-minute execution limit is well suited for.
  </p>
</div>

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-4">
    <span className="actionist-section-eyebrow">Time saved</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">A week on schedule.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      Recurring jobs are small individually. Across a full week they add up. The receipt below reflects the schedules on this page running as described.
    </p>
  </div>

  <div className="xc-receipt">
    <div className="xc-receipt-head">Weekly schedule summary</div>
    <div className="xc-receipt-sub">Mon — Fri · 5 recurring agents · typical week</div>

    <div className="xc-receipt-row">
      <span>Morning inbox digest (daily · 07:00)</span>
      <span>\~25 min / wk</span>
    </div>

    <div className="xc-receipt-row">
      <span>Pipeline report — Dario (Mon · 08:30)</span>
      <span>\~20 min / wk</span>
    </div>

    <div className="xc-receipt-row">
      <span>Spend anomaly check — Felix (daily · 08:30)</span>
      <span>\~30 min / wk</span>
    </div>

    <div className="xc-receipt-row">
      <span>Support queue digest — Priya (Mon + Thu · 09:00)</span>
      <span>\~40 min / wk</span>
    </div>

    <div className="xc-receipt-row">
      <span>Competitor brief — Maya (Fri · 10:00)</span>
      <span>\~35 min / wk</span>
    </div>

    <div className="xc-receipt-total">
      <span>Typical weekly time back</span>
      <span>\~2.5 hrs / wk</span>
    </div>

    <div className="xc-receipt-foot">ILLUSTRATIVE — BASED ON THE SCHEDULES DESCRIBED ON THIS PAGE</div>
  </div>
</div>

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">Orientation</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">The Calendar page.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      Open the Calendar from the left navigation bar. The page has three zones that work together. Below is a live week — <strong>hover any event</strong> (tap on mobile) for its full schedule card, or hover an agent in the legend to isolate their workload.
    </p>
  </div>

  {/* TODO(image): calendar-overview — IMAGE SPEC: Full Calendar page screenshot (dark theme): CalendarRail sidebar on the left with the 'Next up' insight row and event list divided into Today / This week sections; week view in the center with two colored time-block tiles of different heights reflecting different durations; CalendarControlBar at the top with the month/week/day toggle and '+ New schedule' button visible. — replace this CSS mock with the real screenshot */}

  <div className="xsc-cal-zone">
    <div className="mxp-window xsc-cal-host xc-try">
      <div className="mxp-window-bar">
        <span className="mxp-window-dot" />

        <span className="mxp-window-dot" />

        <span className="mxp-window-dot" />

        <span className="mxp-window-title">Calendar · Week view</span>

        <span style={{marginLeft:'auto',display:'flex',alignItems:'center',gap:'6px'}}>
          <span className="xsc-mock-chip">Month</span>
          <span className="xsc-mock-chip active">Week</span>
          <span className="xsc-mock-chip">Day</span>
          <span className="xsc-mock-new-btn">+ New schedule</span>
        </span>
      </div>

      <div className="xsc-cal-wrap">
        <div className="xsc-cal">
          <div className="xsc-cal-head">
            <div />

            <div>Mon</div><div>Tue</div><div className="today">Wed</div><div>Thu</div><div>Fri</div>
          </div>

          <div className="xsc-cal-body">
            <div className="xsc-cal-biz" />

            <div className="xsc-cal-gutter">
              <span style={{top:'3px'}}>8a</span><span style={{top:'49px'}}>9a</span><span style={{top:'95px'}}>10a</span><span style={{top:'141px'}}>11a</span><span style={{top:'187px'}}>12p</span><span style={{top:'233px'}}>1p</span><span style={{top:'279px'}}>2p</span><span style={{top:'325px'}}>3p</span><span style={{top:'371px'}}>4p</span><span style={{top:'417px'}}>5p</span>
            </div>

            <div className="xsc-cal-day">
              <div className="xsc-ev a-dario pop-dn" tabIndex={0} style={{'--ev':'#24A4FF', top:'23px', height:'35px'}}>
                <strong>Pipeline report</strong><span className="tm">08:30</span>

                <div className="xsc-pop">
                  <div className="xsc-pop-head"><i>D</i><div><strong>Dario</strong><span className="role">Sales</span></div><span className="st">Active</span></div>
                  <div className="xsc-pop-title">Monday pipeline report</div>
                  <div className="xsc-pop-row"><span>Runs</span><b>Weekly · Mon · 08:30</b></div>
                  <div className="xsc-pop-row"><span>Duration</span><b>\~45 min</b></div>
                  <div className="xsc-pop-row"><span>Next run</span><b>Mon · 08:30</b></div>
                  <div className="xsc-pop-row"><span>Delivery</span><b>#sales</b></div>
                  <div className="xsc-pop-save">saves \~50 min/wk</div>
                </div>
              </div>

              <div className="xsc-ev a-maya pop-dn" tabIndex={0} style={{'--ev':'#9b45ff', top:'46px', height:'23px'}}>
                <strong>Daily analytics</strong>

                <div className="xsc-pop">
                  <div className="xsc-pop-head"><i>M</i><div><strong>Maya</strong><span className="role">Marketing Manager</span></div><span className="st">Active</span></div>
                  <div className="xsc-pop-title">Daily analytics check</div>
                  <div className="xsc-pop-row"><span>Runs</span><b>Weekdays · 09:00</b></div>
                  <div className="xsc-pop-row"><span>Duration</span><b>\~30 min</b></div>
                  <div className="xsc-pop-row"><span>Next run</span><b>Tomorrow · 09:00</b></div>
                  <div className="xsc-pop-row"><span>Delivery</span><b>#marketing-daily</b></div>
                  <div className="xsc-pop-save">saves \~2.5 hrs/wk</div>
                </div>
              </div>
            </div>

            <div className="xsc-cal-day">
              <div className="xsc-ev a-maya pop-dn" tabIndex={0} style={{'--ev':'#9b45ff', top:'46px', height:'23px'}}>
                <strong>Daily analytics</strong>

                <div className="xsc-pop">
                  <div className="xsc-pop-head"><i>M</i><div><strong>Maya</strong><span className="role">Marketing Manager</span></div><span className="st">Active</span></div>
                  <div className="xsc-pop-title">Daily analytics check</div>
                  <div className="xsc-pop-row"><span>Runs</span><b>Weekdays · 09:00</b></div>
                  <div className="xsc-pop-row"><span>Duration</span><b>\~30 min</b></div>
                  <div className="xsc-pop-row"><span>Next run</span><b>Tomorrow · 09:00</b></div>
                  <div className="xsc-pop-row"><span>Delivery</span><b>#marketing-daily</b></div>
                  <div className="xsc-pop-save">saves \~2.5 hrs/wk</div>
                </div>
              </div>

              <div className="xsc-ev a-felix pop-dn" tabIndex={0} style={{'--ev':'#FD840C', top:'115px', height:'31px'}}>
                <strong>Invoice chase</strong><span className="tm">10:30</span>

                <div className="xsc-pop">
                  <div className="xsc-pop-head"><i>F</i><div><strong>Felix</strong><span className="role">Finance & Ops</span></div><span className="st">Active</span></div>
                  <div className="xsc-pop-title">Overdue invoice chase</div>
                  <div className="xsc-pop-row"><span>Runs</span><b>Weekly · Tue · 10:30</b></div>
                  <div className="xsc-pop-row"><span>Duration</span><b>\~40 min</b></div>
                  <div className="xsc-pop-row"><span>Next run</span><b>Tue · 10:30</b></div>
                  <div className="xsc-pop-row"><span>Delivery</span><b>Home feed</b></div>
                  <div className="xsc-pop-save">saves \~45 min/wk</div>
                </div>
              </div>

              <div className="xsc-ev a-dario" tabIndex={0} style={{'--ev':'#24A4FF', top:'276px', height:'23px'}}>
                <strong>Follow-up sweep</strong><span className="tm">14:00</span>

                <div className="xsc-pop">
                  <div className="xsc-pop-head"><i>D</i><div><strong>Dario</strong><span className="role">Sales</span></div><span className="st">Active</span></div>
                  <div className="xsc-pop-title">Stale-lead follow-up sweep</div>
                  <div className="xsc-pop-row"><span>Runs</span><b>Tue & Thu · 14:00</b></div>
                  <div className="xsc-pop-row"><span>Duration</span><b>\~30 min</b></div>
                  <div className="xsc-pop-row"><span>Next run</span><b>Thu · 14:00</b></div>
                  <div className="xsc-pop-row"><span>Delivery</span><b>Dario's conversation</b></div>
                  <div className="xsc-pop-save">saves \~1 hr/wk</div>
                </div>
              </div>
            </div>

            <div className="xsc-cal-day today">
              <div className="xsc-cal-now" style={{top:'161px'}}>
                <i />

                <b />
              </div>

              <div className="xsc-ev a-maya pop-dn" tabIndex={0} style={{'--ev':'#9b45ff', top:'46px', height:'23px'}}>
                <strong>Daily analytics</strong>

                <div className="xsc-pop">
                  <div className="xsc-pop-head"><i>M</i><div><strong>Maya</strong><span className="role">Marketing Manager</span></div><span className="st">Active</span></div>
                  <div className="xsc-pop-title">Daily analytics check</div>
                  <div className="xsc-pop-row"><span>Runs</span><b>Weekdays · 09:00</b></div>
                  <div className="xsc-pop-row"><span>Status</span><b>Completed · 09:27</b></div>
                  <div className="xsc-pop-row"><span>Delivery</span><b>#marketing-daily</b></div>
                  <div className="xsc-pop-save">saves \~2.5 hrs/wk</div>
                </div>
              </div>

              <div className="xsc-ev a-priya" tabIndex={0} style={{'--ev':'#4ED8A7', top:'230px', height:'19px'}}>
                <strong>Queue health</strong>

                <div className="xsc-pop">
                  <div className="xsc-pop-head"><i>P</i><div><strong>Priya</strong><span className="role">Support lead</span></div><span className="st">Active</span></div>
                  <div className="xsc-pop-title">Support queue health check</div>
                  <div className="xsc-pop-row"><span>Runs</span><b>Mon · Wed · Fri · 13:00</b></div>
                  <div className="xsc-pop-row"><span>Duration</span><b>\~25 min</b></div>
                  <div className="xsc-pop-row"><span>Next run</span><b>Today · 13:00</b></div>
                  <div className="xsc-pop-row"><span>Delivery</span><b>#support</b></div>
                  <div className="xsc-pop-save">saves \~1.2 hrs/wk</div>
                </div>
              </div>
            </div>

            <div className="xsc-cal-day">
              <div className="xsc-ev a-maya pop-dn" tabIndex={0} style={{'--ev':'#9b45ff', top:'46px', height:'23px'}}>
                <strong>Daily analytics</strong>

                <div className="xsc-pop">
                  <div className="xsc-pop-head"><i>M</i><div><strong>Maya</strong><span className="role">Marketing Manager</span></div><span className="st">Active</span></div>
                  <div className="xsc-pop-title">Daily analytics check</div>
                  <div className="xsc-pop-row"><span>Runs</span><b>Weekdays · 09:00</b></div>
                  <div className="xsc-pop-row"><span>Duration</span><b>\~30 min</b></div>
                  <div className="xsc-pop-row"><span>Next run</span><b>Thu · 09:00</b></div>
                  <div className="xsc-pop-row"><span>Delivery</span><b>#marketing-daily</b></div>
                  <div className="xsc-pop-save">saves \~2.5 hrs/wk</div>
                </div>
              </div>

              <div className="xsc-ev a-maya pop-dn" tabIndex={0} style={{'--ev':'#9b45ff', top:'138px', height:'35px'}}>
                <strong>Competitor scan</strong><span className="tm">11:00</span>

                <div className="xsc-pop">
                  <div className="xsc-pop-head"><i>M</i><div><strong>Maya</strong><span className="role">Marketing Manager</span></div><span className="st">Active</span></div>
                  <div className="xsc-pop-title">Weekly competitor scan</div>
                  <div className="xsc-pop-row"><span>Runs</span><b>Weekly · Thu · 11:00</b></div>
                  <div className="xsc-pop-row"><span>Duration</span><b>\~45 min</b></div>
                  <div className="xsc-pop-row"><span>Next run</span><b>Thu · 11:00</b></div>
                  <div className="xsc-pop-row"><span>Delivery</span><b>Home feed</b></div>
                  <div className="xsc-pop-save">saves \~1 hr/wk</div>
                </div>
              </div>

              <div className="xsc-ev a-dario pop-r" tabIndex={0} style={{'--ev':'#24A4FF', top:'276px', height:'23px'}}>
                <strong>Follow-up sweep</strong><span className="tm">14:00</span>

                <div className="xsc-pop">
                  <div className="xsc-pop-head"><i>D</i><div><strong>Dario</strong><span className="role">Sales</span></div><span className="st">Active</span></div>
                  <div className="xsc-pop-title">Stale-lead follow-up sweep</div>
                  <div className="xsc-pop-row"><span>Runs</span><b>Tue & Thu · 14:00</b></div>
                  <div className="xsc-pop-row"><span>Duration</span><b>\~30 min</b></div>
                  <div className="xsc-pop-row"><span>Next run</span><b>Thu · 14:00</b></div>
                  <div className="xsc-pop-row"><span>Delivery</span><b>Dario's conversation</b></div>
                  <div className="xsc-pop-save">saves \~1 hr/wk</div>
                </div>
              </div>

              <div className="xsc-ev a-felix pop-r" tabIndex={0} style={{'--ev':'#FD840C', top:'391px', height:'46px'}}>
                <strong>Cash-flow report</strong><span className="tm">16:30</span>

                <div className="xsc-pop">
                  <div className="xsc-pop-head"><i>F</i><div><strong>Felix</strong><span className="role">Finance & Ops</span></div><span className="st">Active</span></div>
                  <div className="xsc-pop-title">Weekly cash-flow report</div>
                  <div className="xsc-pop-row"><span>Runs</span><b>Weekly · Thu · 16:30</b></div>
                  <div className="xsc-pop-row"><span>Duration</span><b>\~60 min</b></div>
                  <div className="xsc-pop-row"><span>Next run</span><b>Thu · 16:30</b></div>
                  <div className="xsc-pop-row"><span>Delivery</span><b>Home feed</b></div>
                  <div className="xsc-pop-save">saves \~1.5 hrs/wk</div>
                </div>
              </div>
            </div>

            <div className="xsc-cal-day">
              <div className="xsc-ev a-maya pop-dn" tabIndex={0} style={{'--ev':'#9b45ff', top:'46px', height:'23px'}}>
                <strong>Daily analytics</strong>

                <div className="xsc-pop">
                  <div className="xsc-pop-head"><i>M</i><div><strong>Maya</strong><span className="role">Marketing Manager</span></div><span className="st">Active</span></div>
                  <div className="xsc-pop-title">Daily analytics check</div>
                  <div className="xsc-pop-row"><span>Runs</span><b>Weekdays · 09:00</b></div>
                  <div className="xsc-pop-row"><span>Duration</span><b>\~30 min</b></div>
                  <div className="xsc-pop-row"><span>Next run</span><b>Fri · 09:00</b></div>
                  <div className="xsc-pop-row"><span>Delivery</span><b>#marketing-daily</b></div>
                  <div className="xsc-pop-save">saves \~2.5 hrs/wk</div>
                </div>
              </div>

              <div className="xsc-ev a-priya pop-r" tabIndex={0} style={{'--ev':'#4ED8A7', top:'230px', height:'19px'}}>
                <strong>Queue health</strong>

                <div className="xsc-pop">
                  <div className="xsc-pop-head"><i>P</i><div><strong>Priya</strong><span className="role">Support lead</span></div><span className="st">Active</span></div>
                  <div className="xsc-pop-title">Support queue health check</div>
                  <div className="xsc-pop-row"><span>Runs</span><b>Mon · Wed · Fri · 13:00</b></div>
                  <div className="xsc-pop-row"><span>Duration</span><b>\~25 min</b></div>
                  <div className="xsc-pop-row"><span>Next run</span><b>Fri · 13:00</b></div>
                  <div className="xsc-pop-row"><span>Delivery</span><b>#support</b></div>
                  <div className="xsc-pop-save">saves \~1.2 hrs/wk</div>
                </div>
              </div>

              <div className="xsc-ev a-priya pop-r" tabIndex={0} style={{'--ev':'#4ED8A7', top:'368px', height:'35px'}}>
                <strong>CSAT digest</strong><span className="tm">16:00</span>

                <div className="xsc-pop">
                  <div className="xsc-pop-head"><i>P</i><div><strong>Priya</strong><span className="role">Support lead</span></div><span className="st">Active</span></div>
                  <div className="xsc-pop-title">Weekly CSAT digest</div>
                  <div className="xsc-pop-row"><span>Runs</span><b>Weekly · Fri · 16:00</b></div>
                  <div className="xsc-pop-row"><span>Duration</span><b>\~45 min</b></div>
                  <div className="xsc-pop-row"><span>Next run</span><b>Fri · 16:00</b></div>
                  <div className="xsc-pop-row"><span>Delivery</span><b>#support</b></div>
                  <div className="xsc-pop-save">saves \~1 hr/wk</div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>

    <div className="xsc-cal-legend">
      <span className="lbl">Agents</span>
      <span className="xsc-lg lg-maya" style={{'--ev':'#B566FF'}}><i />Maya · Marketing</span>
      <span className="xsc-lg lg-dario" style={{'--ev':'#24A4FF'}}><i />Dario · Sales</span>
      <span className="xsc-lg lg-priya" style={{'--ev':'#4ED8A7'}}><i />Priya · Support</span>
      <span className="xsc-lg lg-felix" style={{'--ev':'#FD840C'}}><i />Felix · Finance</span>
      <span className="lbl" style={{marginLeft:'auto'}}>12 scheduled jobs · 4 agents · 24/7</span>
    </div>
  </div>

  <div className="mt-8 grid grid-cols-1 md:grid-cols-3 gap-4">
    <div className="actionist-metric-tile">
      <div className="actionist-metric-number">Rail</div>
      <div className="actionist-metric-caption">"Next up" insight row + upcoming events grouped by Today, This week, This month, and Later (capped at 30)</div>
    </div>

    <div className="actionist-metric-tile">
      <div className="actionist-metric-number">Views</div>
      <div className="actionist-metric-caption">Month view (dots and chips per day), week view and day view (time-block tiles sized by duration)</div>
    </div>

    <div className="actionist-metric-tile">
      <div className="actionist-metric-number">Sheet</div>
      <div className="actionist-metric-caption">Click "+ New schedule" in the rail or click an empty slot in the week/day view to open the ScheduleSheet</div>
    </div>
  </div>

  <Note>
    In month view, clicking a day cell opens a <strong>DayDrawer</strong> that lists every event for that day — useful when multiple schedules land on the same date.
  </Note>
</div>

<hr className="xc-divider" />

<div className="w-full py-10 xc-rise" id="create-a-schedule">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">ScheduleSheet</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Three sections, zero guessing.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      The ScheduleSheet walks you through three sections in order. Select a section to explore its fields:
    </p>
  </div>

  <div className="xsc-sheet exp-tool-shell xc-try">
    <div className="mxp-srch-chips" style={{marginBottom:'8px'}}>
      <label htmlFor="xsc-s-what"><input className="mxp-r" type="radio" name="xsc-sec" id="xsc-s-what" defaultChecked />1 — What to run</label>
      <label htmlFor="xsc-s-when"><input className="mxp-r" type="radio" name="xsc-sec" id="xsc-s-when" />2 — When to run</label>
      <label htmlFor="xsc-s-repeat"><input className="mxp-r" type="radio" name="xsc-sec" id="xsc-s-repeat" />3 — Repeat</label>
      <label htmlFor="xsc-s-delivery"><input className="mxp-r" type="radio" name="xsc-sec" id="xsc-s-delivery" />4 — Delivery</label>
    </div>

    {/* Panel A: What to run */}

    <div className="xsc-sp xsc-sp-what">
      <div className="xsc-field-row">
        <span className="xsc-field-label">Type</span>
        <span className="xsc-field-val"><em>Agent task</em> — "Have an agent perform a task"</span>
      </div>

      <div className="xsc-field-row">
        <span className="xsc-field-label">Agent</span>
        <span className="xsc-field-val">Select from your configured agents, e.g. <em>Maya</em></span>
      </div>

      <div className="xsc-field-row">
        <span className="xsc-field-label">Goal</span>
        <span className="xsc-field-val"><em>Required.</em> The task instruction — "Check my inbox and summarize unread messages." The agent receives this verbatim at run time.</span>
      </div>

      <p style={{fontSize:'13px',opacity:0.65,marginTop:'10px',lineHeight:'1.55'}}>The schedule type is always <strong>Agent task</strong>. The Goal field is the only required text — be specific, keep it scoped to what the agent can complete within the 10-minute execution limit.</p>
    </div>

    {/* Panel B: When to run */}

    <div className="xsc-sp xsc-sp-when">
      <div className="xsc-field-row">
        <span className="xsc-field-label">Date</span>
        <span className="xsc-field-val">Pick from the date picker. Displayed in the schedule's timezone.</span>
      </div>

      <div className="xsc-field-row">
        <span className="xsc-field-label">Time</span>
        <span className="xsc-field-val"><em>09:00</em> — HH:MM in the chosen timezone</span>
      </div>

      <div className="xsc-field-row">
        <span className="xsc-field-label">Duration</span>
        <span className="xsc-field-val">Presets: <em>15 m</em> / <em>30 m</em> (default) / <em>1 h</em> / <em>2 h</em> — or type any value between 1 and 1,440 minutes. Controls block height in calendar and feeds the conflict checker.</span>
      </div>

      <div className="xsc-field-row">
        <span className="xsc-field-label">Timezone</span>
        <span className="xsc-field-val">Defaults to system timezone. If this differs from your system zone an <em>amber warning card</em> appears — read it before saving.</span>
      </div>
    </div>

    {/* Panel C: Repeat */}

    <div className="xsc-sp xsc-sp-repeat">
      <div className="xsc-field-row">
        <span className="xsc-field-label">Repeat</span>
        <span className="xsc-field-val">Toggle on to expand the recurrence block. Off = one-time.</span>
      </div>

      <div className="xsc-field-row">
        <span className="xsc-field-label">Frequency</span>
        <span className="xsc-field-val"><em>Weekly</em> — also: Minutely, Hourly, Daily, Monthly, Yearly</span>
      </div>

      <div className="xsc-field-row">
        <span className="xsc-field-label">Days</span>

        <span className="xsc-field-val">
          <div className="xsc-day-chips">
            <span className="xsc-day-chip on">Mo</span>
            <span className="xsc-day-chip">Tu</span>
            <span className="xsc-day-chip on">We</span>
            <span className="xsc-day-chip">Th</span>
            <span className="xsc-day-chip on">Fr</span>
            <span className="xsc-day-chip">Sa</span>
            <span className="xsc-day-chip">Su</span>
          </div>
        </span>
      </div>

      <div className="xsc-field-row">
        <span className="xsc-field-label">Stop rule</span>
        <span className="xsc-field-val"><em>Never</em> / On date / After N occurrences</span>
      </div>

      <p style={{fontSize:'13px',opacity:0.65,marginTop:'10px',lineHeight:'1.55'}}>The <strong>PreviewPanel</strong> on the right of the sheet shows the next occurrences in real time — date, day of week, and time for each upcoming run.</p>
    </div>

    {/* Panel D: Delivery */}

    <div className="xsc-sp xsc-sp-delivery">
      <div className="xsc-delivery-row">
        <span className="xsc-delivery-dot" />

        <span style={{fontSize:'13.5px'}}><strong>Just run it</strong> — silent. Results visible only in Schedules history.</span>
      </div>

      <div className="xsc-delivery-row selected">
        <span className="xsc-delivery-dot" />

        <span style={{fontSize:'13.5px'}}><strong>Home feed</strong> — posts a result card to your feed after each run. Default for new schedules.</span>
      </div>

      <div className="xsc-delivery-row">
        <span className="xsc-delivery-dot" />

        <span style={{fontSize:'13.5px'}}><strong>Conversation</strong> — result card lands in a specific agent conversation.</span>
      </div>

      <div className="xsc-delivery-row">
        <span className="xsc-delivery-dot" />

        <span style={{fontSize:'13.5px'}}><strong>Telegram / Slack</strong> — notifies the connected bot channel. Appears when the agent has a bot configured.</span>
      </div>

      <p style={{fontSize:'13px',opacity:0.65,marginTop:'10px',lineHeight:'1.55'}}>Delivery resets to <strong>Home feed</strong> automatically if you change the target agent. Re-select Telegram or Slack after switching.</p>
    </div>
  </div>

  <div className="mt-10">
    <Steps>
      <Step title="Open the ScheduleSheet" icon="calendar-plus">
        Click <strong>+ New schedule</strong> in the CalendarRail sidebar, or click any empty time slot in the week or day view. The ScheduleSheet slides in from the right.
      </Step>

      <Step title="What to run" icon="user-check">
        The schedule type is already set to <strong>Agent task</strong> — "Have an agent perform a task." Select the agent from the dropdown, then type the task instruction in the <strong>Goal</strong> field (required). Example: <em>"Check my inbox and summarize unread messages."</em>
      </Step>

      <Step title="When to run" icon="clock">
        Pick the date and start time. Choose a duration from the presets — <strong>15 m</strong>, <strong>30 m</strong> (default), <strong>1 h</strong>, or <strong>2 h</strong> — or type any value between 1 minute and 1,440 minutes. Duration controls the block height in week/day view and feeds the conflict checker.

        Verify the <strong>Time zone</strong> dropdown. If it differs from your system timezone, an amber warning card appears — read it before saving (see [Timezone handling](#timezone-handling) below).

        To make the schedule recurring, toggle <strong>Repeat</strong> on and configure the recurrence block.
      </Step>

      <Step title="When this run finishes" icon="send">
        Choose where the result card lands from the <strong>DeliveryPicker</strong>. Options: just run it silently, post to your home feed, post into a specific conversation, notify on Telegram, or notify on Slack. Delivery defaults to the home feed if you change the target agent — re-select if needed.
      </Step>

      <Step title="Create schedule" icon="check">
        Click <strong>Create schedule</strong>. A toast confirms "Schedule created" and the event appears on the calendar immediately.
      </Step>
    </Steps>
  </div>

  {/* TODO(image): schedule-sheet-annotated — IMAGE SPEC: ScheduleSheet slide-in panel (dark theme): three sections visible on the left ('What to run' with Agent task card selected and Goal field filled, 'When to run' with date/time and duration, 'Repeat' toggle in the ON state with Weekly frequency and Mo/We/Fr day chips highlighted, 'When this run finishes' with delivery picker), and the PreviewPanel on the right showing next 3 occurrences. 'Create schedule' button at the bottom. — replace this CSS mock with the real screenshot */}

  <div className="mxp-window">
    <div className="mxp-window-bar">
      <span className="mxp-window-dot" />

      <span className="mxp-window-dot" />

      <span className="mxp-window-dot" />

      <span className="mxp-window-title">ScheduleSheet · New schedule</span>
    </div>

    <div className="xsc-mock-sheet-layout">
      <div className="xsc-mock-sheet-form">
        <div style={{display:'flex',flexDirection:'column',gap:'5px'}}>
          <div className="xsc-mock-section-head"><span className="xsc-mock-section-num">1</span> What to run</div>

          <div className="xsc-mock-row-pair">
            <span className="xsc-mock-label">Type</span>
            <span className="xsc-mock-val active">Agent task</span>
          </div>

          <div className="xsc-mock-row-pair">
            <span className="xsc-mock-label">Agent</span>
            <span className="xsc-mock-val">Maya</span>
          </div>

          <div className="xsc-mock-row-pair tall">
            <span className="xsc-mock-label">Goal</span>
            <span className="xsc-mock-val muted">Check my inbox and summarize unread messages.</span>
          </div>
        </div>

        <div style={{display:'flex',flexDirection:'column',gap:'5px'}}>
          <div className="xsc-mock-section-head"><span className="xsc-mock-section-num">2</span> When to run</div>

          <div className="xsc-mock-row-pair">
            <span className="xsc-mock-label">Date</span>
            <span className="xsc-mock-val">June 17, 2026</span>
          </div>

          <div className="xsc-mock-row-pair">
            <span className="xsc-mock-label">Time</span>
            <span className="xsc-mock-val active">09:00</span>
          </div>

          <div className="xsc-mock-row-pair">
            <span className="xsc-mock-label">Duration</span>
            <span className="xsc-mock-val">30 m</span>
          </div>
        </div>

        <div style={{display:'flex',flexDirection:'column',gap:'5px'}}>
          <div className="xsc-mock-section-head"><span className="xsc-mock-section-num">3</span> Repeat <span className="xsc-mock-toggle-on">ON</span></div>

          <div className="xsc-mock-row-pair">
            <span className="xsc-mock-label">Frequency</span>
            <span className="xsc-mock-val active">Weekly</span>
          </div>

          <div className="xsc-mock-row-pair">
            <span className="xsc-mock-label">Days</span>

            <span className="xsc-mock-val">
              <span className="xsc-mock-day on">Mo</span>
              <span className="xsc-mock-day">Tu</span>
              <span className="xsc-mock-day on">We</span>
              <span className="xsc-mock-day">Th</span>
              <span className="xsc-mock-day on">Fr</span>
              <span className="xsc-mock-day">Sa</span>
              <span className="xsc-mock-day">Su</span>
            </span>
          </div>
        </div>

        <div style={{display:'flex',flexDirection:'column',gap:'5px'}}>
          <div className="xsc-mock-section-head"><span className="xsc-mock-section-num">4</span> When this run finishes</div>
          <div className="xsc-mock-delivery active"><span className="xsc-delivery-dot on" /> Home feed</div>
          <div className="xsc-mock-delivery"><span className="xsc-delivery-dot" /> Just run it</div>
          <div className="xsc-mock-delivery"><span className="xsc-delivery-dot" /> Conversation</div>
        </div>

        <div className="xsc-mock-create-btn">Create schedule</div>
      </div>

      <div className="xsc-mock-preview-panel">
        <div className="xsc-mock-preview-head">Next occurrences</div>
        <div className="xsc-mock-preview-row"><span className="xsc-mock-preview-dot" /><span>Mon, Jun 17 · 09:00</span></div>
        <div className="xsc-mock-preview-row"><span className="xsc-mock-preview-dot" /><span>Wed, Jun 19 · 09:00</span></div>
        <div className="xsc-mock-preview-row"><span className="xsc-mock-preview-dot" /><span>Fri, Jun 21 · 09:00</span></div>
      </div>
    </div>
  </div>
</div>

<div className="w-full py-10 xc-rise" id="timezone-handling">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">Timezones</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Timezone handling.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      Every schedule stores a timezone as an IANA string. The app defaults to your system timezone — but for agents expected to fire during business hours in a different region, you choose the zone explicitly.
    </p>
  </div>

  {/* TODO(image): cross-timezone-warning — IMAGE SPEC: Closeup of the 'When to run' section inside the ScheduleSheet (dark theme), with the amber 'Different from your computer's time zone' warning card fully visible. The card shows two lines of detail: the scheduled time in the chosen zone and the local-time equivalent in the viewer's timezone. — replace this CSS mock with the real screenshot */}

  <div className="mxp-window" style={{maxWidth:'480px'}}>
    <div className="mxp-window-bar">
      <span className="mxp-window-dot" />

      <span className="mxp-window-dot" />

      <span className="mxp-window-dot" />

      <span className="mxp-window-title">ScheduleSheet · When to run</span>
    </div>

    <div style={{padding:'16px 18px',display:'flex',flexDirection:'column',gap:'8px'}}>
      <div className="xsc-mock-row-pair">
        <span className="xsc-mock-label">Date</span>
        <span className="xsc-mock-val">June 17, 2026</span>
      </div>

      <div className="xsc-mock-row-pair">
        <span className="xsc-mock-label">Time</span>
        <span className="xsc-mock-val active">09:00</span>
      </div>

      <div className="xsc-mock-row-pair">
        <span className="xsc-mock-label">Time zone</span>
        <span className="xsc-mock-val">America/New\_York</span>
      </div>

      <div className="xsc-mock-tz-warning">
        <div className="xsc-mock-tz-warning-icon">!</div>

        <div className="xsc-mock-tz-warning-text">
          <strong>Different from your computer's time zone</strong>
          <span>Runs at 09:00 in America/New\_York</span>
          <span>That's 14:00 in your time zone (Europe/London)</span>
        </div>
      </div>
    </div>
  </div>

  <Warning>
    When the schedule timezone differs from your system timezone, an amber banner appears: <em>"Runs at \[time] in \[zone] — that's \[local time] in your time zone (\[your zone])."</em> Read this before clicking <strong>Create schedule</strong> — it tells you exactly when the agent will fire in your local time. A 9:00 AM schedule in <code>America/New\_York</code> fires at 2:00 PM in <code>Europe/London</code>.
  </Warning>

  <p className="text-base text-gray-600 dark:text-gray-400 mt-6">
    Actionist stores the timezone you select and computes firing times from it — not from your browser's current offset. Daylight saving transitions are handled automatically.
  </p>
</div>

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">Safety</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Conflict detection.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      The ScheduleSheet checks for overlaps against the same agent's existing schedules in real time, before you save.
    </p>
  </div>

  <div className="xsc-conflict-flow">
    <div className="xsc-cf-node start">New schedule</div>

    <div className="xsc-cf-arrow" />

    <div className="xsc-cf-node decision">Overlap with same agent's existing schedule?</div>

    <div className="xsc-cf-branches">
      <div className="xsc-cf-branch no">
        <div className="xsc-cf-branch-label">No</div>

        <div className="xsc-cf-arrow down" />

        <div className="xsc-cf-node success">Save — schedule created</div>
      </div>

      <div className="xsc-cf-branch yes">
        <div className="xsc-cf-branch-label">Yes</div>

        <div className="xsc-cf-arrow down" />

        <div className="xsc-cf-node warning">ConflictBanner blocks save — "Schedule conflict: \[title] overlaps with an existing schedule"</div>

        <div className="xsc-cf-arrow down" />

        <div className="xsc-cf-node fix">Adjust time or duration, then save</div>
      </div>
    </div>
  </div>

  <Info>
    Conflict detection is <strong>agent-scoped</strong>. Two schedules for the same agent that overlap will trigger the banner. Two schedules for <em>different</em> agents can share the same time slot without any warning — each agent runs in its own execution lane.
  </Info>

  <Tip>
    Set the duration accurately. The conflict checker uses the stored duration as the overlap window — if you set a shorter duration than the task actually needs, the banner will not fire on a genuinely conflicting later schedule.
  </Tip>
</div>

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">After each run</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Where the result lands.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      The <strong>DeliveryPicker</strong> in section 4 of the ScheduleSheet controls where Actionist posts the result card after each run finishes.
    </p>
  </div>

  <Tabs>
    <Tab title="Just run it" icon="play">
      **No card.** The run executes silently. Results are visible only on the Schedules/Triggers page and in the Execution history — nothing appears in your feeds or channels. Best for high-frequency background jobs where you only need to check in occasionally.
    </Tab>

    <Tab title="Home feed" icon="house">
      **Tell me when it's done.** A result card posts to your home feed after each run. This is the default when you create a new schedule or when you change the target agent. Re-select if you switch agents.
    </Tab>

    <Tab title="Conversation" icon="message-square">
      **Post into a conversation.** Choose a specific agent conversation and the result card lands there, threaded with the agent's other output. Best when a scheduled task is part of an ongoing workflow.
    </Tab>

    <Tab title="Telegram / Slack" icon="bell">
      **Notify me on Telegram** or **Notify me on Slack.** The result card posts to the connected bot channel after each run. These options appear when the selected agent has a Telegram bot or Slack bot configured.

      <Note>
        Delivery resets to the home feed automatically if you change the target agent in the ScheduleSheet. Re-select the Telegram or Slack option after switching agents.
      </Note>
    </Tab>
  </Tabs>
</div>

<hr className="xc-divider" />

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">Per-agent controls</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">The agent Scheduled runs tab.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      Open the <strong>Agents</strong> page, select an agent, and click the <strong>Scheduled runs</strong> tab. This is where you set the master controls that apply to all of the agent's schedules at once.
    </p>
  </div>

  {/* TODO(image): agent-schedule-tab — IMAGE SPEC: AgentScheduleTab (dark theme): the 'Schedule Preferences' heading at top, enable toggle ON, timezone dropdown showing 'America/New_York', wake window toggle ON with 09:00 and 17:00 time inputs visible side by side, and the schedule list below with one entry showing the schedule title, next run time, and edit/delete icons. — replace this CSS mock with the real screenshot */}

  <div className="mxp-window">
    <div className="mxp-window-bar">
      <span className="mxp-window-dot" />

      <span className="mxp-window-dot" />

      <span className="mxp-window-dot" />

      <span className="mxp-window-title">Maya · Scheduled runs</span>
    </div>

    <div style={{padding:'16px 18px',display:'flex',flexDirection:'column',gap:'10px'}}>
      <div style={{fontSize:'13.5px',fontWeight:700,marginBottom:'4px',opacity:0.85}}>Schedule Preferences</div>

      <div className="xsc-mock-prefs-row">
        <span style={{fontSize:'11px',fontWeight:600,opacity:0.5,letterSpacing:'0.04em',minWidth:'120px'}}>Scheduling enabled</span>
        <span className="xsc-mock-toggle-on">ON</span>
      </div>

      <div className="xsc-mock-prefs-row">
        <span style={{fontSize:'11px',fontWeight:600,opacity:0.5,letterSpacing:'0.04em',minWidth:'120px'}}>Agent timezone</span>
        <span className="xsc-mock-val">America/New\_York</span>
      </div>

      <div className="xsc-mock-prefs-row">
        <span style={{fontSize:'11px',fontWeight:600,opacity:0.5,letterSpacing:'0.04em',minWidth:'120px'}}>Wake window</span>
        <span className="xsc-mock-toggle-on">ON</span>
        <span className="xsc-mock-time-input">09:00</span>
        <span style={{fontSize:'11px',opacity:0.4}}>to</span>
        <span className="xsc-mock-time-input">17:00</span>
      </div>

      <div style={{fontSize:'10px',letterSpacing:'0.1em',textTransform:'uppercase',fontWeight:700,opacity:0.4,marginTop:'6px',fontFamily:'"JetBrains Mono",monospace'}}>Schedules</div>

      <div className="xsc-mock-schedule-list-row">
        <span className="xsc-mock-dot purple" />

        <span style={{fontWeight:500,flex:1}}>Morning inbox digest</span>
        <span style={{fontSize:'10.5px',fontFamily:'"JetBrains Mono",monospace',opacity:0.5,whiteSpace:'nowrap'}}>Next: Mon Jun 17 · 09:00</span>
        <span className="xsc-mock-icon-btn">Edit</span>
        <span className="xsc-mock-icon-btn danger">Delete</span>
      </div>
    </div>
  </div>

  <h3 className="text-xl font-semibold tracking-tight text-gray-900 dark:text-gray-50 mb-4 mt-8">Schedule Preferences</h3>

  <AccordionGroup>
    <Accordion title="Enable / disable scheduling" icon="toggle-right" defaultOpen={true}>
      The enable toggle at the top of Schedule Preferences controls all of the agent's schedules at once. When the toggle is off, every scheduled job for this agent is paused — no executions fire until you turn it back on. Individual schedules also have their own toggles in the list below for finer control.
    </Accordion>

    <Accordion title="Agent timezone" icon="globe">
      Set a timezone specifically for this agent. All schedules you create from the AgentScheduleTab will default to this zone. This is separate from the per-schedule timezone you can set in the ScheduleSheet — the agent-level setting is the starting default, not a hard override.
    </Accordion>

    <Accordion title="Wake window" icon="sun">
      The wake window defines a daily time range during which the agent is allowed to fire. Schedules that fall outside the window are skipped — the engine records each skip as a **Missed** run in execution history with a note explaining the reason, then advances the schedule to its next occurrence. Skipped firings are not retried.

      Toggle **Wake window** on to reveal the start and end time inputs. The default is `09:00`–`17:00`. Set these in `HH:MM` format using the agent's configured timezone.

      <Tip>
        Use wake windows instead of toggling individual schedules on and off manually. A single wake-window setting prevents every schedule for this agent from firing outside business hours.
      </Tip>
    </Accordion>
  </AccordionGroup>

  <h3 className="text-xl font-semibold tracking-tight text-gray-900 dark:text-gray-50 mb-4 mt-8">Configuring wake windows</h3>

  <Steps>
    <Step title="Open the Scheduled runs tab" icon="calendar">
      In the Agents page, select the agent and click the <strong>Scheduled runs</strong> tab. The "Schedule Preferences" section appears at the top.
    </Step>

    <Step title="Confirm scheduling is enabled" icon="toggle-right">
      The enable toggle should be on. If it is off, click to turn it on — otherwise no schedules will fire regardless of wake window settings.
    </Step>

    <Step title="Set the agent timezone" icon="globe">
      Choose the timezone from the <strong>Timezone</strong> dropdown. Use the agent's local business timezone, not your browser's timezone, if they differ.
    </Step>

    <Step title="Turn on the wake window" icon="sun">
      Toggle <strong>Wake window</strong> on. Set the start time (e.g. <code>09:00</code>) and end time (e.g. <code>17:00</code>). Any scheduled execution that falls outside this window will be skipped.
    </Step>
  </Steps>
</div>

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">Audit trail</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Run history.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      Every execution is recorded with its status, duration, and a link to the full transcript. History is stored locally on your desktop — it is not synced to the web app. Retained for 90 days, capped at 1,000 entries.
    </p>
  </div>

  {/* TODO(image): execution-history — IMAGE SPEC: Execution history panel (dark theme): filter row at top with status pills showing Completed (green), Failed (red), Missed (amber/orange), Timeout, and Running. Below: three or four log rows, each showing a status icon, schedule title, duration, timestamp, and a 'Session' link. Dark background. — replace this CSS mock with the real screenshot */}

  <div className="mxp-window" style={{marginBottom:'0'}}>
    <div className="mxp-window-bar">
      <span className="mxp-window-dot" />

      <span className="mxp-window-dot" />

      <span className="mxp-window-dot" />

      <span className="mxp-window-title">Execution history</span>
    </div>

    <div style={{padding:'12px 16px',display:'flex',flexDirection:'column',gap:'7px'}}>
      <div className="xsc-mock-filter-row">
        <span className="xsc-status-badge completed">Completed</span>
        <span className="xsc-status-badge failed">Failed</span>
        <span className="xsc-status-badge missed">Missed</span>
        <span className="xsc-status-badge timeout">Timeout</span>
        <span className="xsc-status-badge running">Running</span>
      </div>

      <div className="xsc-mock-history-row">
        <span className="xsc-status-badge completed">Completed</span>
        <span className="xsc-mock-hist-title">Morning inbox digest</span>
        <span className="xsc-mock-hist-meta">2 m 14 s · 09:01</span>
        <span className="xsc-mock-hist-link">Session</span>
      </div>

      <div className="xsc-mock-history-row">
        <span className="xsc-status-badge missed">Missed</span>
        <span className="xsc-mock-hist-title">Evening report — outside wake window</span>
        <span className="xsc-mock-hist-meta">— · 19:30</span>
        <span className="xsc-mock-hist-link">Session</span>
      </div>

      <div className="xsc-mock-history-row">
        <span className="xsc-status-badge failed">Failed</span>
        <span className="xsc-mock-hist-title">Slack digest (3 retries)</span>
        <span className="xsc-mock-hist-meta">retried · 11:02</span>
        <span className="xsc-mock-hist-link">Session</span>
      </div>

      <div className="xsc-mock-history-row">
        <span className="xsc-status-badge timeout">Timeout</span>
        <span className="xsc-mock-hist-title">Full codebase audit</span>
        <span className="xsc-mock-hist-meta">10 m 30 s · 14:15</span>
        <span className="xsc-mock-hist-link">Session</span>
      </div>
    </div>
  </div>

  {/* Ambient animated run log */}

  <div className="mxp-window" style={{marginTop:'22px'}}>
    <div className="mxp-window-bar">
      <span className="mxp-window-dot" />

      <span className="mxp-window-dot" />

      <span className="mxp-window-dot" />

      <span className="mxp-window-title">execution-history · last 24 h</span>
    </div>

    <div className="mxp-window-body" style={{minHeight:'auto', padding:'16px 20px'}}>
      <div className="xsc-run-row mxp-s1">
        <span className="xsc-status-badge completed">Completed</span>
        <span className="xsc-run-title">Morning inbox digest</span>
        <span className="xsc-run-meta">2 m 14 s · 09:01</span>
        <a href="#" className="xsc-run-link">Session</a>
      </div>

      <div className="xsc-run-row mxp-s2">
        <span className="xsc-status-badge completed">Completed</span>
        <span className="xsc-run-title">Weekly CRM update</span>
        <span className="xsc-run-meta">4 m 38 s · 09:00 Mon</span>
        <a href="#" className="xsc-run-link">Session</a>
      </div>

      <div className="xsc-run-row mxp-s3">
        <span className="xsc-status-badge missed">Missed</span>
        <span className="xsc-run-title">Evening report — outside wake window</span>
        <span className="xsc-run-meta">— · 19:30</span>
        <a href="#" className="xsc-run-link">Session</a>
      </div>

      <div className="xsc-run-row mxp-s4">
        <span className="xsc-status-badge failed">Failed</span>
        <span className="xsc-run-title">Slack digest (3 retries)</span>
        <span className="xsc-run-meta">retried · 11:02</span>
        <a href="#" className="xsc-run-link">Session</a>
      </div>

      <div className="xsc-run-row mxp-s5">
        <span className="xsc-status-badge timeout">Timeout</span>
        <span className="xsc-run-title">Full codebase audit</span>
        <span className="xsc-run-meta">10 m 30 s · 14:15</span>
        <a href="#" className="xsc-run-link">Session</a>
      </div>

      <div className="xsc-run-row mxp-s6">
        <span className="xsc-status-badge running">Running</span>
        <span className="xsc-run-title">Competitor research brief</span>
        <span className="xsc-run-meta">in progress · 17:00<span className="mxp-caret" style={{marginLeft:'4px'}} /></span>
        <a href="#" className="xsc-run-link">Session</a>
      </div>
    </div>
  </div>

  <div className="mt-8">
    <h3 className="text-xl font-semibold tracking-tight text-gray-900 dark:text-gray-50 mb-4">Status types</h3>

    <Columns cols={3}>
      <Card title="Completed" icon="circle-check">
        <Badge color="green" size="sm">Completed</Badge>
        <p className="mt-3 text-sm">The agent task finished within the time limit and without error.</p>
      </Card>

      <Card title="Failed" icon="circle-x">
        <Badge color="red" size="sm">Failed</Badge>
        <p className="mt-3 text-sm">The task encountered an error. Up to 3 automatic retries with 30-second delay (doubling up to 5 minutes).</p>
      </Card>

      <Card title="Missed" icon="circle-alert">
        <Badge color="yellow" size="sm">Missed</Badge>
        <p className="mt-3 text-sm">The app was closed when the schedule was due. Missed executions within the past 24 hours are recovered on next startup.</p>
      </Card>

      <Card title="Timeout" icon="timer-off">
        <Badge color="orange" size="sm">Timeout</Badge>
        <p className="mt-3 text-sm">The task exceeded the 10-minute hard limit (plus 30-second grace period) and was forcibly ended.</p>
      </Card>

      <Card title="Cancelled" icon="circle-slash">
        <Badge color="gray" size="sm">Cancelled</Badge>
        <p className="mt-3 text-sm">The run was cancelled before it completed.</p>
      </Card>

      <Card title="Running" icon="loader">
        <Badge color="blue" size="sm" shape="pill">Running</Badge>
        <p className="mt-3 text-sm">The task is currently executing in the background.</p>
      </Card>
    </Columns>

    <p className="text-base text-gray-600 dark:text-gray-400 mt-8">
      Each row in the history panel links to a <strong>Session</strong> — the ephemeral transcript Actionist recorded during that run. The transcript shows every tool call, model output, and step the agent took, making it straightforward to verify what actually happened or diagnose a failure.
    </p>

    <p className="text-base text-gray-600 dark:text-gray-400 mt-4">
      For the history of a single schedule (rather than all schedules), open the agent's <strong>Scheduled runs</strong> tab and follow the link from any schedule row. History is retained for 90 days, with a maximum of 1,000 entries.
    </p>
  </div>
</div>

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">Under the hood</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">From trigger to transcript in five steps.</h2>
  </div>

  <div className="mxp-pipe">
    <div className="mxp-pipe-node"><strong>Clock fires</strong><span>The scheduler wakes within ±60 seconds of the stored time and enqueues the run.</span></div>

    <div className="mxp-pipe-link" />

    <div className="mxp-pipe-node"><strong>Wake window check</strong><span>If outside the configured window, the run is recorded as Missed and the schedule advances.</span></div>

    <div className="mxp-pipe-link d2" />

    <div className="mxp-pipe-node"><strong>Conflict serialise</strong><span>Same-agent concurrent fires are staggered 2 seconds apart — FIFO, no parallel runs.</span></div>

    <div className="mxp-pipe-link d3" />

    <div className="mxp-pipe-node"><strong>Agent executes</strong><span>The task instruction is handed to the agent. Retries on failure: up to 3, 30 s delay, 2× backoff to 5 min max.</span></div>

    <div className="mxp-pipe-link d4" />

    <div className="mxp-pipe-node"><strong>Transcript + delivery</strong><span>The session is written to history. The result card posts to the configured delivery destination.</span></div>
  </div>
</div>

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">Reference</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Limits and defaults.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      Hard limits, retry behaviour, and default values that apply across all schedules.
    </p>
  </div>

  <div className="mxs-limits">
    <div className="mxs-limit"><b>10 min</b><span>execution timeout (hard limit)</span></div>
    <div className="mxs-limit"><b>30 s</b><span>timeout grace period</span></div>
    <div className="mxs-limit"><b>±60 s</b><span>execution tolerance window</span></div>
    <div className="mxs-limit"><b className="xc-count" style={{"--xc-to":"100"}} data-suffix=""><span className="xc-real">100</span></b><span>execution queue cap (oldest dropped)</span></div>
    <div className="mxs-limit"><b className="xc-count" style={{"--xc-to":"3"}} data-suffix=""><span className="xc-real">3</span></b><span>max retry attempts on failure</span></div>
    <div className="mxs-limit"><b>30 s</b><span>retry delay with 2× backoff, up to 5 min</span></div>
    <div className="mxs-limit"><b>24 h</b><span>missed-run recovery window on startup</span></div>
    <div className="mxs-limit"><b>2 s</b><span>stagger between concurrent same-agent fires</span></div>
    <div className="mxs-limit"><b>30 min</b><span>duration default</span></div>
    <div className="mxs-limit"><b>1–100</b><span>interval multiplier range</span></div>
    <div className="mxs-limit"><b>09:00–17:00</b><span>wake window default</span></div>
    <div className="mxs-limit"><b>90 days</b><span>history retention, 1,000 entry cap</span></div>
  </div>

  <div className="mt-8" />

  | Parameter                        | Value                               |
  | -------------------------------- | ----------------------------------- |
  | Execution timeout (hard limit)   | 10 minutes                          |
  | Timeout grace period             | 30 seconds                          |
  | Execution tolerance window       | ±60 seconds                         |
  | Execution queue cap              | 100 entries (oldest excess dropped) |
  | Max retry attempts on failure    | 3                                   |
  | Retry delay (with 2× backoff)    | 30 seconds, up to 5 minutes max     |
  | Missed-run recovery window       | 24 hours (checked on app startup)   |
  | Stagger between concurrent fires | 2 seconds                           |
  | Duration default                 | 30 minutes                          |
  | Duration minimum                 | 1 minute                            |
  | Duration maximum                 | 1,440 minutes (24 hours)            |
  | Duration presets                 | 15 m, 30 m, 1 h, 2 h                |
  | Interval multiplier range        | 1–100                               |
  | Wake window default              | 09:00–17:00                         |
  | Timezone default                 | System timezone                     |
  | CalendarRail upcoming cap        | 30 events                           |
  | History retention                | 90 days                             |
  | History entry cap                | 1,000 entries                       |
</div>

<hr className="xc-divider" />

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">Best practices</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Make schedules reliable.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      These patterns separate agents that run smoothly every day from ones that silently miss, timeout, or pile up.
    </p>
  </div>

  <AccordionGroup>
    <Accordion title="Set duration accurately" icon="ruler">
      Duration feeds the conflict checker. If you set a shorter duration than the task actually needs, the banner will not fire on a genuinely conflicting later schedule — and both will attempt to run at the same time for the same agent. Duration also controls block height in week/day views, so accurate values make the calendar readable at a glance.
    </Accordion>

    <Accordion title="Verify the timezone before saving cross-zone schedules" icon="globe">
      The amber warning card shows the local-time equivalent before you click <strong>Create schedule</strong>. For agents expected to fire during business hours in a remote timezone, this is the moment to confirm — not after three missed mornings.
    </Accordion>

    <Accordion title="Use wake windows instead of manual toggling" icon="sun">
      Set <code>09:00</code>–<code>17:00</code> in the agent's <strong>Scheduled runs</strong> tab to prevent any schedule for that agent from firing outside working hours. Each skipped firing is recorded as a Missed run in execution history with the reason noted, so you still have a full audit trail. You do not have to remember to re-enable schedules each morning.
    </Accordion>

    <Accordion title="Recovery covers only 24 hours" icon="history">
      If the app was closed when a schedule was due, the engine queues missed executions from within the past 24 hours on startup. Older misses are silently dropped. For high-frequency schedules, only the most recent missed firing is recovered. If continuity matters, move the agent to the cloud runtime for unattended headless execution.
    </Accordion>

    <Accordion title="Agent does nothing? Check three things" icon="search">
      In order:

      1. <strong>Agent-level enable toggle</strong> — is scheduling enabled on the Scheduled runs tab?
      2. <strong>Wake window</strong> — does the scheduled time fall inside the configured window?
      3. <strong>Memory bucket permissions</strong> — empty `memoryPermissions` can cause silent write failures that look like no-ops.
    </Accordion>

    <Accordion title="Same agent serialises FIFO" icon="list-ordered">
      Two schedules for the same agent firing at the same time do not run in parallel — the second waits for the first to complete or time out. Different agents run in parallel in their own execution lanes. If two tasks for the same agent must not block each other, assign them to separate agents.
    </Accordion>

    <Accordion title="Write concise task instructions" icon="file-text">
      The hard execution timeout is 10 minutes. Agent tasks that exceed it are forcibly terminated and recorded as `Timeout`. Write narrow, scoped instructions for scheduled tasks — "Summarize the last 24 hours of #engineering Slack messages and post to my home feed" will complete reliably; "Audit the entire codebase and produce a technical spec" almost certainly will not.
    </Accordion>

    <Accordion title="Move to cloud for always-on execution" icon="cloud">
      Local-desktop schedules stop firing when your machine sleeps or the app closes. For schedules that must run overnight, on weekends, or unattended, move the agent to the hosted cloud runtime — see [Cloud](/Folders/cloud) for steps.
    </Accordion>
  </AccordionGroup>
</div>

<div className="w-full py-10">
  <div className="actionist-cta-panel xc-border">
    <div className="relative z-10 flex flex-col items-center gap-5 max-w-2xl mx-auto">
      <span className="actionist-eyebrow">Set it once</span>

      <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-white leading-tight">
        Put your agents on the clock.
      </h2>

      <p className="text-base md:text-lg text-white/85">
        Open the Calendar page, describe a task, and set it to fire every morning. The agent handles it — you check the transcript when you want.
      </p>

      <div className="flex flex-wrap items-center justify-center gap-3 pt-2">
        <a className="actionist-cta-btn-primary" href="https://app.actionist.ai" target="_blank" rel="noreferrer">
          Open the Dashboard

          <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.2" strokeLinecap="round" strokeLinejoin="round">
            <path d="M5 12h14" />

            <path d="m12 5 7 7-7 7" />
          </svg>
        </a>

        <a className="actionist-cta-btn-secondary" href="mailto:support@actionist.ai">
          Email the team
        </a>
      </div>
    </div>
  </div>
</div>

<div className="w-full pt-2 pb-6">
  <p className="actionist-trust-line">
    Every execution is logged with a full transcript.<br />
    Conflict detection · Wake windows · 90-day history.
  </p>
</div>

<div className="w-full pb-16">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">Keep going</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Next steps.</h2>
  </div>

  <Columns cols={4}>
    <Card title="Agents" icon="users" href="/Folders/agents">
      Configure the agent — tools, approval mode, memory permissions — before putting it on a schedule.
    </Card>

    <Card title="Reactions" icon="zap" href="/Folders/reactions">
      For event-driven automation: fire an agent when something happens, not at a fixed time.
    </Card>

    <Card title="Channels" icon="messages-square" href="/Folders/channels">
      Connect a Telegram or Slack bot so delivery notifications reach your team where they work.
    </Card>

    <Card title="Cloud" icon="cloud" href="/Folders/cloud">
      Move an agent to the hosted runtime so schedules keep firing when your laptop is closed.
    </Card>
  </Columns>
</div>
