/* Dawn palette + command-card / about-modal vocabulary — a faithful subset of * apps/widget-telegram/src/styles.css so the Vojo AI widget reads as the same * surface as the bridge widgets (same palette, sections, command cards, and * the «about» modal pattern for detailed copy). */ :root { --bg: #181a20; --bg2: #0d0e11; --surface: #21232b; --surface2: #2a2d36; --divider: rgba(255, 255, 255, 0.06); --hairline: rgba(255, 255, 255, 0.08); --text: #e6e6e9; --muted: rgba(230, 230, 233, 0.55); --faint: rgba(230, 230, 233, 0.32); --fleet: #9580ff; --fleet-soft: #a59cff; --green: #7dd3a8; --rose: #c08e7b; --section-pad-x: 40px; } [data-theme='light'] { /* Light theme is intentionally a thin remap. Vojo is dark-default. */ --bg: #f5f5f7; --bg2: #ffffff; --surface: #f0f0f2; --surface2: #e8e8ec; --divider: rgba(0, 0, 0, 0.08); --hairline: rgba(0, 0, 0, 0.1); --text: #1a1a1d; --muted: rgba(26, 26, 29, 0.62); --faint: rgba(26, 26, 29, 0.4); } @media (max-width: 600px) { :root { --section-pad-x: 20px; } } * { box-sizing: border-box; /* Kills the translucent grey overlay iOS/Android WebViews paint over a * tapped element (read as «button stuck on grey»). Web browsers ignore it. */ -webkit-tap-highlight-color: transparent; } html, body, #app { height: 100%; } body { margin: 0; padding: 0; background: var(--bg); color: var(--text); font: 14px/1.45 -apple-system, 'Segoe UI', 'Inter', system-ui, sans-serif; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; } .app { display: flex; flex-direction: column; min-height: 100%; max-width: 960px; margin: 0 auto; } /* The hero (avatar + name + handle + description + three-dots menu) is OWNED * BY THE HOST — see src/app/features/bots/BotShell.tsx. The widget body starts * with the action/privacy section directly. */ /* ── Section ──────────────────────────────────────────────────────── */ .section { padding: 24px var(--section-pad-x) 20px; } .section + .section { padding-top: 4px; } /* Section label — dark-bg pill, uppercase letter-spaced caption. */ .section-label { display: inline-flex; align-items: center; font-size: 13px; line-height: 20px; text-transform: uppercase; letter-spacing: 1.4px; font-weight: 600; color: var(--muted); background: var(--bg2); border: 1px solid var(--divider); border-radius: 8px; padding: 8px 14px; margin: 0 0 14px; white-space: nowrap; user-select: none; } /* ── Command card (action card with lead icon + name + desc + chevron) ─ */ /* Lifted verbatim from the bridge widget so «Добавить в чат» / «Конфиденци- * альность» are pixel-identical to the Telegram login/about cards. */ .command-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-rows: 1fr; gap: 10px; } .command-card { /* The widget runs in an iframe and does NOT inherit the host's * `button { -webkit-appearance: button }` rule, so on iOS/Android WebView a *