<!--
@license
Copyright (C) 2019 The Android Open Source Project

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!--
  This is shared styles for change-view-integration endpoints.
  All plugins that registered that endpoint should include this in
  the component to have a consistent UX:

  <style include="gr-change-view-integration-shared-styles"></style>

  And use those defined class to apply these styles.
-->
<dom-module id="gr-change-view-integration-shared-styles">
  <template>
    <style>
      /* TODO(taoalpha): update spacings once change 241809 submitted */
      .header {
        color: var(--primary-text-color);
        background-color: var(--table-header-background-color);
        justify-content: space-between;
        padding: .5em var(--default-horizontal-margin, 1rem);
        border-bottom: 1px solid var(--border-color);
      }
      .header .label {
        font-weight: var(--font-weight-bold);
        font-size: 1.17em;
        margin: 0 1em 0 0;
      }
      .header .note {
        color: var(--deemphasized-text-color);
      }
      .content {
        background-color: var(--view-background-color);
      }
      .header a,
      .content a {
        color: var(--link-color);
      }
    </style>
  </template>
</dom-module>
