/* Native reference: gpt-de-babi-mobile/src/theme.ts and shared components.
   Load last: this is the web app's shared visual theme, across all breakpoints.
   Keep product-specific source logos, transit colors, and status semantics intact. */
@font-face{font-family:"Hanken Grotesk";font-style:normal;font-weight:400;font-display:swap;src:url("fonts/hanken-grotesk/HankenGrotesk_400Regular.ttf") format("truetype")}
@font-face{font-family:"Hanken Grotesk";font-style:italic;font-weight:400;font-display:swap;src:url("fonts/hanken-grotesk/HankenGrotesk_400Regular_Italic.ttf") format("truetype")}
@font-face{font-family:"Hanken Grotesk";font-style:normal;font-weight:500;font-display:swap;src:url("fonts/hanken-grotesk/HankenGrotesk_500Medium.ttf") format("truetype")}
@font-face{font-family:"Hanken Grotesk";font-style:normal;font-weight:600;font-display:swap;src:url("fonts/hanken-grotesk/HankenGrotesk_600SemiBold.ttf") format("truetype")}
@font-face{font-family:"Hanken Grotesk";font-style:normal;font-weight:700;font-display:swap;src:url("fonts/hanken-grotesk/HankenGrotesk_700Bold.ttf") format("truetype")}
:root {
  --font-ui:"Hanken Grotesk",ui-sans-serif,system-ui,sans-serif;
  --canvas:#F4F6FA; --background-deep:#EDF1F7;
  --surface:#FFFFFF; --surface-muted:#EBEFF5;
  --ink:#1F1F1F; --text-soft:#363636; --muted:#626C7A;
  --line:#DFE5ED; --border-strong:#C8D2DF;
  --glass:rgba(255,255,255,.78); --glass-border:rgba(255,255,255,.94);
  --backdrop:rgba(23,37,59,.28);
  --primary:#0A2958; --primary-dark:#0A2958; --primary-soft:#E8EEF7;
  --secondary:#F28C28; --orange-soft:#FFF2E4; --danger:#B42318;
  --sidebar:var(--surface); --shadow:0 8px 24px rgba(16,24,40,.065);
  --radius-card:18px; --radius-surface:20px; --radius-dialog:26px;
  font-family:var(--font-ui);
}
body,button,input,textarea,select { font-family:var(--font-ui); }
body { background:var(--canvas); color:var(--ink); }
button:focus-visible,a:focus-visible,summary:focus-visible { outline:2px solid var(--primary); outline-offset:3px; }
/* Conversation and Markdown use the native 17 / 25 type scale. */
.message-bubble { color:var(--ink); font-size:17px; line-height:25px; }
.message { margin-bottom:14px; }
.message.assistant .message-content { width:100%; }
.message.user .message-content { max-width:min(86%,620px); border-radius:20px; background:var(--surface); padding:10px 14px; }
.message-bubble p { margin:10px 0; }
.message-bubble li+li { margin-top:6px; }
.message-bubble h1,.message-bubble h2,.message-bubble h3,.message-bubble h4 { color:var(--ink); }
.message-bubble h1 { font-size:23px; line-height:29px; letter-spacing:-.25px; }
.message-bubble h2 { font-size:20px; line-height:26px; letter-spacing:-.15px; }
.message-bubble h3 { font-size:18px; line-height:24px; font-weight:600; }
.message-bubble h4 { font-size:17px; line-height:24px; font-weight:600; }
.message-bubble code { background:var(--surface-muted); color:var(--text-soft); }
.message-bubble pre { overflow-x:auto; border:.5px solid var(--glass-border); border-radius:12px; background:var(--glass); padding:12px 14px; }
.message-bubble pre code { background:transparent; font-size:13px; line-height:20px; }
.message-bubble blockquote { margin-inline:0; border-left:3px solid var(--primary); padding-left:12px; }
.message-bubble th { background:var(--surface-muted); }
.message-meta,.reflection-status { color:var(--muted); }
.message-meta { font-size:11px; line-height:16px; }
.reflection-status { font-size:14px; line-height:19px; font-weight:500; }
.message-feedback button { color:var(--muted); border-radius:12px; }
.message-feedback button:hover { color:var(--primary); background:var(--primary-soft); }
/* Navigation adapts to desktop without changing the native colors or type. */
.sidebar { border-color:var(--line); background:var(--surface); }
.sidebar-footer { border-color:var(--line); }
.brand { font-size:20px; }
.new-chat-button { border-color:var(--glass-border); border-radius:16px; background:var(--canvas); color:var(--primary); font-size:15px; box-shadow:none; }
.new-chat-button:hover { border-color:var(--border-strong); }
.conversation-search { border-radius:16px; background:var(--canvas); color:var(--muted); }
.conversation-search input { font-size:15px; }
.conversation-search:focus-within { box-shadow:0 0 0 1px var(--border-strong); }
.conversation-item { border-radius:11px; color:var(--ink); font-size:15px; }
.conversation-item.active { color:var(--primary); background:var(--primary-soft); }
.conversation-item:hover,.account-button:hover,.conversation-manage:hover { background:var(--surface-muted); }
.sidebar-label,.conversation-group-label,.conversation-empty,.account-copy small,.sidebar-links a,.conversation-manage { color:var(--muted); }
.sidebar-label,.conversation-group-label { font-size:12px; }
.account-copy strong { font-size:15px; }.account-copy small,.sidebar-links a { font-size:12px; }
.chat-header { border-bottom:0; background:var(--canvas); padding-inline:16px; }
.header-title strong { color:var(--ink); font-size:15px; }
.icon-button { border-radius:16px; color:var(--primary); }
.chat-header .icon-button { width:36px; height:36px; border:1px solid var(--line); background:var(--glass); box-shadow:var(--shadow); }
.icon-button:hover { background:var(--surface-muted); }
.status-dot { color:var(--muted); font-size:12px; }
.empty-subtitle { color:var(--muted); font-size:16px; line-height:22px; }
.empty-state h1 { color:var(--ink); font-size:27px; line-height:33px; font-weight:700; letter-spacing:-.4px; }
.empty-logo { box-shadow:var(--shadow); }
.mobile-prompts button { min-height:48px; border-radius:16px; color:var(--text-soft); }
.mobile-prompts button:hover { background:var(--glass); }
.mobile-prompts button>span:last-child { font-size:15px; line-height:21px; font-weight:500; }
.prompt-grid button { border-color:var(--glass-border); border-radius:23px; background:var(--glass); box-shadow:none; }
.prompt-grid button:hover { border-color:var(--border-strong); box-shadow:var(--shadow); }
.prompt-grid strong { font-size:14px; line-height:19px; font-weight:600; }
.prompt-grid small { color:var(--muted); font-size:12px; line-height:17px; }
/* Composer, attachments, voice, and plugin selection. */
.composer { border-color:var(--glass-border); border-radius:28px; background:var(--glass); box-shadow:var(--shadow); }
.composer:focus-within { border-color:var(--border-strong); box-shadow:var(--shadow),0 0 0 2px var(--primary-soft); }
.composer textarea { min-height:42px; color:var(--ink); font-size:17px; line-height:25px; }
.composer textarea::placeholder { color:var(--muted); }
.composer.plugin-selected:not(.plugin-multiple) .plugin-chip-list { font-size:17px; line-height:25px; }
.send-button,.voice-button,.file-button { width:42px; height:42px; border-radius:21px; }
.voice-button,.file-button { color:var(--muted); }.voice-button:hover,.file-button:hover { color:var(--primary); background:var(--primary-soft); }
.send-button:disabled { background:var(--border-strong); }
.composer-note { max-width:390px; margin:14px auto 0; padding-inline:18px; color:var(--muted); font-size:13px; line-height:18px; font-weight:500; }
.attachment-tray,.message-file,.voice-composer { border-color:var(--glass-border); border-radius:20px; background:var(--glass); box-shadow:var(--shadow); }
.attachment-copy strong { font-size:14px; }.attachment-copy small { color:var(--muted); font-size:12px; }
.voice-stage-header,.sent-voice time { color:var(--muted); font-size:13px; }
.voice-discard,.voice-stop,.voice-send { border-radius:50%; }
.plugin-picker { border-color:var(--glass-border); border-radius:20px; background:var(--surface); box-shadow:var(--shadow); }
.plugin-option { color:var(--ink); }.plugin-option:hover,.plugin-option.active { background:var(--primary-soft); }
.plugin-option-copy strong { font-size:14px; }.plugin-option-copy small { color:var(--muted); font-size:12px; }
.plugin-chip { border-color:var(--line); background:var(--glass); color:var(--primary); }
/* All card families share the mobile surfaces, widths, type, and corners.
   Keep the explicit web requests: one-line titles, no extra meal rows or subtitles. */
