/**
 * Chat V1 Sandbox — page-specific styles
 * Scoped via body[data-page="chat-sandbox"]
 * Uses COEUS theme variables — no hardcoded colors
 * Units: em
 *
 * Layout: flex column filling viewport (toolbar → settings drawer → panel)
 * Works alongside the menubar (body.has-menubar → padding-left: 7em)
 *
 * Sections: page reset, shell, toolbar, tabs, status pills, settings drawer,
 *   form elements, buttons, panels, chat messages, composer,
 *   welcome screen, typing indicator, markdown rendering,
 *   token stats, per-message meta, workflow panel,
 *   agent indicator, JSON blocks, status badges, utilities, responsive
 *
 * Delete this file + chat.html + chat.js to remove the experiment.
 */

/* ══════════════════════════════════════════════
   PAGE RESET — prevent body scroll, lock viewport
   ══════════════════════════════════════════════ */

body[data-page="chat-sandbox"] {
    overflow: hidden;
    height: 100vh;
    height: 100dvh;
}

/* ══════════════════════════════════════════════
   SHELL — flex column filling entire viewport
   ══════════════════════════════════════════════ */

body[data-page="chat-sandbox"] .sb-shell {
    display: flex;
    flex-direction: column;
    height: 100vh;
    height: 100dvh;
    width: 100%;
    overflow: hidden;
    position: relative;
    background: transparent;
}

/* ══════════════════════════════════════════════
   TOOLBAR — fixed header bar
   ══════════════════════════════════════════════ */

body[data-page="chat-sandbox"] .sb-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75em;
    padding: 0 1.25em;
    height: 3.25em;
    min-height: 3.25em;
    border-bottom: 1px solid var(--glass-border);
    background: var(--glass-primary);
    backdrop-filter: blur(16px) saturate(120%);
    -webkit-backdrop-filter: blur(16px) saturate(120%);
    flex-shrink: 0;
    z-index: 10;
}

body[data-page="chat-sandbox"] .sb-toolbar-left {
    display: flex;
    align-items: center;
    gap: 0.875em;
    min-width: 0;
}

body[data-page="chat-sandbox"] .sb-toolbar-right {
    display: flex;
    align-items: center;
    gap: 0.625em;
    flex-shrink: 0;
}

body[data-page="chat-sandbox"] .sb-title {
    margin: 0;
    font-family: var(--font-serif);
    font-size: 1em;
    font-weight: 600;
    color: var(--text-primary);
    white-space: nowrap;
    letter-spacing: -0.01em;
}

/* ── Tab Bar (segmented control in toolbar) ── */

body[data-page="chat-sandbox"] .sb-tab-bar {
    display: flex;
    gap: 0.125em;
    background: var(--glass-secondary);
    border-radius: 0.5em;
    padding: 0.1875em;
}

body[data-page="chat-sandbox"] .sb-tab {
    padding: 0.25em 0.75em;
    border: none;
    border-radius: 0.375em;
    background: transparent;
    color: var(--text-tertiary);
    font-size: 0.75em;
    font-family: var(--font-sans);
    font-weight: 500;
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease;
    white-space: nowrap;
    line-height: 1.4;
}

body[data-page="chat-sandbox"] .sb-tab:hover {
    color: var(--text-secondary);
    background: var(--glass-primary);
}

body[data-page="chat-sandbox"] .sb-tab.active {
    background: var(--glass-hover);
    color: var(--text-primary);
}

/* ── Status Pills ── */

body[data-page="chat-sandbox"] .sb-status-pills {
    display: flex;
    gap: 0.375em;
}

body[data-page="chat-sandbox"] .sb-pill {
    display: inline-flex;
    align-items: center;
    padding: 0.1875em 0.5em;
    border-radius: 1em;
    font-size: 0.6875em;
    font-family: var(--font-sans);
    font-weight: 500;
    background: var(--glass-secondary);
    color: var(--text-secondary);
    white-space: nowrap;
    line-height: 1.3;
}

/* ── Settings Gear Button ── */

body[data-page="chat-sandbox"] .sb-icon-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 2em;
    height: 2em;
    border: 1px solid var(--glass-border);
    border-radius: 0.5em;
    background: transparent;
    color: var(--text-secondary);
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
    flex-shrink: 0;
}

body[data-page="chat-sandbox"] .sb-icon-btn:hover {
    background: var(--glass-hover);
    color: var(--text-primary);
}

body[data-page="chat-sandbox"] .sb-icon-btn.active {
    background: var(--glass-hover);
    color: var(--ios-system-blue);
    border-color: var(--ios-system-blue);
}

/* ══════════════════════════════════════════════
   SETTINGS DRAWER — collapsible config panel
   ══════════════════════════════════════════════ */

body[data-page="chat-sandbox"] .sb-settings {
    border-bottom: 1px solid var(--glass-border);
    background: var(--glass-primary);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    padding: 0.75em 1.25em;
    flex-shrink: 0;
    overflow: hidden;
    max-height: 14em;
    opacity: 1;
    transition:
        max-height 0.3s cubic-bezier(0.4, 0, 0.2, 1),
        padding 0.3s cubic-bezier(0.4, 0, 0.2, 1),
        opacity 0.2s ease,
        border-color 0.2s ease;
}

body[data-page="chat-sandbox"] .sb-settings.sb-collapsed {
    max-height: 0;
    padding-top: 0;
    padding-bottom: 0;
    border-bottom-color: transparent;
    opacity: 0;
    pointer-events: none;
}

