@tailwind base; @tailwind components; @tailwind utilities; @layer base { html { min-height: calc(100% + env(safe-area-inset-top)); padding: env(safe-area-inset-top) env(safe-area-inset-right) calc(4rem + env(safe-area-inset-bottom)) env(safe-area-inset-left); } @media (min-width: 640px) { html { padding-bottom: env(safe-area-inset-bottom); } } body { @apply bg-gray-900; overscroll-behavior-y: contain; } code { @apply rounded-md bg-gray-800 px-2 py-1; } input[type='search']::-webkit-search-cancel-button { -webkit-appearance: none; } } @layer components { .searchbar { padding-top: env(safe-area-inset-top); height: calc(4rem + env(safe-area-inset-top)); } .sidebar { @apply border-r border-gray-700; padding-top: env(safe-area-inset-top); padding-left: env(safe-area-inset-left); background: linear-gradient(180deg, rgba(31, 41, 55, 1) 0%, #131928 100%); } .slideover { padding-top: calc(0.75rem + env(safe-area-inset-top)) !important; padding-bottom: calc(0.75rem + env(safe-area-inset-top)) !important; } .sidebar-close-button { top: env(safe-area-inset-top); } .plex-button { @apply flex w-full justify-center rounded-md border border-transparent bg-indigo-600 px-4 py-2 text-center text-sm font-medium text-white transition duration-150 ease-in-out disabled:opacity-50; background-color: #cc7b19; } .plex-button:hover { background: #f19a30; } ul.cards-vertical, ul.cards-horizontal { @apply grid gap-4; } ul.cards-vertical { grid-template-columns: repeat(auto-fill, minmax(9.375rem, 1fr)); } ul.cards-horizontal { grid-template-columns: repeat(auto-fill, minmax(16.5rem, 1fr)); } .slider-header { @apply relative mt-6 mb-4 flex; } .slider-title { @apply inline-flex items-center text-xl font-bold leading-7 text-gray-300 sm:truncate sm:text-2xl sm:leading-9; } a.slider-title { @apply transition duration-300 hover:text-white; } a.slider-title svg { @apply ml-2 h-6 w-6; } .media-page { @apply relative -mx-4 bg-cover bg-center px-4; margin-top: calc(-4rem - env(safe-area-inset-top)); padding-top: calc(4rem + env(safe-area-inset-top)); } .media-page-bg-image { @apply absolute inset-0 h-full w-full; z-index: -10; } .media-header { @apply flex flex-col items-center pt-4 xl:flex-row xl:items-end; } .media-poster { @apply w-32 overflow-hidden rounded shadow md:w-44 md:rounded-lg md:shadow-2xl xl:mr-4 xl:w-52; } .media-status { @apply mb-2 space-x-2; } .media-title { @apply mt-4 flex flex-1 flex-col text-center text-white xl:mr-4 xl:mt-0 xl:text-left; } .media-title > h1 { @apply text-2xl font-bold xl:text-4xl; } h1 .media-year { @apply text-2xl; } .media-attributes { @apply mt-1 flex flex-wrap items-center justify-center space-x-1 text-xs text-gray-300 sm:text-sm xl:mt-0 xl:justify-start xl:text-base; } .media-attributes a { @apply transition duration-300 hover:text-white hover:underline; } .media-actions { @apply relative mt-4 flex flex-shrink-0 flex-wrap items-center justify-center sm:flex-nowrap sm:justify-end xl:mt-0; } .media-actions > * { @apply mb-3 sm:mb-0; } .media-overview { @apply flex flex-col pt-8 pb-4 text-white lg:flex-row; } .media-overview-left { @apply flex-1 lg:mr-8; } .tagline { @apply mb-4 text-xl italic text-gray-400 lg:text-2xl; } .media-overview h2 { @apply text-xl font-bold text-gray-300 sm:text-2xl; } .media-overview p { @apply pt-2 text-sm text-gray-400 sm:text-base; } ul.media-crew { @apply mt-6 grid grid-cols-2 gap-6 sm:grid-cols-3; } ul.media-crew > li { @apply col-span-1 flex flex-col font-bold text-gray-300; } a.crew-name, .media-fact-value a, .media-fact-value button { @apply font-normal text-gray-400 transition duration-300 hover:text-gray-100 hover:underline; } .media-overview-right { @apply mt-8 w-full lg:mt-0 lg:w-80; } .media-facts { @apply rounded-lg border border-gray-700 bg-gray-900 text-sm font-bold text-gray-300 shadow; } .media-fact { @apply flex justify-between border-b border-gray-700 px-4 py-2 last:border-b-0; } .media-fact-value { @apply ml-2 text-right text-sm font-normal text-gray-400; } .media-ratings { @apply flex items-center justify-center space-x-5 border-b border-gray-700 px-4 py-2 font-medium last:border-b-0; } .media-rating { @apply flex items-center space-x-1; } .error-message { @apply relative top-0 bottom-0 left-0 right-0 flex h-screen flex-col items-center justify-center text-center text-gray-300; } .heading { @apply text-2xl font-bold leading-8 text-gray-100; } .description { @apply mt-1 max-w-4xl text-sm leading-5 text-gray-400; } img.avatar-sm { @apply mr-1 h-5 w-5 scale-100 transform-gpu rounded-full transition duration-300 group-hover:scale-105; } .card-field { @apply flex items-center truncate py-0.5 text-sm sm:py-1; } .card-field-name { @apply mr-2 font-bold; } .card-field a { @apply transition duration-300 hover:text-white hover:underline; } .section { @apply mt-6 mb-10 text-white; } .form-row { @apply mt-6 max-w-6xl sm:mt-5 sm:grid sm:grid-cols-3 sm:items-start sm:gap-4; } .form-input-area { @apply text-sm text-white sm:col-span-2; } .form-input-field { @apply flex max-w-xl rounded-md shadow-sm; } .actions { @apply mt-8 border-t border-gray-700 pt-5 text-white; } label, .group-label { @apply mb-1 block text-sm font-bold leading-5 text-gray-400; } label.checkbox-label { @apply sm:mt-1; } label.text-label { @apply sm:mt-2; } label a { @apply text-gray-100 transition duration-300 hover:text-white hover:underline; } .label-required { @apply ml-1 text-red-500; } .label-tip { @apply block font-medium text-gray-500; } button, input, select, textarea { @apply disabled:cursor-not-allowed; } input[type='checkbox'] { @apply h-6 w-6 rounded-md text-indigo-600 transition duration-150 ease-in-out; } input[type='text'], input[type='password'], select, textarea { @apply block w-full min-w-0 flex-1 rounded-md border border-gray-500 bg-gray-700 text-white transition duration-150 ease-in-out sm:text-sm sm:leading-5; } input.rounded-l-only, select.rounded-l-only, textarea.rounded-l-only { @apply rounded-r-none; } input.rounded-r-only, select.rounded-r-only, textarea.rounded-r-only { @apply rounded-l-none; } input.short { @apply w-20; } select.short { @apply w-min; } button > span { @apply whitespace-nowrap; } button.input-action { @apply relative -ml-px inline-flex items-center border border-gray-500 bg-indigo-600 bg-opacity-80 px-3 py-2 text-sm font-medium leading-5 text-white transition duration-150 ease-in-out last:rounded-r-md hover:bg-opacity-100 active:bg-gray-100 active:text-gray-700 sm:px-3.5; } .button-md svg, button.input-action svg, .plex-button svg { @apply ml-2 mr-2 h-5 w-5 first:ml-0 last:mr-0; } .button-sm svg { @apply ml-1.5 mr-1.5 h-4 w-4 first:ml-0 last:mr-0; } svg.icon-md { @apply h-5 w-5; } svg.icon-sm { @apply h-4 w-4; } .protocol { @apply inline-flex cursor-default items-center rounded-l-md border border-r-0 border-gray-500 bg-gray-600 px-3 text-gray-100 sm:text-sm; } .error { @apply mt-2 text-sm text-red-500; } .form-group { @apply mt-6 text-white; } .toast { width: 360px; } .react-select-container { @apply w-full; } .react-select-container .react-select__control { @apply rounded-md border border-gray-500 bg-gray-700 text-white hover:border-gray-500; } .react-select-container-dark .react-select__control { @apply border border-gray-700 bg-gray-800; } .react-select-container .react-select__control--is-focused { @apply rounded-md border border-gray-500 bg-gray-700 text-white shadow; } .react-select-container-dark .react-select__control--is-focused { @apply border-gray-600 bg-gray-800; } .react-select-container .react-select__menu { @apply bg-gray-700 text-gray-300; } .react-select-container-dark .react-select__menu { @apply bg-gray-800; } .react-select-container .react-select__option--is-focused { @apply bg-gray-600 text-white; } .react-select-container-dark .react-select__option--is-focused { @apply bg-gray-700; } .react-select-container .react-select__indicator-separator { @apply bg-gray-500; } .react-select-container .react-select__indicator { @apply text-gray-500; } .react-select-container .react-select__placeholder { @apply text-gray-400; } .react-select-container .react-select__multi-value { @apply rounded-md border border-gray-500 bg-gray-800; } .react-select-container .react-select__multi-value__label { @apply text-white; } .react-select-container .react-select__multi-value__remove { @apply cursor-pointer rounded-r-md hover:bg-red-700 hover:text-red-100; } .react-select-container .react-select__input { @apply border-none text-base shadow-sm ring-0; } .react-select-container .react-select__input input:focus { @apply border-none; box-shadow: none; } .react-select-container .react-select__input-container { @apply text-white; } .react-select-container .react-select__single-value { @apply text-sm text-gray-100; } .react-select-container .react-select__placeholder { @apply text-sm text-gray-500; } .datepicker-wrapper > button { @apply top-0; } .datepicker-wrapper > div { @apply fixed left-0 right-0 w-full px-4 md:w-auto; } .datepicker-wrapper > div > div:nth-child(2) > div { @apply !flex-col; } .datepicker-wrapper > div > div:nth-child(2) > div > div > div { @apply !w-full !min-w-full; } .datepicker-wrapper > div > div:first-child { @apply hidden; } input[type='range']::-webkit-slider-thumb { @apply rounded-full border-0 bg-indigo-500; pointer-events: all; width: 16px; height: 16px; -webkit-appearance: none; } input[type='range']::-moz-range-thumb { @apply rounded-full border-0 bg-indigo-500; pointer-events: all; width: 16px; height: 16px; -webkit-appearance: none; } } @layer utilities { .absolute-top-shift { top: calc(-4rem - env(safe-area-inset-top)); } .absolute-bottom-shift { bottom: calc(5rem + env(safe-area-inset-bottom)); } .safe-shift-edit-menu { bottom: calc(54px + env(safe-area-inset-bottom)); } .padding-bottom-safe { padding-bottom: env(safe-area-inset-bottom); } .min-h-screen-shift { min-height: calc(100vh + env(safe-area-inset-top)); } /* Used for animating height */ .extra-max-height { max-height: 100rem; } /* Hide scrollbar for Chrome, Safari and Opera */ .hide-scrollbar::-webkit-scrollbar { display: none; } /* Hide scrollbar for IE, Edge and Firefox */ .hide-scrollbar { -ms-overflow-style: none; /* IE and Edge */ scrollbar-width: none; /* Firefox */ } .text-overseerr { @apply bg-gradient-to-br from-indigo-400 to-purple-400 bg-clip-text text-transparent; } @media all and (display-mode: browser) { .pwa-only { @apply hidden; } } .extra-bottom-space { height: calc(4rem + env(safe-area-inset-bottom)); } } .ptr--ptr { box-shadow: initial !important; position: absolute !important; z-index: 30 !important; } .ptr--refresh { overflow: visible !important; z-index: 30 !important; } .ptr--pull { z-index: 30 !important; } .ptr--box { margin-bottom: -13px !important; }