.result-card-strip { grid-auto-columns:268px; gap:12px; }
.result-card,.hotel-card,.event-card,.transit-card,.route-map { border-color:var(--glass-border); border-radius:var(--radius-card); background:var(--glass); box-shadow:none; color:var(--ink); }
.result-card-media { height:154px; flex:none; background:var(--surface-muted); }
.result-card-restaurant .result-card-media { height:150px; }
.result-card-body { padding:12px 13px; }
.result-card-title { font-size:16px; line-height:21px; color:var(--ink); }
.result-card-body .result-card-subtitle,.result-card-description,.result-card-facts span { color:var(--muted); font-size:12px; line-height:17px; }
.result-card-price { color:var(--ink); font-size:15px; line-height:20px; }
.result-card-badges span { color:var(--primary); background:var(--primary-soft); font-size:11px; line-height:15px; font-weight:600; }
.result-card-actions a { min-height:30px; border-color:var(--glass-border); color:var(--primary); font-size:12px; line-height:17px; font-weight:600; }
.result-card-actions a:hover { border-color:var(--border-strong); background:var(--primary-soft); }
.result-card-actions img { width:14px; height:14px; }
.result-card-flight .flight-badge { background:var(--primary-soft); color:var(--primary); }
.flight-logo.is-initials { background:var(--surface-muted); color:var(--primary); }
.result-card-flight-line { background:var(--border-strong); }
.result-card-strip.result-card-strip-flights { grid-auto-columns:min(560px,100%); }
.result-card-flight { min-height:390px; padding:22px; gap:0; }
.flight-card-head { display:flex; min-width:0; align-items:center; justify-content:space-between; gap:12px; }
.flight-card-brand { display:flex; min-width:0; align-items:center; gap:13px; }
.flight-card-brand .flight-logo { width:48px; height:48px; border:0; border-radius:12px; }
.flight-card-identity { display:block; min-width:0; }
.flight-card-airline,.flight-card-meta { display:block; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }
.flight-card-airline { color:var(--ink); font-size:18px; line-height:24px; font-weight:700; }
.flight-card-meta { margin-top:2px; color:var(--muted); font-size:15px; line-height:20px; }
.flight-card-price { flex:none; max-width:48%; overflow:hidden; border-radius:999px; background:var(--primary-soft); padding:10px 15px; color:var(--primary); font-size:19px; line-height:24px; font-weight:700; text-overflow:ellipsis; white-space:nowrap; }
.flight-card-recommendation { align-self:flex-start; max-width:100%; overflow:hidden; margin-top:17px; border-radius:999px; background:var(--primary-soft); padding:7px 13px; color:var(--primary); font-size:14px; line-height:19px; font-weight:700; text-overflow:ellipsis; white-space:nowrap; }
.flight-card-journey { display:grid; grid-template-columns:minmax(52px,.65fr) minmax(80px,1.6fr) minmax(52px,.65fr); align-items:center; gap:12px; margin-top:24px; }
.flight-card-endpoint { display:grid; min-width:0; gap:2px; }
.flight-card-endpoint-departure { text-align:left; }
.flight-card-endpoint-arrival { text-align:right; }
.flight-card-endpoint strong { color:var(--ink); font-size:28px; line-height:33px; font-weight:700; }
.flight-card-endpoint small { overflow:hidden; color:var(--muted); font-size:16px; line-height:21px; font-weight:600; text-overflow:ellipsis; white-space:nowrap; }
.flight-card-route-line { display:grid; min-width:0; gap:8px; text-align:center; }
.flight-card-stop-label { overflow:hidden; color:var(--primary); font-size:15px; line-height:20px; font-weight:700; text-overflow:ellipsis; white-space:nowrap; }
.flight-card-timeline { display:flex; align-items:center; gap:7px; color:var(--primary); }
.flight-card-timeline i { width:11px; height:11px; flex:none; border-radius:50%; background:var(--primary); }
.flight-card-line { height:2px; min-width:4px; flex:1; background:var(--border-strong); }
.flight-card-plane { flex:none; margin-inline:-1px; color:var(--primary); font-size:19px; line-height:18px; transform:rotate(-35deg); }
.flight-card-duration { color:var(--muted); font-size:15px; line-height:20px; }
.flight-card-route { margin-top:19px; border-top:1px solid var(--line); padding-top:15px; color:var(--ink); font-size:16px; line-height:22px; font-weight:600; }
.flight-card-layovers,.flight-card-expanded { display:grid; gap:7px; margin-top:7px; color:var(--muted); font-size:15px; line-height:21px; }
.flight-card-layovers>span,.flight-card-expanded>span { display:block; }
.flight-card-more { display:inline-flex; min-height:38px; align-self:flex-start; align-items:center; gap:12px; margin-top:auto; padding:18px 0 0 12px; border:0; background:transparent; color:var(--primary); font-size:16px; line-height:22px; font-weight:700; cursor:pointer; }
.flight-card-more:hover { color:#17427e; }
.flight-card-chevron { width:10px; height:10px; border-top:2px solid currentColor; border-right:2px solid currentColor; transform:rotate(45deg); transition:transform .18s ease; }
.flight-card-more[aria-expanded="true"] .flight-card-chevron { transform:rotate(135deg); }
@media(max-width:640px) {
  .result-card-strip.result-card-strip-flights { grid-auto-columns:min(560px,calc(100vw - 36px)); }
  .result-card-flight { min-height:360px; padding:20px; }
  .flight-card-airline { font-size:16px; }
  .flight-card-meta { font-size:13px; }
  .flight-card-price { padding:8px 11px; font-size:15px; }
  .flight-card-endpoint strong { font-size:24px; }
  .flight-card-stop-label { font-size:13px; }
}
.result-card-skeleton,.result-card-skeleton-media { background:var(--surface-muted); }
.route-map-copy strong { color:var(--ink); font-size:16px; line-height:21px; }
.route-map-copy span { color:var(--muted); font-size:12px; line-height:17px; }
.route-map-viewport { height:auto; aspect-ratio:2 / 1; }
.route-map-summary>a { background:var(--primary-soft); color:var(--primary); }
.route-map-summary>a:hover { background:#D9E4F3; }
.route-map-unavailable { background:var(--surface-muted); color:var(--muted); }
.transit-card-title { color:var(--ink); font-size:16px; line-height:21px; }
.transit-card-head { border-color:var(--line); }
.transit-stops li { color:var(--text-soft); font-size:12px; line-height:17px; }
.transit-facts span { border-color:var(--line); background:var(--glass); color:var(--text-soft); font-size:12px; }
.pharmacy-card { border-color:var(--line); border-radius:20px; background:var(--glass); box-shadow:0 5px 15px rgba(16,24,40,.055); }
.pharmacy-card-title { color:var(--ink); font-size:15px; line-height:20px; }
.pharmacy-card-icon { border-color:var(--line); border-radius:16px; box-shadow:none; }
.pharmacy-card-location { color:var(--text-soft); font-size:12px; line-height:16px; }
.pharmacy-card-phone,.pharmacy-card-route { border-color:var(--line); background:var(--glass); color:var(--primary); font-size:12px; }
.pharmacy-card-phone:hover,.pharmacy-card-route:hover { border-color:var(--border-strong); box-shadow:var(--shadow); }
/* Source disclosure and document previews. */
.source-pill,.sources-trigger { border-color:var(--glass-border); background:var(--glass); color:var(--muted)!important; }
.source-pill:hover,.sources-trigger:hover { border-color:var(--border-strong); background:var(--primary-soft); color:var(--primary)!important; }
.sources-trigger { min-height:30px; padding:5px 10px; font-size:12px; line-height:17px; font-weight:500; }
.sources-trigger-icons img { width:18px; height:18px; }
.sources-panel,.file-preview-panel { border-color:var(--line); background:var(--surface); }
.sources-list a:hover { background:var(--canvas); }.sources-list strong { color:var(--ink); font-size:14px; line-height:19px; }.sources-list small,.sources-group { color:var(--muted); font-size:12px; }
.generated-file-link { border-color:var(--glass-border); border-radius:18px; background:var(--surface); color:var(--ink); box-shadow:var(--glass-shadow); }
.generated-file-link:hover { border-color:var(--border-strong); background:var(--surface); }
.generated-file-copy strong { font-size:14px; }.generated-file-copy small { color:var(--muted); font-size:12px; }
.file-preview-header { border-color:var(--line); background:var(--surface); }.file-preview-body { background:var(--canvas); }
.file-preview-action { color:var(--primary); border-color:var(--line); background:var(--glass); }
/* Authentication, account and feedback dialogs. Provider logos keep their colors. */
.auth-dialog,.conversation-dialog,.negative-feedback-dialog,.location-dialog { border-radius:var(--radius-dialog); background:var(--surface); color:var(--ink); box-shadow:0 8px 24px rgba(16,24,40,.15); }
.auth-dialog::backdrop,.conversation-dialog::backdrop,.negative-feedback-dialog::backdrop,.location-dialog::backdrop,.sources-scrim,.file-preview-scrim,.sidebar-scrim { background:var(--backdrop); }
.dialog-close { color:var(--muted); background:var(--surface-muted); }
.auth-dialog h2,.conversation-dialog h2,.negative-feedback-dialog h2,.location-dialog h2 { white-space:normal; font-size:23px; line-height:29px; }
.auth-dialog section>p,.auth-step>p { font-size:15px; line-height:21px; color:var(--muted); }
.auth-provider,.auth-submit,.conversation-save,.conversation-delete { min-height:48px; border-radius:16px; font-size:15px; line-height:20px; }
.auth-provider { border-color:var(--line); background:var(--surface); color:var(--ink); }.auth-provider:hover { background:var(--canvas); }
.auth-step label,.conversation-dialog label { color:var(--text-soft); font-size:14px; }
.auth-step input,.conversation-dialog input,.negative-feedback-dialog textarea { border-color:var(--line); border-radius:16px; color:var(--ink); background:var(--canvas); font-size:17px; }
.auth-step input:focus,.conversation-dialog input:focus { box-shadow:0 0 0 3px var(--primary-soft); }
.auth-fineprint { color:var(--muted)!important; font-size:12px!important; line-height:17px; }
.auth-fineprint a { color:var(--primary); }
.auth-gate-hero { border-color:var(--line); background:var(--primary-soft); }.auth-gate-icon { background:var(--glass); color:var(--primary); }.auth-gate-label { color:var(--primary); }
.auth-gate-progress i { background:var(--primary); }.auth-gate-assurance { color:var(--muted)!important; }.auth-gate-assurance::before { background:var(--primary-soft); color:var(--primary); }
.auth-dialog .google-button-host { align-items:center; border:0; background:transparent; box-shadow:none; }
.feedback-reason-option { color:var(--text-soft); font-size:15px; }.feedback-reason-option:hover { background:var(--canvas); }
.feedback-form-actions button { border-color:var(--line); color:var(--primary); font-size:14px; border-radius:12px; }
.feedback-form-actions button[type=submit] { background:var(--primary); color:var(--surface); }
/* Structured answers inherit the same theme without changing other app surfaces. */
.app-shell .chart-artifact { border-color:var(--glass-border); border-radius:18px; background:var(--surface); color:var(--ink); box-shadow:var(--glass-shadow); }
.app-shell .chart-artifact-subtitle { color:var(--muted); font-size:12px; line-height:17px; }
.app-shell .research-plan { --research-plan-accent:var(--primary); --research-plan-text:var(--ink); --research-plan-muted:var(--muted); --research-plan-line:var(--border-strong); border-color:var(--glass-border); border-radius:18px; background:var(--glass); }
.app-shell .cepici-tracker { --ct-ink:var(--ink); --ct-muted:var(--muted); --ct-line:var(--line); --ct-soft:var(--canvas); --ct-accent:var(--primary); --ct-accent-soft:var(--primary-soft); border-color:var(--glass-border); background:var(--glass); box-shadow:none; }
.app-shell .cepici-tracker-mark { background:var(--primary); box-shadow:var(--shadow); }.app-shell .cepici-tracker-progress { background:var(--canvas); }
@media(max-width:560px) {
  .messages { width:calc(100% - 40px); padding-top:22px; padding-bottom:190px; }
  .empty-state { width:calc(100% - 40px); padding-bottom:185px; }
  .message.user .message-content { max-width:86%; }
  .composer-zone { padding-inline:12px; }
  .composer.plugin-selected:not(.plugin-multiple) .plugin-chip-list { font-size:17px; }
  .auth-dialog.guest-limit h2 { white-space:normal; font-size:23px; line-height:29px; }
}
/* Hidden drawers must not cast shadows across the conversation canvas. */
.sources-panel,.file-preview-panel { box-shadow:none; }
.app-shell.sources-open .sources-panel,.app-shell.file-preview-open .file-preview-panel { box-shadow:-12px 0 30px rgba(16,24,40,.12); }
@media(max-width:820px),(max-height:500px) {
  .sidebar { box-shadow:none; }
  .app-shell.sidebar-open .sidebar { box-shadow:12px 0 30px rgba(16,24,40,.12); }
}

/* Native GlassSurface.tsx: pearl canvas, translucent cards, blurred floating chrome. */
:root {
  --glass-canvas:linear-gradient(135deg,#EAF0F9 0%,#F8FAFD 48%,#EEF2F8 100%);
  --glass-sheen:linear-gradient(135deg,rgba(255,255,255,.64),rgba(255,255,255,.08));
  --glass-overlay:rgba(255,255,255,.46);
  --glass-shadow:inset 0 1px 0 rgba(255,255,255,.8),0 8px 24px rgba(16,24,40,.065);
}
.chat-main { background-image:var(--glass-canvas); }
.chat-header { background:transparent; backdrop-filter:none; -webkit-backdrop-filter:none; }
.composer-zone { background:linear-gradient(180deg,rgba(238,242,248,0),rgba(238,242,248,.88) 70%,#EEF2F8); }
/* Solid by default; only capable browsers receive the translucent blur layer. */
:is(.composer,.voice-composer,.plugin-picker,.chat-header .icon-button,.scroll-bottom,
    .sidebar,.sources-panel,.file-preview-panel,.auth-dialog,.conversation-dialog,.negative-feedback-dialog,.location-dialog,.app-shell .chart-artifact) {
  background-color:var(--surface);
  background-image:none;
  border-color:var(--glass-border);
}
:is(.composer,.voice-composer,.plugin-picker,.chat-header .icon-button,.scroll-bottom,
    .auth-dialog,.conversation-dialog,.negative-feedback-dialog,.location-dialog) { box-shadow:var(--glass-shadow); }
.auth-dialog.guest-limit { box-shadow:var(--glass-shadow); }
:is(.result-card,.hotel-card,.event-card,.transit-card,.pharmacy-card,.route-map,
    .generated-file-link,.attachment-tray,.message-file) {
  background-color:var(--glass);
  border-color:var(--glass-border);
  box-shadow:var(--glass-shadow);
}
@supports ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))) {
  :is(.composer,.voice-composer,.plugin-picker,.chat-header .icon-button,.scroll-bottom,
      .sidebar,.sources-panel,.file-preview-panel,.auth-dialog,.conversation-dialog,.negative-feedback-dialog,.location-dialog,.app-shell .chart-artifact) {
    background-color:var(--glass-overlay);
    background-image:var(--glass-sheen);
    -webkit-backdrop-filter:blur(20px) saturate(140%);
    backdrop-filter:blur(20px) saturate(140%);
  }
}
.composer:focus-within { border-color:var(--border-strong); box-shadow:var(--glass-shadow),0 0 0 2px var(--primary-soft); }
/* Avoid stacking an opaque layer over the frosted preview panel. */
.file-preview-header { background:transparent; }
@media (prefers-reduced-transparency:reduce) {
  .auth-dialog::backdrop,.conversation-dialog::backdrop,.negative-feedback-dialog::backdrop,.location-dialog::backdrop { -webkit-backdrop-filter:none; backdrop-filter:none; }
  .chat-main { background-image:none; }
  .composer-zone { background:var(--canvas); }
  :is(.composer,.voice-composer,.plugin-picker,.chat-header .icon-button,.scroll-bottom,
      .sidebar,.sources-panel,.file-preview-panel,.auth-dialog,.conversation-dialog,.negative-feedback-dialog,.location-dialog,
      .result-card,.hotel-card,.event-card,.transit-card,.pharmacy-card,.route-map,
      .generated-file-link,.attachment-tray,.message-file,.source-pill,.sources-trigger,.app-shell .chart-artifact) {
    background-color:var(--surface);
    background-image:none;
    -webkit-backdrop-filter:none;
    backdrop-filter:none;
  }
}
@media (forced-colors:active) {
  .chat-main,.composer-zone { background:Canvas; }
  :is(.composer,.voice-composer,.plugin-picker,.chat-header .icon-button,.scroll-bottom,
      .sidebar,.sources-panel,.file-preview-panel,.auth-dialog,.conversation-dialog,.negative-feedback-dialog,.location-dialog,
      .result-card,.hotel-card,.event-card,.transit-card,.pharmacy-card,.route-map,
      .generated-file-link,.attachment-tray,.message-file,.app-shell .chart-artifact) {
    background:Canvas; border:1px solid CanvasText; box-shadow:none;
    -webkit-backdrop-filter:none; backdrop-filter:none;
  }
}

/* Native plugin picker and complete catalogue/detail navigation. */
.browse-plugins-button{display:flex;width:100%;align-items:center;justify-content:space-between;margin:0 0 12px;border:0;border-radius:12px;padding:10px 12px;background:transparent;color:var(--primary);font-size:15px;font-weight:600;cursor:pointer}.browse-plugins-button:hover{background:var(--primary-soft)}
.plugin-picker{max-height:none;overflow:hidden;padding:0}.plugin-picker-header{display:flex;min-height:56px;align-items:center;justify-content:space-between;gap:8px;padding:10px 14px;border-bottom:1px solid var(--surface-muted)}.plugin-picker-header strong{font-size:16px;line-height:21px;font-weight:600}.plugin-picker-browse{flex:none;border:0;border-radius:19px;background:var(--glass);padding:8px 10px;color:var(--primary);font-size:12px;cursor:pointer}
.plugin-picker-options{max-height:min(280px,36dvh);overflow-y:auto;overscroll-behavior:contain;padding:5px 8px}.plugin-option{min-height:64px;gap:12px;padding:10px 8px}.plugin-option+.plugin-option{border-top:1px solid var(--surface-muted)}.plugin-option-copy{flex:1;min-width:0}.plugin-option-copy strong{font-size:15px;line-height:20px;font-weight:600}.plugin-option-copy small{color:var(--text-soft);font-size:12px;line-height:17px;white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere}
.plugin-catalog-dialog{width:min(620px,calc(100% - 28px));max-height:calc(100dvh - 32px);padding:0;border:1px solid var(--glass-border);border-radius:26px;background:var(--canvas);background-image:var(--glass-canvas);color:var(--ink);box-shadow:var(--shadow)}.plugin-catalog-dialog[open]{display:flex;flex-direction:column}.plugin-catalog-dialog::backdrop{background:var(--backdrop)}
.plugin-catalog-header{display:flex;flex:none;align-items:center;gap:8px;padding:14px 16px;border-bottom:1px solid var(--line)}.plugin-catalog-header h2{flex:1;min-width:0;margin:0;font-size:20px;line-height:26px}.plugin-catalog-content{min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:18px;overflow-wrap:anywhere}.plugin-catalog-intro-title{margin:0;font-size:16px;line-height:21px}.plugin-catalog-intro{margin:5px 0 16px;color:var(--muted);font-size:13px;line-height:18px}.plugin-catalog-count{font-size:12px;line-height:17px;text-transform:uppercase;letter-spacing:.55px;color:var(--muted)}
.plugin-catalog-list,.plugin-detail-facts{overflow:hidden;border:1px solid var(--glass-border);border-radius:20px;background:var(--glass)}.plugin-catalog-item{display:flex;width:100%;min-height:62px;align-items:center;gap:10px;border:0;background:transparent;padding:9px 12px;text-align:left;color:var(--ink);cursor:pointer}.plugin-catalog-item+.plugin-catalog-item{border-top:1px solid var(--line)}.plugin-catalog-item:hover{background:var(--primary-soft)}.plugin-catalog-item img,.plugin-logo-fallback{width:36px;height:36px;flex:none;border-radius:9px;object-fit:contain;background:var(--surface)}.plugin-logo-fallback{display:grid;place-items:center;color:var(--primary);font-size:20px;font-weight:700}.plugin-catalog-item img.plugin-logo-wordmark{width:46px}.plugin-catalog-copy{min-width:0;flex:1}.plugin-catalog-copy strong,.plugin-catalog-copy>span{display:block}.plugin-catalog-copy strong{overflow:hidden;font-size:14px;line-height:18px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.plugin-catalog-copy>span{overflow:hidden;margin-top:2px;color:var(--muted);font-size:11.5px;line-height:15px;text-overflow:ellipsis;white-space:nowrap}.plugin-catalog-arrow{color:var(--muted);font-size:20px}
.plugin-detail-hero{text-align:center;padding:20px 0}.plugin-detail-hero>img,.plugin-detail-hero>.plugin-logo-fallback{width:72px;height:72px;margin:auto;object-fit:contain}.plugin-detail-hero h3{font-size:25px;line-height:31px;margin:15px 0 7px}.plugin-detail-hero p{margin:0;color:var(--muted);font-size:15px;line-height:22px;white-space:pre-line}.plugin-detail-facts{margin:12px 0}.plugin-detail-facts>div{padding:12px 16px}.plugin-detail-facts>div+div{border-top:1px solid var(--line)}.plugin-detail-facts dt{color:var(--muted);font-size:10px;line-height:14px;text-transform:uppercase;letter-spacing:.6px}.plugin-detail-facts dd{margin:2px 0 0;font-size:15px;line-height:20px}.plugin-website-button{display:flex;width:100%;min-height:50px;align-items:center;justify-content:center;margin-top:24px;border:0;border-radius:18px;background:var(--primary);color:var(--surface);padding:12px;font-size:14px;line-height:19px;font-weight:600;text-decoration:none;cursor:pointer}.plugin-catalog-state{padding:20px 0;color:var(--muted);font-size:15px;line-height:21px}
@media(prefers-reduced-transparency:reduce){.plugin-catalog-dialog{background:var(--canvas)}.plugin-catalog-list,.plugin-detail-facts{background:var(--surface)}}

/* Feedback fields share the frosted dialog material instead of opaque blocks. */
.negative-feedback-dialog {
  --feedback-field:var(--surface);
  --feedback-menu:var(--surface);
  border:1px solid var(--glass-border);
}
.negative-feedback-dialog .feedback-field-label,
.negative-feedback-dialog .feedback-reason-picker,
.negative-feedback-dialog label { color:var(--text-soft); }
.negative-feedback-dialog .feedback-reason-trigger,
.negative-feedback-dialog textarea,
.negative-feedback-dialog .feedback-form-actions button:not(.feedback-submit) {
  border:1px solid var(--glass-border);
  background:var(--feedback-field);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.75);
  border-radius:16px;
  color:var(--ink);
}
.negative-feedback-dialog .feedback-reason-trigger { font-size:15px; line-height:21px; }
.negative-feedback-dialog textarea { min-height:112px; padding:12px 14px; font-size:15px; line-height:22px; }
.negative-feedback-dialog textarea::placeholder { color:var(--muted); opacity:1; }
.negative-feedback-dialog .feedback-reason-menu {
  background:var(--feedback-menu);
  border-color:var(--glass-border);
  border-radius:16px;
  box-shadow:var(--glass-shadow);
}
.negative-feedback-dialog .feedback-reason-trigger:focus-visible,
.negative-feedback-dialog .feedback-reason-option:focus-visible,
.negative-feedback-dialog textarea:focus-visible {
  outline:2px solid var(--primary);
  outline-offset:2px;
  border-color:var(--border-strong);
}
.negative-feedback-dialog .feedback-form-actions button { min-height:40px; padding:0 15px; border-radius:16px; }
@supports ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))) {
  .negative-feedback-dialog { --feedback-field:rgba(255,255,255,.55); --feedback-menu:rgba(255,255,255,.9); }
}
@media(prefers-reduced-transparency:reduce) {
  .negative-feedback-dialog { --feedback-field:var(--surface); --feedback-menu:var(--surface); }
}
@media(forced-colors:active) {
  .negative-feedback-dialog { --feedback-field:Canvas; --feedback-menu:Canvas; }
  .negative-feedback-dialog .feedback-reason-trigger,.negative-feedback-dialog textarea,
  .negative-feedback-dialog .feedback-reason-menu,.negative-feedback-dialog .feedback-form-actions button {
    border-color:ButtonText; box-shadow:none; color:CanvasText;
  }
}

