chromium/chrome/browser/resources/search_engine_choice/app.html

<style include="cr-icons tangible-sync-style-shared">
  :host {
    --background-color: white;
    --search-engine-icon-size: 24px;
    --action-button-margins: 24px;
    --content-container-width: 500px;
    --radio-button-horizontal-padding: 16px;
    --choice-gap: 16px;
    --search-engine-name-line-height: 20px;
    --marketing-snippet-line-height: 16px;
    --choice-height: calc(var(--search-engine-name-line-height) +
        var(--marketing-snippet-line-height));
    color: var(--cr-primary-text-color);
  }

  .tangible-sync-style-left-banner {
    content: url(images/left_illustration.svg);
  }

  .tangible-sync-style-right-banner {
    content: url(images/right_illustration.svg);
  }

  .tangible-sync-style-left-banner,
  .tangible-sync-style-right-banner {
    position: fixed;
  }

  #actionButton {
    height: unset;
    margin: var(--action-button-margins);
    padding: 6px 16px 6px 12px;
    pointer-events: all;
    text-align: center;
  }

  .content-container {
    align-items: center;
    display: flex;
    flex-direction: column;
    height: 100vh;
    margin: auto;
    text-align: center;
    width: var(--content-container-width);
  }

  #choiceList {
    display: flex;
    flex-direction: column;
    text-align: start;
    width: 100%;
  }

  .title {
    font-size: 1.5rem;
    font-weight: 500;
    line-height: 32px;
    margin: 0;
  }

  .subtitle {
    color: var(--cr-secondary-text-color);
    font-size: 1rem;
    font-weight: 400;
    line-height: 24px;
    margin: 0 0 24px;
  }

  .choice {
    display: flex;
    flex-direction: row;
    gap: var(--choice-gap);
  }

  .choice-text {
    --choice-text-width: calc(var(--content-container-width) -
        2 * var(--radio-button-horizontal-padding) -
        var(--search-engine-icon-size) - var(--choice-gap) -
        var(--cr-radio-button-label-spacing) - var(--cr-radio-button-size));
    display: flex;
    flex-direction: column;
    width: var(--choice-text-width);
  }

  .choice-icon {
    background-size: var(--search-engine-icon-size);
    border-radius: 4px;
    flex: none;
    height: var(--search-engine-icon-size);
    /* So that the icon doesn't change position when the snippet is expanded. */
    margin-top: calc((var(--choice-height) - var(--search-engine-icon-size))/2);
    width: var(--search-engine-icon-size);
  }

  .choice-title {
    align-items: center;
    display: flex;
    flex-direction: row;
    font-family: Roboto, Arial;
    font-size: 0.8125rem;
    font-weight: 400;
    line-height: 20px;
    text-align: start;
  }

  cr-radio-button {
    /* So that the radio button doesn't change position when the snippet is
    expanded. */
    --cr-radio-button-disc-margin-block-start: calc((var(--choice-height) -
        var(--cr-radio-button-size))/2);
    --cr-radio-button-label-spacing: 16px;
    --cr-radio-button-size: 20px;
    align-items: start;
    background-color: var(--cr-fallback-color-surface2);
    border-bottom: 1px solid var(--background-color);
    border-radius: 2px;
    padding: 8px var(--radio-button-horizontal-padding);
  }

  cr-radio-button:first-of-type {
    border-top-left-radius: 16px;
    border-top-right-radius: 16px;
  }

  cr-radio-button:last-of-type {
    border-bottom: unset;
    border-bottom-left-radius: 16px;
    border-bottom-right-radius: 16px;
  }
  cr-radio-button[checked] {
    background-color: var(--cr-fallback-color-tonal-container);
  }

  /* Using a class instead of relying only on the pseudo-class allows
  disabling this style in screenshot tests, where the inability to
  control the pointer location causes some flakiness. */
  .hoverable:hover:not([checked]) {
    background-color: var(--cr-hover-on-subtle-background-color);
  }

  .product-logo {
    height: 48px;
    margin: 64px 0 16px;
    width: 48px;
  }

  #infoLink {
    color: var(--google-blue-600);
    white-space: nowrap;
  }

  cr-dialog {
    --cr-dialog-body-padding-horizontal: 24px;
    --cr-dialog-button-container-padding-horizontal: 24px;
    --cr-dialog-button-container-padding-bottom: 24px;
    --cr-dialog-button-container-padding-top: 20px;
    --cr-dialog-title-font-size: 1.375rem;
    --cr-dialog-title-slot-padding-bottom: 24px;
    --cr-dialog-title-slot-padding-end: 24px;
    --cr-dialog-title-slot-padding-start: 24px;
    --cr-dialog-title-slot-padding-top: 24px;
  }

  cr-dialog div[slot="title"] {
    font-size: 1.375rem;
    font-weight: 400;
    line-height: 28px;
  }

  cr-dialog p {
    font-family: Roboto, Arial;
    font-size: 0.875rem;
    font-weight: 400;
    line-height: 20px;
    margin: 0 0 24px;
  }

  #buttonContainer {
    bottom: 0;
    display: flex;
    justify-content: flex-end;
    pointer-events: none;
    position: fixed;
    width: 100vw;
  }

  .cr-icon {
    --cr-icon-color: currentColor;
    --cr-icon-image: url(images/arrow_downward.svg);
    --cr-icon-ripple-size: 18px;
    --cr-icon-size: 18px;
    margin: 0;
  }

  #choiceList.overlap-mitigation {
      --button-container-height: calc(var(--cr-button-height) + 2 *
          var(--action-button-margins));
      padding-bottom: var(--button-container-height);
  }

  #buttonContainer.overlap-mitigation {
      background-color: var(--background-color);
      border-top: var(--cr-separator-line);
      pointer-events: unset;
    }

  .marketing-snippet {
    color: var(--cr-secondary-text-color);
    font-size: 0.75rem;
    font-weight: 400;
    line-height: var(--marketing-snippet-line-height);
  }

  .truncate-text {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .search-engine-name {
    font-size: 0.875rem;
    font-weight: 700;
    line-height: var(--search-engine-name-line-height);
  }

  .info-dialog-illustration {
    content: url(images/info_dialog_illustration.svg);
    margin-bottom: 24px;
    width: 100%;
  }

  @media (prefers-color-scheme: dark) {
    :host {
      --background-color: var(--md-background-color);
    }

    .info-dialog-illustration {
      content: url(images/info_dialog_illustration_dark.svg);
    }

    .tangible-sync-style-left-banner {
      content: url(images/left_illustration_dark.svg);
    }

    .tangible-sync-style-right-banner {
      content: url(images/right_illustration_dark.svg);
    }

    #infoLink {
      color: var(--google-blue-300);
    }

    cr-radio-button {
      --cr-radio-button-unchecked-color: var(--google-grey-100);
    }
  }

  @media screen and (max-width: 780px) {
    .tangible-sync-style-left-banner,
    .tangible-sync-style-right-banner {
      display: none;
    }
  }

  @media screen and (max-width: 548px) {
    :host {
      --content-container-width: 452px;
    }
  }
