/* MOVIECMS-TEMPLATE-INTERACTIONS-R5-A11-20260908
 * OLETV-family search geometry, accessible playback disclosure, and one
 * mobile bottom-reserve owner. A11 is a single replacement for R5, based on
 * the deployed A10 bytes; it keeps the original SSR links/content authoritative.
 */

/* Poster-card title and rating contract for every active template family.
 * Search/list rows are intentionally excluded because their title sits beside
 * the image rather than below it. */
body.front.portal:is(.tpl-iqiyi, .tpl-haoju, .tpl-keke)
  :is(
      .movie-card,
      .ds3-card,
      .stream-poster-card,
      .keke-card,
      .jable-video-card,
      .tube-video-card,
      .friday-card
    )
  > :is(h2, h3),
body.front.portal:is(.tpl-iqiyi, .tpl-haoju, .tpl-keke)
  .poster-row:not(.search-results)
  > .portal-card
  > h3,
body.front.portal:is(.tpl-iqiyi, .tpl-haoju, .tpl-keke)
  .movie-card
  > div
  > .movie-title {
  display: -webkit-box !important;
  width: 100% !important;
  min-width: 0 !important;
  margin-inline: auto !important;
  overflow: hidden !important;
  text-align: center !important;
  overflow-wrap: anywhere !important;
  -webkit-box-orient: vertical !important;
  -webkit-line-clamp: 2 !important;
}

.moviecms-card-title > a,
a.moviecms-card-title {
  display: inline !important;
  text-align: inherit !important;
}

