@tailwind base; @tailwind components; @tailwind utilities; body  { text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; } :root { --brand-color: #292929; --brand-text-color: #ffffff; --brand-color-dark-mode: #fafafa; --brand-text-color-dark-mode: #292929; } /* Desktop App specific CSS https://docs.todesktop.com/ */ /* disable user selection on buttons, links and images on desktop app */ html.todesktop button, html.todesktop a, html.todesktop img{ -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; cursor: default !important; } html.todesktop, html.todesktop div { cursor: default !important; } /* make header draggable on desktop app */ html.todesktop header { -webkit-app-region: drag; } html.todesktop header button { -webkit-app-region: no-drag; } html.todesktop .logo { display: none; } .desktop-only { display: none; } html.todesktop .desktop-only { display: block; } html.todesktop .desktop-hidden { display: none; } html.todesktop header { margin-top: -9px; } html.todesktop header nav { margin-top: 8px; } /* Adds Utility to hide scrollbar to tailwind https://github.com/tailwindlabs/tailwindcss/discussions/2394 https://github.com/tailwindlabs/tailwindcss/pull/5732 */ @layer utilities { @variants responsive { /* Chrome, Safari and Opera */ .no-scrollbar::-webkit-scrollbar { display: none; } .no-scrollbar { -ms-overflow-style: none; /* IE and Edge */ scrollbar-width: none; /* Firefox */ } } } /* * Override the default tailwindcss-forms styling (default is: 'colors.blue.600') * @see: https://github.com/tailwindlabs/tailwindcss-forms/issues/14#issuecomment-1005376006 */ [type="text"]:focus, [type="email"]:focus, [type="url"]:focus, [type="password"]:focus, [type="number"]:focus, [type="date"]:focus, [type="datetime-local"]:focus, [type="month"]:focus, [type="search"]:focus, [type="tel"]:focus, [type="checkbox"]:focus, [type="radio"]:focus, [type="time"]:focus, [type="week"]:focus, [multiple]:focus, textarea:focus, select:focus { --tw-ring-color: var(--brand-color); border-color: var(--brand-color); } button[role="switch"][data-state="checked"] { @apply bg-gray-900; } /* TODO: avoid global specific css */ /* button[role="switch"][data-state="checked"] span { transform: translateX(16px); } */ /* DateRangePicker */ /* TODO:: Remove on V2 launch */ .react-daterange-picker > .react-daterange-picker__wrapper { /* border consistent with other inputs */ @apply rounded-sm border-gray-300 px-2 py-1.5 text-sm lg:py-1; } .react-daterange-picker > .react-daterange-picker__wrapper input { /* Makes sure the on-focus behaviour is like Cal.com's */ @apply my-0.5 h-auto rounded-sm py-0.5; } @layer components { /* slider */ .slider { @apply relative flex h-4 w-40 select-none items-center; } .slider > .slider-track { @apply relative h-1 flex-grow rounded-md bg-neutral-400; } .slider .slider-range { @apply absolute h-full rounded-full bg-neutral-700; } .slider .slider-thumb { @apply block h-3 w-3 cursor-pointer rounded-full bg-neutral-700 transition-all; } .slider .slider-thumb:hover { @apply bg-neutral-600; } .slider .slider-thumb:focus { box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.2); } /* React Select V2 */ .cal-react-select-container .cal-react-select__control { @apply bg-white min-h-[36px] h-[36px] text-sm leading-4 border-gray-300 hover:border-neutral-400 focus-within:ring-2 focus-within:ring-neutral-800 focus-within:border-0 placeholder:text-gray-400 placeholder:text-sm placeholder:font-normal; } } /* !important to style multi-email input */ ::-moz-selection { color: white; background: black; } ::selection { color: white; background: black; } /* add padding bottom to bottom nav on standalone mode */ @media all and (display-mode: standalone) { .bottom-nav { padding-bottom: 24px; } } /* hide chat bubble on mobile */ @media only screen and (max-width: 768px) { /* Intercom FAB*/ #launcher { display: none !important; } /* Zendesk FAB*/ div[role="presentation"] > iframe { display: none !important; } /* Helpscout FAB*/ .BeaconFabButtonFrame { margin-left: -30px; left: 50%; bottom: 28px !important; z-index: 1058 !important; } } /* add padding bottom to bottom nav on standalone mode */ @media all and (display-mode: standalone) { .bottom-nav { padding-bottom: 24px; } } .react-multi-email > [type="text"] { @apply dark:placeholder:text-darkgray-600 focus:border-brand dark:border-darkgray-300 dark:text-darkgray-900 block w-full rounded-md border-gray-300 text-sm focus:ring-black disabled:bg-gray-200 disabled:hover:cursor-not-allowed dark:bg-transparent dark:selection:bg-green-500 disabled:dark:text-gray-500 dark:text-white; } .react-multi-email [data-tag] { box-shadow: none !important; @apply dark:bg-brand my-1 inline-flex items-center rounded-md border border-transparent bg-neutral-200 px-2 py-1 text-sm font-medium text-gray-900 hover:bg-neutral-100 focus:outline-none focus:ring-2 focus:ring-neutral-500 focus:ring-offset-2 ltr:mr-2 rtl:ml-2 dark:text-white; } .react-multi-email > span[data-placeholder] { display: none; position: absolute; left: 0.8rem; top: 0.75rem; line-height: 1.25rem; font-size: 0.875rem; } .react-multi-email.empty > span[data-placeholder] { display: inline; color: #646b7a; } .react-multi-email.focused > span[data-placeholder] { display: none; } .react-multi-email > input { width: 100% !important; display: inline-block !important; @apply mt-1; } .react-multi-email [data-tag] { @apply my-1 inline-flex items-center rounded-md border border-transparent bg-neutral-200 px-2 py-1 text-sm font-medium text-gray-900 hover:bg-neutral-100 focus:outline-none focus:ring-2 focus:ring-neutral-500 focus:ring-offset-2 ltr:mr-2 rtl:ml-2 dark:bg-neutral-900 dark:text-white dark:hover:bg-neutral-700; } .react-multi-email [data-tag] [data-tag-item] { max-width: 100%; overflow: hidden; } .react-multi-email [data-tag] [data-tag-handle] { margin-left: 0.833em; cursor: pointer; } /* !important to override react-dates */ .DateRangePickerInput__withBorder { border: 0 !important; } .DateInput_input { border: 1px solid #d1d5db !important; border-radius: 2px !important; font-size: inherit !important; font-weight: inherit !important; color: #000; padding: 11px ​11px 9px !important; line-height: 16px !important; } .DateInput_input__focused { border: 2px solid #000 !important; border-radius: 2px !important; box-shadow: none !important; padding: 10px ​10px 9px !important; } .DateRangePickerInput_arrow { padding: 0px 10px; } .loader { display: block; width: 30px; height: 30px; margin: 60px auto; position: relative; border-width: 4px; border-style: solid; animation: loader 2s infinite ease; } .loader-inner { vertical-align: top; display: inline-block; width: 100%; animation: loader-inner 2s infinite ease-in; } @keyframes loader { 0% { transform: rotate(0deg); } 25% { transform: rotate(180deg); } 50% { transform: rotate(180deg); } 75% { transform: rotate(360deg); } 100% { transform: rotate(360deg); } } @keyframes loader-inner { 0% { height: 0%; } 25% { height: 0%; } 50% { height: 100%; } 75% { height: 100%; } 100% { height: 0%; } } nav#nav--settings > a { @apply flex items-center border-l-4 border-transparent px-3 py-2 text-sm font-medium text-gray-900 hover:bg-gray-50 hover:text-gray-900; } nav#nav--settings > a svg { @apply mr-3 -ml-1 h-6 w-6 flex-shrink-0 text-gray-400 group-hover:text-gray-500; } nav#nav--settings > a.active { @apply border-neutral-500 bg-neutral-50 text-neutral-700 hover:bg-neutral-50 hover:text-neutral-700; } nav#nav--settings > a.active svg { @apply text-neutral-500; } hr { @apply border-gray-200; } .text-white-important { color: white !important; } @layer utilities { .transition-max-width { -webkit-transition-property: max-width; transition-property: max-width; } } #timeZone input:focus { box-shadow: none; } /* react-date-picker forces a border upon us, cast it away */ .react-date-picker__wrapper { border: none !important; } /* animations */ .slideInBottom { animation-duration: 0.3s; animation-fill-mode: both; animation-name: slideInBottom; } @keyframes slideInBottom { from { opacity: 0; transform: translateY(30%); pointer-events: none; } to { opacity: 1; pointer-events: auto; } } /* animations */ .slideInTop { animation-duration: 0.3s; animation-fill-mode: both; animation-name: slideInTop; } @keyframes slideInTop { from { opacity: 0; transform: translateY(-20%); pointer-events: none; } to { opacity: 1; pointer-events: auto; transform: translateY(0%); } } .fadeIn { animation-duration: 0.3s; animation-fill-mode: both; animation-name: fadeIn; animation-timing-function: ease-in-out; } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }