/* Copyright 2026 The Chromium Authors
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file. */

/* #css_wrapper_metadata_start
 * #type=style-lit
 * #import=//resources/cr_elements/cr_icons_lit.css.js
 * #import=//resources/cr_components/composebox/composebox_shared_style.css.js
 * #import=./searchbox_shared_style.css.js
 * #scheme=relative
 * #include=cr-icons-lit composebox-shared-style searchbox-shared-style
 * #css_wrapper_metadata_end */

:host {
  -webkit-app-region: drag;
  /* Embedders should define --cr-searchbox-min-width. */
  --cr-searchbox-width: var(--cr-searchbox-min-width);
  --cr-searchbox-border-radius: calc(0.5 * var(--cr-searchbox-height));
  --cr-searchbox-icon-width: 26px;
  --cr-searchbox-inner-icon-margin: 8px;
  --cr-searchbox-voice-icon-offset: 16px;
  --cr-searchbox-voice-search-button-width: 0px;
  --cr-compose-button-width: 104px;
  --cr-searchbox-icon-spacing: 11px;
  --color-searchbox-foreground: #1f1f1f;
  --color-searchbox-border: #dadce0;
  --color-searchbox-results-typed-prefix: var(
      --color-searchbox-results-foreground, #1f1f1f);
  --color-searchbox-selection-background: rgba(26, 115, 232, 0.2);
  --color-searchbox-selection-foreground: #1f1f1f;
  --cr-composebox-background-color: var(--color-searchbox-background);
  border: var(--cr-searchbox-border, 2px solid transparent);
  box-sizing: border-box;

  border-radius: var(--cr-searchbox-border-radius);
  font-size: var(--cr-searchbox-font-size, 16px);
  height: auto;
  min-height: var(--cr-searchbox-height);
  width: var(--cr-searchbox-width);
  z-index: 99;
}

:host([searchbox-chrome-refresh-theming][dropdown-is-visible]) {
  --cr-searchbox-shadow: 0 0 12px 4px var(--color-searchbox-shadow);
}

:host([searchbox-chrome-refresh-theming]:not(
    [searchbox-steady-state-shadow]):not([dropdown-is-visible])) {
  --cr-searchbox-shadow: none;
}

:host-context([searchbox-width-behavior_='revert']):host(
    [can-show-secondary-side]:not([dropdown-is-visible])) {
  --cr-searchbox-width: var(--cr-searchbox-min-width);
}

/**
 * Show the secondary side if it can be shown and is currently available to be
 * shown.
 */
:host([can-show-secondary-side][has-secondary-side]) {
  --cr-searchbox-secondary-side-display: block;
}

:host([is-dark]) {
  --color-searchbox-foreground: #fff;
  --color-searchbox-border: #3c4043;
  --color-searchbox-selection-foreground: #fff;
  --cr-searchbox-shadow: 0 2px 6px 0 var(--color-searchbox-shadow);
}

:host-context([energy-effect-enabled_]) {
  --cr-searchbox-shadow: 0 4px 18px -2px rgba(60, 64, 67, 0.12);
}

:host([searchbox-voice-search-enabled_]) {
  --cr-searchbox-voice-search-button-width: var(--cr-searchbox-icon-width);
}

:host([searchbox-lens-search-enabled_]) {
  --cr-searchbox-voice-icon-offset: 53px;
}

@media (forced-colors: active) {
  :host {
    border: 1px solid ActiveBorder;
  }
}

:host([dropdown-is-visible]) {
  box-shadow: none;
}

#inputWrapper {
  background-color: var(--color-searchbox-background);
  border-radius: var(--cr-searchbox-border-radius);
  box-shadow: 0 4px 20px 2px rgba(0, 0, 0, 0.25);
  display: flex;
  flex-direction: column;
  height: auto;
  min-height: var(--cr-searchbox-height);
  padding-top: 6px;
  position: relative;
  width: 100%;
}

:host([in-voice-search-mode]) #inputWrapper {
  display: none;
}

:host([is-fusebox-enabled]) #inputWrapper {
  /* Elements like the IPH must overflow. */
  overflow: visible;
}