/* Sign-in uses the same glass material as feedback; Google owns its blue button. */
.auth-dialog {
  --auth-field:var(--surface);
  border:1px solid var(--glass-border);
}
.auth-dialog .auth-provider,
.auth-dialog .auth-step input,
.auth-dialog .dialog-close {
  border:1px solid var(--glass-border);
  background:var(--auth-field);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.75);
}
.auth-dialog .auth-provider:hover { background:var(--primary-soft); }
.auth-dialog .auth-gate-hero { border-color:var(--glass-border); background:var(--auth-field); }
.auth-dialog .google-button-host { overflow:visible; }
@supports ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))) {
  .auth-dialog { --auth-field:rgba(255,255,255,.55); }
}
@media(prefers-reduced-transparency:reduce) {
  .auth-dialog { --auth-field:var(--surface); }
}
@media(forced-colors:active) {
  .auth-dialog { --auth-field:Canvas; }
  .auth-dialog .auth-provider,.auth-dialog .auth-step input,.auth-dialog .dialog-close {
    border-color:ButtonText; box-shadow:none; color:CanvasText;
  }
}

/* TransitRouteCards: native mobile identity, facts, and four-stop summary. */
.transit-card { --transit-color:var(--primary); padding:14px; gap:16px; border-radius:20px; }
.transit-card-head { padding:0; border:0; }
.transit-mode-icon { display:grid; place-items:center; width:42px; height:42px; flex:none; border-radius:13px; background:var(--primary-soft); color:var(--primary); }
.transit-mode-icon svg { width:22px; height:22px; }
.transit-line-identity { min-width:0; flex:1; }
.transit-card-eyebrow { display:block; color:var(--ink); font-size:16px; line-height:21px; letter-spacing:0; text-transform:none; }
.transit-line-label { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--muted); font-size:11px; line-height:15px; text-transform:none; }
.transit-line-badge { flex:none; max-width:46%; min-height:30px; width:auto; padding:6px 12px; border-radius:999px; background:var(--primary); color:#fff; font-size:12px; line-height:17px; box-shadow:none; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.transit-card-title { padding:0; font-size:14px; line-height:19px; font-weight:600; }
.transit-facts { display:flex; align-self:flex-start; align-items:center; gap:6px; margin:0; padding:4px 9px; border-radius:999px; background:var(--primary-soft); }
.transit-facts span { margin:0; padding:0; border:0; border-radius:0; background:transparent; color:var(--muted); font-size:12px; line-height:17px; font-weight:400; }
.transit-stops { margin:0; padding:0; gap:0; }
.transit-stops:before { content:none; }
.transit-stops li { grid-template-columns:14px minmax(0,1fr); column-gap:11px; min-height:31px; font-size:15px; line-height:20px; color:var(--ink); font-weight:600; }
.transit-stops li:not(:last-child):before { content:""; position:absolute; top:10px; bottom:0; left:6px; width:2px; background:var(--primary); opacity:.28; }
.transit-stop-label { padding-bottom:9px; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }
.transit-stop-marker { width:7px; height:7px; margin:2px auto 0; border:0; background:var(--primary); opacity:.42; }
.transit-stops li.is-first .transit-stop-marker,.transit-stops li.is-last .transit-stop-marker { width:10px; height:10px; margin-top:0; border:2px solid var(--primary); opacity:1; }
.transit-stops li.is-first .transit-stop-marker { background:var(--surface); }
.transit-stops li.is-first,.transit-stops li.is-last { font-weight:600; }

.transit-line-badge { height:auto; }
.transit-facts .transit-fact { display:inline-flex; align-items:center; gap:5px; }
.transit-fact-icon { display:inline-flex; }
.transit-fact-icon svg { width:13px; height:13px; }

/* RealEstateCards uses the same compact photo carousel as the mobile app. */
.real-estate-carousel { margin-top:14px; }
.real-estate-carousel-header { display:flex; min-height:24px; align-items:center; justify-content:space-between; margin-bottom:8px; color:var(--ink); font-size:13px; line-height:18px; }
.real-estate-carousel-position { color:var(--muted); font-weight:600; }
.real-estate-card-strip { display:flex; gap:12px; overflow-x:auto; padding:2px 18px 10px 2px; scroll-snap-type:x mandatory; scrollbar-width:none; }
.real-estate-card-strip::-webkit-scrollbar { display:none; }
.real-estate-card { display:flex; width:268px; flex:0 0 268px; flex-direction:column; overflow:hidden; border:1px solid var(--glass-border); border-radius:18px; background:var(--glass); color:var(--ink); text-decoration:none; scroll-snap-align:start; }
.real-estate-card:active { opacity:.78; }
.real-estate-card-media { position:relative; width:100%; height:154px; flex:none; overflow:hidden; background:var(--surface-muted); }
.real-estate-card-media>img { position:absolute; inset:0; display:block; width:100%; height:100%; object-fit:cover; }
.real-estate-card-media>svg { position:absolute; top:50%; left:50%; width:32px; height:32px; margin:0; fill:none; stroke:var(--primary); stroke-width:1.7; transform:translate(-50%,-50%); }
.real-estate-card-price { position:absolute; top:10px; right:10px; max-width:76%; overflow:hidden; border-radius:999px; background:var(--primary-soft); padding:5px 9px; color:var(--primary); font-size:11px; line-height:15px; font-weight:600; text-overflow:ellipsis; white-space:nowrap; }
.real-estate-card-body { display:flex; min-width:0; flex-direction:column; gap:5px; padding:12px 13px; }
.real-estate-card-title { display:block; overflow:hidden; color:var(--ink); font-size:16px; line-height:21px; text-overflow:ellipsis; white-space:nowrap; }
.real-estate-card-offer { align-self:flex-start; max-width:100%; overflow:hidden; border-radius:999px; background:var(--primary-soft); padding:4px 9px; color:var(--primary); font-size:12px; line-height:17px; text-overflow:ellipsis; white-space:nowrap; }
.real-estate-card-location { display:flex; min-width:0; align-items:center; gap:5px; overflow:hidden; color:var(--muted); font-size:12px; line-height:17px; white-space:nowrap; }
.real-estate-card-location>span { overflow:hidden; text-overflow:ellipsis; }
.real-estate-card-specs { display:flex; flex-wrap:nowrap; gap:4px 8px; }
.real-estate-card-specs>span { display:inline-flex; min-width:0; flex:0 1 auto; align-items:center; gap:4px; overflow:hidden; color:var(--muted); font-size:11px; line-height:16px; white-space:nowrap; }
.real-estate-card-specs>span>span { min-width:0; overflow:hidden; text-overflow:ellipsis; }
.real-estate-fact-icon { width:15px; height:15px; flex:none; fill:none; stroke:var(--muted); stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
.real-estate-card-action { display:inline-flex; min-height:32px; align-self:flex-start; align-items:center; gap:5px; margin-top:4px; border:1px solid #cbd7e8; border-radius:999px; background:var(--primary-soft); padding:5px 10px; color:var(--primary); font-size:11px; line-height:16px; font-weight:600; }
.real-estate-card-action img { width:14px; height:14px; border-radius:3px; background:#fff; object-fit:contain; }
.real-estate-card:hover .real-estate-card-action { border-color:#cbd7e8; background:var(--primary-soft); color:var(--primary); }
@supports ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))) { .real-estate-card { background:var(--glass-overlay); -webkit-backdrop-filter:blur(16px) saturate(135%); backdrop-filter:blur(16px) saturate(135%); } }
@media(max-width:640px) { .real-estate-card-strip { margin-right:-18px; } }
