@import "tailwindcss";
@custom-variant dark (&:where(.dark, .dark *));
@theme {
--animate-like: like 0.5s ease;
@keyframes like {
0% {
transform: scale(1);
}
30% {
transform: scale(1.25);
}
60% {
transform: scale(0.95);
}
100% {
transform: scale(1);
}
}
}
#root {
@apply antialiased flex flex-col items-center w-full min-h-screen;
}
.pill {
@apply flex justify-center items-center px-5 py-2 bg-orange-300 border-2 border-orange-400 rounded-3xl shadow-md
dark:bg-slate-700 dark:border-slate-600;
}
.button {
@apply hover:bg-orange-400 transition cursor-pointer
dark:hover:bg-slate-600;
}
.button:disabled {
@apply text-zinc-600 bg-zinc-100! border-zinc-300! cursor-auto
dark:text-zinc-400 dark:bg-slate-800! dark:border-slate-700!;
}
.input {
@apply bg-orange-200! outline-0 focus:ring-[3px] ring-orange-400/50 transition placeholder:text-black/40
dark:bg-slate-800! dark:text-slate-100 dark:placeholder:text-white/40 dark:ring-slate-500/50;
}
.input:disabled {
@apply text-zinc-600 bg-zinc-100! border-zinc-300!
dark:text-zinc-400 dark:bg-slate-800! dark:border-slate-700!;
}
.checkbox {
@apply flex items-center justify-center appearance-none size-5 bg-orange-300 border-2 border-orange-400 rounded-md cursor-pointer checked:bg-orange-400
dark:bg-slate-700 dark:border-slate-600 dark:checked:bg-slate-500;
}
.checkbox::after {
@apply hidden size-4 bg-cover bg-no-repeat content-[''];
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5 13l4 4L19 7' /%3E%3C/svg%3E");
}
.checkbox:checked::after {
@apply block;
}
.checkbox-alt {
@apply relative appearance-none bg-zinc-400 rounded-2xl h-5 w-8.5 cursor-pointer transition-all
after:transition-all after:bg-zinc-100 after:rounded-full after:h-3.5 after:absolute after:w-3.5
after:left-[3px] after:top-[3px] hover:bg-zinc-500 checked:bg-orange-400 checked:after:left-[16px]
checked:hover:bg-orange-500 ml-auto
dark:bg-slate-600 dark:hover:bg-slate-500 dark:checked:bg-slate-500;
}
[data-tooltip] {
@apply relative z-10;
}
[data-tooltip]::before {
@apply content-[''] absolute left-1/2 -translate-x-1/2 top-full size-0 border-4 border-transparent border-b-orange-400 opacity-0 scale-75 transition-all duration-200 ease-out origin-bottom;
}
[data-tooltip]::after {
@apply content-[attr(data-tooltip)] absolute left-1/2 -translate-x-1/2 top-full mt-2 px-2 py-1 bg-orange-400 border border-orange-400 rounded-md text-sm text-white opacity-0 scale-75 transition-all duration-200 ease-out origin-top shadow-md whitespace-nowrap select-none pointer-events-none
dark:bg-slate-600 dark:border-slate-600;
}
[data-tooltip]:hover::before,
[data-tooltip]:hover::after {
@apply opacity-100 scale-100;
}
/* Fallback Tooltips */
[data-tooltip-span] {
@apply relative;
}
[data-tooltip-span] > .tooltip {
@apply absolute left-1/2 top-full mt-2 px-2 py-1 bg-orange-400 border border-orange-400 rounded-md text-sm text-white whitespace-nowrap select-none pointer-events-none shadow-md opacity-0 scale-75 transition-all duration-200 ease-out origin-top -translate-x-1/2 z-999999
dark:bg-slate-600 dark:border-slate-600;
}
[data-tooltip-span] > .tooltip::before {
@apply content-[''] absolute left-1/2 -translate-x-1/2 -top-2 border-4 border-transparent border-b-orange-400
dark:border-b-slate-600;
}
[data-tooltip-span]:hover > .tooltip {
@apply opacity-100 scale-100;
}
/* Scrollbar */
/* Firefox */
* {
scrollbar-color: #ff8903 transparent;
}
/* Chrome, and Safari */
*::-webkit-scrollbar-track {
background: #ff8903;
}
.dark *::-webkit-scrollbar-track {
background: #475569;
}
/* Range input */
input[type="range"] {
@apply appearance-none bg-transparent not-disabled:cursor-pointer;
}
/* Track */
input[type="range"]::-webkit-slider-runnable-track {
@apply h-1 bg-orange-300 rounded-full;
}
.dark input[type="range"]::-webkit-slider-runnable-track {
background: #475569;
}
input[type="range"]::-moz-range-track {
@apply h-1 bg-orange-300 rounded-full;
}
.dark input[type="range"]::-moz-range-track {
background: #475569;
}
/* Thumb */
input[type="range"]::-webkit-slider-thumb,
input[type="range"]::-moz-range-thumb {
@apply appearance-none size-4.5 bg-orange-400 border-2 border-orange-600 rounded-full shadow-md transition;
}
.dark input[type="range"]::-webkit-slider-thumb,
.dark input[type="range"]::-moz-range-thumb {
background: #64748b;
border-color: #94a3b8;
}
/* Hover */
input[type="range"]:hover::-webkit-slider-thumb {
@apply not-disabled:bg-orange-500;
}
.dark input[type="range"]:hover::-webkit-slider-thumb {
background: #94a3b8;
}
input[type="range"]:hover::-moz-range-thumb {
@apply not-disabled:bg-orange-500;
}
.dark input[type="range"]:hover::-moz-range-thumb {
background: #94a3b8;
}
body {
@apply bg-amber-50 text-slate-800 min-h-screen
dark:bg-slate-900 dark:text-slate-100;
font-family: "Lexend Variable", sans-serif;
/* syntax highlighting is a bit broken when it's at the top so it's at the bottom */
background-image: url('data:image/svg+xml;utf8,\
');
background-size: 20px 20px;
}
.dark body {
background-image: url('data:image/svg+xml;utf8,\
');
}