/* Persona / advisor flow accents — small chips & primary CTAs only; surfaces stay cream */ .theme-persona { --accent: #2bafed; --accent-dark: #1f96d4; --accent-light: #e5f6fd; --accent-primary: var(--accent); --accent-secondary: #836cda; --accent-gradient: linear-gradient(135deg, #2bafed, #836cda); --sidebar-bg: var(--bg-tertiary); } .theme-advisor { --accent: #a862d0; --accent-dark: #836cda; --accent-light: #f5eaf8; --accent-primary: var(--accent); --accent-secondary: #836cda; --accent-gradient: linear-gradient(135deg, #a862d0, #836cda); --sidebar-bg: var(--bg-tertiary); } /* ── Design tokens: warm cream light mode (shared design language) ───────── */ :root { --bg-primary: #faf7f1; --bg-secondary: #f3eee6; --bg-tertiary: #ebe4d8; --bg-gradient: linear-gradient(165deg, #fbf8f3 0%, #f5efe6 55%, #f0e9df 100%); --text-primary: #1a1714; --text-secondary: #4a453e; --text-tertiary: #6a645c; --text-muted: #6a645c; --accent-primary: #2bafed; --accent-secondary: #836cda; --accent-tertiary: #a862d0; --accent-gradient: linear-gradient(135deg, #2bafed, #a862d0, #836cda); --accent-light: #e5f6fd; --accent: var(--accent-primary); --border-primary: #ddd5c8; --border-muted: #e8e1d6; --card-bg: #ffffff; --card-hover: #f7f3ec; --sidebar-bg: #e8e0d4; --header-bg: #fbf9f5; --shadow-sm: 0 1px 2px rgba(40, 30, 10, 0.06); --shadow-md: 0 4px 10px -2px rgba(40, 30, 10, 0.08), 0 2px 4px -2px rgba(40, 30, 10, 0.05); --shadow-lg: 0 12px 24px -6px rgba(40, 30, 10, 0.12), 0 4px 8px -4px rgba(40, 30, 10, 0.06); --radius: 10px; --focus-ring: 0 0 0 2px var(--card-bg), 0 0 0 4px var(--accent-primary); font-family: 'Inter', system-ui, -apple-system, sans-serif; font-size: 15px; color-scheme: light; } /* Parallel dark theme (opt-in via data-theme="dark" — not auto-enabled) */ [data-theme='dark'] { --bg-primary: #1c1916; --bg-secondary: #24201c; --bg-tertiary: #2e2924; --bg-gradient: linear-gradient(165deg, #1a1714 0%, #221e1a 55%, #2a2520 100%); --text-primary: #f5f0e8; --text-secondary: #c9c2b6; --text-tertiary: #9a9288; --text-muted: #9a9288; --accent-primary: #5bc4f2; --accent-secondary: #a08ee5; --accent-tertiary: #c48be0; --accent-gradient: linear-gradient(135deg, #5bc4f2, #c48be0, #a08ee5); --accent-light: #1a2f3a; --accent: var(--accent-primary); --border-primary: #3d3730; --border-muted: #322e28; --card-bg: #2a2622; --card-hover: #332e29; --sidebar-bg: #161310; --header-bg: #1f1b17; --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.35); --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.4); --shadow-lg: 0 12px 28px rgba(0, 0, 0, 0.5); --focus-ring: 0 0 0 2px var(--card-bg), 0 0 0 4px var(--accent-primary); color-scheme: dark; } *, *::before, *::after { box-sizing: border-box; } body { margin: 0; background: var(--bg-gradient); color: var(--text-primary); line-height: 1.5; min-height: 100vh; font-size: 15px; } a { color: var(--accent-primary); } .btn { display: inline-flex; align-items: center; justify-content: center; gap: 0.4rem; padding: 0.65rem 1.25rem; border-radius: 8px; font-size: 0.9rem; font-weight: 600; cursor: pointer; border: none; font-family: inherit; transition: background 0.15s, transform 0.1s, border-color 0.15s, box-shadow 0.15s; text-decoration: none; } .btn:active { transform: scale(0.98); } .btn:focus-visible { outline: none; box-shadow: var(--focus-ring); } .btn-primary { background: var(--accent-gradient); color: #fff; border: 1px solid transparent; box-shadow: var(--shadow-sm); } .btn-primary:hover { filter: brightness(1.05); } .btn-secondary { background: var(--card-bg); color: var(--text-primary); border: 1.5px solid var(--border-primary); box-shadow: var(--shadow-sm); font-weight: 500; } .btn-secondary:hover { background: var(--card-hover); } .btn-ghost { background: var(--card-bg); color: var(--text-secondary); border: 1px solid var(--border-muted); font-weight: 500; box-shadow: none; } .btn-ghost:hover { background: var(--card-hover); color: var(--text-primary); } /* Auth page — Register actions (quiet surface, not competing accent) */ .btn-auth-register { background: var(--card-bg); color: var(--text-primary); border: 1.5px solid var(--border-primary); box-shadow: var(--shadow-sm); } .btn-auth-register:hover { background: var(--card-hover); filter: none; } .field { margin-bottom: 1rem; } .field label { display: block; font-size: 0.85rem; font-weight: 600; margin-bottom: 0.35rem; } .field-hint { margin: 0 0 0.45rem; font-size: 13px; font-weight: 400; color: var(--text-secondary); line-height: 1.45; } .persona-creativity-field { margin-bottom: 1.35rem; } .persona-creativity-value { margin-bottom: 0.35rem; font-size: 1.1rem; color: var(--text-primary); } .persona-creativity-value .persona-creativity-out-of { font-size: 0.85rem; font-weight: 500; color: var(--text-secondary); margin-left: 0.15rem; } .persona-creativity-slider { display: block; width: 100%; height: 8px; margin: 0.5rem 0 0.35rem; border-radius: 4px; accent-color: var(--accent-primary); cursor: pointer; } .persona-creativity-ticks { display: flex; justify-content: space-between; gap: 0.75rem; font-size: 0.72rem; color: var(--text-secondary); line-height: 1.35; margin-bottom: 0.75rem; } .persona-creativity-info { margin: 0; padding: 0.75rem 0.85rem; font-size: 0.82rem; line-height: 1.5; color: var(--text-secondary); background: var(--bg-secondary); border: 1px solid var(--border-primary); border-radius: 8px; border-left: 3px solid var(--accent-primary); } .field input, .field textarea, .field select { padding: 0.6rem 0.85rem; border: 1.5px solid var(--border-primary); border-radius: 8px; font-size: 0.9rem; font-family: inherit; box-sizing: border-box; background: var(--card-bg); color: var(--text-primary); box-shadow: var(--shadow-sm); } .field select { width: 100%; } /* Text fields: full width by default; intrinsic sizing when supported (grow with content, cap at container). */ .field input:not([type='range']):not([type='checkbox']):not([type='radio']):not([type='hidden']):not([type='button']):not([type='submit']):not([type='reset']):not([type='file']):not([type='color']), .field textarea { width: 100%; min-width: 0; overflow-wrap: anywhere; word-break: break-word; } .field textarea { min-height: 88px; resize: vertical; } @supports (field-sizing: content) { .field input:not([type='range']):not([type='checkbox']):not([type='radio']):not([type='hidden']):not([type='button']):not([type='submit']):not([type='reset']):not([type='file']):not([type='color']), .field textarea { field-sizing: content; width: auto; min-width: 100%; max-width: 100%; } .field textarea { min-height: unset; min-block-size: 88px; resize: none; } } .field input:focus, .field textarea:focus, .field select:focus { outline: none; border-color: var(--accent-primary); box-shadow: var(--focus-ring); } .field input:focus-visible, .field textarea:focus-visible, .field select:focus-visible { outline: none; box-shadow: var(--focus-ring); } /* Same as chat: html.aj-hide-pointer from useHideCaretWhileTyping */ html.aj-hide-pointer .field input:not([type='range']):not([type='checkbox']):not([type='radio']):not([type='hidden']):not([type='button']):not([type='submit']):not([type='reset']):not([type='file']):not([type='color']), html.aj-hide-pointer .field textarea { caret-color: transparent; } .card { background: var(--card-bg); border: 1px solid var(--border-primary); border-radius: var(--radius); padding: 1.25rem; box-shadow: var(--shadow-md); } .layout-main { display: flex; flex-direction: column; min-height: 100vh; padding-bottom: 5rem; } .layout-body { flex: 1 1 0; min-height: 0; display: flex; flex-direction: column; } .layout-main:has(.wizard-layout), .layout-main:has(.experiment-aj), .layout-main:has(.experiment-advisor-layout) { height: 100dvh; overflow: hidden; padding-bottom: 0; } .layout-main:has(.wizard-layout) .layout-body, .layout-main:has(.experiment-aj) .layout-body, .layout-main:has(.experiment-advisor-layout) .layout-body { overflow: hidden; } .save-warning { position: fixed; bottom: 0; left: 0; right: 0; z-index: 1000; background: #fef3c7; border-top: 1px solid #fde68a; color: #92400e; padding: 0.75rem 1rem; text-align: center; font-size: 0.9rem; } .save-warning a { font-weight: 600; } /* Guest save bar is position:fixed; z-index:1000 — reserve space so bottom UI (experiment chat composer, etc.) stays above it, not hidden underneath. */ .layout-main--save-banner:has(.experiment-aj) .experiment-aj.aj-app { padding-bottom: calc(3.75rem + env(safe-area-inset-bottom, 0px)); } .layout-main--save-banner:has(.experiment-advisor-layout) .experiment-advisor-layout { padding-bottom: calc(3.75rem + env(safe-area-inset-bottom, 0px)); } /* ── Site header ─────────────────────────────────────────────────────────── Neon logo + brand lines first, then text-link nav, then account. */ .header-bar { --header-ink: var(--text-primary); --header-muted: var(--text-muted); --header-line: var(--border-primary); --header-soft: var(--bg-secondary); --header-surface: var(--header-bg); --header-size: 1rem; --header-weight: 500; --header-weight-strong: 600; /* Shared metrics: brand name + nav links + user trigger */ --header-chip-font-size: 1.125rem; --header-chip-line-height: 1.25; --header-chip-pad-y: 0.4rem; --header-chip-pad-x: 0.75rem; --header-kicker-size: 0.78rem; --header-kicker-line-height: 1.2; /* Kicker + gap + name — logo is ~92% of this stack */ --header-brand-stack-height: calc( var(--header-kicker-size) * var(--header-kicker-line-height) + 0.05rem + var(--header-chip-font-size) * var(--header-chip-line-height) ); display: flex; /* Baseline-align brand title text with nav/chip labels (not block centers) */ align-items: baseline; gap: 1rem; padding: 0.65rem 1.25rem; background: var(--header-bg); border-bottom: 1px solid var(--border-primary); position: sticky; top: 0; z-index: 50; flex-shrink: 0; flex-wrap: wrap; font-family: inherit; font-size: var(--header-size); font-weight: var(--header-weight); color: var(--header-ink); letter-spacing: 0; } .header-bar-brand { display: flex; flex-direction: column; align-items: flex-start; gap: 0.15rem; min-width: 0; flex: 1 1 12rem; } .header-brand-lockup { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.35rem 0.55rem; min-width: 0; } .header-brand-logo-link { flex-shrink: 0; line-height: 0; text-decoration: none; color: inherit; } .header-brand-logo-link:focus-visible { outline: none; box-shadow: var(--focus-ring); border-radius: 4px; } .header-brand-logo { /* Almost as tall as kicker + name; bottom sits on brand-name baseline */ height: calc(var(--header-brand-stack-height) * 0.92); width: auto; display: block; object-fit: contain; } .header-brand { /* Kicker is out-of-flow so the brand name is the flex item's first baseline */ position: relative; display: block; text-decoration: none; color: var(--header-ink); min-width: 0; /* Reserve space for absolutely positioned kicker above the name */ padding-top: calc( var(--header-kicker-size) * var(--header-kicker-line-height) + 0.05rem ); line-height: var(--header-chip-line-height); font-family: inherit; } .header-brand:hover .header-brand-name { color: var(--header-ink); opacity: 0.82; } .header-brand-kicker { position: absolute; top: 0; left: 0; font-size: var(--header-kicker-size); font-weight: var(--header-weight); letter-spacing: 0.04em; text-transform: uppercase; color: var(--header-muted); line-height: var(--header-kicker-line-height); font-family: inherit; } .header-brand-name { display: block; font-family: inherit; font-size: var(--header-chip-font-size); font-weight: var(--header-weight-strong); color: var(--header-ink); letter-spacing: -0.01em; line-height: var(--header-chip-line-height); } .header-maker { display: inline-flex; align-items: baseline; gap: 0.3rem; flex-shrink: 0; padding: 0; color: var(--header-muted); text-decoration: none; font-family: inherit; font-size: 0.85rem; font-weight: var(--header-weight); letter-spacing: 0; line-height: var(--header-chip-line-height); transition: color 0.15s ease; } .header-maker:hover { color: var(--header-ink); } .header-maker:focus-visible { outline: none; box-shadow: var(--focus-ring); border-radius: 4px; } .header-maker-label { text-transform: lowercase; letter-spacing: 0.02em; } .header-maker-name { font-weight: var(--header-weight-strong); white-space: nowrap; } .header-page-context { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.35rem 0.5rem; margin: 0; max-width: 100%; line-height: 1.3; } .header-page-context-label { font-size: 0.78rem; font-weight: var(--header-weight); letter-spacing: 0.04em; text-transform: uppercase; color: var(--header-muted); } .header-page-context-value { font-size: var(--header-size); font-weight: var(--header-weight-strong); color: var(--header-ink); min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .header-bar-nav { display: flex; align-items: baseline; justify-content: center; gap: 0.1rem 0.35rem; flex: 0 1 auto; min-width: 0; padding: 0; background: transparent; border: none; border-radius: 0; box-sizing: border-box; } .header-bar-nav .header-nav-link { display: inline-flex; align-items: center; justify-content: center; gap: 0.25rem; padding: var(--header-chip-pad-y) var(--header-chip-pad-x); border: none; border-radius: 0; background: transparent; color: var(--header-muted); text-decoration: none; font-family: inherit; font-size: var(--header-chip-font-size); font-weight: var(--header-weight-strong); letter-spacing: -0.01em; line-height: var(--header-chip-line-height); white-space: nowrap; box-sizing: border-box; box-shadow: none; cursor: pointer; appearance: none; transition: color 0.15s ease; } .header-bar-nav .header-nav-link:hover, .header-bar-nav .header-nav-trigger--open { color: var(--header-ink); background: transparent; text-decoration: underline; text-underline-offset: 0.22em; text-decoration-thickness: 1.5px; } .header-bar-nav .header-nav-link--current { background: transparent; color: var(--header-ink); box-shadow: none; text-decoration: underline; text-underline-offset: 0.22em; text-decoration-thickness: 2px; } .header-bar-nav .header-nav-link:focus-visible { outline: none; box-shadow: var(--focus-ring); border-radius: 4px; } .header-nav-dropdown { position: relative; flex: 0 1 auto; min-width: 0; } .header-nav-caret { display: inline-block; font-size: 0.7em; line-height: 1; opacity: 0.75; transform: translateY(-0.05em); } .header-nav-menu { position: absolute; left: 0; top: calc(100% + 2px); min-width: 16.5rem; max-width: min(22rem, 92vw); padding: 0.35rem 0; background: var(--card-bg, #fff); border: 1px solid var(--header-line); border-radius: 8px; box-shadow: var(--shadow-md); z-index: 60; } .header-nav-menu-item { display: block; width: 100%; padding: 0.5rem 1rem; color: var(--header-ink); text-decoration: none; font-family: inherit; font-size: 0.95rem; font-weight: var(--header-weight); line-height: 1.35; white-space: normal; box-sizing: border-box; } .header-nav-menu-item:hover, .header-nav-menu-item:focus-visible { background: var(--header-soft); outline: none; } .header-bar-tools { display: flex; align-items: center; justify-content: flex-end; gap: 0.65rem; margin-left: auto; flex-shrink: 0; } .user-menu-wrap { position: relative; flex-shrink: 0; } .user-menu-trigger { display: inline-flex; align-items: center; gap: 0.4rem; padding: var(--header-chip-pad-y) 0.85rem var(--header-chip-pad-y) var(--header-chip-pad-x); border-radius: 999px; border: 1px solid color-mix(in srgb, var(--accent-primary) 32%, var(--header-line)); background: var(--accent-light); cursor: pointer; appearance: none; font-family: inherit; font-size: var(--header-chip-font-size); font-weight: var(--header-weight-strong); color: var(--header-ink); letter-spacing: -0.01em; line-height: var(--header-chip-line-height); box-sizing: border-box; box-shadow: var(--shadow-sm); } .user-menu-trigger:hover { border-color: color-mix(in srgb, var(--accent-primary) 48%, var(--header-line)); background: color-mix(in srgb, var(--accent-primary) 16%, var(--accent-light)); } .user-menu-trigger:focus-visible { outline: none; box-shadow: var(--focus-ring); } .user-menu-name { max-width: 10rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .user-menu-kebab { display: inline-flex; align-items: center; justify-content: center; font-size: 1.125rem; line-height: 1; color: var(--header-muted); } @media (max-width: 860px) { .header-bar { --header-chip-font-size: 1.05rem; --header-chip-pad-y: 0.45rem; --header-chip-pad-x: 0.45rem; gap: 0.65rem; padding: 0.55rem 0.85rem; } .header-bar-nav { order: 3; flex: 1 1 100%; justify-content: stretch; align-items: stretch; gap: 0.15rem; } .header-bar-nav > .header-nav-link, .header-nav-dropdown { flex: 1 1 0; } .header-bar-nav .header-nav-link { width: 100%; padding: var(--header-chip-pad-y) var(--header-chip-pad-x); font-size: var(--header-chip-font-size); } .header-nav-menu { left: 0; right: 0; min-width: 0; width: 100%; } .user-menu-trigger { font-size: var(--header-chip-font-size); padding: var(--header-chip-pad-y) 0.7rem var(--header-chip-pad-y) 0.75rem; } } @media (max-width: 520px) { .header-maker-label { display: none; } .header-page-context-label { display: none; } } /* Legacy class hooks (if referenced elsewhere) */ .header-bar-left, .header-bar-center, .header-bar-right { display: contents; } .header-brand-accent { /* superseded by .header-brand */ } .user-dropdown { position: absolute; /* Right-align to trigger so the panel stays in the viewport */ left: auto; right: 0; top: calc(100% + 4px); min-width: 260px; max-width: min(20rem, calc(100vw - 1rem)); background: #fff; border: 1px solid var(--border-primary); border-radius: 8px; box-shadow: var(--shadow-md); padding: 0.35rem 0; z-index: 60; box-sizing: border-box; } .user-dropdown button { display: block; width: 100%; text-align: left; padding: 0.5rem 1rem; border: none; background: none; cursor: pointer; font-size: 0.88rem; } .user-dropdown button:hover { background: var(--bg-secondary); } .user-dropdown .danger { color: #b91c1c; } .user-dropdown button:disabled { cursor: not-allowed; } .user-dropdown-link:hover { background: var(--bg-secondary); } .user-dropdown-divider { height: 1px; margin: 0.35rem 0.75rem; background: var(--border-primary); } .user-dropdown-speech { padding: 0 0 0.25rem; } .user-dropdown-speech-trigger { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; font-weight: inherit; color: inherit; } .user-dropdown-speech-trigger svg { flex-shrink: 0; opacity: 0.65; transition: transform 0.2s ease; } .user-dropdown-speech-chevron--open { transform: rotate(180deg); } .user-dropdown-speech-body { padding: 0 0.75rem 0.65rem; max-height: min(70vh, 28rem); overflow: auto; } .user-dropdown-sample-actions { display: flex; flex-direction: column; gap: 0.2rem; padding-top: 0.25rem; } .user-dropdown-sample-action { width: 100%; text-align: left; padding: 0.45rem 0.5rem; font-size: 0.88rem; font-weight: inherit; font-family: inherit; color: inherit; background: transparent; border: none; border-radius: 0.35rem; cursor: pointer; } .user-dropdown-sample-action:hover { background: var(--bg-secondary); } .user-dropdown-sample-action--danger { color: var(--danger-fg, #b91c1c); } .user-dropdown-sample-action--danger:hover { background: var(--danger-bg-soft, rgba(185, 28, 28, 0.08)); } .speech-settings-panel { display: flex; flex-direction: column; gap: 0.75rem; padding-top: 0.35rem; } .speech-settings-unavailable { margin: 0; font-size: 0.82rem; color: var(--text-secondary); } .speech-settings-checkbox { display: flex; align-items: flex-start; gap: 0.5rem; font-size: 0.86rem; cursor: pointer; line-height: 1.35; } .speech-settings-checkbox input { margin-top: 0.15rem; } .speech-settings-hint { margin: 0; font-size: 0.72rem; line-height: 1.4; color: var(--text-secondary); } .speech-settings-field { display: flex; flex-direction: column; gap: 0.35rem; } .speech-settings-label { font-size: 0.78rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.04em; color: var(--text-secondary); } .speech-settings-select { width: 100%; padding: 0.4rem 0.5rem; font-size: 0.86rem; border: 1px solid var(--border-primary); border-radius: 6px; background: #fff; } .speech-settings-stepper { display: inline-flex; align-items: center; gap: 0.35rem; } .speech-settings-step-btn { display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; padding: 0; border: 1px solid var(--border-primary); border-radius: 6px; background: #fff; cursor: pointer; color: var(--text-secondary); } .speech-settings-step-btn:hover:not(:disabled) { background: var(--bg-secondary); } .speech-settings-step-btn:disabled { opacity: 0.4; cursor: not-allowed; } .speech-settings-step-value { min-width: 2.5rem; text-align: center; font-size: 0.86rem; font-weight: 600; font-variant-numeric: tabular-nums; } .speech-settings-speed { display: flex; flex-wrap: wrap; gap: 0.35rem; } .speech-settings-speed-btn { padding: 0.35rem 0.65rem; font-size: 0.82rem; font-weight: 600; border: 1px solid var(--border-primary); border-radius: 6px; background: #fff; cursor: pointer; color: var(--text-secondary); } .speech-settings-speed-btn:hover { background: var(--bg-secondary); } .speech-settings-speed-btn--active { border-color: var(--accent-primary); background: var(--accent-light); color: var(--text-primary); } .modal-overlay { position: fixed; inset: 0; background: rgba(40, 30, 10, 0.4); display: flex; align-items: center; justify-content: center; z-index: 2000; padding: 1rem; } .modal-box { background: var(--card-bg); border: 1px solid var(--border-primary); border-radius: 12px; max-width: 440px; width: 100%; max-height: 90vh; overflow: auto; padding: 1.25rem; box-shadow: var(--shadow-lg); } .modal-box h2 { margin: 0 0 1rem; font-size: 1.15rem; } .modal-box--profile { max-width: 480px; } .profile-modal-lead { margin: 0 0 1rem; font-size: 0.88rem; color: var(--text-secondary); line-height: 1.45; } .profile-modal-details { margin: 0 0 1rem; display: grid; gap: 0.85rem; } .profile-modal-row { display: flex; flex-direction: column; gap: 0.2rem; } .profile-modal-dt { font-size: 0.72rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; color: var(--text-secondary); } .profile-modal-dd { margin: 0; font-size: 0.95rem; color: var(--text-primary); line-height: 1.4; word-break: break-word; } .profile-modal-dd--mono { font-family: ui-monospace, 'Cascadia Code', 'Segoe UI Mono', monospace; font-size: 0.82rem; } .profile-modal-hint { margin: 0 0 1rem; font-size: 0.82rem; color: var(--text-secondary); line-height: 1.45; } .landing-hero { max-width: 900px; margin: 0 auto; padding: 2.5rem 1.25rem 2rem; text-align: center; } .landing-hero h1 { font-size: clamp(1.75rem, 4vw, 2.35rem); margin-bottom: 0.75rem; line-height: 1.2; } .landing-subheading { margin: 0 0 0.65rem; font-size: clamp(1.1rem, 2.5vw, 1.35rem); font-weight: 700; letter-spacing: 0.02em; line-height: 1.3; } .landing-subheading a { color: var(--text-primary); text-decoration: none; } .landing-subheading a:hover { text-decoration: underline; text-underline-offset: 3px; color: var(--accent-primary); } .landing-hero .lead { font-size: 1.05rem; color: var(--text-secondary); max-width: 720px; margin: 0 auto 1.25rem; } .landing-auth-cta { display: flex; flex-wrap: wrap; gap: 0.75rem; justify-content: center; align-items: stretch; width: min(100%, 22rem); margin-left: auto; margin-right: auto; margin-bottom: 0.5rem; } .landing-auth-cta .btn { flex: 1 1 9rem; justify-content: center; min-width: 0; } .benefit-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 1rem; max-width: 960px; margin: 0 auto 3rem; padding: 0 1.25rem; } .landing-hero .benefit-grid--hero { margin-top: 0.5rem; margin-bottom: 1.5rem; } .benefit-card { background: var(--card-bg); border: 1px solid var(--border-primary); border-radius: var(--radius); padding: 1.25rem; box-shadow: var(--shadow-md); text-align: left; cursor: pointer; transition: transform 0.15s, border-color 0.15s, box-shadow 0.15s; text-decoration: none; color: inherit; display: block; } .benefit-card:hover { transform: translateY(-2px); border-color: var(--border-primary); box-shadow: var(--shadow-lg); background: var(--card-hover); } .benefit-card h3 { margin: 0 0 0.5rem; font-size: 1.05rem; color: var(--text-primary); } .benefit-card p { margin: 0; font-size: 0.88rem; color: var(--text-secondary); } .section { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem; } .section h2 { font-size: 1.35rem; margin-bottom: 0.75rem; } .section p { color: var(--text-secondary); } .section.project-flow-details { scroll-margin-top: 5rem; } #stage-name.project-flow-details { margin-top: 0.75rem; padding-top: 2.25rem; border-top: 1px solid var(--border-primary); } .placeholder-shot { background: linear-gradient(135deg, #e5e7eb, #f3f4f6); border-radius: var(--radius); min-height: 180px; display: flex; align-items: center; justify-content: center; color: var(--text-secondary); font-size: 0.9rem; margin: 1rem 0; } .steps-row { display: flex; flex-wrap: wrap; gap: 0.75rem; margin: 1rem 0; } .steps-row a { padding: 0.5rem 0.9rem; background: var(--bg-secondary); border-radius: 8px; text-decoration: none; font-size: 0.88rem; color: var(--text-primary); border: 1px solid var(--border-primary); } .steps-row a:hover { border-color: var(--accent-primary); } .cta-block { max-width: 720px; margin: 2rem auto; padding: 1.5rem; border-radius: var(--radius); border: 2px dashed var(--border-primary); text-align: center; scroll-margin-top: 5rem; } .cta-block h2 { margin-top: 0; } .cta-buttons { display: flex; flex-wrap: wrap; gap: 0.75rem; align-items: center; justify-content: center; margin-top: 1rem; } .cta-buttons-or { font-size: 0.9rem; font-weight: 500; color: var(--text-secondary); user-select: none; } .footer-site { flex-shrink: 0; text-align: center; padding: 2rem 1rem; color: var(--text-secondary); font-size: 0.85rem; border-top: 1px solid var(--border-primary); background: rgba(255, 255, 255, 0.6); } .footer-site p { margin: 0; } .footer-site a { color: inherit; text-decoration: underline; } /* Compact footer pinned to bottom of experiment side columns */ .footer-site--column { flex-shrink: 0; margin-top: auto; padding: 0.75rem 0.5rem; font-size: 0.72rem; line-height: 1.35; text-align: left; background: transparent; } .wizard-layout { display: flex; flex: 1 1 0; min-height: 0; } .wizard-sidebar { width: 240px; background: var(--sidebar-bg); color: var(--text-primary); padding: 1.25rem 0.75rem; flex-shrink: 0; border-right: 1px solid var(--border-primary); } .wizard-sidebar h2 { font-size: 1.125rem; font-weight: 700; margin: 0 0 1rem; padding: 0 0.75rem; color: var(--text-primary); } .wizard-sidebar-actions { margin-top: 1.5rem; padding: 0 0.75rem; display: flex; flex-direction: column; gap: 0.5rem; } .wizard-sidebar-new-btn { background: var(--card-bg); border: 1px dashed var(--border-primary); border-radius: 6px; color: var(--text-secondary); font-size: 0.78rem; padding: 0.45rem 0.6rem; cursor: pointer; text-align: left; box-shadow: var(--shadow-sm); transition: background 0.15s, border-color 0.15s; } .wizard-sidebar-new-btn:hover { background: var(--card-hover); border-color: var(--text-tertiary); color: var(--text-primary); } .theme-advisor .wizard-sidebar-new-btn { color: var(--text-secondary); } .wizard-sidebar-link { font-size: 0.75rem; color: var(--text-secondary); text-decoration: none; opacity: 1; } .wizard-sidebar-link:hover { color: var(--accent-primary); } .theme-advisor .wizard-sidebar-link { color: var(--text-secondary); } .wizard-nav-item { padding: 0.5rem 0.75rem; border-radius: 8px; font-size: 0.84rem; margin-bottom: 4px; cursor: pointer; color: var(--text-secondary); font-weight: 500; } .wizard-nav-item:hover { background: var(--card-hover); color: var(--text-primary); } .wizard-nav-item.active { background: var(--card-bg); color: var(--text-primary); font-weight: 600; box-shadow: var(--shadow-sm); border: 1px solid var(--border-primary); } .wizard-main { flex: 1; min-height: 0; overflow-y: auto; padding: 1.5rem 1.5rem 4rem; max-width: 820px; background: transparent; } .wizard-subheading { font-size: 1.125rem; font-weight: 700; margin: 1.5rem 0 0.5rem; color: var(--text-primary); opacity: 1; } .chat-panel { display: flex; flex-direction: column; height: min(70vh, 560px); border: 1px solid var(--border-primary); border-radius: var(--radius); background: var(--card-bg); overflow: hidden; box-shadow: var(--shadow-md); } /* Interactive Q&A — cream-aligned bubble shell */ .iqa-chat { --iqa-muted: var(--text-muted); --iqa-bubble-assistant: var(--bg-secondary); --iqa-border: var(--border-primary); --iqa-shadow: var(--shadow-md); } .iqa-chat .iqa-messages { flex: 1; overflow-y: auto; min-height: 0; padding: 20px 10px; background: linear-gradient(180deg, #e8f4fa 0%, #f5f7f4 100%); } .iqa-chat .iqa-msg-row { display: flex; align-items: flex-end; gap: 10px; margin-bottom: 16px; max-width: 960px; margin-left: auto; margin-right: auto; box-sizing: border-box; } .iqa-chat .iqa-msg-row:not(.user) { padding-right: 35%; justify-content: flex-end; } .iqa-chat .iqa-msg-row.user { padding-left: 35%; justify-content: flex-start; } .iqa-chat .iqa-bubble-wrap { max-width: 100%; position: relative; z-index: 0; } .iqa-chat .iqa-bubble-name { font-size: 11px; color: var(--iqa-muted); margin-bottom: 4px; padding: 0 4px; } .iqa-chat .iqa-msg-row.user .iqa-bubble-name { text-align: right; } .iqa-chat .iqa-msg-row:not(.user) .iqa-bubble-name { text-align: left; } .iqa-chat .iqa-bubble { padding: 12px 16px; border-radius: 16px; line-height: 1.55; font-size: 14px; border: 1px solid var(--iqa-border); background: var(--iqa-bubble-assistant); box-shadow: var(--iqa-shadow); display: flex; flex-direction: column; align-items: stretch; gap: 0.5rem; } .iqa-chat .iqa-msg-row:not(.user) .iqa-bubble { text-align: left; border-bottom-left-radius: 4px; } .iqa-chat .iqa-msg-row.user .iqa-bubble { text-align: left; border-radius: 16px; border-bottom-right-radius: 4px; background: var(--accent-gradient, linear-gradient(135deg, var(--accent), #836cda)); color: #fff; border-color: transparent; } .iqa-chat .iqa-bubble-body { white-space: pre-wrap; word-break: break-word; } .iqa-chat .iqa-typing { display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: var(--accent-primary, #2bafed); animation: iqa-pulse 1s ease-in-out infinite; } @keyframes iqa-pulse { 0%, 100% { opacity: 0.35; } 50% { opacity: 1; } } .chat-messages { flex: 1; overflow-y: auto; padding: 1rem; } .chat-bubble { max-width: 85%; margin-bottom: 0.75rem; padding: 0.65rem 0.9rem; border-radius: 12px; font-size: 0.9rem; line-height: 1.45; display: flex; flex-direction: column; align-items: stretch; gap: 0.5rem; } .chat-bubble-body { white-space: pre-wrap; word-break: break-word; } .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } .message-tts-bar { margin-top: 0.15rem; padding-top: 0.45rem; border-top: 1px solid rgba(0, 0, 0, 0.06); } .message-tts-buttons { display: flex; flex-wrap: wrap; align-items: center; gap: 0.35rem 0.5rem; } .message-tts-speed-btn { width: auto; min-width: 40px; padding: 0 6px; } .message-tts-speed-label { font-size: 11px; font-weight: 700; line-height: 1; font-variant-numeric: tabular-nums; } @keyframes message-tts-spin { to { transform: rotate(360deg); } } .message-tts-loading-spin { animation: message-tts-spin 0.8s linear infinite; } .message-tts-btn { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; padding: 0; border: 1px solid var(--border-primary); border-radius: 6px; background: var(--card-bg); color: var(--text-secondary); cursor: pointer; box-shadow: var(--shadow-sm); transition: background 0.15s, box-shadow 0.15s, color 0.15s; } .message-tts-btn:hover { background: var(--card-hover); box-shadow: var(--shadow-sm); } .message-tts-btn:focus-visible { outline: none; box-shadow: var(--focus-ring); } .message-tts-btn:disabled { opacity: 0.45; cursor: not-allowed; } .message-tts-btn-active { color: #b91c1c; border-color: #fecaca; background: #fef2f2; } .message-tts-btn-small { width: 28px; height: 28px; } .message-tts-stepper { display: inline-flex; align-items: center; gap: 0.2rem; padding: 0 0.15rem; } .message-tts-value { font-size: 0.72rem; font-weight: 600; color: var(--text-secondary); min-width: 2.1rem; text-align: center; font-variant-numeric: tabular-nums; } .message-tts-stepper--pitch { align-self: flex-start; } .tts-pitch-header { display: flex; flex-direction: column; gap: 0.2rem; margin-bottom: 0.35rem; } .wizard-sidebar-tts .tts-pitch-name { font-size: 0.68rem; font-weight: 700; color: var(--text-primary); text-transform: uppercase; letter-spacing: 0.03em; } .wizard-sidebar-tts .tts-pitch-explainer { font-size: 0.62rem; font-weight: 400; color: var(--text-muted); line-height: 1.35; max-width: 16rem; } .wizard-sidebar-tts-pitch { margin-top: 0.65rem; } .wizard-sidebar-tts { padding: 0.75rem 0.75rem 0; margin-top: 0.5rem; border-top: 1px solid var(--border-primary); } .wizard-sidebar-tts-title { margin: 0 0 0.35rem; font-size: 0.85rem; font-weight: 700; color: var(--text-primary); } .wizard-sidebar-tts-hint { margin: 0 0 0.5rem; font-size: 0.7rem; line-height: 1.35; color: var(--text-muted); } .wizard-sidebar-tts-label { display: flex; flex-direction: column; gap: 0.3rem; font-size: 0.72rem; font-weight: 600; color: var(--text-secondary); } .wizard-sidebar-tts-select { width: 100%; font-size: 0.75rem; padding: 0.4rem 0.45rem; border-radius: 6px; border: 1px solid var(--border-primary); background: var(--card-bg); color: var(--text-primary); box-shadow: var(--shadow-sm); } .wizard-sidebar-tts-select option { color: var(--text-primary); background: var(--card-bg); } .tooltip-wrap { position: relative; } .chat-bubble.user { margin-left: auto; background: var(--accent-light, #e5f6fd); border: 1px solid var(--border-primary); } .chat-bubble.agent { margin-right: auto; background: var(--bg-secondary); } .chat-input-row { display: flex; gap: 0.5rem; padding: 0.75rem; border-top: 1px solid var(--border-primary); align-items: flex-end; } .chat-input-row textarea { flex: 1; min-height: 44px; max-height: 120px; padding: 0.5rem 0.75rem; border-radius: 8px; border: 1px solid var(--border-primary); font-family: inherit; resize: vertical; } /* Same mechanism as Experiment page: html.aj-hide-pointer from useHideCaretWhileTyping */ html.aj-hide-pointer .chat-input-row textarea, .chat-input-row textarea.chat-textarea-hide-caret { caret-color: transparent; } .icon-btn { padding: 0.5rem 0.65rem; border-radius: 8px; border: 1px solid var(--border-primary); background: #fff; cursor: pointer; } .icon-btn:disabled { opacity: 0.5; } .workshop-page { max-width: 900px; margin: 0 auto; padding: 1.5rem 1.25rem 4rem; } .workshop-inner { width: 100%; } .workshop-title { font-size: 1.85rem; font-weight: 700; margin: 0 0 0.75rem; text-align: center; color: var(--text-primary); letter-spacing: -0.02em; line-height: 1.25; } .workshop-lead { color: var(--text-secondary); font-weight: 400; font-size: 15px; margin: 0 0 1rem; text-align: center; } /* Match creations cards: solid edge + card surface (not dashed CTA chrome) */ .workshop-cta.cta-block { margin-top: 0; max-width: none; background: var(--card-bg); border: 1px solid var(--border-primary); box-shadow: var(--shadow-md); padding: 1.25rem; } .workshop-cta.cta-block h2 { margin: 0 0 0.5rem; font-size: 1.25rem; font-weight: 700; letter-spacing: -0.01em; line-height: 1.35; color: var(--text-primary); } .workshop-experiment { display: flex; justify-content: center; margin: 1.25rem 0 1.75rem; } .workshop-experiment-link.btn-primary { border: none; box-shadow: var(--shadow-md); } .theme-persona .workshop-experiment-link.btn-primary, .theme-advisor .workshop-experiment-link.btn-primary { border: none; box-shadow: var(--shadow-md); } .workshop-experiment-link.btn-primary:hover { filter: brightness(1.05); } /* No creations yet — “View my …” preview state */ .creations-view-mine-disabled { opacity: 0.48; cursor: not-allowed; pointer-events: none; background: var(--bg-secondary) !important; color: var(--text-secondary) !important; border: 2.5px solid var(--border-primary) !important; } .creations-view-mine-disabled:hover { filter: none; } .manage-creations-page .manage-creations-lead { text-align: center; max-width: 40rem; margin-left: auto; margin-right: auto; } .manage-creations-back { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 0.35rem 0.75rem; margin: 0 0 1.5rem; font-size: 0.95rem; } .manage-creations-back a { color: var(--text-link, var(--accent-primary, #2563eb)); text-decoration: none; } .manage-creations-back a:hover { text-decoration: underline; } .manage-creations-back-sep { color: var(--text-secondary); user-select: none; } .manage-creations-block { margin-bottom: 1.25rem; padding: 1rem 1.15rem; } .manage-creations-heading { margin: 0 0 0.85rem; font-size: 1.1rem; } .manage-creations-empty { margin: 0; color: var(--text-secondary); font-size: 0.95rem; } .manage-creations-toolbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0.75rem; margin-bottom: 0.85rem; } .manage-creations-select-all { display: inline-flex; align-items: center; gap: 0.45rem; cursor: pointer; font-size: 0.92rem; user-select: none; } .manage-creations-actions { display: flex; flex-wrap: wrap; gap: 0.45rem; } .manage-creations-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.35rem; } .manage-creations-row { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0.5rem 1rem; padding: 0.5rem 0.55rem; border-radius: 0.4rem; border: 1px solid var(--border-primary); background: var(--bg-secondary); } .manage-creations-row-label { display: flex; align-items: center; gap: 0.5rem; flex: 1; min-width: 0; cursor: pointer; font-weight: 500; } .manage-creations-row-title { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .manage-creations-badge { flex-shrink: 0; font-size: 0.72rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.04em; padding: 0.12rem 0.4rem; border-radius: 0.25rem; background: var(--bg-tertiary, rgba(0, 0, 0, 0.06)); color: var(--text-secondary); } .manage-creations-row-link { flex-shrink: 0; font-size: 0.88rem; color: var(--text-link, var(--accent-primary, #2563eb)); text-decoration: none; } .manage-creations-row-link:hover { text-decoration: underline; } .creations-stack { display: flex; flex-direction: column; gap: 1.25rem; margin-top: 0.5rem; } .creations-section { margin-top: 0; text-align: center; } /* Same size as Create a Persona / Create an Advisor Panel h2 */ .creations-section-title { margin: 0 0 1rem; font-size: 1.25rem; font-weight: 700; letter-spacing: -0.01em; line-height: 1.35; text-align: center; color: var(--text-primary); } .creations-buttons { display: flex; flex-wrap: wrap; gap: 0.65rem; justify-content: center; } /* Quiet interactive chips — pale accent fill + wider accent border */ .creations-buttons .btn-secondary { background: color-mix(in srgb, var(--accent-primary) 7%, var(--card-bg)); border: 2.5px solid color-mix(in srgb, var(--accent-primary) 42%, var(--border-primary)); box-shadow: var(--shadow-sm); color: var(--text-primary); font-size: 0.9rem; font-weight: 600; } .creations-buttons .btn-secondary:hover { background: color-mix(in srgb, var(--accent-primary) 12%, var(--card-bg)); border-color: color-mix(in srgb, var(--accent-primary) 55%, var(--border-primary)); box-shadow: var(--shadow-md); } .creations-buttons .btn-primary { font-size: 0.9rem; font-weight: 600; } .creations-manage { display: flex; justify-content: center; margin-top: 1.15rem; padding-top: 0.15rem; } .creations-section-title + .creations-manage { margin-top: 0; } .creations-manage .btn-secondary { border: 1.5px solid var(--border-primary); } .summary-page { max-width: 640px; } .summary-back { margin: 0 0 1rem; font-size: 0.9rem; } .summary-back a { color: var(--accent-primary); text-decoration: none; font-weight: 600; } .summary-back a:hover { text-decoration: underline; } .summary-switcher { margin-bottom: 1.25rem; } .summary-select { width: 100%; max-width: 420px; padding: 0.55rem 0.75rem; border-radius: 8px; border: 1.5px solid var(--border-primary); font-size: 0.95rem; font-family: inherit; background: #fff; } .summary-select:focus { outline: none; border-color: var(--accent-primary); box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent-primary) 18%, transparent); } .summary-card-title { margin: 0 0 1rem; font-size: 1.35rem; } .summary-fields { margin: 0; } .summary-field { display: grid; grid-template-columns: minmax(0, 140px) 1fr; gap: 0.5rem 1rem; padding: 0.65rem 0; border-bottom: 1px solid var(--border-primary); align-items: start; } .summary-field:last-of-type { border-bottom: none; } .summary-field dt { margin: 0; font-size: 0.8rem; font-weight: 700; color: var(--text-secondary); text-transform: uppercase; letter-spacing: 0.03em; } .summary-field dd { margin: 0; font-size: 0.95rem; white-space: pre-wrap; word-break: break-word; } .summary-field--full { grid-template-columns: 1fr; } .summary-field--full dt { margin-bottom: 0.35rem; } .summary-advisor-list { margin: 0; padding-left: 1.15rem; } .summary-actions { margin-top: 1.25rem; padding-top: 1rem; border-top: 1px solid var(--border-primary); } @media (max-width: 768px) { .wizard-layout { flex-direction: column; } .wizard-sidebar { width: 100%; display: flex; overflow-x: auto; gap: 0.5rem; padding: 0.75rem; } .wizard-nav-item { white-space: nowrap; } .summary-field { grid-template-columns: 1fr; gap: 0.25rem; } } /* Persona prompt build (global) */ .persona-prompt-build-banner { position: fixed; bottom: 0; left: 0; right: 0; z-index: 10000; padding: 0.75rem 1rem; background: var(--accent-gradient); color: #fff; text-align: center; font-size: 0.95rem; font-weight: 500; box-shadow: 0 -4px 24px rgba(0, 0, 0, 0.18); } .persona-prompt-build-warn { margin-top: 0.75rem; padding: 0.65rem 0.75rem; border-radius: 8px; background: rgba(234, 179, 8, 0.12); border: 1px solid rgba(234, 179, 8, 0.35); color: var(--text-primary); font-size: 0.9rem; } .btn-persona-prompt-build { background: var(--accent-gradient); color: #fff !important; border: none; font-weight: 600; box-shadow: var(--shadow-sm); } .theme-persona .wizard-main .btn.btn-persona-prompt-build, .theme-persona .btn.btn-persona-prompt-build { background: var(--accent-gradient) !important; color: #fff !important; border: none !important; box-shadow: var(--shadow-md); } .theme-persona .wizard-main .btn.btn-persona-prompt-build:hover:not(:disabled), .theme-persona .btn.btn-persona-prompt-build:hover:not(:disabled) { filter: brightness(1.05); box-shadow: var(--shadow-md); } .btn-persona-prompt-build:hover:not(:disabled) { filter: brightness(1.05); } .btn-persona-prompt-build:disabled { opacity: 0.55; cursor: not-allowed; box-shadow: none; } /* ── Advisor Panel Build Button ─────────────────────────────────────── */ .btn-advisor-panel-build { background: var(--accent-gradient); color: #fff !important; border: none; font-weight: 600; box-shadow: var(--shadow-sm); } .theme-advisor .wizard-main .btn.btn-advisor-panel-build, .theme-advisor .btn.btn-advisor-panel-build { background: var(--accent-gradient) !important; color: #fff !important; border: none !important; box-shadow: var(--shadow-md); } .theme-advisor .wizard-main .btn.btn-advisor-panel-build:hover:not(:disabled), .theme-advisor .btn.btn-advisor-panel-build:hover:not(:disabled) { filter: brightness(1.05); box-shadow: var(--shadow-md); } .btn-advisor-panel-build:hover:not(:disabled) { filter: brightness(1.06); } .btn-advisor-panel-build:disabled { opacity: 0.55; cursor: not-allowed; box-shadow: none; } /* ── Advisor Panel Build Banner ─────────────────────────────────────── */ .advisor-panel-build-banner { position: fixed; bottom: 0; left: 0; right: 0; z-index: 9999; padding: 0.75rem 1rem; background: var(--accent-gradient); color: #fff; text-align: center; font-size: 0.95rem; font-weight: 500; box-shadow: 0 -4px 24px rgba(0, 0, 0, 0.18); } /* ── Experiment with Advisor Panels ─────────────────────────────────── */ .experiment-advisor-layout { display: flex; flex: 1 1 0; min-height: 0; overflow: hidden; } .experiment-advisor-main { flex: 1; min-width: 0; padding: 2rem 2.5rem; overflow-y: auto; } .experiment-advisor-empty { text-align: center; padding: 3rem 1rem; color: var(--text-secondary); } .experiment-advisor-empty p { margin-bottom: 1rem; } .experiment-advisor-toolbar { display: flex; align-items: center; gap: 0.75rem; flex-wrap: wrap; } /* Sidebar: stack full-width Discard / Refresh buttons */ .experiment-advisor-toolbar--sidebar { flex-direction: column; align-items: stretch; gap: 0.5rem; } .experiment-advisor-toolbar--sidebar .btn { width: 100%; justify-content: center; } .experiment-advisor-toolbar--sidebar .experiment-advisor-saved { text-align: center; padding-top: 0.15rem; } .experiment-advisor-saved { font-size: 0.85rem; color: #22c55e; font-weight: 600; } .experiment-advisor-preview-wrap { display: flex; flex-direction: column; gap: 0.5rem; } /* ── Right sidebar ─────────────────────────────────────────────────── */ .experiment-advisor-sidebar { width: 240px; min-width: 200px; background: var(--bg-secondary); border-left: 1px solid var(--border-primary); padding: 1.5rem 1rem; display: flex; flex-direction: column; gap: 0.5rem; overflow: hidden; min-height: 0; } .experiment-advisor-sidebar-scroll { flex: 1 1 0; min-height: 0; overflow-x: hidden; overflow-y: auto; overscroll-behavior: contain; display: flex; flex-direction: column; gap: 0.5rem; } .experiment-advisor-sidebar-controls { padding-bottom: 0.75rem; margin-bottom: 0.5rem; border-bottom: 1px solid var(--border-primary); } /* Typography shared with .experiment-aj-page-title in experiment-askjerry.css */ .experiment-advisor-sidebar-page-title { margin: 0 0 0.75rem; color: var(--text-primary); } .experiment-advisor-sidebar-subtitle { font-size: 0.88rem; font-weight: 600; margin-top: 0.25rem; margin-bottom: 0.25rem; color: var(--text-secondary); } .experiment-advisor-sidebar-empty { font-size: 0.82rem; color: var(--text-tertiary); padding: 0.25rem 0.5rem; } .experiment-advisor-panel-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.15rem; } .experiment-advisor-panel-item { display: block; width: 100%; text-align: left; background: none; border: 2px solid transparent; padding: 0.4rem 0.5rem; border-radius: 6px; font-size: 0.85rem; color: var(--text-primary); cursor: pointer; transition: background 0.15s, border-color 0.15s; } .experiment-advisor-panel-item:hover { background: var(--card-hover); } .experiment-advisor-panel-item--active { background: var(--card-bg); border-color: color-mix(in srgb, var(--accent-tertiary) 55%, var(--border-primary)); box-shadow: var(--shadow-sm); font-weight: 600; } .btn-danger { background: #dc2626; color: #fff; border: none; } .btn-danger:hover:not(:disabled) { background: #b91c1c; } /* ── Iframe preview ────────────────────────────────────────────────── */ .experiment-advisor-iframe-wrap { position: relative; border-radius: 10px; overflow: hidden; border: 1px solid var(--border-primary); background: var(--card-bg); box-shadow: var(--shadow-md); } .experiment-advisor-iframe { display: block; width: 100%; height: 600px; border: none; } .experiment-advisor-iframe-loading { position: absolute; inset: 0; z-index: 2; display: flex; align-items: center; justify-content: center; gap: 0.5rem; background: rgba(255, 255, 255, 0.85); color: var(--text-secondary); font-size: 0.9rem; } /* ── Field editors (persona-experiment accordion pattern) ─────────── */ .experiment-advisor-edit-block { margin-top: 0.75rem; display: flex; flex-direction: column; gap: 8px; } .experiment-advisor-fields { padding: 10px 12px 12px; background: var(--lc-inset-surface, var(--bg-secondary)); } .experiment-advisor-fields-subhead { margin: 1rem 0 0.35rem; font-size: 0.85rem; font-weight: 700; color: var(--text-primary); } .experiment-advisor-nested-block { margin: 0.5rem 0 0.75rem; padding: 0.75rem; border: 1px solid var(--border-primary); border-radius: 8px; background: var(--card-bg, var(--bg-primary)); display: grid; gap: 8px; } .experiment-advisor-nested-title { margin: 0; font-size: 0.8rem; font-weight: 600; color: var(--text-secondary); } .experiment-advisor-color-row { display: flex; gap: 0.75rem; align-items: center; flex-wrap: wrap; } .experiment-advisor-color-row input[type='text'] { max-width: 10rem; } .experiment-advisor-persona-checklist { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.4rem; } .experiment-advisor-persona-checklist label { display: flex; align-items: flex-start; gap: 0.55rem; cursor: pointer; font-size: 0.85rem; font-weight: 500; color: var(--text-primary); } .experiment-advisor-prompt-textarea { font-family: ui-monospace, 'Cascadia Code', 'Fira Code', Consolas, monospace; font-size: 0.85rem; min-height: 12rem; } /* ── Document upload section ──────────────────────────────────────── */ .doc-upload-section { margin-top: 1.75rem; padding-top: 1.25rem; border-top: 1px solid var(--border-primary); } .doc-upload-section h3 { margin: 0 0 0.25rem; font-size: 1.05rem; } .doc-upload-dropzone { border: 2px dashed var(--border-primary); border-radius: 10px; padding: 1.5rem 1rem; text-align: center; color: var(--text-secondary); transition: border-color 0.15s, background 0.15s; user-select: none; display: flex; flex-direction: column; align-items: center; gap: 0.25rem; } .doc-upload-dropzone:hover { border-color: var(--accent-primary); background: var(--card-hover); } .doc-upload-dropzone--active { border-color: var(--accent-primary); background: var(--accent-light); } .doc-upload-dropzone-icon { font-size: 2rem; line-height: 1; margin-bottom: 0.15rem; opacity: 0.6; } .doc-upload-dropzone-text { margin: 0; font-size: 0.92rem; font-weight: 500; color: var(--text-primary); } .doc-upload-dropzone-text code { font-size: 0.85em; } .doc-upload-dropzone-or { font-size: 0.78rem; color: var(--text-secondary); margin: 0.15rem 0; } .doc-upload-browse-btn { margin-top: 0.1rem; } .doc-upload-dropzone-limits { margin: 0.35rem 0 0; font-size: 0.76rem; color: var(--text-secondary); } .doc-upload-error { margin: 0.5rem 0 0; padding: 0.5rem 0.75rem; background: rgba(220, 38, 38, 0.08); border: 1px solid rgba(220, 38, 38, 0.25); border-radius: 6px; color: #dc2626; font-size: 0.85rem; } .doc-upload-usage { margin: 0.75rem 0 0.35rem; font-size: 0.82rem; color: var(--text-secondary); } .doc-upload-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.3rem; } .doc-upload-item { display: flex; align-items: center; gap: 0.5rem; padding: 0.35rem 0.5rem; background: var(--bg-secondary, rgba(0, 0, 0, 0.03)); border-radius: 6px; font-size: 0.85rem; } .doc-upload-item-icon { flex-shrink: 0; font-size: 1rem; line-height: 1; opacity: 0.55; } .doc-upload-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .doc-upload-size { flex-shrink: 0; color: var(--text-secondary); font-size: 0.78rem; } .doc-upload-delete { flex-shrink: 0; background: none; border: none; cursor: pointer; color: var(--text-secondary); font-size: 1.1rem; line-height: 1; padding: 0 0.25rem; border-radius: 4px; transition: color 0.15s, background 0.15s; } .doc-upload-delete:hover { color: #dc2626; background: rgba(220, 38, 38, 0.08); } /* ── Workshop tutorial ─────────────────────────────────────────────── */ .tutorial-launcher-btn--floating { position: fixed; bottom: 1.25rem; left: 1.25rem; z-index: 1100; box-shadow: 0 4px 18px rgba(0, 0, 0, 0.18); } .tutorial-launcher-sidebar-wrap { margin-bottom: 0.75rem; } .tutorial-launcher-btn--sidebar { width: 100%; } .tutorial-spotlight { position: fixed; inset: 0; z-index: 850; pointer-events: none; } .tutorial-spotlight-hole { position: absolute; border-radius: 10px; box-shadow: 0 0 0 9999px rgba(15, 23, 42, 0.52); outline: 3px solid color-mix(in srgb, var(--accent-primary) 95%, transparent); outline-offset: 2px; } .tutorial-panel { position: fixed; left: 0; right: 0; bottom: 0; z-index: 900; max-height: min(42vh, 360px); overflow: auto; background: var(--bg-primary, #fff); border-top: 1px solid color-mix(in srgb, var(--accent-primary) 35%, transparent); box-shadow: 0 -8px 32px rgba(0, 0, 0, 0.12); padding: 0.85rem 1.25rem 1rem; } .tutorial-panel-spacer { height: min(42vh, 360px); flex-shrink: 0; pointer-events: none; } .tutorial-panel-header { display: flex; align-items: center; justify-content: space-between; gap: 0.75rem; margin-bottom: 0.65rem; } .tutorial-panel-tabs { display: flex; gap: 0.35rem; } .tutorial-panel-tab { border: 1px solid color-mix(in srgb, var(--accent-primary) 25%, transparent); background: transparent; border-radius: 999px; padding: 0.3rem 0.85rem; font-size: 0.82rem; cursor: pointer; color: var(--text-secondary); } .tutorial-panel-tab--active { background: color-mix(in srgb, var(--accent-primary) 12%, transparent); color: var(--text-primary); font-weight: 600; } .tutorial-panel-close { border: none; background: transparent; font-size: 1.45rem; line-height: 1; cursor: pointer; color: var(--text-secondary); padding: 0.15rem 0.45rem; border-radius: 6px; } .tutorial-panel-close:hover { background: rgba(0, 0, 0, 0.06); color: var(--text-primary); } .tutorial-panel-body { font-size: 0.92rem; } .tutorial-panel-title { margin: 0 0 0.45rem; font-size: 1.05rem; } .tutorial-overview-section { margin-bottom: 0.75rem; } .tutorial-overview-section h4 { margin: 0 0 0.25rem; font-size: 0.92rem; } .tutorial-overview-section p { margin: 0; color: var(--text-secondary); line-height: 1.45; } .tutorial-step-progress { margin: 0 0 0.25rem; font-size: 0.78rem; color: var(--text-secondary); text-transform: uppercase; letter-spacing: 0.04em; } .tutorial-step-body { margin: 0 0 0.75rem; color: var(--text-secondary); line-height: 1.45; } .tutorial-resume-hint { margin: 0 0 0.85rem; padding: 0.65rem 0.75rem; border-radius: 8px; background: color-mix(in srgb, var(--accent-primary) 8%, transparent); border: 1px solid color-mix(in srgb, var(--accent-primary) 20%, transparent); } .tutorial-resume-heading { margin: 0 0 0.35rem; font-size: 0.82rem; font-weight: 600; } .tutorial-resume-link { display: inline-block; margin-right: 0.75rem; font-size: 0.85rem; color: var(--accent-primary); } .tutorial-method-choice { margin-bottom: 0.85rem; } .tutorial-method-label { margin: 0 0 0.45rem; font-weight: 500; } .tutorial-method-buttons { display: flex; flex-wrap: wrap; gap: 0.5rem; } .tutorial-panel-actions { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-top: 0.5rem; } .tutorial-panel-actions--walkthrough { justify-content: space-between; align-items: center; } .tutorial-panel-actions-right { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-left: auto; } @media (max-width: 640px) { .tutorial-panel-actions--walkthrough { flex-direction: column; align-items: stretch; } .tutorial-panel-actions-right { margin-left: 0; justify-content: flex-end; } } /* -- Accessibility & motion polish ----------------------------------------- */ a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible, summary:focus-visible, [role='button']:focus-visible, .header-nav-link:focus-visible, .header-brand:focus-visible, .header-brand-logo-link:focus-visible, .header-maker:focus-visible { outline: none; box-shadow: var(--focus-ring); } @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; scroll-behavior: auto !important; } .message-tts-loading-spin, .aj-spin, .aj-typing { animation: none !important; } } .skeleton { background: linear-gradient( 90deg, var(--bg-secondary) 0%, var(--bg-tertiary) 50%, var(--bg-secondary) 100% ); background-size: 200% 100%; animation: skeleton-shimmer 1.2s ease-in-out infinite; border-radius: 6px; } @keyframes skeleton-shimmer { 0% { background-position: 100% 0; } 100% { background-position: -100% 0; } } @media (prefers-reduced-motion: reduce) { .skeleton { animation: none; background: var(--bg-tertiary); } } .empty-state { padding: 1.5rem 1rem; text-align: center; color: var(--text-secondary); font-size: 0.95rem; line-height: 1.5; background: var(--card-bg); border: 1px dashed var(--border-primary); border-radius: var(--radius); box-shadow: var(--shadow-sm); }