/* Query builder — edit/create (typography from .cb-page in variables.css) */ .qb-root { max-width: 1200px; margin: 0 auto; } .qb-text-link { color: #64748b; font-size: var(--cb-font-topnav, 14px); font-weight: 600; text-decoration: none; } .qb-text-link:hover { color: #0f172a; text-decoration: underline; } .qb-flash { border-radius: 8px; padding: 10px 14px; font-size: var(--cb-font-topnav, 14px); font-weight: 600; } .qb-flash-success { background: #ecfdf5; border: 1px solid #a7f3d0; color: #065f46; } .qb-flash-icon { font-size: 20px !important; color: #059669; } .qb-meta-panel .qb-label-caps, .qb-label-caps { display: block; font-size: 10px; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; color: #94a3b8; margin-bottom: 6px; } .qb-label-caps-tiny { display: block; font-size: 9px; font-weight: 800; letter-spacing: 0.06em; text-transform: uppercase; color: #94a3b8; margin-bottom: 4px; } .qb-vars-heading { font-size: 11px; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; color: #64748b; } .qb-add-from-sql { font-size: 11px !important; font-weight: 700 !important; letter-spacing: 0.04em; text-transform: uppercase; color: #2563eb !important; } .qb-vars-column { background: #fafbfc !important; border-color: #e5e7eb !important; } .qb-var-card { background: #fff; border: 1px solid #e5e7eb; border-radius: 12px; padding: 14px; margin-bottom: 12px; box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04); } .qb-var-card:last-child { margin-bottom: 0; } .qb-var-title { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: var(--cb-font-topnav, 14px); font-weight: 700; color: #0f172a; } .qb-var-details summary { cursor: pointer; list-style: none; } .qb-var-details summary::-webkit-details-marker { display: none; } .qb-var-details summary::before { content: "▸ "; font-size: 10px; color: #94a3b8; } .qb-var-details[open] summary::before { content: "▾ "; } /* Dark SQL IDE */ .qb-sql-stack { border-radius: 10px; overflow: auto; border: 1px solid #1e293b; box-shadow: 0 4px 24px rgba(15, 23, 42, 0.12); } .qb-sql-ide-head { background: #1e293b; color: #94a3b8; font-size: 10px; font-weight: 800; letter-spacing: 0.12em; text-transform: uppercase; padding: 8px 14px; border-bottom: 1px solid #334155; } .qb-sql-ide-body { background: #0f172a; } /* Light text on dark field; Bootstrap .form-control:focus sets body color (higher specificity) — keep contrast in all states */ .cb-page textarea.form-control.qb-sql-textarea-dark, .qb-sql-textarea-dark { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: var(--cb-font-topnav, 14px); line-height: 1.55; color: #e2e8f0 !important; -webkit-text-fill-color: #e2e8f0; caret-color: #f1f5f9; background: #0f172a !important; border: none !important; border-radius: 0 !important; min-height: 280px; resize: vertical; padding: 14px 16px; pointer-events: auto; -webkit-user-select: text; user-select: text; } .qb-sql-textarea-dark::placeholder { color: #64748b !important; -webkit-text-fill-color: #64748b; } .cb-page textarea.form-control.qb-sql-textarea-dark:focus, .cb-page textarea.form-control.qb-sql-textarea-dark:focus-visible, .qb-sql-textarea-dark:focus, .qb-sql-textarea-dark:focus-visible { color: #e2e8f0 !important; -webkit-text-fill-color: #e2e8f0; box-shadow: none !important; outline: 2px solid rgba(59, 130, 246, 0.45); outline-offset: -2px; } .qb-sql-textarea-dark::selection { background: rgba(59, 130, 246, 0.35); color: #f8fafc; } .qb-sql-footnote { font-size: var(--cb-font-sidebar, 13px); } .qb-sql-footnote code { color: #7c3aed; font-size: inherit; } /* Runner strip */ .qb-runner-strip { border-top: 1px solid #e5e7eb; background: #f8fafc; } .qb-runner-strip--dark { background: #1e293b; border-top-color: #334155; } .qb-runner-strip--dark .qb-runner-meta { color: rgba(248, 250, 252, 0.55) !important; } .qb-runner-strip--dark .btn-secondary { background: #334155; border-color: #475569; color: #f1f5f9; } .qb-runner-strip--dark .btn-secondary:hover { background: #475569; border-color: #64748b; color: #fff; } .qb-conn-status { display: inline-flex; align-items: center; gap: 8px; font-size: 11px; font-weight: 800; letter-spacing: 0.06em; text-transform: uppercase; color: #64748b; } .qb-runner-strip--dark .qb-conn-status { color: rgba(248, 250, 252, 0.75); } .qb-conn-dot { width: 8px; height: 8px; border-radius: 50%; background: #cbd5e1; flex-shrink: 0; } .qb-conn-dot--on { background: #22c55e; box-shadow: 0 0 0 3px rgba(34, 197, 94, 0.35); } /* Preview */ .qb-preview-title { font-size: var(--cb-font-topnav, 14px); font-weight: 700; letter-spacing: -0.01em; color: #0f172a; } .qb-preview-thead th { font-size: 10px; font-weight: 800; letter-spacing: 0.06em; text-transform: uppercase; color: #64748b; background: #f8fafc !important; border-bottom: 1px solid #e5e7eb; } .qb-preview-td { font-size: var(--cb-font-sidebar, 13px); vertical-align: middle; } .qb-preview-td--strong { font-weight: 700; color: #0f172a; } .qb-cell-badge { display: inline-block; font-size: 10px; font-weight: 700; letter-spacing: 0.03em; text-transform: uppercase; padding: 4px 10px; border-radius: 999px; background: #e0f2fe; color: #0369a1; border: 1px solid #bae6fd; } .qb-preview-tabs .nav-link { font-size: var(--cb-font-sidebar, 13px); font-weight: 700; color: #64748b; border: none; border-bottom: 2px solid transparent; border-radius: 0; } .qb-preview-tabs .nav-link.active { color: #0f172a; border-bottom-color: #0f172a; background: transparent; } .qb-tab-panel { display: block; } .qb-tab-panel.qb-tab-panel--hidden { display: none !important; } .qb-preview-meta { font-size: var(--cb-font-sidebar, 13px); color: #64748b; } .qb-preview-table-wrap { max-height: 420px; overflow: auto; } .qb-preview-table tbody tr:nth-child(even) { background: #fafafa; } .qb-pagination-bar { border-top: 1px solid #e5e7eb; padding: 12px 14px; background: #fff; font-size: var(--cb-font-sidebar, 13px); } .qb-page-num--active { background: #0f172a !important; border-color: #0f172a !important; color: #fff !important; font-weight: 700; min-width: 34px; } .qb-page-indicator { color: #0f172a; } .qb-preview-card--fullscreen { position: fixed; inset: 52px 12px 12px 12px; z-index: 1030; max-height: none !important; display: flex; flex-direction: column; } .qb-preview-card--fullscreen .qb-preview-table-wrap { max-height: none; flex: 1; min-height: 0; } @media (max-width: 991.98px) { .qb-vars-column { border-right: none !important; border-bottom: 1px solid #e5e7eb; } }