.moviecms-card-rating {
  --moviecms-rating-active: var(
    --keke-accent,
    var(
      --haoju-gold,
      var(--portal-accent, var(--stream-accent, var(--accent, #26b889)))
    )
  );
  --moviecms-rating-empty: color-mix(in srgb, currentColor 18%, transparent);
  display: flex !important;
  width: 100% !important;
  min-height: 18px;
  align-items: center;
  justify-content: center;
  margin: 3px 0 0 !important;
  color: inherit;
  line-height: 1;
  text-align: center;
}

.moviecms-star-meter,
.moviecms-card-rating .oule-star-meter {
  position: relative;
  display: inline-block !important;
  width: max-content;
  height: 16px;
  overflow: hidden;
  font-family: Arial, sans-serif;
  font-size: 15px;
  line-height: 16px;
  letter-spacing: 2px;
  white-space: nowrap;
}

.moviecms-star-meter::before,
.moviecms-card-rating .oule-star-meter::before {
  content: "★★★★★";
  color: var(--moviecms-rating-empty);
}

.moviecms-star-meter::after,
.moviecms-card-rating .oule-star-meter::after {
  position: absolute;
  inset: 0 auto 0 0;
  width: var(--moviecms-rating-fill, var(--oule-rating-fill, 0%));
  overflow: hidden;
  content: "★★★★★";
  color: var(--moviecms-rating-active);
  white-space: nowrap;
}

.moviecms-poster-anchor {
  position: relative !important;
}

.moviecms-poster-anchor > [hidden] {
  display: none !important;
}

.moviecms-poster-status {
  position: absolute !important;
  top: 8px !important;
  right: 8px !important;
  bottom: auto !important;
  left: auto !important;
  z-index: 3;
  box-sizing: border-box;
  display: inline-flex !important;
  width: auto !important;
  min-width: 0 !important;
  max-width: calc(100% - 16px) !important;
  min-height: 26px;
  align-items: center;
  justify-content: center;
  padding: 0 9px !important;
  overflow: hidden;
  border: 1px solid color-mix(in srgb, currentColor 22%, transparent);
  border-radius: 999px !important;
  color: var(--keke-chip-text, var(--haoju-chip-text, #06251f)) !important;
  background: var(
    --keke-chip-gradient,
    var(--haoju-chip-gradient, linear-gradient(135deg, #b9f4d4, #55d69b))
  ) !important;
  box-shadow: 0 6px 16px color-mix(in srgb, #000 14%, transparent) !important;
  font-size: 12px !important;
  font-style: normal !important;
  font-weight: 850 !important;
  line-height: 1 !important;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* R5 intentionally promotes the genuine SSR next link to a visible button.
 * Page-number chrome is hidden only after enhancement succeeds; with JS off,
 * or after a failed fetch, the original crawlable href remains available. */
nav.pager.moviecms-manual-load-ready,
nav.stream-pager.moviecms-manual-load-ready {
  min-height: 44px !important;
  overflow-anchor: none;
}

nav.pager.moviecms-manual-load-ready
  > :not(
    .moviecms-load-more-link,
    .moviecms-load-more-status,
    .moviecms-load-more-end
  ),
nav.stream-pager.moviecms-manual-load-ready
  > :not(
    .moviecms-load-more-link,
    .moviecms-load-more-status,
    .moviecms-load-more-end
  ) {
  display: none !important;
}

nav:is(.pager, .stream-pager).moviecms-manual-load-ready
  .moviecms-load-more-link {
  width: min(100%, 280px) !important;
  min-height: 44px !important;
  border: 1px solid
    color-mix(
      in srgb,
      var(--keke-accent, var(--haoju-gold, var(--accent, currentColor))) 58%,
      transparent
    ) !important;
  color: inherit !important;
  background: color-mix(
    in srgb,
    var(--keke-accent, var(--haoju-gold, var(--accent, currentColor))) 12%,
    transparent
  ) !important;
  box-shadow: none !important;
  text-decoration: none !important;
}

nav:is(.pager, .stream-pager).moviecms-manual-load-ready
  .moviecms-load-more-link:is(:hover, :focus-visible) {
  border-color: var(
    --keke-accent,
    var(--haoju-gold, var(--accent, currentColor))
  ) !important;
  background: color-mix(
    in srgb,
    var(--keke-accent, var(--haoju-gold, var(--accent, currentColor))) 20%,
    transparent
  ) !important;
}

nav:is(.pager, .stream-pager).moviecms-manual-load-ready
  .moviecms-load-more-status {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  overflow: hidden !important;
  clip: rect(0 0 0 0) !important;
  clip-path: inset(50%) !important;
  white-space: nowrap !important;
}

/* Search-result cards use a portrait poster and one bounded copy column.
 * The article row height is owned by the poster; long text wraps and clamps
 * inside that same height instead of painting beyond the card. */
@media (max-width: 900px) {
body.front.portal.tpl-keke.search-page:is(
    .site-www-oule-xin,
    .site-www-oletv-xin,
    .site-oletv-xyz.site-oletv
  )
  .keke-list
  > article {
  box-sizing: border-box;
  grid-template-columns: clamp(118px, 9vw, 148px) minmax(0, 1fr) !important;
  align-items: stretch !important;
  gap: 14px !important;
}

body.front.portal.tpl-keke.search-page:is(
    .site-www-oule-xin,
    .site-www-oletv-xin,
    .site-oletv-xyz.site-oletv
  )
  .keke-list
  > article
  > .keke-thumb {
  display: block !important;
  width: 100% !important;
  height: auto !important;
  min-height: 0 !important;
  aspect-ratio: 2 / 3 !important;
  align-self: start !important;
  overflow: hidden !important;
}

body.front.portal.tpl-keke.search-page:is(
    .site-www-oule-xin,
    .site-www-oletv-xin,
    .site-oletv-xyz.site-oletv
  )
  .keke-list
  > article
  > .keke-thumb
  :is(picture, img) {
  display: block !important;
  width: 100% !important;
  height: 100% !important;
}

body.front.portal.tpl-keke.search-page:is(
    .site-www-oule-xin,
    .site-www-oletv-xin,
    .site-oletv-xyz.site-oletv
  )
  .keke-list
  > article
  > .keke-thumb
  img {
  object-fit: cover !important;
  object-position: center !important;
}

body.front.portal.tpl-keke.search-page:is(
    .site-www-oule-xin,
    .site-www-oletv-xin,
    .site-oletv-xyz.site-oletv
  )
  .keke-list
  > article
  > div {
  box-sizing: border-box;
  display: grid !important;
  min-width: 0 !important;
  min-height: 0 !important;
  height: 100% !important;
  grid-template-rows: auto auto minmax(0, 1fr) !important;
  align-content: start !important;
  gap: 7px !important;
  overflow: hidden !important;
}

body.front.portal.tpl-keke.search-page:is(
    .site-www-oule-xin,
    .site-www-oletv-xin,
    .site-oletv-xyz.site-oletv
  )
  .keke-list
  > article
  > div
  > :is(h2, h3, p) {
  min-width: 0 !important;
  margin: 0 !important;
  overflow: hidden !important;
  overflow-wrap: anywhere !important;
  word-break: break-word !important;
  -webkit-box-orient: vertical !important;
}

body.front.portal.tpl-keke.search-page:is(
    .site-www-oule-xin,
    .site-www-oletv-xin,
    .site-oletv-xyz.site-oletv
  )
  .keke-list
  > article
  > div
  > :is(h2, h3) {
  display: -webkit-box !important;
  -webkit-line-clamp: 2 !important;
}

body.front.portal.tpl-keke.search-page:is(
    .site-www-oule-xin,
    .site-www-oletv-xin,
    .site-oletv-xyz.site-oletv
  )
  .keke-list
  > article
  > div
  > p:first-of-type {
  display: -webkit-box !important;
  -webkit-line-clamp: 2 !important;
}

body.front.portal.tpl-keke.search-page:is(
    .site-www-oule-xin,
    .site-www-oletv-xin,
    .site-oletv-xyz.site-oletv
  )
  .keke-list
  > article
  > div
  > p:last-of-type {
  display: -webkit-box !important;
  -webkit-line-clamp: 4 !important;
}
}

@media (max-width: 900px) {
  .moviecms-poster-status {
    top: 6px !important;
    right: 6px !important;
    max-width: calc(100% - 12px) !important;
    min-height: 22px;
    padding: 0 6px !important;
    font-size: 10px !important;
  }

  .moviecms-star-meter,
  .moviecms-card-rating .oule-star-meter {
    height: 14px;
    font-size: 12px;
    line-height: 14px;
    letter-spacing: 1px;
  }

  /* Haoju H5 uses three genuine SSR poster cards per row.  Restore every
   * server-rendered home card: the legacy sixth-card crop was a display limit,
   * not a data contract.  Keep the existing card padding/gutter owner so this
   * override changes columns and visibility only. */
  body.front.portal.tpl-haoju.haoju-template.haoju-home.haoju-exact
    :is(.ds3-wide-grid, .ds3-card-grid),
  body.front.portal.tpl-haoju.haoju-template.haoju-home.haoju-exact
    .ds3-channel
    .ds3-card-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  }

  body.front.portal.tpl-haoju.haoju-template.haoju-home.haoju-exact
    .ds3-wide-grid
    > .ds3-card:not([hidden]) {
    display: block !important;
  }

  body.front.portal.tpl-haoju.stream-template.stream-category.catalog-page
    .stream-result-panel
    > .stream-card-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: 15px 8px !important;
  }

  /* The isolated OLETV stylesheet carries a legacy mobile rule that hides
   * the whole sidebar even after nav-menu.js adds nav-open.  Restore the
   * genuine panel, and let the runtime language menu paint outside its
   * compact capsule instead of being clipped by that capsule. */
  html:root
    body[class].front.portal.tpl-keke.keke-template.site-oletv-xyz.site-oletv
    #kekeSideNav.keke-sidebar.nav-open {
    display: flex !important;
    transform: translateX(0) !important;
  }

  html:root
    body[class].front.portal.tpl-keke.keke-template.site-oletv-xyz.site-oletv
    .keke-topbar
    .keke-actions
    > .language-switcher {
    position: relative !important;
    z-index: 100 !important;
    overflow: visible !important;
  }

  html:root
    body[class].front.portal.tpl-keke.keke-template.site-oletv-xyz.site-oletv
    .keke-topbar
    .language-switcher-menu {
    z-index: 110 !important;
    overflow: visible !important;
  }

  /* Existing shared/isolated scripts remain the sole interaction owners.
   * This layer only optically centers their one genuine submit icon. */
  html:is(.oule-search-enhanced, .moviecms-oletv-search-enhanced)
    body.front.portal.tpl-keke:is(
      .site-www-oule-xin,
      .site-www-oletv-xin,
      .site-oletv-xyz.site-oletv
    )
    .keke-search
    button {
    position: relative !important;
    display: grid !important;
    visibility: visible !important;
    opacity: 1 !important;
    place-items: center !important;
    overflow: hidden !important;
  }

  html:is(.oule-search-enhanced, .moviecms-oletv-search-enhanced)
    body.front.portal.tpl-keke:is(
      .site-www-oule-xin,
      .site-www-oletv-xin,
      .site-oletv-xyz.site-oletv
    )
    .keke-search
    button::before {
    position: absolute !important;
    top: 50% !important;
    left: 50% !important;
    display: block !important;
    width: 18px !important;
    height: 18px !important;
    margin: 0 !important;
    transform: translate(-50%, -50%) !important;
    transform-origin: center !important;
  }

  html:is(.oule-search-enhanced, .moviecms-oletv-search-enhanced)
    body.front.portal.tpl-keke:is(
      .site-www-oule-xin,
      .site-www-oletv-xin,
      .site-oletv-xyz.site-oletv
    )
    .keke-search.is-open
    button {
    grid-column: 2 !important;
    grid-row: 1 !important;
    z-index: 1 !important;
  }

  /* With JavaScript disabled the isolated template's real GET form remains
   * visible in normal flow; there is no icon-only control with no owner. */
  html:not(.moviecms-oletv-search-enhanced)
    body.front.portal.tpl-keke.keke-template.site-oletv-xyz.site-oletv
    .keke-topbar {
    height: auto !important;
    min-height: 60px !important;
    flex-wrap: wrap !important;
    row-gap: 7px !important;
    padding-block: 10px !important;
  }

  html:not(.moviecms-oletv-search-enhanced)
    body.front.portal.tpl-keke.keke-template.site-oletv-xyz.site-oletv
    .keke-search {
    order: 20 !important;
    display: flex !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: none !important;
    height: 40px !important;
    flex: 1 0 100% !important;
    overflow: visible !important;
  }

  html:not(.moviecms-oletv-search-enhanced)
    body.front.portal.tpl-keke.keke-template.site-oletv-xyz.site-oletv
    .keke-search
    input {
    display: block !important;
    width: auto !important;
    min-width: 0 !important;
    height: 40px !important;
    flex: 1 1 auto !important;
    border-radius: 999px 0 0 999px !important;
  }

  html:not(.moviecms-oletv-search-enhanced)
    body.front.portal.tpl-keke.keke-template.site-oletv-xyz.site-oletv
    .keke-search
    button {
    display: inline-grid !important;
    width: 58px !important;
    min-width: 58px !important;
    max-width: 58px !important;
    height: 40px !important;
    min-height: 40px !important;
    padding: 0 12px !important;
    place-items: center !important;
    border-radius: 0 999px 999px 0 !important;
    font-size: 13px !important;
  }

  body.front.portal.tpl-keke.search-page:is(
      .site-www-oule-xin,
      .site-www-oletv-xin,
      .site-oletv-xyz.site-oletv
    )
    .keke-list
    > article {
    grid-template-columns: clamp(104px, 31vw, 120px) minmax(0, 1fr) !important;
    grid-template-rows: clamp(156px, 46.5vw, 180px) !important;
    gap: 10px !important;
    padding: 10px !important;
  }

  body.front.portal.tpl-keke.search-page:is(
      .site-www-oule-xin,
      .site-www-oletv-xin,
      .site-oletv-xyz.site-oletv
    )
    .keke-list
    > article
    > .keke-thumb {
    height: 100% !important;
  }

  body.front.portal.tpl-keke.search-page:is(
      .site-www-oule-xin,
      .site-www-oletv-xin,
      .site-oletv-xyz.site-oletv
    )
    .keke-list
    > article
    > div {
    gap: 5px !important;
  }

  body.front.portal.tpl-keke.search-page:is(
      .site-www-oule-xin,
      .site-www-oletv-xin,
      .site-oletv-xyz.site-oletv
    )
    .keke-list
    > article
    > div
    > p:last-of-type {
    -webkit-line-clamp: 3 !important;
  }

  body.front.portal.tpl-keke:is(
      .site-www-oule-xin,
      .site-www-oletv-xin,
      .site-oletv-xyz.site-oletv
    )
    [data-moviecms-disclosure]
    > [hidden],
  body.front.portal.tpl-keke:is(
      .site-www-oule-xin,
      .site-www-oletv-xin,
      .site-oletv-xyz.site-oletv
    )
    .moviecms-disclosure-toggle[hidden] {
    display: none !important;
  }

  body.front.portal.tpl-keke:is(
      .site-www-oule-xin,
      .site-www-oletv-xin,
      .site-oletv-xyz.site-oletv
    )
    .moviecms-disclosure-toggle {
    box-sizing: border-box;
    display: flex;
    width: max-content;
    min-height: 44px;
    align-items: center;
    justify-content: center;
    margin: 8px 0 12px auto;
    padding: 0 15px;
    border: 1px solid var(--keke-ui-line-strong, var(--keke-line));
    border-radius: 999px;
    background: var(--keke-ui-soft, var(--keke-soft));
    color: var(--keke-ui-text, var(--keke-ink));
    box-shadow: none;
    font: inherit;
    font-size: 13px;
    font-weight: 800;
    line-height: 1.2;
    cursor: pointer;
  }

  body.front.portal.tpl-keke:is(
      .site-www-oule-xin,
      .site-www-oletv-xin,
      .site-oletv-xyz.site-oletv
    )
    .keke-section-head
    + .moviecms-disclosure-toggle {
    margin-top: -2px;
  }

  body.front.portal.tpl-keke:is(
      .site-www-oule-xin,
      .site-www-oletv-xin,
      .site-oletv-xyz.site-oletv
    )
    .moviecms-disclosure-toggle:is(:hover, :focus-visible) {
    border-color: var(--keke-ui-accent, var(--keke-accent));
    background: var(--keke-ui-soft-active, var(--keke-soft));
  }

  body.front.portal.tpl-keke:is(
      .site-www-oule-xin,
      .site-www-oletv-xin,
      .site-oletv-xyz.site-oletv
    )
    .moviecms-disclosure-toggle:focus-visible {
    outline: 2px solid var(--keke-ui-focus, var(--keke-accent));
    outline-offset: 2px;
  }

  /* Fixed docks get one reserve only. Main content is compact; the footer
   * owns the dock clearance. Sitemap has no mobile dock and stays tight. */
  body.front.portal.tpl-keke:is(
      .site-www-oule-xin,
      .site-www-oletv-xin,
      .site-oletv-xyz.site-oletv
    ) {
    padding-bottom: 0 !important;
  }

  body.front.portal.tpl-keke:is(
      .site-www-oule-xin,
      .site-www-oletv-xin,
      .site-oletv-xyz.site-oletv
    )
    :is(.keke-main, .keke-main.narrow) {
    padding-bottom: 16px !important;
  }

  body.front.portal.tpl-keke:is(
      .site-www-oule-xin,
      .site-www-oletv-xin,
      .site-oletv-xyz.site-oletv
    )
    .site-footer {
    margin-bottom: 0 !important;
    padding-bottom: calc(72px + env(safe-area-inset-bottom)) !important;
  }

  body.front.portal.tpl-keke.sitemap-page:is(
      .site-www-oule-xin,
      .site-www-oletv-xin,
      .site-oletv-xyz.site-oletv
    )
    .site-footer {
    padding-bottom: max(18px, env(safe-area-inset-bottom)) !important;
  }

  body.front.portal.tpl-iqiyi.iqiyi-template {
    padding-bottom: calc(70px + env(safe-area-inset-bottom)) !important;
  }

  body.front.portal.tpl-iqiyi.iqiyi-template .site-footer {
    margin-bottom: 0 !important;
    padding-bottom: 18px !important;
  }

  body.front.portal.tpl-haoju.haoju-template {
    padding-bottom: calc(68px + env(safe-area-inset-bottom)) !important;
  }

  body.front.portal.tpl-haoju.haoju-template .site-footer {
    margin-bottom: 0 !important;
    padding-bottom: 18px !important;
  }
}

@media (max-width: 760px) {
  body.front.portal.tpl-iqiyi.iqiyi-template
    [data-feature="playback-disclosure"]
    > [hidden],
  body.front.portal.tpl-iqiyi.iqiyi-template
    .moviecms-disclosure-toggle[hidden] {
    display: none !important;
  }

  body.front.portal.tpl-iqiyi.iqiyi-template
    .moviecms-disclosure-toggle {
    box-sizing: border-box;
    display: flex;
    width: max-content;
    min-height: 44px;
    align-items: center;
    justify-content: center;
    margin: 8px 0 12px auto;
    padding: 0 15px;
    border: 1px solid var(--portal-line, rgba(255, 255, 255, 0.11));
    border-radius: 999px;
    background: var(--portal-surface-2, rgba(255, 255, 255, 0.08));
    color: var(--portal-text, currentColor);
    box-shadow: none;
    font: inherit;
    font-size: 13px;
    font-weight: 800;
    line-height: 1.2;
    cursor: pointer;
  }

  body.front.portal.tpl-iqiyi.iqiyi-template
    .section-title
    + .moviecms-disclosure-toggle {
    margin-top: -2px;
  }

  body.front.portal.tpl-iqiyi.iqiyi-template
    .moviecms-disclosure-toggle:is(:hover, :focus-visible) {
    border-color: var(--accent, #26b889);
    background: color-mix(
      in srgb,
      var(--accent, #26b889) 12%,
      var(--portal-surface-2, transparent)
    );
  }

  body.front.portal.tpl-iqiyi.iqiyi-template
    .moviecms-disclosure-toggle:focus-visible {
    outline: 2px solid var(--accent, #26b889);
    outline-offset: 2px;
  }
}

@media (min-width: 901px) {
  /* The homepage poster contract is eight columns on desktop for all three
   * OLE-family identities.  Page-kind and direct-child scoping keep search,
   * category, detail, player, ranking and sidebar grids untouched. */
  body.front.portal.tpl-keke.keke-template.keke-home:is(
      .site-www-oule-xin,
      .site-www-oletv-xin
    )
    :is(
      .oule-latest-panel,
      .keke-section[aria-labelledby="keke-latest-title"],
      .keke-section[aria-labelledby^="keke-channel-"]
    )
    > .keke-grid:not(.keke-ranking-grid) {
    grid-template-columns: repeat(8, minmax(0, 1fr)) !important;
  }

  body.front.portal.tpl-keke.keke-template.keke-home.site-oletv-xyz.site-oletv
    :is(
      .keke-section[aria-labelledby="keke-latest-title"],
      .keke-section[aria-labelledby^="keke-channel-"]
    )
    > .keke-grid:not(.keke-ranking-grid) {
    grid-template-columns: repeat(8, minmax(0, 1fr)) !important;
  }

  /* The shared OULE/OLET owner previously capped each real SSR homepage
   * group at the row size selected by its desktop breakpoint.  A11 removes
   * that presentation-only crop so all genuine cards form complete 8-column
   * rows.  Preserve explicit HTML `hidden` state for future tab semantics. */
  body.front.portal.tpl-keke.keke-template.keke-home:is(
      .site-www-oule-xin,
      .site-www-oletv-xin
    )
    :is(
      .oule-latest-panel,
      .keke-section[aria-labelledby^="keke-channel-"]
    )
    > .keke-grid:not(.keke-ranking-grid)
    > .keke-card:not([hidden]) {
    display: block !important;
  }

  /* OULE desktop player keeps the video stage dark, while the information
   * rail follows the selected theme.  The legacy OLETV layout made the rail
   * transparent, so light-theme ink was rendered on the stage's near-black
   * background.  Scope the repair to the two shared OULE-family hosts and
   * desktop player pages; mobile retains its edge-to-edge player treatment. */
  html:root[data-portal-theme="light"]
    body[class].front.portal.tpl-keke.keke-template.player-page:is(
      .site-www-oule-xin,
      .site-www-oletv-xin
    )
    .oletv-player-side:has(#keke-player-info) {
    border-left: 1px solid var(--keke-line, #e0ebe5) !important;
    background: var(--keke-panel, #fff) !important;
    color: var(--keke-ink, #18251f) !important;
  }

  html:root[data-portal-theme="light"]
    body[class].front.portal.tpl-keke.keke-template.player-page:is(
      .site-www-oule-xin,
      .site-www-oletv-xin
    )
    .oletv-player-side:has(#keke-player-info)
    :is(.keke-player-title, h2, .oletv-comment-title h2, .comment-item strong) {
    color: var(--keke-ink, #18251f) !important;
  }

  html:root[data-portal-theme="light"]
    body[class].front.portal.tpl-keke.keke-template.player-page:is(
      .site-www-oule-xin,
      .site-www-oletv-xin
    )
    .oletv-player-side:has(#keke-player-info)
    :is(
      .keke-eyebrow,
      .keke-play-side > p:not(.keke-eyebrow),
      .oletv-comment-title span,
      .comment-item small,
      .empty-state
    ) {
    color: color-mix(
      in srgb,
      var(--keke-muted, #687d75) 78%,
      var(--keke-ink, #18251f)
    ) !important;
  }

  html:root[data-portal-theme="light"]
    body[class].front.portal.tpl-keke.keke-template.player-page:is(
      .site-www-oule-xin,
      .site-www-oletv-xin
    )
    .oletv-player-side:has(#keke-player-info)
    :is(
      .oletv-player-tabs a,
      .keke-lines a,
      .keke-episodes a,
      .keke-btn-secondary
    ) {
    color: color-mix(
      in srgb,
      var(--keke-ui-accent, var(--keke-accent, #1db98e)) 54%,
      var(--keke-ink, #18251f)
    ) !important;
  }

  body.front.portal:is(.tpl-keke.keke-template, .tpl-iqiyi.iqiyi-template)
    .moviecms-disclosure-toggle {
    display: none !important;
  }
}