:host([is-fusebox-enabled]) .dropdownContainer {
  border-radius: 0 0 var(--cr-searchbox-border-radius)
      var(--cr-searchbox-border-radius);
  overflow: hidden;
}

:host([is-fusebox-enabled]) .contextualEntrypointContainer {
  overflow: visible;
  left: unset;
  position: relative;
  right: unset;
  top: unset;
  width: 100%;
}

cr-searchbox-input::part(searchbox-input) {
  align-self: center;
  padding-top: 2px;
}

:host([compose-button-enabled]) cr-searchbox-input::part(searchbox-input) {
  padding-inline-end: 16px;
}

:host([is-fusebox-enabled]) cr-searchbox-input::part(searchbox-input) {
  padding-inline-start: 12px;
  padding-inline-end: 64px;
}

:host cr-searchbox-input::part(searchbox-input) {
  padding-inline-end: 110px;
}

:host([multi-line-enabled][is-fusebox-enabled])
    cr-searchbox-input::part(searchbox-input) {
  padding-bottom: 10px;
  padding-top: 16px;
}

:host([searchbox-chrome-refresh-theming])
    cr-searchbox-input::part(searchbox-input)::selection {
  background-color: var(--color-searchbox-selection-background);
  color: var(--color-searchbox-selection-foreground);
}

:host(:not([is-fusebox-enabled])) cr-searchbox-input::part(icon) {
  align-self: center;
}

.searchbox-icon-button {
  right: 16px;
  width: var(--cr-searchbox-icon-width);
}

:host(:not([is-fusebox-enabled])) .searchbox-icon-button-container {
  align-self: center;
}


:host([compose-button-enabled][searchbox-lens-search-enabled_]) {
  --cr-searchbox-voice-icon-offset: calc(
      16px + 2 * var(--cr-searchbox-icon-spacing) +
      var(--cr-searchbox-icon-width) + var(--cr-compose-button-width));
}

cr-searchbox-input::part(searchbox-input)::placeholder {
  color: var(--cr-composebox-input-placeholder-color,
      var(--color-composebox-type-ahead));
  font-weight: 400;
}

/* cr-searchbox-input hides placeholder on focus by default; override here. */
cr-searchbox-input::part(searchbox-input):focus::placeholder {
  visibility: visible;
}

:host([is-fusebox-enabled]) {
  --cr-searchbox-border-radius: 28px;
  --cr-searchbox-dropdown-padding-bottom: 10px;
  --cr-searchbox-dropdown-padding-top: 10px;
  --cr-searchbox-height: 48px;
  /* Cannot touch this searchbox icon size var;
    it's used by the rainbow outline AI button class in
    searchbox_compose_button.css. Should be different
    from other searchbox icons (composebox, voice, lens). */
  --cr-searchbox-icon-size: 40px;
  --cr-searchbox-voice-lens-size: 36px;
--contextual-entrypoint-and-carousel-context-menu-container-padding-inline-start
  : 0px;
  --text-input-inline-start-spacing: 16px;
  --cr-searchbox-match-padding-inline-start: 16px;

  /* Used in search-animated-glow-element. */
  --search-animated-glow-drag-drop-placeholder-top: 16px;
}

:host-context([energy-effect-enabled_]):host([is-fusebox-enabled]) {
  --cr-searchbox-border-radius: 28px;
  --cr-searchbox-border: 1px solid var(--color-searchbox-border);
}

cr-searchbox-dropdown::part(dropdown-content) {
  background-color: unset;
  border-radius: unset;
  box-shadow: unset;
  gap: unset;
  margin-bottom: unset;
  overflow: unset;
  padding-bottom: 0;
  padding-top: unset;
}

:host([is-fusebox-enabled])
    cr-composebox-contextual-entrypoint-and-menu::part(
        context-menu-entrypoint-icon) {
  --cr-icon-button-icon-size: 24px;
  --cr-icon-button-margin-start: 0;
  --cr-icon-button-size: 36px;
}

.contextualEntrypointContainer,
.context-menu-container,
cr-composebox-contextual-entrypoint-and-menu {
  position: relative;
  z-index: var(--cr-composebox-context-menu-z-index, 1001);
}

:host([is-fusebox-enabled]) .context-menu-container {
  padding-block: 0;
}

:host([is-fusebox-enabled]) cr-composebox-contextual-entrypoint-and-menu {
  color: var(--color-searchbox-results-foreground);
  padding-inline-end: 6px;
  padding-inline-start: 0;
  position: relative;
  z-index: var(--cr-composebox-context-menu-z-index, 1001);
}

#inputContainer {
  background-color: var(--color-searchbox-background);
  border-radius: 26px;
  box-shadow: var(--cr-searchbox-shadow);
  display: flex;
  flex-direction: column;
  width: 100%;
}

:host([is-fusebox-enabled][dropdown-is-visible]),
:host([is-fusebox-enabled]:not([context-files-count_='0'])) {
  box-shadow: none;
}

:host([is-fusebox-enabled]) .searchbox-icon-button-container.lens:hover,
:host([is-fusebox-enabled]) .searchbox-icon-button-container.voice:hover {
  background-color: var(--color-new-tab-page-realbox-next-icon-hover);
  border-radius: 50%;
}

:host([is-fusebox-enabled]) cr-searchbox-input {
  --cr-searchbox-icon-container-size: 36px;
  --cr-searchbox-icon-left-position: 16px;
}

:host([is-fusebox-enabled]) cr-searchbox-input::part(icon) {
  display: flex;
}

:host([is-fusebox-enabled]) .searchbox-icon-button-container {
  top: 10px;
}

:host([is-fusebox-enabled][compose-button-enabled]
    [searchbox-lens-search-enabled_]) .searchbox-icon-button-container.lens {
  inset-inline-end: calc(
      var(--cr-searchbox-icon-spacing) + var(--cr-compose-button-width));
}

:host([is-fusebox-enabled][compose-button-enabled]
    [searchbox-lens-search-enabled_]) .searchbox-icon-button-container.voice {
  inset-inline-end: calc(var(--cr-searchbox-voice-lens-size)
      + var(--cr-searchbox-icon-spacing) + var(--cr-compose-button-width));
}

:host([is-fusebox-enabled][is-dragging-file]) {
  --cr-searchbox-compose-button-z-index: 99;
}

:host([is-fusebox-enabled][is-dragging-file])
    cr-searchbox-input::part(searchbox-input),
:host([is-fusebox-enabled][is-dragging-file])
    cr-searchbox-input::part(icon),
:host([is-fusebox-enabled][is-dragging-file])
    .searchbox-icon-button-container,
:host([is-fusebox-enabled][is-dragging-file]) .searchbox-icon-button {
  opacity: 0;
}

:host([is-fusebox-enabled]) .contextualEntrypointContainerCompact {
  box-shadow: none;
  width: auto;
}

:host([is-fusebox-enabled]) #composeButton {
  top: var(--omnibox-everywhere-top-actions-top, 12px);
  margin-inline-end: 58px;
}

#bottomControls {
  padding-block-start: 4px;
  padding-block-end: 12px;
}

#bottomControls #context {
  --contextual-entrypoint-and-carousel-context-entrypoint-padding-inline-start:
    0;
  padding-inline-start: 0;
}

#bottomControls .searchbox-icon-button-container {
  inset-inline-end: unset;
  top: 0;
}

/* TODO(crbug.com/532200145): Refine the selectors. New interactive elements
 * must be added to this list because the root container has
 * '-webkit-app-region: drag' enabled; otherwise, clicks will be swallowed by
 * the window drag handler. */
cr-searchbox-input::part(searchbox-input),
cr-searchbox-dropdown::part(dropdown-content),
cr-searchbox-compose-button::part(compose-button),
#composeButton,
#context,
#contextEntrypoint,
cr-composebox-contextual-entrypoint-and-menu,
cr-composebox-contextual-entrypoint-button,
.searchbox-icon-button,
#voiceSearchButton,
#lensSearchButton,
#profileIcon,
#screenshotMenu {
  -webkit-app-region: no-drag;
}

cr-searchbox-input::part(icon) {
  -webkit-app-region: drag;
  -webkit-user-drag: none;
}