</style>

<img class="tangible-sync-style-left-banner" id="leftBanner" alt="">
<img class="tangible-sync-style-right-banner" id="rightBanner" alt="">
<div class="content-container">
  <img class="product-logo" src="images/product-logo.svg"
      alt="$i18n{productLogoAltText}" aria-hidden="true">
  <h1 class="title">$i18n{title}</h1>
  <p class="subtitle">
    $i18n{subtitle}
    <a id="infoLink" href="" on-click="onLinkClicked_"
        aria-label="$i18n{subtitleInfoLinkA11yLabel}">
      $i18n{subtitleInfoLink}
    </a>
  </p>
  <cr-radio-group id="choiceList"
      selected="{{selectedChoice_}}" aria-label="$i18n{choiceListA11yLabel}"
      role="list">
    <template is="dom-repeat" items="[[choiceList_]]">
        <cr-radio-button aria-label$="[[item.name]]" role="listitem"
            class="label-first hoverable"
            name="[[item.prepopulateId]]">
          <div class="choice">
            <div class="choice-icon"
                style$="background-image: [[item.iconPath]];"></div>
            <div class="choice-text">
              <div class="search-engine-name">
                [[item.name]]
              </div>
              <div class$="marketing-snippet
                  [[getMarketingSnippetClass_(item, snippetDisplayed_)]]">
                [[item.marketingSnippet]]
              </div>
            </div>
          </div>
        </cr-radio-button>
    </template>
  </cr-radio-group>
</div>
<div id="buttonContainer">
  <cr-button class="action-button" id="actionButton"
      on-click="onActionButtonClicked_" disabled="[[isActionButtonDisabled_]]">
      <div class="cr-icon" slot="prefix-icon" title=""
          hidden="[[hasUserScrolledToTheBottom_]]">
      </div>
      [[actionButtonText_]]
  </cr-button>
</div>

<cr-dialog id="infoDialog">
  <div slot="title">
    <img class="info-dialog-illustration" alt="">
    <div>$i18n{infoDialogTitle}</div>
  </div>
  <div slot="body">
    <p>$i18n{infoDialogFirstParagraph}</p>
    <p>$i18nRaw{infoDialogSecondParagraph}</p>
    <p>$i18n{infoDialogThirdParagraph}</p>
  </div>
  <div slot="button-container">
    <cr-button class="action-button" id="infoDialogButton"
        on-click="onInfoDialogButtonClicked_">
      $i18n{infoDialogButtonText}
    </cr-button>
  </div>
</cr-dialog>