Feature: Interactive session shell

  The interactive session provides a single, cohesive terminal interface
  for all of keld's interactive flows. It manages the visual frame —
  theme, help bar, breadcrumb, and cancellation — so that individual
  screens do not have to.

  Rule: The interface runs as a single continuous terminal session

    Scenario: Transitioning between screens
      Given the user launches keld interactively
      When they progress from one screen to the next
      Then the interface transitions directly without returning to the shell

  Rule: The terminal background is detected once and determines the colour palette

    Scenario: Dark terminal
      Given the terminal has a dark background
      When the session starts
      Then the dark colour palette is used for all screens

    Scenario: Light terminal
      Given the terminal has a light background
      When the session starts
      Then the light colour palette is used for all screens

    Scenario: Background detection is unavailable
      Given the terminal background cannot be detected
      When the session starts
      Then the dark colour palette is used as a default

  Rule: Colour is used intentionally to highlight actionable elements

    Scenario: Body text uses the terminal's default foreground
      Given any screen in the session
      Then descriptive and body text is not styled with a custom colour

    Scenario: No text is rendered in a muted or dim style
      Given any screen in the session
      Then all text is rendered at full brightness

  Rule: A help bar at the bottom shows available key bindings for the current screen

    Scenario: Help bar reflects the current screen
      Given the user is on any screen
      Then the help bar shows the key bindings relevant to that screen
      And the help bar uses the same visual format on every screen

  Rule: The highlighted item in any list is indicated with a consistent cursor

    Scenario: Cursor on a selectable list
      Given any screen with a selectable list
      Then the highlighted item is marked with a consistent visual indicator

  Rule: A breadcrumb at the top shows the path of selections made so far

    Scenario: No breadcrumb on the first screen
      Given the user is on the command menu
      Then no breadcrumb is displayed

    Scenario: Breadcrumb builds as selections are made
      Given the user has selected a command and a preset
      When they reach a command-specific screen
      Then the breadcrumb shows their prior selections in order

    Scenario: Breadcrumb updates on back navigation
      Given the user has progressed several screens into a flow
      When they navigate back one step
      Then the breadcrumb removes the most recent selection

  Rule: The current screen's title is displayed below the breadcrumb

    Scenario: Screen title is always visible
      Given the user is on any screen
      Then the screen's title is displayed below the breadcrumb

  Rule: Ctrl+C exits the session cleanly from any screen

    Scenario: Cancelling during a flow
      Given the user is on any screen
      When they press Ctrl+C
      Then the session exits without executing restic