body[data-page="chat-sandbox"] .sb-settings-grid {
    display: grid;
    grid-template-columns: 1fr 8em 8em 5em;
    gap: 0.5em 0.75em;
    align-items: end;
}

body[data-page="chat-sandbox"] .sb-field-wide {
    grid-column: 1 / -1;
}

body[data-page="chat-sandbox"] .sb-settings-actions {
    display: flex;
    align-items: center;
    gap: 0.5em;
    margin-top: 0.625em;
    flex-wrap: wrap;
}

body[data-page="chat-sandbox"] .sb-meta-inline {
    font-size: 0.6875em;
    font-family: var(--font-sans);
    color: var(--text-tertiary);
    margin-left: auto;
    white-space: nowrap;
}

body[data-page="chat-sandbox"] .sb-meta-inline + .sb-meta-inline {
    margin-left: 0.75em;
}

/* ══════════════════════════════════════════════
   FORM ELEMENTS — inputs, labels, selects
   ══════════════════════════════════════════════ */

body[data-page="chat-sandbox"] .sb-field {
    display: flex;
    flex-direction: column;
    gap: 0.1875em;
}

body[data-page="chat-sandbox"] .sb-label {
    font-size: 0.625em;
    font-family: var(--font-sans);
    font-weight: 600;
    color: var(--text-tertiary);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    line-height: 1.4;
}

body[data-page="chat-sandbox"] .sb-input {
    width: 100%;
    padding: 0.375em 0.5em;
    border: 1px solid var(--glass-border);
    border-radius: 0.375em;
    background: var(--glass-secondary);
    color: var(--text-primary);
    font-size: 0.8125em;
    font-family: var(--font-sans);
    box-sizing: border-box;
    transition: border-color 0.15s ease;
    line-height: 1.4;
}

body[data-page="chat-sandbox"] .sb-input:focus {
    outline: none;
    border-color: var(--ios-system-blue);
}

body[data-page="chat-sandbox"] .sb-input::placeholder {
    color: var(--text-quaternary);
}

body[data-page="chat-sandbox"] .sb-mono {
    font-family: 'SF Mono', 'Fira Code', 'Cascadia Code', monospace;
    font-size: 0.75em;
    line-height: 1.5;
}

/* ══════════════════════════════════════════════
   BUTTONS
   ══════════════════════════════════════════════ */

body[data-page="chat-sandbox"] .sb-btn {
    padding: 0.375em 0.75em;
    border: 1px solid var(--glass-border);
    border-radius: 0.375em;
    background: var(--glass-secondary);
    color: var(--text-primary);
    font-size: 0.75em;
    font-family: var(--font-sans);
    font-weight: 500;
    cursor: pointer;
    transition: background 0.15s ease, border-color 0.15s ease;
    white-space: nowrap;
    line-height: 1.4;
}

body[data-page="chat-sandbox"] .sb-btn:hover {
    background: var(--glass-hover);
}

body[data-page="chat-sandbox"] .sb-btn:disabled {
    opacity: 0.4;
    cursor: not-allowed;
}

body[data-page="chat-sandbox"] #newChatBtn {
    background: var(--ios-system-orange);
    border-color: var(--ios-system-orange);
    color: #fff;
    font-weight: 600;
    padding: 0.375em 1em;
    box-shadow: 0 0 0.5em rgba(var(--ios-orange-rgb), 0.25);
}

body[data-page="chat-sandbox"] #newChatBtn:hover {
    filter: brightness(1.1);
    box-shadow: 0 0 0.75em rgba(var(--ios-orange-rgb), 0.4);
}

