---
title: "ChatGPT Ürün Feed Gereksinimleri: Uygulamalı 2026 Rehberi"
description: "ChatGPT ürün feed’i için gerekli dokuz alanı, kabul edilen değerleri, başvuru yolunu ve yayın öncesi kalite kontrollerini öğrenin."
source_url: "https://brantial.ai/tr/blog/chatgpt-urun-feed-gereksinimleri-2026/"
lang: "tr"
updated: "2026-09-15T00:00:00.000Z"
---

Rehber 15 Eylül 2026

# ChatGPT Ürün Feed Gereksinimleri: Uygulamalı 2026 Rehberi

ChatGPT ürün feed’i için gerekli dokuz alanı, kabul edilen değerleri, başvuru yolunu ve yayın öncesi kalite kontrollerini öğrenin.

## Öne Çıkanlar: ChatGPT Ürün Feed Gereksinimleri

5

- OpenAI’ın kararlı keşif feed’i, her satılabilir ürün veya varyant için dokuz alan ister: ürün kimliği, başlık, açıklama, URL, marka, satıcı, görsel URL’si, stok ve fiyat.
- Her satır gerçekten satın alınabilen tek bir ürünü veya varyantı temsil etmeli; URL’ler açık, kimlik ise kalıcı olmalıdır.
- Canlı dosya yükleme entegrasyonunda Stable şema kullanılmalı; Draft sürümü planlama ve geri bildirim içindir.
- OpenAI’a göre Shopify ve Etsy katalogları hâlihazırda entegredir; diğer satıcılar ürün feed’i paylaşmak için başvurabilir.
- Geçerli bir feed güncellik ve veri kontrolünü artırır, ancak her alışveriş prompt’unda görünme garantisi vermez.

