@property --transcript-border-angle { syntax: ""; inherits: false; initial-value: 0deg; } :root { font-family: Inter, ui-sans-serif, system-ui, sans-serif; color: #ebebe8; background: #101111; } * { box-sizing: border-box; } body { margin: 0; min-width: 480px; min-height: 420px; background: transparent; } button, textarea, input, select { font: inherit; } button { cursor: pointer; border: 0; border-radius: 7px; padding: 8px 12px; background: #dcecc8; color: #152012; font-size: 12px; font-weight: 750; } button:hover { background: #f0ffe0; } .app-shell { position: relative; height: 100vh; max-height: 100vh; min-height: 0; overflow: hidden; display: flex; flex-direction: column; gap: 9px; padding: 14px; border: 1px solid #3b403a; border-radius: 14px; background: rgba(18, 20, 19, 0.97); box-shadow: 0 20px 48px rgba(0, 0, 0, 0.48); backdrop-filter: blur(18px); } .workflow-header { display: flex; cursor: grab; user-select: none; align-items: center; justify-content: space-between; gap: 12px; min-width: 0; } .workspace-summary { min-width: 0; } .workspace-heading, .status-row, .composer-actions, .settings-actions, .folder-form { display: flex; align-items: center; gap: 8px; } .workspace-heading { min-width: 0; } .brand { flex: 0 0 auto; color: #b8df84; font-size: 10px; font-weight: 900; letter-spacing: 0.16em; } h1 { min-width: 0; margin: 0; font-size: 16px; line-height: 1.15; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .status-row { margin-top: 3px; color: #898f89; font-size: 11px; white-space: nowrap; overflow: hidden; } .status-row > span { overflow: hidden; text-overflow: ellipsis; } .extension-status { color: #b8df84; } .status-metric { flex: 0 0 auto; border-left: 1px solid #3a413a; padding-left: 6px; color: #b9c4ae; font-variant-numeric: tabular-nums; } .state-pill { flex: 0 0 auto; border: 1px solid #404740; border-radius: 999px; padding: 2px 6px; color: #afb3ad; background: #202320; font-size: 10px; font-weight: 800; } .state-pill.working { border-color: #628b42; color: #c4ed8b; } .state-pill.recovering { border-color: #8a713d; color: #f0ce83; } .state-pill.error { border-color: #8b4c4c; color: #ffadad; } .workflow-header button, .workflow-header input, .workflow-header select { cursor: pointer; } .compact-button { flex: 0 0 auto; padding: 7px 9px; } .agents { display: flex; align-items: center; gap: 6px; min-height: 30px; overflow-x: auto; padding: 1px 0 3px; } .agent-caption { flex: 0 0 auto; color: #70776f; font-size: 10px; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; } .agent { display: flex; align-items: center; gap: 6px; min-width: 0; max-width: 180px; padding: 5px 8px; border: 1px solid #303530; background: #1b1e1b; color: #aeb4ac; font-size: 11px; font-weight: 650; } .agent > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .agent small { color: #70776f; font-size: 10px; font-weight: 600; } .agent.selected { border-color: #7da856; background: #222b1d; color: #ecf7df; } .notifications { display: grid; gap: 5px; } .notification { border-left: 3px solid #79b8d8; border-radius: 5px; padding: 6px 8px; background: #1c292e; color: #cbe7f2; font-size: 11px; } .notification.warning { border-color: #d3ad54; background: #332c1a; color: #ffe4a0; } .notification.error { border-color: #db7777; background: #332020; color: #ffc0c0; } .workflow { flex: 1 1 auto; min-height: 0; overflow: hidden; display: grid; grid-template-rows: minmax(0, 1fr) auto; gap: 7px; } .workflow-main { min-height: 0; display: grid; grid-template-columns: minmax(0, 1fr) 210px; gap: 8px; } .transcript, .settings { min-height: 0; overflow: auto; border: 1px solid #2d332e; border-radius: 9px; background: #151716; } .transcript { padding: 8px 11px; overscroll-behavior: contain; scroll-padding-bottom: 112px; } .transcript.with-extension { padding-bottom: 112px; } .transcript.working { border-color: transparent; background: linear-gradient(#151716, #151716) padding-box, conic-gradient( from var(--transcript-border-angle), #314426, #b8df84, #314426 28%, #314426 72%, #b8df84, #314426 ) border-box; box-shadow: 0 0 14px rgba(151, 207, 104, 0.14); animation: transcript-border-orbit 2.4s linear infinite; } .transcript.recovering { border-color: #a8823f; box-shadow: 0 0 12px rgba(240, 199, 110, 0.12); } .transcript.error { border-color: #9d5050; } @keyframes transcript-border-orbit { to { --transcript-border-angle: 360deg; } } .todos-pane { min-height: 0; overflow: auto; border: 1px solid #303830; border-radius: 9px; background: #181c18; padding: 8px; } .todos-heading { display: flex; align-items: center; justify-content: space-between; margin-bottom: 7px; color: #dce6d5; font-size: 11px; text-transform: uppercase; letter-spacing: 0.08em; } .todos-heading span { border-radius: 999px; padding: 1px 6px; background: #2b3826; color: #b8df84; font-size: 10px; } .todo-list { display: grid; gap: 5px; margin: 0; padding: 0; list-style: none; } .todo-list li { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 6px; align-items: start; padding: 5px 0; border-bottom: 1px solid #293029; } .todo-list li:last-child { border-bottom: 0; } .todo-list li > div { display: grid; gap: 2px; min-width: 0; } .todo-list li strong { overflow: hidden; color: #d9dfd5; font-size: 11px; text-overflow: ellipsis; white-space: nowrap; } .todo-list li small { color: #7f897e; font-size: 10px; } .todo-list li > span { color: #9ea69d; font-size: 9px; text-transform: capitalize; } .todo-list li.in_progress > span { color: #b8df84; } .todo-list li.completed { opacity: 0.55; } .todo-list li.completed strong { text-decoration: line-through; } .message { margin: 4px 0; padding: 7px 8px; border: 1px solid transparent; border-radius: 7px; } .message.user { margin-left: 34px; border-color: #30435b; background: #192536; } .message.assistant { margin-right: 18px; border-color: #344633; background: #1a241a; } .message.system, .message.toolResult { border-bottom: 1px solid #282d28; border-radius: 0; } .message:last-child { border-bottom: 0; } .message strong { display: block; margin-bottom: 3px; color: #b8df84; font-size: 10px; font-weight: 850; letter-spacing: 0.08em; text-transform: uppercase; } .message.user strong { color: #8cc3ff; } .pending-message { margin: 5px -3px 0; padding: 7px 8px; border: 1px dashed #56825e; border-radius: 7px; background: #172017; } .pending-message strong { display: flex; align-items: center; justify-content: space-between; } .pending-message strong span { color: #b8df84; font-size: 9px; letter-spacing: 0.03em; text-transform: none; } .pending-message.sending { animation: pending-pulse 1.4s ease-in-out infinite; } @keyframes pending-pulse { 50% { border-color: #91ba69; } } .message pre { margin: 0; white-space: pre-wrap; overflow-wrap: anywhere; font: inherit; font-size: 12px; line-height: 1.38; color: #d7dbd5; } .muted { margin: 0; color: #858b85; font-size: 12px; } .warning { color: #ffb4aa; font-weight: 700; } .workflow-footer { display: grid; gap: 5px; } .pi-controls { display: grid; grid-template-columns: minmax(0, 1fr) 150px; gap: 7px; padding: 4px 6px; border: 1px solid #303730; border-radius: 7px; background: #191d19; color: #8f988e; font-size: 9px; } .pi-controls label { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 5px; align-items: center; font-weight: 800; white-space: nowrap; } .pi-controls select { min-width: 0; padding: 2px 4px; border-radius: 4px; font-size: 10px; font-weight: 600; color-scheme: dark; } .composer-stack { display: grid; gap: 6px; min-width: 0; } .composer { display: grid; gap: 5px; } .composer > label { color: #939b92; font-size: 10px; font-weight: 800; letter-spacing: 0.06em; text-transform: uppercase; } input, select, textarea { width: 100%; border: 1px solid #3a423a; border-radius: 7px; padding: 7px 9px; color: #e8ebe6; background: #1a1d1a; } input:focus, select:focus, textarea:focus { outline: 2px solid #8ebd5f; outline-offset: 1px; } textarea { min-height: 48px; max-height: 100px; resize: vertical; font-size: 12px; line-height: 1.35; } .composer textarea:focus { outline: none; border-color: #6f8b56; box-shadow: 0 0 0 1px rgba(143, 189, 95, 0.28); } .composer-actions { justify-content: flex-end; min-width: 0; } .composer-actions > button { flex: 0 0 auto; } .work-progress { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 6px; min-width: 0; border: 1px solid #303630; border-radius: 7px; background: #191c19; font-size: 10px; } .composer-progress { flex: 1 1 auto; padding: 5px 7px; } .work-indicator { width: 7px; height: 7px; border-radius: 50%; background: #656b65; } .work-copy { display: grid; min-width: 0; gap: 1px; } .work-copy strong { color: #dfe6dc; font-size: 10px; } .work-copy span, .work-meta { color: #8e968d; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .work-meta { max-width: 58px; font-size: 10px; text-align: right; } .work-progress.working { border-color: #547339; background: #1a2217; } .work-progress.working .work-indicator { background: #b8df84; animation: work-pulse 1.2s ease-in-out infinite; } .work-progress.recovering .work-indicator { background: #f0c76e; animation: work-pulse 1.2s ease-in-out infinite; } .work-progress.error .work-indicator { background: #ff8e8e; } @keyframes work-pulse { 50% { opacity: 0.35; transform: scale(0.72); } } .quiet { background: #282d28; color: #dce1da; } .danger { color: #ffb0b0; } .commands { display: grid; gap: 4px; max-height: 80px; overflow: auto; } .command-followup { display: grid; gap: 6px; border: 1px solid #4b6636; border-radius: 8px; background: #1b2518; padding: 7px; } .command-followup-heading { display: flex; align-items: center; justify-content: space-between; color: #c4e89a; font-size: 11px; } .command-followup-heading button { padding: 4px 7px; font-size: 10px; } .command-choice-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 5px; max-height: 130px; overflow: auto; } .command-choice-list button { padding: 6px 8px; text-align: left; font-size: 11px; } .commands button { display: grid; grid-template-columns: 116px minmax(0, 1fr); gap: 8px; padding: 5px 8px; text-align: left; font-size: 11px; } .commands small { overflow: hidden; color: #969d95; font-weight: 500; text-overflow: ellipsis; white-space: nowrap; } .extension-widget { border-left: 2px solid #9cc76d; border-radius: 3px; background: #1b2417; padding: 5px 7px; font-size: 11px; } .extension-widget p { margin: 2px 0; white-space: pre-wrap; } .settings { flex: 1 1 auto; display: grid; align-content: start; gap: 10px; padding: 12px; } h2 { margin: 0; font-size: 14px; } .folder-form { align-items: stretch; } .remembered { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; } .settings-actions { justify-content: flex-start; } .session-panel { display: grid; gap: 8px; border-top: 1px solid #303830; padding-top: 10px; } .session-panel-heading { display: flex; align-items: start; justify-content: space-between; gap: 8px; } .session-panel-heading h2 { margin-bottom: 3px; } .session-panel-heading .muted { max-width: 460px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .session-list { display: grid; gap: 5px; max-height: 230px; overflow: auto; } .session { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 9px; align-items: center; width: 100%; padding: 7px 9px; text-align: left; } .session > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .session small { color: #8f988e; font-size: 10px; } .session.current { border: 1px solid #769e53; background: #202b1c; color: #e7f2de; cursor: default; } .session:disabled { opacity: 1; } .session.quiet:disabled { opacity: 0.5; cursor: not-allowed; } .extension { position: absolute; inset: auto 14px 14px; max-height: min(70vh, 460px); overflow: auto; border: 1px solid #9cc76d; border-radius: 10px; background: #1d2818; box-shadow: 0 18px 42px rgba(0, 0, 0, 0.5); padding: 13px; display: grid; gap: 8px; } .extension p { margin: 0; font-size: 12px; } @media (prefers-reduced-motion: reduce) { .transcript.working { animation: none; } } @media (max-width: 680px) { .app-shell { padding: 11px; gap: 7px; border-radius: 10px; } .workflow-main { grid-template-columns: minmax(0, 1fr) 170px; } .pi-controls { grid-template-columns: minmax(0, 1fr) 120px; } .transcript { padding: 7px 9px; } .composer-actions { gap: 5px; } .composer-progress .work-copy span { display: none; } .work-meta { display: none; } }