body[data-page="chat-sandbox"] .sb-btn-primary {
    background: var(--ios-system-blue);
    border-color: var(--ios-system-blue);
    color: var(--text-on-accent, #fff);
}

body[data-page="chat-sandbox"] .sb-btn-primary:hover {
    filter: brightness(1.1);
}

body[data-page="chat-sandbox"] .sb-btn-green {
    background: var(--ios-system-green);
    border-color: var(--ios-system-green);
    color: var(--text-on-accent, #fff);
}

body[data-page="chat-sandbox"] .sb-btn-red {
    background: var(--ios-system-red);
    border-color: var(--ios-system-red);
    color: var(--text-on-accent, #fff);
}

/* ══════════════════════════════════════════════
   PANELS — tab content containers
   Only one panel is visible at a time
   ══════════════════════════════════════════════ */

body[data-page="chat-sandbox"] .sb-panel {
    display: none;
    flex-direction: column;
    flex: 1 1 0;
    min-height: 0;
    overflow: hidden;
    position: relative;
    background: transparent;
}

body[data-page="chat-sandbox"] .sb-panel.active {
    display: flex;
}

/* ══════════════════════════════════════════════
   WELCOME SCREEN — centered greeting
   Positioned absolutely so it doesn't disrupt flex
   ══════════════════════════════════════════════ */

body[data-page="chat-sandbox"] .sb-welcome {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 2em 1.5em;
    text-align: center;
    z-index: 1;
    pointer-events: none;
}

body[data-page="chat-sandbox"] .sb-welcome-title {
    margin: 0 0 0.375em;
    font-family: var(--font-serif);
    font-size: 2.25em;
    font-weight: 500;
    color: var(--text-primary);
    line-height: 1.15;
    letter-spacing: -0.02em;
    opacity: 0.85;
}

body[data-page="chat-sandbox"] .sb-welcome-subtitle {
    margin: 0;
    font-family: var(--font-sans);
    font-size: 0.875em;
    color: var(--text-tertiary);
    line-height: 1.6;
    max-width: 28em;
}

/* Italic Bodoni name inside the greeting (matches chat4.html style) */
body[data-page="chat-sandbox"] .sb-welcome-name {
    font-family: 'Bodoni Moda', Georgia, serif;
    font-style: italic;
    font-weight: 400;
    color: var(--text-primary);
}

/* Second line of subtitle — slightly more space above */
body[data-page="chat-sandbox"] .sb-welcome-help {
    display: block;
    margin-top: 0.75em;
    color: var(--text-secondary);
}

/* ══════════════════════════════════════════════
   AGENT HANDOFF INDICATOR — sticky pill
   ══════════════════════════════════════════════ */

body[data-page="chat-sandbox"] .sb-agent-indicator {
    display: inline-flex;
    align-items: center;
    gap: 0.375em;
    padding: 0.25em 0.75em;
    margin: 0.5em 1.25em 0;
    border-radius: 1em;
    font-size: 0.6875em;
    font-family: var(--font-sans);
    font-weight: 600;
    color: var(--ios-system-blue);
    background: color-mix(in srgb, var(--ios-system-blue) 10%, transparent);
    white-space: nowrap;
    flex-shrink: 0;
    align-self: flex-start;
    animation: sb-indicator-in 0.25s ease;
}

body[data-page="chat-sandbox"] .sb-agent-indicator::before {
    content: '\2192';
    font-size: 1em;
}

@keyframes sb-indicator-in {
    from {
        opacity: 0;
        transform: translateX(-0.5em);
    }
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

/* ══════════════════════════════════════════════
   CHAT MESSAGES — scrollable message list
   ══════════════════════════════════════════════ */

body[data-page="chat-sandbox"] .sb-messages {
    flex: 1 1 0;
    min-height: 0;
    overflow-y: auto;
    overflow-x: hidden;
    padding: 1em 1.25em;
    display: flex;
    flex-direction: column;
    gap: 0.625em;
    scroll-behavior: smooth;
    background: transparent;
}

/* Custom scrollbar for messages */
body[data-page="chat-sandbox"] .sb-messages::-webkit-scrollbar {
    width: 0.375em;
}

body[data-page="chat-sandbox"] .sb-messages::-webkit-scrollbar-track {
    background: transparent;
}

body[data-page="chat-sandbox"] .sb-messages::-webkit-scrollbar-thumb {
    background: var(--glass-border);
    border-radius: 0.25em;
}

body[data-page="chat-sandbox"] .sb-messages::-webkit-scrollbar-thumb:hover {
    background: var(--text-quaternary);
}

/* ── Message Bubbles ── */

body[data-page="chat-sandbox"] .sb-message {
    max-width: 52em;
    padding: 0.75em 1em;
    border-radius: 1.125em;
    word-break: break-word;
    overflow-wrap: break-word;
    line-height: 1.6;
    font-size: 0.875em;
    font-family: var(--font-sans);
    animation: sb-message-in 0.2s ease;
}

@keyframes sb-message-in {
    from {
        opacity: 0;
        transform: translateY(0.375em);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

body[data-page="chat-sandbox"] .sb-message.user {
    align-self: flex-end;
    border-bottom-right-radius: 0.25em;
    background: linear-gradient(135deg, #ff8a3d 0%, #ff5a2c 100%);
    color: var(--text-on-accent, #fff);
    white-space: pre-wrap;
}

body[data-page="chat-sandbox"] .sb-message.assistant {
    align-self: flex-start;
    border-bottom-left-radius: 0.25em;
    background: rgba(12, 14, 18, 0.55);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
    border: 1px solid rgba(255, 255, 255, 0.08);
    color: var(--text-primary);
    white-space: normal;
}

body[data-page="chat-sandbox"] .sb-message.system {
    align-self: center;
    max-width: 85%;
    background: var(--glass-primary);
    border: 1px solid var(--glass-border);
    color: var(--text-secondary);
    font-size: 0.75em;
    border-radius: 0.5em;
    text-align: center;
}

/* ── File chips inside user bubbles ── */

body[data-page="chat-sandbox"] .sb-message.user .sb-msg-files {
    display: flex;
    flex-wrap: wrap;
    gap: 0.3em;
    margin-bottom: 0.4em;
}

body[data-page="chat-sandbox"] .sb-message.user .sb-msg-file-chip {
    display: inline-flex;
    align-items: center;
    gap: 0.25em;
    padding: 0.15em 0.5em;
    border-radius: 0.4em;
    background: rgba(255, 255, 255, 0.2);
    font-size: 0.8em;
    font-family: var(--font-sans);
    white-space: nowrap;
    max-width: 14em;
    overflow: hidden;
    text-overflow: ellipsis;
}

body[data-page="chat-sandbox"] .sb-message.user .sb-msg-file-chip::before {
    content: '📄';
    font-size: 0.9em;
}

/* ══════════════════════════════════════════════
   COMPOSER — input area at bottom of chat
   ══════════════════════════════════════════════ */

body[data-page="chat-sandbox"] .sb-composer {
    display: flex;
    flex-direction: column;
    gap: 0.375em;
    padding: 0.75em 1.25em 1.5em;
    flex-shrink: 0;
    max-width: 48em;
    width: 100%;
    margin: 0 auto;
    align-self: center;
    box-sizing: border-box;
    background: transparent;
    border-top: none;
}

/* Desktop only: a wider input bar. Mobile and tablet keep the 48em base above. */
@media (min-width: 64em) {
    body[data-page="chat-sandbox"] .sb-composer {
        max-width: 64em;
    }
}

/* Wrap textarea + mention dropdown together */
body[data-page="chat-sandbox"] .sb-composer-input-wrap {
    flex: 1 1 auto;
    position: relative;
    min-width: 0;
}

/* ── Attachment chips list (shown above the input row) ── */

body[data-page="chat-sandbox"] .sb-attachment-list {
    display: flex;
    flex-wrap: wrap;
    gap: 0.375em;
}

body[data-page="chat-sandbox"] .sb-attachment-chip {
    display: inline-flex;
    align-items: center;
    gap: 0.3em;
    padding: 0.25em 0.5em 0.25em 0.4em;
    border-radius: 0.5em;
    background: color-mix(in srgb, var(--ios-system-blue) 12%, transparent);
    border: 1px solid color-mix(in srgb, var(--ios-system-blue) 25%, transparent);
    font-size: 0.75em;
    font-family: var(--font-sans);
    color: var(--text-primary);
    max-width: 16em;
}

body[data-page="chat-sandbox"] .sb-chip-icon {
    font-size: 0.9em;
    flex-shrink: 0;
}

body[data-page="chat-sandbox"] .sb-chip-name {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

body[data-page="chat-sandbox"] .sb-chip-remove {
    flex-shrink: 0;
    background: none;
    border: none;
    cursor: pointer;
    color: var(--text-tertiary);
    font-size: 1em;
    line-height: 1;
    padding: 0 0.1em;
    transition: color 0.15s ease;
}

body[data-page="chat-sandbox"] .sb-chip-remove:hover {
    color: var(--ios-system-red);
}

/* ── Composer input row ── */

body[data-page="chat-sandbox"] .sb-composer-row {
    display: flex;
    align-items: flex-end;
    gap: 0.5em;
}

body[data-page="chat-sandbox"] .sb-composer-input {
    flex: 1 1 auto;
    min-height: 3.25em;
    max-height: 12em;
    padding: 0.75em 1.25em;
    border: 1px solid var(--glass-border);
    border-radius: 1.5em;
    background: var(--glass-secondary);
    color: var(--text-primary);
    font-size: 1em;
    font-family: var(--font-sans);
    resize: none;
    box-sizing: border-box;
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
    line-height: 1.55;
    overflow-y: auto;
}

body[data-page="chat-sandbox"] .sb-composer-input:focus {
    outline: none;
    border-color: var(--ios-system-blue);
    box-shadow: 0 0 0 0.1875em color-mix(in srgb, var(--ios-system-blue) 15%, transparent);
}

body[data-page="chat-sandbox"] .sb-composer-input::placeholder {
    color: var(--text-quaternary);
}

/* ── Side buttons (attach & mic) ── */

body[data-page="chat-sandbox"] .sb-composer-side-btn {
    width: 2.75em;
    height: 2.75em;
    border-radius: 50%;
    border: 1px solid var(--glass-border);
    background: var(--glass-secondary);
    color: var(--text-secondary);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
    flex-shrink: 0;
}

body[data-page="chat-sandbox"] .sb-composer-side-btn:hover {
    background: var(--glass-hover);
    color: var(--text-primary);
}

/* ── Recording state — pulsing red ring ── */

body[data-page="chat-sandbox"] .sb-composer-side-btn.recording {
    background: color-mix(in srgb, var(--ios-system-red) 15%, transparent);
    border-color: var(--ios-system-red);
    color: var(--ios-system-red);
    animation: sb-mic-pulse 1.2s ease-in-out infinite;
}

@keyframes sb-mic-pulse {
    0%, 100% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--ios-system-red) 40%, transparent); }
    50%       { box-shadow: 0 0 0 0.4em color-mix(in srgb, var(--ios-system-red) 0%, transparent); }
}

/* ── Send button ── */

body[data-page="chat-sandbox"] .sb-send {
    width: 2.75em;
    height: 2.75em;
    border-radius: 50%;
    border: none;
    background: var(--ios-system-orange, #FF9F0A);
    color: var(--text-on-accent, #fff);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: transform 0.12s ease, opacity 0.15s ease;
    flex-shrink: 0;
}

body[data-page="chat-sandbox"] .sb-send:hover {
    transform: scale(1.06);
}

body[data-page="chat-sandbox"] .sb-send:active {
    transform: scale(0.94);
}

body[data-page="chat-sandbox"] .sb-send:disabled {
    opacity: 0.35;
    cursor: not-allowed;
    transform: none;
}

/* ══════════════════════════════════════════════
   TYPING INDICATOR — three bouncing dots
   ══════════════════════════════════════════════ */

body[data-page="chat-sandbox"] .sb-typing-indicator {
    display: flex;
    align-items: center;
    gap: 0.3em;
    padding: 0.75em 1em;
    align-self: flex-start;
    background: var(--glass-secondary);
    border: 1px solid var(--glass-border);
    border-radius: 1.125em;
    border-bottom-left-radius: 0.25em;
    animation: sb-message-in 0.2s ease;
}

body[data-page="chat-sandbox"] .sb-typing-dot {
    width: 0.375em;
    height: 0.375em;
    border-radius: 50%;
    background: var(--text-tertiary);
    animation: sb-typing 1.4s infinite both;
}

body[data-page="chat-sandbox"] .sb-typing-dot:nth-child(2) {
    animation-delay: 0.2s;
}

body[data-page="chat-sandbox"] .sb-typing-dot:nth-child(3) {
    animation-delay: 0.4s;
}

@keyframes sb-typing {
    0%, 60%, 100% { opacity: 0.3; transform: translateY(0); }
    30% { opacity: 1; transform: translateY(-0.25em); }
}

/* ══════════════════════════════════════════════
   MARKDOWN — rendered content in assistant msgs
   ══════════════════════════════════════════════ */

body[data-page="chat-sandbox"] .sb-message.assistant strong {
    font-weight: 700;
}

body[data-page="chat-sandbox"] .sb-message.assistant em {
    font-style: italic;
}

body[data-page="chat-sandbox"] .sb-message.assistant code {
    font-family: 'SF Mono', 'Fira Code', 'Cascadia Code', monospace;
    font-size: 0.875em;
    padding: 0.125em 0.375em;
    border-radius: 0.25em;
    background: var(--glass-primary);
}

body[data-page="chat-sandbox"] .sb-message.assistant pre {
    margin: 0.5em 0;
    padding: 0.75em;
    border-radius: 0.5em;
    background: var(--glass-primary);
    border: 1px solid var(--glass-border);
    overflow-x: auto;
}

body[data-page="chat-sandbox"] .sb-message.assistant pre code {
    padding: 0;
    background: transparent;
}

body[data-page="chat-sandbox"] .sb-message.assistant h2,
body[data-page="chat-sandbox"] .sb-message.assistant h3,
body[data-page="chat-sandbox"] .sb-message.assistant h4 {
    margin: 0.75em 0 0.25em;
    font-family: var(--font-sans);
    font-weight: 600;
    color: var(--text-primary);
}

body[data-page="chat-sandbox"] .sb-message.assistant h2 { font-size: 1.15em; }
body[data-page="chat-sandbox"] .sb-message.assistant h3 { font-size: 1.05em; }
body[data-page="chat-sandbox"] .sb-message.assistant h4 { font-size: 0.95em; }

body[data-page="chat-sandbox"] .sb-message.assistant ul,
body[data-page="chat-sandbox"] .sb-message.assistant ol {
    margin: 0.375em 0;
    padding-left: 1.5em;
}

body[data-page="chat-sandbox"] .sb-message.assistant li {
    margin: 0.125em 0;
}

body[data-page="chat-sandbox"] .sb-message.assistant p {
    margin: 0.375em 0;
}

body[data-page="chat-sandbox"] .sb-message.assistant p:first-child {
    margin-top: 0;
}

body[data-page="chat-sandbox"] .sb-message.assistant p:last-child {
    margin-bottom: 0;
}

/* ══════════════════════════════════════════════
   TOKEN STATS — toolbar counters
   ══════════════════════════════════════════════ */

body[data-page="chat-sandbox"] .sb-token-stats {
    display: flex;
    align-items: center;
    gap: 0.75em;
}

body[data-page="chat-sandbox"] .sb-token-stat {
    display: flex;
    align-items: center;
    gap: 0.25em;
    font-family: var(--font-sans);
    font-size: 0.6875em;
    line-height: 1;
}

body[data-page="chat-sandbox"] .sb-token-label {
    color: var(--text-quaternary);
    font-weight: 500;
}

body[data-page="chat-sandbox"] .sb-token-value {
    color: var(--text-secondary);
    font-variant-numeric: tabular-nums;
    font-weight: 600;
}

body[data-page="chat-sandbox"] .sb-token-cost {
    color: var(--ios-system-green);
}

/* ══════════════════════════════════════════════
   PER-MESSAGE META — tokens/cost per response
   ══════════════════════════════════════════════ */

body[data-page="chat-sandbox"] .sb-message-meta {
    display: flex;
    gap: 0.75em;
    margin-top: 0.375em;
    padding-top: 0.375em;
    border-top: 1px solid var(--glass-border);
    font-family: var(--font-sans);
    font-size: 0.6875em;
    color: var(--text-quaternary);
    font-variant-numeric: tabular-nums;
}

body[data-page="chat-sandbox"] .sb-message-meta .sb-meta-cost {
    color: var(--ios-system-green);
}

/* ══════════════════════════════════════════════
   WORKFLOW PANEL
   ══════════════════════════════════════════════ */

body[data-page="chat-sandbox"] .sb-wf-scroll {
    flex: 1 1 0;
    min-height: 0;
    overflow-y: auto;
    padding: 1.25em;
    display: flex;
    flex-direction: column;
    gap: 1em;
    max-width: 50em;
}

body[data-page="chat-sandbox"] .sb-wf-card {
    background: var(--glass-primary);
    border: 1px solid var(--glass-border);
    border-radius: 0.75em;
    padding: 1em 1.25em;
}

body[data-page="chat-sandbox"] .sb-wf-heading {
    margin: 0 0 0.75em;
    font-size: 0.875em;
    font-family: var(--font-sans);
    font-weight: 600;
    color: var(--text-primary);
}

body[data-page="chat-sandbox"] .sb-wf-form {
    display: flex;
    flex-direction: column;
    gap: 0.625em;
}

body[data-page="chat-sandbox"] .sb-wf-actions {
    display: flex;
    gap: 0.5em;
    margin-top: 0.75em;
}

body[data-page="chat-sandbox"] .sb-muted {
    margin: 0;
    font-size: 0.8125em;
    color: var(--text-tertiary);
    font-family: var(--font-sans);
}

/* ══════════════════════════════════════════════
   JSON BLOCKS
   ══════════════════════════════════════════════ */

body[data-page="chat-sandbox"] .sb-json {
    background: var(--glass-secondary);
    border: 1px solid var(--glass-border);
    border-radius: 0.5em;
    padding: 0.625em 0.75em;
    overflow-x: auto;
    font-family: 'SF Mono', 'Fira Code', 'Cascadia Code', monospace;
    font-size: 0.75em;
    line-height: 1.5;
    color: var(--text-primary);
    white-space: pre-wrap;
    word-break: break-word;
    margin: 0.375em 0;
}

/* ══════════════════════════════════════════════
   STATUS BADGES
   ══════════════════════════════════════════════ */

body[data-page="chat-sandbox"] .sb-badge {
    display: inline-block;
    padding: 0.125em 0.4375em;
    border-radius: 0.3125em;
    font-size: 0.6875em;
    font-weight: 600;
    font-family: var(--font-sans);
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

body[data-page="chat-sandbox"] .sb-badge-pending {
    background: color-mix(in srgb, var(--ios-system-orange, #FF9F0A) 15%, transparent);
    color: var(--ios-system-orange, #FF9F0A);
}

body[data-page="chat-sandbox"] .sb-badge-running {
    background: color-mix(in srgb, var(--ios-system-blue) 15%, transparent);
    color: var(--ios-system-blue);
}

body[data-page="chat-sandbox"] .sb-badge-completed {
    background: color-mix(in srgb, var(--ios-system-green) 15%, transparent);
    color: var(--ios-system-green);
}

body[data-page="chat-sandbox"] .sb-badge-failed,
body[data-page="chat-sandbox"] .sb-badge-rejected {
    background: color-mix(in srgb, var(--ios-system-red) 15%, transparent);
    color: var(--ios-system-red);
}

/* ══════════════════════════════════════════════
   JS-RENDERED HELPERS
   ══════════════════════════════════════════════ */

body[data-page="chat-sandbox"] .sb-run-info {
    display: flex;
    flex-direction: column;
    gap: 0.3125em;
    font-size: 0.8125em;
    font-family: var(--font-sans);
}

body[data-page="chat-sandbox"] .sb-step-block {
    margin-bottom: 0.5em;
}

body[data-page="chat-sandbox"] .sb-section-gap {
    margin-top: 0.625em;
}

body[data-page="chat-sandbox"] .sb-error-text {
    color: var(--ios-system-red);
}

/* ══════════════════════════════════════════════
   UTILITY
   ══════════════════════════════════════════════ */

body[data-page="chat-sandbox"] .sb-hidden {
    display: none;
}

/* ══════════════════════════════════════════════
   RESPONSIVE — mobile/narrow viewports
   ══════════════════════════════════════════════ */

/* ══════════════════════════════════════════════
   COLLABORATIVE TOOLBAR CONTROLS
   Participant avatars + add button + toolbar sep
   ══════════════════════════════════════════════ */

body[data-page="chat-sandbox"] .sb-collab-controls {
    display: flex;
    align-items: center;
    gap: 0.375em;
}

body[data-page="chat-sandbox"] .sb-participant-indicators {
    display: flex;
    align-items: center;
}

body[data-page="chat-sandbox"] .sb-participant-avatar {
    width: 1.75em;
    height: 1.75em;
    border-radius: 50%;
    background: var(--glass-hover);
    border: 2px solid var(--glass-primary);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.6875em;
    font-family: var(--font-sans);
    font-weight: 600;
    color: var(--text-primary);
    margin-right: -0.375em;
    flex-shrink: 0;
    overflow: hidden;
    position: relative;
    z-index: 1;
    transition: transform 0.15s ease;
}

body[data-page="chat-sandbox"] .sb-participant-avatar:last-child {
    margin-right: 0;
}

body[data-page="chat-sandbox"] .sb-participant-avatar:hover {
    transform: scale(1.1);
    z-index: 2;
}

body[data-page="chat-sandbox"] .sb-participant-avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 50%;
}

body[data-page="chat-sandbox"] .sb-participant-more {
    background: var(--glass-secondary);
    color: var(--text-tertiary);
    font-size: 0.625em;
    font-family: var(--font-sans);
    font-weight: 700;
    z-index: 0;
}

/* Vertical separator between toolbar sections */
body[data-page="chat-sandbox"] .sb-toolbar-sep {
    width: 1px;
    height: 1.375em;
    background: var(--glass-border);
    flex-shrink: 0;
    margin: 0 0.125em;
}

/* ══════════════════════════════════════════════
   AGENT TOGGLE — iOS-style on/off slider
   ══════════════════════════════════════════════ */

body[data-page="chat-sandbox"] .sb-agent-toggle-wrap {
    display: flex;
    align-items: center;
    gap: 0.375em;
}

body[data-page="chat-sandbox"] .sb-agent-toggle {
    display: flex;
    align-items: center;
    gap: 0.375em;
    cursor: pointer;
    user-select: none;
}

body[data-page="chat-sandbox"] .sb-agent-toggle input[type="checkbox"] {
    position: absolute;
    opacity: 0;
    width: 0;
    height: 0;
    pointer-events: none;
}

body[data-page="chat-sandbox"] .sb-toggle-slider {
    position: relative;
    width: 2.25em;
    height: 1.25em;
    border-radius: 1em;
    background: var(--glass-secondary);
    border: 0.0625em solid var(--glass-border);
    transition: background 0.25s ease, border-color 0.25s ease, box-shadow 0.25s ease;
    flex-shrink: 0;
}

body[data-page="chat-sandbox"] .sb-toggle-slider::after {
    content: '';
    position: absolute;
    top: 0.125em;
    left: 0.125em;
    width: 0.9375em;
    height: 0.9375em;
    border-radius: 50%;
    background: var(--text-tertiary);
    box-shadow: 0 0.0625em 0.25em rgba(0, 0, 0, 0.3);
    transition: transform 0.25s cubic-bezier(0.34, 1.56, 0.64, 1), background 0.25s ease;
}

body[data-page="chat-sandbox"] .sb-agent-toggle input:checked + .sb-toggle-slider {
    background: var(--ios-system-orange);
    border-color: var(--ios-system-orange);
    box-shadow: 0 0 0.5em rgba(var(--ios-orange-rgb), 0.35);
}

body[data-page="chat-sandbox"] .sb-agent-toggle input:checked + .sb-toggle-slider::after {
    transform: translateX(1em);
    background: #fff;
}

body[data-page="chat-sandbox"] .sb-toggle-label {
    font-size: 0.6875em;
    font-family: var(--font-sans);
    font-weight: 500;
    color: var(--text-secondary);
    white-space: nowrap;
}

/* ══════════════════════════════════════════════
   MENTION DROPDOWN — autocomplete list
   ══════════════════════════════════════════════ */

body[data-page="chat-sandbox"] .sb-mention-dropdown {
    position: absolute;
    bottom: calc(100% + 0.375em);
    left: 0;
    right: 0;
    max-height: 12em;
    overflow-y: auto;
    background: var(--glass-primary);
    backdrop-filter: blur(20px) saturate(140%);
    -webkit-backdrop-filter: blur(20px) saturate(140%);
    border: 1px solid var(--glass-border);
    border-radius: 0.75em;
    box-shadow: 0 0.5em 2em rgba(0, 0, 0, 0.18);
    z-index: 100;
    padding: 0.25em;
    display: flex;
    flex-direction: column;
    gap: 0.0625em;
}

body[data-page="chat-sandbox"] .sb-mention-item {
    display: flex;
    align-items: center;
    gap: 0.5em;
    padding: 0.4em 0.625em;
    border-radius: 0.5em;
    cursor: pointer;
    transition: background 0.12s ease;
}

body[data-page="chat-sandbox"] .sb-mention-item:hover,
body[data-page="chat-sandbox"] .sb-mention-item.focused {
    background: var(--glass-hover);
}

body[data-page="chat-sandbox"] .sb-mention-avatar {
    width: 1.5em;
    height: 1.5em;
    border-radius: 50%;
    background: var(--glass-secondary);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.6875em;
    font-weight: 600;
    color: var(--text-primary);
    flex-shrink: 0;
    overflow: hidden;
}

body[data-page="chat-sandbox"] .sb-mention-avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 50%;
}

body[data-page="chat-sandbox"] .sb-mention-name {
    font-size: 0.8125em;
    font-family: var(--font-sans);
    font-weight: 500;
    color: var(--text-primary);
}

/* ══════════════════════════════════════════════
   ADD PARTICIPANTS MODAL
   Overlay + glass card + search + member list
   ══════════════════════════════════════════════ */

body[data-page="chat-sandbox"] .sb-modal-overlay {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.45);
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1000;
    padding: 1.25em;
    box-sizing: border-box;
    animation: sb-modal-fade 0.18s ease;
}

@keyframes sb-modal-fade {
    from { opacity: 0; }
    to   { opacity: 1; }
}

body[data-page="chat-sandbox"] .sb-modal-container {
    width: 100%;
    max-width: 27em;
    max-height: 80vh;
    display: flex;
    flex-direction: column;
    animation: sb-modal-slide 0.2s cubic-bezier(0.34, 1.56, 0.64, 1);
}

@keyframes sb-modal-slide {
    from { transform: translateY(1em) scale(0.97); opacity: 0; }
    to   { transform: translateY(0) scale(1);      opacity: 1; }
}

body[data-page="chat-sandbox"] .sb-modal-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 1em;
}

body[data-page="chat-sandbox"] .sb-modal-title {
    margin: 0;
    font-family: var(--font-serif);
    font-size: 1em;
    font-weight: 600;
    color: var(--text-primary);
}

body[data-page="chat-sandbox"] .sb-modal-close {
    width: 1.875em;
    height: 1.875em;
    border-radius: 50%;
    border: 1px solid var(--glass-border);
    background: transparent;
    color: var(--text-secondary);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    font-size: 1em;
    line-height: 1;
    transition: background 0.15s ease, color 0.15s ease;
}

body[data-page="chat-sandbox"] .sb-modal-close:hover {
    background: var(--glass-hover);
    color: var(--text-primary);
}

body[data-page="chat-sandbox"] .sb-modal-body {
    flex: 1 1 0;
    min-height: 0;
    display: flex;
    flex-direction: column;
    gap: 0.75em;
    overflow: hidden;
}

body[data-page="chat-sandbox"] .sb-modal-search {
    width: 100%;
    padding: 0.5em 0.875em;
    border: 1px solid var(--glass-border);
    border-radius: 0.625em;
    background: var(--glass-secondary);
    color: var(--text-primary);
    font-size: 0.875em;
    font-family: var(--font-sans);
    box-sizing: border-box;
    transition: border-color 0.15s ease;
    outline: none;
}

body[data-page="chat-sandbox"] .sb-modal-search:focus {
    border-color: var(--ios-system-blue);
}

body[data-page="chat-sandbox"] .sb-modal-search::placeholder {
    color: var(--text-quaternary);
}

body[data-page="chat-sandbox"] .sb-member-list {
    flex: 1 1 0;
    min-height: 0;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    gap: 0.125em;
}

body[data-page="chat-sandbox"] .sb-member-list::-webkit-scrollbar {
    width: 0.25em;
}

body[data-page="chat-sandbox"] .sb-member-list::-webkit-scrollbar-track {
    background: transparent;
}

body[data-page="chat-sandbox"] .sb-member-list::-webkit-scrollbar-thumb {
    background: var(--glass-border);
    border-radius: 0.25em;
}

body[data-page="chat-sandbox"] .sb-member-item {
    display: flex;
    align-items: center;
    gap: 0.625em;
    padding: 0.5em 0.625em;
    border-radius: 0.5em;
    cursor: pointer;
    transition: background 0.12s ease;
}

body[data-page="chat-sandbox"] .sb-member-item:hover {
    background: var(--glass-hover);
}

body[data-page="chat-sandbox"] .sb-member-label {
    display: flex;
    align-items: center;
    gap: 0.625em;
    width: 100%;
    cursor: pointer;
}

body[data-page="chat-sandbox"] .sb-member-avatar {
    width: 2em;
    height: 2em;
    border-radius: 50%;
    background: var(--glass-secondary);
    border: 1px solid var(--glass-border);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.6875em;
    font-weight: 600;
    color: var(--text-primary);
    flex-shrink: 0;
    overflow: hidden;
}

body[data-page="chat-sandbox"] .sb-member-avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 50%;
}

body[data-page="chat-sandbox"] .sb-member-info {
    display: flex;
    flex-direction: column;
    gap: 0.125em;
    min-width: 0;
}

body[data-page="chat-sandbox"] .sb-member-name {
    font-size: 0.875em;
    font-family: var(--font-sans);
    font-weight: 500;
    color: var(--text-primary);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

body[data-page="chat-sandbox"] .sb-member-email {
    font-size: 0.75em;
    font-family: var(--font-sans);
    color: var(--text-tertiary);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

body[data-page="chat-sandbox"] .sb-modal-footer {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 0.5em;
    margin-top: 1em;
    padding-top: 0.875em;
    border-top: 1px solid var(--glass-border);
}

/* Modal hidden state — higher specificity (0,3,0) beats .sb-modal-overlay (0,2,0) */
body[data-page="chat-sandbox"] .sb-modal-overlay.sb-hidden {
    display: none;
}

/* Mention dropdown hidden state — same fix */
body[data-page="chat-sandbox"] .sb-mention-dropdown.sb-hidden {
    display: none;
}

/* Orange confirm button for modal */
body[data-page="chat-sandbox"] .sb-btn-orange {
    background: var(--ios-system-orange, #FF9F0A);
    border-color: var(--ios-system-orange, #FF9F0A);
    color: var(--text-on-accent, #fff);
}

body[data-page="chat-sandbox"] .sb-btn-orange:hover {
    filter: brightness(1.1);
}

/* ══════════════════════════════════════════════
   RESPONSIVE — mobile/narrow viewports
   ══════════════════════════════════════════════ */

@media (max-width: 48em) {
    body[data-page="chat-sandbox"] .sb-toolbar {
        padding: 0 0.75em;
        gap: 0.5em;
    }

    body[data-page="chat-sandbox"] .sb-settings-grid {
        grid-template-columns: 1fr 1fr;
    }

    body[data-page="chat-sandbox"] .sb-settings {
        max-height: 20em;
    }

    body[data-page="chat-sandbox"] .sb-meta-inline {
        display: none;
    }

    body[data-page="chat-sandbox"] .sb-token-stats {
        display: none;
    }

    body[data-page="chat-sandbox"] .sb-message {
        max-width: 90%;
    }

    body[data-page="chat-sandbox"] .sb-composer {
        padding: 0.5em 0.75em 0.625em;
    }

    body[data-page="chat-sandbox"] .sb-welcome-title {
        font-size: 1.75em;
    }

    body[data-page="chat-sandbox"] .sb-collab-controls {
        gap: 0.25em;
    }

    body[data-page="chat-sandbox"] .sb-toggle-label {
        display: none;
    }

    body[data-page="chat-sandbox"] .sb-toolbar-sep {
        display: none;
    }
}

/* ───────── Source-document citations (clickable) ───────── */
.chat-sources {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5em;
    margin-top: 0.75em;
    padding-top: 0.6em;
    border-top: 1px solid var(--glass-border);
}
.chat-sources-label {
    font-size: 0.72em;
    color: var(--text-tertiary);
    text-transform: uppercase;
    letter-spacing: 0.04em;
}
.chat-source-chip {
    display: inline-flex;
    align-items: center;
    gap: 0.3em;
    max-width: 18em;
    padding: 0.25em 0.7em;
    border: 1px solid var(--glass-border);
    border-radius: var(--radius-full, 9999px);
    background: var(--glass-secondary);
    color: var(--text-secondary);
    font-size: 0.8em;
    cursor: pointer;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    transition: background 0.15s ease, color 0.15s ease;
}
.chat-source-chip:hover {
    background: var(--glass-hover);
    color: var(--accent-primary);
}
.chat-source-chip:disabled {
    opacity: 0.6;
    cursor: default;
}