[Atiye Berika Ertaş Proje Koordinatörü](https://brantial.ai/tr/yazarlar/atiye-berika-ertas/) 8 dk okuma

Paylaş [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fbrantial.ai%2Ftr%2Fblog%2Fchatgpt-urun-feed-gereksinimleri-2026%2F) [X](https://x.com/intent/post?text=ChatGPT%20%C3%9Cr%C3%BCn%20Feed%20Gereksinimleri%3A%20Uygulamal%C4%B1%202026%20Rehberi%20https%3A%2F%2Fbrantial.ai%2Ftr%2Fblog%2Fchatgpt-urun-feed-gereksinimleri-2026%2F) [Facebook](https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fbrantial.ai%2Ftr%2Fblog%2Fchatgpt-urun-feed-gereksinimleri-2026%2F)

[ChatGPT ile özetle](https://chatgpt.com/?q=Brantial%20i%C3%A7eri%C4%9Fini%20%C3%B6zetle%3A%20https%3A%2F%2Fbrantial.ai%2Ftr%2Fblog%2Fchatgpt-urun-feed-gereksinimleri-2026%2F)

![ChatGPT Ürün Feed Gereksinimleri: Uygulamalı 2026 Rehberi](https://brantial.ai/images/blog/chatgpt-product-feed-requirements-2026/cover-tr.webp) ![ChatGPT Ürün Feed Gereksinimleri: Uygulamalı 2026 Rehberi](https://brantial.ai/images/blog/chatgpt-product-feed-requirements-2026/cover-tr-dark.webp)

ChatGPT için ürün feed’i hazırlıyorsanız önce OpenAI’ın keşif amacıyla zorunlu tuttuğu dokuz alanı tamamlayın: `item_id`, `title`, `description`, `url`, `brand`, `seller_name`, `image_url`, `availability` ve `price`. Müşterinin gerçekten satın alabileceği her ürün veya varyant için ayrı bir satır gönderin.

Kısa yanıt bu. İşin asıl önemli kısmıysa teknik olarak geçerli bir kayıtla doğru bir ürün kaydının aynı şey olmaması. Başlığı belirsiz, görseli başka renge ait veya sayfadaki fiyatı değişmiş bir satır doğrulamadan geçse bile müşteriye iyi bir sonuç sunmaz. Bu rehber hem teknik gereksinimleri hem de onların arkasındaki kalite kontrollerini anlatıyor.

OpenAI ürün feed dokümantasyonu gelişmeye devam ediyor. Entegrasyonu kurarken ve güncellerken son karar kaynağı olarak [resmî Stable ürün feed referansını](https://developers.openai.com/commerce/specs/file-upload/products) kullanın.

## ChatGPT Ürün Feed’i Nedir?

ChatGPT ürün feed’i, ürün keşfi için OpenAI ile paylaşılabilen yapılandırılmış katalogdur. Satıcının satıştaki ürünleri hakkında güncel ve kendi kontrolündeki bilgiyi taşır. Fiyat, stok, varyant, görsel, ürün özelliği, kargo, iade ve yorum verileri feed üzerinden tanımlanabilir.

Feed’in görevi ürün keşfini desteklemektir; ödeme sisteminin kendisi değildir. OpenAI’ın güncel açıklamasına göre satın alma işlemi satıcının sitesi veya uygulamasında tamamlanır. Reklam ve ödeme entegrasyonlarının ek gereksinimleri bulunduğu için bu alanları ilgili dokümanı kontrol etmeden keşif feed’ine eklemeyin.

Dokümantasyonda iki şema görünümü bulunuyor:

- **Stable:** Dosya yükleme entegrasyonları için desteklenen kararlı sürüm.
- **Draft:** Planlama ve geri bildirim amacıyla yayımlanan, henüz production entegrasyonunda desteklenmeyen taslak.

Bugün çalışan bir feed kuracaksanız Stable sürümünü esas alın ve kullandığınız sürümü teknik dokümanınıza kaydedin.

## Zorunlu Dokuz ChatGPT Ürün Feed Alanı

Zorunlu alanların her biri geçerli bir değer içermelidir. Boş hücre, gereksinimi karşılamaz.

| Alan | İçermesi gereken bilgi | Örnek |
| --- | --- | --- |
| `item_id` | Ürün veya varyantın değişmeyen kimliği | `TRAIL-BLK-42` |
| `title` | Gerekliyse varyantı da belirten açık ürün adı | `Arazi koşu ayakkabısı: siyah, 42 numara` |
| `description` | Ürünü gerçek bilgilerle anlatan düz metin | `Kauçuk tabanlı, suya dayanıklı arazi ayakkabısı.` |
| `url` | Tercihen ilgili varyantı açan, herkese açık ürün URL’si | `https://example.com/ayakkabi?renk=siyah&numara=42` |
| `brand` | Ürün sayfasında görünen marka | `Northline` |
| `seller_name` | Teklifi sunan satıcı | `Northline Outdoor` |
| `image_url` | Bu varyanta ait doğrudan ve açık görsel URL’si | `https://example.com/images/trail-black.jpg` |
| `availability` | Desteklenen stok değerlerinden biri | `in_stock` |
| `price` | Ana para birimindeki tutar ve para birimi kodu | `2499.00 TRY` |

OpenAI, başlıkların kısa; açıklamaların düz metin olmasını, başlıkta 150 ve açıklamada 5.000 karakteri hedef üst sınır olarak öneriyor. Bu değerleri doldurulması gereken kota gibi görmeyin. Ürünü 65 karakterde açıkça anlatan bir başlık, gereksiz yere uzatılmış 150 karakterden daha kullanışlıdır.

## `item_id` Nasıl Belirlenmeli?

Ürün kimliği feed içinde benzersiz ve kalıcı olmalıdır. Bir kimlik bir ürün veya varyant için kullanıldıktan sonra ileride başka bir ürüne verilmemelidir.

Sağlıklı bir kimlik politikasının üç kuralı vardır:

1. Başlıktan türetilen geçici değer yerine katalog veya stok sisteminin ürettiği kimliği kullanın.
2. Başlık, fiyat ve açıklama değişse de kimliği koruyun.
3. Satın alınabilen her varyanta ayrı kimlik verin.

İşletmenizde SKU değerlerinin daima benzersiz ve kalıcı olduğu garanti ediliyorsa SKU bu amaçla kullanılabilir. SKU’lar zaman zaman değiştiriliyor veya yeniden kullanılıyorsa ayrı bir sabit katalog kimliği tercih edin.

## Feed Başlığı ve Açıklaması Nasıl Yazılmalı?

Başlığı, kişi sayfayı açmadan tam olarak hangi ürüne baktığını anlayacak şekilde yazın. Gerekliyse marka, ürün türü ve varyantı ayıran özelliği kullanın. Kampanya mesajlarından, kelime listelerinden ve “en iyi” gibi kaydın doğrulayamayacağı iddialardan kaçının.

Açıklama şu sorulara yanıt vermeli:

- Ürün nedir?
- Kim veya hangi kullanım için tasarlanmıştır?
- Ayırt edici malzeme, ölçü ve teknik özellikleri nelerdir?
- Uyumluluk bilgisi ve önemli sınırları nelerdir?
- Satın almaya neler dahildir?

Gerçek bilgi kullanın. İki ürünü karşılaştıran kişi, “üstün kalite” ifadesinin farklı biçimlerinden çok somut farklara ihtiyaç duyar. Daha ayrıntılı editoryal kontrol için [ChatGPT ürün feed optimizasyonu](https://brantial.ai/tr/blog/chatgpt-urun-feed-optimizasyonu/) rehberini kullanabilirsiniz.

## Hangi Stok Değerleri Kabul Ediliyor?

Stable şemada şu değerler destekleniyor:

- `in_stock`
- `out_of_stock`
- `pre_order`
- `backorder`
- `unknown`

Stok alanı boş bırakılırsa veya tanınmayan bir değer gönderilirse satır reddedilir. `unknown` yalnızca stok durumu gerçekten bilinmiyorsa kullanılmalıdır; ürünün satın alınabildiğini ifade etmez.

Değer, açılış sayfasıyla da eşleşmelidir. Feed `in_stock` derken seçilen beden sipariş edilemiyorsa mesele yalnızca teknik bir hata değildir. Kullanıcı deneyimini bozar ve katalog verisine duyulan güveni azaltır.

## Fiyat Nasıl Biçimlendirilmeli?

Tutarı ana para biriminde ve para birimi koduyla gönderin: `79.99 USD` veya `2499.00 TRY`. Yalnızca para birimi sembolü kullanmayın; sistemin pazara bakarak para birimini tahmin edeceğini varsaymayın.

Her yüklemeden önce şunları karşılaştırın:

- feed fiyatı,
- seçili varyantın sayfadaki fiyatı,
- para birimi,
- indirimli ve normal fiyat,
- vergi gösterimi,
- kampanyanın geçerli olduğu tarihler.

Fiyat ve stok, katalogdaki diğer alanlardan daha hızlı değişir. Bu nedenle doğru güncelleme sıklığı “günde bir kez yeter” gibi genel bir kuralla değil, kataloğunuzun değişim hızıyla belirlenmelidir.

## Varyantlar Nasıl Gösterilmeli?

Satın alınabilen her varyantı ayrı satır olarak gönderin. OpenAI, varyantlar arasındaki ilişkiyi korumak için `group_id`, `listing_has_variations`, `variant_dict` ve `offer_id` gibi isteğe bağlı alanlar sunuyor.

Örneğin siyah 42 numara ile siyah 43 numara ayakkabıların ayrı `item_id`, stok ve gerekiyorsa fiyat değerleri olmalıdır. Ana ürünü tanımlayan ortak bir grup kimliği kullanabilirler. URL ve görsel mümkün olduğunda satırdaki varyantı seçmeli veya açıkça temsil etmelidir.

Müşteri ana ürünü doğrudan satın alamıyorsa tek fiyat taşıyan bir üst ürün kaydı göndermeyin. Feed, yönetim panelindeki görünümü değil, satın alınabilir gerçekliği anlatmalıdır.

## Eklenmesi Faydalı İsteğe Bağlı Alanlar

Zorunlu alanlar kaydı kullanılabilir hâle getirir; isteğe bağlı alanlar ürünü daha iyi açıklar. Güvenilir veriniz varsa ekleyin. Bilinmeyen değerleri `n/a` veya `null` gibi geçici ifadelerle doldurmak yerine alanı boş bırakın.

Faydalı veri grupları:

- **Kimlik:** GTIN, MPN, teklif kimliği ve varyant grubu.
- **Ürün özellikleri:** kategori, malzeme, renk, beden, yaş grubu ve ölçüler.
- **Medya:** farklı açı ve kullanım senaryolarını gösteren ek görseller.
- **Ticari bilgi:** indirimli fiyat, kargo ve iade koşulları.
- **Kanıt:** entegrasyon destekliyorsa gerçek yorum ve puanlar.

GTIN veya MPN üretmeyin. Eksik bir kimlik, ürünü yanlış kayıtla eşleştiren uydurma bir değerden daha güvenlidir.

## Dosya ve URL Kuralları

OpenAI’ın Stable referansı UTF-8 metin ile mutlak HTTP veya HTTPS URL’leri istiyor; HTTPS tercih ediliyor. Ürün ve görsel adresleri herkese açık olmalı. Başında sıfır bulunan kimliklerin bozulmaması için bu değerleri metin olarak saklayın.

CSV kullanıyorsanız:

- virgül, tırnak veya satır sonu içeren hücreleri tırnak içine alın,
- hücre içindeki tırnağı iki tırnakla kaçırın,
- nesne alanlarını hücre içinde JSON olarak saklayın,
- yalnızca kaynak veritabanını değil, dışa aktarılan gerçek dosyayı test edin.

Ürün ve görsel URL’lerinden bir örneklem de tarayın. Adresler oturum açma, bot doğrulaması veya uzun yönlendirme zinciri olmadan doğru kaynağı döndürmelidir.

## Kimlerin Başvuru Yapması Gerekiyor?

OpenAI’ın [satıcı sayfasında](https://chatgpt.com/merchants/) Shopify ve Etsy kataloglarının hâlihazırda entegre olduğu ve bu platformlardaki satıcıların ayrıca başvurmasına gerek bulunmadığı belirtiliyor. Diğer satıcılar ürün feed’i paylaşmak için başvuru yapabiliyor. Aynı sayfa ChatGPT alışveriş deneyiminin şu anda ABD’de açık olduğunu, diğer bölgelere ve daha fazla satıcıya genişletilmesinin planlandığını söylüyor.

Erişim koşulları değişebilir. Geliştirme takvimini bir başvuru tarihine bağlamadan önce satıcı sayfasını tekrar kontrol edin.

Platformunuza göre [Shopify AI görünürlüğü rehberine](https://brantial.ai/tr/blog/shopify-ai-gorunurlugu-chatgpt-alisveris/) veya [WooCommerce AI görünürlüğü rehberine](https://brantial.ai/tr/blog/woocommerce-ai-gorunurlugu-chatgpt-alisveris/) geçebilirsiniz.

## Yayın Öncesi Kalite Kontrolü

### Zorunlu veri

- Her satır dokuz zorunlu alanı içeriyor.
- Kimlikler benzersiz ve metin biçiminde saklanıyor.
- Stok alanı desteklenen bir değer kullanıyor.
- Fiyat tutar ve para birimi kodunu birlikte taşıyor.

### Ürün doğruluğu

- Başlık ürünü ve seçili varyantı ayırt ediyor.
- Açıklamadaki bilgiler açılış sayfasında görülebiliyor.
- Marka ve satıcı adları gerçek ve tutarlı yazılıyor.
- Görsel, fiyat ve stok aynı varyanta ait.

### Teknik erişim

- Ürün ve görsel URL’leri mutlak ve herkese açık.
- Ürün URL’leri 200 yanıtı veriyor ve satın alınabilir ürüne gidiyor.
- Canonical başka bir ürünü göstermiyor.
- Sayfa yanlışlıkla `noindex` değil ve ilgili tarayıcılara kapalı değil.

### Operasyon

- Fiyat ve stok değişimleri için bir yenileme düzeni var.
- Başarısız dışa aktarma ve reddedilen kayıtlar uyarı üretiyor.
- Satıştan kalkan ürünler için kaldırma politikası var.
- Feed değişikliklerinin tarihi ve sorumlusu izlenebiliyor.

## Sonuç Nasıl Ölçülür?

Feed sağlığıyla görünürlük performansını ayrı değerlendirin.

Feed sağlığı; kabul edilen ve reddedilen satırlar, eski fiyatlar ve bozuk ürün URL’leriyle ölçülür. Görünürlük performansıysa sabit bir alışveriş prompt setinde ürünün ne sıklıkla ve ne kadar doğru göründüğünü, ardından ürün sayfasına nitelikli ziyaret gelip gelmediğini inceler.

Önemli bir değişiklikten önce ve sonra aynı pazar, ürün grubu ve prompt setini kullanın. [Brantial Prompt Hacimleri](https://brantial.ai/tr/features/prompt-volumes/) gerçek alışveriş sorularını düzenlemeye, [Site Health](https://brantial.ai/tr/features/site-health/) ise katalogdaki sayfa ve tarama sorunlarını bulmaya yardımcı olur.

## Sık Sorulan Sorular

### Geçerli bir feed ChatGPT’de görünmeyi garanti eder mi?

Hayır. Feed, OpenAI’a daha zengin ve güncel ürün bilgisi sağlar; belirli bir prompt veya konumda görünme garantisi vermez.

### Google Merchant Center feed’ini değiştirmeden yükleyebilir miyim?

Bunu varsaymayın. İki sistemin ortak alanları olsa da alan adları ve gereksinimleri farklıdır. Resmî uyumluluk açıklamasını kullanın ve dönüştürülen çıktıyı doğrulayın. Ayrıntılı eşleştirme için [ChatGPT ve Google Merchant Center feed karşılaştırmasına](https://brantial.ai/tr/blog/chatgpt-urun-feedi-google-merchant-center-karsilastirmasi/) bakabilirsiniz.

### Dokuz alan yeterli mi?

Keşif feed’i için zorunlu başlangıçtır. Ürünü daha doğru anlatıyorsa ve entegrasyon destekliyorsa varyant, özellik, kargo, iade ve yorum verilerini de ekleyin.

### Stokta olmayan ürün feed’de kalmalı mı?

Ürün aktif kataloğun parçasıysa ve yeniden satışa çıkacaksa desteklenen `out_of_stock` değerini kullanabilirsiniz. Kalıcı olarak satıştan kalkan ürünleri belirlediğiniz katalog politikasına göre kaldırın.

↑ Başa dön

## Diğer Yazılar

[Daha fazla içeriğe göz at](https://brantial.ai/tr/blog/)

Yazı 22 Eki 2026

### AI Motorları Hangi Siteleri Kaynak Gösteriyor?

95.144 AI cevabındaki 639.334 kaynağı inceledik. Atıfların %92’si Vikipedi ya da Reddit’e değil sıradan sitelere gidiyor; her motorun kendi gözdesi var.

[AI Motorları Hangi Siteleri Kaynak Gösteriyor?](https://brantial.ai/tr/blog/ai-motorlari-hangi-siteleri-kaynak-gosteriyor/)

Yazı 22 Eki 2026

### LLM SEO Rehberi: AI Modellerinde Bulunmak ve Kaynak Olmak

LLM SEO, içeriğinizi ChatGPT, Gemini, Claude ve Perplexity için bulunur ve kaynak gösterilebilir kılar. AI cevaplarının %89’u önce web’de arıyor; işte yapılacaklar.

[LLM SEO Rehberi: AI Modellerinde Bulunmak ve Kaynak Olmak](https://brantial.ai/tr/blog/llm-seo-rehberi/)

Yazı 21 Eki 2026

### Arama Botu Nedir? 2026 Arama Motoru ve AI Botları Listesi

Arama botu, sayfalarınızı arama motorları ve AI asistanları için ziyaret eder. 2026’da hangi botun ne yaptığını ve robots.txt’te hangisine izin vermeli?

[Arama Botu Nedir? 2026 Arama Motoru ve AI Botları Listesi](https://brantial.ai/tr/blog/arama-botu-nedir/)

800 bin+ ANALİZ EDİLEN AI CEVABI

8 CEVAP MOTORU

HAFTALIK ENDEKS

TARANAN MOTORLAR:

ChatGPT Gemini Claude Perplexity Grok Mistral Meta AI DeepSeek

ÜRÜN:

[Platforma Genel Bakış](https://brantial.ai/tr/platform/) [Prompt Hacimleri](https://brantial.ai/tr/features/prompt-volumes/) [AI Otorite Endeksi](https://brantial.ai/tr/ai-authority-index/) [AI Sektör Endeksi](https://brantial.ai/tr/ai-sektor-endeksi/) [1 Analiz Hakkı](https://brantial.ai/tr/brandscore/) [Agent Analytics](https://brantial.ai/tr/features/agent-analytics/) [Entegrasyonlar](https://brantial.ai/tr/integrations/) [Fiyatlandırma](https://brantial.ai/tr/pricing/)

ŞİRKET:

[Hakkımızda](https://brantial.ai/tr/about/) [Güven Merkezi](https://brantial.ai/tr/trust/) [Kariyer](https://brantial.ai/tr/careers/) [Partner Programı](https://brantial.ai/tr/agency-partner/) [Brantial University](https://university.brantial.ai/tr) [Visionary Share](https://brantial.ai/community/visionary-share/) [Beyond Click](https://brantial.ai/tr/beyond-click/) [Vaka Çalışmaları](https://brantial.ai/tr/case-studies/) [İletişim](https://brantial.ai/tr/contact/)

KAYNAKLAR:

[Kaynak Merkezi](https://brantial.ai/tr/resources/) [Yardım Merkezi](https://brantial.ai/tr/help/) [Araştırma Raporları](https://brantial.ai/tr/reports/) [Sektörler](https://brantial.ai/tr/industries/) [Vaka Çalışmaları](https://brantial.ai/tr/case-studies/) [Türkiye AI Otorite Endeksi](https://brantial.ai/tr/ai-authority-index/) [AI Sektör Endeksi](https://brantial.ai/tr/ai-sektor-endeksi/) [Otomotiv AI Raporu](https://brantial.ai/tr/reports/otomotiv-sektorunde-ai-gorunurlugu-brantial-2026-raporu/) [GEO Sözlüğü](https://brantial.ai/tr/glossary/) [GEO Rehberi](https://brantial.ai/generative-engine-optimization-guide/) [Blog](https://brantial.ai/tr/blog/) [Karşılaştırma Merkezi](https://brantial.ai/tr/compare/)

![Brantial](https://brantial.ai/layout/logo-wordmark.svg)

Brantial, AI görünürlüğünü anlamak ve içerik çalışmalarını geliştirmek için araçlar sunar. Agentic commerce yönümüz, ürün bilgisi ve alışveriş görevlerinin doğruluğuna odaklanır. Webtures LTD tarafından işletilir.

WEBTURES LTD. · Şirket No. 11948574 494a Fulham Road, London, England, SW6 5NH [hello@brantial.ai](mailto:hello@brantial.ai)

SERTİFİKALAR:

KVKK GDPR SOC 2 · SÜREÇTE

[![Brantial Certified GEO Partner](https://brantial.ai/assets/geo-partner-badge.avif) Sertifikalı GEO Partner programı: rozet, dizin ve toptan marj](https://brantial.ai/tr/agency-partner/)

Haftalık Görünürlük Endeksi

Her hafta GEO trendleri ve içgörüler, e-postanda.

[Abone ol](https://www.linkedin.com/newsletters/g%C3%B6r%C3%BCn%C3%BCrl%C3%BCk-raporu-7449413673988583424/)

© 2026 Brantial · Webtures LTD

[TR](https://brantial.ai/tr/blog/chatgpt-urun-feed-gereksinimleri-2026/) [EN](https://brantial.ai/blog/chatgpt-product-feed-requirements-2026/)

[Gizlilik](https://brantial.ai/privacy-policy/) [Şartlar](https://brantial.ai/terms-of-service/) [Çerezler](https://brantial.ai/cookie-policy/)

ÜCRETSİZ MARKA ANALİZİ

## Analiz hakkınızı kullanın

Brantial University

## Merhaba, hadi başlayalım!

Hızlı çözüm, tek mesaj uzağınızda.

**Sorunuzu ekibe yazın** Genellikle birkaç dakika içinde yanıtlarız

**Brantial University** GENELLİKLE BİRKAÇ DAKİKA İÇİNDE YANITLAR

.br-chat { --br-chat-panel: var(--card); --br-chat-surface: var(--bg); --br-chat-input: var(--card); --br-chat-text: var(--text); --br-chat-copy: var(--t2); --br-chat-muted: var(--t3); --br-chat-faint: var(--t5); --br-chat-line: var(--border2); --br-chat-outer-line: var(--border3); --br-chat-visitor-bg: var(--text); --br-chat-visitor-text: var(--bg); --br-chat-team-bg: var(--tint2); position: static; color: var(--br-chat-text); font-family: Geist, -apple-system, 'Segoe UI', sans-serif; } .br-chat [hidden] { display: none !important; } .br-chat button, .br-chat input { box-sizing: border-box; font: inherit; } .br-chat button { color: inherit; } .br-chat__launcher { display: flex; position: fixed; right: 22px; bottom: 22px; z-index: 90; width: 52px; height: 52px; align-items: center; justify-content: center; border: 1px solid var(--br-chat-outer-line); border-radius: 50%; background: var(--br-chat-panel); box-shadow: 0 6px 24px var(--shadow-soft); color: var(--br-chat-copy); cursor: pointer; transition: transform 0.15s ease; } .br-chat__launcher:hover { transform: translateY(-2px); } .br-chat__launcher svg { width: 22px; fill: none; stroke: currentColor; stroke-width: 1.8; } .br-chat__launcher:focus-visible, .br-chat__panel button:focus-visible { outline: 1px solid var(--br-chat-text); outline-offset: 2px; } .br-chat__panel input:focus-visible { outline: 1px solid var(--br-chat-text); outline-offset: 0; } .br-chat__panel:focus { outline: none; } .br-chat__panel { position: fixed; right: 22px; bottom: 22px; z-index: 91; display: flex; width: 340px; max-width: calc(100vw - 24px); height: 440px; max-height: calc(100dvh - 90px); overflow: hidden; flex-direction: column; border: 1px solid var(--br-chat-outer-line); border-radius: 14px; background: var(--br-chat-panel); box-shadow: 0 16px 48px var(--shadow-soft); } .br-chat__welcome { position: relative; display: flex; min-height: 100%; flex: 1; flex-direction: column; justify-content: space-between; padding: 26px 18px 16px; } .br-chat__welcome-close { position: absolute; top: 10px; right: 10px; } .br-chat__welcome-copy h2 { margin: 0; color: var(--br-chat-text); font-size: 20px; font-weight: 700; line-height: normal; letter-spacing: -0.01em; } .br-chat__welcome-copy p { margin: 4px 0 0; color: var(--br-chat-muted); font-size: 13.5px; line-height: normal; } .br-chat__start-card { display: grid; width: 100%; margin-top: auto; gap: 4px; padding: 14px; border: 1px solid var(--br-chat-line); border-radius: 12px; background: var(--br-chat-surface); text-align: left; } .br-chat__start-card strong { font-size: 14px; font-weight: 600; line-height: normal; } .br-chat__start-card small { color: var(--br-chat-muted); font-size: 12.5px; font-weight: 400; line-height: normal; } .br-chat__start-card button { align-self: end; justify-self: start; margin-top: 8px; padding: 0; border: 0; background: transparent; color: var(--br-chat-text); font-size: 14px; font-weight: 600; cursor: pointer; } .br-chat__start-card button:hover { color: var(--br-chat-muted); } .br-chat__icon-button { display: flex; width: 32px; height: 32px; flex: 0 0 auto; align-items: center; justify-content: center; padding: 0; border: 1px solid var(--br-chat-line); border-radius: 99px; background: transparent; color: var(--br-chat-text); font-size: 15px; line-height: 15px; cursor: pointer; } .br-chat__icon-button:hover { background: var(--br-chat-team-bg); } .br-chat__conversation { display: flex; min-height: 0; flex: 1; flex-direction: column; } .br-chat__header { display: flex; align-items: center; gap: 10px; padding: 12px 14px; border-bottom: 1px solid var(--br-chat-line); background: var(--br-chat-surface); } .br-chat__header > div { min-width: 0; flex: 1; } .br-chat__header strong { display: block; font-size: 14px; font-weight: 600; line-height: normal; } .br-chat__header small { display: block; margin-top: 3px; color: var(--br-chat-faint); font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 10px; font-weight: 400; letter-spacing: 0.06em; line-height: 1.55; } .br-chat__log { display: flex; min-height: 0; flex: 1; flex-direction: column; gap: 8px; overflow-y: auto; padding: 14px; } .br-chat__messages { display: flex; flex-direction: column; gap: 8px; } .br-chat__bubble { max-width: 85%; margin: 0; padding: 8px 12px; overflow-wrap: anywhere; border-radius: 12px; color: var(--br-chat-copy); font-size: 13.5px; line-height: 1.55; white-space: pre-wrap; } .br-chat__bubble--visitor { align-self: flex-end; border: 1px solid var(--br-chat-outer-line); border-radius: 12px 12px 4px; background: var(--br-chat-visitor-bg); color: var(--br-chat-visitor-text); } .br-chat__bubble--team { align-self: flex-start; border-radius: 12px 12px 12px 4px; background: var(--br-chat-team-bg); } .br-chat__email-area { width: 100%; } .br-chat__email-form { display: grid; width: 100%; max-width: 292px; gap: 8px; padding: 8px 12px; border-radius: 12px 12px 12px 4px; background: var(--br-chat-team-bg); } .br-chat__email-form label { color: var(--br-chat-copy); font-size: 13.5px; font-weight: 400; line-height: 1.55; } .br-chat__email-form > div { display: flex; gap: 8px; } .br-chat__email-form input { min-width: 0; height: 38px; flex: 1; padding: 9px 10px; border: 1px solid var(--br-chat-line); border-radius: 8px; background: var(--br-chat-input); color: var(--br-chat-copy); font-size: 13.5px; } .br-chat__email-form input[aria-invalid='true'] { border-color: #d14343; } .br-chat__email-form button { display: flex; width: 38px; height: 38px; flex: 0 0 auto; align-items: center; justify-content: center; padding: 0; border: 0; border-radius: 8px; background: var(--br-chat-visitor-bg); color: var(--br-chat-visitor-text); font-size: 16px; cursor: pointer; } .br-chat__email-form button:disabled { cursor: wait; opacity: 0.62; } .br-chat__error { margin: 0; color: #d14343; font-size: 11.5px; line-height: 1.4; } .br-chat__composer { display: flex; min-height: 59px; align-items: center; gap: 8px; padding: 10px 12px; border-top: 1px solid var(--br-chat-line); background: var(--br-chat-surface); } .br-chat__composer input { min-width: 0; height: 38px; flex: 1; padding: 9px 12px; border: 1px solid var(--br-chat-line); border-radius: 10px; background: var(--br-chat-input); color: var(--br-chat-copy); font-size: 13.5px; } .br-chat__composer button { display: flex; width: 40px; height: 38px; flex: 0 0 auto; align-items: center; justify-content: center; padding: 0; border: 0; border-radius: 10px; background: transparent; color: var(--br-chat-muted); cursor: pointer; } .br-chat__composer button:hover:not(:disabled) { color: var(--br-chat-text); } .br-chat__composer button:disabled, .br-chat__composer input:disabled { cursor: default; } .br-chat__composer button span { font-size: 17px; line-height: 1; } .br-chat__composer input::placeholder, .br-chat__email-form input::placeholder { color: var(--br-chat-faint); opacity: 1; } .br-chat__sr-only { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } @media (max-width: 480px) { .br-chat__panel { right: 12px; bottom: 12px; width: calc(100vw - 24px); height: min(480px, calc(100dvh - 70px)); } .br-chat__icon-button { width: 44px; height: 44px; } .br-chat__composer input, .br-chat__email-form input { height: 44px; font-size: 16px; } .br-chat__composer button, .br-chat__email-form button { width: 44px; height: 44px; } .br-chat__start-card button { display: inline-flex; min-height: 44px; align-items: center; } } @media (prefers-reduced-motion: reduce) { .br-chat__launcher { transition: none; } }
